class INTC_JournalTransCreation
{
public void CreateJournal()
{
#define.initFromJournal('INVTRANS')
#define.journalName('General Journal')
#define.AEDCurrency('AED')
#define.EmptyCurrency('')
INTC_JournalTransactionDetails journalDeatils, journalDeatilsUpdate;
LedgerJournalTable journalTable;
JournalTableData journalTableData;
LedgerJournalTrans journalTrans;
container offsetCon , mainAccountCon;
NumberSeq numberSeq;
Voucher voucher;
LedgerJournalName ledgerJournalName;
select journalDeatils where journalDeatils.UpdateFlag == 1;
{
mainAccountCon = [journalDeatils.LedgerAccount,journalDeatils.Region,journalDeatils.LOB,journalDeatils.Department,journalDeatils.BIN,journalDeatils.Contract];
offsetCon = [journalDeatils.OffsetAccount,journalDeatils.Region,journalDeatils.LOB,journalDeatils.Department,journalDeatils.BIN,journalDeatils.Contract];
ledgerJournalName = LedgerJournalName::find(#initFromJournal);
journalTable.initFromLedgerJournalName(#initFromJournal);
journalTableData = JournalTableData::newTable(journalTable);
journalTable.JournalNum = journalTableData.nextJournalId();
journalTable.Name = #journalName;
if(journalDeatils.Currency == #EmptyCurrency)
{
journalTable.CurrencyCode = #AEDCurrency;
}
else
{
journalTable.CurrencyCode = journalDeatils.Currency;
}
if (journalTable.validateWrite())
{
journalTable.insert();
}
numberSeq = NumberSeq::newGetVoucherFromId(journalTable.NumberSequenceTable, true);
journalTrans.JournalNum = journalTable.JournalNum;
journalTrans.Voucher = numberSeq.voucher();
journalTrans.TransDate = str2Date(journalDeatils.TransactionDate, 123);
journalTrans.Txt = journalDeatils.Description;
journalTrans.AccountType = LedgerJournalACType::Ledger;
journalTrans.LedgerDimension = this.generateLedgerDimension(mainAccountCon, journalDeatils.LedgerAccount);
journalTrans.AmountCurDebit = journalDeatils.AmountCurDebit;
journalTrans.OffsetAccountType = LedgerJournalACType::Ledger;
journalTrans.OffsetLedgerDimension = this.generateLedgerDimension(offsetCon, journalDeatils.LedgerAccount);
if(journalDeatils.Currency == #EmptyCurrency)
{
journalTrans.CurrencyCode = #AEDCurrency;;
}
else
{
journalTrans.CurrencyCode = journalDeatils.Currency;
}
journalTrans.insert();
//ttsbegin;
//select forupdate journalDeatilsUpdate where journalDeatilsUpdate.RecId == journalDeatils.RecId;
//journalDeatilsUpdate.UpdateFlag = 1;
//journalDeatilsUpdate.update();
//ttscommit;
}
}
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;
}
}
{
public void CreateJournal()
{
#define.initFromJournal('INVTRANS')
#define.journalName('General Journal')
#define.AEDCurrency('AED')
#define.EmptyCurrency('')
INTC_JournalTransactionDetails journalDeatils, journalDeatilsUpdate;
LedgerJournalTable journalTable;
JournalTableData journalTableData;
LedgerJournalTrans journalTrans;
container offsetCon , mainAccountCon;
NumberSeq numberSeq;
Voucher voucher;
LedgerJournalName ledgerJournalName;
select journalDeatils where journalDeatils.UpdateFlag == 1;
{
mainAccountCon = [journalDeatils.LedgerAccount,journalDeatils.Region,journalDeatils.LOB,journalDeatils.Department,journalDeatils.BIN,journalDeatils.Contract];
offsetCon = [journalDeatils.OffsetAccount,journalDeatils.Region,journalDeatils.LOB,journalDeatils.Department,journalDeatils.BIN,journalDeatils.Contract];
ledgerJournalName = LedgerJournalName::find(#initFromJournal);
journalTable.initFromLedgerJournalName(#initFromJournal);
journalTableData = JournalTableData::newTable(journalTable);
journalTable.JournalNum = journalTableData.nextJournalId();
journalTable.Name = #journalName;
if(journalDeatils.Currency == #EmptyCurrency)
{
journalTable.CurrencyCode = #AEDCurrency;
}
else
{
journalTable.CurrencyCode = journalDeatils.Currency;
}
if (journalTable.validateWrite())
{
journalTable.insert();
}
numberSeq = NumberSeq::newGetVoucherFromId(journalTable.NumberSequenceTable, true);
journalTrans.JournalNum = journalTable.JournalNum;
journalTrans.Voucher = numberSeq.voucher();
journalTrans.TransDate = str2Date(journalDeatils.TransactionDate, 123);
journalTrans.Txt = journalDeatils.Description;
journalTrans.AccountType = LedgerJournalACType::Ledger;
journalTrans.LedgerDimension = this.generateLedgerDimension(mainAccountCon, journalDeatils.LedgerAccount);
journalTrans.AmountCurDebit = journalDeatils.AmountCurDebit;
journalTrans.OffsetAccountType = LedgerJournalACType::Ledger;
journalTrans.OffsetLedgerDimension = this.generateLedgerDimension(offsetCon, journalDeatils.LedgerAccount);
if(journalDeatils.Currency == #EmptyCurrency)
{
journalTrans.CurrencyCode = #AEDCurrency;;
}
else
{
journalTrans.CurrencyCode = journalDeatils.Currency;
}
journalTrans.insert();
//ttsbegin;
//select forupdate journalDeatilsUpdate where journalDeatilsUpdate.RecId == journalDeatils.RecId;
//journalDeatilsUpdate.UpdateFlag = 1;
//journalDeatilsUpdate.update();
//ttscommit;
}
}
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;
}
}