1
0
mirror of synced 2024-11-21 21:06:09 +03:00

ref #90482 Добавлен функционал передачи примененного купона в заказе Битрикс в пользовательское поле заказа CRM (#302)

This commit is contained in:
Uryvskiy Dima 2023-07-05 10:34:37 +03:00 committed by GitHub
parent c7cec20c02
commit 7c667112d5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 90 additions and 6 deletions

View File

@ -1,3 +1,6 @@
## 2023-07-04 v.6.3.17
- Добавлен функционал передачи примененного купона в заказе Битрикс в пользовательское поле заказа CRM
## 2023-06-30 v.6.3.16
- Добавлена передача НДС товаров

View File

@ -1433,9 +1433,9 @@ class ApiClient
*
* @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)) {
$parameters['filter'] = $filter;

View File

@ -75,6 +75,25 @@ class RetailCrmOrder
'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'])) {
$order['statusComment'] = $arOrder['REASON_CANCELED'];
}

View File

@ -1 +1 @@
- Добавлена передача НДС товаров
- Добавлен функционал передачи примененного купона в заказе Битрикс в пользовательское поле заказа CRM

View File

@ -1,6 +1,6 @@
<?php
$arModuleVersion = [
'VERSION' => '6.3.16',
'VERSION_DATE' => '2023-06-30 18:00:00'
'VERSION' => '6.3.17',
'VERSION_DATE' => '2023-07-04 18:00:00'
];

View File

@ -18,6 +18,8 @@ $MESS ['PAYMENT_Y'] = 'Paid';
$MESS ['PAYMENT_N'] = 'Not paid';
$MESS ['LEGAL_DETAIL'] = 'Legal entity and bank details';
$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_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.';

View File

@ -19,6 +19,8 @@ $MESS ['PAYMENT_Y'] = 'Оплачен';
$MESS ['PAYMENT_N'] = 'Не оплачен';
$MESS ['LEGAL_DETAIL'] = 'Юридические и банковские реквизиты';
$MESS ['ORDER_CUSTOM'] = 'Кастомные поля';
$MESS ['COUPON_CUSTOM_FIELD'] = 'Выберите пользовательское поле в CRM для передачи примененного купона в заказе Битрикс';
$MESS ['SELECT_VALUE'] = '-- Выберите значение --';
$MESS ['ORDER_UPLOAD'] = 'Повторная выгрузка заказов';
$MESS ['ORDER_NUMBER'] = 'Номера заказов: ';
$MESS ['ORDER_UPLOAD_INFO'] = 'Для загрузки всех заказов нажмите кнопку «Начать выгрузку». Или перечислите необходимые ID заказов через запятую, интервалы через тире. Например: 1, 3, 5-10, 12, 13... и т.д.';

View File

@ -69,6 +69,9 @@ class ConfigProvider
/** @var bool|null|string $orderVat */
protected static $orderVat;
/** @var null|string $orderVat */
protected static $orderCouponField;
/** @var array $orderTypes */
protected static $orderTypes;
@ -501,6 +504,20 @@ class ConfigProvider
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
*

View File

@ -44,6 +44,7 @@ class Constants
public const CRM_SITES_LIST_CORPORATE = 'shops-corporate';
public const CRM_ORDER_NUMBERS = 'order_numbers';
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_INVENTORIES_UPLOAD = 'inventories_upload';
public const CRM_STORES = 'stores';

View File

@ -35,6 +35,7 @@ $CRM_ORDER_DISCHARGE = 'order_discharge';
$CRM_ORDER_PROPS = 'order_props';
$CRM_LEGAL_DETAILS = 'legal_details';
$CRM_CUSTOM_FIELDS = 'custom_fields';
$CRM_COUPON_FIELD = 'crm_coupon_field';
$CRM_CONTRAGENT_TYPE = 'contragent_type';
$CRM_SITES_LIST = 'sites_list';
$CRM_ORDER_NUMBERS = 'order_numbers';
@ -405,6 +406,7 @@ if (isset($_POST['Update']) && ($_POST['Update'] === 'Y')) {
$orderNumbers = htmlspecialchars(trim($_POST['order-numbers'])) ?: 'N';
$orderDimensions = htmlspecialchars(trim($_POST[$CRM_DIMENSIONS])) ?: 'N';
$sendPaymentAmount = htmlspecialchars(trim($_POST[RetailcrmConstants::SEND_PAYMENT_AMOUNT])) ?: 'N';
$crmCouponFiled = htmlspecialchars(trim($_POST['crm-coupon-field'])) ?: 'N';
//stores
$bitrixStoresArr = [];
@ -812,6 +814,11 @@ if (isset($_POST['Update']) && ($_POST['Update'] === 'Y')) {
$CRM_ORDER_VAT,
$orderVat
);
COption::SetOptionString(
$mid,
$CRM_COUPON_FIELD,
$crmCouponFiled
);
COption::SetOptionString(
$mid,
$CRM_CANSEL_ORDER,
@ -1051,9 +1058,27 @@ if (isset($_POST['Update']) && ($_POST['Update'] === 'Y')) {
//currency
$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();
$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');
$addressOptions = unserialize(COption::GetOptionString($mid, $CRM_ADDRESS_OPTIONS, 0));
@ -2193,6 +2218,21 @@ if (isset($_POST['Update']) && ($_POST['Update'] === 'Y')) {
</b>
</td>
</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">
<td colspan="2" class="option-other-heading"><b><?php echo GetMessage('CRM_API_VERSION'); ?></b></td>
</tr>