Merge pull request #83 from Evgeniy-Goroh/master
Поддержка одинаковых позицый товаров в CRM
This commit is contained in:
commit
a0db53017c
@ -1,3 +1,6 @@
|
||||
## 2019-09-17 v.2.5.2
|
||||
* Поддержка функции добавления одинакового товара в заказ как разные товарные позиции из CRM
|
||||
|
||||
## 2019-08-28 v.2.5.1
|
||||
* Исправление генерации единиц измерения
|
||||
|
||||
|
@ -646,11 +646,32 @@ class RetailCrmHistory
|
||||
if (isset($order['items'])) {
|
||||
$itemUpdate = true;
|
||||
|
||||
$response = RCrmActions::apiMethod($api, 'orderGet', __METHOD__, $order['id']);
|
||||
if (isset($response['order'])) {
|
||||
$orderTemp = $response['order'];
|
||||
$ditems = [];
|
||||
foreach ($orderTemp['items'] as $item) {
|
||||
$ditems[$item['offer']['xmlId']]['quantity'] += $item['quantity'];
|
||||
$ditems[$item['offer']['xmlId']]['discountTotal'] += $item['quantity'] * $item['discountTotal'];
|
||||
$ditems[$item['offer']['xmlId']]['initialPrice'] = (float)$item['initialPrice'];
|
||||
$ditems[$item['offer']['xmlId']]['price_sum'] = $ditems[$item['offer']['xmlId']]['initialPrice'] * $ditems[$item['offer']['xmlId']]['quantity'] - $ditems[$item['offer']['xmlId']]['discountTotal'];
|
||||
$ditems[$item['offer']['xmlId']]['price_item'] = $ditems[$item['offer']['xmlId']]['price_sum'] / $ditems[$item['offer']['xmlId']]['quantity'];
|
||||
}
|
||||
unset($orderTemp);
|
||||
}
|
||||
|
||||
$log->write($ditems, 'duplicateItemsOrderHistory');
|
||||
|
||||
foreach ($order['items'] as $product) {
|
||||
if($ditems[$product['offer']['xmlId']]['quantity']){
|
||||
$product['quantity'] = $ditems[$product['offer']['xmlId']]['quantity'];
|
||||
}
|
||||
|
||||
$item = self::getExistsItem($basket, 'catalog', $product['offer']['externalId']);
|
||||
|
||||
if (!$item) {
|
||||
if ($product['delete']) {
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -679,10 +700,12 @@ class RetailCrmHistory
|
||||
}
|
||||
|
||||
if ($product['delete']) {
|
||||
if ($ditems[$product['offer']['xmlId']]['quantity'] <= 0) {
|
||||
$item->delete();
|
||||
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if ($product['quantity']) {
|
||||
$item->setFieldNoDemand('QUANTITY', $product['quantity']);
|
||||
@ -709,6 +732,12 @@ class RetailCrmHistory
|
||||
$item->setField('DISCOUNT_VALUE', '');
|
||||
$item->setField('DISCOUNT_PRICE', $resultDiscount);
|
||||
$item->setField('PRICE', $itemCost - $resultDiscount);
|
||||
|
||||
//set price dublicate item
|
||||
if ($ditems[$product['offer']['xmlId']]['price_item']) {
|
||||
$item->setField('PRICE', $ditems[$product['offer']['xmlId']]['price_item']);
|
||||
$item->setField('DISCOUNT_PRICE', '');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -772,12 +801,16 @@ class RetailCrmHistory
|
||||
if (!empty($newHistoryPayments)) {
|
||||
foreach ($newOrder->getPaymentCollection() as $orderPayment) {
|
||||
if (array_key_exists($orderPayment->getField('XML_ID'), $newHistoryPayments)) {
|
||||
|
||||
$paymentId = $orderPayment->getId();
|
||||
$paymentExternalId = RCrmActions::generatePaymentExternalId($paymentId);
|
||||
if (is_null($paymentId)) {
|
||||
RCrmActions::eventLog('RetailCrmHistory::orderHistory', 'paymentsUpdate', 'Save payment error, order=' . $order['number']);
|
||||
continue;
|
||||
}
|
||||
|
||||
$paymentExternalId = $orderPayment->getId();
|
||||
|
||||
if ($paymentExternalId) {
|
||||
$newHistoryPayments[$orderPayment->getField('XML_ID')]['externalId'] = $paymentExternalId;
|
||||
RCrmActions::apiMethod($api, 'paymentEditById', __METHOD__, $newHistoryPayments[$orderPayment->getField('XML_ID')]);
|
||||
@ -815,6 +848,26 @@ class RetailCrmHistory
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $array
|
||||
* @param $value
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function search_array_by_value($array, $value)
|
||||
{
|
||||
$results = array();
|
||||
if (is_array($array)) {
|
||||
$found = array_search($value,$array);
|
||||
if ($found) {
|
||||
$results[] = $found;
|
||||
}
|
||||
foreach ($array as $subarray)
|
||||
$results = array_merge($results, static::search_array_by_value($subarray, $value));
|
||||
}
|
||||
return $results;
|
||||
}
|
||||
|
||||
public static function assemblyCustomer($customerHistory)
|
||||
{
|
||||
$server = \Bitrix\Main\Context::getCurrent()->getServer()->getDocumentRoot();
|
||||
@ -1009,6 +1062,7 @@ class RetailCrmHistory
|
||||
if (isset($orderCrm['delivery']['service']['code'])) {
|
||||
$deliveryCode = \Bitrix\Sale\Delivery\Services\Manager::getCodeById($deliveryId);
|
||||
$serviceCode = $orderCrm['delivery']['service']['code'];
|
||||
|
||||
$service = \Bitrix\Sale\Delivery\Services\Manager::getService($deliveryId);
|
||||
if (is_object($service)) {
|
||||
$services = $service->getProfilesList();
|
||||
@ -1017,6 +1071,7 @@ class RetailCrmHistory
|
||||
$serviceCode = str_replace(array('-'), "_", $serviceCode);
|
||||
}
|
||||
}
|
||||
|
||||
if ($deliveryCode) {
|
||||
try {
|
||||
$deliveryService = \Bitrix\Sale\Delivery\Services\Manager::getObjectByCode($deliveryCode . ':' . $serviceCode);
|
||||
|
@ -140,6 +140,7 @@ class RetailCrmOrder
|
||||
//basket
|
||||
foreach ($arFields['BASKET'] as $product) {
|
||||
$item = array(
|
||||
'externalId' => $product['PRODUCT_ID'],
|
||||
'quantity' => $product['QUANTITY'],
|
||||
'offer' => array('externalId' => $product['PRODUCT_ID'],
|
||||
'xmlId' => $product['PRODUCT_XML_ID']
|
||||
@ -205,7 +206,7 @@ class RetailCrmOrder
|
||||
'amount' => $payment['SUM']
|
||||
);
|
||||
if (!empty($payment['ID'])) {
|
||||
$pm['externalId'] = $payment['ID'];
|
||||
$pm['externalId'] = RCrmActions::generatePaymentExternalId($payment['ID']);
|
||||
}
|
||||
if (!empty($payment['DATE_PAID'])) {
|
||||
$pm['paidAt'] = new \DateTime($payment['DATE_PAID']);
|
||||
|
@ -1 +1 @@
|
||||
- Исправление генерации единиц измерения
|
||||
- Поддержка функции добавления одинакового товара в заказ как разные товарные позиции из CRM
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?
|
||||
$arModuleVersion = array(
|
||||
"VERSION" => "2.5.1",
|
||||
"VERSION_DATE" => "2019-08-28 15:20:00"
|
||||
"VERSION" => "2.5.2",
|
||||
"VERSION_DATE" => "2019-09-17 15:20:00"
|
||||
);
|
||||
|
Loading…
x
Reference in New Issue
Block a user