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

Reply via email to