Hallo Leute,
ich habe für Shopware 6 ein Plugin geschrieben um Lieferanten ähnlich wie Hersteller pflegen zu können. Nun möchte ich diese Lieferanten mit order-line-items verbinden. Die Idee war, im inline-edit des data-grid für die Bestellpositionen, ein selectfeld einzubinden um dort den Lieferanten auswählen und speichern zu können. Das scheint aber nicht so einfach möglich zu sein. Ich habe die Componente „sw-order-line-items-grid“ überschrieben und die function „getLineItemColumns“ erweitert um eine neue Spalte anzeigen zu lassen. In den Options habe ich inlineEdit auf true gesetzt und dachte ich kann das Template zur Componente dahingehend erweitern, dass ich dort das single select erstellen und verbinden kann. Leider scheint das aber nicht zu gehen da inline-edit auf „number“, „string“, „boolean“ begrenzt zu sein scheint.
Da das wohl so ist habe ich mir nun eine andere Lösung überlegt. Bei der Erweiterung des data-grid in der function getLineItemColumns habe ich in meiner neuen column die property „inlineEdit“ auf den Wert „number“ gesetzt. Dadurch bekomme ich ein number Feld in welches ich nun eine Nummer eintragen kann, welche dann später für einen Lieferanten steht. Soweit so gut, aber wie bekomme ich jetzt diesen Wert gespeichert ?
Ich habe das neue Feld in welches ich den Wert speichern möchte über eine entity-extension erstellt. Das neue Feld steht hier mit eine oneToOne in Verbindung mit dem order-line-item.
Wenn ich die Doku richtig gelesen habe, wird das neue Feld über die Beziehung der entity-Extension zu den order-line-items im administrationsbereich schon geladen werden und durch die erweiterung der column definition des entsprechenden controllers wird die column dann pflegbar gemacht.
Aber wie bekomme ich jetzt den Wert aus meinem inline-edit-number-field in die Datenbank ?
Wenn ich in der erweiterung der columnDefinition den wert inlineEdit auf „true“ setze bekomme ich eine Fehlermeldung „unknown type true“. Wenn ich den Wert für inlineEdit auf „number“ setze, dann bekomme ich mein number-field zur Pflege aber habe keine Möglichkeit in der column definition anzugeben was der standardwert sein soll oder wo der eingegebene Wert bei Speicherung gespeichert werden soll …
Vielleicht habe ich da auch nur ein Verständnisproblem aber ich habe in der Doku von Shopware6 nichts vergleichbaren gefunden, was hier auf meinen Fall zutrifft und ich bin mit meinem Latein am Ende ?
Der Lieferant muss in unserem Fall an der Bestellposition gesetzt werden können und nicht am Produkt selbst, da wir für ein und den selben Artikel mehrere Lieferanten haben. An der BEstellposition wird dann der Lieferant manuell gesetzt der am schnellsten liefern kann. Da dies bei jeder Bestellung durch einen Mitarbeiter geprüft und anschließend der Lieferant zur Bestellposition manuell gesetzt wird, wäre es unpraktisch, dass am Produkt direkt zu machen.
Für Antworten bedanke ich mich schon einmal im Voraus !