Overload oder Extender

Thema wurde von Sommerzauber, 23. Juni 2018 erstellt.

  1. Sommerzauber

    Sommerzauber Erfahrener Benutzer

    Registriert seit:
    16. März 2018
    Beiträge:
    131
    Danke erhalten:
    41
    Danke vergeben:
    55
    Hallo Leute,

    Um Verwirrungen zu vermeiden: Ich bin von "Sommerzauber" gebeten worden eine eMail an seine Wawi nach erfolgreicher Bestellung in einen frisch aufgesetzten GX3 einzubauen. Ich schreibe hier unter seinem Account.
    Nachdem ich nun einige Zeit hier im Forum verbracht habe, bin ich noch verwirrter als vorher. Ich habe lange Jahre einen OSC-Shop gewartet, betrieben und programmiert... da hätte ich einfach einen include in die checkout_success.php eingebaut und gut. Jetzt habe ich schon gelernt, dass ich wegen der Updatebarkeit einen Extender oder Overload oder beides bauen muss.
    Ich habe mir also das Extender-Sample aus der GXUserComponents/overloads/_extender_samples/CheckoutSuccessExtenderComopnents genommen, das Verzeichnis CheckoutSuccessExtenderComopnents in overloads erstellt und das Sample hinein kopiert. Dann habe ich die ganzen "Samples" aus den Namen gelöscht und die Caches geleert.
    Die gute Nachicht ist, das tatsächlich etwas ausgeführt wird, was jedoch zur Fehlermeldung FATAL ERROR(1): "Class 'CheckoutSuccessExtender_parent' not found" führt.
    Ich könnte jetzt erstmal einen Tipp gebrauchen, ob ich grundsätzlich richtig bin an der Stelle, und warum die Klasse nicht vorhanden ist...
    Danke schonmal im voraus!
    Denzel.
     
  2. Dennis (MotivMonster.de)

    Dennis (MotivMonster.de) G-WARD 2013/14/15/16

    Registriert seit:
    22. September 2011
    Beiträge:
    30.948
    Danke erhalten:
    6.089
    Danke vergeben:
    1.078
    Beruf:
    Mann für alles :)
    Ort:
    Weilburg
    Findest alles hier: (Link nur für registrierte Nutzer sichtbar.)

    (Link nur für registrierte Nutzer sichtbar.)

    (Link nur für registrierte Nutzer sichtbar.)
     
  3. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Warum über einen Overload oder so und nicht einfach mit einer Weiterleitung in den E-Mail-Optionen?
     
  4. Sommerzauber

    Sommerzauber Erfahrener Benutzer

    Registriert seit:
    16. März 2018
    Beiträge:
    131
    Danke erhalten:
    41
    Danke vergeben:
    55
    Eine Weiterleitung würde, wenn ich richtig verstehe, die Bestellbestätigung versenden, oder ? Ich brauche eine speziell konstruierte eMail, die von der Wawi gelesen und als Bestellung erkannt werden kann. Sieht ungefähr so aus:
    AUTOVORGANGIMPORT: ###AFS_VORGANGIMPORT#
    ###LIEFERANSCHRIFT:#
    ###BEMERKUNG:TEST TEST#
    ###KNUMMER:#
    ###ANREDE:Herr#
    ...

    Ich schätze, dass ich die Konstruktion irgendwie hin bekomme, das Script aus OSC liegt ja vor. Ich brauche nur die entsprechenden Variablen finden ($orders in OSC) und anpassen. Im Moment suche ich erstmal die richtige Stelle, um den Versand anzustoßen.
     
  5. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Das ist natürlich etwas anderes.
    Da musst Du basteln.
     
  6. Sommerzauber

    Sommerzauber Erfahrener Benutzer

    Registriert seit:
    16. März 2018
    Beiträge:
    131
    Danke erhalten:
    41
    Danke vergeben:
    55
    An welcher Stelle werden denn die Order-Daten aufbereitet, so dass man mit z.B.
    $customerAdressBlock = $order->getCustomerAddress();
    oder
    $customerAdressBlock->getFirstname();
    darauf zugreifen kann ? Ich brauche nämlich so ziemlich alle Orderdetails.
     
  7. Anonymous

    Anonymous Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    1.656
    Danke erhalten:
    1.261
    Danke vergeben:
    300
    #7 Anonymous, 24. Juni 2018
    Zuletzt bearbeitet: 24. Juni 2018
    @Sommerzauber Erstelle am besten ein Overload für die Datei system/classes/orders/SendOrderProcess.inc.php.

    Wenn du schon die Shopversion 3.8 oder höher einsetzt, empfehle ich ein GXModul zu erstellen.

    Lege dazu eine Datei mit dem Namen WawiMailSendOrderProcess.inc.php im Ordner /GXModules/Sommerzauber/WawiMail/Shop/Overloads/SendOrderProcess/ mit folgemdem Inhalt an:

    PHP:
    class WawiMailSendOrderProcess extends WawiMailSendOrderProcess_parent
    {
    public function 
    proceed()
        {
    parent::proceed();
    }
    }
    Hinter
    PHP:
    parent::proceed();
    fügst du dann dein eigenen PHP Code zum lesen der Bestelldetails und senden der Mail ein.

    An die Bestelldetails kommst du mit dem folgenden Code:

    PHP:
    $orderReadService StaticGXCoreLoader::getService('OrderRead');
         
    $order $orderReadService->getOrderById($orderId);
    $order->getOrderItems()->getArray();
    Weitere Infos findest du unter folgender URL: (Link nur für registrierte Nutzer sichtbar.)

    Eine Mail sendest du am besten mit folgendem Code, dann wird die Mail auch im Gambio Admin unter "Kunden->E-Mails" gespeichert. Wenn du das nicht möchtest, muss du deine eigene Mail Methode schreiben in PHP:

    PHP:
    xtc_php_mail($from_email_address,
                            
    $order->customer['firstname'].' '.$order->customer['lastname'],
                            
    EMAIL_BILLING_ADDRESS,
                            
    STORE_NAME,
                            
    EMAIL_BILLING_FORWARDING_STRING,
                            
    $order->customer['email_address'],
                            
    $order->customer['firstname'].' '.$order->customer['lastname'],
                            
    $t_mail_attachment_array,
                            
    '',
                            
    $order_subject,
                            
    $t_content_mail,
                            
    $t_txt_mail
               
    );
     
  8. Sommerzauber

    Sommerzauber Erfahrener Benutzer

    Registriert seit:
    16. März 2018
    Beiträge:
    131
    Danke erhalten:
    41
    Danke vergeben:
    55
    Hallo Till,

    mit dem Overload bin ich schon gut voran gekommen. Ich suche mir grade die ganzen Daten für die Mail aus der order Klasse zusammen. Leider habe ich noch nicht so besonders viel mit Objekten gearbeitet und habe grade Schwierigkeiten mit den Artikeln und den Gesamtsummen, weil die in Objektarrays verpackt sind. Kannst Du mir einen Tip geben, wie ich z.B. an den Namen des ersten bestellten Artikels komme ?

    $order_Items = $order->getOrderItems();

    Soweit bin ich, aber wie komme ich dann weiter ?

    StoredOrderItemCollection Object
    (
    [collectionContentArray:protected] => Array
    (
    [0] => StoredOrderItem Object
    (
    [id:protected] => 11
    [productModel:protected] => 38107
    [name:protected] => Artikelname
    [price:protected] => 99.99
    [quantity:protected] => 1
    [tax:protected] => 19
    [taxAllowed:protected] => 1
    [discountMade:protected] => 0
    [shippingTimeInfo:protected] => ca. 1-3 Tage (Lagerware)
    [attributes:protected] => StoredOrderItemAttributeCollection Object
    (
    [collectionContentArray:protected] => Array
    (
    )

    )

    ...

    Danke für die Mühe !

    P.S. wie fügt man hier übrigens Quellcode ein ?
     
  9. Sommerzauber

    Sommerzauber Erfahrener Benutzer

    Registriert seit:
    16. März 2018
    Beiträge:
    131
    Danke erhalten:
    41
    Danke vergeben:
    55
    Ok, hab alles gefunden. Die eMail wird wie gewünscht versand.
    Danke für Eure Hilfe !
    Denzel.
     
  10. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    in der Leiste mit den Icons ist ein "+" - Symbol, darüber öffnet sich eine Code-Box für Quellcodes oder lange Texte.
     
  11. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    26. Oktober 2011
    Beiträge:
    967
    Danke erhalten:
    149
    Danke vergeben:
    130