diff --git a/intaro.retailcrm/classes/general/history/RetailCrmHistory_v5.php b/intaro.retailcrm/classes/general/history/RetailCrmHistory_v5.php index 41e6f2d0..be816590 100644 --- a/intaro.retailcrm/classes/general/history/RetailCrmHistory_v5.php +++ b/intaro.retailcrm/classes/general/history/RetailCrmHistory_v5.php @@ -1180,6 +1180,15 @@ class RetailCrmHistory if ($orderCrm) { self::deliveryUpdate($newOrder, $optionsDelivTypes, $orderCrm['order']); } + + if (isset($order['delivery']['service']['trackNumber']) + && RetailcrmConfigProvider::getTrackNumberStatus() === 'Y' + ) { + $newOrder->setField( + 'TRACKING_NUMBER', + $order['delivery']['service']['trackNumber'] + ); + } } if ($itemUpdate === true && $newOrder->getField('CANCELED') !== 'Y') { diff --git a/intaro.retailcrm/lang/en/options.php b/intaro.retailcrm/lang/en/options.php index cc4f84e3..3206b0dd 100644 --- a/intaro.retailcrm/lang/en/options.php +++ b/intaro.retailcrm/lang/en/options.php @@ -112,3 +112,5 @@ $MESS ['DEACTIVATE_MODULE'] = 'Deactivate the module'; $MESS ['WRONG_CREDENTIALS'] = 'Enter the address and authorization key of the CRM system'; $MESS ['Wrong "apiKey" value.'] = 'Invalid authorization key'; + +$MESS ['ORDER_TRACK_NUMBER'] = 'Receive track number'; diff --git a/intaro.retailcrm/lang/ru/options.php b/intaro.retailcrm/lang/ru/options.php index 0d18abf6..d3783c12 100644 --- a/intaro.retailcrm/lang/ru/options.php +++ b/intaro.retailcrm/lang/ru/options.php @@ -171,3 +171,5 @@ $MESS ['DEACTIVATE_MODULE'] = 'Деактивировать модуль'; $MESS ['WRONG_CREDENTIALS'] = 'Введите адрес и ключ авторизации CRM системы'; $MESS ['Wrong "apiKey" value.'] = 'Недействительный ключ авторизации'; + +$MESS ['ORDER_TRACK_NUMBER'] = 'Получать трек-номер'; \ No newline at end of file diff --git a/intaro.retailcrm/lib/component/configprovider.php b/intaro.retailcrm/lib/component/configprovider.php index deacbdf0..8c3179e6 100644 --- a/intaro.retailcrm/lib/component/configprovider.php +++ b/intaro.retailcrm/lib/component/configprovider.php @@ -1159,4 +1159,14 @@ class ConfigProvider { return COption::GetOptionString(Constants::MODULE_ID, Constants::SITES_AVAILABLE, null); } + + public static function getTrackNumberStatus() + { + return static::getOption(Constants::DISPLAY_TRACK_NUMBER_DELIVERY); + } + + public static function setTrackNumberStatus($trackNumberStatus) + { + static::setOption(Constants::DISPLAY_TRACK_NUMBER_DELIVERY, $trackNumberStatus); + } } diff --git a/intaro.retailcrm/lib/component/constants.php b/intaro.retailcrm/lib/component/constants.php index 50eded87..2c9caa64 100644 --- a/intaro.retailcrm/lib/component/constants.php +++ b/intaro.retailcrm/lib/component/constants.php @@ -104,4 +104,6 @@ class Constants ['EVENT_NAME' => 'OnSaleComponentOrderResultPrepared', 'FROM_MODULE' => 'sale'], ]; public const SITES_AVAILABLE = 'sites_available'; + + public const DISPLAY_TRACK_NUMBER_DELIVERY = 'receive_track_number_delivery'; } diff --git a/intaro.retailcrm/options.php b/intaro.retailcrm/options.php index ffbd7f52..ff4c5203 100644 --- a/intaro.retailcrm/options.php +++ b/intaro.retailcrm/options.php @@ -40,6 +40,7 @@ $CRM_CONTRAGENT_TYPE = 'contragent_type'; $CRM_SITES_LIST = 'sites_list'; $CRM_ORDER_NUMBERS = 'order_numbers'; $CRM_ORDER_VAT = 'order_vat'; +$CRM_ORDER_TRACK_NUMBER = 'receive_track_number_delivery'; $CRM_CANSEL_ORDER = 'cansel_order'; $CRM_INVENTORIES_UPLOAD = 'inventories_upload'; $CRM_STORES = 'stores'; @@ -814,6 +815,12 @@ if (isset($_POST['Update']) && ($_POST['Update'] === 'Y')) { $CRM_ORDER_VAT, htmlspecialchars(trim($_POST['order-vat'])) ?: 'N' ); + COption::SetOptionString( + $mid, + $CRM_ORDER_TRACK_NUMBER, + htmlspecialchars(trim($_POST['track-number'])) ?: 'N' + ); + COption::SetOptionString( $mid, $CRM_COUPON_FIELD, @@ -1027,6 +1034,7 @@ if (isset($_POST['Update']) && ($_POST['Update'] === 'Y')) { $optionsCustomFields = unserialize(COption::GetOptionString($mid, $CRM_CUSTOM_FIELDS, 0)); $optionsOrderNumbers = COption::GetOptionString($mid, $CRM_ORDER_NUMBERS, 0); $optionsOrderVat = COption::GetOptionString($mid, $CRM_ORDER_VAT, 0); + $optionsOrderTrackNumber = COption::GetOptionString($mid, $CRM_ORDER_TRACK_NUMBER, 0); $canselOrderArr = unserialize(COption::GetOptionString($mid, $CRM_CANSEL_ORDER, 0)); $sendPickupPointAddress = COption::GetOptionString($mid, Constants::CRM_SEND_PICKUP_POINT_ADDRESS, 'N'); @@ -2247,6 +2255,15 @@ if (isset($_POST['Update']) && ($_POST['Update'] === 'Y')) { +