Какое-то время не формировались фискальные чеки по оплатам. Потребовалось создание чеков коррекции для таких оплат.
Требовалось выбрать завершенные оплаты за период, когда была сломана касса, и отобразить их как XML согласно
XML сохранялся в файл и загружался в личном кабинете .
Требовалось выбрать завершенные оплаты за период, когда была сломана касса, и отобразить их как XML согласно
XML сохранялся в файл и загружался в личном кабинете .
\Bitrix\Main\Loader::includeModule('sale');
$paymentTable = \Bitrix\Sale\PaymentCollection::getList([
'select' => ['ID', 'DATE_PAID', 'SUM'],
'filter' => [
'=PAID' => 'Y',
'PAY_SYSTEM_ID' => 12,
'>=DATE_PAID' => new \Bitrix\Main\Type\DateTime('15.07.2023 00:00:00'),
'<=DATE_PAID' => new \Bitrix\Main\Type\DateTime('30.10.2023 14:00:00'),
]
]);
$xml = '<?xml version="1.0" encoding="UTF-8"?>' . PHP_EOL . PHP_EOL;
$xml .= '<main>' . PHP_EOL;
while ($item = $paymentTable->fetch())
{
$timestamp = $item['DATE_PAID']->format('d.m.Y H:i:s');
$id = $item['ID'];
$sum = number_format((float)$item['SUM'], 2, '.', '');
$check = <<<XM L
<check>
<timestamp>$timestamp</timestamp>
<external_id>sell_correction_$id</external_id>
<is_bso>false</is_bso>
<correction>
<operation>sell_correction</operation>
<company>
<sno>usn_income</sno>
<inn>9718129333</inn>
<payment_address>https://example.ru/</payment_address>
</company>
<correction_info>
<type>self</type>
<base_date>2023-10-31</base_date>
<base_number>1</base_number>
<base_name>Акт</base_name>
</correction_info>
<payments>
<payment>
<type>1</type>
<sum>$sum</sum>
</payment>
</payments>
<vats>
<vat>
<type>none</type>
<sum>0</sum>
</vat>
</vats>
<cashier>Иванов Иван Иванович</cashier>
</correction>
</check>
XML;
$xml .= $check . PHP_EOL;
}
$xml .= '</main>';
echo $xml; |