Realizar un albaran por código da un bajo rendimiento
Buenas,
Usamos axapta 3.0 SP3 y tuve que hacer un desarrollo para hacer albaranes automáticos de
unos pedidos de venta usando la clase SalesFormLetter_PackingSlip. El problema es que va muy lento, sin embargo si en vez de contabilizar albaranes contabilizo factura va muy rápido usando SalesFormLetter_Invoice, el código es el siguiente:
salestable.NumberSequenceGroup = '';
LetterPS = SalesFormLetter::construct(_dstatus);
LetterPS.createParmUpdate();
LetterPS.createParmTable(salesParmTable, salesTable);
salesparmtable.Transdate = stt.Dia;
salesparmtable.Ticket = noyes::No;
salesParmTable.insert();
while select sl
where sl.SalesId == salesTable.SalesId &&
sl.SalesStatus == salesstatus::Backorder//!= (salesstatus::Delivered || salesstatus::Invoiced)
{
//desbloqueo
this.desbloqueo(sl.ItemId);
//end desbloqueo
salesParmLine.ParmId = salesParmTable.ParmId;
salesParmLine.InitFromSalesLine(sl);
salesParmLine.DeliverNow = sl.QtyOrdered;
if(sl.QtyOrdered < 0)
{
salesParmLine.RemainBefore = sl.QtyOrdered;
salesParmLine.InventNow = sl.QtyOrdered;
salesParmLine.RemainBeforeInvent = sl.QtyOrdered;
}
salesParmLine.setQty(DocumentStatus::PackingSlip, false, true);
salesParmLine.setLineAmount();
salesParmLine.insert();
}
LetterPS.printFormLetter(false); // print ?
//letter.printTicket() = false;
LetterPS.specQty (SalesUpdate::All); // what to update?
LetterPS.transDate(stt.Dia); // update da
try
{
LetterPS.run();
} catch(exception::Info || exception::Error)
{
box::info(strfmt("error pedido alb: %1",_salesid));
continue;
}
//Tambien he usado esta variante usando el constructor sin exito, también va lento
//letterPS = SalesFormLetter::construct(DocumentStatus::PackingSlip,true);
//letterPS.update(SalesTable,stt.Dia, SalesUpdate::ALL, AccountOrder::None, false, false);
//codigo lento
Hilo iniciado por
julio sierra
hace 10 años
0