class NAClaimReImbursementB2BPaymentGeneration extends RunBaseBatch { boolean showInfo; boolean isRunningInAutoMode; //container emplAdvancePayRecId; #AviFiles #define.CurrentVersion(1) #LOCALMACRO.CurrentList isRunningInAutoMode, #ENDMACRO private void create(RecId _naClaimReImbursementRequestRecId) { LedgerJournalTable ledgerJournalTable; LedgerJournalTrans ledgerJournalTrans; NAClaimReImbursementRequest naClaimReImbursementRequest; NAClaimReImbursementDetail naClaimReImbursementDetail; NAClaimReImbursementPaymentHistory naClaimReImbursementPaymentHistory; Amount TotalClaimAmount=0; int lineNo; voucher voucher; HcmEmployment hcmEmployment; VendBankAccount vendBankAccount; date FirstWorkingDate; ExchangeRateType ExchangeRateType; ExchangeRateCurrencyPair ExchangeRateCurrencyPair; ExchangeRate ExchangeRate; if((dayName(dayOfWk(systemdateget()))=="Wednesday")) { FirstWorkingDate=systemdateget()+4; } else if((dayName(dayOfWk(systemdateget()))=="Thursday")) { FirstWorkingDate=systemdateget()+4; } else if((dayName(dayOfWk(systemdateget()))=="Friday")) { FirstWorkingDate=systemdateget()+3; } else if((dayName(dayOfWk(systemdateget()))=="Saturday")) { FirstWorkingDate=systemdateget()+2; } else FirstWorkingDate=systemDateGet()+2; select firstOnly naClaimReImbursementRequest where naClaimReImbursementRequest.RecId == _naClaimReImbursementRequestRecId; select vendBankAccount where vendBankAccount.HcmWorker==naClaimReImbursementRequest.HcmWorker; ledgerJournalTable.JournalName = HRMParameters::find().B2BPaymentJournalNameId; ledgerJournalTable.NumberSequenceTable = LedgerJournalName::Find(LedgerJournalTable.JournalName).NumberSequenceTable; ttsBegin; ledgerJournalTable.JournalNum = NumberSeq::newGetNum(HRMParameters::numRefPayRollLedgerJournalID()).num(); ttsCommit; ledgerJournalTable.WorkflowApprovalStatus = LedgerJournalWFApprovalStatus::Approved; ledgerJournalTable.JournalType = LedgerJournalType::Payment; ledgerJournalTable.PaymentPosting = NoYes::Yes; ledgerJournalTable.Name = strfmt("Claim re-imbursement: %1", HcmWorker::find(naClaimReImbursementRequest.HcmWorker).name()); ledgerJournalTable.insert(); ttsBegin; voucher = NumberSeq::newGetVoucherFromCode(NumberSequenceTable::find(LedgerJournalName::Find(LedgerJournalTable.JournalName).NumberSequenceTable).NumberSequence).voucher(); ttsCommit; // Create Ledger Journal Lines - Claim Details while select naClaimReImbursementDetail where naClaimReImbursementDetail.RequestID == naClaimReImbursementRequest.RequestID { real ClaimAmount=0; ledgerJournalTrans.JournalNum = ledgerJournalTable.JournalNum; ledgerJournalTrans.LineNum = LineNo + 1; ledgerJournalTrans.Company = curext(); ledgerJournalTrans.PaymentPosting = NoYes::Yes; ledgerJournalTrans.HcmWorker = naClaimReImbursementRequest.HcmWorker; ledgerJournalTrans.Txt = strfmt('Claim %1: %2', naClaimReImbursementDetail.ClaimType, naClaimReImbursementDetail.Description); if(naClaimReImbursementDetail.CurrencyCode!="SAR") { select ExchangeRateType where ExchangeRateType.Name=="Average"; select ExchangeRateCurrencyPair where ExchangeRateCurrencyPair.ExchangeRateType==ExchangeRateType.RecId && ExchangeRateCurrencyPair.FromCurrencyCode==naClaimReImbursementDetail.CurrencyCode && ExchangeRateCurrencyPair.ToCurrencyCode=="SAR"; if(ExchangeRateCurrencyPair) { select ExchangeRate where ExchangeRate.ExchangeRateCurrencyPair==ExchangeRateCurrencyPair.RecId; ClaimAmount= ((naClaimReImbursementDetail.ClaimAmount*ExchangeRate.ExchangeRate)/str2int(enum2str(ExchangeRateCurrencyPair.ExchangeRateDisplayFactor))); } } else { ClaimAmount = naClaimReImbursementDetail.ClaimAmount; } if (ClaimAmount > 0 ) { ledgerJournalTrans.AmountCurDebit = Round(ClaimAmount , 0.01); ledgerJournalTrans.AmountCurCredit = 0; } else { ledgerJournalTrans.AmountCurDebit = 0; ledgerJournalTrans.AmountCurCredit = Round(ClaimAmount, 0.01); } ledgerJournalTrans.CurrencyCode = companyInfoHelper::standardCurrency();//naClaimReImbursementDetail.CurrencyCode; ledgerJournalTrans.ExchRate = ExchangeRateHelper::exchRate(companyInfoHelper::standardCurrency(), systemdateget() ); ledgerJournalTrans.TransDate = FirstWorkingDate; select hcmEmployment where hcmEmployment.Worker == naClaimReImbursementRequest.HcmWorker; ledgerJournalTrans.Voucher = voucher; ledgerJournalTrans.AccountType = LedgerJournalACType::Ledger; ledgerJournalTrans.LedgerDimension = LedgerDimensionFacade::serviceCreateLedgerDimension( PayCodeExpenseAccount::Find(NAClaimParameters::find(naClaimReImbursementDetail.ClaimType).PayCodeId, HcmWorker::find(naClaimReImbursementRequest.HcmWorker).PayrollConfigurationId).ExpenseAccount, hcmEmployment.DefaultDimension); //DimensionDefaultingService::serviceCreateLedgerDimension( //PayCodeExpenseAccount::Find(NAClaimParameters::find(naClaimReImbursementDetail.ClaimType).PayCodeId, HcmWorker::find(naClaimReImbursementRequest.HcmWorker).PayrollConfigurationId).ExpenseAccount, //hcmEmployment.DefaultDimension); ledgerJournalTrans.OffsetAccountType = LedgerJournalACType::Vend; ledgerJournalTrans.OffsetLedgerDimension = LedgerDynamicAccountHelper::getDynamicAccountFromAccountNumber(HRMParameters::find().B2BAccountNum, LedgerJournalACType::Vend); //DimensionStorage::getDynamicAccount(HRMParameters::find().B2BAccountNum, LedgerJournalACType::Vend); ledgerJournalTrans.insert(); LineNo++; TotalClaimAmount = TotalClaimAmount + ClaimAmount; } // Create Ledger Journal Line - Bank Detail if (TotalClaimAmount > 0) { ledgerJournalTrans.JournalNum = ledgerJournalTable.JournalNum; ledgerJournalTrans.LineNum = LineNo + 1; ledgerJournalTrans.Company = curext(); ledgerJournalTrans.PaymentPosting = NoYes::Yes; ledgerJournalTrans.TransactionType = LedgerTransType::Payment; ledgerJournalTrans.PaymMode = HRMParameters::find().B2BPaymMode; ledgerJournalTrans.BankTransType = HRMParameters::find().B2BBankTransType; ledgerJournalTrans.HcmWorker = naClaimReImbursementRequest.HcmWorker; ledgerJournalTrans.Txt = strfmt('Claim re-imbursement payment for employee %1', HcmWorker::find(naClaimReImbursementRequest.HcmWorker).name()); if (TotalClaimAmount > 0 ) { ledgerJournalTrans.AmountCurCredit = 0; ledgerJournalTrans.AmountCurDebit = Round(TotalClaimAmount, 0.01); } ledgerJournalTrans.CurrencyCode = companyInfoHelper::standardCurrency(); ledgerJournalTrans.ExchRate = ExchangeRateHelper::exchRate(companyInfoHelper::standardCurrency(), systemdateget() ); ledgerJournalTrans.TransDate = FirstWorkingDate; select hcmEmployment where hcmEmployment.Worker == naClaimReImbursementRequest.HcmWorker; ledgerJournalTrans.Voucher = voucher; ledgerJournalTrans.AccountType = LedgerJournalACType::Vend; ledgerJournalTrans.LedgerDimension = LedgerDynamicAccountHelper::getDynamicAccountFromAccountNumber(HRMParameters::find().B2BAccountNum, LedgerJournalACType::Vend); //DimensionStorage::getDynamicAccount(HRMParameters::find().B2BAccountNum, LedgerJournalACType::Vend); ledgerJournalTrans.OffsetAccountType = LedgerJournalACType::Bank; ledgerJournalTrans.OffsetLedgerDimension = LedgerDynamicAccountHelper::getDynamicAccountFromAccountNumber(HRMParameters::find().B2BBankAccountID, LedgerJournalACType::Bank); //DimensionStorage::getDynamicAccount(HRMParameters::find().B2BBankAccountID, LedgerJournalACType::Bank); ledgerJournalTrans.PaymMode="B2B"; ledgerJournalTrans.BankTransType="B2B"; ledgerJournalTrans.CustVendBankAccountId=vendBankAccount.AccountID; //ledgerJournalTrans.VendBankAccount=vendBankAccount.RecId; ledgerJournalTrans.PaymentStatus=CustVendPaymStatus::Sent; ledgerJournalTrans.insert(); LineNo++; } ttsbegin; update_recordset naClaimReImbursementDetail setting Payment = NoYes::Yes where naClaimReImbursementDetail.RequestID == naClaimReImbursementRequest.RequestID; update_recordset naClaimReImbursementRequest setting Payment = NoYes::Yes, LastJournalNum = ledgerJournalTable.JournalNum where naClaimReImbursementRequest.RecId == _naClaimReImbursementRequestRecId; naClaimReImbursementPaymentHistory = null; naClaimReImbursementPaymentHistory.RequestID = NAClaimReImbursementRequest::find(_naClaimReImbursementRequestRecId).RequestID; naClaimReImbursementPaymentHistory.TransDate = FirstWorkingDate; naClaimReImbursementPaymentHistory.Payment = NoYes::Yes; naClaimReImbursementPaymentHistory.JournalNameId = HRMParameters::find().B2BPaymentJournalNameId; naClaimReImbursementPaymentHistory.JournalNum = ledgerJournalTable.JournalNum; naClaimReImbursementPaymentHistory.insert(); ttscommit; if (showInfo) { info (strfmt("B2B Payment journal for claim re-imbursement request with number '%1' was been created under accounts payable payment", ledgerJournalTable.JournalNum)); } } public void new() { super(); } public boolean parmIsRunningInAutoMode(boolean _autoMode) { isRunningInAutoMode = _autoMode; return isRunningInAutoMode; } public boolean parmShowInfo(boolean _showInfo = showInfo) { showInfo = _showInfo; return showInfo; } protected boolean showInfo() { return true; } static void main(Args _args) { NAClaimReImbursementB2BPaymentGeneration naClaimReImbursementB2BPaymentGeneration = new NAClaimReImbursementB2BPaymentGeneration(); NAClaimReImbursementRequest naClaimReImbursementRequest; container con; FormDataSource fds = _args.record().dataSource(); int processMarkedRows; if (!_args || _args.dataset() != tableNum(NAClaimReImbursementRequest)) { //Function %1 has been incorrectly called. throw error(strFmt("@SYS22828", funcName())); } if (_args.parm() == 'CalledFromHeader') { processMarkedRows = 0; } else { processMarkedRows = 1; } try { select firstOnly naClaimReImbursementRequest where naClaimReImbursementRequest.RecId == _args.record().RecId; if (naClaimReImbursementRequest.Payment == NoYes::No && naClaimReImbursementRequest.WorkflowState == TradeWorkflowState::Completed) { naClaimReImbursementB2BPaymentGeneration.parmShowInfo(true); naClaimReImbursementB2BPaymentGeneration.parmIsRunningInAutoMode(false); naClaimReImbursementB2BPaymentGeneration.create(naClaimReImbursementRequest.RecId); } else if (naClaimReImbursementRequest.Payment == NoYes::Yes && naClaimReImbursementRequest.WorkflowState == TradeWorkflowState::Completed) { info (strfmt("%1", "Payment journal has been created")); } else { info (strfmt("%1", "Workflow not completed")); } if (_args.caller() && SysFormRun::hasMethod(_args.caller(), 'formUpdate')) { _args.caller().formUpdate(); _args.caller().refreshDatasource(); } } catch(Exception::Error) { exceptionTextFallThrough(); } } }
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter