try
{
ttsbegin;
salesFormLetterParmData = salesFormLetterParmData::newData(DocumentStatus::PackingSlip,VersioningUpdateType::Initial);
salesFormLetterParmData.parmOnlyCreateParmUpdate(true);
salesFormLetterParmData.createData(false);
salesParmUpdate = salesFormLetterParmData.parmParmUpdate();
salesParmTable = this.createParmTable("12/08/2025",salesTable, salesParmUpdate.ParmId,"Tracking1",_shipmentNumber);
this.createSalesParmLine(salesParmTable, _salesId, _shipmentNumber);
salesFormLetter_PackingSlip = SalesFormLetter::construct(DocumentStatus::PackingSlip);
salesFormLetter_PackingSlip.transDate('12/08/2025');
salesFormLetter_PackingSlip.proforma(NoYes::No);
salesFormLetter_PackingSlip.specQty(salesUpdate::PickingList);
salesFormLetter_PackingSlip.salesTable(salesTable);
salesFormLetter_PackingSlip.parmId(salesParmTable.ParmId);
salesFormLetter_PackingSlip.salesParmUpdate(salesFormLetterParmData.parmParmUpdate());
salesFormLetter_PackingSlip.runOperation();
ttscommit;
this.createSalesParmTrackingTable(salesParmTable,"Test-1,Test2", salesFormLetter_PackingSlip.parmJournalRecord());
}
catch
{
}
public SalesParmTable createParmTable(TransDate _packingSlipDate,SalesTable _salesTable, ParmId _parmId,ShipCarrierTrackingNum _trackingNumbers, str _shipmentNumber)
{
SalesParmTable salesParmTable;
salesParmTable.TransDate = _packingSlipDate;
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.ParmId = _parmId;
salesParmTable.ReturnPackingSlipId = _shipmentNumber;
salesParmTable.insert();
return salesParmTable;
}
public SalesParmLine createSalesParmLine(SalesParmTable _salesParmTable,SalesId _salesId, str _shipmentNumber)
{
SalesParmLine salesParmLine;
SalesParmSubLine salesParmSubLine;
SalesLine salesLine;
while select sum(SalesQty) from SalesLine group by ItemId where SalesLine.SalesId == _salesId
{
salesParmLine.clear();
salesParmLine.initFromSalesLine(salesLine);
salesParmLine.ParmId = _salesParmTable.ParmId;
salesParmLine.TableRefId = _salesParmTable.TableRefId;
salesParmLine.DeliverNow = 10;
salesParmLine.setQty(DocumentStatus::PackingSlip, false, true);
salesParmLine.setInventDeliverNow();
salesParmLine.setLineAmount(salesLine);
salesParmLine.Closed = NoYes::No;
salesParmLine.insert();
salesParmSubLine.clear();
salesParmSubLine.initValue();
salesParmSubLine.initFromSalesParmLine(salesParmLine);
salesParmSubLine.InventNow = salesParmLine.InventNow;
salesParmSubLine.DeliverNow = salesParmLine.DeliverNow;
salesParmSubLine.insert();
}
return salesParmLine;
}
public static void createSalesParmTrackingTable(SalesParmTable _salesParmTable,ShipCarrierTrackingNum _trackingNumbers,CustPackingSlipJour _custPackingSlipJour)
{
SalesParmPackingSlipTracking salesParmPackingSlipTracking;
SalesPackingSlipTrackingInformation salesPackingSlipTrackingInformation;
SalesParmTable salesParmTable = SalesParmTable::findSalesId( _salesParmTable.SalesId, _salesParmTable.ParmId);
container con = str2con(_trackingNumbers, ",");
for (int i = 1; i <= conLen(con); i++)
{
ttsbegin;
salesParmPackingSlipTracking.clear();
salesParmPackingSlipTracking.SalesParmId = salesParmTable.ParmId;
salesParmPackingSlipTracking.SalesParmTableRefId = salesParmTable.TableRefId;
salesParmPackingSlipTracking.TrackingNumber = conPeek(con, i);
salesParmPackingSlipTracking.insert();
salesPackingSlipTrackingInformation.clear();
salesPackingSlipTrackingInformation.SalesId = _salesParmTable.SalesId;
salesPackingSlipTrackingInformation.PackingSlipId = _custPackingSlipJour.PackingSlipId;
salesPackingSlipTrackingInformation.DeliveryDate = _salesParmTable.TransDate;
salesPackingSlipTrackingInformation.TrackingNumber = salesParmPackingSlipTracking.TrackingNumber;
salesPackingSlipTrackingInformation.TrackingURL = salesParmPackingSlipTracking.TrackingURL;
salesPackingSlipTrackingInformation.insert();
ttscommit;
}
}