vendidero / woocommerce-germanized

Adapt WooCommerce to the German Market with Germanized for WooCommerce
https://vendidero.de/woocommerce-germanized
Other
51 stars 41 forks source link

Local Pickup und Versand der Versand-E-Mail: Email_customer_shipment #170

Closed cpt-wayfinder closed 2 years ago

cpt-wayfinder commented 2 years ago

Hallo Germanized Team,

folgender Fehler ist mir aufgefallen. Wenn man sich für jede Bestellung den Lieferschein generieren lässt und damit eine Packliste hat (sowie auch eine Sendung zwangsläufig generiert), wird auch bei Local Pickup die E-Mail für den Versand der Ware versendet.

Gibt es hier von euch einen WorkAround - außer jedes Mal händisch den Status der Sendung anzupassen?

Also die Mail geht automatisch raus, wenn der Status einer Bestellung von in Wartestellung oder in Bearbeitung auf abgeschlossen gesetzt wird, da damit auch der Status der Sendung auf "versendet" gesetzt wird.

Entweder man sagt dem System irgendwie, dass wenn die Versandmethode local pickup ausgewählt ist, darf die Versandmail nicht versendet werden. Oder man sagt dem Tool, dass bei local pickup mit Fertigstellung der Bestellung die Sendung nicht automatisch auf versendet gesetzt wird.

Eventuell habt ihr euch das in der Vergangenheit bereits Gedanken zu gemacht und eine Lösung parat.

Ansätze wären vielleicht über folgenden Hook möglich? add_action( 'woocommerce_order_status_completed', 'no_sending_mail_for_pickup_orders');

und dann über eine Art Abfrage:

function no_sending_mail_for_pickup_orders ( $order_id ){
$order = new WC_Order( $order_id );
$payment = $order->get_shipping_method();
$paymentid = reset( $order->get_shipping_methods() )->get_method_id();
if ($paymentid == 'local_pickup'){
}}
dennisnissle commented 2 years ago

Hi,

standardmäßig ist es ja gar nicht möglich bei Local Pickup eine Sendung zu erstellen (da es nicht sonderlich viel Sinn macht), d.h. ich gehe davon aus, dass ihr dafür ein spezifisches Snippet verwendet, um das dennoch zu aktivieren?

Welchen Status hat denn die Sendung? Entscheidend wäre ja vermutlich, dass der Status der Sendung nicht auf versandt wechselt (denn dann wird die Benachrichtigung verschickt).

Ihr könnt dafür z.B. den Filter woocommerce_gzd_shipments_order_completed_status verwenden und im Falle eines Pickups der dazugehörigen Bestellung einfach einen Status zurückgeben, der z.B. nicht existiert. S.a.: https://github.com/vendidero/woocommerce-germanized-shipments/blob/master/src/Automation.php#L80

Grüße