diff --git a/CHANGELOG.md b/CHANGELOG.md index 63172f96..4cd9b73f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## 2024-03-28 v.6.5.11 +- Исправлена ошибка дублирования скидок + ## 2024-03-18 v.6.5.10 - Добавлена валидация прав API ключа diff --git a/intaro.retailcrm/classes/general/RestNormalizer.php b/intaro.retailcrm/classes/general/RestNormalizer.php index 86b498de..03575ce8 100644 --- a/intaro.retailcrm/classes/general/RestNormalizer.php +++ b/intaro.retailcrm/classes/general/RestNormalizer.php @@ -6,8 +6,8 @@ class RestNormalizer { public $clear = true; - private $validation = array(); - private $originalValidation = array(); + private $validation = []; + private $originalValidation = []; private $server; /** @@ -55,9 +55,11 @@ class RestNormalizer $file = $server . $file; if (is_null($file) || is_file($file) === false || json_decode(file_get_contents($file)) === null - || $this->parseConfig($file) === false) { - RCrmActions::eventLog('RestNormalizer', 'intaro.retailcrm', 'Incorrect file normalize.'); - return false; + || $this->parseConfig($file) === false + ) { + RCrmActions::eventLog('RestNormalizer', 'intaro.retailcrm', 'Incorrect file normalize.'); + + return false; } if (is_string($data)) { @@ -72,6 +74,7 @@ class RestNormalizer if (!is_array($data) || count($data) < 1) { RCrmActions::eventLog('RestNormalizer', 'intaro.retailcrm', 'Incorrect data array.'); + return false; } @@ -88,7 +91,7 @@ class RestNormalizer */ final private function formatting($data, $skip = false) { - $formatted = array(); + $formatted = []; foreach ($data as $code => $value) { if (isset($this->validation[ $code ]) && $this->validation[ $code ]['type'] == 'skip') { @@ -99,13 +102,15 @@ class RestNormalizer $formatted[ $code ] = $this->formatting($value, true); } - if (empty($formatted[$code] && $formatted[$code] !== 0)) { + //Удаление пустых переменных, кроме значений равных 0 + if (empty($formatted[$code]) && $formatted[$code] !== 0 && $formatted[$code] !== 0.0) { if ($this->clear === true) { unset($formatted[ $code ]); } if (isset($this->validation[ $code ]['required']) && $this->validation[ $code ]['required'] === true) { - $formatted = array(); + $formatted = []; + break; } } @@ -174,7 +179,8 @@ class RestNormalizer $data = trim((string) $data); if (isset($validation['default']) && is_string($validation['default']) && trim($validation['default']) != '' - && ($data == '' || is_string($data) === false)) { + && ($data == '' || is_string($data) === false) + ) { $data = trim($validation['default']); } elseif ($data == '' || is_string($data) === false) { return null; @@ -302,7 +308,8 @@ class RestNormalizer } elseif (isset($validation['default']) && in_array($validation['default'], $validation['values']) === false) { return null; } elseif (in_array($data, $validation['values']) === false - && isset($validation['default']) && in_array($validation['default'], $validation['values'])) { + && isset($validation['default']) && in_array($validation['default'], $validation['values']) + ) { $data = $validation['default']; } elseif (in_array($data, $validation['values']) === false) { return null; @@ -327,10 +334,13 @@ class RestNormalizer if (is_array($value)) { $value = array_diff($value, array('', NULL)); } + $data[$APPLICATION->ConvertCharset($code, SITE_CHARSET, 'utf-8')] = is_array($value) - ? $this->multiConvert($value) - : $APPLICATION->ConvertCharset($value, SITE_CHARSET, 'utf-8'); + ? $this->multiConvert($value) + : $APPLICATION->ConvertCharset($value, SITE_CHARSET, 'utf-8') + ; } + return $data; } else { return $APPLICATION->ConvertCharset($data, SITE_CHARSET, 'utf-8'); diff --git a/intaro.retailcrm/classes/general/order/RetailCrmOrder_v5.php b/intaro.retailcrm/classes/general/order/RetailCrmOrder_v5.php index f11a4ec3..8d4f6486 100644 --- a/intaro.retailcrm/classes/general/order/RetailCrmOrder_v5.php +++ b/intaro.retailcrm/classes/general/order/RetailCrmOrder_v5.php @@ -328,6 +328,8 @@ class RetailCrmOrder } elseif ($product['BASE_PRICE'] >= $product['PRICE']) { $item['discountManualAmount'] = self::getDiscountManualAmount($product); $item['initialPrice'] = (double) $product['BASE_PRICE']; + $order['discountManualAmount'] = 0; + $order['discountManualPercent'] = 0; } else { $item['discountManualAmount'] = 0; $item['initialPrice'] = $product['PRICE']; diff --git a/intaro.retailcrm/description.ru b/intaro.retailcrm/description.ru index 5f4ca914..c8674623 100644 --- a/intaro.retailcrm/description.ru +++ b/intaro.retailcrm/description.ru @@ -1 +1 @@ -- Добавлена валидация прав API ключа +- Исправлена ошибка дублирования скидок diff --git a/intaro.retailcrm/install/version.php b/intaro.retailcrm/install/version.php index ce46eb02..06669763 100644 --- a/intaro.retailcrm/install/version.php +++ b/intaro.retailcrm/install/version.php @@ -1,6 +1,6 @@ '6.5.10', - 'VERSION_DATE' => '2024-03-18 14:30:00' + 'VERSION' => '6.5.11', + 'VERSION_DATE' => '2024-03-28 12:00:00' ];