Lieferung

Lieferung erstellen

Eine Lieferung wird über das Objekt \Alvine\Application\Platform\Logic\Action\Commerce\Order\CreateDelivery erstellt.
Das Objekt benötigt für die Verarbeitung die Shoppingcard SCIDs, die in eine Lieferung gepackt werden sollen.
Mit der Methode addPositionSCID(1607) kann eine Shoppingcard SCID hinzugefügt werden.

Die Positionen werden nach OID gruppiert.
Es ist also möglich für mehrere Bestellungen Lieferungen zu erzeugen.

Alle Datenbankabfragen laufen in einer Transaktion.
Wenn es während der Verarbeitung zu Fehlern kommt, werden alle bis dahin durchgeführten Änderungen wieder zurückgesetzt.

Prüfungen

  • die Positionen dürfen noch keiner Lieferung zugewiesen sein
  • die Positionen müssen einer Bestellung zugewiesen sein

Beispiel:

$createDelivery=new \Alvine\Application\Platform\Logic\Action\Commerce\Order\CreateDelivery();
$createDelivery->addPositionSCID(1607)->addPositionSCID(1608)->addPositionSCID(1610)->do();

Adressen

Die aktuellen Adressen werden in der Lieferung serialisiert eingefroren.
Die persönlichen Daten des Kunden werden in beiden Adressen erweitert.

Die Felder address_delivery und address_account sind vom Typ Alvine\Application\Platform\Persistence\Relation\Field\Legacy\SerializedAddress.
Hier ist die Logik für das schreiben und lesen der serialisierten Adresse definiert.

Positionen der Lieferung zuweisen

Mit der Action Alvine\Application\Platform\Logic\Action\Commerce\Order\AsignPositionsToDelivery wird die gerade angelegte Lieferung den Positionen zugewiesen.

Beispiel:

$asignPositionsToDelivery=new \Alvine\Application\Platform\Logic\Action\Commerce\Order\AsignPositionsToDelivery();
$asignPositionsToDelivery->addPositionSCID(1607)->addPositionSCID(1608)->setDeliveryDID(1108)->do();