static void ItemJourUpload(Args _args)
{
#AviFiles
FilenameOpen filename;
dialogField dialogFilename,DialogJournalType;
LedgerDimensionAccount mainAccDimension;
int jounaltype;
Dialog dialog= new Dialog("Excel Upoad");
Container excelCont[], financialDimensions;
RecId offsetledger;
//InventTable inventTable;
InventTableModule inventtablemodule;
int rowIdx;
Counter linesImported;
int lastRow,countr;
boolean ok = true;
LedgerDimensionAccount ledgerDimension;
InventTable inventTable;
InventJournalName inventJournalName;
InventJournalTable inventJournalTable;
InventJournalTrans inventJournalTrans;
NumberSeq numberSeq;
Container con,defDimension;
FileIOPermission permission;
TextIO textIO, textIO1;
//Dialog dialog;
DialogField dialogField;
//Filename Filename;
LineNum lineNumber = 1;
CustAccount custAccNum;
InventJournalId journalNum;
int dimCount,dimCount2;
LedgerJournalACType AccountType;
InventDim inventDim;
InventDimId dimId;
InventJournalTrans_IN InventJournalTrans_IN;
//#File
Description c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c20,c21,c22,c23;
str input;
SysExcelApplication application;
SysExcelWorkBooks workBooks;
SysExcelWorkSheets workSheets;
SysExcelWorkSheet workSheet;
SysExcelCells cells;
//dhiBusinessType dhiBusinessType;
PurchaseType purchaseType;
DocumentStatus documentStatus;
VersioningDocumentState documentState;
SysOperationProgress progress;
struct struct= new Struct();
#define.CurrentVersion(1)
#localmacro.CurrentList
filename
#endmacro
#Excel
#define.Star('*')
#define.Space(' ')
// convert into str from excel cell value
str COMVariant2Str(COMVariant _cv, int _decimals = 0, int _characters = 0, int _separator1 = 0, int _separator2 = 0)
{
switch (_cv.variantType())
{
case (COMVariantType::VT_BSTR):
return _cv.bStr();
case (COMVariantType::VT_R4):
return num2str(_cv.float(),_characters,_decimals,_separator1,_separator2);
case (COMVariantType::VT_R8):
return num2str(_cv.double(),_characters,_decimals,_separator1,_separator2);
case (COMVariantType::VT_DECIMAL):
return num2str(_cv.decimal(),_characters,_decimals,_separator1,_separator2);
case (COMVariantType::VT_DATE):
return date2str(_cv.date(),123,2,1,2,1,4);
case (COMVariantType::VT_EMPTY):
return "";
default:
throw error(strfmt("@SYS26908", _cv.variantType()));
}
return "";
}
// Find last row from excel
int findLastRow(SysExcelWorkSheet _workSheet)
{
SysExcelRange range;
;
range = _workSheet.cells().range(#ExcelTotalRange);
try
{
// Finds the row where the first contents is found.
range = range.find(#Star, null, #xlFormulas, #xlWhole, #xlByRows, #xlPrevious);
}
catch (Exception::Error)
{
error("@SYS59926");
return 0;
}
if (range)
{
return range.row();
}
else
{
return 0;
}
}
;
dialogFilename = dialog.addField(extendedtypestr(FilenameOpen));
// DialogJournalType = dialog.addField(enumstr(God_JournalToUpload),"Journal Type");
dialog.filenameLookupFilter(["@SYS28576",#XLS,#Xlsx]);
dialog.filenameLookupTitle("Upload from Excel");
dialogFilename.value(filename);
if(!dialog.run())
return;
filename = dialogFilename.value();
// ttsbegin;
application = SysExcelApplication::construct();
workBooks = application.workbooks();
workBooks.open(filename,0,true);
workSheets = workBooks.item(1).worksheets();
// this.importExcel("Sheet1");
input = "Sheet1";
workSheet = workSheets.itemFromNum(1);//.itemFromName(input);
cells = workSheet.cells();
lastRow = findLastRow(workSheet);
rowIdx = 2;
progress = new SysOperationProgress();
progress.setCaption("Excel Importing");
progress.setTotal(lastRow);
progress.setAnimation(#AviTransfer);
setprefix("Excel Import");
try{
while (rowIdx <= lastRow)
{
setPrefix(strfmt("Excel Row: %1", rowIdx));
c1 = COMVariant2Str(cells.item(rowIdx,1).value()); //a//JournalId
c2 = COMVariant2Str(cells.item(rowIdx,2).value());//b//TransDate
c3 = COMVariant2Str(cells.item(rowIdx,3).value());//c//Voucher no
c4 = COMVariant2Str(cells.item(rowIdx,4).value());//d//itemid
c5 = COMVariant2Str(cells.item(rowIdx,5).value());//e//costprice
c6 = COMVariant2Str(cells.item(rowIdx,6).value());//f//qty
c7 = COMVariant2Str(cells.item(rowIdx,7).value());//g//costamount
c8 = COMVariant2Str(cells.item(rowIdx,8).value());//h
c9 = COMVariant2Str(cells.item(rowIdx,9).value());//i
c10 = COMVariant2Str(cells.item(rowIdx,10).value());//j
c11 = COMVariant2Str(cells.item(rowIdx,11).value());//k
c12 = COMVariant2Str(cells.item(rowIdx,12).value());//l
c13 = COMVariant2Str(cells.item(rowIdx,13).value());//m
c14 = COMVariant2Str(cells.item(rowIdx,14).value());//n
c15 = COMVariant2Str(cells.item(rowIdx,15).value());//o
c16 = COMVariant2Str(cells.item(rowIdx,16).value());//p
//c17 = COMVariant2Str(cells.item(rowIdx,17).value());//q
//c18 = COMVariant2Str(cells.item(rowIdx,18).value());//r
//c19 = COMVariant2Str(cells.item(rowIdx,19).value());//s
//c20 = COMVariant2Str(cells.item(rowIdx,20).value());//t
//c21 = COMVariant2Str(cells.item(rowIdx,21).value());//u
//c22 = COMVariant2Str(cells.item(rowIdx,22).value());//v
linesImported++;
// excelCont[linesImported] = conins(excelCont[linesImported] , 1 ,c1, c2, c3, c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19); // records inserted into container
//journalNum = conPeek(con,1);
ttsBegin;
InventJournaltrans.clear();
select InventJournaltable
where InventJournaltable.JournalId == c1;
select inventJournalName
where inventJournalName.JournalNameId == InventJournaltable.JournalNameId;
// numberSeq = NumberSeq::newGetVoucherFromId(inventJournalName.VoucherNumberSequenceTable);
InventJournaltrans.initValue();
InventJournaltrans.JournalId = InventJournaltable.JournalId;
InventJournaltrans.initFromInventJournalTable(InventJournaltable);
InventJournaltrans.LineNum = lineNumber;
// info(int2str(lineNumber));
InventJournaltrans.TransDate = str2Date(c2,123); //Date;
// InventJournaltrans.Voucher = numberSeq.voucher();
InventJournaltrans.Voucher = c3;//conPeek(con,3);
//inventJournalTrans.ProjId = c3;
//InventJournaltrans.initFromProjTable(ProjTable::find(InventJournaltrans.ProjId));
InventJournaltrans.ItemId = c4;
InventJournaltrans.modifiedField(fieldNum(InventJournaltrans,ItemId));
select inventTable where inventTable.ItemId == InventJournaltrans.ItemId;//this.ItemId;
select inventtablemodule where inventtablemodule.ItemId == InventJournaltrans.ItemId;
//inventtablemodule.UnitId = "NOS";
inventtablemodule.itemid = InventJournaltrans.ItemId;
inventtablemodule.ModuleType = ModuleInventPurchSales::Invent;
//inventtablemodule.insert();
//InventJournaltrans.ProjCategoryId = c5;
inventJournalTrans.CostPrice = any2real(c5);
InventJournaltrans.Qty = any2real(c6);
InventJournaltrans.modifiedField(fieldNum(InventJournaltrans,Qty));
InventJournaltrans.CostAmount = any2real(c7);
//InventJournaltrans.CostPrice = 0;//InventJournaltrans.CostAmount /InventJournaltrans.Qty;
//InventJournaltrans.ProjUnitID = c8;
InventJournaltrans.PriceUnit = 1;
//InventJournaltrans.CostAmount = Currency::amount(InventJournaltrans.Qty * (InventJournaltrans.CostPrice / InventJournaltrans.PriceUnit));
//dimCount = 0;
////if(c3)
////{
////dimCount++;
////defDimension = ["Project",c3];
////}
//if(c9)
//{
//dimCount++;
//defDimension += ["Region",c9];
//}
//if(c10)
//{
//dimCount++;
//defDimension += ["Branch",C10];
//}
//if(c19)
//{
//dimCount++;
//defDimension += ["Division",C19];
//}
////if(c12)
////{
////dimCount++;
////defDimension += ["Worker",c12];
////}
////defDimension = [dimCount] + defDimension;
////info(strFmt("%1",con2Str(defDimension)));
//struct = new Struct();
//
//if(c14)
//{
//struct.add("Branch",c14);
//}
//if(c16)
//{
//struct.add("Division",c16);
//}
//if(c13)
//{
//struct.add("Region",c13);
//}
//if(c15)
//{
//struct.add("Department",c15);
//}
//if(struct.fields())
//{
//InventJournaltrans.DefaultDimension = God_GetDimension::createDefaultDimension(struct);
//}
inventDim.InventSiteId = c13;
inventDim.InventLocationId = c14;
//inventDim.wMSLocationId = c7;
//inventDim.inventBatchId = c17;
dimId = inventDim::findOrCreate(inventDim).inventDimId;
inventJournalTrans.inventDimId = dimId;
// inventDim.initValue();
// inventDim.initFromInventLocation(inventDim.inventLocation());
//InventJournaltrans.initValue();
//if(c9 || c10 || c19)
//{
//InventJournaltrans.DefaultDimension = AxdDimensionUtil::getDimensionAttributeValueSetId(defDimension);
//}
//InventJournaltrans.ProjSalesCurrencyId = c16;
//InventJournaltrans.ProjLinePropertyId = c17;
//mainAccDimension = DimensionStorage::getDefaultAccountForMainAccountNum(c12);
//ledgerDimension = DimensionDefaultingService::serviceCreateLedgerDimension(mainAccDimension);
//
//InventJournaltrans.LedgerDimension = ledgerDimension;//InventJournaltable.LedgerDimension;
InventJournaltrans.insert();
lineNumber++;
InventJournalTrans_IN.clear();
InventJournalTrans_IN.initValue();
InventJournalTrans_IN.InventJournalTrans = InventJournaltrans.RecId;
InventJournalTrans_IN.insert();
//info(strFmt("%1,%2,%3,%4",InventJournaltable.JournalId,InventJournaltable.JournalId,
//InventJournaltable.JournalType,InventJournaltrans.JournalId));
//journalTableData = JournalTableData::newTable(journalTable);
//journalTransData = journalTableData.journalStatic().newJournalTransData(journalTrans,journalTableData);
//
//// Init JournalTable
//
//journalTable.clear();
//
//journalTable.JournalId = journalTableData.nextJournalId();
//journalTable.JournalType = InventJournalType::Movement;
//journalTable.JournalNameId = journalTableData.journalStatic().standardJournalNameId(journalTable.JournalType);
//
//journalTableData.initFromJournalName(journalTableData.journalStatic().findJournalName(journalTable.JournalNameId));
//
//// Init JournalTrans
//select firstonly inventTable;
//for(cnt=1;cnt<10;cnt++)
//{
//journalTrans.clear();
//journalTransData.initFromJournalTable();
//
//journalTrans.TransDate = systemdateget() + 1 div 2;
//journalTrans.ItemId = inventTable.ItemId;
//journalTrans.Qty = 100;
//journalTrans.CostAmount = 100;
//
//// Dimension details
//
//inventDim.InventLocationId = 'GW';
//journalTrans.InventDimId = InventDim::findOrCreate(inventDim).inventDimId;
//
//journalTransData.create();
//
//
//
//}
//
//journalTable.insert();
ttsCommit;
rowIdx++;
progress.setText("Importing " + c1);
progress.setCount(linesImported);
}
}
catch
{
error(strFmt("error in line %1",rowIdx));
}
info(strFmt("done! Imported %1 records",rowIdx-2));
}
{
#AviFiles
FilenameOpen filename;
dialogField dialogFilename,DialogJournalType;
LedgerDimensionAccount mainAccDimension;
int jounaltype;
Dialog dialog= new Dialog("Excel Upoad");
Container excelCont[], financialDimensions;
RecId offsetledger;
//InventTable inventTable;
InventTableModule inventtablemodule;
int rowIdx;
Counter linesImported;
int lastRow,countr;
boolean ok = true;
LedgerDimensionAccount ledgerDimension;
InventTable inventTable;
InventJournalName inventJournalName;
InventJournalTable inventJournalTable;
InventJournalTrans inventJournalTrans;
NumberSeq numberSeq;
Container con,defDimension;
FileIOPermission permission;
TextIO textIO, textIO1;
//Dialog dialog;
DialogField dialogField;
//Filename Filename;
LineNum lineNumber = 1;
CustAccount custAccNum;
InventJournalId journalNum;
int dimCount,dimCount2;
LedgerJournalACType AccountType;
InventDim inventDim;
InventDimId dimId;
InventJournalTrans_IN InventJournalTrans_IN;
//#File
Description c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c20,c21,c22,c23;
str input;
SysExcelApplication application;
SysExcelWorkBooks workBooks;
SysExcelWorkSheets workSheets;
SysExcelWorkSheet workSheet;
SysExcelCells cells;
//dhiBusinessType dhiBusinessType;
PurchaseType purchaseType;
DocumentStatus documentStatus;
VersioningDocumentState documentState;
SysOperationProgress progress;
struct struct= new Struct();
#define.CurrentVersion(1)
#localmacro.CurrentList
filename
#endmacro
#Excel
#define.Star('*')
#define.Space(' ')
// convert into str from excel cell value
str COMVariant2Str(COMVariant _cv, int _decimals = 0, int _characters = 0, int _separator1 = 0, int _separator2 = 0)
{
switch (_cv.variantType())
{
case (COMVariantType::VT_BSTR):
return _cv.bStr();
case (COMVariantType::VT_R4):
return num2str(_cv.float(),_characters,_decimals,_separator1,_separator2);
case (COMVariantType::VT_R8):
return num2str(_cv.double(),_characters,_decimals,_separator1,_separator2);
case (COMVariantType::VT_DECIMAL):
return num2str(_cv.decimal(),_characters,_decimals,_separator1,_separator2);
case (COMVariantType::VT_DATE):
return date2str(_cv.date(),123,2,1,2,1,4);
case (COMVariantType::VT_EMPTY):
return "";
default:
throw error(strfmt("@SYS26908", _cv.variantType()));
}
return "";
}
// Find last row from excel
int findLastRow(SysExcelWorkSheet _workSheet)
{
SysExcelRange range;
;
range = _workSheet.cells().range(#ExcelTotalRange);
try
{
// Finds the row where the first contents is found.
range = range.find(#Star, null, #xlFormulas, #xlWhole, #xlByRows, #xlPrevious);
}
catch (Exception::Error)
{
error("@SYS59926");
return 0;
}
if (range)
{
return range.row();
}
else
{
return 0;
}
}
;
dialogFilename = dialog.addField(extendedtypestr(FilenameOpen));
// DialogJournalType = dialog.addField(enumstr(God_JournalToUpload),"Journal Type");
dialog.filenameLookupFilter(["@SYS28576",#XLS,#Xlsx]);
dialog.filenameLookupTitle("Upload from Excel");
dialogFilename.value(filename);
if(!dialog.run())
return;
filename = dialogFilename.value();
// ttsbegin;
application = SysExcelApplication::construct();
workBooks = application.workbooks();
workBooks.open(filename,0,true);
workSheets = workBooks.item(1).worksheets();
// this.importExcel("Sheet1");
input = "Sheet1";
workSheet = workSheets.itemFromNum(1);//.itemFromName(input);
cells = workSheet.cells();
lastRow = findLastRow(workSheet);
rowIdx = 2;
progress = new SysOperationProgress();
progress.setCaption("Excel Importing");
progress.setTotal(lastRow);
progress.setAnimation(#AviTransfer);
setprefix("Excel Import");
try{
while (rowIdx <= lastRow)
{
setPrefix(strfmt("Excel Row: %1", rowIdx));
c1 = COMVariant2Str(cells.item(rowIdx,1).value()); //a//JournalId
c2 = COMVariant2Str(cells.item(rowIdx,2).value());//b//TransDate
c3 = COMVariant2Str(cells.item(rowIdx,3).value());//c//Voucher no
c4 = COMVariant2Str(cells.item(rowIdx,4).value());//d//itemid
c5 = COMVariant2Str(cells.item(rowIdx,5).value());//e//costprice
c6 = COMVariant2Str(cells.item(rowIdx,6).value());//f//qty
c7 = COMVariant2Str(cells.item(rowIdx,7).value());//g//costamount
c8 = COMVariant2Str(cells.item(rowIdx,8).value());//h
c9 = COMVariant2Str(cells.item(rowIdx,9).value());//i
c10 = COMVariant2Str(cells.item(rowIdx,10).value());//j
c11 = COMVariant2Str(cells.item(rowIdx,11).value());//k
c12 = COMVariant2Str(cells.item(rowIdx,12).value());//l
c13 = COMVariant2Str(cells.item(rowIdx,13).value());//m
c14 = COMVariant2Str(cells.item(rowIdx,14).value());//n
c15 = COMVariant2Str(cells.item(rowIdx,15).value());//o
c16 = COMVariant2Str(cells.item(rowIdx,16).value());//p
//c17 = COMVariant2Str(cells.item(rowIdx,17).value());//q
//c18 = COMVariant2Str(cells.item(rowIdx,18).value());//r
//c19 = COMVariant2Str(cells.item(rowIdx,19).value());//s
//c20 = COMVariant2Str(cells.item(rowIdx,20).value());//t
//c21 = COMVariant2Str(cells.item(rowIdx,21).value());//u
//c22 = COMVariant2Str(cells.item(rowIdx,22).value());//v
linesImported++;
// excelCont[linesImported] = conins(excelCont[linesImported] , 1 ,c1, c2, c3, c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19); // records inserted into container
//journalNum = conPeek(con,1);
ttsBegin;
InventJournaltrans.clear();
select InventJournaltable
where InventJournaltable.JournalId == c1;
select inventJournalName
where inventJournalName.JournalNameId == InventJournaltable.JournalNameId;
// numberSeq = NumberSeq::newGetVoucherFromId(inventJournalName.VoucherNumberSequenceTable);
InventJournaltrans.initValue();
InventJournaltrans.JournalId = InventJournaltable.JournalId;
InventJournaltrans.initFromInventJournalTable(InventJournaltable);
InventJournaltrans.LineNum = lineNumber;
// info(int2str(lineNumber));
InventJournaltrans.TransDate = str2Date(c2,123); //Date;
// InventJournaltrans.Voucher = numberSeq.voucher();
InventJournaltrans.Voucher = c3;//conPeek(con,3);
//inventJournalTrans.ProjId = c3;
//InventJournaltrans.initFromProjTable(ProjTable::find(InventJournaltrans.ProjId));
InventJournaltrans.ItemId = c4;
InventJournaltrans.modifiedField(fieldNum(InventJournaltrans,ItemId));
select inventTable where inventTable.ItemId == InventJournaltrans.ItemId;//this.ItemId;
select inventtablemodule where inventtablemodule.ItemId == InventJournaltrans.ItemId;
//inventtablemodule.UnitId = "NOS";
inventtablemodule.itemid = InventJournaltrans.ItemId;
inventtablemodule.ModuleType = ModuleInventPurchSales::Invent;
//inventtablemodule.insert();
//InventJournaltrans.ProjCategoryId = c5;
inventJournalTrans.CostPrice = any2real(c5);
InventJournaltrans.Qty = any2real(c6);
InventJournaltrans.modifiedField(fieldNum(InventJournaltrans,Qty));
InventJournaltrans.CostAmount = any2real(c7);
//InventJournaltrans.CostPrice = 0;//InventJournaltrans.CostAmount /InventJournaltrans.Qty;
//InventJournaltrans.ProjUnitID = c8;
InventJournaltrans.PriceUnit = 1;
//InventJournaltrans.CostAmount = Currency::amount(InventJournaltrans.Qty * (InventJournaltrans.CostPrice / InventJournaltrans.PriceUnit));
//dimCount = 0;
////if(c3)
////{
////dimCount++;
////defDimension = ["Project",c3];
////}
//if(c9)
//{
//dimCount++;
//defDimension += ["Region",c9];
//}
//if(c10)
//{
//dimCount++;
//defDimension += ["Branch",C10];
//}
//if(c19)
//{
//dimCount++;
//defDimension += ["Division",C19];
//}
////if(c12)
////{
////dimCount++;
////defDimension += ["Worker",c12];
////}
////defDimension = [dimCount] + defDimension;
////info(strFmt("%1",con2Str(defDimension)));
//struct = new Struct();
//
//if(c14)
//{
//struct.add("Branch",c14);
//}
//if(c16)
//{
//struct.add("Division",c16);
//}
//if(c13)
//{
//struct.add("Region",c13);
//}
//if(c15)
//{
//struct.add("Department",c15);
//}
//if(struct.fields())
//{
//InventJournaltrans.DefaultDimension = God_GetDimension::createDefaultDimension(struct);
//}
inventDim.InventSiteId = c13;
inventDim.InventLocationId = c14;
//inventDim.wMSLocationId = c7;
//inventDim.inventBatchId = c17;
dimId = inventDim::findOrCreate(inventDim).inventDimId;
inventJournalTrans.inventDimId = dimId;
// inventDim.initValue();
// inventDim.initFromInventLocation(inventDim.inventLocation());
//InventJournaltrans.initValue();
//if(c9 || c10 || c19)
//{
//InventJournaltrans.DefaultDimension = AxdDimensionUtil::getDimensionAttributeValueSetId(defDimension);
//}
//InventJournaltrans.ProjSalesCurrencyId = c16;
//InventJournaltrans.ProjLinePropertyId = c17;
//mainAccDimension = DimensionStorage::getDefaultAccountForMainAccountNum(c12);
//ledgerDimension = DimensionDefaultingService::serviceCreateLedgerDimension(mainAccDimension);
//
//InventJournaltrans.LedgerDimension = ledgerDimension;//InventJournaltable.LedgerDimension;
InventJournaltrans.insert();
lineNumber++;
InventJournalTrans_IN.clear();
InventJournalTrans_IN.initValue();
InventJournalTrans_IN.InventJournalTrans = InventJournaltrans.RecId;
InventJournalTrans_IN.insert();
//info(strFmt("%1,%2,%3,%4",InventJournaltable.JournalId,InventJournaltable.JournalId,
//InventJournaltable.JournalType,InventJournaltrans.JournalId));
//journalTableData = JournalTableData::newTable(journalTable);
//journalTransData = journalTableData.journalStatic().newJournalTransData(journalTrans,journalTableData);
//
//// Init JournalTable
//
//journalTable.clear();
//
//journalTable.JournalId = journalTableData.nextJournalId();
//journalTable.JournalType = InventJournalType::Movement;
//journalTable.JournalNameId = journalTableData.journalStatic().standardJournalNameId(journalTable.JournalType);
//
//journalTableData.initFromJournalName(journalTableData.journalStatic().findJournalName(journalTable.JournalNameId));
//
//// Init JournalTrans
//select firstonly inventTable;
//for(cnt=1;cnt<10;cnt++)
//{
//journalTrans.clear();
//journalTransData.initFromJournalTable();
//
//journalTrans.TransDate = systemdateget() + 1 div 2;
//journalTrans.ItemId = inventTable.ItemId;
//journalTrans.Qty = 100;
//journalTrans.CostAmount = 100;
//
//// Dimension details
//
//inventDim.InventLocationId = 'GW';
//journalTrans.InventDimId = InventDim::findOrCreate(inventDim).inventDimId;
//
//journalTransData.create();
//
//
//
//}
//
//journalTable.insert();
ttsCommit;
rowIdx++;
progress.setText("Importing " + c1);
progress.setCount(linesImported);
}
}
catch
{
error(strFmt("error in line %1",rowIdx));
}
info(strFmt("done! Imported %1 records",rowIdx-2));
}
No comments:
Post a Comment