details:   /erp/devel/pi/rev/55a03a19eeda
changeset: 13108:55a03a19eeda
user:      Víctor Martínez Romanos <victor.martinez <at> openbravo.com>
date:      Tue Jul 05 17:21:55 2011 +0200
summary:   Applies code review feedback:
- Use setMaxResults(1) for improving performance
- Check invoice's payment method belongs to bp default financial account for
processing the new payment

details:   /erp/devel/pi/rev/5d2c7a3478c6
changeset: 13109:5d2c7a3478c6
user:      Víctor Martínez Romanos <victor.martinez <at> openbravo.com>
date:      Tue Jul 05 18:23:24 2011 +0200
summary:   Fixed bug 17877: FIN_Utility.getDocumentType() not filtering by 
client

diffstat:

 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/ProcessInvoice.java
 |  30 +++++++--
 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/dao/AdvPaymentMngtDao.java
          |   1 +
 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/utility/FIN_Utility.java
            |  12 ++++
 3 files changed, 35 insertions(+), 8 deletions(-)

diffs (91 lines):

diff -r 90cac17acba3 -r 5d2c7a3478c6 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/ProcessInvoice.java
--- 
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/ProcessInvoice.java
 Wed Jul 06 02:39:41 2011 +0200
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/ProcessInvoice.java
 Tue Jul 05 18:23:24 2011 +0200
@@ -46,9 +46,11 @@
 import org.openbravo.model.ad.ui.Process;
 import org.openbravo.model.common.enterprise.DocumentType;
 import org.openbravo.model.common.invoice.Invoice;
+import org.openbravo.model.financialmgmt.payment.FIN_FinancialAccount;
 import org.openbravo.model.financialmgmt.payment.FIN_Payment;
 import org.openbravo.model.financialmgmt.payment.FIN_PaymentSchedule;
 import org.openbravo.model.financialmgmt.payment.FIN_PaymentScheduleDetail;
+import org.openbravo.model.financialmgmt.payment.FinAccPaymentMethod;
 import org.openbravo.service.db.CallProcess;
 import org.openbravo.xmlEngine.XmlDocument;
 
@@ -193,18 +195,30 @@
                   isSalesTransaction ? "ARR" : "APP");
               final String strPaymentDocumentNo = 
FIN_Utility.getDocumentNo(docType,
                   docType.getTable() != null ? 
docType.getTable().getDBTableName() : "");
+              final FIN_FinancialAccount bpFinAccount = isSalesTransaction ? 
invoice
+                  .getBusinessPartner().getAccount() : 
invoice.getBusinessPartner()
+                  .getPOFinancialAccount();
               final FIN_Payment newPayment = FIN_AddPayment.savePayment(null, 
isSalesTransaction,
-                  docType, strPaymentDocumentNo, invoice.getBusinessPartner(), 
invoice
-                      .getPaymentMethod(), isSalesTransaction ? 
invoice.getBusinessPartner()
-                      .getAccount() : 
invoice.getBusinessPartner().getPOFinancialAccount(), "0",
-                  creditPayment.getPaymentDate(), invoice.getOrganization(), 
invoice
-                      .getDocumentNo(), paymentScheduleDetails, 
paymentScheduleDetailsAmounts,
-                  false, false);
+                  docType, strPaymentDocumentNo, invoice.getBusinessPartner(),
+                  invoice.getPaymentMethod(), bpFinAccount, "0", 
creditPayment.getPaymentDate(),
+                  invoice.getOrganization(), invoice.getDocumentNo(), 
paymentScheduleDetails,
+                  paymentScheduleDetailsAmounts, false, false);
               newPayment.setAmount(BigDecimal.ZERO);
               newPayment.setGeneratedCredit(BigDecimal.ZERO);
               newPayment.setUsedCredit(invoice.getGrandTotalAmount());
-              // Process the new payment
-              FIN_AddPayment.processPayment(vars, this, "P", newPayment);
+
+              // Process the new payment if invoice's payment method is inside 
BP's financial
+              // account
+              boolean process = false;
+              for (final FinAccPaymentMethod bpFinAccPaymentMethod : 
bpFinAccount
+                  .getFinancialMgmtFinAccPaymentMethodList()) {
+                if 
(bpFinAccPaymentMethod.getPaymentMethod().equals(invoice.getPaymentMethod())) {
+                  process = true;
+                  break;
+                }
+              }
+              if (process)
+                FIN_AddPayment.processPayment(vars, this, "P", newPayment);
             }
           }
         } catch (final Exception e) {
diff -r 90cac17acba3 -r 5d2c7a3478c6 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/dao/AdvPaymentMngtDao.java
--- 
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/dao/AdvPaymentMngtDao.java
  Wed Jul 06 02:39:41 2011 +0200
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/dao/AdvPaymentMngtDao.java
  Tue Jul 05 18:23:24 2011 +0200
@@ -1456,6 +1456,7 @@
       obcFinPayment.add(Restrictions.in("organization.id", 
OBContext.getOBContext()
           
.getOrganizationStructureProvider().getNaturalTree(organization.getId())));
       obcFinPayment.addOrderBy(FIN_Payment.PROPERTY_PAYMENTDATE, true);
+      obcFinPayment.setMaxResults(1);
 
       final List<FIN_Payment> finPayments = obcFinPayment.list();
       if (finPayments.size() > 0) {
diff -r 90cac17acba3 -r 5d2c7a3478c6 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/utility/FIN_Utility.java
--- 
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/utility/FIN_Utility.java
    Wed Jul 06 02:39:41 2011 +0200
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/utility/FIN_Utility.java
    Tue Jul 05 18:23:24 2011 +0200
@@ -300,10 +300,22 @@
    */
   public static DocumentType getDocumentType(Organization org, String 
docCategory) {
     DocumentType outDocType = null;
+    Client client = null;
+
     OBCriteria<DocumentType> obcDoc = 
OBDal.getInstance().createCriteria(DocumentType.class);
     obcDoc.setFilterOnReadableClients(false);
     obcDoc.setFilterOnReadableOrganization(false);
 
+    if ("0".equals(org.getId())) {
+      client = OBContext.getOBContext().getCurrentClient();
+      if ("0".equals(client.getId())) {
+        return null;
+      }
+    } else {
+      client = org.getClient();
+    }
+    obcDoc.add(Restrictions.eq(DocumentType.PROPERTY_CLIENT, client));
+
     obcDoc
         .add(Restrictions.in("organization.id",
             
OBContext.getOBContext().getOrganizationStructureProvider(org.getClient().getId())

------------------------------------------------------------------------------
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security 
threats, fraudulent activity, and more. Splunk takes this data and makes 
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to