Столкнулся с проблемой при создании оплат к заказу через D7.
Иногда при создании оплат (оплат может быть несколько), полностью покрывающих сумму заказа, автоматически не проставляется флаг оплаты заказа.
Фрагмент кода привожу ниже:
<?
$order = Sale\Order::loadByAccountNumber(1000);
$paymentCollection = $order->getPaymentCollection();
$paySystemService = PaySystem\Manager::getObjectById(1);
// цикл для каждой из импортированных оплат
foreach ($importOrderPayments as $importOrderPayment)
{
$paymentExists = find_payment($importOrderPayment['Document']) // определяется существование оплаты: возвращается id оплаты, либо false если оплаты нет
if ($paymentExists === false) // оплаты не существует — создаём
{
$payment = $paymentCollection->createItem();
$payment->setFields([
'PAY_SYSTEM_ID' => $paySystemService->getField("PAY_SYSTEM_ID"),
'PAY_SYSTEM_NAME' => $paySystemService->getField("NAME"),
'DATE_PAID' => \Bitrix\Main\Type\DateTime::createFromTimestamp($importOrderPayment['Date']),
'SUM' => $importOrderPayment['FullPrice'],
'PAY_VOUCHER_NUM' => $importOrderPayment['Document'],
'PAY_VOUCHER_DATE' => \Bitrix\Main\Type\DateTime::createFromTimestamp($importOrderPayment['Date']),
'COMMENTS' => $importOrderPayment['Comments'],
'PAID' => 'Y',
'COMPANY_ID' => 1,
'UPDATED_1C' => 'Y'
]);
}
else // оплата существует - обновим
{
$payment = $paymentCollection->getItemById($paymentExists);
$payment->setFieldNoDemand('SUM', $importOrderPayment['FullPrice']);
$payment->setFields([
'PAY_SYSTEM_ID' => $paySystemService->getField("PAY_SYSTEM_ID"),
'PAY_SYSTEM_NAME' => $paySystemService->getField("NAME"),
'DATE_PAID' => \Bitrix\Main\Type\DateTime::createFromTimestamp($importOrderPayment['Date']),
'PAY_VOUCHER_NUM' => $importOrderPayment['Document'],
'PAY_VOUCHER_DATE' => \Bitrix\Main\Type\DateTime::createFromTimestamp($importOrderPayment['Date']),
'COMMENTS' => $importOrderPayment['Comments'],
'PAID' => 'Y',
'COMPANY_ID' => 1,
'UPDATED_1C' => 'Y'
]);
}
}
$order->save();
?>
Также читал форум Битрикса с похожей проблемой, но ответа так и не нашёл:
https://dev.1c-bitrix.ru/support/forum/forum6/topi...