We get this issue every time whenever statement doesn't posted properly . But actually statement posted , sales order posted, payment journal posted .
Here below the job which I used to release the reservation against retail statement .
static void removeReservation_RetailStatement(Args _args)
{
InventTrans InventTrans,InventTransDel ;
InventTransOrigin InventTransOrigin,InventTransOriginDel;
RetailTransactionSalesTrans RetailTransactionSalesTrans;
RetailTransactionTable RetailTransactionTable;
while select inventtrans
join InventTransOrigin
where inventtrans.InventTransOrigin == InventTransOrigin.RecId
&& InventTransOrigin.ReferenceCategory == InventTransType::Statement
&&
(inventtrans.StatusIssue == StatusIssue::ReservPhysical || inventtrans.StatusReceipt == StatusReceipt::Ordered)
join RetailTransactionSalesTrans
where RetailTransactionSalesTrans.inventTransId == InventTransOrigin.InventTransId
&& RetailTransactionSalesTrans.inventStatusSales == RetailInventStatusSales::Posted
&& RetailTransactionSalesTrans.transactionStatus == RetailEntryStatus::Posted
&& RetailTransactionSalesTrans.statementId == InventTransOrigin.ReferenceId
join RetailTransactionTable
where RetailTransactionTable.transactionId == RetailTransactionSalesTrans.transactionId
&& RetailTransactionTable.entryStatus == RetailEntryStatus::Posted
&& RetailTransactionTable.statementId != ''
&& RetailTransactionTable.salesOrderId != ''
&& RetailTransactionTable.invoiceId != ''
&& RetailTransactionTable.type == RetailTransactionType::Sales
&&
{
if (inventtrans.InventTransOrigin && InventTransOrigin.InventTransId)
{
delete_from InventTransDel
where InventTransDel.InventTransOrigin == inventtrans.InventTransOrigin;
delete_from InventTransOriginDel
where InventTransOriginDel.InventTransId == InventTransOrigin.InventTransId;
}
}
}