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® 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