mirror of
https://github.com/retailcrm/prestashop-module.git
synced 2025-03-01 19:03:14 +03:00
Fixed resetting customer's fields in Prestashop in case of it deleting in RetailCRM
This commit is contained in:
parent
114ae5efd1
commit
54959b7a15
@ -87,34 +87,39 @@ class RetailcrmHistory
|
||||
$customerBuilder->setDataCrm($customerHistory);
|
||||
|
||||
if (isset($customerHistory['externalId'])) {
|
||||
|
||||
$customerData = self::$api->customersGet($customerHistory['externalId'], 'externalId');
|
||||
$foundCustomer = new Customer($customerHistory['externalId']);
|
||||
$customerAddress = new Address(RetailcrmTools::searchIndividualAddress($foundCustomer));
|
||||
$addressBuilder = new RetailcrmCustomerAddressBuilder();
|
||||
if (isset($customerData['customer']) && $customerData['customer']) {
|
||||
|
||||
$addressBuilder
|
||||
->setCustomerAddress($customerAddress);
|
||||
$foundCustomer = new Customer($customerHistory['externalId']);
|
||||
$customerAddress = new Address(RetailcrmTools::searchIndividualAddress($foundCustomer));
|
||||
$addressBuilder = new RetailcrmCustomerAddressBuilder();
|
||||
|
||||
$customerBuilder
|
||||
->setCustomer($foundCustomer)
|
||||
->setAddressBuilder($addressBuilder)
|
||||
->setDataCrm($customerData['customer'])
|
||||
->build();
|
||||
$addressBuilder
|
||||
->setCustomerAddress($customerAddress);
|
||||
|
||||
$customer = $customerBuilder->getData()->getCustomer();
|
||||
$address = $customerBuilder->getData()->getCustomerAddress();
|
||||
$customerBuilder
|
||||
->setCustomer($foundCustomer)
|
||||
->setAddressBuilder($addressBuilder)
|
||||
->setDataCrm($customerData['customer'])
|
||||
->build();
|
||||
|
||||
if (self::loadInCMS($customer, 'update') === false) {
|
||||
continue;
|
||||
}
|
||||
$customer = $customerBuilder->getData()->getCustomer();
|
||||
$address = $customerBuilder->getData()->getCustomerAddress();
|
||||
|
||||
if (!empty($address)) {
|
||||
RetailcrmTools::assignAddressIdsByFields($customer, $address);
|
||||
|
||||
if (self::loadInCMS($address, 'update') === false) {
|
||||
if (self::loadInCMS($customer, 'update') === false) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!empty($address)) {
|
||||
RetailcrmTools::assignAddressIdsByFields($customer, $address);
|
||||
|
||||
if (self::loadInCMS($address, 'update') === false) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
$customerBuilder->build();
|
||||
|
||||
|
@ -171,7 +171,6 @@ class RetailcrmHistoryHelper {
|
||||
|
||||
if (isset($change['deleted'])
|
||||
&& $change['deleted']
|
||||
&& isset($customers[$change['customer']['id']])
|
||||
) {
|
||||
$customers[$change['customer']['id']]['deleted'] = true;
|
||||
continue;
|
||||
|
@ -47,6 +47,19 @@ class RetailcrmHistoryTest extends RetailcrmTestCase
|
||||
)
|
||||
);
|
||||
|
||||
$this->apiMock->expects($this->any())
|
||||
->method('customersGet')
|
||||
->willReturn(
|
||||
new RetailcrmApiResponse(
|
||||
'200',
|
||||
json_encode(
|
||||
array(
|
||||
'customer' => $this->getApiCustomer()
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
RetailcrmHistory::$default_lang = (int)Configuration::get('PS_LANG_DEFAULT');
|
||||
RetailcrmHistory::$api = $this->apiMock;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user