Skip to main content

Invent Movement Journal Creation and Posting from excel

static void MovementJournalImportExcel(Args _args)
{
InventJournalTrans inventJournalTrans;
InventDim inventDim;
InventJournalTable inventJournalTable;
InventJournalCheckPost journalCheckPost;
InventJournalId journalId;
journalTableData journalTabledata;
InventBatch inventBatch;
InventBatch localInventBatch;
NumberSeq numberSeq;
NumberSequenceReference numberSequenceReference;
InventSerial inventSerial;
InventSerial localinventSerial;
int j,countno=0,i,k;
real Scarp;
FilenameOpen filename;

Sysexcelapplication excelapp=sysexcelapplication::construct();
sysexcelworksheet excelworksheet;
sysexcelrange excelrange;
sysexcelcells excelcells;
// comvariant cellvalue=new comvariant();
;

// Creating Journal Header
inventJournaltable.initValue();
inventJournalTable.JournalNameId = 'ERecover';
numberSeq = new NumberSeq();
numberSequenceReference = InventParameters::numRefInventJournalId();
numberseq = NumberSeq::newGetNum(numberSequenceReference);

inventJournalTable.JournalId = numberseq.num();
inventJournalTable.Description = InventJournalName::find(
inventJournalTable.JournalNameId).Description;
inventJournalTable.insert();

excelapp.workbooks().open('C:\\Documents and
Settings\\asrivastava\\Desktop\\ElectronicData_OnlyWstatus_10032007.xls');
excelworksheet=excelapp.worksheets().itemFromNum(1);
excelcells=excelworksheet.cells();

// Creating Unit Numbers
for(i=301;i<=5600;i++)
{
inventBatch.clear();
inventBatch.initValue();
inventBatch.itemId = excelcells.item(i,11).value().bStr();
inventBatch.inventBatchId = excelcells.item(i,1).value().bStr();
localinventBatch = InventBatch::find(inventBatch.inventBatchId,
inventBatch.itemId);

if(!localinventBatch)
{
  inventBatch.OakSerialUnit = excelcells.item(i,2).value().bStr();
  inventBatch.insert();
}
}

//Creating Appartment Numbers
for(k=1;k<=648;k++)
{
inventSerial.clear();
inventSerial.initValue();
inventSerial.InventSerialId = excelcells.item(k,8).value().bStr();
inventSerial.ItemId = excelcells.item(k,11).value().bStr();
localinventSerial = InventSerial::find(inventSerial.InventSerialId,
inventSerial.ItemId);

if(!localInventSerial)
{
inventSerial.ProdDate = systemDateGet();
inventSerial.insert();
}
}

// Creating Journal Lines
for(j=301;j<=5600;j++)
{
inventJournalTrans.clear();
inventJournalTrans.initValue();
inventJournalTrans.TransDate = systemDateGet();
inventJournalTrans.LedgerAccountIdOffset = "99999";
inventJournalTrans.JournalType = InventJournalType::Movement;
inventJournalTrans.JournalId = inventJournalTable.JournalId;
numberSeq = new NumberSeq();
numberSequenceReference =
InventParameters::numRefInventJournalVoucherId();
numberseq = NumberSeq::newGetNum(numberSequenceReference);

inventJournalTrans.Voucher = numberseq.num();
inventJournalTrans.ItemId = excelcells.item
(j,11).value().bStr();
// defaulting branch and item name
inventJournalTrans.CostAmount = InventTable::find(
inventJournalTrans.ItemId).inventTableModuleInvent().Price;
inventJournalTable = InventJournalTable::find(
inventJournalTrans.JournalId);
inventDim.InventLocationId = excelcells.item
(j,10).value().bStr();
inventDim.inventBatchId = excelcells.item
(j,1).value().bStr();
inventDim.inventSerialId = excelcells.item
(j,8).value().bStr();
inventJournalTrans.InventDimId =
inventDim::findOrCreate(inventDim).inventDimId;
inventJournalTrans.Qty = 1;
inventJournalTrans.AdjustmentNotes = "Initial Data Load";
inventJournalTrans.LineNum = j;

inventJournalTrans.insert();
}

excelapp.workbooks().item(1).saved(true);
excelapp.workbooks().close();

// Posting Journal
journalTableData = JournalTableData::newTable(inventJournalTable);
journalTableData.updateBlock
(JournalBlockLevel::InUse,JournalBlockLevel::None);
if (!infolog.num(Exception::Error))
{
infolog.clear(0);
journalCheckPost =
InventjournalCheckPost::newJournalCheckPost(JournalCheckPostType::Post,InventJournalTable);
journalCheckPost.parmAutoBlock(true);
journalCheckPost.run();
}
}

Popular posts from this blog

Dynamics Axapta: Sales Orders & Business Connector

Well, again folllowing my same idea of writting close to nothing and pasting code, I'll paste in some code to create a sales order from some basic data and the invoice it. I'll try to explain more in the future. AxaptaObject axSalesTable = ax.CreateAxaptaObject("AxSalesTable"); AxaptaRecord rcInventDim = ax.CreateAxaptaRecord("InventDim"); AxaptaRecord rcCustTable = ax.CreateAxaptaRecord("CustTable"); rcCustTable.ExecuteStmt("select * from %1 where %1.AccountNum == '" + MySalesOrderObject.CustAccount + "'"); if (MySalesOrderObject.CurrencyCode.Trim().Length == 0) MySalesOrderObject.CurrencyCode = rcCustTable.get_Field("Currency").ToString().Trim(); string sTaxGroup = rcCustTable.get_Field("taxgroup").ToString().Trim(); //set header level fields axSalesTable.Call("parmSalesName", MySalesOrderObject.SalesName.Trim()); axSalesTable.Call("parmCustAccount", M

Passing values between form and class

Class name is EmplDuplication and Form is EmplTable . void clicked() {    MenuFunction mf;    args args = new Args();    ;     args.record(EmplTable);     mf = new menufunction(identifierstr(EmplDuplication), MenuItemType::Action); mf.run(args); } Meanwhile, in the main() method of the EmplDuplication class, we need to put this Axapta x++ code to get the datasource: static void main(Args args) {     EmplDuplication EmplDuplication; EmplTable localEmplTable; ;     if(args.record().TableId == tablenum(EmplTable)) localEmplTable = args.record();     ... }