diff --git a/src/config/objects.xml b/src/config/objects.xml index 11e27b9..44e35b1 100644 --- a/src/config/objects.xml +++ b/src/config/objects.xml @@ -79,7 +79,7 @@ shipped contact company - + payment amount paidAt @@ -89,7 +89,7 @@ id initialPrice - discount + discountTotal discountPercent quantity status diff --git a/src/include/components/class-wc-retailcrm-history-assembler.php b/src/include/components/class-wc-retailcrm-history-assembler.php index 70993b7..15d4df9 100644 --- a/src/include/components/class-wc-retailcrm-history-assembler.php +++ b/src/include/components/class-wc-retailcrm-history-assembler.php @@ -22,19 +22,22 @@ class WC_Retailcrm_History_Assembler foreach ($orderHistory as $change) { $change['order'] = self::removeEmpty($change['order']); - if(isset($change['order']['items']) && $change['order']['items']) { + if (isset($change['order']['items']) && $change['order']['items']) { $items = array(); - foreach($change['order']['items'] as $item) { - if(isset($change['created'])) { + + foreach ($change['order']['items'] as $item) { + if (isset($change['created'])) { $item['create'] = 1; } + $items[$item['id']] = $item; } $change['order']['items'] = $items; } - if(isset($change['order']['contragent']['contragentType']) && $change['order']['contragent']['contragentType']) { + if (isset($change['order']['contragent']['contragentType']) && $change['order']['contragent']['contragentType']) { $change['order']['contragentType'] = $change['order']['contragent']['contragentType']; + unset($change['order']['contragent']); } @@ -45,35 +48,28 @@ class WC_Retailcrm_History_Assembler } if (isset($change['item']) && $change['item']) { - if(isset($orders[$change['order']['id']]['items'][$change['item']['id']])) { + if (isset($orders[$change['order']['id']]['items'][$change['item']['id']])) { $orders[$change['order']['id']]['items'][$change['item']['id']] = array_merge($orders[$change['order']['id']]['items'][$change['item']['id']], $change['item']); } else { $orders[$change['order']['id']]['items'][$change['item']['id']] = $change['item']; } - if ($change['oldValue'] === null - && $change['field'] == 'order_product' - ) { + if ($change['oldValue'] === null && $change['field'] == 'order_product') { $orders[$change['order']['id']]['items'][$change['item']['id']]['create'] = true; } - if ($change['newValue'] === null - && $change['field'] == 'order_product' - ) { + if ($change['newValue'] === null && $change['field'] == 'order_product') { $orders[$change['order']['id']]['items'][$change['item']['id']]['delete'] = true; } - if (!isset($orders[$change['order']['id']]['items'][$change['item']['id']]['create']) - && isset($fields['item'][$change['field']]) - && $fields['item'][$change['field']] - ) { + if (isset($fields['item'][$change['field']]) && $fields['item'][$change['field']]) { $orders[$change['order']['id']]['items'][$change['item']['id']][$fields['item'][$change['field']]] = $change['newValue']; } } elseif ($change['field'] == 'payments' && isset($change['payment'])) { if ($change['newValue'] !== null) { $orders[$change['order']['id']]['payments'][] = self::newValue($change['payment']); } - } else { + } else { if (isset($fields['delivery'][$change['field']]) && $fields['delivery'][$change['field']] == 'service') { $orders[$change['order']['id']]['delivery']['service']['code'] = self::newValue($change['newValue']); } elseif (isset($fields['delivery'][$change['field']]) && $fields['delivery'][$change['field']]) { @@ -120,7 +116,8 @@ class WC_Retailcrm_History_Assembler foreach ($customerHistory as $change) { $change['customer'] = self::removeEmpty($change['customer']); - if (isset($change['deleted']) + if ( + isset($change['deleted']) && $change['deleted'] && isset($customers[$change['customer']['id']]) ) { @@ -138,7 +135,8 @@ class WC_Retailcrm_History_Assembler $customers[$change['customer']['id']] = $change['customer']; } - if (isset($fields['customer'][$change['field']]) + if ( + isset($fields['customer'][$change['field']]) && $fields['customer'][$change['field']] ) { $customers[ @@ -148,7 +146,8 @@ class WC_Retailcrm_History_Assembler ] = self::newValue($change['newValue']); } - if (isset($fieldsAddress['customerAddress'][$change['field']]) + if ( + isset($fieldsAddress['customerAddress'][$change['field']]) && $fieldsAddress['customerAddress'][$change['field']] ) { if (!isset($customers[$change['customer']['id']]['address'])) { @@ -166,9 +165,7 @@ class WC_Retailcrm_History_Assembler // email_marketing_unsubscribed_at old value will be null and new value will be datetime in // `Y-m-d H:i:s` format if customer was marked as unsubscribed in retailCRM - if (isset($change['customer']['id']) && - $change['field'] == 'email_marketing_unsubscribed_at' - ) { + if (isset($change['customer']['id']) && $change['field'] == 'email_marketing_unsubscribed_at') { if ($change['oldValue'] == null && is_string(self::newValue($change['newValue']))) { $customers[$change['customer']['id']]['subscribed'] = false; } elseif (is_string($change['oldValue']) && self::newValue($change['newValue']) == null) { @@ -195,7 +192,8 @@ class WC_Retailcrm_History_Assembler foreach ($customerHistory as $change) { $change['customer'] = self::removeEmpty($change['customer']); - if (isset($change['deleted']) + if ( + isset($change['deleted']) && $change['deleted'] && isset($customersCorporate[$change['customer']['id']]) ) { @@ -204,7 +202,8 @@ class WC_Retailcrm_History_Assembler } if (isset($customersCorporate[$change['customer']['id']])) { - if (isset($customersCorporate[$change['customer']['id']]['deleted']) + if ( + isset($customersCorporate[$change['customer']['id']]['deleted']) && $customersCorporate[$change['customer']['id']]['deleted'] ) { continue; @@ -218,7 +217,8 @@ class WC_Retailcrm_History_Assembler $customersCorporate[$change['customer']['id']] = $change['customer']; } - if (isset($fields['customerCorporate'][$change['field']]) + if ( + isset($fields['customerCorporate'][$change['field']]) && $fields['customerCorporate'][$change['field']] ) { $customersCorporate[ @@ -228,9 +228,7 @@ class WC_Retailcrm_History_Assembler ] = self::newValue($change['newValue']); } - if (isset($fields['customerAddress'][$change['field']]) - && $fields['customerAddress'][$change['field']] - ) { + if (isset($fields['customerAddress'][$change['field']]) && $fields['customerAddress'][$change['field']]) { if (empty($customersCorporate[$change['customer']['id']]['address'])) { $customersCorporate[$change['customer']['id']]['address'] = array(); } @@ -276,7 +274,7 @@ class WC_Retailcrm_History_Assembler if (file_exists($mappingFile)) { $objects = simplexml_load_file($mappingFile); - foreach($objects->fields->field as $object) { + foreach ($objects->fields->field as $object) { if (empty($groupFilter) || in_array($object["group"], $groupFilter)) { $fields[(string)$object["group"]][(string)$object["id"]] = (string)$object; } @@ -315,7 +313,7 @@ class WC_Retailcrm_History_Assembler if (!empty($inputArray)) { foreach ($inputArray as $key => $element) { - if(!empty($element) || $element === 0 || $element === '0'){ + if (!empty($element) || $element === 0 || $element === '0') { if (is_array($element)) { $element = self::removeEmpty($element); } @@ -349,7 +347,8 @@ class WC_Retailcrm_History_Assembler foreach ($historyEntries as $entry) { if (!isset($entry[$recordType]['externalId'])) { - if ($entry['source'] == 'api' + if ( + $entry['source'] == 'api' && isset($change['apiKey']['current']) && $entry['apiKey']['current'] == true && $entry['field'] != 'externalId' @@ -373,7 +372,8 @@ class WC_Retailcrm_History_Assembler $notOurChanges[$externalId] = array(); } - if ($entry['source'] == 'api' + if ( + $entry['source'] == 'api' && isset($entry['apiKey']['current']) && $entry['apiKey']['current'] == true ) { @@ -396,4 +396,4 @@ class WC_Retailcrm_History_Assembler return $history; } -} \ No newline at end of file +}