From 21da16874ef00810792fa7a77e0fbbdf15904377 Mon Sep 17 00:00:00 2001 From: Ivan Chaplygin Date: Mon, 17 Jul 2023 11:50:45 +0300 Subject: [PATCH] =?UTF-8?q?ref=20#91040=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4?= =?UTF-8?q?=D0=B0=D1=87=D0=B0=20=D0=BF=D0=BE=D0=B4=D0=BF=D0=B8=D1=81=D0=BA?= =?UTF-8?q?=D0=B8=20=D0=BF=D0=BE=20=D0=B8=D1=81=D1=82=D0=BE=D1=80=D0=B8?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../classes/general/CustomerBuilder.php | 9 +++++++++ .../classes/general/Model/Customer.php | 14 ++++++++++++++ .../classes/general/config/objects.xml | 1 + .../classes/general/events/RetailCrmEvent.php | 2 +- .../general/history/RetailCrmHistory_v5.php | 19 ++++++++++++++++++- 5 files changed, 43 insertions(+), 2 deletions(-) diff --git a/intaro.retailcrm/classes/general/CustomerBuilder.php b/intaro.retailcrm/classes/general/CustomerBuilder.php index 5f4ce2e4..39a25489 100644 --- a/intaro.retailcrm/classes/general/CustomerBuilder.php +++ b/intaro.retailcrm/classes/general/CustomerBuilder.php @@ -200,6 +200,15 @@ class CustomerBuilder extends AbstractBuilder implements RetailcrmBuilderInterfa if (isset($this->dataCrm['address'])) { $this->buildAddress(); } + + // клиент подписан при значении равном null + if (array_key_exists('subscribed', $this->dataCrm)) { + if (empty($this->dataCrm['subscribed'])) { + $this->customer->setSubscribe('Y'); + } else { + $this->customer->setSubscribe('N'); + } + } } public function buildPassword() diff --git a/intaro.retailcrm/classes/general/Model/Customer.php b/intaro.retailcrm/classes/general/Model/Customer.php index 76ac73b9..9cfec5be 100644 --- a/intaro.retailcrm/classes/general/Model/Customer.php +++ b/intaro.retailcrm/classes/general/Model/Customer.php @@ -47,6 +47,9 @@ class Customer extends BaseModel /**@var string $PERSONAL_GENDER */ protected $PERSONAL_GENDER; + /**@var string $UF_SUBSCRIBE_USER_EMAIL */ + protected $UF_SUBSCRIBE_USER_EMAIL; + /** * @param string $EMAIL * @return $this @@ -200,4 +203,15 @@ class Customer extends BaseModel return $this; } + + /** + * @param string $UF_SUBSCRIBE_USER_EMAIL + * @return $this + */ + public function setSubscribe($UF_SUBSCRIBE_USER_EMAIL) + { + $this->UF_SUBSCRIBE_USER_EMAIL = $UF_SUBSCRIBE_USER_EMAIL; + + return $this; + } } diff --git a/intaro.retailcrm/classes/general/config/objects.xml b/intaro.retailcrm/classes/general/config/objects.xml index 82210e9a..b3c3df33 100644 --- a/intaro.retailcrm/classes/general/config/objects.xml +++ b/intaro.retailcrm/classes/general/config/objects.xml @@ -15,6 +15,7 @@ cumulativeDiscount personalDiscount discountCardNumber + subscribed index countryIso diff --git a/intaro.retailcrm/classes/general/events/RetailCrmEvent.php b/intaro.retailcrm/classes/general/events/RetailCrmEvent.php index 297a68ad..6b7f36d3 100644 --- a/intaro.retailcrm/classes/general/events/RetailCrmEvent.php +++ b/intaro.retailcrm/classes/general/events/RetailCrmEvent.php @@ -74,7 +74,7 @@ class RetailCrmEvent public static function OnBeforeUserUpdate(&$arFields) { if (isset($GLOBALS['RETAIL_CRM_HISTORY']) && $GLOBALS['RETAIL_CRM_HISTORY']) { - return false; + return true; } if (empty($arFields['UF_SUBSCRIBE_USER_EMAIL'])) { diff --git a/intaro.retailcrm/classes/general/history/RetailCrmHistory_v5.php b/intaro.retailcrm/classes/general/history/RetailCrmHistory_v5.php index f779679a..f7708f3d 100644 --- a/intaro.retailcrm/classes/general/history/RetailCrmHistory_v5.php +++ b/intaro.retailcrm/classes/general/history/RetailCrmHistory_v5.php @@ -198,7 +198,9 @@ class RetailCrmHistory ); } - $u = $newUser->Update($customer['externalId'], $customerBuilder->getCustomer()->getObjectToArray()); + $customerArray = $customerBuilder->getCustomer()->getObjectToArray(); + $u = $newUser->Update($customer['externalId'], self::convertBooleanFields($customerArray)); + if (!$u) { RCrmActions::eventLog( 'RetailCrmHistory::customerHistory', @@ -2088,4 +2090,19 @@ class RetailCrmHistory ); } } + + /** + * @param array $array + * @return array + */ + public static function convertBooleanFields($array) + { + foreach ($array as $key => $value) { + if ($value === 'N') { + $array[$key] = false; + } + } + + return $array; + } }