How to create Movement Journal with Code X++ Sale Order

Sometime we need to make leftover quantity of Inventory at the time of Sale Order. I created a code to use to make a movement journal in Ax 2009.

void clicked()
{
   InventJournalTable journalTable;
   InventJournalTable InventJournalTable_;
   SalesTable SalesTable_;
InventJournalTrans journalTrans;
InventJournalTableData journalTableData;
InventJournalTransData journalTransData;
Salesline _Salesline;
//alesline Salesline;
InventDim _inventDim;
numberSeq numberSeq;
NumberSequenceReference NumberSequenceReference;
Counter cnt;
InventJournalCheckPost journalCheckPost = new InventJournalCheckPost();

;
if((SalesTable::find(Salesline.SalesId).RefJournalID) != '')
{
info(SalesTable::find(Salesline.SalesId).RefJournalID);
info('Journal is already Created');
}
else
{


select sum(RemainSalesPhysical) from _SalesLine where _SalesLine.SalesId == Salesline.SalesId;
if (_SalesLine.RemainSalesPhysical != 0)
{

select * from _SalesLine where _SalesLine.SalesId == Salesline.SalesId && _SalesLine.RemainInventPhysical != 0;

journalTableData = JournalTableData::newTable(journalTable);
journalTransData = journalTableData.journalStatic().newJournalTransData(journalTrans,journalTableData);

// Init JournalTable

journalTable.clear();

journalTable.JournalType = InventJournalType::Movement;
//ournalTable.JournalNameId = journalTableData.journalStatic().standardJournalNameId(journalTable.JournalType);
journalTable.JournalNameId = 'WVJ';
journalTableData.initFromJournalName(journalTableData.journalStatic().findJournalName(journalTable.JournalNameId));
journalTable.insert();

// Init JournalTrans
//elect firstonly purchline where purchline.PurchId == 'PO-1011-008509';

 ttsbegin;

  while (_salesLine.RecId != 0)
    {
journalTrans.clear();
//ournalTransData.create();
journalTrans.initValue();
journalTransData.initFromJournalTable();
 info(_salesLine.ItemId);
journalTrans.TransDate = today();
//journalTrans.LedgerAccountIdOffset = strRtrim(strLTrim(conpeek(line,14)));
journalTrans.JournalId = journalTable.JournalId;
journalTrans.ItemId = _salesLine.ItemId;
journalTrans.Qty = _salesLine.RemainSalesPhysical*-1;
//journalTrans.CostPrice = conpeek(line,9);
//journalTrans.CostAmount = conpeek(line,10);
journalTrans.Dimension[1] = _salesLine.Dimension[1];
journalTrans.Dimension[2] = _salesLine.Dimension[2];
journalTrans.Dimension[3] = _salesLine.Dimension[3];
JournalTrans.CatchWeightQty =0;
journalTrans.CatchWeightUnit = '';
journalTrans.LedgerAccountIdOffset  = '5-50-09-02-032';
// Dimension details
InventDim.InventSiteId = InventDim::find(_SalesLine.inventDimid).InventSiteId;
InventDim.inventLocationid = InventDim::find(_SalesLine.inventDimid).inventLocationid;
InventDim.inventBatchId = InventDim::find(_SalesLine.inventDimid).inventBatchId;
InventDim.wMSLocationId = InventDim::find(_SalesLine.inventDimid).wMSLocationId;
InventDim.InventSizeId = InventDim::find(_SalesLine.inventDimid).InventSizeId;
InventDim.InventColorId = InventDim::find(_SalesLine.inventDimid).InventColorId;
InventDim.inventSerialId = InventDim::find(_SalesLine.inventDimid).inventSerialId;

journalTrans.InventDimId = InventDim::findOrCreate(inventDim).inventDimId;
journalTransData.create();

next _salesLine;
}

 ttscommit;
 info(journalTable.JournalId);

 ttsBegin;
    select forUpdate InventJournalTable_ where InventJournalTable_.journalid == journalTable.journalid;
    InventJournalTable_.Remarks = Salesline.SalesId;
    InventJournalTable_.update();
ttsCommit;
 ttsBegin;
    select forUpdate SalesTable_ where SalesTable_.SalesID == Salesline.SalesId;
    SalesTable_.RefJournalID = journalTable.journalid;
    SalesTable_.update();
ttsCommit;
}


else

{
 info('There is no Delivery Remainder Qty, you cannot make Weight Varience Journal');
}
}
}

Comments

Popular posts from this blog

How to import data in Ax2009 from a CSV file

July 2017 update: Form Adaptors Replaced by Type Providers

X++ to C# Comparisons