ready for product statuses
This commit is contained in:
parent
be1041a38f
commit
deac6e4cb4
@ -16,6 +16,8 @@ class ICrmOrderActions
|
|||||||
protected static $CRM_ORDER_FAILED_IDS = 'order_failed_ids';
|
protected static $CRM_ORDER_FAILED_IDS = 'order_failed_ids';
|
||||||
protected static $CRM_ORDER_HISTORY_DATE = 'order_history_date';
|
protected static $CRM_ORDER_HISTORY_DATE = 'order_history_date';
|
||||||
|
|
||||||
|
const CANCEL_PROPERTY_CODE = 'INTAROCRM_IS_CANCELED';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mass order uploading, without repeating; always returns true, but writes error log
|
* Mass order uploading, without repeating; always returns true, but writes error log
|
||||||
* @param $failed -- flag to export failed orders
|
* @param $failed -- flag to export failed orders
|
||||||
@ -248,6 +250,28 @@ class ICrmOrderActions
|
|||||||
return true; //all ok!
|
return true; //all ok!
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected static function updateCancelProp($arProduct, $value) {
|
||||||
|
$propUpdated = false;
|
||||||
|
foreach($arProduct['PROPS'] as $key => $item) {
|
||||||
|
if ($item['CODE'] == self::CANCEL_PROPERTY_CODE) {
|
||||||
|
$arProduct['PROPS'][$key]['VALUE'] = $value;
|
||||||
|
$propUpdated = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$propUpdated) {
|
||||||
|
$arProduct['PROPS'][] = array(
|
||||||
|
'NAME' => 'Товар в статусе отмены',
|
||||||
|
'CODE' => self::CANCEL_PROPERTY_CODE,
|
||||||
|
'VALUE' => $value,
|
||||||
|
'SORT' => 10,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $arProduct;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* History update
|
* History update
|
||||||
@ -556,10 +580,24 @@ class ICrmOrderActions
|
|||||||
|
|
||||||
$p = CSaleBasket::GetList(
|
$p = CSaleBasket::GetList(
|
||||||
array('PRODUCT_ID' => 'ASC'),
|
array('PRODUCT_ID' => 'ASC'),
|
||||||
array('ORDER_ID' => $order['externalId'], 'PRODUCT_ID' => $item['offer']['externalId']))->Fetch();
|
array('ORDER_ID' => $order['externalId'], 'PRODUCT_ID' => $item['offer']['externalId'])
|
||||||
|
)->Fetch();
|
||||||
|
|
||||||
if(!$p)
|
if (!$p) {
|
||||||
$p = CIBlockElement::GetByID($item['offer']['externalId'])->Fetch();
|
$p = CIBlockElement::GetByID($item['offer']['externalId'])->Fetch();
|
||||||
|
$p[self::CANCEL_PROPERTY_CODE] = 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
//for basket props updating (in props we save cancel status)
|
||||||
|
$propResult = CSaleBasket::GetPropsList(
|
||||||
|
array(),
|
||||||
|
array('BASKET_ID' => $p['ID'])
|
||||||
|
);
|
||||||
|
|
||||||
|
while($r = $propResult->Fetch()) {
|
||||||
|
$p['PROPS'][] = $r;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// change existing basket items
|
// change existing basket items
|
||||||
$arProduct = array();
|
$arProduct = array();
|
||||||
@ -608,10 +646,19 @@ class ICrmOrderActions
|
|||||||
if (isset($item['offer']['name']) && $item['offer']['name'])
|
if (isset($item['offer']['name']) && $item['offer']['name'])
|
||||||
$arProduct['NAME'] = self::fromJSON($item['offer']['name']);
|
$arProduct['NAME'] = self::fromJSON($item['offer']['name']);
|
||||||
|
|
||||||
|
if (isset($item['isCanceled'])) {
|
||||||
|
//for product excluding from order
|
||||||
|
$arProduct['PRICE'] = 0;
|
||||||
|
self::updateCancelProp($arProduct, 1);
|
||||||
|
}
|
||||||
|
|
||||||
CSaleBasket::Add($arProduct);
|
CSaleBasket::Add($arProduct);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$arProduct['PROPS'] = $p['PROPS'];
|
||||||
|
|
||||||
|
if (!isset($item['isCanceled']) {
|
||||||
// update old
|
// update old
|
||||||
if (isset($item['initialPrice']) && $item['initialPrice'])
|
if (isset($item['initialPrice']) && $item['initialPrice'])
|
||||||
$arProduct['PRICE'] = (double) $item['initialPrice'];
|
$arProduct['PRICE'] = (double) $item['initialPrice'];
|
||||||
@ -629,6 +676,15 @@ class ICrmOrderActions
|
|||||||
if(isset($item['discount']) || isset($item['discountPercent']))
|
if(isset($item['discount']) || isset($item['discountPercent']))
|
||||||
$arProduct['PRICE'] -= $arProduct['DISCOUNT_PRICE'];
|
$arProduct['PRICE'] -= $arProduct['DISCOUNT_PRICE'];
|
||||||
|
|
||||||
|
self::updateCancelProp($arProduct, 0);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
//for product excluding from order
|
||||||
|
$arProduct['PRICE'] = 0;
|
||||||
|
self::updateCancelProp($arProduct, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (isset($item['quantity']) && $item['quantity'])
|
if (isset($item['quantity']) && $item['quantity'])
|
||||||
$arProduct['QUANTITY'] = $item['quantity'];
|
$arProduct['QUANTITY'] = $item['quantity'];
|
||||||
|
|
||||||
@ -877,6 +933,15 @@ class ICrmOrderActions
|
|||||||
|
|
||||||
$rsOrderBasket = CSaleBasket::GetList(array('PRODUCT_ID' => 'ASC'), array('ORDER_ID' => $arFields['ID']));
|
$rsOrderBasket = CSaleBasket::GetList(array('PRODUCT_ID' => 'ASC'), array('ORDER_ID' => $arFields['ID']));
|
||||||
while ($p = $rsOrderBasket->Fetch()) {
|
while ($p = $rsOrderBasket->Fetch()) {
|
||||||
|
//for basket props updating (in props we save cancel status)
|
||||||
|
$propCancel = CSaleBasket::GetPropsList(
|
||||||
|
array(),
|
||||||
|
array('BASKET_ID' => $p['ID'], 'CODE' => self::CANCEL_PROPERTY_CODE)
|
||||||
|
)->Fetch();
|
||||||
|
if ($propCancel) {
|
||||||
|
$propCancel = (int)$propCancel['VALUE'];
|
||||||
|
}
|
||||||
|
|
||||||
$pr = CCatalogProduct::GetList(array('ID' => $p['PRODUCT_ID']))->Fetch();
|
$pr = CCatalogProduct::GetList(array('ID' => $p['PRODUCT_ID']))->Fetch();
|
||||||
if ($pr)
|
if ($pr)
|
||||||
$pr = $pr['PURCHASING_PRICE'];
|
$pr = $pr['PURCHASING_PRICE'];
|
||||||
@ -884,14 +949,17 @@ class ICrmOrderActions
|
|||||||
$pr = '';
|
$pr = '';
|
||||||
|
|
||||||
$items[] = array(
|
$items[] = array(
|
||||||
'initialPrice' => (double) $p['PRICE'] + (double) $p['DISCOUNT_PRICE'],
|
|
||||||
//'purchasePrice' => $pr,
|
|
||||||
'discount' => $p['DISCOUNT_PRICE'],
|
|
||||||
'discountPercent' => 0,
|
'discountPercent' => 0,
|
||||||
'quantity' => $p['QUANTITY'],
|
'quantity' => $p['QUANTITY'],
|
||||||
'productId' => $p['PRODUCT_ID'],
|
'productId' => $p['PRODUCT_ID'],
|
||||||
'productName' => self::toJSON($p['NAME'])
|
'productName' => self::toJSON($p['NAME'])
|
||||||
);
|
);
|
||||||
|
|
||||||
|
//if it is canceled product don't send price
|
||||||
|
if (!$propCancel) {
|
||||||
|
$items['initialPrice'] = (double) $p['PRICE'] + (double) $p['DISCOUNT_PRICE'];
|
||||||
|
$items['discount'] => $p['DISCOUNT_PRICE']
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if($arFields['CANCELED'] == 'Y')
|
if($arFields['CANCELED'] == 'Y')
|
||||||
|
Loading…
Reference in New Issue
Block a user