środa, 18 lipca 2012

Odbudowa zamówień sprzedaży na podstawie SalesTableDelete

static void SBR_restoreDeletedSO(Args _args)
{
    SalesTableDelete    salesTableDelete;
    SalesLineDelete     salesLineDelete;
    SalesTable          salesTable;
    SalesLine           salesLine;
    ;

    SalesTableDelete = SalesTableDelete::find('AUF@/12/25015', true);

    if (!SalesTableDelete)
        throw error('Deleted sales order not found!');

    ttsbegin;
        
        if (salesTableDelete.Cancelled == Voided::Voided)
        {
            salesTable  = conpeek(salesTableDelete.SalesTable, 1);
            salesTable.insert();

            while select forupdate salesLineDelete where salesLineDelete.SalesId == salesTableDelete.SalesId
            {
                salesLine = conpeek(salesLineDelete.SalesLine, 1);

                // this two lines allow to recreate inventory transactions
                salesLine.InventTransId = '';
                salesLine.RecId = 0;

                salesLine.insert();
            }

            salesTableDelete.delete();
        }

    ttscommit;
}