void createLedgerJournal(IWS_PurchSettlementDetailsTable _detailsTable)
{
LedgerJournalName ledgerJournalName;
LedgerJournalTable ledgerJournalTable;
LedgerJournalTrans ledgerJournalTrans;
LedgerJournalCheckPost ledgerJournalCheckPost;
NumberSeq numberseq;
LedgerJournalNameId ledgerJournalNameId = "GL"; //General Journal
VendTrans vendTrans;
VendTransOpen transOpen;
IWS_VendInvoice vendInvoice;
LedgerJournalEngine ledgerJournalEngine;
VendTable vendTable;
Voucher voucher;
CustVendOpenTransManager manager;
//LedgerJournalTxt journalTxt;
;
ttsbegin;
select firstonly ledgerJournalTable
where ledgerJournalTable.IWS_VendSettlementId == _detailsTable.VendSettlementId;
if(ledgerJournalTable.RecId)
{
throw error(strfmt("@IWS1399",_detailsTable.VendSettlementId,
ledgerJournalTable.JournalNum));
}
//create ledgerjournalTable
ledgerJournalTable.clear();
ledgerJournalTable.JournalNum = JournalTableData::newTable(ledgerJournalTable).nextJournalId();
vendTable = VendTable::find(_detailsTable.VendAccount);
ledgerJournalName = LedgerJournalName::find(LedgerJournalNameId);
ledgerJournalTable.JournalName = ledgerJournalName.JournalName;
ledgerJournalTable.initFromLedgerJournalName();
ledgerJournalTable.Name = "@IWS1378";
ledgerJournalTable.IWS_VendSettlementId = _detailsTable.VendSettlementId;
ledgerJournalTable.doInsert();
//create ledgerjournalTrans
ledgerJournalEngine = new LedgerJournalEngine();
ledgerJournalEngine.ledgerJournalTable(ledgerJournalTable);
select sum(TotalAmount) from vendInvoice
where vendInvoice.VendSettlementId == _detailsTable.VendSettlementId;
numberseq = NumberSeq::newGetVoucherFromCode(ledgerJournalName.VoucherSeries);
voucher = numberseq.voucher();
ledgerJournalTrans.Voucher = voucher;
ledgerJournalTrans.initValue();
ledgerJournalTrans.JournalNum = ledgerJournalTable.JournalNum;
ledgerJournalTrans.AccountType = LedgerJournalACType::Vend;
ledgerJournalTrans.AccountNum = _detailsTable.VendAccount;
ledgerJournalTrans.TransDate = systemdateget();
ledgerJournalTrans.OffsetAccountType = LedgerJournalACType::Ledger;
ledgerJournalTrans.Txt = "@IWS1378";
ledgerJournalEngine.IWS_initFromVendTable(ledgerJournalTrans,vendTable);
ledgerJournalTrans.AmountCurDebit = decround(vendInvoice.TotalAmount,2);
ledgerJournalTrans.SettleVoucher = SettlementType::SelectedTransact;
ledgerJournalTrans.DocumentNum = _detailsTable.VendSettlementId;
ledgerJournalTrans.insert();
select firstonly transOpen
join vendTrans
where transOpen.AccountNum == vendTrans.AccountNum
&& transOpen.RefRecId == vendTrans.RecId
&& vendTrans.Invoice == _detailsTable.VendSettlementId
&& vendTrans.AccountNum == _detailsTable.VendAccount;
if(transOpen.RecId)
{
manager = CustVendOpenTransManager::construct(ledgerJournalTrans);
/*
manager.calcAndUpdateFine_BR(transOpen.company(),
transOpen,
ledgerJournalTrans.TransDate);
manager.calcAndUpdateFinInterest_BR(transOpen.company(),
transOpen,
ledgerJournalTrans.TransDate);
*/
manager.updateTransMarked(transOpen, NoYes::Yes);
}
else
{
throw error(strfmt("@IWS1403",_detailsTable.VendAccount,
_detailsTable.VendSettlementId));
}
//create branch ledgerjournaltrans
while select vendInvoice
where vendInvoice.VendSettlementId == _detailsTable.VendSettlementId
{
ledgerJournalTrans.clear();
ledgerJournalTrans.Voucher = voucher;
ledgerJournalTrans.initValue();
ledgerJournalTrans.JournalNum = ledgerJournalTable.JournalNum;
ledgerJournalTrans.AccountType = LedgerJournalACType::Vend;
ledgerJournalTrans.AccountNum = _detailsTable.VendAccount;
ledgerJournalTrans.TransDate = systemdateget();
ledgerJournalTrans.OffsetAccountType = LedgerJournalACType::Ledger;
ledgerJournalTrans.Txt = "@IWS1378";
ledgerJournalEngine.IWS_initFromVendTable(ledgerJournalTrans,vendTable);
ledgerJournalTrans.AmountCurCredit = decround(vendInvoice.TotalAmount,2);
//ledgerJournalTrans.SettleVoucher = SettlementType::SelectedTransact;
ledgerJournalTrans.Invoice = vendInvoice.InvoiceId;
ledgerJournalTrans.insert();
}
//create branch ledgerjournaltrans tax
while select vendInvoice
where vendInvoice.VendSettlementId == _detailsTable.VendSettlementId
{
ledgerJournalTrans.clear();
ledgerJournalTrans.Voucher = voucher;
ledgerJournalTrans.initValue();
ledgerJournalTrans.JournalNum = ledgerJournalTable.JournalNum;
ledgerJournalTrans.AccountType = LedgerJournalACType::Ledger;
ledgerJournalTrans.AccountNum = "22210101";
ledgerJournalTrans.TransDate = systemdateget();
ledgerJournalTrans.OffsetAccountType = LedgerJournalACType::Ledger;
//ledgerJournalTrans.SettleVoucher = SettlementType::SelectedTransact;
ledgerJournalTrans.Txt = "@IWS1378";
ledgerJournalEngine.IWS_initFromOffsetAccount(ledgerJournalTrans);
ledgerJournalTrans.AmountCurCredit = decround(vendInvoice.TaxAmount,2);
ledgerJournalTrans.Invoice = vendInvoice.InvoiceId;
ledgerJournalTrans.TaxCode = "C03";
ledgerJournalTrans.insert();
}
//create branch ledgerjournaltrans all tax
select sum(TaxAmount) from vendInvoice
where vendInvoice.VendSettlementId == _detailsTable.VendSettlementId;
ledgerJournalTrans.clear();
ledgerJournalTrans.Voucher = voucher;
ledgerJournalTrans.initValue();
ledgerJournalTrans.JournalNum = ledgerJournalTable.JournalNum;
ledgerJournalTrans.AccountType = LedgerJournalACType::Ledger;
ledgerJournalTrans.AccountNum = "22210101";
ledgerJournalTrans.TransDate = systemdateget();
ledgerJournalTrans.OffsetAccountType = LedgerJournalACType::Ledger;
ledgerJournalTrans.Txt = "@IWS1378";
ledgerJournalEngine.IWS_initFromOffsetAccount(ledgerJournalTrans);
ledgerJournalTrans.AmountCurCredit = - decround(vendInvoice.TaxAmount,2);
//ledgerJournalTrans.SettleVoucher = SettlementType::SelectedTransact;
ledgerJournalTrans.Invoice = _detailsTable.VendSettlementId;
ledgerJournalTrans.TaxCode = "C03";
ledgerJournalTrans.insert();
ttscommit;
info(strfmt("@IWS1379",_detailsTable.VendSettlementId,
ledgerJournalTable.JournalNum));
}