Нормализация цен в платежном модуле

Начиная с v22-3-4 в API добавлена функция нормализации цен в файле api/Payment.php:

public function normalize($order_id){

Чтобы добавить эту функцию в старые версии просто скопируйте ее код из свежего дистрибутива в ваш файл api/Payment.php.

Нормализация - это уменьшение стоимости товаров на скидку (если она есть в заказе) и с учетом копеек/округления, равномерно распределенную по всем товарам, причем таким образом, чтобы стоимость заказа и сумма позиций, передаваемых в фискальных данных полностью совпадали.

Получить товары с уже нормализоваными ценами из заказа № $order_id в платежном модуле очень просто:

$purchases = $fivecms->payment->normalize((int)$order_id);

т.о. для получения информации о товарах в заказе нужно использовать код выше вместо этого старого:

$purchases = $fivecms->orders->get_purchases(array('order_id' => intval($order_id)));

Важные нюансы по добавлению доставки в фискальные данные

  • Доставка добавляется как отдельный товар и скидка на нее не распространяется.
  • Не забывайте делать проверку на метку "оплачивается отдельно/separate_delivery" в информации о заказе:

if($order->delivery_id && !$order->separate_delivery && $order->delivery_price > 0) {
    $delivery = $fivecms->delivery->get_delivery($order->delivery_id);
    ...
}

Если доставка бесплатна или оплачивается отдельно, то информацию о ней не нужно передавать.

Связанные статьи

UPD: обновлено 09.05.2023

Еще нет своего сайта? Запустите интернет-магазин на платформе 5CMS - Все для продаж уже внутри!

Рекомендуем прочитать