static void
Journal(Args _args)
{
str mBusinessUnit,mLOB, mCLOB, mDept,
mLocation, mOrigin,mProject, mEmployee,mIntercompany;
str oBusinessUnit,oLOB, oCLOB, oDept,
oLocation, oOrigin, oProject, oEmployee,oIntercompany;
str invoice;
str TDSgroup,salesTaxGroup,itemSalesTax;
date documentdate;
Voucher
voucher;
TaxOnItem TaxOnItem;
TaxGroupData TaxGroupData;
real TaxAmount = 0,
TaxAmount_1 = 0;
TaxValue TaxValue = 0, TaxValue_1 = 0;
SysExcelApplication application;
SysExcelWorkbooks workbooks;
SysExcelWorkbook workbook;
SysExcelWorksheets worksheets;
SysExcelWorksheet worksheet;
SysExcelCells cells;
COMVariantType type;
Name name;
FileName filename;
str
path;
str
filetype;
int
i;
real
Debit,Credit;
NoYes
NoYes;
FileIoPermission perm;
DocuValue docuvalue;
#define.FileMode('W')
TransDate transdate;
str
Currency,accountType,Accountnumb,text,OffsetAccounttype,offsetAccountnum;
ledgerJournalTrans ledgerJournalTrans;
ledgerJournalTable ledgerJournalTable;
Numbersequencetable numSeqTable;
NumberSeq numberseq;
LedgerJournalACType LedgerJournalACType;
container
cont1,cont2,ledgerDimension,offSetAcctPattern;
DimensionDefault DimensionDefault; //EDT
DimensionDynamicAccount
ledgerDim, offsetledgerDim;
int row = 0,cnt;
filename = "D:\\jourimport1sample-APINV-DEV(1).xlsx";
perm = new
FileIOPermission(filename, #FileMode);
perm.assert();
application =
SysExcelApplication::construct();
workbooks = application.workbooks();
try
{
workbooks.open(filename);
}
catch
(Exception::Error)
{
throw
error("@SYS19358");
}
workbook
= workbooks.item(1);
worksheets
= workbook.worksheets();
worksheet
= worksheets.itemFromNum(1);
cells
= worksheet.cells();
row = 1;
startLengthyOperation();
//progress.setCaption("@KPM1054");
//progress.setAnimation(#AviUpdate);
do
{
row++;
//progress.setText(strfmt("@KPM1055",
row));
transdate = cells.item(row, 1).value().date();
Currency = cells.item(row, 2).value().bStr();
accountType = cells.item(row, 3).value().bStr();
AccountNumb = strFmt("%1",
cells.item(row, 4).value().bStr());
switch(cells.item(row,
4).value().variantType())
{
case
COMVariantType::VT_BSTR:
AccountNumb = strFmt("%1",
cells.item(row, 4).value().bStr());
break;
case
COMVariantType::VT_DECIMAL, COMVariantType::VT_R4, COMVariantType::VT_R8:
AccountNumb = strFmt("%1",
any2int(cells.item(row, 4).value().double()));
break;
case
COMVariantType::VT_I1, COMVariantType::VT_I2, COMVariantType::VT_I4:
AccountNumb = strFmt("%1",
cells.item(row, 4).value().int());
break;
case
COMVariantType::VT_UI1, COMVariantType::VT_UI2, COMVariantType::VT_UI4:
AccountNumb = strFmt("%1",
cells.item(row, 4).value().uLong());
break;
case
COMVariantType::VT_EMPTY:
AccountNumb = '';
break;
default:
throw
error(strfmt("@KPM1056", cells.item(row+1, 1).value().variantType()));
}
mbusinessUnit = cells.item(row, 5).value().bStr();
mLOB = cells.item(row, 6).value().bStr();
mCLOB = cells.item(row, 7).value().bStr();
mDept = cells.item(row, 8).value().bStr();
mLocation = cells.item(row, 9).value().bStr();
mOrigin = cells.item(row, 10).value().bStr();
mProject = cells.item(row, 11).value().bStr();
mEmployee = cells.item(row, 12).value().bStr();
mIntercompany = cells.item(row, 13).value().bStr();
//invoice = cells.item(row, 14).value().bStr();
Text = cells.item(row, 15).value().bStr();
Debit = any2real(cells.item(row,
16).value().double());
Credit = any2real(cells.item(row,
17).value().double());
OffsetAccounttype = cells.item(row, 18).value().bStr();
switch(cells.item(row,
19).value().variantType())
{
case
COMVariantType::VT_BSTR:
offsetAccountnum = strFmt("%1",
cells.item(row, 19).value().bStr());
break;
case
COMVariantType::VT_DECIMAL, COMVariantType::VT_R4, COMVariantType::VT_R8:
offsetAccountnum = strFmt("%1",
any2int(cells.item(row, 19).value().double()));
break;
case
COMVariantType::VT_I1, COMVariantType::VT_I2, COMVariantType::VT_I4:
offsetAccountnum = strFmt("%1",
cells.item(row, 19).value().int());
break;
case
COMVariantType::VT_UI1, COMVariantType::VT_UI2, COMVariantType::VT_UI4:
offsetAccountnum = strFmt("%1",
cells.item(row, 19).value().uLong());
break;
case
COMVariantType::VT_EMPTY:
offsetAccountnum = '';
break;
default:
throw
error(strfmt("@KPM1056", cells.item(row, 19).value().variantType()));
}
obusinessUnit = cells.item(row, 20).value().bStr();
oLOB = cells.item(row, 21).value().bStr();
oCLOB = cells.item(row, 22).value().bStr();
oDept = cells.item(row, 23).value().bStr();
oLocation = cells.item(row, 24).value().bStr();
oOrigin = cells.item(row, 25).value().bStr();
oProject = cells.item(row, 26).value().bStr();
oEmployee = cells.item(row, 27).value().bStr();
oIntercompany = cells.item(row, 28).value().bStr();
TDSgroup = cells.item(row, 29).value().bStr();
salesTaxGroup = cells.item(row, 30).value().bStr();
itemSalesTax = cells.item(row, 31).value().bStr();
documentdate = cells.item(row, 32).value().date();
//In Excel
cell should be in Text format
try
{
ttsbegin;
voucher = '';
ledgerJournalTrans.clear();
ledgerJournalTrans.initValue();
ledgerJournalTrans.JournalNum = "INMF-00485";//ledgerJournalTable.JournalNum;
ledgerJournalTrans.TransDate = transdate;
ledgerJournalTrans.Approved = NoYes::Yes;
ledgerJournalTrans.Approver = HcmWorker::userId2Worker(curuserid());
select
firstOnly numSeqTable
where
numSeqTable.RecId ==
LedgerJournalName::find("GenJN").NumberSequenceTable;
if
(numSeqTable && !voucher)
{
numberseq =
numberseq::newGetVoucherFromCode(numSeqTable.NumberSequence);
voucher = numberseq.voucher();
}
ledgerJournalTrans.Voucher = voucher;
ledgerJournalTrans.AccountType = str2enum(LedgerJournalACType,
accountType);
//
Main account dimensions
cont1=conNull();
cont2=conNull();
ledgerDimension =conNull();
cnt=0;
//Account
type
if(mBusinessUnit
!= '')
{
cnt++;
cont2+=['BU',mBusinessUnit];
}
if(mLOB
!= '')
{
cnt++;
cont2+=['LOB',mLOB];
}
if(mCLOB
!= '')
{
cnt++;
cont2+=['CLOB',mCLOB];
}
if(mDept
!= '')
{
cnt++;
cont2+=['Department',mDept];
}
if(mLocation
!= '')
{
cnt++;
cont2+=['Location',mLocation];
}
if(mOrigin
!= '')
{
cnt++;
cont2+=['Origin',mOrigin];
}
if(mProject
!= '')
{
cnt++;
cont2+=['Projects',mProject];
}
if(mEmployee
!= '')
{
cnt++;
cont2+=['Worker',mEmployee]; //Employee
}
if(mIntercompany
!= '')
{
cnt++;
cont2+=['Intercompany',mIntercompany];
}
if(ledgerJournalTrans.AccountType == LedgerJournalACType::Ledger)
{
cont1+=['MainAccount',AccountNumb,cnt];
cont1+=cont2;
ledgerDim =
AxdDimensionUtil::getLedgerAccountId(cont1);
if(ledgerDim==0)
{
offSetAcctPattern =
[AccountNumb,AccountNumb];
ledgerDim =
AxdDimensionUtil::getLedgerAccountId( offSetAcctPattern);
}
ledgerJournalTrans.LedgerDimension
= ledgerDim;
}
else
{
ledgerDim = DimensionStorage::getDynamicAccount(
AccountNumb,ledgerJournalTrans.AccountType);
ledgerDimension +=cnt;
ledgerDimension +=cont2;
DimensionDefault =
AxdDimensionUtil::getDimensionAttributeValueSetId(ledgerDimension);
ledgerJournalTrans.LedgerDimension
= ledgerDim;
LedgerJournalTrans.modifiedField(fieldNum(LedgerJournalTrans,LedgerDimension));
ledgerJournalTrans.DefaultDimension = DimensionDefault;
}
ledgerJournalTrans.Txt = Text;
ledgerJournalTrans.CurrencyCode
= Currency;
ledgerJournalTrans.AmountCurDebit
= Debit;
ledgerJournalTrans.AmountCurCredit
= Credit;
if(offsetaccountType)
{
ledgerJournalTrans.OffsetAccountType
= str2enum(LedgerJournalACType,
offsetaccountType);
}
else
{
ledgerJournalTrans.OffsetAccountType
= LedgerJournalACType::Ledger;
}
cont1=conNull();
cont2=conNull();
ledgerDimension =conNull();
cnt=0;
//Offset
Account Type
if(oBusinessUnit
!= '')
{
cnt++;
cont2+=['BU',oBusinessUnit];
}
if(oLOB
!= '')
{
cnt++;
cont2+=['LOB',oLOB];
}
if(oCLOB
!= '')
{
cnt++;
cont2+=['CLOB',oCLOB];
}
if(oDept
!= '')
{
cnt++;
cont2+=['Department',oDept];
}
if(oLocation
!= '')
{
cnt++;
cont2+=['Location',oLocation];
}
if(oOrigin
!= '')
{
cnt++;
cont2+=['Origin',oOrigin];
}
if(oProject
!= '')
{
cnt++;
cont2+=['Projects',oProject];
}
if(oEmployee
!= '')
{
cnt++;
cont2+=['Worker',oEmployee];
}
if(oIntercompany
!= '')
{
cnt++;
cont2+=['Intercompany',oIntercompany];
}
if
(ledgerJournalTrans.OffsetAccountType ==
LedgerJournalACType::Ledger && offsetAccountnum)
{
cont1+=['MainAccount',offsetAccountnum,cnt];
cont1+=cont2;
offsetledgerDim
=AxdDimensionUtil::getLedgerAccountId(cont1);
if(offsetledgerDim
== 0)
{
offSetAcctPattern =
[offsetAccountnum,offsetAccountnum];
offsetledgerDim =
AxdDimensionUtil::getLedgerAccountId( offSetAcctPattern);
}
ledgerJournalTrans.OffsetLedgerDimension = offsetledgerDim;
}
else
{
if(offsetAccountnum)
{
offsetledgerDim =
DimensionStorage::getDynamicAccount(offsetAccountnum,ledgerJournalTrans.OffsetAccountType);
ledgerDimension +=cnt;
ledgerDimension +=cont2;
DimensionDefault =
AxdDimensionUtil::getDimensionAttributeValueSetId(ledgerDimension);
ledgerJournalTrans.OffsetLedgerDimension = offsetledgerDim;
LedgerJournalTrans.modifiedField(fieldNum(LedgerJournalTrans,OffsetLedgerDimension));
ledgerJournalTrans.OffsetDefaultDimension = DimensionDefault;
}
}
ledgerJournalTrans.TaxGroup = salesTaxGroup;
ledgerJournalTrans.TaxItemGroup =
itemSalesTax;
//tax1
= Tax::calcTaxAmount(ledgerJournalTrans.TaxGroup,
ledgerJournalTrans.TaxItemGroup, Systemdateget(), ledgerJournalTrans.CurrencyCode,
ledgerJournalTrans.AmountCurCredit, TaxModuleType::);
//
TaxLedgerJournalCalculate::totalTaxAmountSingleLine(TaxJournalCall::Journal,
_ledgerJournalTrans, 0, 0);
//TaxAmount_1
= 0;
//if(ledgerJournalTrans.TaxItemGroup
&& ledgerJournalTrans.TaxGroup) //&&
ledgerJournalTrans.AmountCurCredit != 0)
//{
//while
select TaxOnItem
//where
TaxOnItem.TaxItemGroup == ledgerJournalTrans.TaxItemGroup
//{
//if(TaxOnItem)
//{
//while select TaxGroupData
//where TaxGroupData.TaxGroup ==
ledgerJournalTrans.TaxGroup
//&& TaxGroupData.TaxCode == TaxOnItem.TaxCode
//{
//if(TaxGroupData)
//{
//TaxAmount = 0;
//TaxValue = TaxData::find(TaxOnItem.TaxCode,
Systemdateget(), 0).TaxValue;
//TaxValue_1 +=
TaxValue;
//if(ledgerJournalTrans.AmountCurCredit != 0)
//TaxAmount = (ledgerJournalTrans.AmountCurCredit*
TaxValue)/100;
//else if(ledgerJournalTrans.AmountCurDebit != 0)
//TaxAmount = (ledgerJournalTrans.AmountCurCredit*
TaxValue)/100;
//TaxAmount_1 += TaxAmount;
//}
//}
//}
//}
//}
ledgerJournalTrans.DocumentDate =
documentdate;
ledgerJournalTrans.TDSGroup_IN = TDSgroup;
if
(ledgerJournalTrans.validateWrite())
{
ledgerJournalTrans.insert();
info(strFmt('journal
inserted %1 - %2',ledgerJournalTable.JournalNum,row));
}
ttscommit;
type = cells.item(row+1, 1).value().variantType();
}
catch(Exception::Error)
{
info(strFmt('Catched an error in row: %1',row));
}
}
while
(type != COMVariantType::VT_EMPTY);
application.quit();
endLengthyOperation();
}
excel format :
No comments:
Post a Comment