Задать вопрос
  • BITRIX. Как поменять тип чека?

    @fman2 Автор вопроса
    В общем, друзья. Проблема решена. Не слушайте "Битрикс разработчиков" в этой теме, проблема решается в самом битриксе.
    AddEventHandler("sale", "OnCheckCollateDocuments", "CustomChangeCheckType");
    function CustomChangeCheckType($entities)
    {
        foreach ($entities as $entity) {
            if ($entity instanceof \Bitrix\Sale\Payment) {
                $order = $entity->getCollection()->getOrder();
                if ($entity->isPaid())
                {
                    $related = [];
    
                    foreach ($entity->getCollection() as $payment)
                    {
                        if ($payment->getId() != $entity->getId())
                        {
                            $related[\Bitrix\Sale\Cashbox\Check::PAYMENT_TYPE_ADVANCE][] = $payment;
                        }
                    }
    
                    foreach ($order->getShipmentCollection() as $shipment)
                    {
                        if (!$shipment->isSystem())
                        {
                            $related[\Bitrix\Sale\Cashbox\Check::SHIPMENT_TYPE_NONE][] = $shipment;
                        }
                    }
    
                    return new \Bitrix\Main\EventResult(
                        \Bitrix\Main\EventResult::SUCCESS,
                        [['TYPE' => \Bitrix\Sale\Cashbox\FullPrepaymentCheck::getType(), 'ENTITIES' => [$entity], 'RELATED_ENTITIES' => $related]]
                    );
                }
            }
        }
        return new \Bitrix\Main\EventResult(
            \Bitrix\Main\EventResult::ERROR,
            []
        );
    }

    Это нужно писать в init.php
    Я не битрикс разработчик, от увиденного кода битрикса мне стало плохо, все через одно место, как и код выше.
    Ответ написан
    1 комментарий