svn commit: r453680 - in /incubator/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting: agreement/AgreementServices.java invoice/InvoiceServices.java

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r453680 - in /incubator/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting: agreement/AgreementServices.java invoice/InvoiceServices.java

sichen
Author: sichen
Date: Fri Oct  6 10:10:03 2006
New Revision: 453680

URL: http://svn.apache.org/viewvc?view=rev&rev=453680
Log:
Fix up the days due for commission invoices, so that if it is not set in Agreement, then dueDate of invoice is also not set.  Also fixed a bug where it was always set to 0.

Modified:
    incubator/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/agreement/AgreementServices.java
    incubator/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/invoice/InvoiceServices.java

Modified: incubator/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/agreement/AgreementServices.java
URL: http://svn.apache.org/viewvc/incubator/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/agreement/AgreementServices.java?view=diff&rev=453680&r1=453679&r2=453680
==============================================================================
--- incubator/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/agreement/AgreementServices.java (original)
+++ incubator/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/agreement/AgreementServices.java Fri Oct  6 10:10:03 2006
@@ -131,7 +131,9 @@
                     BigDecimal commission = ZERO;
                     BigDecimal min = new BigDecimal("-1e12");   // Limit to 1 trillion commission
                     BigDecimal max = new BigDecimal("1e12");
-                    long days = 0;
+                  
+                    // number of days due for commission, which will be the lowest termDays of all the AgreementTerms
+                    long days = -1;
                     Iterator itt = terms.iterator();
                     while (itt.hasNext()) {
                         GenericValue elem = (GenericValue) itt.next();
@@ -150,9 +152,17 @@
                             }
                             // TODO: Add other type of terms and handling here
                         }
+
+                        // see if we need to update the number of days for paying commission
                         Long termDays = elem.getLong("termDays");
                         if (termDays != null) {
-                            days = Math.min(days, termDays.longValue());
+                            // if days is greater than zero, then it has been set with another value, so we use the lowest term days
+                            // if days is less than zero, then it has not been set yet.
+                            if (days > 0) {
+                                days = Math.min(days, termDays.longValue());
+                            } else {
+                                days = termDays.longValue();
+                            }
                         }
                     }
                     if (commission.compareTo(min) < 0)
@@ -161,14 +171,17 @@
                         commission = max;
                     commission = negative ? commission.negate() : commission;
                     commission = commission.setScale(decimals, rounding);
-                    days = Math.max(0, days);
-                    commissions.add(UtilMisc.toMap(
+                    
+                    Map partyCommissionResult = UtilMisc.toMap(
                             "partyIdFrom", agreementItem.getString("partyIdFrom"),
                             "partyIdTo", agreementItem.getString("partyIdTo"),
                             "commission", commission,
-                            "days", new Long(days),
                             "currencyUomId", agreementItem.getString("currencyUomId"),
-                            "productId", productId));
+                            "productId", productId);
+                    if (days >= 0) {
+                        partyCommissionResult.put("days", new Long(days));
+                    }
+                    commissions.add(partyCommissionResult);
                 }
             }
         } catch (GenericEntityException e) {

Modified: incubator/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/invoice/InvoiceServices.java
URL: http://svn.apache.org/viewvc/incubator/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/invoice/InvoiceServices.java?view=diff&rev=453680&r1=453679&r2=453680
==============================================================================
--- incubator/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/invoice/InvoiceServices.java (original)
+++ incubator/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/invoice/InvoiceServices.java Fri Oct  6 10:10:03 2006
@@ -777,14 +777,14 @@
                 List toStore = FastList.newInstance();
                 List commList = (List)pair.getValue();
                 // get the billing parties
-                // From and To are reversed between commission and invoice
-                if (commList == null || commList.size() == 0)
+                if (UtilValidate.isEmpty(commList)) {
                     continue;
+                }
+              
+                // From and To are reversed between commission and invoice
                 String partyIdBillTo = (String) ((Map)commList.get(0)).get("partyIdFrom");
                 String partyIdBillFrom = (String) ((Map)commList.get(0)).get("partyIdTo");
-                Long termDays = (Long) ((Map)commList.get(0)).get("termDays");
-                termDays = termDays == null ? new Long(0) : termDays;
-                Timestamp dueDate = UtilDateTime.getDayEnd(now, termDays.intValue());
+                Long days = (Long) ((Map)commList.get(0)).get("days");
                 
                 // create the invoice record
                 // To and From are in commission's sense, opposite for invoice
@@ -792,7 +792,10 @@
                 createInvoiceContext.put("partyId", partyIdBillTo);
                 createInvoiceContext.put("partyIdFrom", partyIdBillFrom);
                 createInvoiceContext.put("invoiceDate", now);
-                createInvoiceContext.put("dueDate", dueDate);
+                // if there were days associated with the commission agreement, then set a dueDate for the invoice.
+                if (days != null) {
+                    createInvoiceContext.put("dueDate", UtilDateTime.getDayEnd(now, days.intValue()));
+                }
                 createInvoiceContext.put("invoiceTypeId", invoiceType);
                 // start with INVOICE_IN_PROCESS, in the INVOICE_READY we can't change the invoice (or shouldn't be able to...)
                 createInvoiceContext.put("statusId", "INVOICE_IN_PROCESS");