details:   https://code.openbravo.com/erp/devel/pi/rev/06abdef2633f
changeset: 22329:06abdef2633f
user:      Sandra Huguet <sandra.huguet <at> openbravo.com>
date:      Mon Mar 03 12:13:22 2014 +0100
summary:   Fixed bug 25876: Error when reactivating payments

details:   https://code.openbravo.com/erp/devel/pi/rev/ee9a0da05d43
changeset: 22330:ee9a0da05d43
user:      Sandra Huguet <sandra.huguet <at> openbravo.com>
date:      Mon Mar 03 12:13:55 2014 +0100
summary:   Fixed bug 25877: Error when adding payments

diffstat:

 modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_FIELD.xml   
                       |    4 +-
 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentProcess.java
 |  140 +++++----
 src-db/database/sourcedata/AD_AUXILIARINPUT.xml                                
                       |   38 ++
 3 files changed, 111 insertions(+), 71 deletions(-)

diffs (238 lines):

diff -r 8bed44ca01d9 -r ee9a0da05d43 
modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_FIELD.xml
--- 
a/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_FIELD.xml  
    Tue Feb 25 12:05:58 2014 +0530
+++ 
b/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_FIELD.xml  
    Mon Mar 03 12:13:55 2014 +0100
@@ -8863,7 +8863,7 @@
 <!--80D2CCB125DAECE6E040007F01000DDE-->  
<AD_COLUMN_ID><![CDATA[78A3367822B35459E040007F01012510]]></AD_COLUMN_ID>
 <!--80D2CCB125DAECE6E040007F01000DDE-->  
<IGNOREINWAD><![CDATA[N]]></IGNOREINWAD>
 <!--80D2CCB125DAECE6E040007F01000DDE-->  
<ISDISPLAYED><![CDATA[Y]]></ISDISPLAYED>
-<!--80D2CCB125DAECE6E040007F01000DDE-->  
<DISPLAYLOGIC><![CDATA[@DocStatus@='CO'&@IsPaid@='N']]></DISPLAYLOGIC>
+<!--80D2CCB125DAECE6E040007F01000DDE-->  
<DISPLAYLOGIC><![CDATA[@DocStatus@='CO'&@IsPaid@='N' &@showAddPayment@='Y' | 
@showAddPayment@ ='']]></DISPLAYLOGIC>
 <!--80D2CCB125DAECE6E040007F01000DDE-->  
<DISPLAYLENGTH><![CDATA[1]]></DISPLAYLENGTH>
 <!--80D2CCB125DAECE6E040007F01000DDE-->  <ISREADONLY><![CDATA[N]]></ISREADONLY>
 <!--80D2CCB125DAECE6E040007F01000DDE-->  <SEQNO><![CDATA[510]]></SEQNO>
@@ -14455,7 +14455,7 @@
 <!--AD7C15BA367642AFB471EFAFD768FB2D-->  
<IGNOREINWAD><![CDATA[N]]></IGNOREINWAD>
 <!--AD7C15BA367642AFB471EFAFD768FB2D-->  
<AD_FIELDGROUP_ID><![CDATA[101]]></AD_FIELDGROUP_ID>
 <!--AD7C15BA367642AFB471EFAFD768FB2D-->  
<ISDISPLAYED><![CDATA[Y]]></ISDISPLAYED>
-<!--AD7C15BA367642AFB471EFAFD768FB2D-->  
<DISPLAYLOGIC><![CDATA[@Processed@='Y'&@IsPaid@='N']]></DISPLAYLOGIC>
+<!--AD7C15BA367642AFB471EFAFD768FB2D-->  
<DISPLAYLOGIC><![CDATA[@Processed@='Y'&@IsPaid@='N'& (@showAddPayment@='Y' | 
@showAddPayment@ ='')]]></DISPLAYLOGIC>
 <!--AD7C15BA367642AFB471EFAFD768FB2D-->  
<DISPLAYLENGTH><![CDATA[10]]></DISPLAYLENGTH>
 <!--AD7C15BA367642AFB471EFAFD768FB2D-->  <ISREADONLY><![CDATA[N]]></ISREADONLY>
 <!--AD7C15BA367642AFB471EFAFD768FB2D-->  <SEQNO><![CDATA[352]]></SEQNO>
diff -r 8bed44ca01d9 -r ee9a0da05d43 
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 Feb 25 12:05:58 2014 +0530
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentProcess.java
     Mon Mar 03 12:13:55 2014 +0100
@@ -849,89 +849,91 @@
                     decreaseCustomerCredit(businessPartner, amount);
                   }
                 }
-                if (strAction.equals("R")
-                    || (strAction.equals("RE")
-                        && paymentScheduleDetail.getInvoicePaymentSchedule() 
== null
-                        && paymentScheduleDetail.getOrderPaymentSchedule() == 
null && paymentScheduleDetail
-                        .getPaymentDetails().getGLItem() == null)) {
-                  
FIN_AddPayment.mergePaymentScheduleDetails(paymentScheduleDetail);
-                  removedPDS.add(paymentScheduleDetail);
-                }
               }
-              
paymentDetail.getFINPaymentScheduleDetailList().removeAll(removedPDS);
-              if (strAction.equals("R")) {
+              if (strAction.equals("R")
+                  || (strAction.equals("RE")
+                      && paymentScheduleDetail.getInvoicePaymentSchedule() == 
null
+                      && paymentScheduleDetail.getOrderPaymentSchedule() == 
null && paymentScheduleDetail
+                      .getPaymentDetails().getGLItem() == null)) {
+                
FIN_AddPayment.mergePaymentScheduleDetails(paymentScheduleDetail);
+                removedPDS.add(paymentScheduleDetail);
+              }
+
+            }
+            
paymentDetail.getFINPaymentScheduleDetailList().removeAll(removedPDS);
+            if (strAction.equals("R")) {
+              OBDal.getInstance().getSession().refresh(paymentDetail);
+            }
+            // If there is any schedule detail with amount zero, those are 
deleted
+            for (FIN_PaymentScheduleDetail psd : removedPDS) {
+              if (BigDecimal.ZERO.compareTo(psd.getAmount()) == 0
+                  && BigDecimal.ZERO.compareTo(psd.getWriteoffAmount()) == 0) {
+                paymentDetail.getFINPaymentScheduleDetailList().remove(psd);
                 OBDal.getInstance().getSession().refresh(paymentDetail);
+                psd.getInvoicePaymentSchedule()
+                    
.getFINPaymentScheduleDetailInvoicePaymentScheduleList().remove(psd);
+                
psd.getOrderPaymentSchedule().getFINPaymentScheduleDetailOrderPaymentScheduleList()
+                    .remove(psd);
+                OBDal.getInstance().remove(psd);
               }
-              // If there is any schedule detail with amount zero, those are 
deleted
-              for (FIN_PaymentScheduleDetail psd : removedPDS) {
-                if (BigDecimal.ZERO.compareTo(psd.getAmount()) == 0
-                    && BigDecimal.ZERO.compareTo(psd.getWriteoffAmount()) == 
0) {
-                  paymentDetail.getFINPaymentScheduleDetailList().remove(psd);
-                  OBDal.getInstance().getSession().refresh(paymentDetail);
-                  psd.getInvoicePaymentSchedule()
-                      
.getFINPaymentScheduleDetailInvoicePaymentScheduleList().remove(psd);
-                  psd.getOrderPaymentSchedule()
-                      
.getFINPaymentScheduleDetailOrderPaymentScheduleList().remove(psd);
-                  OBDal.getInstance().remove(psd);
-                }
-              }
-              if (paymentDetail.getFINPaymentScheduleDetailList().size() == 0) 
{
-                removedPD.add(paymentDetail);
-                removedPDIds.add(paymentDetail.getId());
-              }
-              OBDal.getInstance().save(paymentDetail);
             }
-            for (String pdToRm : removedPDIds) {
-              
OBDal.getInstance().remove(OBDal.getInstance().get(FIN_PaymentDetail.class, 
pdToRm));
+            if (paymentDetail.getFINPaymentScheduleDetailList().size() == 0) {
+              removedPD.add(paymentDetail);
+              removedPDIds.add(paymentDetail.getId());
             }
-            payment.getFINPaymentDetailList().removeAll(removedPD);
-            if (strAction.equals("R")) {
-              
payment.getCurrencyConversionRateDocList().removeAll(conversionRates);
-              payment.setFinancialTransactionConvertRate(BigDecimal.ZERO);
-            }
-            OBDal.getInstance().save(payment);
+            OBDal.getInstance().save(paymentDetail);
+          }
+          for (String pdToRm : removedPDIds) {
+            
OBDal.getInstance().remove(OBDal.getInstance().get(FIN_PaymentDetail.class, 
pdToRm));
+          }
+          payment.getFINPaymentDetailList().removeAll(removedPD);
+          if (strAction.equals("R")) {
+            
payment.getCurrencyConversionRateDocList().removeAll(conversionRates);
+            payment.setFinancialTransactionConvertRate(BigDecimal.ZERO);
+          }
+          OBDal.getInstance().save(payment);
 
-            if (payment.getGeneratedCredit().compareTo(BigDecimal.ZERO) == 0
-                && payment.getUsedCredit().compareTo(BigDecimal.ZERO) != 0) {
-              undoUsedCredit(payment, vars, invoiceDocNos);
-            }
+          if (payment.getGeneratedCredit().compareTo(BigDecimal.ZERO) == 0
+              && payment.getUsedCredit().compareTo(BigDecimal.ZERO) != 0) {
+            undoUsedCredit(payment, vars, invoiceDocNos);
+          }
 
-            List<FIN_Payment> creditPayments = new ArrayList<FIN_Payment>();
-            for (final FIN_Payment_Credit pc : 
payment.getFINPaymentCreditList()) {
-              creditPayments.add(pc.getCreditPaymentUsed());
-            }
-            for (final FIN_Payment creditPayment : creditPayments) {
-              // Update Description
-              final String payDesc = creditPayment.getDescription();
-              if (payDesc != null) {
-                final String invoiceDocNoMsg = Utility.messageBD(new 
DalConnectionProvider(),
-                    "APRM_CreditUsedinInvoice", vars.getLanguage());
-                if (invoiceDocNoMsg != null) {
-                  final StringBuffer newDesc = new StringBuffer();
-                  for (final String line : payDesc.split("\n")) {
-                    boolean include = true;
-                    if (line.startsWith(invoiceDocNoMsg.substring(0,
-                        invoiceDocNoMsg.lastIndexOf("%s")))) {
-                      for (final String docNo : invoiceDocNos) {
-                        if (line.indexOf(docNo) > 0) {
-                          include = false;
-                          break;
-                        }
+          List<FIN_Payment> creditPayments = new ArrayList<FIN_Payment>();
+          for (final FIN_Payment_Credit pc : 
payment.getFINPaymentCreditList()) {
+            creditPayments.add(pc.getCreditPaymentUsed());
+          }
+          for (final FIN_Payment creditPayment : creditPayments) {
+            // Update Description
+            final String payDesc = creditPayment.getDescription();
+            if (payDesc != null) {
+              final String invoiceDocNoMsg = Utility.messageBD(new 
DalConnectionProvider(),
+                  "APRM_CreditUsedinInvoice", vars.getLanguage());
+              if (invoiceDocNoMsg != null) {
+                final StringBuffer newDesc = new StringBuffer();
+                for (final String line : payDesc.split("\n")) {
+                  boolean include = true;
+                  if (line.startsWith(invoiceDocNoMsg.substring(0,
+                      invoiceDocNoMsg.lastIndexOf("%s")))) {
+                    for (final String docNo : invoiceDocNos) {
+                      if (line.indexOf(docNo) > 0) {
+                        include = false;
+                        break;
                       }
                     }
-                    if (include) {
-                      newDesc.append(line);
-                      if (!"".equals(line))
-                        newDesc.append("\n");
-                    }
                   }
-                  // Truncate Description to keep length as 255
-                  creditPayment.setDescription(newDesc.toString().length() > 
255 ? newDesc
-                      .toString().substring(0, 255) : newDesc.toString());
+                  if (include) {
+                    newDesc.append(line);
+                    if (!"".equals(line))
+                      newDesc.append("\n");
+                  }
                 }
+                // Truncate Description to keep length as 255
+                creditPayment.setDescription(newDesc.toString().length() > 255 
? newDesc.toString()
+                    .substring(0, 255) : newDesc.toString());
               }
             }
           }
+
           payment.getFINPaymentCreditList().clear();
           payment.setGeneratedCredit(BigDecimal.ZERO);
           if (strAction.equals("R")) {
diff -r 8bed44ca01d9 -r ee9a0da05d43 
src-db/database/sourcedata/AD_AUXILIARINPUT.xml
--- a/src-db/database/sourcedata/AD_AUXILIARINPUT.xml   Tue Feb 25 12:05:58 
2014 +0530
+++ b/src-db/database/sourcedata/AD_AUXILIARINPUT.xml   Mon Mar 03 12:13:55 
2014 +0100
@@ -2485,6 +2485,25 @@
 <!--9E0F5BB107EE463B8E4F18395952D8F2-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
 <!--9E0F5BB107EE463B8E4F18395952D8F2--></AD_AUXILIARINPUT>
 
+<!--9E5EF28335254D948E30BAF9BF41B3A7--><AD_AUXILIARINPUT>
+<!--9E5EF28335254D948E30BAF9BF41B3A7-->  
<AD_AUXILIARINPUT_ID><![CDATA[9E5EF28335254D948E30BAF9BF41B3A7]]></AD_AUXILIARINPUT_ID>
+<!--9E5EF28335254D948E30BAF9BF41B3A7-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--9E5EF28335254D948E30BAF9BF41B3A7-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--9E5EF28335254D948E30BAF9BF41B3A7-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--9E5EF28335254D948E30BAF9BF41B3A7-->  <AD_TAB_ID><![CDATA[290]]></AD_TAB_ID>
+<!--9E5EF28335254D948E30BAF9BF41B3A7-->  
<NAME><![CDATA[showAddPayment]]></NAME>
+<!--9E5EF28335254D948E30BAF9BF41B3A7-->  <CODE><![CDATA[@SQL=select case when 
sum(fpsd.amount)=ci.GrandTotal then 'N' else 'Y' end 
+          from fin_payment_scheduledetail fpsd
+              left join fin_payment_detail fpd on 
fpsd.fin_payment_detail_id=fpd.fin_payment_detail_id
+               left join fin_payment fp on fpd.fin_payment_id=fp.fin_payment_id
+                left join fin_payment_schedule ps ON 
ps.fin_payment_schedule_id = fpsd.fin_payment_schedule_invoice
+                left join c_invoice ci on ci.c_invoice_id=ps.c_invoice_id
+                WHERE ps.c_invoice_id =@c_invoice_id@
+                and to_number(aprm_seqnumberpaymentstatus(fp.status)) >= 40
+                group by ci.GrandTotal]]></CODE>
+<!--9E5EF28335254D948E30BAF9BF41B3A7-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
+<!--9E5EF28335254D948E30BAF9BF41B3A7--></AD_AUXILIARINPUT>
+
 <!--9EC3A191A6D84253A26520E4849B73EF--><AD_AUXILIARINPUT>
 <!--9EC3A191A6D84253A26520E4849B73EF-->  
<AD_AUXILIARINPUT_ID><![CDATA[9EC3A191A6D84253A26520E4849B73EF]]></AD_AUXILIARINPUT_ID>
 <!--9EC3A191A6D84253A26520E4849B73EF-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -3879,4 +3898,23 @@
 <!--FF80818132916D6E013291C49E7E00E6-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
 <!--FF80818132916D6E013291C49E7E00E6--></AD_AUXILIARINPUT>
 
+<!--FFA925AAC4BB49D5A67C05DAD16EFA32--><AD_AUXILIARINPUT>
+<!--FFA925AAC4BB49D5A67C05DAD16EFA32-->  
<AD_AUXILIARINPUT_ID><![CDATA[FFA925AAC4BB49D5A67C05DAD16EFA32]]></AD_AUXILIARINPUT_ID>
+<!--FFA925AAC4BB49D5A67C05DAD16EFA32-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--FFA925AAC4BB49D5A67C05DAD16EFA32-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--FFA925AAC4BB49D5A67C05DAD16EFA32-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--FFA925AAC4BB49D5A67C05DAD16EFA32-->  <AD_TAB_ID><![CDATA[263]]></AD_TAB_ID>
+<!--FFA925AAC4BB49D5A67C05DAD16EFA32-->  
<NAME><![CDATA[showAddPayment]]></NAME>
+<!--FFA925AAC4BB49D5A67C05DAD16EFA32-->  <CODE><![CDATA[@SQL=select case when 
sum(fpsd.amount)=ci.GrandTotal then 'N' else 'Y' end 
+          from fin_payment_scheduledetail fpsd
+              left join fin_payment_detail fpd on 
fpsd.fin_payment_detail_id=fpd.fin_payment_detail_id
+               left join fin_payment fp on fpd.fin_payment_id=fp.fin_payment_id
+                left join fin_payment_schedule ps ON 
ps.fin_payment_schedule_id = fpsd.fin_payment_schedule_invoice
+                left join c_invoice ci on ci.c_invoice_id=ps.c_invoice_id
+                WHERE ps.c_invoice_id =@c_invoice_id@
+                and to_number(aprm_seqnumberpaymentstatus(fp.status)) >= 40
+                group by ci.GrandTotal]]></CODE>
+<!--FFA925AAC4BB49D5A67C05DAD16EFA32-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
+<!--FFA925AAC4BB49D5A67C05DAD16EFA32--></AD_AUXILIARINPUT>
+
 </data>

------------------------------------------------------------------------------
Subversion Kills Productivity. Get off Subversion & Make the Move to Perforce.
With Perforce, you get hassle-free workflows. Merge that actually works. 
Faster operations. Version large binaries.  Built-in WAN optimization and the
freedom to use Git, Perforce or both. Make the move to Perforce.
http://pubads.g.doubleclick.net/gampad/clk?id=122218951&iu=/4140/ostg.clktrk
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to