У меня данная проблема возникала несколько раз на проектах, виной было:
1. пост редактирование заказа администратором магазина (добавили товар в отгрузку - забыли указать нужное кол-во)
- в данном случае нужно в отгрузке проверить все ли товары в заказе находятся в отгрузке (т.е. открываем редактирование отгрузки и проверяем), обычно если нажать кнопку "Добавить товар", то будет список товаров которые есть в заказе но нет в отгрузке.
- внимательно обращаем внимание на кол-во: в столбцах "кол-во" и "кол-во к отгрузке", значение должно быть одинаковым. (ну понятно, если в товаре несколько отгрузок, то ситуация будет другой)
2. некорректное округление товара из-за применения скидок.
тут можно посмотреть настройки в Настройки - Настройки продукта - Настройки модулей - Интернет магазин.
в разделе "Служебные настройки" смотрим настройки параметра "Точность округления при расчетах", обычно помогает установка ".00"
Ну и округление можно для цены настроить с точностью 0.01. Настраивается тут Магазин - Настройки - Цены - Округление
Поскольку заказы есть достаточно большие по набору номенклатуры, чтобы найти проблему, я вносил временные изменения в ядро и смотрел результат расхождения. (Ниже мини инструкция)
Вообще такая проблема встречается не только в Битрикс, но и в других ПП - везде поиск проблемы в заказе - не дружелюбный. Было бы удобно, если разработчики сделали более подробный вывод ошибок. Например, какая сумма с какой не сходится и какие там суммы, отличается кол-во товаров в отгрузке,....
Может кому-то пригодится (помогает когда товаров в чеке много, но будьте аккуратны, сделайте копию файла перед внесением изменений):
1. /bitrix/modules/sale/lib/cashbox/check.php
2. строка 883, нужна функция function isCorrectSum - эта функция проверяет корректность суммы товаров из отгрузки с тем какая сумма поступила по оплате.
3. в цикле я добавлял вывод названия товара и его сумму
было:[CODE]foreach ($data['PRODUCTS'] as $item)
$productSum += $item['SUM'];[/CODE]стало:[CODE]foreach ($data['PRODUCTS'] as $item){
$productSum += $item['SUM'];
echo("Название ".$item['NAME'].", сумма".$item['SUM']."\n");
}
....
echo("Сумма товаров в отгрузке = ".$productSum.", Сумма оплаты ".$paymentSum); //вставляем в конце функции перед return
die(); //прерываем дальнейшее выполнение кода
return abs($productSum - $paymentSum) < $eps;
[/CODE]4. Открываем заказ с проблемным чеком
5. открываем devtool в браузере, переходим на закладку сеть, очищаем все что там сейчас есть
6. Запускаем из заказа печать чека
7. Смотрим результат вызова скрипта sale_order_ajax.php
А дальше сравниваем, где сумма заказа не сходится.
как-то так в общем
1. пост редактирование заказа администратором магазина (добавили товар в отгрузку - забыли указать нужное кол-во)
- в данном случае нужно в отгрузке проверить все ли товары в заказе находятся в отгрузке (т.е. открываем редактирование отгрузки и проверяем), обычно если нажать кнопку "Добавить товар", то будет список товаров которые есть в заказе но нет в отгрузке.
- внимательно обращаем внимание на кол-во: в столбцах "кол-во" и "кол-во к отгрузке", значение должно быть одинаковым. (ну понятно, если в товаре несколько отгрузок, то ситуация будет другой)
2. некорректное округление товара из-за применения скидок.
тут можно посмотреть настройки в Настройки - Настройки продукта - Настройки модулей - Интернет магазин.
в разделе "Служебные настройки" смотрим настройки параметра "Точность округления при расчетах", обычно помогает установка ".00"
Ну и округление можно для цены настроить с точностью 0.01. Настраивается тут Магазин - Настройки - Цены - Округление
Поскольку заказы есть достаточно большие по набору номенклатуры, чтобы найти проблему, я вносил временные изменения в ядро и смотрел результат расхождения. (Ниже мини инструкция)
Вообще такая проблема встречается не только в Битрикс, но и в других ПП - везде поиск проблемы в заказе - не дружелюбный. Было бы удобно, если разработчики сделали более подробный вывод ошибок. Например, какая сумма с какой не сходится и какие там суммы, отличается кол-во товаров в отгрузке,....
Может кому-то пригодится (помогает когда товаров в чеке много, но будьте аккуратны, сделайте копию файла перед внесением изменений):
1. /bitrix/modules/sale/lib/cashbox/check.php
2. строка 883, нужна функция function isCorrectSum - эта функция проверяет корректность суммы товаров из отгрузки с тем какая сумма поступила по оплате.
3. в цикле я добавлял вывод названия товара и его сумму
было:[CODE]foreach ($data['PRODUCTS'] as $item)
$productSum += $item['SUM'];[/CODE]стало:[CODE]foreach ($data['PRODUCTS'] as $item){
$productSum += $item['SUM'];
echo("Название ".$item['NAME'].", сумма".$item['SUM']."\n");
}
....
echo("Сумма товаров в отгрузке = ".$productSum.", Сумма оплаты ".$paymentSum); //вставляем в конце функции перед return
die(); //прерываем дальнейшее выполнение кода
return abs($productSum - $paymentSum) < $eps;
[/CODE]4. Открываем заказ с проблемным чеком
5. открываем devtool в браузере, переходим на закладку сеть, очищаем все что там сейчас есть
6. Запускаем из заказа печать чека
7. Смотрим результат вызова скрипта sale_order_ajax.php
А дальше сравниваем, где сумма заказа не сходится.
как-то так в общем