Create ledger journals in D365FO using X++ + LedgerDimensionACType
internal final class HCL_LedgerJournalImportCSV extends RunBaseBatch
{
private str availableTypes = ".csv";
//In the class Declaration control names for OK and upload control
private const str OkButtonName = 'OkButton';
private const str FileUploadName = 'FileUpload';
Dialog dialog;
str textFile;
QueryRun gQueryRun;
HCL_tempLedgerJournalTransForImport tempLedgerJournalTransForImport;
#define.CurrentVersion(3)
public Object dialog()
{
DialogGroup dialogGroup;
FormBuildControl formBuildControl;
FileUploadBuild dialogFileUpload;
Set enumSet = new Set(Types::Enum);
dialog = super();
dialogGroup = dialog.addGroup("File path");
formBuildControl = dialog.formBuildDesign().control(dialogGroup.name());
dialogFileUpload = formBuildControl.addControlEx(classstr(FileUpload), FileUploadName);
dialogFileUpload.style(FileUploadStyle::MinimalWithFilename);
dialogFileUpload.baseFileUploadStrategyClassName(classstr(FileUploadTemporaryStorageStrategy));
dialogFileUpload.fileTypesAccepted(availableTypes);
dialogFileUpload.fileNameLabel("@SYS308842");
return dialog;
}
protected void setDialogOkButtonEnabled(DialogRunbase _dialog, boolean _isEnabled)
{ FormControl okButtonControl = this.getFormControl(_dialog, OkButtonName);
if (okButtonControl)
{
okButtonControl.enabled(_isEnabled);
}
}
protected FormControl getFormControl(DialogRunbase _dialog, str _controlName)
{
return _dialog.formRun().control(_dialog.formRun().controlId( _controlName));
}
protected void uploadCompleted()
{
FileUpload fileUpload = this.getFormControl(dialog, FileUploadName);
fileUpload.notifyUploadCompleted -= eventhandler(this.UploadCompleted);
textFile = fileUpload.fileName();
this.setDialogOkButtonEnabled(dialog, true);
}
/// Disables the dialog Ok button until the file upload is complete.
public void dialogPostRun(DialogRunbase _dialog)
{
FileUpload fileUpload = this.getFormControl(_dialog, FileUploadName);
fileUpload.notifyUploadCompleted += eventhandler(this.uploadCompleted);
this.setDialogOkButtonEnabled(_dialog, false);
}
/// <summary>
/// Prcoess class where the CSV file is accesed and storeinto table for furhter journal creations
/// </summary>
void processCSVFile()
{
#File
container currentLine;
int totalOfLines;
CommaTextStreamIo localStream;
Num number;
int fileLineNumber;
MainAccountNum mainAccountId,offSetMainAccountId;
LedgerJournalACType LedgerJournalACType;
HCL_LedgerJournalImportCSV ledgerJournalmportCSV;
FileUpload fileUploadControl = this.getFormControl(dialog, FileUploadName);
FileUploadTemporaryStorageResult fileUploadResult = fileUploadControl.getFileUploadResult();
if (fileUploadResult != null && fileUploadResult.getUploadStatus())
{
textFile = fileUploadResult.getDownloadUrl();
}
localStream = CommaTextStreamIo::constructForRead(File::UseFileFromURL(textFile));
if (localStream.status() != IO_Status::Ok)
{
throw error(strfmt('Is not possible to open the file. Error %1',enum2str(localStream.status())));
}
localStream.inFieldDelimiter("\,");
localStream.inRecordDelimiter("\n");
currentLine = localStream.read();
fileLineNumber++;
if(conlen(currentLine) == 1)
{
throw error('Is not possible to import the file, incorrect format');
}
currentLine = localStream.read();
fileLineNumber++;
while(currentLine)
{
tempLedgerJournalTransForImport.clear();
tempLedgerJournalTransForImport.COMPANY = conPeek(currentLine,1);//Company
//tempLedgerJournalTransForImport.JOURNALNUM = conPeek(currentLine,2);//Journal
tempLedgerJournalTransForImport.JOURNALNAME = conPeek(currentLine,2);//Name
tempLedgerJournalTransForImport.TRANSDATE = str2Date(conPeek(currentLine,3),213);//Date
tempLedgerJournalTransForImport.ACCOUNTTYPE = str2Enum(ledgerJournalACType,conPeek(currentLine,4));//AccountType
tempLedgerJournalTransForImport.LINENUM = conPeek(currentLine,5);//LineNum
mainAccountId = conPeek(currentLine,6);
if (mainAccountId && tempLedgerJournalTransForImport.ACCOUNTTYPE == LedgerJournalACType::Ledger)
{
tempLedgerJournalTransForImport.LedgerDimension = this.getLedgerDimension(mainAccountId,conPeek(currentLine,7),conPeek(currentLine,8),conPeek(currentLine,9),conPeek(currentLine,10),conPeek(currentLine,11),NoYes::Yes);
}
else if (mainAccountId)
{
tempLedgerJournalTransForImport.LedgerDimension = this.getLedgerJournalACTypeIfNotLedger(mainAccountId, tempLedgerJournalTransForImport.ACCOUNTTYPE,conPeek(currentLine,7),conPeek(currentLine,8),conPeek(currentLine,9),conPeek(currentLine,10),conPeek(currentLine,11),NoYes::Yes);
}
tempLedgerJournalTransForImport.TXT = conPeek(currentLine,12);//Text
tempLedgerJournalTransForImport.AMOUNTCURDEBIT = conPeek(currentLine,13);//Debit
tempLedgerJournalTransForImport.AMOUNTCURCREDIT = conPeek(currentLine,14);//Credit
tempLedgerJournalTransForImport.INVOICE = conPeek(currentLine,15);//Inv006oiceNumber
tempLedgerJournalTransForImport.DUE = str2Date(conPeek(currentLine,16),213);//Due Date
tempLedgerJournalTransForImport.OFFSETACCOUNTTYPE = str2Enum(ledgerJournalACType,conPeek(currentLine,17));//OffsetAccountType
offSetMainAccountId = conPeek(currentLine,18);
if (offSetMainAccountId && tempLedgerJournalTransForImport.ACCOUNTTYPE == LedgerJournalACType::Ledger)
{
tempLedgerJournalTransForImport.OffsetLedgerDimension = this.getLedgerDimension(offSetMainAccountId,conPeek(currentLine,19),conPeek(currentLine,20),conPeek(currentLine,21),conPeek(currentLine,22),conPeek(currentLine,23),NoYes::No);
}
else if (offSetMainAccountId)
{
tempLedgerJournalTransForImport.OffsetLedgerDimension = this.getLedgerJournalACTypeIfNotLedger(offSetMainAccountId,tempLedgerJournalTransForImport.OFFSETACCOUNTTYPE,conPeek(currentLine,19),conPeek(currentLine,20),conPeek(currentLine,21),conPeek(currentLine,22),conPeek(currentLine,23),NoYes::No);
}
tempLedgerJournalTransForImport.PAYMENT = conPeek(currentLine,24);//Terms of payment
tempLedgerJournalTransForImport.DOCUMENTNUM = conPeek(currentLine,25);//Document
tempLedgerJournalTransForImport.DOCUMENTDATE = conPeek(currentLine,26);//Document Date
tempLedgerJournalTransForImport.PAYMMODE = conPeek(currentLine,27);//Method of Payment
tempLedgerJournalTransForImport.CURRENCYCODE = conPeek(currentLine,28);//Currency
tempLedgerJournalTransForImport.BANKTRANSTYPE = conPeek(currentLine,29);//Bank Transaction Type
tempLedgerJournalTransForImport.PAYMREFERENCE = conPeek(currentLine,30);//Payment Reference
tempLedgerJournalTransForImport.insert();
//info(strFmt("Number : %1",number));
currentLine = localStream.read();
}
ledgerJournalmportCSV = new HCL_LedgerJournalImportCSV();
ledgerJournalmportCSV.createJournal();
}
/// <summary>
/// Class entry point. The system will call this method when a designated menu
/// is selected or when execution starts and this class is set as the startup class.
/// </summary>
/// <param name = "_args">The specified arguments.</param>
public static void main(Args _args)
{
HCL_LedgerJournalImportCSV ledgerJournalmportCSV;
ledgerJournalmportCSV = new HCL_LedgerJournalImportCSV();
ledgerJournalmportCSV.prompt();
{
ttsbegin;
ledgerJournalmportCSV.processCSVFile();
ttscommit;
}
}
protected void createJournal()
{
LedgerJournalTable ledgerJournalTable;
JournalTableData journalTableData;
LedgerjournalTrans ledgerjournalTrans;
HCL_tempLedgerJournalTransForImport tempLedgerJournalTransForImportLoc1, tempLedgerJournalTransForImportLoc2;
while select journalName,CurrencyCode from tempLedgerJournalTransForImportLoc1
group by journalName
{
ledgerJournalTable.initFromLedgerJournalName("");//from excel file
journalTableData = JournalTableData::newTable(ledgerJournalTable);
ledgerJournalTable.JournalNum = journalTableData.nextJournalId();
ledgerJournalTable.JournalName = tempLedgerJournalTransForImportLoc1.JournalName;
ledgerJournalTable.CurrencyCode = tempLedgerJournalTransForImportLoc1.CurrencyCode;
if (ledgerJournalTable.validateWrite())
{
ledgerJournalTable.insert();
}
if (ledgerJournalTable.RecId)
{
//create a Temp table // based on excel
while select * from tempLedgerJournalTransForImportLoc2
where tempLedgerJournalTransForImportLoc2.JournalName == ledgerJournalTable.JournalName
{
ledgerJournalTrans.COMPANY = tempLedgerJournalTransForImportLoc2.COMPANY;
ledgerJournalTrans.JOURNALNUM = ledgerJournalTable.JournalNum;
ledgerjournalTrans.Voucher = this.getVoucher(ledgerJournalTable);
//ledgerJournalTrans.JOURNALNAME = tempLedgerJournalTransForImportLoc2.JOURNALNAME;
ledgerJournalTrans.TRANSDATE = tempLedgerJournalTransForImportLoc2.TRANSDATE;
ledgerJournalTrans.ACCOUNTTYPE = tempLedgerJournalTransForImportLoc2.ACCOUNTTYPE;
ledgerJournalTrans.LINENUM = tempLedgerJournalTransForImportLoc2.LINENUM;
ledgerJournalTrans.LedgerDimension = tempLedgerJournalTransForImportLoc2.LedgerDimension;
ledgerJournalTrans.TXT = tempLedgerJournalTransForImportLoc2.TXT;
ledgerJournalTrans.AMOUNTCURDEBIT = tempLedgerJournalTransForImportLoc2.AMOUNTCURDEBIT;
ledgerJournalTrans.AMOUNTCURCREDIT = tempLedgerJournalTransForImportLoc2.AMOUNTCURCREDIT;
ledgerJournalTrans.INVOICE = tempLedgerJournalTransForImportLoc2.INVOICE;
ledgerJournalTrans.DUE = tempLedgerJournalTransForImportLoc2.DUE;
ledgerJournalTrans.OFFSETACCOUNTTYPE = tempLedgerJournalTransForImportLoc2.OFFSETACCOUNTTYPE;
ledgerJournalTrans.OffsetLedgerDimension = tempLedgerJournalTransForImportLoc2.OffsetLedgerDimension;
ledgerJournalTrans.PAYMENT = tempLedgerJournalTransForImportLoc2.PAYMENT;
ledgerJournalTrans.DOCUMENTNUM = tempLedgerJournalTransForImportLoc2.DOCUMENTNUM;
ledgerJournalTrans.DOCUMENTDATE = tempLedgerJournalTransForImportLoc2.DOCUMENTDATE;
ledgerJournalTrans.PAYMMODE = tempLedgerJournalTransForImportLoc2.PAYMMODE;
ledgerJournalTrans.CURRENCYCODE = tempLedgerJournalTransForImportLoc2.CURRENCYCODE;
ledgerJournalTrans.BANKTRANSTYPE = tempLedgerJournalTransForImportLoc2.BANKTRANSTYPE;
ledgerJournalTrans.PAYMREFERENCE = tempLedgerJournalTransForImportLoc2.PAYMREFERENCE;
ledgerjournalTrans.Approved = NoYes::Yes;
ledgerJournalTrans.SkipBlockedForManualEntryCheck = true;
/*
ledgerJournalTrans.defaultRow();
*/
if (ledgerJournalTrans.validateWrite())
{
ledgerjournalTrans.insert();
}
}
}
//return ledgerJournalTable.JournalNum;
}
delete_from tempLedgerJournalTransForImport;
}
public Voucher getVoucher(ledgerJournalTable _ledgerJournalTable)
{
NumberSequenceTable numberSequenceTable;
numberSequenceTable = NumberSequenceTable::find(LedgerJournalName::find(_ledgerJournalTable.JournalName).NumberSequenceTable);
return NumberSeq::newGetVoucherFromCode(numberSequenceTable.NumberSequence).voucher();
//return NumberSequenceTable::find(numberSequenceTable.RecId).vouch
}
/// <summary>
/// </summary>
/// <returns>Return the class desc</returns>
public client server static ClassDescription description()
{
return "Ledger journal import CSV";
}
/// <summary>
/// </summary>
/// <returns>Whether the class can be used in a batch task</returns>
protected boolean canGoBatchJournal()
{
return true;
}
/// <summary>
/// <returns></returns>
public container pack()
{
container pack = conNull();
if (gQueryRun)
{
pack = gQueryRun.pack();
}
return [#CurrentVersion] + [pack];
}
/// <summary>
/// </summary>
/// <param name = "packedClass"></param>
/// <returns></returns>
public boolean unpack(container _packedClass)
{
boolean ret = true;
int version = RunBase::getVersion(_packedClass);
container packedQuery = conNull();
switch (version)
{
case #CurrentVersion:
[version, packedQuery] = _packedClass;
if (SysQuery::isPackedOk(packedQuery))
{
gQueryRun = new QueryRun(packedQuery);
ret = true;
}
break;
default:
ret = false;
}
return ret;
}
/// <summary>
/// Allows the class go batch
/// </summary>
/// <returns>Return the result</returns>
public boolean canGoBatch()
{
return true;
}
/// <summary>
/// </summary>
/// <returns>Return the true result</returns>
public boolean runsImpersonated()
{
return true;
}
/// <summary>
/// Doesn't allows the class run in the new session
/// </summary>
/// <returns>Return the result</returns>
protected boolean canRunInNewSession()
{
return true;
}
/// <summary>
/// </summary>
/// <returns></returns>
public boolean showQueryValues()
{
return true;
}
/// <summary>
/// </summary>
/// <returns></returns>
public QueryRun queryRun()
{
return gQueryRun;
}
/// <summary>
/// Retruns the ledger dimenion for below param list
/// </summary>
/// <param name = "_ledgerAccount"> main account id</param>
/// <param name = "_BusinessUnit"></param>
/// <param name = "_RegionalSurgicalOffice"></param>
/// <param name = "_ConsultationOffice"></param>
/// <param name = "_Department"></param>
/// <param name = "_Category"></param>
/// <param name = "_isLedgerYesOrOffSetDim"> Dummy param, just to identified the Ledger Dimension and Offset Ledeger Dimension to execute if block</param>
/// <returns></returns>
public DimensionDynamicAccount getLedgerDimension(str _ledgerAccount,
str _BusinessUnit,
str _RegionalSurgicalOffice,
str _ConsultationOffice,
str _Department,
str _Category,
NoYes _isLedgerYesOrOffSetDim)
{
DimensionServiceProvider DimensionServiceProvider = new DimensionServiceProvider();
LedgerAccountContract LedgerAccountContract = new LedgerAccountContract();
DimensionAttributeValueContract ValueContract;
List ListValueContract = new List(Types::Class);
dimensionAttributeValueCombination dimensionAttributeValueCombination;
DimensionStorage dimStorage;
if (_isLedgerYesOrOffSetDim == NoYes::Yes)
{
if (_businessUnit)
{
ValueContract = new DimensionAttributeValueContract();
ValueContract.parmName('BusinessUnit') ;
ValueContract.parmValue(_BusinessUnit);
ListValueContract.addEnd(ValueContract);
}
if (_RegionalSurgicalOffice)
{
ValueContract = new DimensionAttributeValueContract();
ValueContract.parmName('RegionalSurgicalOffice') ;
ValueContract.parmValue(_RegionalSurgicalOffice);
ListValueContract.addEnd(ValueContract);
}
//Department
if (_ConsultationOffice)
{
ValueContract = new DimensionAttributeValueContract();
ValueContract.parmName('ConsultationOffice') ;
ValueContract.parmValue(_ConsultationOffice);
}
if (_Department)
{
ValueContract = new DimensionAttributeValueContract();
ValueContract.parmName('Department') ;
ValueContract.parmValue(_Department);
ListValueContract.addEnd(ValueContract);
}
if (_Category)
{
ValueContract = new DimensionAttributeValueContract();
ValueContract.parmName('Category') ;
ValueContract.parmValue(_Category);
ListValueContract.addEnd(ValueContract);
}
}
else
{
if (_businessUnit)
{
ValueContract = new DimensionAttributeValueContract();
ValueContract.parmName('Offset BusinessUnit') ;
ValueContract.parmValue(_BusinessUnit);
ListValueContract.addEnd(ValueContract);
}
if (_RegionalSurgicalOffice)
{
ValueContract = new DimensionAttributeValueContract();
ValueContract.parmName('Offset RegionalSurgicalOffice') ;
ValueContract.parmValue(_RegionalSurgicalOffice);
ListValueContract.addEnd(ValueContract);
}
//Department
if (_ConsultationOffice)
{
ValueContract = new DimensionAttributeValueContract();
ValueContract.parmName('Offset ConsultationOffice') ;
ValueContract.parmValue(_ConsultationOffice);
}
if (_Department)
{
ValueContract = new DimensionAttributeValueContract();
ValueContract.parmName('Offset Department') ;
ValueContract.parmValue(_Department);
ListValueContract.addEnd(ValueContract);
}
if (_Category)
{
ValueContract = new DimensionAttributeValueContract();
ValueContract.parmName('Offset Category') ;
ValueContract.parmValue(_Category);
ListValueContract.addEnd(ValueContract);
}
}
LedgerAccountContract.parmMainAccount(_ledgerAccount);
LedgerAccountContract.parmValues(ListValueContract);
dimStorage = DimensionServiceProvider::buildDimensionStorageForLedgerAccount(LedgerAccountContract);
dimensionAttributeValueCombination = DimensionAttributeValueCombination::find(dimStorage.save());
return dimensionAttributeValueCombination.RecId;
}
/// <summary>
/// Constructs a <c>LedgerDimensionAccount</c> object for the specified non-ledger account.
/// </summary>
/// <param name="_account">
/// The string value of the account.
/// </param>
/// <param name="_accountType">
/// The type of the account.
/// </param>
/// <param name="_enumType">
/// The type of the enumeration for the account type.
/// </param>
/// <param name="_custVend">
/// A value that indicates whether this is a customer or vendor module.
/// </param>
/// <returns>
/// The record ID of a ledger dimension that represents the specified account and type.
/// </returns>
public static server DimensionDynamicAccount getDynamicAccount(
LedgerJournalAC _account,
int _accountType,
enumId _enumType = enumnum(LedgerJournalACType),
ModuleInventCustVend _custVend = ModuleInventCustVend::Cust)
{
DimensionStorage dimStorage;
DimensionAttributeValue dimAttrValue;
DimensionStorageSegment segment;
// Empty account is a zero ledger dimension
if (!_account)
{
return 0;
}
// Multi-typed accounts have exactly one segment
dimStorage = DimensionStorage::construct(1);
// Use the system-generated dimension hierarchy for the account type
dimStorage.addAccountStructure(HCL_LedgerJournalImportCSV::getHierarchyIdByAccountType(_accountType, _enumType, _custVend), 1);
segment = dimStorage.getSegment(1);
// Set the account string value
segment.parmDisplayValue(_account);
// Get the dimension attribute value for the account
dimAttrValue = DimensionAttributeValue::findByDimensionAttributeAndValue(
HCL_LedgerJournalImportCSV::getAttributeByAccountType(_accountType, _enumType, _custVend),
_account,
false,
true);
// The backing entity must exist for us to create a valid combination, otherwise no level values get inserted and a 0 recId is returned
// debug::assert(dimAttrValue.RecId != 0);
segment.parmDimensionAttributeValueId(dimAttrValue.RecId);
segment.parmHashKey(dimAttrValue.HashKey);
// Required to reset the hasChanged flag
dimStorage.setSegment(1, segment);
return dimStorage.save();
}
/// <summary>
/// Gets the <c>DimensionHierarchyType</c> field for the specified account type.
/// </summary>
/// <param name="_accountType">
/// The account type from which to retrieve a <c>DimensionHierarchyType</c>.
/// </param>
/// <param name="_enumType">
/// The type of the enumeration that specifies the account type.
/// </param>
/// <param name="_custVend">
/// A value that indicates whether this is a customer or vendor module.
/// </param>
/// <returns>
/// A system-generated dimension hierarchy for the specified account type.
/// </returns>
public static DimensionHierarchyType getHierarchyTypeByAccountType( int _accountType,
EnumId _enumType = enumNum(LedgerJournalACType),
ModuleInventCustVend _custVend = ModuleInventCustVend::Cust)
{
// <GIN>
#ISOCountryRegionCodes
// </GIN>
switch (_enumType)
{
case enumNum(LedgerJournalACType):
switch (_accountType)
{
case LedgerJournalACType::Bank:
return DimensionHierarchyType::BankAccount;
case LedgerJournalACType::Cust:
return DimensionHierarchyType::Customer;
case LedgerJournalACType::FixedAssets:
return DimensionHierarchyType::FixedAsset;
case LedgerJournalACType::Ledger:
return DimensionHierarchyType::AccountStructure; // Used by dynamic accounts as a marker to mean account structure or default account
case LedgerJournalACType::Project:
return DimensionHierarchyType::Project;
case LedgerJournalACType::Vend:
return DimensionHierarchyType::Vendor;
// <GEERU>
case LedgerJournalACType::FixedAssets_RU:
return DimensionHierarchyType::FixedAssets_RU;
case LedgerJournalACType::RDeferrals:
return DimensionHierarchyType::RDeferrals;
case LedgerJournalACType::RCash:
return DimensionHierarchyType::RCash;
case LedgerJournalACType::Employee_RU:
return DimensionHierarchyType::Employee_RU;
// </GEERU>
}
break;
}
// Should not get to here, as the enumeration was not expected to exist
throw error(Error::wrongUseOfFunction(funcName()));
}
/// <summary>
/// Gets a system-generated dimension hierarchy for the specified account type.
/// </summary>
/// <param name="_accountType">
/// The account type from which to retrieve a dimension hierarchy.
/// </param>
/// <param name="_enumType">
/// The type of the enumeration that specifies the account type.
/// </param>
/// <param name="_custVend">
/// A value that indicates whether this is a customer or a vendor module.
/// </param>
/// <returns>
/// A system-generated dimension hierarchy for the specified account type.
/// </returns>
public static RecId getHierarchyIdByAccountType(
int _accountType,
EnumId _enumType = enumNum(LedgerJournalACType),
ModuleInventCustVend _custVend = ModuleInventCustVend::Cust)
{
DimensionHierarchyType dimHierarchyType;
// Set structure type based on account type
dimHierarchyType = HCL_LedgerJournalImportCSV::getHierarchyTypeByAccountType(_accountType, _enumType, _custVend);
return DimensionHierarchy::getHierarchyIdByHierarchyType(dimHierarchyType);
}
public static DimensionAttribute getAttributeByAccountType(
int _accountType,
enumId _enumType = enumNum(LedgerJournalACType),
ModuleInventCustVend _custVend = ModuleInventCustVend::Cust)
{
DimensionHierarchyType dimHierarchyType;
// Set appropriate backing entity information based on type
dimHierarchyType = HCL_LedgerJournalImportCSV::getHierarchyTypeByAccountType(_accountType, _enumType, _custVend);
return DimensionAttribute::getAttributeByHierarchyType(dimHierarchyType);
}
public DimensionDynamicAccount getLedgerJournalACTypeIfNotLedger(str _ledgerAccount,
LedgerJournalACType _accountType,
str _BusinessUnit,
str _RegionalSurgicalOffice,
str _ConsultationOffice,
str _Department,
str _Category,
NoYes _noYes)
{
//DimensionDynamicAccount ledgerDim;
container cont1,cont2,ledgerDimension;
int cnt;
cont1 = conNull();
cont2 = conNull();
ledgerDimension = conNull();
cnt = 0;
//Offset Account Type
return HCL_LedgerJournalImportCSV::getDynamicAccount(_ledgerAccount,enum2int(_accountType));
// Below commented code can be used when we need defualt dimensions
/*if(_noYes == NoYes::Yes)
{
if(_BusinessUnit != '')
{
cnt++;
cont2+=['BusinessUnit',_BusinessUnit];
}
if(_RegionalSurgicalOffice != '')
{
cnt++;
cont2+=['RegionalSurgicalOffice',_RegionalSurgicalOffice];
}
if(_ConsultationOffice != '')
{
cnt++;
cont2+=['ConsultationOffice',_ConsultationOffice];
}
if(_Department != '')
{
cnt++;
cont2+=['Department',_Department];
}
if(_Category != '')
{
cnt++;
cont2+=['Category',_Category];
}
}
else
{
if(_BusinessUnit != '')
{
cnt++;
cont2+=['Offset BusinessUnit',_BusinessUnit];
}
if(_RegionalSurgicalOffice != '')
{
cnt++;
cont2+=['Offset RegionalSurgicalOffice',_RegionalSurgicalOffice];
}
if(_ConsultationOffice != '')
{
cnt++;
cont2+=['Offset ConsultationOffice',_ConsultationOffice];
}
if(_Department != '')
{
cnt++;
cont2+=['Offset Department',_Department];
}
if(_Category != '')
{
cnt++;
cont2+=['Offset Category',_Category];
}
}
//ledgerDimension +=cnt;
//ledgerDimension +=cont2;
//ledgerJournalTrans.OffsetLedgerDimension = ledgerDim;
Info(strFmt("%1",ledgerDim));
//DimensionDefault = AxdDimensionUtil::getDimensionAttributeValueSetId(ledgerDimension);
//LedgerJournalTrans.modifiedField(fieldNum(LedgerJournalTrans,OffsetLedgerDimension));
//ledgerJournalTrans.OffsetDefaultDimension = DimensionDefault;
} */
}
}
Comments
Post a Comment