details:   https://code.openbravo.com/erp/devel/pi/rev/8865bff7d417
changeset: 15186:8865bff7d417
user:      Javier Etxarri <javier.echarri <at> openbravo.com>
date:      Tue Jan 24 16:20:40 2012 +0100
summary:   Fixes issue 19260: You can use credit generated from other 
organization.
with this change the credit generated for BP is only available in the first 
organization that it is a legal entity (first legal entity father) or her sons.

diffstat:

 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddOrderOrInvoice.java
         |   6 +-
 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromInvoice.java
     |  19 +++-
 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromTransaction.java
 |  12 ++-
 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/dao/AdvPaymentMngtDao.java
                     |  38 +++++++++-
 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentProcess.java
                |   4 +-
 5 files changed, 67 insertions(+), 12 deletions(-)

diffs (172 lines):

diff -r a44439184a15 -r 8865bff7d417 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddOrderOrInvoice.java
--- 
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddOrderOrInvoice.java
      Tue Jan 24 15:22:56 2012 +0100
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddOrderOrInvoice.java
      Tue Jan 24 16:20:40 2012 +0100
@@ -292,8 +292,10 @@
     if (payment.getBusinessPartner() != null) {
       xmlDocument.setParameter("businessPartner", 
payment.getBusinessPartner().getIdentifier());
       xmlDocument.setParameter("businessPartnerId", 
payment.getBusinessPartner().getId());
-      xmlDocument.setParameter("credit",
-          dao.getCustomerCredit(payment.getBusinessPartner(), 
payment.isReceipt()).toString());
+      xmlDocument.setParameter(
+          "credit",
+          dao.getCustomerCredit(payment.getBusinessPartner(), 
payment.isReceipt(),
+              payment.getOrganization()).toString());
       xmlDocument.setParameter("customerBalance",
           payment.getBusinessPartner().getCreditUsed() != null ? 
payment.getBusinessPartner()
               .getCreditUsed().toString() : BigDecimal.ZERO.toString());
diff -r a44439184a15 -r 8865bff7d417 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromInvoice.java
--- 
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromInvoice.java
  Tue Jan 24 15:22:56 2012 +0100
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromInvoice.java
  Tue Jan 24 16:20:40 2012 +0100
@@ -298,7 +298,16 @@
     xmlDocument.setParameter("orgId", strOrgId);
     xmlDocument.setParameter("invoiceId", strInvoiceId);
     xmlDocument.setParameter("isReceipt", (isReceipt ? "Y" : "N"));
-    xmlDocument.setParameter("credit", dao.getCustomerCredit(bp, 
isReceipt).toString());
+
+    try {
+      OBContext.setAdminMode(true);
+      xmlDocument.setParameter(
+          "credit",
+          dao.getCustomerCredit(bp, isReceipt,
+              OBDal.getInstance().get(Organization.class, 
strOrgId)).toString());
+    } finally {
+      OBContext.restorePreviousMode();
+    }
 
     // get DocumentNo
     final List<Object> parameters = new ArrayList<Object>();
@@ -339,10 +348,10 @@
     }
     xmlDocument.setParameter("sectionDetailFinancialAccount", 
finAccountComboHtml);
 
-    if (account != null){
-     if (!financialAccounts.contains(account)){
-        strFinancialAccountId = financialAccounts.get(0).getId();
-     }
+    if (account != null) {
+      if (!financialAccounts.contains(account)) {
+        strFinancialAccountId = financialAccounts.get(0).getId();
+      }
     }
     // Currency
     xmlDocument.setParameter("CurrencyId", strCurrencyId);
diff -r a44439184a15 -r 8865bff7d417 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromTransaction.java
--- 
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromTransaction.java
      Tue Jan 24 15:22:56 2012 +0100
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromTransaction.java
      Tue Jan 24 16:20:40 2012 +0100
@@ -128,8 +128,16 @@
     } else if (vars.commandIn("LOADCREDIT")) {
       final String strBusinessPartnerId = 
vars.getRequiredStringParameter("inpcBpartnerId");
       final boolean isReceipt = 
"Y".equals(vars.getRequiredStringParameter("isReceipt"));
-      BigDecimal customerCredit = dao.getCustomerCredit(
-          OBDal.getInstance().get(BusinessPartner.class, 
strBusinessPartnerId), isReceipt);
+      final String strOrgId = vars.getRequiredStringParameter("inpadOrgId");
+      BigDecimal customerCredit;
+      try {
+        OBContext.setAdminMode(true);
+        customerCredit = dao.getCustomerCredit(
+            OBDal.getInstance().get(BusinessPartner.class, 
strBusinessPartnerId), isReceipt, OBDal
+                .getInstance().get(Organization.class, strOrgId));
+      } finally {
+        OBContext.restorePreviousMode();
+      }
       response.setContentType("text/html; charset=UTF-8");
       response.setHeader("Cache-Control", "no-cache");
       PrintWriter out = response.getWriter();
diff -r a44439184a15 -r 8865bff7d417 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/dao/AdvPaymentMngtDao.java
--- 
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/dao/AdvPaymentMngtDao.java
  Tue Jan 24 15:22:56 2012 +0100
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/dao/AdvPaymentMngtDao.java
  Tue Jan 24 16:20:40 2012 +0100
@@ -24,6 +24,7 @@
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Set;
 
 import org.apache.commons.lang.StringUtils;
 import org.hibernate.criterion.Criterion;
@@ -1407,6 +1408,7 @@
     return ppfiCriteria.list();
   }
 
+  @Deprecated
   public BigDecimal getCustomerCredit(BusinessPartner bp, boolean isReceipt) {
     BigDecimal creditAmount = BigDecimal.ZERO;
     for (FIN_Payment payment : getCustomerPaymentsWithCredit(bp, isReceipt))
@@ -1415,6 +1417,15 @@
     return creditAmount;
   }
 
+  public BigDecimal getCustomerCredit(BusinessPartner bp, boolean isReceipt, 
Organization OrgId) {
+    BigDecimal creditAmount = BigDecimal.ZERO;
+    for (FIN_Payment payment : getCustomerPaymentsWithCredit(bp, isReceipt, 
OrgId))
+      creditAmount = creditAmount.add(payment.getGeneratedCredit()).subtract(
+          payment.getUsedCredit());
+    return creditAmount;
+  }
+
+  @Deprecated
   public List<FIN_Payment> getCustomerPaymentsWithCredit(BusinessPartner bp, 
boolean isReceipt) {
     OBCriteria<FIN_Payment> obcPayment = 
OBDal.getInstance().createCriteria(FIN_Payment.class);
     obcPayment.add(Restrictions.eq(FIN_Payment.PROPERTY_BUSINESSPARTNER, bp));
@@ -1429,6 +1440,27 @@
     return obcPayment.list();
   }
 
+  public List<FIN_Payment> getCustomerPaymentsWithCredit(BusinessPartner bp, 
boolean isReceipt,
+      Organization OrgId) {
+
+    OBCriteria<FIN_Payment> obcPayment = 
OBDal.getInstance().createCriteria(FIN_Payment.class);
+    obcPayment.add(Restrictions.eq(FIN_Payment.PROPERTY_BUSINESSPARTNER, bp));
+    obcPayment.add(Restrictions.eq(FIN_Payment.PROPERTY_RECEIPT, isReceipt));
+    obcPayment.add(Restrictions.ne(FIN_Payment.PROPERTY_GENERATEDCREDIT, 
BigDecimal.ZERO));
+    obcPayment.add(Restrictions.ne(FIN_Payment.PROPERTY_STATUS, "RPAP"));
+    obcPayment.add(Restrictions.ne(FIN_Payment.PROPERTY_STATUS, "RPVOID"));
+    final Organization legalEntity = FIN_Utility.getLegalEntityOrg(OrgId);
+    Set<String> orgIds = 
OBContext.getOBContext().getOrganizationStructureProvider()
+        .getChildOrg(legalEntity.getId());
+    orgIds.add(legalEntity.getId());
+    obcPayment.add(Restrictions.in("organization.id", orgIds));
+    
obcPayment.add(Restrictions.neProperty(FIN_Payment.PROPERTY_GENERATEDCREDIT,
+        FIN_Payment.PROPERTY_USEDCREDIT));
+    obcPayment.addOrderBy(FIN_Payment.PROPERTY_PAYMENTDATE, true);
+    obcPayment.addOrderBy(FIN_Payment.PROPERTY_DOCUMENTNO, true);
+    return obcPayment.list();
+  }
+
   /**
    * Returns the list of credit payments for the selected business partner 
that belongs to the legal
    * entity's natural tree of the given organization
@@ -1451,8 +1483,10 @@
       
obcPayment.add(Restrictions.neProperty(FIN_Payment.PROPERTY_GENERATEDCREDIT,
           FIN_Payment.PROPERTY_USEDCREDIT));
       final Organization legalEntity = FIN_Utility.getLegalEntityOrg(org);
-      obcPayment.add(Restrictions.in("organization.id", 
OBContext.getOBContext()
-          
.getOrganizationStructureProvider().getNaturalTree(legalEntity.getId())));
+      Set<String> orgIds = 
OBContext.getOBContext().getOrganizationStructureProvider()
+          .getChildOrg(legalEntity.getId());
+      orgIds.add(legalEntity.getId());
+      obcPayment.add(Restrictions.in("organization.id", orgIds));
       obcPayment.addOrderBy(FIN_Payment.PROPERTY_PAYMENTDATE, true);
       obcPayment.addOrderBy(FIN_Payment.PROPERTY_DOCUMENTNO, true);
       return obcPayment.list();
diff -r a44439184a15 -r 8865bff7d417 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentProcess.java
--- 
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentProcess.java
     Tue Jan 24 15:22:56 2012 +0100
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentProcess.java
     Tue Jan 24 16:20:40 2012 +0100
@@ -41,6 +41,7 @@
 import org.openbravo.erpCommon.utility.Utility;
 import org.openbravo.model.common.businesspartner.BusinessPartner;
 import org.openbravo.model.common.currency.ConversionRateDoc;
+import org.openbravo.model.common.enterprise.Organization;
 import org.openbravo.model.common.invoice.Invoice;
 import org.openbravo.model.financialmgmt.payment.FIN_FinaccTransaction;
 import org.openbravo.model.financialmgmt.payment.FIN_Payment;
@@ -733,8 +734,9 @@
       final BigDecimal usedAmount = newPayment.getUsedCredit();
       final BusinessPartner bp = newPayment.getBusinessPartner();
       final boolean isReceipt = newPayment.isReceipt();
+      final Organization OrgId = newPayment.getOrganization();
 
-      List<FIN_Payment> creditPayments = dao.getCustomerPaymentsWithCredit(bp, 
isReceipt);
+      List<FIN_Payment> creditPayments = dao.getCustomerPaymentsWithCredit(bp, 
isReceipt, OrgId);
       BigDecimal pendingToAllocateAmount = usedAmount;
       for (FIN_Payment creditPayment : creditPayments) {
         BigDecimal availableAmount = 
creditPayment.getGeneratedCredit().subtract(

------------------------------------------------------------------------------
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to