ref #90482 Добавлен функционал передачи примененного купона в заказе Битрикс в пользовательское поле заказа CRM (#302)
This commit is contained in:
parent
c7cec20c02
commit
7c667112d5
@ -1,3 +1,6 @@
|
|||||||
|
## 2023-07-04 v.6.3.17
|
||||||
|
- Добавлен функционал передачи примененного купона в заказе Битрикс в пользовательское поле заказа CRM
|
||||||
|
|
||||||
## 2023-06-30 v.6.3.16
|
## 2023-06-30 v.6.3.16
|
||||||
- Добавлена передача НДС товаров
|
- Добавлена передача НДС товаров
|
||||||
|
|
||||||
|
@ -1433,9 +1433,9 @@ class ApiClient
|
|||||||
*
|
*
|
||||||
* @return ApiResponse
|
* @return ApiResponse
|
||||||
*/
|
*/
|
||||||
public function customFieldsList(array $filter = array(), $limit = null, $page = null)
|
public function customFieldsList(array $filter = [], $limit = null, $page = null)
|
||||||
{
|
{
|
||||||
$parameters = array();
|
$parameters = [];
|
||||||
|
|
||||||
if (count($filter)) {
|
if (count($filter)) {
|
||||||
$parameters['filter'] = $filter;
|
$parameters['filter'] = $filter;
|
||||||
|
@ -75,6 +75,25 @@ class RetailCrmOrder
|
|||||||
'delivery' => ['cost' => $arOrder['PRICE_DELIVERY']],
|
'delivery' => ['cost' => $arOrder['PRICE_DELIVERY']],
|
||||||
];
|
];
|
||||||
|
|
||||||
|
$orderCouponField = ConfigProvider::getOrderCouponField();
|
||||||
|
|
||||||
|
if ($orderCouponField !== '__default_empty_value__') {
|
||||||
|
$couponList = \Bitrix\Sale\Internals\OrderCouponsTable::getList([
|
||||||
|
'select' => ['COUPON'],
|
||||||
|
'filter' => ['=ORDER_ID' => $arOrder['ID']],
|
||||||
|
]);
|
||||||
|
$appliedCoupons = [];
|
||||||
|
|
||||||
|
while ($coupon = $couponList->fetch())
|
||||||
|
{
|
||||||
|
$appliedCoupons[] = $coupon['COUPON'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($orderCouponField) && $appliedCoupons !== []) {
|
||||||
|
$order['customFields'][$orderCouponField] = implode('; ', $appliedCoupons);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($arOrder['REASON_CANCELED'])) {
|
if (!empty($arOrder['REASON_CANCELED'])) {
|
||||||
$order['statusComment'] = $arOrder['REASON_CANCELED'];
|
$order['statusComment'] = $arOrder['REASON_CANCELED'];
|
||||||
}
|
}
|
||||||
|
@ -1 +1 @@
|
|||||||
- Добавлена передача НДС товаров
|
- Добавлен функционал передачи примененного купона в заказе Битрикс в пользовательское поле заказа CRM
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
$arModuleVersion = [
|
$arModuleVersion = [
|
||||||
'VERSION' => '6.3.16',
|
'VERSION' => '6.3.17',
|
||||||
'VERSION_DATE' => '2023-06-30 18:00:00'
|
'VERSION_DATE' => '2023-07-04 18:00:00'
|
||||||
];
|
];
|
||||||
|
@ -18,6 +18,8 @@ $MESS ['PAYMENT_Y'] = 'Paid';
|
|||||||
$MESS ['PAYMENT_N'] = 'Not paid';
|
$MESS ['PAYMENT_N'] = 'Not paid';
|
||||||
$MESS ['LEGAL_DETAIL'] = 'Legal entity and bank details';
|
$MESS ['LEGAL_DETAIL'] = 'Legal entity and bank details';
|
||||||
$MESS ['ORDER_CUSTOM'] = 'Custom fields';
|
$MESS ['ORDER_CUSTOM'] = 'Custom fields';
|
||||||
|
$MESS ['COUPON_CUSTOM_FIELD'] = 'Select a custom field in the CRM to transfer the applied coupon in the Bitrix order';
|
||||||
|
$MESS ['SELECT_VALUE'] = '-- Select a value --';
|
||||||
$MESS ['ORDER_UPLOAD'] = 'Re-upload orders';
|
$MESS ['ORDER_UPLOAD'] = 'Re-upload orders';
|
||||||
$MESS ['ORDER_NUMBER'] = 'Order numbers: ';
|
$MESS ['ORDER_NUMBER'] = 'Order numbers: ';
|
||||||
$MESS ['ORDER_UPLOAD_INFO'] = 'Click "Start uploading" to upload all the orders . Or list the required order IDs separated by commas, intervals or dashes. For example: 1, 3, 5-10, 12, 13... etc.';
|
$MESS ['ORDER_UPLOAD_INFO'] = 'Click "Start uploading" to upload all the orders . Or list the required order IDs separated by commas, intervals or dashes. For example: 1, 3, 5-10, 12, 13... etc.';
|
||||||
|
@ -19,6 +19,8 @@ $MESS ['PAYMENT_Y'] = 'Оплачен';
|
|||||||
$MESS ['PAYMENT_N'] = 'Не оплачен';
|
$MESS ['PAYMENT_N'] = 'Не оплачен';
|
||||||
$MESS ['LEGAL_DETAIL'] = 'Юридические и банковские реквизиты';
|
$MESS ['LEGAL_DETAIL'] = 'Юридические и банковские реквизиты';
|
||||||
$MESS ['ORDER_CUSTOM'] = 'Кастомные поля';
|
$MESS ['ORDER_CUSTOM'] = 'Кастомные поля';
|
||||||
|
$MESS ['COUPON_CUSTOM_FIELD'] = 'Выберите пользовательское поле в CRM для передачи примененного купона в заказе Битрикс';
|
||||||
|
$MESS ['SELECT_VALUE'] = '-- Выберите значение --';
|
||||||
$MESS ['ORDER_UPLOAD'] = 'Повторная выгрузка заказов';
|
$MESS ['ORDER_UPLOAD'] = 'Повторная выгрузка заказов';
|
||||||
$MESS ['ORDER_NUMBER'] = 'Номера заказов: ';
|
$MESS ['ORDER_NUMBER'] = 'Номера заказов: ';
|
||||||
$MESS ['ORDER_UPLOAD_INFO'] = 'Для загрузки всех заказов нажмите кнопку «Начать выгрузку». Или перечислите необходимые ID заказов через запятую, интервалы через тире. Например: 1, 3, 5-10, 12, 13... и т.д.';
|
$MESS ['ORDER_UPLOAD_INFO'] = 'Для загрузки всех заказов нажмите кнопку «Начать выгрузку». Или перечислите необходимые ID заказов через запятую, интервалы через тире. Например: 1, 3, 5-10, 12, 13... и т.д.';
|
||||||
|
@ -69,6 +69,9 @@ class ConfigProvider
|
|||||||
/** @var bool|null|string $orderVat */
|
/** @var bool|null|string $orderVat */
|
||||||
protected static $orderVat;
|
protected static $orderVat;
|
||||||
|
|
||||||
|
/** @var null|string $orderVat */
|
||||||
|
protected static $orderCouponField;
|
||||||
|
|
||||||
/** @var array $orderTypes */
|
/** @var array $orderTypes */
|
||||||
protected static $orderTypes;
|
protected static $orderTypes;
|
||||||
|
|
||||||
@ -501,6 +504,20 @@ class ConfigProvider
|
|||||||
return static::$customFields;
|
return static::$customFields;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get CRM order coupon field
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public static function getOrderCouponField()
|
||||||
|
{
|
||||||
|
if (self::isEmptyNotZero(static::$orderCouponField)) {
|
||||||
|
static::$orderCouponField = static::getOption(Constants::CRM_COUPON_FIELD);
|
||||||
|
}
|
||||||
|
|
||||||
|
return static::$orderCouponField;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* getCancellableOrderPaymentStatuses
|
* getCancellableOrderPaymentStatuses
|
||||||
*
|
*
|
||||||
|
@ -44,6 +44,7 @@ class Constants
|
|||||||
public const CRM_SITES_LIST_CORPORATE = 'shops-corporate';
|
public const CRM_SITES_LIST_CORPORATE = 'shops-corporate';
|
||||||
public const CRM_ORDER_NUMBERS = 'order_numbers';
|
public const CRM_ORDER_NUMBERS = 'order_numbers';
|
||||||
public const CRM_ORDER_VAT = 'order_vat';
|
public const CRM_ORDER_VAT = 'order_vat';
|
||||||
|
public const CRM_COUPON_FIELD = 'crm_coupon_field';
|
||||||
public const CRM_CANCEL_ORDER = 'cansel_order';
|
public const CRM_CANCEL_ORDER = 'cansel_order';
|
||||||
public const CRM_INVENTORIES_UPLOAD = 'inventories_upload';
|
public const CRM_INVENTORIES_UPLOAD = 'inventories_upload';
|
||||||
public const CRM_STORES = 'stores';
|
public const CRM_STORES = 'stores';
|
||||||
|
@ -35,6 +35,7 @@ $CRM_ORDER_DISCHARGE = 'order_discharge';
|
|||||||
$CRM_ORDER_PROPS = 'order_props';
|
$CRM_ORDER_PROPS = 'order_props';
|
||||||
$CRM_LEGAL_DETAILS = 'legal_details';
|
$CRM_LEGAL_DETAILS = 'legal_details';
|
||||||
$CRM_CUSTOM_FIELDS = 'custom_fields';
|
$CRM_CUSTOM_FIELDS = 'custom_fields';
|
||||||
|
$CRM_COUPON_FIELD = 'crm_coupon_field';
|
||||||
$CRM_CONTRAGENT_TYPE = 'contragent_type';
|
$CRM_CONTRAGENT_TYPE = 'contragent_type';
|
||||||
$CRM_SITES_LIST = 'sites_list';
|
$CRM_SITES_LIST = 'sites_list';
|
||||||
$CRM_ORDER_NUMBERS = 'order_numbers';
|
$CRM_ORDER_NUMBERS = 'order_numbers';
|
||||||
@ -405,6 +406,7 @@ if (isset($_POST['Update']) && ($_POST['Update'] === 'Y')) {
|
|||||||
$orderNumbers = htmlspecialchars(trim($_POST['order-numbers'])) ?: 'N';
|
$orderNumbers = htmlspecialchars(trim($_POST['order-numbers'])) ?: 'N';
|
||||||
$orderDimensions = htmlspecialchars(trim($_POST[$CRM_DIMENSIONS])) ?: 'N';
|
$orderDimensions = htmlspecialchars(trim($_POST[$CRM_DIMENSIONS])) ?: 'N';
|
||||||
$sendPaymentAmount = htmlspecialchars(trim($_POST[RetailcrmConstants::SEND_PAYMENT_AMOUNT])) ?: 'N';
|
$sendPaymentAmount = htmlspecialchars(trim($_POST[RetailcrmConstants::SEND_PAYMENT_AMOUNT])) ?: 'N';
|
||||||
|
$crmCouponFiled = htmlspecialchars(trim($_POST['crm-coupon-field'])) ?: 'N';
|
||||||
|
|
||||||
//stores
|
//stores
|
||||||
$bitrixStoresArr = [];
|
$bitrixStoresArr = [];
|
||||||
@ -812,6 +814,11 @@ if (isset($_POST['Update']) && ($_POST['Update'] === 'Y')) {
|
|||||||
$CRM_ORDER_VAT,
|
$CRM_ORDER_VAT,
|
||||||
$orderVat
|
$orderVat
|
||||||
);
|
);
|
||||||
|
COption::SetOptionString(
|
||||||
|
$mid,
|
||||||
|
$CRM_COUPON_FIELD,
|
||||||
|
$crmCouponFiled
|
||||||
|
);
|
||||||
COption::SetOptionString(
|
COption::SetOptionString(
|
||||||
$mid,
|
$mid,
|
||||||
$CRM_CANSEL_ORDER,
|
$CRM_CANSEL_ORDER,
|
||||||
@ -1051,9 +1058,27 @@ if (isset($_POST['Update']) && ($_POST['Update'] === 'Y')) {
|
|||||||
|
|
||||||
//currency
|
//currency
|
||||||
$baseCurrency = \Bitrix\Currency\CurrencyManager::getBaseCurrency();
|
$baseCurrency = \Bitrix\Currency\CurrencyManager::getBaseCurrency();
|
||||||
$currencyOption = COption::GetOptionString($mid, $CRM_CURRENCY, 0) ? COption::GetOptionString($mid, $CRM_CURRENCY, 0) : $baseCurrency;
|
$currencyOption = COption::GetOptionString($mid, $CRM_CURRENCY, 0) ?: $baseCurrency;
|
||||||
$currencyList = \Bitrix\Currency\CurrencyManager::getCurrencyList();
|
$currencyList = \Bitrix\Currency\CurrencyManager::getCurrencyList();
|
||||||
|
|
||||||
|
$customFields = [['code' => '__default_empty_value__', 'name' => GetMessage('SELECT_VALUE')]];
|
||||||
|
$crmCouponFieldOption = COption::GetOptionString($mid, $CRM_COUPON_FIELD, 0) ?: null;
|
||||||
|
$page = 1;
|
||||||
|
|
||||||
|
do {
|
||||||
|
$getCustomFields = $api->customFieldsList(['entity' => 'order', 'type' => ['string', 'text']], 100, $page);
|
||||||
|
|
||||||
|
if (!$getCustomFields->isSuccessful() && empty($getCustomFields['customFields'])) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($getCustomFields['customFields'] as $customField) {
|
||||||
|
$customFields[] = $customField;
|
||||||
|
}
|
||||||
|
|
||||||
|
$page++;
|
||||||
|
} while($getCustomFields['pagination']['currentPage'] < $getCustomFields['pagination']['totalPageCount']);
|
||||||
|
|
||||||
$optionsOrderDimensions = COption::GetOptionString($mid, $CRM_DIMENSIONS, 'N');
|
$optionsOrderDimensions = COption::GetOptionString($mid, $CRM_DIMENSIONS, 'N');
|
||||||
$addressOptions = unserialize(COption::GetOptionString($mid, $CRM_ADDRESS_OPTIONS, 0));
|
$addressOptions = unserialize(COption::GetOptionString($mid, $CRM_ADDRESS_OPTIONS, 0));
|
||||||
|
|
||||||
@ -2193,6 +2218,21 @@ if (isset($_POST['Update']) && ($_POST['Update'] === 'Y')) {
|
|||||||
</b>
|
</b>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2" class="option-head option-other-top option-other-bottom">
|
||||||
|
<b><?php echo GetMessage('COUPON_CUSTOM_FIELD'); ?></b>
|
||||||
|
<br><br>
|
||||||
|
<select name="crm-coupon-field" class="typeselect">
|
||||||
|
<?php foreach ($customFields as $customField) : ?>
|
||||||
|
<option value="<?php echo $customField['code']; ?>" <?php if ($customField['code'] === $crmCouponFieldOption) {
|
||||||
|
echo 'selected';
|
||||||
|
} ?>>
|
||||||
|
<?php echo $customField['name']; ?>
|
||||||
|
</option>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr class="heading">
|
<tr class="heading">
|
||||||
<td colspan="2" class="option-other-heading"><b><?php echo GetMessage('CRM_API_VERSION'); ?></b></td>
|
<td colspan="2" class="option-other-heading"><b><?php echo GetMessage('CRM_API_VERSION'); ?></b></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
Loading…
Reference in New Issue
Block a user