Hallo, in der Funktion process_products() der Datei CheckoutProcessProcess.inc.php gibt es den Eintrag Code: $t_order_products_id = 0; // not used anymore Für die Verwendung in eine eigene Bestelltabelle bräuchte ich diese ID. In alten Gambio-Versionen war für die Ausgabe dieser ID die Funktion save_order_product($p_product_array) zuständig. Die gibt es aber nun nicht mehr. Gibt es eine Möglichkeit im Checkout diese Nummer auszulesen nachdem sie in die Tabelle orders_products eingetragen wurde?
@M. Zitzmann Wenn du ein Overload der Datei checkoutProcessProcess.inc.php machst, hast du im Objekt die ganzen Produktdaten zur Verfügung: PHP: $this->coo_order->products Du kannst also z.B. die Funktion PHP: _getOrderItemCollection überladen und im Anschluss deine eigenen Daten auswerten und bearbeiten. PHP: class myCheckoutProccessProcess extends myCheckoutProcessProccess_parent{protected function _getOrderItemCollection() {parent::_getOrderItemCollection();// put your own code here}}
Danke. Damit bekomme ich mit $product['id'] nur die normale products_id. Ich brauche aber die orders_products_id die in die Tabellen orders_products und orders_products_attributes geschrieben wird.
@M. Zitzmann Dann ist die CheckoutProccessProcess nicht für dein Vorhaben geeignet, weil an der Stelle sind die Daten noch nicht in der Datenbank, also musst du einen späteren Zeitpunkt wählen, z.B. CheckoutSuccessExternder, wo die Daten bereits in der Datenbank sind und dann von da gelesen werden können. Dann musst du eine eigene Abfrage bauen um die Daten für die orders_id aus der orders_products Tabelle auslesen.
Da kommen wir der Sache schon näher... Funktioniert - aber ich habe den gleichen Effekt als wenn ich meine Daten schon in der CheckoutProccessProcess schreibe. Für jeden Eintrag den ich in der orders_products_attributes mache wird ein zusätzlicher leerer Eintrag geschrieben. In der CheckoutProcessProcess habe ich dazu folgenden Hinweis gefunden: Code: else // GX-Customizer set data will be connected to empty attribute { $orderItemAttribute = $orderObjectService->createOrderItemAttributeObject(new StringType(''), new StringType('')); $orderItemAttributesArray[] = $orderItemAttribute; Sobald ein Customizer vorhanden ist kommt eine leere Zeile dazu. Seltsamerweise passiert das auch in der CheckoutSuccessExternder obwohl hier die Bestelldaten doch schon alle fertig geschrieben sind... Was passiert wenn ich diese leeren Zeilen später wieder lösche? Ich habs mal gemacht und bis jetzt keinen negativen Effekt gesehen...