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
