Prueba Para on Load
Prueba Para on Load
0 or later
Formatversion: 1
***Element: CLS
CLASS #DynamicJournalProcess
PROPERTIES
Name #DynamicJournalProcess
Extends #RunBaseBatch
Origin #{D48FE397-1719-4DD0-ADC3-495379E5DAA0}
ENDPROPERTIES
METHODS
SOURCE #canGoBatchJournal
#public boolean canGoBatchJournal()
#{
# return true;
#}
ENDSOURCE
SOURCE #classDeclaration
#class DynamicJournalProcess extends RunBaseBatch
#{
# #define.CurrentVersion(1)
# #define.Version1(1)
#
# // Added by Axel V. 20231211
# boolean redFlagTrans;
# container issues;
#}
ENDSOURCE
SOURCE #existsMT940IntoAnother
#private boolean existsMT940IntoAnother(RecId refMT940)
#{
# LedgerJournalTrans LedgerJournalTrans;
#
# select firstOnly1 LedgerJournalTrans where
LedgerJournalTrans.TranssactionBankMT940 == refMT940;
#
# return LedgerJournalTrans.RecId > 0;
#}
ENDSOURCE
SOURCE #markTransaction
#private void markTransaction(RecId _LedgerJournalTransRecId)
#{
# int specCount;
# SpecTrans _SpecTrans;
# CustTrans _CustTrans;
# CustTransOpen _CustTransOpen;
# CustInvoiceJour _CustInvoiceJour;
# LedgerJournalTrans _LedgerJournalTrans;
#
# try
# {
# select firstOnly1 forupdate _LedgerJournalTrans where
_LedgerJournalTrans.RecId == _LedgerJournalTransRecId;
#
# if (!_LedgerJournalTrans)
# {
# error(strFmt('No se encuentra el registro de %1',
tableId2name(tableNum(LedgerJournalTrans))));
# return;
# }
#
# select _CustInvoiceJour where _CustInvoiceJour.InvoiceId ==
_LedgerJournalTrans.MarkedInvoice;
#
# if (!_CustInvoiceJour)
# {
# error(strFmt('No se encuentra el registro de %1',
tableId2name(tableNum(CustInvoiceJour))));
# return;
# }
#
# select _CustTrans where _CustTrans.Invoice ==
_LedgerJournalTrans.MarkedInvoice;
#
# if (!_CustTrans)
# {
# error(strFmt('No se encuentra el registro de %1',
tableId2name(tableNum(CustTrans))));
# return;
# }
#
# select _CustTransOpen where _CustTransOpen.RefRecId ==
_CustTrans.RecId;
#
# if (!_CustTransOpen)
# {
# error(strFmt('No se encuentra el registro de %1',
tableId2name(tableNum(CustTransOpen))));
# return;
# }
#
# _SpecTrans.CashDiscToTake = 0;
# _SpecTrans.Code = _CustInvoiceJour.CurrencyCode;
# _SpecTrans.CrossRate = 0;
#
# _SpecTrans.LineNum = _LedgerJournalTrans.LineNum;
#
# _SpecTrans.Balance01 = _LedgerJournalTrans.AmountCurCredit;
#
# _SpecTrans.RefRecId = _CustTransOpen.RecId;
# _SpecTrans.RefTableId = tableNum(CustTransOpen);
# _SpecTrans.RefCompany = _CustTransOpen.dataAreaId;
#
# _SpecTrans.SpecRecId = _LedgerJournalTrans.RecId;
# _SpecTrans.SpecTableId = tableNum(LedgerJournalTrans);
# _SpecTrans.SpecCompany =_LedgerJournalTrans.dataAreaId;
#
# _SpecTrans.insert();
#
# _LedgerJournalTrans.MarkedInvoiceRecId =
_CustInvoiceJour.RecId;
# _LedgerJournalTrans.MarkedInvoiceCompany =
_CustInvoiceJour.dataAreaId;
# _LedgerJournalTrans.SettleVoucher = 2;
# _LedgerJournalTrans.doUpdate();
#
# /* COMENTADO PORQUE HACE EXACTAMENTE LO MISMO QUE EL UPDATE DE
ARRIBA.
# // Find count of SpecTrans for this LedgrJournalTrans
# specCount = SpecTrans::getSpecTransCount(
# _LedgerJournalTrans.company(),
# tableNum(LedgerJournalTrans),
# _LedgerJournalTrans.RecId
# );
#
# _LedgerJournalTrans.updateMarkedInvoice(specCount); */
# }
# catch
# {
# error('Error General!');
# }
#}
ENDSOURCE
SOURCE #processHeader
#private LedgerJournalId processHeader(DynamicJournalTable
DynamicJournalTable)
#{
# AxLedgerJournalTable header = new AxLedgerJournalTable();
# LedgerJournalTable LedgerJournalTable;
#
# try {
# ttsBegin;
# header.parmJournalName(DynamicJournalTable.JournalName);
# header.parmName(DynamicJournalTable.Name);
# header.parmJournalType(DynamicJournalTable.JournalType);
# header.save();
#
# DynamicJournalTable.JournalNum =
header.ledgerJournalTable().JournalNum;
#
# this.processTrans(DynamicJournalTable);
#
# select forUpdate LedgerJournalTable where
LedgerJournalTable.JournalNum == DynamicJournalTable.JournalNum;
#
# LedgerJournalTable.Name = DynamicJournalTable.Name;
#
# LedgerJournalTable.doUpdate();
#
# ttsCommit;
# return header.ledgerJournalTable().JournalNum;
# } catch {
# ttsAbort;
# return '';
# }
#}
ENDSOURCE
SOURCE #processPendingJournals
#private void processPendingJournals()
#{
# DynamicJournalTable DynamicJournalTable;
# LedgerJournalCheckPost JourPost;
# LedgerJournalTable LedgerJournalTable;
#
# while select forUpdate DynamicJournalTable
# where DynamicJournalTable.Processed == NoYes::No
# {
# this.resetGlobals(); // Added by Axel V. 20231211
#
# try
# {
# ttsBegin;
# DynamicJournalTable.JournalNum =
this.processHeader(DynamicJournalTable);
#
# // Added by Axel V. 20231211
# if (redFlagTrans)
# {
# DynamicJournalTable.AutoRegister = NoYes::No;
# DynamicJournalTable.Issue = con2Str(issues);
# }
# ////////////////////////////
#
# if (DynamicJournalTable.JournalNum != "")
# {
# DynamicJournalTable.Processed = NoYes::Yes;
# DynamicJournalTable.update();
#
# info(strFmt("Se ha creado el diario: %1",
DynamicJournalTable.JournalNum));
# }
#
# ttsCommit;
# }
# catch
# {
# ttsAbort;
# }
# }
#
# info('Fin de proceso de creación de diarios.');
#
# DynamicJournalTable = null;
# LedgerJournalTable = null;
#
# while select DynamicJournalTable
# join LedgerJournalTable
# where DynamicJournalTable.JournalNum ==
LedgerJournalTable.JournalNum
# && DynamicJournalTable.AutoRegister == NoYes::Yes
# && DynamicJournalTable.Processed == NoYes::Yes
# && LedgerJournalTable.Posted == NoYes::No
# {
# JourPost =
LedgerJournalCheckPost::newLedgerJournalTable(LedgerJournalTable, NoYes::Yes);
# try
# {
# JourPost.run();
# }
# catch (Exception::Error)
# {
# error(strFmt("Diario: %1 / Aprobado : %2",
LedgerJournalTable.JournalNum, LedgerJournalTable.approved()));
# }
# }
#
# info('Fin de proceso de registro de diarios.');
#}
ENDSOURCE
SOURCE #processTrans
#private void processTrans(DynamicJournalTable DynamicJournalTable)
#{
# DynamicJournalTrans DynamicJournalTrans;
# AxLedgerJournalTrans trans;
#
# CustTrans CustTrans;
# CustTransOpen CustTransOpen;
#
# while select DynamicJournalTrans
# where DynamicJournalTrans.RefRecId == DynamicJournalTable.RecId
# {
# trans = new AxLedgerJournalTrans();
#
# // Added by Axel V. 20231211
# if (DynamicJournalTrans.TransactionBankMT940 > 0 &&
this.existsMT940IntoAnother(DynamicJournalTrans.TransactionBankMT940))
# {
# redFlagTrans = true;
# issues += [strFmt('La transacción con la referencia al
MT940 %1, ya ha sido usada en otro diario. \n',
DynamicJournalTrans.TransactionBankMT940)];
# } else {
#
trans.parmConciliationState(DynamicJournalTrans.ConciliationState);
#
trans.parmTransactionBankMT940(DynamicJournalTrans.TransactionBankMT940);
# }
# ////////////////////////////
#
# trans.parmJournalNum(DynamicJournalTable.JournalNum);
# trans.parmPaymMode(DynamicJournalTrans.PaymMode);
#
# trans.parmOffsetLedgerDimension(
#
DimensionStorage::getDynamicAccount(DynamicJournalTrans.OffsetAccount,
DynamicJournalTrans.OffsetAccountType)
# );
#
#
trans.parmOffsetAccountType(DynamicJournalTrans.OffsetAccountType);
#
trans.parmBankTransType(CustPaymModeTable::find(DynamicJournalTrans.PaymMode).Ba
nkTransType);
# trans.parmLoadingDate(systemDateGet());
# trans.parmTransDate(DynamicJournalTrans.TransDate);
# trans.parmTransactionType(DynamicJournalTrans.TransactionType);
# trans.parmCompany(DynamicJournalTrans.Company);
# trans.parmOffsetCompany(DynamicJournalTrans.OffsetCompany);
#
# trans.parmCurrencyCode(DynamicJournalTrans.CurrencyCode);
# trans.parmAmountCurDebit(DynamicJournalTrans.AmountCurDebit);
# trans.parmAmountCurCredit(DynamicJournalTrans.AmountCurCredit);
#
# trans.parmTriangulation(
# Currency::triangulation(DynamicJournalTrans.CurrencyCode,
DynamicJournalTrans.TransDate)
# );
#
# trans.parmExchRate(
# Currency::exchRate(DynamicJournalTrans.CurrencyCode,
DynamicJournalTrans.TransDate)
# );
#
# trans.parmExchRateSecond(
# Currency::exchRateSecond(DynamicJournalTrans.CurrencyCode,
DynamicJournalTrans.TransDate)
# );
#
# trans.parmSettleVoucher(SettlementType::OpenTransact);
# trans.parmAccountType(DynamicJournalTrans.AccountType);
#
# trans.parmLedgerDimension(
# DynamicJournalTrans.AccountType == 0 ?
#
SenseIT_MigraAX2012_Util::getLedgerDimensionMainAccount(DynamicJournalTrans.Acco
untNum)
# :
#
DimensionStorage::getDynamicAccount(DynamicJournalTrans.AccountNum,
DynamicJournalTrans.AccountType)
# );
#
# trans.parmPaymentStatus(CustVendPaymStatus::Recieved);
# trans.parmDocumentNum(DynamicJournalTrans.DocumentNum);
#
# if (DynamicJournalTrans.AccountType ==
LedgerJournalACType::Cust)
# {
# CustTrans = null;
# select CustTrans
# index hint accountDateIdx
# where CustTrans.AccountNum ==
DynamicJournalTrans.AccountNum
# && CustTrans.Invoice == DynamicJournalTrans.InvoiceId;
#
# if (CustTrans)
# {
# trans.parmCustTransId(CustTrans.RecId);
#
# CustTransOpen = null;
# select CustTransOpen where CustTransOpen.RefRecId ==
CustTrans.RecId;
#
# if (CustTransOpen)
# {
# trans.parmDue(CustTransOpen.DueDate);
# }
# }
#
# // necesario para las facturas.
#
trans.parmDefaultDimension(DynamicJournalTrans.DimensionDefault);
#
# } else {
# if (DynamicJournalTrans.AccountType !=
LedgerJournalACType::Bank)
#
trans.parmDefaultDimension(DynamicJournalTrans.DimensionDefault);
#
# //gcespedes 2024 02 23 se habia omitido la informacion de
dimension financiera
#
//trans.parmLedgerDimension(DynamicJournalTrans.LEDGERDIMENSION);
# }
#
# trans.parmVoucher(DynamicJournalTrans.Voucher);
# trans.parmPostingProfile(DynamicJournalTrans.PostingProfile);
# trans.parmPaymReference(DynamicJournalTrans.PaymReference);
# trans.parmBankTransType(DynamicJournalTrans.BankTransType);
# trans.parmTxt(DynamicJournalTrans.TXT);
# trans.parmMarkedInvoice(DynamicJournalTrans.MarkedInvoice); //
Added by Axel V. 20231120
#
# trans.save();
#
# if (trans.ledgerJournalTrans().MarkedInvoice != '0' &&
trans.ledgerJournalTrans().MarkedInvoice != '')
# {
# this.markTransaction(trans.ledgerJournalTrans().RecId);
# }
# }
#}
ENDSOURCE
SOURCE #resetGlobals
#private void resetGlobals()
#{
# redFlagTrans = false;
# issues = conNull();
#}
ENDSOURCE
SOURCE #run
#public void run()
#{
# this.processPendingJournals();
#}
ENDSOURCE
SOURCE #construct
#server static DynamicJournalProcess construct()
#{
# return new DynamicJournalProcess();
#}
ENDSOURCE
SOURCE #main
#static void main(Args args)
#{
# DynamicJournalProcess DynamicJournalProcess;
#
# DynamicJournalProcess = DynamicJournalProcess::construct();
#
# if (DynamicJournalProcess.prompt())
# {
# DynamicJournalProcess.run();
# }
#}
ENDSOURCE
ENDMETHODS
ENDCLASS
***Element: END