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;
+ }
}