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');
}
}
}
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
Post a Comment