AX 2012 : Post consolidation of sales packing slip

public PackingSlipId postSalesPackingSlip(SalesId _sumSalesId,DMFDefinationGroupName _definitionGroupName = "",DMFExecutionId _executionId = "",InvoiceDate _ppInvoiceDate = systemDateGet())


{

SalesFormLetter salesFormLetter;

SalesParmUpdate salesParmUpdate;

SetEnumerator set;

CustPackingSlipJour custPackingSlipJour;

SysQueryRun chooseLines;

;
ttsbegin;
salesFormLetter = SalesFormLetter::construct(DocumentStatus::PackingSlip);
salesFormLetter.getLast();
salesFormLetter.resetParmListCommonCS();
salesFormLetter.transDate(_ppInvoiceDate);
salesFormLetter.proforma(false);

// Let's create the ParmId



salesFormLetter.createParmUpdateFromParmUpdateRecord(SalesFormletterParmData::initSalesParmUpdateFormletter(DocumentStatus::PackingSlip, salesFormLetter.pack()));
salesParmUpdate = salesFormLetter.salesParmUpdate();
salesParmUpdate.SpecQty = SalesUpdate::DeliverNow;
salesParmUpdate.Proforma = NoYes::No;
if(salesParmUpdate.SumBy == AccountOrder::Order)
{
salesParmUpdate.SumSalesId = _sumSalesId;
}
salesParmUpdate.update();
salesFormLetter.salesParmUpdate(salesParmUpdate);
chooseLines = this.calcQuery(_sumSalesId,_definitionGroupName,_executionId); // Custom Query
salesFormLetter.chooseLinesQuery(chooseLines);
salesFormLetter.reArrangeNow(true);

salesFormLetter.validateAll(false);
salesFormLetter.chooseLines();
salesFormLetter.run();
ttscommit;

set = Set::create(SysOperationHelper::base64Decode(salesFormLetter.getOutputContract().parmAllJournals())).getEnumerator();
while (set.moveNext())
{
custPackingSlipJour = set.current();

break;
}
return custPackingSlipJour.PackingSlipId;



}




// This is used in above method
public SysQueryRun calcQuery(SalesId _sumSalesId,DMFDefinationGroupName _definitionGroupName = "",DMFExecutionId _executionId = "")


{
Query qry = new Query(queryStr(SalesUpdate));

QueryBuildRange queryBuildRange;

QueryBuildDataSource queryBuildDataSourceImportDs;

 
QueryBuildDataSource queryBuildDataSource = qry.dataSourceTable(tableNum(SalesTable));

queryBuildDataSourceImportDs = queryBuildDataSource.addDataSource(tableNum(CustSalesInvoiceTableOCPMANU));

queryBuildRange = queryBuildDataSourceImportDs.addRange(fieldNum(CustSalesInvoiceTableOCPMANU,ExecutionId));

queryBuildRange.value(queryValue(_executionId)); // The current execution id is locked
queryBuildRange.status(RangeStatus::Locked);
queryBuildRange = queryBuildDataSourceImportDs.addRange(fieldNum(CustSalesInvoiceTableOCPMANU,DefinitionGroup));

queryBuildRange.value(queryValue(_definitionGroupName)); // The current DefinitionGroup is locked


queryBuildRange.status(RangeStatus::Locked);
queryBuildDataSourceImportDs.relations(false);

queryBuildDataSourceImportDs.joinMode(JoinMode::ExistsJoin);
queryBuildDataSourceImportDs.addLink(fieldNum(SalesTable,SalesId),fieldNum(CustSalesInvoiceTableOCPMANU,SalesId));

return new SysQueryRun(qry);


}

Comments