From a93f7ad4ed7875d20f3bfb055439fd0ddaa9ce0a Mon Sep 17 00:00:00 2001 From: Pavel Date: Fri, 14 Feb 2020 16:30:05 +0300 Subject: [PATCH] fix invalid payment in built order & create order from adminpanel --- src/include/class-wc-retailcrm-base.php | 1 + src/include/class-wc-retailcrm-orders.php | 2 +- .../class-wc-retailcrm-order-payment.php | 19 ++++++++++++++++++- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/include/class-wc-retailcrm-base.php b/src/include/class-wc-retailcrm-base.php index eb64ba8..9e8a166 100644 --- a/src/include/class-wc-retailcrm-base.php +++ b/src/include/class-wc-retailcrm-base.php @@ -104,6 +104,7 @@ if (!class_exists('WC_Retailcrm_Base')) { if (!$this->get_option('deactivate_update_order') || $this->get_option('deactivate_update_order') == static::NO ) { + add_action('woocommerce_new_order', array($this, 'create_order'), 11, 1); add_action('woocommerce_update_order', array($this, 'update_order'), 11, 1); } diff --git a/src/include/class-wc-retailcrm-orders.php b/src/include/class-wc-retailcrm-orders.php index 0ad3064..f947071 100644 --- a/src/include/class-wc-retailcrm-orders.php +++ b/src/include/class-wc-retailcrm-orders.php @@ -483,7 +483,7 @@ if ( ! class_exists( 'WC_Retailcrm_Orders' ) ) : $this->order_payment->is_new = true; $order_data['payments'][] = $this->order_payment->build($order)->get_data(); } - + $this->order = apply_filters('retailcrm_process_order', WC_Retailcrm_Plugin::clearArray($order_data), $order); } diff --git a/src/include/order/class-wc-retailcrm-order-payment.php b/src/include/order/class-wc-retailcrm-order-payment.php index c379d18..7704f5c 100644 --- a/src/include/order/class-wc-retailcrm-order-payment.php +++ b/src/include/order/class-wc-retailcrm-order-payment.php @@ -50,6 +50,7 @@ class WC_Retailcrm_Order_Payment extends WC_Retailcrm_Abstracts_Data */ public function build($order, $externalId = false) { + $this->reset_data(); $data = array(); if (!empty($this->settings['send_payment_amount']) @@ -84,11 +85,27 @@ class WC_Retailcrm_Order_Payment extends WC_Retailcrm_Abstracts_Data } } - $this->set_data_fields(WC_Retailcrm_Plugin::clearArray($data)); + $this->set_data_fields($data); return $this; } + /** + * Returns false if payment doesn't have method + * + * @return array + */ + public function get_data() + { + $data = parent::get_data(); + + if (empty($data['type'])) { + return array(); + } + + return $data; + } + public function reset_data() { $this->data = array(