на сайте стоит математическое округление
кроме того дополнительно для округления используется событие
Код |
---|
OnBeforeSaleBasketItemSetFieldHandler(Event $event)
{
$name = $event->getParameter('NAME');
$value = $event->getParameter('VALUE');
if ($name === 'PRICE') {
$value = round($value, 0, PHP_ROUND_HALF_UP);
$event->addResult(
new EventResult(
EventResult::SUCCESS, ['VALUE' => $value]
)
);
}
} |
Но иногда когда клиент создает заказ, производит оплату и оплата приходит на сайт, происходит пересчет суммы заказа(вот это мне не понятно для чего) и по какой-то причине происходит округление в другую сторону. В итоге он оплатил 10р., а получаем в заказе сумму 9 или наоборот. и на эту сумму пробивается чек.
пример по истории изменения заказа
Код |
---|
Изменение элемента корзины PRICE: 441 OLD_PRICE: 442.0000; QUANTITY: 1.0000 OLD_QUANTITY: ; PRODUCT_ID: 181837 OLD_PRODUCT_ID: ; VAT_RATE: 0.0000 OLD_VAT_RATE: ; DISCOUNT_VALUE: OLD_DISCOUNT_VALUE:
Изменение стоимости заказа Стоимость заказа изменилась с 1 522 на 1 521
Изменение заказа PRICE: 1521 OLD_PRICE: 1522.0000; SUM_PAID: 1521 OLD_SUM_PAID: 1522.00; PERSON_TYPE_ID: 1; CANCELED: N; STATUS_ID: N; MARKED: N; USER_ID: 100125; EXTERNAL_ORDER: N
Обновление заказа
Оплата заказа Оплата "Платежная карта" (#214201) произведена
Сохранение оплаты |
товары идут по суммам:
цена - конечная цена со всеми скидками
299 - 191
399 - 255
690 - 441(изначально при создании заказа была 442)
600 - 384
390 - 250
применены скидки 15% и 500р(купон)
получается
2378 - 1521,3(после оплаты округлен заказ до 1521)
Кто-нибудь может объяснить из-за чего это происходит?