details:   /erp/devel/pi-engdev/rev/a8c60fd3b917
changeset: 6466:a8c60fd3b917
user:      Eduardo Argal Guibert <eduardo.argal <at> openbravo.com>
date:      Wed Feb 24 16:59:15 2010 +0100
summary:   Adds prepayment logic to both invoices and payment accounting

diffstat:

 src/org/openbravo/erpCommon/ad_forms/AcctServer.java                 |  12 +++-
 src/org/openbravo/erpCommon/ad_forms/DocInvoice.java                 |  26 
+++++++-
 src/org/openbravo/erpCommon/ad_forms/DocInvoice_data.xsql            |  30 
+++++----
 src/org/openbravo/erpCommon/ad_forms/DocLine_FinPaymentSchedule.java |   9 +++
 4 files changed, 57 insertions(+), 20 deletions(-)

diffs (206 lines):

diff -r 557de7fbf3cc -r a8c60fd3b917 
src/org/openbravo/erpCommon/ad_forms/AcctServer.java
--- a/src/org/openbravo/erpCommon/ad_forms/AcctServer.java      Wed Feb 24 
11:30:07 2010 +0100
+++ b/src/org/openbravo/erpCommon/ad_forms/AcctServer.java      Wed Feb 24 
16:59:15 2010 +0100
@@ -1457,7 +1457,7 @@
    * @return Account
    */
   public final Account getAccountBPartner(String cBPartnerId, AcctSchema as, 
boolean isReceipt,
-      ConnectionProvider conn) throws ServletException {
+      boolean isPrepayment, ConnectionProvider conn) throws ServletException {
 
     String strValidCombination = "";
     if (isReceipt) {
@@ -1471,8 +1471,11 @@
           CustomerAccounts.class, whereClause.toString());
       final List<CustomerAccounts> customerAccounts = obqParameters.list();
       if (customerAccounts != null && customerAccounts.size() > 0
-          && customerAccounts.get(0).getCustomerReceivablesNo() != null)
+          && customerAccounts.get(0).getCustomerReceivablesNo() != null && 
!isPrepayment)
         strValidCombination = 
customerAccounts.get(0).getCustomerReceivablesNo().getId();
+      if (customerAccounts != null && customerAccounts.size() > 0
+          && customerAccounts.get(0).getCustomerPrepayment() != null && 
isPrepayment)
+        strValidCombination = 
customerAccounts.get(0).getCustomerPrepayment().getId();
     } else {
       final StringBuilder whereClause = new StringBuilder();
 
@@ -1484,8 +1487,11 @@
           VendorAccounts.class, whereClause.toString());
       final List<VendorAccounts> vendorAccounts = obqParameters.list();
       if (vendorAccounts != null && vendorAccounts.size() > 0
-          && vendorAccounts.get(0).getVendorLiability() != null)
+          && vendorAccounts.get(0).getVendorLiability() != null && 
!isPrepayment)
         strValidCombination = 
vendorAccounts.get(0).getVendorLiability().getId();
+      if (vendorAccounts != null && vendorAccounts.size() > 0
+          && vendorAccounts.get(0).getVendorPrepayment() != null && 
isPrepayment)
+        strValidCombination = 
vendorAccounts.get(0).getVendorPrepayment().getId();
     }
     return new Account(conn, strValidCombination);
   } // getAccount
diff -r 557de7fbf3cc -r a8c60fd3b917 
src/org/openbravo/erpCommon/ad_forms/DocInvoice.java
--- a/src/org/openbravo/erpCommon/ad_forms/DocInvoice.java      Wed Feb 24 
11:30:07 2010 +0100
+++ b/src/org/openbravo/erpCommon/ad_forms/DocInvoice.java      Wed Feb 24 
16:59:15 2010 +0100
@@ -181,6 +181,8 @@
         dpLine.C_Currency_ID_From = data[i].cCurrencyId;
         dpLine.isPaid = data[i].ispaid;
         dpLine.Amount = data[i].amount;
+        dpLine.PrepaidAmount = data[i].prepaidamt;
+
         list.add(dpLine);
       }
     } catch (ServletException e) {
@@ -271,10 +273,14 @@
         }
       else
         for (int i = 0; m_payments != null && i < m_payments.length; i++) {
-          fact.createLine(m_payments[i], getAccountBPartner(C_BPartner_ID, as, 
true, conn),
+          fact.createLine(m_payments[i], getAccountBPartner(C_BPartner_ID, as, 
true, false, conn),
               this.C_Currency_ID, getConvertedAmt(m_payments[i].Amount,
                   m_payments[i].C_Currency_ID_From, this.C_Currency_ID, 
DateAcct, "", conn), "",
               Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn);
+          fact.createLine(m_payments[i], getAccountBPartner(C_BPartner_ID, as, 
true, true, conn),
+              this.C_Currency_ID, getConvertedAmt(m_payments[i].PrepaidAmount,
+                  m_payments[i].C_Currency_ID_From, this.C_Currency_ID, 
DateAcct, "", conn), "",
+              Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn);
         }
       // Charge CR
       log4jDocInvoice.debug("The first create line");
@@ -323,10 +329,14 @@
         }
       else
         for (int i = 0; m_payments != null && i < m_payments.length; i++) {
-          fact.createLine(m_payments[i], getAccountBPartner(C_BPartner_ID, as, 
true, conn),
+          fact.createLine(m_payments[i], getAccountBPartner(C_BPartner_ID, as, 
true, false, conn),
               this.C_Currency_ID, "", getConvertedAmt(m_payments[i].Amount,
                   m_payments[i].C_Currency_ID_From, this.C_Currency_ID, 
DateAcct, "", conn),
               Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn);
+          fact.createLine(m_payments[i], getAccountBPartner(C_BPartner_ID, as, 
true, true, conn),
+              this.C_Currency_ID, "", 
getConvertedAmt(m_payments[i].PrepaidAmount,
+                  m_payments[i].C_Currency_ID_From, this.C_Currency_ID, 
DateAcct, "", conn),
+              Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn);
         }
       // Charge DR
       fact.createLine(null, getAccount(AcctServer.ACCTTYPE_Charge, as, conn), 
this.C_Currency_ID,
@@ -376,10 +386,14 @@
         }
       else
         for (int i = 0; m_payments != null && i < m_payments.length; i++) {
-          fact.createLine(m_payments[i], getAccountBPartner(C_BPartner_ID, as, 
true, conn),
+          fact.createLine(m_payments[i], getAccountBPartner(C_BPartner_ID, as, 
true, false, conn),
               this.C_Currency_ID, "", getConvertedAmt(m_payments[i].Amount,
                   m_payments[i].C_Currency_ID_From, this.C_Currency_ID, 
DateAcct, "", conn),
               Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn);
+          fact.createLine(m_payments[i], getAccountBPartner(C_BPartner_ID, as, 
true, true, conn),
+              this.C_Currency_ID, "", 
getConvertedAmt(m_payments[i].PrepaidAmount,
+                  m_payments[i].C_Currency_ID_From, this.C_Currency_ID, 
DateAcct, "", conn),
+              Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn);
         }
       // Charge DR
       fact.createLine(null, getAccount(AcctServer.ACCTTYPE_Charge, as, conn), 
this.C_Currency_ID,
@@ -425,10 +439,14 @@
         }
       else
         for (int i = 0; m_payments != null && i < m_payments.length; i++) {
-          fact.createLine(m_payments[i], getAccountBPartner(C_BPartner_ID, as, 
true, conn),
+          fact.createLine(m_payments[i], getAccountBPartner(C_BPartner_ID, as, 
true, false, conn),
               this.C_Currency_ID, getConvertedAmt(m_payments[i].Amount,
                   m_payments[i].C_Currency_ID_From, this.C_Currency_ID, 
DateAcct, "", conn), "",
               Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn);
+          fact.createLine(m_payments[i], getAccountBPartner(C_BPartner_ID, as, 
true, true, conn),
+              this.C_Currency_ID, getConvertedAmt(m_payments[i].PrepaidAmount,
+                  m_payments[i].C_Currency_ID_From, this.C_Currency_ID, 
DateAcct, "", conn), "",
+              Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn);
         }
       // Charge CR
       fact.createLine(null, getAccount(AcctServer.ACCTTYPE_Charge, as, conn), 
this.C_Currency_ID,
diff -r 557de7fbf3cc -r a8c60fd3b917 
src/org/openbravo/erpCommon/ad_forms/DocInvoice_data.xsql
--- a/src/org/openbravo/erpCommon/ad_forms/DocInvoice_data.xsql Wed Feb 24 
11:30:07 2010 +0100
+++ b/src/org/openbravo/erpCommon/ad_forms/DocInvoice_data.xsql Wed Feb 24 
16:59:15 2010 +0100
@@ -34,8 +34,8 @@
         '' AS DATEORDERED, '' AS C_CURRENCY_ID, '' AS PAYMENTRULE, '' AS 
C_PAYMENTTERM_ID, '' AS C_CHARGE_ID, '' AS CHARGEAMT, '' AS TOTALLINES,
         '' AS GRANDTOTAL, '' AS M_PRICELIST_ID, '' AS ISTAXINCLUDED, '' AS 
C_CAMPAIGN_ID, '' AS C_PROJECT_ID, '' AS C_ACTIVITY_ID,
         '' AS ISPAID, '' AS CREATEFROM, '' AS GENERATETO, '' AS SENDEMAIL, '' 
AS AD_USER_ID, '' AS COPYFROM, '' AS ISSELFSERVICE,
-        '' AS AD_ORGTRX_ID, '' AS USER1_ID, '' AS USER2_ID, '' as AMOUNT, '' 
AS STATUS, '' AS ISRECEIPT, '' AS ISMANUAL, '' AS WRITEOFFAMT, 
-        '' AS C_DEBT_PAYMENT_ID, '' as FIN_PAYMENT_SCHEDULE_ID, '' as 
FIN_PAYMENTMETHOD_ID
+        '' AS AD_ORGTRX_ID, '' AS USER1_ID, '' AS USER2_ID, '' as AMOUNT, '' 
AS STATUS, '' AS ISRECEIPT, '' AS ISMANUAL, '' AS WRITEOFFAMT,
+        '' AS C_DEBT_PAYMENT_ID, '' as FIN_PAYMENT_SCHEDULE_ID, '' as 
FIN_PAYMENTMETHOD_ID, '' AS PREPAIDAMT
         FROM C_Tax t, C_InvoiceTax it
         WHERE t.C_Tax_ID=it.C_Tax_ID AND it.C_Invoice_ID=?
      ]]>
@@ -51,7 +51,7 @@
         I.C_CURRENCY_ID, I.C_DOCTYPE_ID, I.C_CHARGE_ID, I.CHARGEAMT, I.POSTED, 
I.DATEINVOICED,
         I.ISTAXINCLUDED, I.C_BPARTNER_LOCATION_ID, I.GRANDTOTAL, I.TOTALLINES, 
I.CHARGEAMT
         FROM C_INVOICE I
-        WHERE AD_Client_ID=? 
+        WHERE AD_Client_ID=?
         AND C_INVOICE_ID=?
      ]]>
      </Sql>
@@ -73,10 +73,14 @@
     <SqlMethodComment></SqlMethodComment>
     <Sql>
       <![CDATA[
-      SELECT AMOUNT, C_CURRENCY_ID, FIN_PAYMENT_SCHEDULE_ID,
-      FIN_PAYMENTMETHOD_ID
-      FROM FIN_PAYMENT_SCHEDULE
-      WHERE C_INVOICE_ID =?
+      SELECT MAX(FIN_PAYMENT_SCHEDULE.AMOUNT) - SUM(CASE WHEN 
FIN_PAYMENT_SCHEDULEDETAIL.FIN_PAYMENT_SCHEDULE_ORDER IS NOT NULL THEN 
FIN_PAYMENT_SCHEDULEDETAIL.AMOUNT ELSE 0 END) AS AMOUNT, 
MAX(FIN_PAYMENT_SCHEDULE.C_CURRENCY_ID) AS C_CURRENCY_ID,
+      FIN_PAYMENT_SCHEDULE.FIN_PAYMENT_SCHEDULE_ID, 
MAX(FIN_PAYMENT_SCHEDULE.FIN_PAYMENTMETHOD_ID) AS FIN_PAYMENTMETHOD_ID,
+      SUM(CASE WHEN FIN_PAYMENT_SCHEDULEDETAIL.FIN_PAYMENT_SCHEDULE_ORDER IS 
NOT NULL THEN FIN_PAYMENT_SCHEDULEDETAIL.AMOUNT ELSE 0 END) AS PREPAIDAMT
+      FROM FIN_PAYMENT_SCHEDULE LEFT JOIN FIN_PAYMENT_SCHEDULEDETAIL ON 
FIN_PAYMENT_SCHEDULE.FIN_PAYMENT_SCHEDULE_ID = 
FIN_PAYMENT_SCHEDULEDETAIL.FIN_PAYMENT_SCHEDULE_ORDER
+      LEFT JOIN FIN_PAYMENT_DETAIL ON 
FIN_PAYMENT_SCHEDULEDETAIL.FIN_PAYMENT_DETAIL_ID = 
FIN_PAYMENT_DETAIL.FIN_PAYMENT_DETAIL_ID
+      WHERE FIN_PAYMENT_SCHEDULE.C_INVOICE_ID =?
+      AND COALESCE(FIN_PAYMENT_DETAIL.ISPREPAYMENT,'Y') = 'Y'
+      GROUP BY FIN_PAYMENT_SCHEDULE.FIN_PAYMENT_SCHEDULE_ID
      ]]>
      </Sql>
      <Parameter name="invoice"/>
@@ -85,17 +89,17 @@
     <SqlMethodComment></SqlMethodComment>
     <Sql>
       <![CDATA[
-        UPDATE M_Product_PO SET PriceLastInv = 
+        UPDATE M_Product_PO SET PriceLastInv =
                 (SELECT 
AVG(C_Currency_Convert(il.PriceActual,i.C_Currency_ID,M_Product_PO.C_Currency_ID,i.DateInvoiced,null,i.AD_Client_ID,i.AD_Org_ID))
-                FROM C_Invoice i, C_InvoiceLine il 
+                FROM C_Invoice i, C_InvoiceLine il
                 WHERE i.C_Invoice_ID=il.C_Invoice_ID
-                AND M_Product_PO.M_Product_ID=il.M_Product_ID 
+                AND M_Product_PO.M_Product_ID=il.M_Product_ID
                 AND M_Product_PO.C_BPartner_ID=i.C_BPartner_ID
                 AND i.C_Invoice_ID=?)
-        WHERE EXISTS (SELECT * 
-        FROM C_Invoice i, C_InvoiceLine il 
+        WHERE EXISTS (SELECT *
+        FROM C_Invoice i, C_InvoiceLine il
         WHERE i.C_Invoice_ID=il.C_Invoice_ID
-        AND M_Product_PO.M_Product_ID=il.M_Product_ID 
+        AND M_Product_PO.M_Product_ID=il.M_Product_ID
         AND M_Product_PO.C_BPartner_ID=i.C_BPartner_ID
         AND i.C_Invoice_ID=?)
      ]]>
diff -r 557de7fbf3cc -r a8c60fd3b917 
src/org/openbravo/erpCommon/ad_forms/DocLine_FinPaymentSchedule.java
--- a/src/org/openbravo/erpCommon/ad_forms/DocLine_FinPaymentSchedule.java      
Wed Feb 24 11:30:07 2010 +0100
+++ b/src/org/openbravo/erpCommon/ad_forms/DocLine_FinPaymentSchedule.java      
Wed Feb 24 16:59:15 2010 +0100
@@ -32,6 +32,7 @@
   String C_INVOICE_ID = "";
   String C_ORDER_ID = "";
   String C_BPARTNER_ID = "";
+  String PrepaidAmount = "";
 
   public DocLine_FinPaymentSchedule(String DocumentType, String TrxHeader_ID, 
String TrxLine_ID) {
     super(DocumentType, TrxHeader_ID, TrxLine_ID);
@@ -111,6 +112,14 @@
     C_BPARTNER_ID = c_bpartner_id;
   }
 
+  public String getPrepaidAmount() {
+    return PrepaidAmount;
+  }
+
+  public void setPrepaidAmount(String prepaidAmount) {
+    PrepaidAmount = prepaidAmount;
+  }
+
   public String getServletInfo() {
     return "Servlet for accounting";
   } // end of getServletInfo() method

------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to