From 6d9543fc23fe44c212b31d64ca86dd210274e569 Mon Sep 17 00:00:00 2001 From: "alexis.hermanns" Date: Tue, 26 Aug 2025 10:41:25 +0200 Subject: [PATCH 1/3] fix(orders): [PCMT-776] Prevent order resume email from being sent when no data is available for Lengow orders --- includes/class-lengow-import-order.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/includes/class-lengow-import-order.php b/includes/class-lengow-import-order.php index 523aa604..87578d0e 100755 --- a/includes/class-lengow-import-order.php +++ b/includes/class-lengow-import-order.php @@ -952,6 +952,8 @@ private function create_order() { $this->order_reference = (string) $order_id; // save order line id in lengow_order_line table. $this->save_lengow_order_lines( $order, $products ); + // trigger action after order creation. + do_action( 'woocommerce_new_order', $order->get_id(), $order ); Lengow_Main::log( Lengow_Log::CODE_IMPORT, Lengow_Main::set_log_message( @@ -1340,14 +1342,12 @@ private function create_woocommerce_order( $user, $products, $billing_address, $ */ private function create_generic_woocommerce_order() { - $wc_order = wc_create_order(); + $wc_order = wc_create_order(); if ( is_wp_error( $wc_order->get_id() ) ) { throw new Lengow_Exception( Lengow_Main::set_log_message( 'lengow_log.exception.woocommerce_order_not_saved' ) ); } - - do_action( 'woocommerce_new_order', $wc_order->get_id(), $wc_order ); // update lengow_orders table directly after creating the WooCommerce order. $success = Lengow_Order::update( $this->order_lengow_id, From 065087c73395db06b9e0ed3e2da93033639c9542 Mon Sep 17 00:00:00 2001 From: "alexis.hermanns" Date: Tue, 26 Aug 2025 11:49:24 +0200 Subject: [PATCH 2/3] fix(import_orders): fix email with no data for Lengow orders --- includes/class-lengow-import-order.php | 36 ++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/includes/class-lengow-import-order.php b/includes/class-lengow-import-order.php index 87578d0e..97193e89 100755 --- a/includes/class-lengow-import-order.php +++ b/includes/class-lengow-import-order.php @@ -952,8 +952,6 @@ private function create_order() { $this->order_reference = (string) $order_id; // save order line id in lengow_order_line table. $this->save_lengow_order_lines( $order, $products ); - // trigger action after order creation. - do_action( 'woocommerce_new_order', $order->get_id(), $order ); Lengow_Main::log( Lengow_Log::CODE_IMPORT, Lengow_Main::set_log_message( @@ -1254,6 +1252,8 @@ private function disable_b2b_hook() { private function create_woocommerce_order( $user, $products, $billing_address, $shipping_address ) { // create a generic order. + add_filter( 'woocommerce_email_enabled_new_order', '__return_false' ); + add_filter('woocommerce_email_enabled_customer_on_hold_order', '__return_false'); $wc_order = $this->create_generic_woocommerce_order(); $order_id = $wc_order->get_id(); // get billing data formatted for WooCommerce address. @@ -1329,11 +1329,39 @@ private function create_woocommerce_order( $user, $products, $billing_address, $ $wc_order->update_status( $order_state ); // add quantity back for re-import order and order shipped by marketplace. $this->add_quantity_back( $wc_order ); + remove_filter( 'woocommerce_email_enabled_new_order', '__return_false' ); + remove_filter('woocommerce_email_enabled_customer_on_hold_order', '__return_false'); $wc_order->save(); + do_action( 'woocommerce_new_order', $wc_order->get_id(), $wc_order ); + $this->notify_admin_new_order( $wc_order->get_id() ); + $this->notify_customer_received_order( $wc_order->get_id() ); + return $wc_order; } + /** + * Notify admin of new order + */ + private function notify_admin_new_order( $order_id ) { + $mailer = WC()->mailer(); + $mails = $mailer->get_emails(); + if ( ! empty( $mails['WC_Email_New_Order'] ) ) { + $mails['WC_Email_New_Order']->trigger( $order_id ); + } + } + + /** + * Notify customer of received order + */ + private function notify_customer_received_order( $order_id ) { + $mailer = WC()->mailer(); + $mails = $mailer->get_emails(); + if ( ! empty( $mails['WC_Email_Customer_Processing_Order'] ) ) { + $mails['WC_Email_Customer_On_Hold_Order']->trigger( $order_id ); + } + } + /** * Create a generic WooCommerce order. * @@ -1348,6 +1376,8 @@ private function create_generic_woocommerce_order() { Lengow_Main::set_log_message( 'lengow_log.exception.woocommerce_order_not_saved' ) ); } + + // update lengow_orders table directly after creating the WooCommerce order. $success = Lengow_Order::update( $this->order_lengow_id, @@ -1377,6 +1407,7 @@ private function create_generic_woocommerce_order() { ); } + return $wc_order; } @@ -1730,3 +1761,4 @@ private function save_lengow_order_lines( $order, $products ) { } } } + From 0174d2f5686cda6cdfc39cb50c2499afc12ebd1d Mon Sep 17 00:00:00 2001 From: "alexis.hermanns" Date: Tue, 26 Aug 2025 14:30:37 +0200 Subject: [PATCH 3/3] fix(importOrders): [PCMT-776] --- includes/class-lengow-import-order.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/class-lengow-import-order.php b/includes/class-lengow-import-order.php index 97193e89..b16b4c79 100755 --- a/includes/class-lengow-import-order.php +++ b/includes/class-lengow-import-order.php @@ -1357,7 +1357,7 @@ private function notify_admin_new_order( $order_id ) { private function notify_customer_received_order( $order_id ) { $mailer = WC()->mailer(); $mails = $mailer->get_emails(); - if ( ! empty( $mails['WC_Email_Customer_Processing_Order'] ) ) { + if ( ! empty( $mails['WC_Email_Customer_On_Hold_Order'] ) ) { $mails['WC_Email_Customer_On_Hold_Order']->trigger( $order_id ); } }