details: https://code.openbravo.com/erp/devel/pi/rev/14f336c6ec71 changeset: 19159:14f336c6ec71 user: Naiara Martinez <naiara.martinez <at> openbravo.com> date: Thu Jan 03 17:05:48 2013 +0100 summary: Related to issue 22662: feedback code review.
details: https://code.openbravo.com/erp/devel/pi/rev/33b29e22a7fb changeset: 19160:33b29e22a7fb user: Naiara Martinez <naiara.martinez <at> openbravo.com> date: Thu Jan 03 17:25:37 2013 +0100 summary: related to issue 21684: fix for taking the correct finAcct. Due to the fact that paying in one FinAcct and adding transaction in another FinAcct is possible(issue 22662). diffstat: modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddTransaction.html | 7 +- modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/dao/AdvPaymentMngtDao.java | 11 + modules/org.openbravo.financial.paymentreport/src/org/openbravo/financial/paymentreport/erpCommon/ad_reports/PaymentReportDao.java | 85 +++- src/org/openbravo/erpCommon/ad_forms/DocFINFinAccTransaction.java | 194 +-------- src/org/openbravo/erpCommon/ad_forms/DocFINReconciliation.java | 108 +----- 5 files changed, 114 insertions(+), 291 deletions(-) diffs (truncated from 621 to 300 lines): diff -r 057353be8b68 -r 33b29e22a7fb modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddTransaction.html --- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddTransaction.html Fri Jan 04 09:52:50 2013 +0100 +++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddTransaction.html Thu Jan 03 17:25:37 2013 +0100 @@ -1129,9 +1129,10 @@ </td> </tr> <tr id="PaymentSection2"> - <td class="TitleCell" id="inpAlternativeLabel"><span class="TitleCell LabelText"><label name="lblP" id="lblPShowPaym" for="paramAlternativeFA">Show transactions for alternative financial account</label></span></td> - <td class="Radio_Check_ContentCell" id="inpAlternativeChkBox"> - <span class="Radio_Check_ContentCell Checkbox_container_NOT_Focused"><input type="checkbox" name="inpAlternativeFA" value="Y" id="paramAlternativeFA" onclick="loadGrid()"></input></span> + <td id="inpAlternativeLabel" colspan="2"><span class="LabelText"><label name="lblP" id="lblPShowPaym" for="paramAlternativeFA">Show transactions for alternative financial account</label></span> + <span class="Radio_Check_ContentCell" id="inpAlternativeChkBox"> + <span class="Radio_Check_ContentCell Checkbox_container_NOT_Focused"><input type="checkbox" name="inpAlternativeFA" value="Y" id="paramAlternativeFA" onclick="loadGrid()"></input></span></span></td> + <td colspan="4"></td> </tr> <!-- Payment Section END--> diff -r 057353be8b68 -r 33b29e22a7fb modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/dao/AdvPaymentMngtDao.java --- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/dao/AdvPaymentMngtDao.java Fri Jan 04 09:52:50 2013 +0100 +++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/dao/AdvPaymentMngtDao.java Thu Jan 03 17:25:37 2013 +0100 @@ -1305,6 +1305,17 @@ whereClause.append(" and p."); whereClause.append(FIN_Payment.PROPERTY_STATUS); whereClause.append(" IN ('RPR', 'PPM')"); + whereClause.append(" and p."); + whereClause.append(FIN_Payment.PROPERTY_CURRENCY); + whereClause.append(".id"); + whereClause.append(" in "); + whereClause.append(" ( select fa."); + whereClause.append(FIN_FinancialAccount.PROPERTY_CURRENCY); + whereClause.append(".id"); + whereClause.append(" from "); + whereClause.append(" FIN_Financial_Account as fa"); + whereClause.append(" where fa.id = ? )"); + parameters.add(account.getId()); parameters.add(account.getId()); // IsReceipt whereClause.append(" and p."); diff -r 057353be8b68 -r 33b29e22a7fb modules/org.openbravo.financial.paymentreport/src/org/openbravo/financial/paymentreport/erpCommon/ad_reports/PaymentReportDao.java --- a/modules/org.openbravo.financial.paymentreport/src/org/openbravo/financial/paymentreport/erpCommon/ad_reports/PaymentReportDao.java Fri Jan 04 09:52:50 2013 +0100 +++ b/modules/org.openbravo.financial.paymentreport/src/org/openbravo/financial/paymentreport/erpCommon/ad_reports/PaymentReportDao.java Thu Jan 03 17:25:37 2013 +0100 @@ -79,6 +79,7 @@ private java.util.List<String> bpList; private java.util.List<String> bpCategoryList; private java.util.List<String> projectList; + private java.util.List<String> acctList; public PaymentReportDao() { } @@ -476,10 +477,13 @@ hsqlScript.append(", invcur."); hsqlScript.append(Currency.PROPERTY_ISOCODE); hsqlScript.append("), "); - } else if (strGroupCrit.equalsIgnoreCase("ACCS_ACCOUNT_ID_D")) { // REVISAR - hsqlScript.append(" coalesce(pay."); + } else if (strGroupCrit.equalsIgnoreCase("ACCS_ACCOUNT_ID_D")) { + hsqlScript.append(" coalesce("); + hsqlScript + .append(" (select trans.account.name from FIN_Finacc_Transaction trans left outer join trans.finPayment payment where payment.id=pay.id),"); + hsqlScript.append(" pay."); hsqlScript.append(FIN_Payment.PROPERTY_ACCOUNT); - hsqlScript.append(", 'Awaiting Payment'"); + hsqlScript.append(".name, 'Awaiting Payment'"); hsqlScript.append("), "); } @@ -524,8 +528,12 @@ hsqlScript.append(")"); } if (strOrdCritList[i].equalsIgnoreCase("ACCS_ACCOUNT_ID_D")) { - hsqlScript.append(", pay."); + hsqlScript.append(", coalesce("); + hsqlScript + .append(" (select trans.account.name from FIN_Finacc_Transaction trans left outer join trans.finPayment payment where payment.id=pay.id),"); + hsqlScript.append(" pay."); hsqlScript.append(FIN_Payment.PROPERTY_ACCOUNT); + hsqlScript.append(".name)"); } if (strOrdCritList[i].equalsIgnoreCase("DueDate")) { hsqlScript.append(", invps."); @@ -654,8 +662,12 @@ // payment yes / no FieldProviderFactory.setField(data[i], "PAYMENT_Y_N", ""); // financialAccount - FieldProviderFactory.setField(data[i], "FINANCIAL_ACCOUNT", FIN_PaymentScheduleDetail[i] - .getPaymentDetails().getFinPayment().getAccount().getIdentifier()); + FieldProviderFactory.setField(data[i], "FINANCIAL_ACCOUNT", + FIN_PaymentScheduleDetail[i].getPaymentDetails().getFinPayment() + .getFINFinaccTransactionList().size() != 0 ? FIN_PaymentScheduleDetail[i] + .getPaymentDetails().getFinPayment().getFINFinaccTransactionList().get(0) + .getAccount().getName() : FIN_PaymentScheduleDetail[i].getPaymentDetails() + .getFinPayment().getAccount().getName()); // status FieldProviderFactory.setField(data[i], "STATUS", translateRefList(FIN_PaymentScheduleDetail[i].getPaymentDetails().getFinPayment() @@ -985,7 +997,7 @@ } else if (strGroupCrit.equalsIgnoreCase("ACCS_ACCOUNT_ID_D")) { FieldProviderFactory.setField(previousRow, "GROUP_CRIT_ID", previousRow.getField("FINANCIAL_ACCOUNT")); - FieldProviderFactory.setField(previousRow, "GROUP_CRIT", "Finnancial Account"); + FieldProviderFactory.setField(previousRow, "GROUP_CRIT", "Financial Account"); } else { FieldProviderFactory.setField(previousRow, "GROUP_CRIT_ID", ""); } @@ -1174,7 +1186,7 @@ FieldProviderFactory.setField(transactionData, "PAYMENT_Y_N", "Display:None"); // financialAccount FieldProviderFactory.setField(transactionData, "FINANCIAL_ACCOUNT", transaction.getAccount() - .getIdentifier()); + .getName()); // status FieldProviderFactory.setField(transactionData, "STATUS", translateRefList(transaction.getStatus())); @@ -1266,7 +1278,7 @@ } else if (strGroupCrit.equalsIgnoreCase("ACCS_ACCOUNT_ID_D")) { FieldProviderFactory.setField(transactionData, "GROUP_CRIT_ID", transactionData.getField("FINANCIAL_ACCOUNT")); - FieldProviderFactory.setField(transactionData, "GROUP_CRIT", "Finnancial Account"); + FieldProviderFactory.setField(transactionData, "GROUP_CRIT", "Financial Account"); } else { FieldProviderFactory.setField(transactionData, "GROUP_CRIT_ID", ""); FieldProviderFactory.setField(transactionData, "GROUP_CRIT", ""); @@ -1347,6 +1359,20 @@ .compareTo(data.getField("TRANS_CURRENCY")) < 0) { isBefore = true; } + } else if (strGroupCrit.equalsIgnoreCase("ACCS_ACCOUNT_ID_D")) { + if (acctList == null) { + createAcctList(); + } + int posData = acctList.indexOf(data.getField("FINANCIAL_ACCOUNT")); + int pos = acctList.indexOf(transaction.getAccount().getName()); + + if (transaction.getAccount().getName().equals(data.getField("FINANCIAL_ACCOUNT"))) { + isBefore = isBeforeStatusAndOrder(transaction, data, strOrdCrit, BPName, BPCategory, + strProject); + } else if ((pos < posData || data.getField("FINANCIAL_ACCOUNT").equals("")) + && !transaction.getAccount().getName().equals("")) { + isBefore = true; + } } } else { @@ -1432,6 +1458,16 @@ Date dataDate = FIN_Utility.getDate(data.getField("DUE_DATE")); isBefore = isBefore || (transaction.getDateAcct().compareTo(dataDate) < 0); } + if (strOrdCritList[i].equalsIgnoreCase("ACCS_ACCOUNT_ID_D")) { + if (acctList == null) { + createAcctList(); + } + int posData = acctList.indexOf(data.getField("FINANCIAL_ACCOUNT")); + int pos = acctList.indexOf(transaction.getAccount().getName()); + isBefore = isBefore + || (((pos < posData) || data.getField("FINANCIAL_ACCOUNT").equals("")) && !transaction + .getAccount().getName().equals("")); + } return isBefore; } else { if (strOrdCritList[i].contains("Project")) { @@ -1500,7 +1536,22 @@ isBefore = isBeforeOrder(transaction, data, strOrdCritList, i + 1, BPName, BPCategory, strProject); } + } else if (strOrdCritList[i].equalsIgnoreCase("ACCS_ACCOUNT_ID_D")) { + if (acctList == null) { + createAcctList(); + } + int posData = acctList.indexOf(data.getField("FINANCIAL_ACCOUNT")); + int pos = acctList.indexOf(transaction.getAccount().getName()); + + if ((pos < posData || data.getField("FINANCIAL_ACCOUNT").equals("")) + && !transaction.getAccount().getName().equals("")) { + isBefore = true; + } else if (transaction.getAccount().getName().equals(data.getField("FINANCIAL_ACCOUNT"))) { + isBefore = isBeforeOrder(transaction, data, strOrdCritList, i + 1, BPName, BPCategory, + strProject); + } } + return isBefore; } } @@ -1573,6 +1624,8 @@ .createAlias(FIN_FinaccTransaction.PROPERTY_PROJECT, "p", OBCriteria.LEFT_JOIN); obCriteriaTrans.createAlias(FIN_FinaccTransaction.PROPERTY_CURRENCY, "c", OBCriteria.LEFT_JOIN); + obCriteriaTrans.createAlias(FIN_FinaccTransaction.PROPERTY_ACCOUNT, "acc", + OBCriteria.LEFT_JOIN); obCriteriaTrans.add(Restrictions.isNull(FIN_FinaccTransaction.PROPERTY_FINPAYMENT)); obCriteriaTrans.add(Restrictions.in(FIN_FinaccTransaction.PROPERTY_ORGANIZATION, organizations)); @@ -1706,7 +1759,7 @@ } else if (strGroupCrit.equalsIgnoreCase("INS_CURRENCY")) { obCriteriaTrans.addOrder(Order.asc("c." + Currency.PROPERTY_ISOCODE)); } else if (strGroupCrit.equalsIgnoreCase("ACCS_ACCOUNT_ID_D")) { - obCriteriaTrans.addOrder(Order.asc(FIN_FinaccTransaction.PROPERTY_ACCOUNT)); + obCriteriaTrans.addOrder(Order.asc("acc." + FIN_FinancialAccount.PROPERTY_NAME)); } obCriteriaTrans.addOrder(Order.asc(FIN_FinaccTransaction.PROPERTY_STATUS)); @@ -1730,7 +1783,7 @@ obCriteriaTrans.addOrder(Order.asc("c." + Currency.PROPERTY_ISOCODE)); } if (strOrdCritList[i].contains("ACCS_ACCOUNT_ID_D")) { - obCriteriaTrans.addOrder(Order.asc(FIN_FinaccTransaction.PROPERTY_ACCOUNT)); + obCriteriaTrans.addOrder(Order.asc("acc." + FIN_FinancialAccount.PROPERTY_NAME)); } if (strOrdCritList[i].equalsIgnoreCase("DueDate")) { obCriteriaTrans.addOrder(Order.asc(FIN_FinaccTransaction.PROPERTY_TRANSACTIONDATE)); @@ -2107,4 +2160,14 @@ } } + private void createAcctList() { + acctList = new ArrayList<String>(); + OBCriteria<FIN_FinancialAccount> critAcct = OBDal.getInstance().createCriteria( + FIN_FinancialAccount.class); + critAcct.addOrderBy(FIN_FinancialAccount.PROPERTY_NAME, true); + for (FIN_FinancialAccount acct : critAcct.list()) { + acctList.add(acct.getName()); + } + } + } diff -r 057353be8b68 -r 33b29e22a7fb src/org/openbravo/erpCommon/ad_forms/DocFINFinAccTransaction.java --- a/src/org/openbravo/erpCommon/ad_forms/DocFINFinAccTransaction.java Fri Jan 04 09:52:50 2013 +0100 +++ b/src/org/openbravo/erpCommon/ad_forms/DocFINFinAccTransaction.java Thu Jan 03 17:25:37 2013 +0100 @@ -11,7 +11,7 @@ * under the License. * The Original Code is Openbravo ERP. * The Initial Developer of the Original Code is Openbravo SLU - * All portions are Copyright (C) 2010-2011 Openbravo SLU + * All portions are Copyright (C) 2010-2012 Openbravo SLU * All Rights Reserved. * Contributor(s): ______________________________________. ************************************************************************ @@ -66,7 +66,7 @@ public static final String TRXTYPE_BankFee = "BF"; BigDecimal usedCredit = ZERO; BigDecimal generatedCredit = ZERO; - boolean exeptionPosting = false; + boolean exceptionPosting = false; private static final long serialVersionUID = 1L; private static final Logger log4j = Logger.getLogger(DocFINFinAccTransaction.class); @@ -388,11 +388,7 @@ if (TRXTYPE_BankFee.equals(transaction.getTransactionType())) fact = createFactFee(transaction, as, conn, fact); else if (transaction.getFinPayment() != null) { - if (exeptionPosting) { - fact = createFactPaymentDetailsDifFinAcct(as, conn, fact); - } else { - fact = createFactPaymentDetails(as, conn, fact); - } + fact = createFactPaymentDetails(as, conn, fact); } else fact = createFactGLItem(as, conn, fact); } finally { @@ -569,168 +565,27 @@ DocLine_FINFinAccTransaction line = new DocLine_FINFinAccTransaction(DocumentType, transaction.getId(), ""); line.m_description = transaction.getFinPayment().getDescription(); - fact.createLine( - line, - getAccountUponDepositWithdrawal(conn, transaction.getFinPayment().getPaymentMethod(), - transaction.getAccount(), as, transaction.getFinPayment().isReceipt()), C_Currency_ID, - transaction.getDepositAmount().toString(), transaction.getPaymentAmount().toString(), - Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn); - + if (exceptionPosting) { + // The Payment FinAcct and Transaction FinAcct are different. To post the transaction + // the amount of the payment need to be moved from destiny account of the payment of FinAcct1 + // to destiny of the payment of the FinAcct2 + fact.createLine( + line, + getAccountPayment(conn, transaction.getFinPayment().getPaymentMethod(), + transaction.getAccount(), as, transaction.getFinPayment().isReceipt()), + C_Currency_ID, transaction.getDepositAmount().toString(), transaction.getPaymentAmount() + .toString(), Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn); + } else { + fact.createLine( + line, + getAccountUponDepositWithdrawal(conn, transaction.getFinPayment().getPaymentMethod(), + transaction.getAccount(), as, transaction.getFinPayment().isReceipt()), + C_Currency_ID, transaction.getDepositAmount().toString(), transaction.getPaymentAmount() + .toString(), Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn); + } SeqNo = "0"; return fact; - } - public Fact createFactPaymentDetailsDifFinAcct(AcctSchema as, ConnectionProvider conn, Fact fact) - throws ServletException { - // The Payment FinAcct and Transaction FinAcct are different. To post the transaction - // the amount of the payment need to be moved from destiny account of the payment of FinAcct1 - // to destiny of the payment of the FinAcct2 - FIN_FinaccTransaction transaction = OBDal.getInstance().get(FIN_FinaccTransaction.class, - Record_ID); - String Fact_Acct_Group_ID = SequenceIdData.getUUID(); ------------------------------------------------------------------------------ Master HTML5, CSS3, ASP.NET, MVC, AJAX, Knockout.js, Web API and much more. Get web development skills now with LearnDevNow - 350+ hours of step-by-step video tutorials by Microsoft MVPs and experts. SALE $99.99 this month only -- learn more at: http://p.sf.net/sfu/learnmore_122812 _______________________________________________ Openbravo-commits mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openbravo-commits
