Hi All,
I written a code now its creating packing slip for each sales order seperately, but i need to generate a single packing slip for all the sales order.These sales orders are for same customer only.Where to i modify the code.Pls anyone help me on this.
Thanks in advance
class ITCommercialInvoicePackingSlip
{
public static boolean check;
public static void main(Args _args)
{
ITCommercialInvoicePackingSlip iTCommercialInvoicePackingSliploc = new ITCommercialInvoicePackingSlip();
// boolean get = iTCommercialInvoicePackingSliploc.validate(_args);
//if(get == true)
iTCommercialInvoicePackingSliploc.validate1(_args);
if(check == true)
{
SalesFormLetter_PackingSlip salesFormLetter_PackingSlip;
salesFormLetter salesFormLetter;
salesFormletterParmData salesFormLetterParmData;
SalesParmTable salesParmTable;
SalesParmLine salesParmLine;
salesLine salesLine, salesLineUpd;
salesParmUpdate salesParmUpdate;
SalesTable salestable;
ITCommercialOverview iTCommercialOverview,iTCommercialOverviewloc,iTCommercialOverviewupdate;
ITCommercialInvoiceLine iTCommercialInvoiceLine,iTCommercialInvoiceLineloc,iTCommercialInvoiceLineCheck,iTCommercialInvoiceLineUpdate;
CustPackingSlipJour custPackingSlipJour,custPackingSlipJourloc;
CustPackingSlipTrans custPackingSlipTrans;
// TransDate PackingSlipDate = //str2Date(dataContract.parmPackinSlipDate(), 213);
RecId recid = _args.record().RecId;
select iTCommercialOverview
// where iTCommercialOverview.Status == ITCommercialInvoiceStatus::Open
where iTCommercialOverview.RecId == recid;
// {
//salestable= SalesTable::find(iTCommercialOverview.salesid, true);
//if(!salestable)
//{
if(iTCommercialOverview.SalesId == "Multiple")
{
while select iTCommercialInvoiceLineloc
where iTCommercialInvoiceLineloc.CommercialInvoice == iTCommercialOverview.CommercialInvoice
if(iTCommercialInvoiceLineCheck.SalesId!=iTCommercialInvoiceLineloc.SalesId)
{
salestable= SalesTable::find(iTCommercialInvoiceLineloc.salesid, true);
iTCommercialInvoiceLineCheck.SalesId = iTCommercialInvoiceLineloc.SalesId;
if (iTCommercialOverview && iTCommercialOverview.Status == ITCommercialInvoiceStatus::Open)
{
ttsbegin;
salesFormLetterParmData = salesFormletterParmData::newData(DocumentStatus::PackingSlip, VersioningUpdateType::Initial);
salesFormLetterParmData.parmOnlyCreateParmUpdate(true);
salesFormLetterParmData.createData(false);
salesParmUpdate = salesFormLetterParmData.parmParmUpdate();
salesParmTable.clear();
salesParmTable.TransDate = iTCommercialOverview.InvoiceDate;
salesParmTable.Ordering = DocumentStatus::PackingSlip;
salesParmTable.ParmJobStatus = ParmJobStatus::Waiting;
salesParmTable.salesId = salesTable.salesId;
salesParmTable.salesName = salesTable.salesName;
salesParmTable.DeliveryName = salesTable.DeliveryName;
salesParmTable.DeliveryPostalAddress = salesTable.DeliveryPostalAddress;
salesParmTable.CustAccount = salesTable.CustAccount;
salesParmTable.CurrencyCode = salesTable.CurrencyCode;
salesParmTable.InvoiceAccount = salesTable.InvoiceAccount;
salesParmTable.InventSiteId = salesTable.InventSiteId;
salesParmTable.ParmId = salesParmUpdate.ParmId;
salesParmTable.insert();
while select iTCommercialInvoiceLine where iTCommercialInvoiceLine.CommercialInvoice == iTCommercialOverview.CommercialInvoice
{
salesline = SalesLine::find(iTCommercialInvoiceLine.SalesId,iTCommercialInvoiceLine.LineNum);
salesParmLine.InitFromsalesLine(salesLine);
salesParmLine.DeliverNow = iTCommercialInvoiceLine.SalesQty;
salesParmLine.ParmId = salesParmTable.ParmId;
salesParmLine.TableRefId = salesParmTable.TableRefId;
salesParmLine.LineNum = iTCommercialInvoiceLine.LineNum;
salesParmLine.LineAmount = iTCommercialInvoiceLine.LineAmount;
salesParmLine.ITNetWeight = iTCommercialInvoiceLine.NetWeight;
salesParmLine.setQty(DocumentStatus::PackingSlip, false, true);
salesParmLine.insert();
}
salesFormLetter_PackingSlip = salesFormLetter::construct(DocumentStatus::PackingSlip);
salesFormLetter_PackingSlip.transDate(today());
salesFormLetter_PackingSlip.proforma(false);
salesFormLetter_PackingSlip.specQty(salesUpdate::PackingSlip);
salesFormLetter_PackingSlip.salesTable(salestable);
salesFormLetter_PackingSlip.parmId(salesParmTable.ParmId);
salesFormLetter_PackingSlip.sumBy(AccountOrder::Account);
//salesFormLetter.update(salesTable,systemDateGet(),SalesUpdate::PackingSlip,AccountOrder::Account,NoYes::No, NoYes::No, NoYes::No);
salesFormLetter_PackingSlip.salesParmUpdate(salesFormLetterParmData.parmParmUpdate());
salesFormLetter_PackingSlip.run();
// salesFormLetter.update(salesTable,systemDateGet(),SalesUpdate::PackingSlip,AccountOrder::None,NoYes::No, NoYes::No, NoYes::No);
if (salesFormLetter_PackingSlip.parmJournalRecord().TableId == tableNum(custPackingSlipJour))
{
custPackingSlipJour = salesFormLetter_PackingSlip.parmJournalRecord();
while select forupdate custPackingSlipTrans
where custPackingSlipTrans.SalesId == custPackingSlipJour.SalesId
&& custPackingSlipTrans.PackingSlipId == custPackingSlipJour.PackingSlipId
{
custPackingSlipTrans.CommercialInvoice = iTCommercialOverview.CommercialInvoice;
custPackingSlipTrans.CommercialDate = iTCommercialOverview.InvoiceDate;
custPackingSlipTrans.update();
}
select forupdate custPackingSlipJourloc
where custPackingSlipJourloc.RecId == custPackingSlipJour.RecId;
custPackingSlipJourloc.CommercialInvoice = iTCommercialOverview.CommercialInvoice;
custPackingSlipJourloc.CommercialDate = iTCommercialOverview.InvoiceDate;
custPackingSlipJourloc.update();
info(strFmt('Sales Order -%1 delivered with packing slip :%2 ',custPackingSlipJourloc.SalesId,custPackingSlipJourloc.PackingSlipId));
select forupdate iTCommercialOverviewupdate
where iTCommercialOverviewupdate.CommercialInvoice == iTCommercialOverview.CommercialInvoice;
iTCommercialOverviewupdate.Status = ITCommercialInvoiceStatus::Delivered;
iTCommercialOverviewupdate.PakcingSlipNo = custPackingSlipJour.PackingSlipId;
iTCommercialOverviewupdate.PackingSlipDate = custPackingSlipJour.DeliveryDate;
iTCommercialOverviewupdate.update();
while select forupdate iTCommercialInvoiceLineUpdate
where iTCommercialInvoiceLineUpdate.CommercialInvoice ==iTCommercialOverview.CommercialInvoice
{
select custPackingSlipTrans
where custPackingSlipTrans.SalesId == iTCommercialInvoiceLineUpdate.SalesId
&& custPackingSlipTrans.ItemId == iTCommercialInvoiceLineUpdate.ItemId
&& custPackingSlipTrans.PackingSlipId == custPackingSlipJour.PackingSlipId;
iTCommercialInvoiceLineUpdate.DeliveredQty = custPackingSlipTrans.Qty;
iTCommercialInvoiceLineUpdate.update();
}
}
ttscommit;
}
}
}
// }
else
{
salestable= SalesTable::find(iTCommercialOverview.salesid, true);
if (iTCommercialOverview && iTCommercialOverview.Status == ITCommercialInvoiceStatus::Open)
{
ttsbegin;
salesFormLetterParmData = salesFormletterParmData::newData(DocumentStatus::PackingSlip, VersioningUpdateType::Initial);
salesFormLetterParmData.parmOnlyCreateParmUpdate(true);
salesFormLetterParmData.createData(false);
salesParmUpdate = salesFormLetterParmData.parmParmUpdate();
salesParmTable.clear();
salesParmTable.TransDate = iTCommercialOverview.InvoiceDate;
salesParmTable.Ordering = DocumentStatus::PackingSlip;
salesParmTable.ParmJobStatus = ParmJobStatus::Waiting;
salesParmTable.salesId = salesTable.salesId;
salesParmTable.salesName = salesTable.salesName;
salesParmTable.DeliveryName = salesTable.DeliveryName;
salesParmTable.DeliveryPostalAddress = salesTable.DeliveryPostalAddress;
salesParmTable.CustAccount = salesTable.CustAccount;
salesParmTable.CurrencyCode = salesTable.CurrencyCode;
salesParmTable.InvoiceAccount = salesTable.InvoiceAccount;
salesParmTable.InventSiteId = salesTable.InventSiteId;
salesParmTable.ParmId = salesParmUpdate.ParmId;
salesParmTable.insert();
while select iTCommercialInvoiceLine where iTCommercialInvoiceLine.CommercialInvoice == iTCommercialOverview.CommercialInvoice
{
salesline = SalesLine::find(iTCommercialInvoiceLine.SalesId,iTCommercialInvoiceLine.LineNum);
salesParmLine.InitFromsalesLine(salesLine);
salesParmLine.DeliverNow = iTCommercialInvoiceLine.SalesQty;
salesParmLine.ParmId = salesParmTable.ParmId;
salesParmLine.TableRefId = salesParmTable.TableRefId;
salesParmLine.LineNum = iTCommercialInvoiceLine.LineNum;
salesParmLine.LineAmount = iTCommercialInvoiceLine.LineAmount;
salesParmLine.ITNetWeight = iTCommercialInvoiceLine.NetWeight;
salesParmLine.setQty(DocumentStatus::PackingSlip, false, true);
salesParmLine.insert();
}
salesFormLetter_PackingSlip = salesFormLetter::construct(DocumentStatus::PackingSlip);
salesFormLetter_PackingSlip.transDate(today());
salesFormLetter_PackingSlip.proforma(false);
salesFormLetter_PackingSlip.specQty(salesUpdate::PackingSlip);
salesFormLetter_PackingSlip.salesTable(salestable);
//salesFormLetter_PackingSlip.acc(salestable);
salesFormLetter_PackingSlip.parmId(salesParmTable.ParmId);
salesFormLetter_PackingSlip.salesParmUpdate(salesFormLetterParmData.parmParmUpdate());
salesFormLetter_PackingSlip.run();
// salesFormLetter.update(salesTable,systemDateGet(),SalesUpdate::PackingSlip,AccountOrder::None,NoYes::No, NoYes::No, NoYes::No);
if (salesFormLetter_PackingSlip.parmJournalRecord().TableId == tableNum(custPackingSlipJour))
{
custPackingSlipJour = salesFormLetter_PackingSlip.parmJournalRecord();
while select forupdate custPackingSlipTrans
where custPackingSlipTrans.SalesId == custPackingSlipJour.SalesId
&& custPackingSlipTrans.PackingSlipId == custPackingSlipJour.PackingSlipId
{
custPackingSlipTrans.CommercialInvoice = iTCommercialOverview.CommercialInvoice;
custPackingSlipTrans.CommercialDate = iTCommercialOverview.InvoiceDate;
custPackingSlipTrans.update();
}
select forupdate custPackingSlipJourloc
where custPackingSlipJourloc.RecId == custPackingSlipJour.RecId;
custPackingSlipJourloc.CommercialInvoice = iTCommercialOverview.CommercialInvoice;
custPackingSlipJourloc.CommercialDate = iTCommercialOverview.InvoiceDate;
custPackingSlipJourloc.update();
info(strFmt('Sales Order -%1 delivered with packing slip :%2 ',custPackingSlipJourloc.SalesId,custPackingSlipJourloc.PackingSlipId));
select forupdate iTCommercialOverviewupdate
where iTCommercialOverviewupdate.CommercialInvoice == iTCommercialOverview.CommercialInvoice;
iTCommercialOverviewupdate.Status = ITCommercialInvoiceStatus::Delivered;
iTCommercialOverviewupdate.PakcingSlipNo = custPackingSlipJour.PackingSlipId;
iTCommercialOverviewupdate.PackingSlipDate = custPackingSlipJour.DeliveryDate;
iTCommercialOverviewupdate.update();
while select forupdate iTCommercialInvoiceLineUpdate
where iTCommercialInvoiceLineUpdate.CommercialInvoice ==iTCommercialOverview.CommercialInvoice
{
select custPackingSlipTrans
where custPackingSlipTrans.SalesId == iTCommercialInvoiceLineUpdate.SalesId
&& custPackingSlipTrans.ItemId == iTCommercialInvoiceLineUpdate.ItemId
&& custPackingSlipTrans.PackingSlipId == custPackingSlipJour.PackingSlipId;
iTCommercialInvoiceLineUpdate.DeliveredQty = custPackingSlipTrans.Qty;
iTCommercialInvoiceLineUpdate.update();
}
}
ttscommit;
}
}
FormDataSource fds;
Object calleform;
calleform = _args.caller();
fds = _args.record().datasource();
if(calleform)
{
fds.refresh();
fds.research(true);
}
}
}
public boolean validate(Args args)
{
boolean ret = true;
RecId recid = args.record().RecId;
iTCommercialOverview iTCommercialOverviewCheck;
ITCommercialInvoiceLine iTCommercialInvoiceLine;
InventTrans inventTrans;
SalesLine salesLine;
select iTCommercialOverviewCheck
where iTCommercialOverviewCheck.RecId == recid;
while select iTCommercialInvoiceLine
where iTCommercialInvoiceLine.CommercialInvoice == iTCommercialOverviewCheck.CommercialInvoice
{
salesline = SalesLine::find(iTCommercialInvoiceLine.SalesId,iTCommercialInvoiceLine.LineNum);
select inventTrans
where inventTrans.ItemId == salesline.ItemId
&& inventTrans.StatusIssue == StatusIssue::ReservPhysical
&& inventTrans.Qty == -iTCommercialInvoiceLine.SalesQty;
if(!inventTrans)
{
info(strFmt('Order Number %1, Line Number %2, Item %3 is not reserved•The posting should not be initiated until the full quantities reserved.'
,iTCommercialInvoiceLine.SalesId,iTCommercialInvoiceLine.LineNum,iTCommercialInvoiceLine.ItemId));
ret = false;
}
if(salesline.RemainSalesPhysical < iTCommercialInvoiceLine.SalesQty)
{
info(strFmt('Order Number %1, Line Number %2, Item %3 Qty difference '
,iTCommercialInvoiceLine.SalesId,iTCommercialInvoiceLine.LineNum,iTCommercialInvoiceLine.ItemId,iTCommercialInvoiceLine.SalesQty - salesline.RemainSalesPhysical ));
ret = false;
}
}
return ret;
}
public void validate1(Args args)
{
check = true;
RecId recid = args.record().RecId;
iTCommercialOverview iTCommercialOverviewCheck;
ITCommercialInvoiceLine iTCommercialInvoiceLine;
InventTrans inventTrans;
SalesLine salesLine;
select iTCommercialOverviewCheck
where iTCommercialOverviewCheck.RecId == recid;
while select iTCommercialInvoiceLine
where iTCommercialInvoiceLine.CommercialInvoice == iTCommercialOverviewCheck.CommercialInvoice
{
salesline = SalesLine::find(iTCommercialInvoiceLine.SalesId,iTCommercialInvoiceLine.LineNum);
//select inventTrans
// where inventTrans.ItemId == salesline.ItemId
// && inventTrans.StatusIssue == StatusIssue::ReservPhysical
// && inventTrans.Qty == -iTCommercialInvoiceLine.SalesQty;
//if(!inventTrans)
//{
// info(strFmt('Order Number %1, Line Number %2, Item %3 is not reserved•The posting should not be initiated until the full quantities reserved.'
// ,iTCommercialInvoiceLine.SalesId,iTCommercialInvoiceLine.LineNum,iTCommercialInvoiceLine.ItemId));
// check = false;
//}
real qtycheck;
qtycheck = salesLine.reservedPhysical();
if(qtycheck < iTCommercialInvoiceLine.SalesQty)
{
info(strFmt('Order Number %1, Line Number %2, Item %3 is not reserved•The posting should not be initiated until the full quantities reserved.'
,iTCommercialInvoiceLine.SalesId,iTCommercialInvoiceLine.LineNum,iTCommercialInvoiceLine.ItemId));
check = false;
}
if(salesline.RemainSalesPhysical < iTCommercialInvoiceLine.SalesQty)
{
info(strFmt('Order Number %1, Line Number %2, Item %3 Qty difference '
,iTCommercialInvoiceLine.SalesId,iTCommercialInvoiceLine.LineNum,iTCommercialInvoiceLine.ItemId,iTCommercialInvoiceLine.SalesQty - salesline.RemainSalesPhysical ));
check = false;
}
}
// return ret;
}
}