1
0
Fork 0
mirror of synced 2025-04-03 13:53:32 +03:00

Compare commits

...

9 commits

15 changed files with 138 additions and 1200 deletions

View file

@ -49,7 +49,7 @@ jobs:
run: composer validate
- name: Cache Composer packages
id: composer-cache
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: vendor
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}

View file

@ -1,3 +1,31 @@
## 2025-03-26 v6.6.11
- Исправлена передача габаритов при выгрузке заказов по агенту
## 2025-03-25 v6.6.10
- Исправлено некорректное изменение статуса оплаты отмененных заказов
## 2025-03-04 v6.6.9
- Исправлено обновление модуля
## 2025-03-03 v6.6.8
- Исправлена ошибка экспорта дополнительных свойств товаров
## 2025-02-04 v6.6.7
- Исправлена ошибка установки модуля на PHP 8.0
## 2025-01-29 v6.6.6
- Поддержка нулевой закупочной стоимости при генерации каталога
## 2025-01-28 v6.6.5
- Исправлена ошибка редактирования интеграционных доставок при активации опции передачи статусов интеграционных оплат
## 2025-01-27 v6.6.4
- Исправлено некорректное удаление признака применения промокода при изменении состава заказа в CRM
## 2025-01-14 v6.6.3
- Исправлены ошибки при обновлении модуля
## 2025-01-14 v6.6.2
- Исправлена выгрузка архива заказов при установке модуля

View file

@ -1226,7 +1226,6 @@ class RetailCrmHistory
}
if (array_key_exists('discountTotal_sum', $collectItems[$product['offer']['externalId']])) {
$item->setField('CUSTOM_PRICE', 'Y');
$item->setField('DISCOUNT_NAME', '');
$item->setField('DISCOUNT_VALUE', '');
@ -1240,6 +1239,7 @@ class RetailCrmHistory
$price = self::truncate($price, 2);
}
$item->markFieldCustom('PRICE');
$item->setField('PRICE', $price);
}
@ -2062,7 +2062,7 @@ class RetailCrmHistory
$payment->delete();
}
if ($paymentsCrm['totalSumm'] == $paySumm) {
if ($paymentsCrm['totalSumm'] == $paySumm && $order->getField('CANCELED') !== 'Y') {
$order->setFieldNoDemand('PAYED', 'Y');
} else {
$order->setFieldNoDemand('PAYED', 'N');

View file

@ -358,7 +358,7 @@ class RetailCrmOrder
$order['items'][] = $item;
if ($send && $dimensionsSetting === 'Y') {
if ($dimensionsSetting === 'Y') {
$dimensions = RCrmActions::unserializeArrayRecursive($product['DIMENSIONS']);
if ($dimensions !== false) {
@ -370,7 +370,7 @@ class RetailCrmOrder
}
}
if ($send && $dimensionsSetting === 'Y') {
if ($dimensionsSetting === 'Y') {
$order['width'] = $width;
$order['height'] = $height;
$order['length'] = $length;

View file

@ -1 +1 @@
- Исправлена выгрузка архива заказов при установке модуля
- Исправлена передача габаритов при выгрузке заказов по агенту

View file

@ -39,7 +39,7 @@ if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/bitrix/php_interface/retailcrm/exp
}
global $PROFILE_ID;
$settingService = SettingsService::getInstance([], '', $PROFILE_ID);
$settingService = SettingsService::getInstance([], '', $PROFILE_ID ?? $profile_id);
$iblockPropertySku = [];
$iblockPropertySkuHl = [];
$iblockPropertyUnitSku = [];

View file

@ -57,7 +57,7 @@ class intaro_retailcrm extends CModule
$path = substr($path, 0, strlen($path) - strlen('/index.php'));
$this->INSTALL_PATH = $path;
require_once($path . '/version.php');
include($path . '/version.php');
$this->MODULE_VERSION = $arModuleVersion['VERSION'];
$this->MODULE_VERSION_DATE = $arModuleVersion['VERSION_DATE'];

View file

@ -1,6 +1,6 @@
<?php
$arModuleVersion = [
'VERSION' => '6.6.2',
'VERSION_DATE' => '2025-01-14 13:00:00'
'VERSION' => '6.6.11',
'VERSION_DATE' => '2025-03-26 16:00:00'
];

View file

@ -148,7 +148,7 @@ $MESS ['NO_INTEGRATION_PAYMENT'] = '(Non-integrated)';
$MESS ['ERR_CHECK_JOURNAL'] = 'Error while saving. Details in the event log';
$MESS ['ERROR_LINK_INTEGRATION_PAYMENT'] = 'Error in comparing integration payments';
$MESS ['ERROR_UPDATE_PAYMENT_TYPES_DELIVERY'] = 'Error when updating payment methods for deliveries';
$MESS ['INTEGRATION_PAYMENT_LABEL'] = 'When correlating CMS and CRM integration payments, a regular payment is created on the system side to which orders will be linked.';
$MESS ['INTEGRATION_PAYMENT_LABEL'] = 'When correlating CMS and CRM integration payments, a regular payment is created on the system side to which orders will be linked. <br> If you have integration deliveries in your CRM, then you need to enable the new payment method in the integration settings';
$MESS ['NEED_PERMISSIONS_REFERENCE_LABEL'] = 'For this option to work correctly, the api key needs access to receive and edit reference book';
$MESS ['FIX_UPLOAD_CUSTOMER_HEADER'] = 'Fix customer registration date in CRM';

View file

@ -213,7 +213,7 @@ $MESS ['NO_INTEGRATION_PAYMENT'] = '(Не интеграционная)';
$MESS ['ERR_CHECK_JOURNAL'] = 'Ошибка при сохранении. Подробности в журнале событий';
$MESS ['ERROR_LINK_INTEGRATION_PAYMENT'] = 'Ошибка при сопоставлении интеграционных оплат';
$MESS ['ERROR_UPDATE_PAYMENT_TYPES_DELIVERY'] = 'Ошибка при обновлении способов оплаты для доставок';
$MESS ['INTEGRATION_PAYMENT_LABEL'] = 'При сопоставлении интеграционных оплат CRM, на стороне системы создаётся обычная оплата, к которой будут привязываться заказы.';
$MESS ['INTEGRATION_PAYMENT_LABEL'] = 'При сопоставлении интеграционных оплат CRM, на стороне системы создаётся обычная оплата, к которой будут привязываться заказы. <br> Если в вашей CRM используются интеграционные доставки, новый способ оплаты необходимо вручную активировать в настройках интеграций.';
$MESS ['NEED_PERMISSIONS_REFERENCE_LABEL'] = 'Для корректной работы опции апи-ключу необходимы доступы на получение и редактирование справочников';
$MESS ['FIX_UPLOAD_CUSTOMER_HEADER'] = 'Исправление даты регистрации клиентов в CRM';

View file

@ -18,7 +18,7 @@ namespace Intaro\RetailCrm\Component;
*/
class Constants
{
public const MODULE_VERSION = '6.6.2';
public const MODULE_VERSION = '6.6.11';
public const CRM_PURCHASE_PRICE_NULL = 'purchasePrice_null';
public const BITRIX_USER_ID_PREFIX = 'bitrixUserId-';
public const CRM_USERS_MAP = 'crm_users_map';

View file

@ -163,7 +163,7 @@ class IcmlWriter
$this->writeOptionalSimpleElement('vatRate', $offer->vatRate);
$this->writeOptionalSimpleElement('weight', $offer->weight);
$this->writeOptionalSimpleElement('dimensions', $offer->dimensions);
$this->writeOptionalSimpleElement('purchasePrice', $offer->purchasePrice);
$this->writeOptionalPurchasePrice($offer->purchasePrice);
$this->writer->endElement();
}
@ -180,6 +180,16 @@ class IcmlWriter
}
}
/**
* Запись закупочной стоимости
*
* @param $value
*/
private function writeOptionalPurchasePrice($value): void
{
$this->writeSimpleElement('purchasePrice', !empty($value) ? $value : 0);
}
/**
* @param string $name
* @param $value

View file

@ -178,13 +178,12 @@ class SettingsService
$customProps = [];
foreach ($this->customPropList as $propsByCatalog) {
$customProps = array_merge($customProps, $propsByCatalog);
foreach ($propsByCatalog as $code => $value) {
$customProps[$code] = $value;
}
}
return [
...$this->defaultPropList,
...$customProps
];
return array_merge($this->defaultPropList, $customProps);
}
private function getPriceTypes()

View file

@ -877,7 +877,9 @@ if (isset($_POST['Update']) && ($_POST['Update'] === 'Y')) {
$substitutionPaymentList[$integrationPayment] = $codePayment;
foreach ($originalPayment['deliveryTypes'] as $codeDelivery) {
if (!isset($arResult['deliveryTypesList'][$codeDelivery])) {
if (!isset($arResult['deliveryTypesList'][$codeDelivery]) ||
isset($arResult['deliveryTypesList'][$codeDelivery]['integrationCode'])
) {
continue;
}

1259
intaro.retailcrm/updater.php Normal file → Executable file

File diff suppressed because it is too large Load diff