From 6eed3ad0e75f56dd31fcdf3f112b41201ba1c5a1 Mon Sep 17 00:00:00 2001 From: DmitryZagorulko Date: Tue, 21 Mar 2017 12:46:37 +0400 Subject: [PATCH] fix create orders (#7) * [productId] replace to [offer][externalId] * properties for items in order and in icml --- retailcrm/job/missing.php | 3 ++- retailcrm/lib/RetailcrmCatalog.php | 23 ++++++++++++++++++++++- retailcrm/retailcrm.php | 22 ++++++++++++++++++++-- 3 files changed, 44 insertions(+), 4 deletions(-) diff --git a/retailcrm/job/missing.php b/retailcrm/job/missing.php index 3575f69..bfd3f73 100644 --- a/retailcrm/job/missing.php +++ b/retailcrm/job/missing.php @@ -143,7 +143,8 @@ $products = $orderInstance->getProducts(); foreach($products as $product) { $item = array( - 'productId' => $product['product_id'], + //'productId' => $product['product_id'], + 'offer' => array('externalId' => $product['product_id']), 'productName' => $product['product_name'], 'quantity' => $product['product_quantity'], 'initialPrice' => round($product['product_price'], 2), diff --git a/retailcrm/lib/RetailcrmCatalog.php b/retailcrm/lib/RetailcrmCatalog.php index 939ec97..f900f07 100644 --- a/retailcrm/lib/RetailcrmCatalog.php +++ b/retailcrm/lib/RetailcrmCatalog.php @@ -105,11 +105,26 @@ class RetailcrmCatalog } else { $size = null; } - + + $productForCombination = new Product($product['id_product']); + $offers = Product::getProductAttributesIds($product['id_product']); if(!empty($offers)) { foreach($offers as $offer) { + + $combinations = $productForCombination->getAttributeCombinationsById($offer['id_product_attribute' ], $id_lang); + if (!empty($combinations)) { + + foreach ($combinations as $combination) { + $arSet = array( + 'group_name' => $combination['group_name'], + 'attribute' => $combination['attribute_name'], + ); + $arComb[] = $arSet; + } + } + $pictures = array(); $covers = Image::getImages($id_lang, $product['id_product'], $offer['id_product_attribute']); foreach($covers as $cover) { @@ -144,6 +159,12 @@ class RetailcrmCatalog 'size' => $size ); + if (!empty($combinations)) { + foreach ($arComb as $itemComb) { + $item[mb_strtolower($itemComb['group_name'])] = htmlspecialchars($itemComb['attribute']); + } + } + $items[] = $item; } } else { diff --git a/retailcrm/retailcrm.php b/retailcrm/retailcrm.php index e4e86d8..0fbef87 100644 --- a/retailcrm/retailcrm.php +++ b/retailcrm/retailcrm.php @@ -351,15 +351,33 @@ class RetailCRM extends Module $productId = $item['id_product']; } + if ($item['attributes']) { + $arProp = array(); + $count = 0; + $arAttr = explode(",", $item['attributes']); + foreach ($arAttr as $valAttr) { + $arItem = explode(":", $valAttr); + $arProp[$count]['name'] = trim($arItem[0]); + $arProp[$count]['value'] = trim($arItem[1]); + $count++; + + } + } + $order['items'][] = array( 'initialPrice' => !empty($item['rate']) ? $item['price'] + ($item['price'] * $item['rate'] / 100) : $item['price'] , 'quantity' => $item['quantity'], - 'productId' => $productId, - 'productName' => $item['name'] + 'offer' => array('externalId' => $productId), + 'productName' => $item['name'], + 'properties' => $arProp ); + + unset($arAttr); + unset($count); + unset($arProp); } $deliveryCode = $params['order']->id_carrier;