Hi folks ,
Very common requirement these days is to create Vendor Invoice Journal through code.
Here is an example mentioned below in which I am picking the values for Vendor invoice creation from a staging table :-
Class Name :- VendInvoiceJournalCreateBatch
#define.initFromJournal('VINV')
#define.AEDCurrency('USD')
#define.EmptyCurrency('')
int i;
str invdate , invfinaldate;
date dateheader , dateheaderval , dateline;
System.DateTime netDttm;
real amountcr;
utcdatetime xppDttm , invdatetime;
SupplierInvoiceHeaderDetails vendInvoiceJourStageHeader, vendInvoiceJourStageHeaderUpdate;
SupplierInvoiceLineDetails vendInvoiceJourStageLine
, vendInvoiceJourStageLineds;
LedgerJournalTable journalTable;
JournalTableData journalTableData;
LedgerJournalTrans journalTrans;
container offsetCon, offsetConLoc , mainAccountCon;
NumberSeq numberSeq;
Voucher voucher;
LedgerJournalName ledgerJournalName;
AccountNum vendAccount;
HcmWorker hcmWorker;
DirPerson dirPerson;
DirPersonUser dirPersonUser;
VendInvoiceJournalCreateBatch classVend = new VendInvoiceJournalCreateBatch();
MainAccount mainAccount;
Voucher vch;
DimensionAttributeValueCombination dimCombination1;
String255 tmpOffsetAccount, tmpVoucherNo;
DimensionAttributeValueCombination dimCombination, dimCombinationLoc;
NoYes newOffsetLine = NoYes::Yes;
LedgerJournalId journalId;
String10 purchId;
i=0;
while select vendInvoiceJourStageHeader where vendInvoiceJourStageHeader.UpdateFlag == 0
{
try
{
ledgerJournalName = LedgerJournalName::find(#initFromJournal);
journalTable.initFromLedgerJournalName(#initFromJournal);
journalTableData = JournalTableData::newTable(journalTable);
journalTable.JournalNum = journalTableData.nextJournalId();
journalTable.CurrencyCode = #AEDCurrency;
if (journalTable.validateWrite())
{
journalTable.insert();
}
journalId = journalTable.JournalNum;
select count(RecId) from vendInvoiceJourStageLineds where vendInvoiceJourStageLineds.DocumentRef == vendInvoiceJourStageHeader.Docref;
while select vendInvoiceJourStageLine order by OffsetAccount desc
where vendInvoiceJourStageLine.DocumentRef == vendInvoiceJourStageHeader.Docref
{
amountcr= 0.00;
tmpOffsetAccount = vendInvoiceJourStageLine.OffsetAccount;
tmpVoucherNo = vendInvoiceJourStageLine.VoucherNo;
select dirPersonUser where dirpersonuser.User==curUserId();
select dirPerson where dirPerson.RecId == dirPersonUser.PersonParty;
select hcmWorker where hcmWorker.Person == dirPerson.RecId;
select dimCombination where dimCombination.DisplayValue == vendInvoiceJourStageHeader.Vendor;
select dimCombinationLoc where dimCombinationLoc.DisplayValue == vendInvoiceJourStageLine.OffsetAccount;
offsetCon = [vendInvoiceJourStageLine.Ledger,vendInvoiceJourStageLine.Region,vendInvoiceJourStageLine.LOB,vendInvoiceJourStageLine.Department,vendInvoiceJourStageLine.BIN,vendInvoiceJourStageLine.Contract];
offsetConLoc = [vendInvoiceJourStageLine.OffsetAccount,vendInvoiceJourStageLine.Region,vendInvoiceJourStageLine.LOB,vendInvoiceJourStageLine.Department,vendInvoiceJourStageLine.BIN,vendInvoiceJourStageLine.Contract];
numberSeq = NumberSeq::newGetVoucherFromId(journalTable.NumberSequenceTable, true);
if(vendInvoiceJourStageLine.OffsetAccount != '')
{
select dimCombination where dimCombination.DisplayValue == vendInvoiceJourStageLine.Ledger;
offsetConLoc = [vendInvoiceJourStageLine.OffsetAccount,vendInvoiceJourStageLine.Region,vendInvoiceJourStageLine.LOB,vendInvoiceJourStageLine.Department,vendInvoiceJourStageLine.BIN,vendInvoiceJourStageLine.Contract];
journalTrans.JournalNum = journalTable.JournalNum;
journalTrans.Voucher = numberSeq.voucher();
journalTrans.Invoice = vendInvoiceJourStageHeader.InvoiceNumber;
journalTrans.Txt = vendInvoiceJourStageHeader.InvoiceDescription;
invdatetime = DateTimeUtil::anyToDateTime(vendInvoiceJourStageHeader.InvoiceDate);
dateheader = DateTimeUtil::date(invdatetime);
invdate = date2Str(dateheader,321,DateDay::Digits2,DateSeparator::Slash,DateMonth::Digits2,DateSeparator::Hyphen,DateYear::Digits4);
dateheaderval = str2Date(invdate,321);
journalTrans.INTC_InvDate = dateheaderval;
journalTrans.DocumentDate = str2Date(vendInvoiceJourStageHeader.InvoiceReceivedDate,321);
journalTrans.TransDate = today();//str2Date(journalDeatils.TransactionDate, 123);
journalTrans.AccountType = LedgerJournalACType::Ledger;
//journalTrans.LedgerDimension = dimCombination.RecId;
journalTrans.LedgerDimension = classVend.generateLedgerDimension(offsetCon, vendInvoiceJourStageLine.Ledger);
//journalTrans.AmountCurCredit = vendInvoiceJourStageLine.InvoiceAmount;
journalTrans.AmountCurDebit = vendInvoiceJourStageLine.InvoiceAmount;
journalTrans.AmountCurCredit = 0.00;
journalTrans.OffsetAccountType = LedgerJournalACType::Ledger;
//journalTrans.OffsetLedgerDimension = classVend.generateLedgerDimension(offsetCon, vendInvoiceJourStageLine.Ledger);
//journalTrans.OffsetLedgerDimension = dimCombinationLoc.RecId;
journalTrans.OffsetLedgerDimension = classVend.generateLedgerDimension(offsetConLoc, vendInvoiceJourStageLine.OffsetAccount);
journalTrans.INTC_DocumentRef = vendInvoiceJourStageLine.DocumentRef;
if(vendInvoiceJourStageLine.Currency == #EmptyCurrency)
{
journalTrans.CurrencyCode = #AEDCurrency;
}
else
{
journalTrans.CurrencyCode = vendInvoiceJourStageLine.Currency;
}
journalTrans.ExchRate = Currency::exchRate1(journalTrans.CurrencyCode, journalTrans.TransDate);
journalTrans.Approver = hcmWorker.RecId;
journalTrans.Approved =NoYes::Yes;
journalTrans.PostingProfile = "General";
journalTrans.INTC_PurchId = vendInvoiceJourStageLine.PONo;
journalTrans.TransactionType = LedgerTransType::Vend;
journalTrans.INTC_WorkOrderId = vendInvoiceJourStageLine.WorkOrderNo;
journalTrans.INTC_Qty = vendInvoiceJourStageLine.Qty;
journalTrans.Payment = vendInvoiceJourStageLine.PaymentTerms;
journalTrans.insert();
//======================
numberSeq.used();
//======================
}
else
{
select dimCombination where dimCombination.DisplayValue == vendInvoiceJourStageLine.Ledger;
select dimCombinationLoc where dimCombinationLoc.DisplayValue == vendInvoiceJourStageLine.OffsetAccount;
offsetCon = [vendInvoiceJourStageLine.Ledger,vendInvoiceJourStageLine.Region,vendInvoiceJourStageLine.LOB,vendInvoiceJourStageLine.Department,vendInvoiceJourStageLine.BIN,vendInvoiceJourStageLine.Contract];
if(vendInvoiceJourStageLine.OffsetAccount != '')
{
offsetConLoc = [vendInvoiceJourStageLine.OffsetAccount,vendInvoiceJourStageLine.Region,vendInvoiceJourStageLine.LOB,vendInvoiceJourStageLine.Department,vendInvoiceJourStageLine.BIN,vendInvoiceJourStageLine.Contract];
}
journalTrans.JournalNum = journalTable.JournalNum;
if(newOffsetLine == NoYes::Yes)
{
numberSeq = NumberSeq::newGetVoucherFromId(journalTable.NumberSequenceTable, true);
journalTrans.Voucher = numberSeq.voucher();
vch = journalTrans.Voucher;
newOffsetLine = NoYes::No;
}
else
{
journalTrans.Voucher = vch;
}
purchId = vendInvoiceJourStageLine.POLineNum;
amountcr+=vendInvoiceJourStageLine.InvoiceAmount;
journalTrans.Invoice = vendInvoiceJourStageHeader.InvoiceNumber;
journalTrans.Txt = vendInvoiceJourStageHeader.InvoiceDescription;
invdatetime = DateTimeUtil::anyToDateTime(vendInvoiceJourStageHeader.InvoiceDate);
dateheader = DateTimeUtil::date(invdatetime);
invdate = date2Str(dateheader,321,DateDay::Digits2,DateSeparator::Slash,DateMonth::Digits2,DateSeparator::Hyphen,DateYear::Digits4);
dateheaderval = str2Date(invdate,321);
journalTrans.INTC_InvDate = dateheaderval;
journalTrans.DocumentDate = str2Date(vendInvoiceJourStageHeader.InvoiceReceivedDate,321);
journalTrans.TransDate = today();//str2Date(journalDeatils.TransactionDate, 123);
journalTrans.AccountType = LedgerJournalACType::Ledger;
//journalTrans.LedgerDimension = dimCombination.RecId;
journalTrans.LedgerDimension = classVend.generateLedgerDimension(offsetCon, vendInvoiceJourStageLine.Ledger);
//journalTrans.AmountCurCredit = vendInvoiceJourStageLine.InvoiceAmount;
journalTrans.AmountCurDebit = vendInvoiceJourStageLine.InvoiceAmount;
journalTrans.AmountCurCredit = 0.00;
journalTrans.OffsetAccountType = LedgerJournalACType::Ledger;
//journalTrans.OffsetLedgerDimension = classVend.generateLedgerDimension(offsetCon, vendInvoiceJourStageLine.Ledger);
if(vendInvoiceJourStageLine.OffsetAccount == '')
{
journalTrans.OffsetLedgerDimension = dimCombinationLoc.RecId;
}
else
{
journalTrans.OffsetLedgerDimension = classVend.generateLedgerDimension(offsetConLoc, vendInvoiceJourStageLine.OffsetAccount);
}
journalTrans.INTC_DocumentRef = vendInvoiceJourStageLine.DocumentRef;
if(vendInvoiceJourStageLine.Currency == #EmptyCurrency)
{
journalTrans.CurrencyCode = #AEDCurrency;
}
else
{
journalTrans.CurrencyCode = vendInvoiceJourStageLine.Currency;
}
journalTrans.ExchRate = Currency::exchRate1(journalTrans.CurrencyCode, journalTrans.TransDate);
journalTrans.Approver = hcmWorker.RecId;
journalTrans.Approved =NoYes::Yes;
journalTrans.PostingProfile = "General";
journalTrans.INTC_PurchId = vendInvoiceJourStageLine.PONo;
journalTrans.TransactionType = LedgerTransType::Vend;
journalTrans.INTC_WorkOrderId = vendInvoiceJourStageLine.WorkOrderNo;
journalTrans.INTC_Qty = vendInvoiceJourStageLine.Qty;
journalTrans.Payment = vendInvoiceJourStageLine.PaymentTerms;
journalTrans.insert();
//======================
numberSeq.used();
//======================
}
}
select dirPersonUser where dirpersonuser.User==curUserId();
select dirPerson where dirPerson.RecId == dirPersonUser.PersonParty;
select hcmWorker where hcmWorker.Person == dirPerson.RecId;
select dimCombination1 where dimCombination1.DisplayValue == vendInvoiceJourStageHeader.Vendor;
offsetCon = [vendInvoiceJourStageHeader.Vendor,vendInvoiceJourStageLine.Region,vendInvoiceJourStageLine.LOB,vendInvoiceJourStageLine.Department,vendInvoiceJourStageLine.BIN,vendInvoiceJourStageLine.Contract];
numberSeq = NumberSeq::newGetVoucherFromId(journalTable.NumberSequenceTable, true);
//journalTrans.JournalNum = journalTable.JournalNum;
journalTrans.JournalNum = journalId;
journalTrans.Voucher = vch;
vch = journalTrans.Voucher;
journalTrans.Invoice = vendInvoiceJourStageHeader.InvoiceNumber;
journalTrans.Txt = vendInvoiceJourStageHeader.InvoiceDescription;
invdatetime = DateTimeUtil::anyToDateTime(vendInvoiceJourStageHeader.InvoiceDate);
dateheader = DateTimeUtil::date(invdatetime);
invdate = date2Str(dateheader,321,DateDay::Digits2,DateSeparator::Slash,DateMonth::Digits2,DateSeparator::Hyphen,DateYear::Digits4);
dateheaderval = str2Date(invdate,321);
journalTrans.INTC_InvDate = dateheaderval;
journalTrans.DocumentDate = str2Date(vendInvoiceJourStageHeader.InvoiceReceivedDate,321);
journalTrans.TransDate = today();//str2Date(journalDeatils.TransactionDate, 123);
journalTrans.AccountType = LedgerJournalACType::Vend;
journalTrans.LedgerDimension = dimCombination1.RecId;
//journalTrans.LedgerDimension = classVend.generateLedgerDimension(offsetCon, vendInvoiceJourStageHeader.Vendor);
journalTrans.AmountCurDebit = 0.00;
journalTrans.AmountCurCredit = amountcr;
journalTrans.OffsetAccountType = LedgerJournalACType::Ledger;
//journalTrans.OffsetLedgerDimension = classVend.generateLedgerDimension(offsetCon, vendInvoiceJourStageLine.Ledger);
//journalTrans.OffsetLedgerDimension = dimCombinationLoc.RecId;
if(vendInvoiceJourStageLine.OffsetAccount == '')
{
journalTrans.OffsetLedgerDimension = dimCombinationLoc.RecId;
}
else
{
journalTrans.OffsetLedgerDimension = classVend.generateLedgerDimension(offsetConLoc, vendInvoiceJourStageLine.OffsetAccount);
}
journalTrans.INTC_DocumentRef = vendInvoiceJourStageHeader.Docref;
if(vendInvoiceJourStageLine.Currency == #EmptyCurrency)
{
journalTrans.CurrencyCode = #AEDCurrency;
}
else
{
journalTrans.CurrencyCode = vendInvoiceJourStageLine.Currency;
}
journalTrans.ExchRate = Currency::exchRate1(journalTrans.CurrencyCode, journalTrans.TransDate);
journalTrans.Approver = hcmWorker.RecId;
journalTrans.Approved =NoYes::Yes;
journalTrans.PostingProfile = "General";
journalTrans.INTC_PurchId = vendInvoiceJourStageLine.PONo;
journalTrans.TransactionType = LedgerTransType::Vend;
journalTrans.INTC_WorkOrderId = vendInvoiceJourStageLine.WorkOrderNo;
journalTrans.INTC_Qty = vendInvoiceJourStageLine.Qty;
journalTrans.Payment = vendInvoiceJourStageLine.PaymentTerms;
if(amountcr>0)
{
journalTrans.insert();
}
ttsbegin;
select forupdate vendInvoiceJourStageHeaderUpdate where vendInvoiceJourStageHeaderUpdate.RecId == vendInvoiceJourStageHeader.RecId;
vendInvoiceJourStageHeaderUpdate.UpdateFlag = 1;
vendInvoiceJourStageHeaderUpdate.update();
ttscommit;
//======================
numberSeq.used();
//======================
}
catch(Exception::Error)
{
throw Exception::Error;
}
}
public DimensionDynamicAccount generateLedgerDimension(container _conData, MainAccountNum _mainAccountNum)
{
int hierarchyCount;
int hierarchyIdx;
RecId dimAttId_MainAccount;
LedgerRecId ledgerRecId;
MainAccount mainAccount;
RefRecId recordvalue;
DimensionAttribute dimensionAttribute;
DimensionAttributeValue dimensionAttributeValue;
DimensionSetSegmentName DimensionSet;
DimensionStorage dimStorage;
LedgerAccountContract LedgerAccountContract = new LedgerAccountContract();
DimensionAttributeValueContract ValueContract;
List valueContracts = new List(Types::Class);
dimensionAttributeValueCombination dimensionAttributeValueCombination;
mainAccount = MainAccount::findByMainAccountId(_mainAccountNum);
recordvalue = DimensionHierarchy::getAccountStructure(mainAccount.RecId,Ledger::current());
hierarchyCount = DimensionHierarchy::getLevelCount(recordvalue);
DimensionSet = DimensionHierarchyLevel::getDimensionHierarchyLevelNames(recordvalue);
for(hierarchyIdx = 1;hierarchyIdx<=hierarchyCount;hierarchyIdx++)
{
if(hierarchyIdx == 1)
{
continue;
}
dimensionAttribute = DimensionAttribute::findByLocalizedName(DimensionSet[hierarchyIdx],false,"en-us");
if(dimensionAttribute)
{
dimensionAttributeValue = DimensionAttributeValue::findByDimensionAttributeAndValue(
dimensionAttribute,conPeek(_conData,hierarchyIdx));
if(dimensionAttributeValue)
{
ValueContract = new DimensionAttributeValueContract();
ValueContract.parmName(dimensionAttribute.Name) ;
ValueContract.parmValue(dimensionAttributeValue.CachedDisplayValue);
valueContracts.addEnd(ValueContract);
}
}
}
LedgerAccountContract.parmMainAccount(_mainAccountNum);
LedgerAccountContract.parmValues(valueContracts);
dimStorage = DimensionServiceProvider::buildDimensionStorageForLedgerAccount(LedgerAccountContract);
dimensionAttributeValueCombination = DimensionAttributeValueCombination::find(dimStorage.save());
ledgerRecId = dimensionAttributeValueCombination.RecId;
return ledgerRecId;
}
Happy Coding !!!!
Very common requirement these days is to create Vendor Invoice Journal through code.
Here is an example mentioned below in which I am picking the values for Vendor invoice creation from a staging table :-
Class Name :- VendInvoiceJournalCreateBatch
#define.initFromJournal('VINV')
#define.AEDCurrency('USD')
#define.EmptyCurrency('')
int i;
str invdate , invfinaldate;
date dateheader , dateheaderval , dateline;
System.DateTime netDttm;
real amountcr;
utcdatetime xppDttm , invdatetime;
SupplierInvoiceHeaderDetails vendInvoiceJourStageHeader, vendInvoiceJourStageHeaderUpdate;
SupplierInvoiceLineDetails vendInvoiceJourStageLine
, vendInvoiceJourStageLineds;
LedgerJournalTable journalTable;
JournalTableData journalTableData;
LedgerJournalTrans journalTrans;
container offsetCon, offsetConLoc , mainAccountCon;
NumberSeq numberSeq;
Voucher voucher;
LedgerJournalName ledgerJournalName;
AccountNum vendAccount;
HcmWorker hcmWorker;
DirPerson dirPerson;
DirPersonUser dirPersonUser;
VendInvoiceJournalCreateBatch classVend = new VendInvoiceJournalCreateBatch();
MainAccount mainAccount;
Voucher vch;
DimensionAttributeValueCombination dimCombination1;
String255 tmpOffsetAccount, tmpVoucherNo;
DimensionAttributeValueCombination dimCombination, dimCombinationLoc;
NoYes newOffsetLine = NoYes::Yes;
LedgerJournalId journalId;
String10 purchId;
i=0;
while select vendInvoiceJourStageHeader where vendInvoiceJourStageHeader.UpdateFlag == 0
{
try
{
ledgerJournalName = LedgerJournalName::find(#initFromJournal);
journalTable.initFromLedgerJournalName(#initFromJournal);
journalTableData = JournalTableData::newTable(journalTable);
journalTable.JournalNum = journalTableData.nextJournalId();
journalTable.CurrencyCode = #AEDCurrency;
if (journalTable.validateWrite())
{
journalTable.insert();
}
journalId = journalTable.JournalNum;
select count(RecId) from vendInvoiceJourStageLineds where vendInvoiceJourStageLineds.DocumentRef == vendInvoiceJourStageHeader.Docref;
while select vendInvoiceJourStageLine order by OffsetAccount desc
where vendInvoiceJourStageLine.DocumentRef == vendInvoiceJourStageHeader.Docref
{
amountcr= 0.00;
tmpOffsetAccount = vendInvoiceJourStageLine.OffsetAccount;
tmpVoucherNo = vendInvoiceJourStageLine.VoucherNo;
select dirPersonUser where dirpersonuser.User==curUserId();
select dirPerson where dirPerson.RecId == dirPersonUser.PersonParty;
select hcmWorker where hcmWorker.Person == dirPerson.RecId;
select dimCombination where dimCombination.DisplayValue == vendInvoiceJourStageHeader.Vendor;
select dimCombinationLoc where dimCombinationLoc.DisplayValue == vendInvoiceJourStageLine.OffsetAccount;
offsetCon = [vendInvoiceJourStageLine.Ledger,vendInvoiceJourStageLine.Region,vendInvoiceJourStageLine.LOB,vendInvoiceJourStageLine.Department,vendInvoiceJourStageLine.BIN,vendInvoiceJourStageLine.Contract];
offsetConLoc = [vendInvoiceJourStageLine.OffsetAccount,vendInvoiceJourStageLine.Region,vendInvoiceJourStageLine.LOB,vendInvoiceJourStageLine.Department,vendInvoiceJourStageLine.BIN,vendInvoiceJourStageLine.Contract];
numberSeq = NumberSeq::newGetVoucherFromId(journalTable.NumberSequenceTable, true);
if(vendInvoiceJourStageLine.OffsetAccount != '')
{
select dimCombination where dimCombination.DisplayValue == vendInvoiceJourStageLine.Ledger;
offsetConLoc = [vendInvoiceJourStageLine.OffsetAccount,vendInvoiceJourStageLine.Region,vendInvoiceJourStageLine.LOB,vendInvoiceJourStageLine.Department,vendInvoiceJourStageLine.BIN,vendInvoiceJourStageLine.Contract];
journalTrans.JournalNum = journalTable.JournalNum;
journalTrans.Voucher = numberSeq.voucher();
journalTrans.Invoice = vendInvoiceJourStageHeader.InvoiceNumber;
journalTrans.Txt = vendInvoiceJourStageHeader.InvoiceDescription;
invdatetime = DateTimeUtil::anyToDateTime(vendInvoiceJourStageHeader.InvoiceDate);
dateheader = DateTimeUtil::date(invdatetime);
invdate = date2Str(dateheader,321,DateDay::Digits2,DateSeparator::Slash,DateMonth::Digits2,DateSeparator::Hyphen,DateYear::Digits4);
dateheaderval = str2Date(invdate,321);
journalTrans.INTC_InvDate = dateheaderval;
journalTrans.DocumentDate = str2Date(vendInvoiceJourStageHeader.InvoiceReceivedDate,321);
journalTrans.TransDate = today();//str2Date(journalDeatils.TransactionDate, 123);
journalTrans.AccountType = LedgerJournalACType::Ledger;
//journalTrans.LedgerDimension = dimCombination.RecId;
journalTrans.LedgerDimension = classVend.generateLedgerDimension(offsetCon, vendInvoiceJourStageLine.Ledger);
//journalTrans.AmountCurCredit = vendInvoiceJourStageLine.InvoiceAmount;
journalTrans.AmountCurDebit = vendInvoiceJourStageLine.InvoiceAmount;
journalTrans.AmountCurCredit = 0.00;
journalTrans.OffsetAccountType = LedgerJournalACType::Ledger;
//journalTrans.OffsetLedgerDimension = classVend.generateLedgerDimension(offsetCon, vendInvoiceJourStageLine.Ledger);
//journalTrans.OffsetLedgerDimension = dimCombinationLoc.RecId;
journalTrans.OffsetLedgerDimension = classVend.generateLedgerDimension(offsetConLoc, vendInvoiceJourStageLine.OffsetAccount);
journalTrans.INTC_DocumentRef = vendInvoiceJourStageLine.DocumentRef;
if(vendInvoiceJourStageLine.Currency == #EmptyCurrency)
{
journalTrans.CurrencyCode = #AEDCurrency;
}
else
{
journalTrans.CurrencyCode = vendInvoiceJourStageLine.Currency;
}
journalTrans.ExchRate = Currency::exchRate1(journalTrans.CurrencyCode, journalTrans.TransDate);
journalTrans.Approver = hcmWorker.RecId;
journalTrans.Approved =NoYes::Yes;
journalTrans.PostingProfile = "General";
journalTrans.INTC_PurchId = vendInvoiceJourStageLine.PONo;
journalTrans.TransactionType = LedgerTransType::Vend;
journalTrans.INTC_WorkOrderId = vendInvoiceJourStageLine.WorkOrderNo;
journalTrans.INTC_Qty = vendInvoiceJourStageLine.Qty;
journalTrans.Payment = vendInvoiceJourStageLine.PaymentTerms;
journalTrans.insert();
//======================
numberSeq.used();
//======================
}
else
{
select dimCombination where dimCombination.DisplayValue == vendInvoiceJourStageLine.Ledger;
select dimCombinationLoc where dimCombinationLoc.DisplayValue == vendInvoiceJourStageLine.OffsetAccount;
offsetCon = [vendInvoiceJourStageLine.Ledger,vendInvoiceJourStageLine.Region,vendInvoiceJourStageLine.LOB,vendInvoiceJourStageLine.Department,vendInvoiceJourStageLine.BIN,vendInvoiceJourStageLine.Contract];
if(vendInvoiceJourStageLine.OffsetAccount != '')
{
offsetConLoc = [vendInvoiceJourStageLine.OffsetAccount,vendInvoiceJourStageLine.Region,vendInvoiceJourStageLine.LOB,vendInvoiceJourStageLine.Department,vendInvoiceJourStageLine.BIN,vendInvoiceJourStageLine.Contract];
}
journalTrans.JournalNum = journalTable.JournalNum;
if(newOffsetLine == NoYes::Yes)
{
numberSeq = NumberSeq::newGetVoucherFromId(journalTable.NumberSequenceTable, true);
journalTrans.Voucher = numberSeq.voucher();
vch = journalTrans.Voucher;
newOffsetLine = NoYes::No;
}
else
{
journalTrans.Voucher = vch;
}
purchId = vendInvoiceJourStageLine.POLineNum;
amountcr+=vendInvoiceJourStageLine.InvoiceAmount;
journalTrans.Invoice = vendInvoiceJourStageHeader.InvoiceNumber;
journalTrans.Txt = vendInvoiceJourStageHeader.InvoiceDescription;
invdatetime = DateTimeUtil::anyToDateTime(vendInvoiceJourStageHeader.InvoiceDate);
dateheader = DateTimeUtil::date(invdatetime);
invdate = date2Str(dateheader,321,DateDay::Digits2,DateSeparator::Slash,DateMonth::Digits2,DateSeparator::Hyphen,DateYear::Digits4);
dateheaderval = str2Date(invdate,321);
journalTrans.INTC_InvDate = dateheaderval;
journalTrans.DocumentDate = str2Date(vendInvoiceJourStageHeader.InvoiceReceivedDate,321);
journalTrans.TransDate = today();//str2Date(journalDeatils.TransactionDate, 123);
journalTrans.AccountType = LedgerJournalACType::Ledger;
//journalTrans.LedgerDimension = dimCombination.RecId;
journalTrans.LedgerDimension = classVend.generateLedgerDimension(offsetCon, vendInvoiceJourStageLine.Ledger);
//journalTrans.AmountCurCredit = vendInvoiceJourStageLine.InvoiceAmount;
journalTrans.AmountCurDebit = vendInvoiceJourStageLine.InvoiceAmount;
journalTrans.AmountCurCredit = 0.00;
journalTrans.OffsetAccountType = LedgerJournalACType::Ledger;
//journalTrans.OffsetLedgerDimension = classVend.generateLedgerDimension(offsetCon, vendInvoiceJourStageLine.Ledger);
if(vendInvoiceJourStageLine.OffsetAccount == '')
{
journalTrans.OffsetLedgerDimension = dimCombinationLoc.RecId;
}
else
{
journalTrans.OffsetLedgerDimension = classVend.generateLedgerDimension(offsetConLoc, vendInvoiceJourStageLine.OffsetAccount);
}
journalTrans.INTC_DocumentRef = vendInvoiceJourStageLine.DocumentRef;
if(vendInvoiceJourStageLine.Currency == #EmptyCurrency)
{
journalTrans.CurrencyCode = #AEDCurrency;
}
else
{
journalTrans.CurrencyCode = vendInvoiceJourStageLine.Currency;
}
journalTrans.ExchRate = Currency::exchRate1(journalTrans.CurrencyCode, journalTrans.TransDate);
journalTrans.Approver = hcmWorker.RecId;
journalTrans.Approved =NoYes::Yes;
journalTrans.PostingProfile = "General";
journalTrans.INTC_PurchId = vendInvoiceJourStageLine.PONo;
journalTrans.TransactionType = LedgerTransType::Vend;
journalTrans.INTC_WorkOrderId = vendInvoiceJourStageLine.WorkOrderNo;
journalTrans.INTC_Qty = vendInvoiceJourStageLine.Qty;
journalTrans.Payment = vendInvoiceJourStageLine.PaymentTerms;
journalTrans.insert();
//======================
numberSeq.used();
//======================
}
}
select dirPersonUser where dirpersonuser.User==curUserId();
select dirPerson where dirPerson.RecId == dirPersonUser.PersonParty;
select hcmWorker where hcmWorker.Person == dirPerson.RecId;
select dimCombination1 where dimCombination1.DisplayValue == vendInvoiceJourStageHeader.Vendor;
offsetCon = [vendInvoiceJourStageHeader.Vendor,vendInvoiceJourStageLine.Region,vendInvoiceJourStageLine.LOB,vendInvoiceJourStageLine.Department,vendInvoiceJourStageLine.BIN,vendInvoiceJourStageLine.Contract];
numberSeq = NumberSeq::newGetVoucherFromId(journalTable.NumberSequenceTable, true);
//journalTrans.JournalNum = journalTable.JournalNum;
journalTrans.JournalNum = journalId;
journalTrans.Voucher = vch;
vch = journalTrans.Voucher;
journalTrans.Invoice = vendInvoiceJourStageHeader.InvoiceNumber;
journalTrans.Txt = vendInvoiceJourStageHeader.InvoiceDescription;
invdatetime = DateTimeUtil::anyToDateTime(vendInvoiceJourStageHeader.InvoiceDate);
dateheader = DateTimeUtil::date(invdatetime);
invdate = date2Str(dateheader,321,DateDay::Digits2,DateSeparator::Slash,DateMonth::Digits2,DateSeparator::Hyphen,DateYear::Digits4);
dateheaderval = str2Date(invdate,321);
journalTrans.INTC_InvDate = dateheaderval;
journalTrans.DocumentDate = str2Date(vendInvoiceJourStageHeader.InvoiceReceivedDate,321);
journalTrans.TransDate = today();//str2Date(journalDeatils.TransactionDate, 123);
journalTrans.AccountType = LedgerJournalACType::Vend;
journalTrans.LedgerDimension = dimCombination1.RecId;
//journalTrans.LedgerDimension = classVend.generateLedgerDimension(offsetCon, vendInvoiceJourStageHeader.Vendor);
journalTrans.AmountCurDebit = 0.00;
journalTrans.AmountCurCredit = amountcr;
journalTrans.OffsetAccountType = LedgerJournalACType::Ledger;
//journalTrans.OffsetLedgerDimension = classVend.generateLedgerDimension(offsetCon, vendInvoiceJourStageLine.Ledger);
//journalTrans.OffsetLedgerDimension = dimCombinationLoc.RecId;
if(vendInvoiceJourStageLine.OffsetAccount == '')
{
journalTrans.OffsetLedgerDimension = dimCombinationLoc.RecId;
}
else
{
journalTrans.OffsetLedgerDimension = classVend.generateLedgerDimension(offsetConLoc, vendInvoiceJourStageLine.OffsetAccount);
}
journalTrans.INTC_DocumentRef = vendInvoiceJourStageHeader.Docref;
if(vendInvoiceJourStageLine.Currency == #EmptyCurrency)
{
journalTrans.CurrencyCode = #AEDCurrency;
}
else
{
journalTrans.CurrencyCode = vendInvoiceJourStageLine.Currency;
}
journalTrans.ExchRate = Currency::exchRate1(journalTrans.CurrencyCode, journalTrans.TransDate);
journalTrans.Approver = hcmWorker.RecId;
journalTrans.Approved =NoYes::Yes;
journalTrans.PostingProfile = "General";
journalTrans.INTC_PurchId = vendInvoiceJourStageLine.PONo;
journalTrans.TransactionType = LedgerTransType::Vend;
journalTrans.INTC_WorkOrderId = vendInvoiceJourStageLine.WorkOrderNo;
journalTrans.INTC_Qty = vendInvoiceJourStageLine.Qty;
journalTrans.Payment = vendInvoiceJourStageLine.PaymentTerms;
if(amountcr>0)
{
journalTrans.insert();
}
ttsbegin;
select forupdate vendInvoiceJourStageHeaderUpdate where vendInvoiceJourStageHeaderUpdate.RecId == vendInvoiceJourStageHeader.RecId;
vendInvoiceJourStageHeaderUpdate.UpdateFlag = 1;
vendInvoiceJourStageHeaderUpdate.update();
ttscommit;
//======================
numberSeq.used();
//======================
}
catch(Exception::Error)
{
throw Exception::Error;
}
}
public DimensionDynamicAccount generateLedgerDimension(container _conData, MainAccountNum _mainAccountNum)
{
int hierarchyCount;
int hierarchyIdx;
RecId dimAttId_MainAccount;
LedgerRecId ledgerRecId;
MainAccount mainAccount;
RefRecId recordvalue;
DimensionAttribute dimensionAttribute;
DimensionAttributeValue dimensionAttributeValue;
DimensionSetSegmentName DimensionSet;
DimensionStorage dimStorage;
LedgerAccountContract LedgerAccountContract = new LedgerAccountContract();
DimensionAttributeValueContract ValueContract;
List valueContracts = new List(Types::Class);
dimensionAttributeValueCombination dimensionAttributeValueCombination;
mainAccount = MainAccount::findByMainAccountId(_mainAccountNum);
recordvalue = DimensionHierarchy::getAccountStructure(mainAccount.RecId,Ledger::current());
hierarchyCount = DimensionHierarchy::getLevelCount(recordvalue);
DimensionSet = DimensionHierarchyLevel::getDimensionHierarchyLevelNames(recordvalue);
for(hierarchyIdx = 1;hierarchyIdx<=hierarchyCount;hierarchyIdx++)
{
if(hierarchyIdx == 1)
{
continue;
}
dimensionAttribute = DimensionAttribute::findByLocalizedName(DimensionSet[hierarchyIdx],false,"en-us");
if(dimensionAttribute)
{
dimensionAttributeValue = DimensionAttributeValue::findByDimensionAttributeAndValue(
dimensionAttribute,conPeek(_conData,hierarchyIdx));
if(dimensionAttributeValue)
{
ValueContract = new DimensionAttributeValueContract();
ValueContract.parmName(dimensionAttribute.Name) ;
ValueContract.parmValue(dimensionAttributeValue.CachedDisplayValue);
valueContracts.addEnd(ValueContract);
}
}
}
LedgerAccountContract.parmMainAccount(_mainAccountNum);
LedgerAccountContract.parmValues(valueContracts);
dimStorage = DimensionServiceProvider::buildDimensionStorageForLedgerAccount(LedgerAccountContract);
dimensionAttributeValueCombination = DimensionAttributeValueCombination::find(dimStorage.save());
ledgerRecId = dimensionAttributeValueCombination.RecId;
return ledgerRecId;
}
Happy Coding !!!!
there is not classes used to create the journals instead of using LedgerJournalTable,LedgerJournalTrans like AXLedgerJournalTable,AXLedgerJournalTrans
ReplyDeletethere is no classes used to create the journals instead of using LedgerJournalTable,LedgerJournalTrans like AXLedgerJournalTable,AXLedgerJournalTrans ?
ReplyDeleteBetMGM App, Promo Code and Sign-Up Bonus - JamBase
ReplyDeleteBetMGM is 인천광역 출장안마 a great online sports betting site in Arizona. You can 김포 출장안마 get the BetMGM 춘천 출장안마 BetMGM risk-free bet offer and make a deposit for your account 삼척 출장마사지 Rating: 4 강릉 출장마사지 · Review by JT Hub