details: https://code.openbravo.com/erp/devel/main/rev/fc4fc420b639 changeset: 15246:fc4fc420b639 user: Jon AlegrĂa <jon.alegria <at> openbravo.com> date: Mon Jan 30 11:51:35 2012 +0100 summary: Fixes issue 0019433: Net Unit Price wrong calculated with discount
details: https://code.openbravo.com/erp/devel/main/rev/72658d6ae07c changeset: 15247:72658d6ae07c user: Asier Lostalé <asier.lostale <at> openbravo.com> date: Mon Jan 30 14:58:35 2012 +0000 summary: documentation details: https://code.openbravo.com/erp/devel/main/rev/4ad8836205f2 changeset: 15248:4ad8836205f2 user: Javier Etxarri <javier.echarri <at> openbravo.com> date: Mon Jan 30 16:47:20 2012 +0100 summary: Fixes issue 19580: Initial Org setup fails with dal permission check error. Now, in execution time, the process has access to all propierties of entities ADImage and ADTree details: https://code.openbravo.com/erp/devel/main/rev/a052b9bb86e5 changeset: 15249:a052b9bb86e5 user: Javier Etxarri <javier.echarri <at> openbravo.com> date: Mon Jan 30 18:13:28 2012 +0100 summary: issue 17395, issue 19463: Read Only Logic for columns is applied incorrectly. Now the read only logic is applied correctly for fields without column related (OBClientClassField) details: https://code.openbravo.com/erp/devel/main/rev/10c7ee51d207 changeset: 15250:10c7ee51d207 user: Javier Etxarri <javier.echarri <at> openbravo.com> date: Mon Jan 30 18:44:09 2012 +0100 summary: issue 19283: You can not lock an user. Updated the COpyright end year details: https://code.openbravo.com/erp/devel/main/rev/5a50007648a7 changeset: 15251:5a50007648a7 user: RM packaging bot <staff.rm <at> openbravo.com> date: Mon Jan 30 23:45:58 2012 +0100 summary: CI: merge back from main details: https://code.openbravo.com/erp/devel/main/rev/aebe5fda8932 changeset: 15252:aebe5fda8932 user: Eduardo Argal Guibert <eduardo.argal <at> openbravo.com> date: Fri Dec 23 14:01:30 2011 +0100 summary: Fixes issue 18818, Fixes issue 19363 details: https://code.openbravo.com/erp/devel/main/rev/a5f8504156ea changeset: 15253:a5f8504156ea user: Eduardo Argal Guibert <eduardo.argal <at> openbravo.com> date: Fri Dec 23 14:01:30 2011 +0100 summary: Fixes issue 18818, Fixes issue 19363 details: https://code.openbravo.com/erp/devel/main/rev/a295858d3232 changeset: 15254:a295858d3232 user: Eduardo Argal Guibert <eduardo.argal <at> openbravo.com> date: Mon Jan 30 19:11:21 2012 +0100 summary: Fixes issue 17231: Instead of showing the invoice once, it is showing as many times as orders gathers details: https://code.openbravo.com/erp/devel/main/rev/9c4928b3f1e5 changeset: 15255:9c4928b3f1e5 user: Eduardo Argal Guibert <eduardo.argal <at> openbravo.com> date: Mon Jan 30 19:27:50 2012 +0100 summary: merge details: https://code.openbravo.com/erp/devel/main/rev/4115718d84a0 changeset: 15256:4115718d84a0 user: Eduardo Argal Guibert <eduardo.argal <at> openbravo.com> date: Tue Jan 31 10:54:16 2012 +0100 summary: merge details: https://code.openbravo.com/erp/devel/main/rev/9fdad21b4f9f changeset: 15257:9fdad21b4f9f user: Eduardo Argal Guibert <eduardo.argal <at> openbravo.com> date: Tue Jan 31 11:23:19 2012 +0100 summary: [Code Review] for issue 19549 details: https://code.openbravo.com/erp/devel/main/rev/015ef57d21c1 changeset: 15258:015ef57d21c1 user: Eduardo Argal Guibert <eduardo.argal <at> openbravo.com> date: Tue Jan 31 11:50:37 2012 +0100 summary: [Code review] Modify license details: https://code.openbravo.com/erp/devel/main/rev/44cab4b1fcef changeset: 15259:44cab4b1fcef user: Eduardo Argal Guibert <eduardo.argal <at> openbravo.com> date: Tue Jan 31 13:16:00 2012 +0100 summary: Fixes bug 19550: Shipment /receipt posting not handling properly products with 0 cost details: https://code.openbravo.com/erp/devel/main/rev/933a9b7b9d89 changeset: 15260:933a9b7b9d89 user: RM packaging bot <staff.rm <at> openbravo.com> date: Wed Feb 01 08:45:07 2012 +0100 summary: CI: update AD_MODULE to version 15259 diffstat: modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE.xml | 2 +- modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml | 4 +- modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddOrderOrInvoice.java | 160 +++++++++- modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentGrid.srpt | 4 +- modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentGrid.xml | 6 +- modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_AddPayment.java | 32 +- modules/org.openbravo.base.weld/src-db/database/sourcedata/AD_MODULE.xml | 2 +- modules/org.openbravo.base.weld/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml | 2 +- modules/org.openbravo.client.application/src-db/database/sourcedata/AD_MODULE.xml | 2 +- modules/org.openbravo.client.application/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml | 8 +- modules/org.openbravo.client.application/src/org/openbravo/client/application/window/OBViewFieldHandler.java | 4 +- modules/org.openbravo.client.htmlwidget/src-db/database/sourcedata/AD_MODULE.xml | 2 +- modules/org.openbravo.client.htmlwidget/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml | 2 +- modules/org.openbravo.client.kernel/src-db/database/sourcedata/AD_MODULE.xml | 2 +- modules/org.openbravo.client.kernel/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml | 6 +- modules/org.openbravo.client.myob/src-db/database/sourcedata/AD_MODULE.xml | 2 +- modules/org.openbravo.client.myob/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml | 4 +- modules/org.openbravo.client.myob/src-db/database/sourcedata/AD_WINDOW.xml | 2 +- modules/org.openbravo.client.querylist/src-db/database/sourcedata/AD_MODULE.xml | 2 +- modules/org.openbravo.client.querylist/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml | 2 +- modules/org.openbravo.client.widgets/src-db/database/sourcedata/AD_MODULE.xml | 2 +- modules/org.openbravo.client.widgets/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml | 2 +- modules/org.openbravo.financial.paymentreport/src-db/database/sourcedata/AD_MODULE.xml | 2 +- modules/org.openbravo.financial.paymentreport/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml | 2 +- modules/org.openbravo.reports.ordersawaitingdelivery/src-db/database/sourcedata/AD_MODULE.xml | 2 +- modules/org.openbravo.reports.ordersawaitingdelivery/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml | 2 +- modules/org.openbravo.service.datasource/src-db/database/sourcedata/AD_MODULE.xml | 2 +- modules/org.openbravo.service.datasource/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml | 10 +- modules/org.openbravo.service.integration.google/src-db/database/sourcedata/AD_MODULE.xml | 2 +- modules/org.openbravo.service.integration.google/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml | 4 +- modules/org.openbravo.service.integration.openid/src-db/database/sourcedata/AD_MODULE.xml | 2 +- modules/org.openbravo.service.integration.openid/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml | 2 +- modules/org.openbravo.service.json/src-db/database/sourcedata/AD_MODULE.xml | 2 +- modules/org.openbravo.service.json/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml | 2 +- modules/org.openbravo.userinterface.selector/src-db/database/sourcedata/AD_MODULE.xml | 2 +- modules/org.openbravo.userinterface.selector/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml | 12 +- modules/org.openbravo.userinterface.skin.250to300Comp/src-db/database/sourcedata/AD_MODULE.xml | 2 +- modules/org.openbravo.userinterface.skin.250to300Comp/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml | 2 +- modules/org.openbravo.userinterface.smartclient/src-db/database/sourcedata/AD_MODULE.xml | 2 +- modules/org.openbravo.userinterface.smartclient/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml | 6 +- modules/org.openbravo.v3.datasets/src-db/database/sourcedata/AD_MODULE.xml | 2 +- modules/org.openbravo.v3.datasets/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml | 6 +- modules/org.openbravo.v3.framework/src-db/database/sourcedata/AD_MODULE.xml | 2 +- modules/org.openbravo.v3.framework/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml | 24 +- modules/org.openbravo.v3/src-db/database/sourcedata/AD_MODULE.xml | 2 +- modules/org.openbravo.v3/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml | 18 +- src-db/database/sourcedata/AD_MODULE.xml | 4 +- src-db/database/sourcedata/AD_TAB.xml | 4 +- src-db/database/sourcedata/AD_WINDOW.xml | 2 +- src/org/openbravo/authentication/basic/DefaultAuthenticationManager.java | 2 +- src/org/openbravo/erpCommon/ad_callouts/SL_Order_Amt.java | 30 +- src/org/openbravo/erpCommon/ad_forms/DocInOut.java | 65 ++-- src/org/openbravo/erpCommon/ad_reports/ReportNotPosted_data.xsql | 2 +- src/org/openbravo/erpCommon/businessUtility/InitialOrgSetup.java | 6 + 54 files changed, 331 insertions(+), 152 deletions(-) diffs (truncated from 1502 to 300 lines): diff -r 578ff14a16ee -r 933a9b7b9d89 modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE.xml --- a/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE.xml Mon Jan 30 07:43:43 2012 +0000 +++ b/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE.xml Wed Feb 01 08:45:07 2012 +0100 @@ -6,7 +6,7 @@ <!--A918E3331C404B889D69AA9BFAFB23AC--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID> <!--A918E3331C404B889D69AA9BFAFB23AC--> <ISACTIVE><![CDATA[Y]]></ISACTIVE> <!--A918E3331C404B889D69AA9BFAFB23AC--> <NAME><![CDATA[Advanced Payables and Receivables Mngmt]]></NAME> -<!--A918E3331C404B889D69AA9BFAFB23AC--> <VERSION><![CDATA[3.0.15241]]></VERSION> +<!--A918E3331C404B889D69AA9BFAFB23AC--> <VERSION><![CDATA[3.0.15259]]></VERSION> <!--A918E3331C404B889D69AA9BFAFB23AC--> <DESCRIPTION><![CDATA[Managing your finances with an ERP does not have to be difficult. Enjoy a radically improved user experience that combines the power of an enterprise grade financial application with the simplicity and ease of a web 2.0 personal accounting service.]]></DESCRIPTION> <!--A918E3331C404B889D69AA9BFAFB23AC--> <HELP><![CDATA[Advanced Payables and Receivables Management simplifies and automates the business processes around the management of financial accounts, from the receipt and issue of payment, to the reconciliation of those events with bank statements. If you would like to help shape this module you are welcome to take part in the forum discussions or register feature requests or issues in the corresponding (Forum and Bug Tracking) sections in the Advanced Payables and Receivable project in the OB Forge.]]></HELP> diff -r 578ff14a16ee -r 933a9b7b9d89 modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml --- a/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml Mon Jan 30 07:43:43 2012 +0000 +++ b/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml Wed Feb 01 08:45:07 2012 +0100 @@ -7,7 +7,7 @@ <!--89326AE95DAD449D85DFAB2C5B1C6683--> <ISACTIVE><![CDATA[Y]]></ISACTIVE> <!--89326AE95DAD449D85DFAB2C5B1C6683--> <AD_MODULE_ID><![CDATA[A918E3331C404B889D69AA9BFAFB23AC]]></AD_MODULE_ID> <!--89326AE95DAD449D85DFAB2C5B1C6683--> <AD_DEPENDENT_MODULE_ID><![CDATA[5EB4F15C80684ACA904756BDC12ADBE5]]></AD_DEPENDENT_MODULE_ID> -<!--89326AE95DAD449D85DFAB2C5B1C6683--> <STARTVERSION><![CDATA[2.1.15241]]></STARTVERSION> +<!--89326AE95DAD449D85DFAB2C5B1C6683--> <STARTVERSION><![CDATA[2.1.15259]]></STARTVERSION> <!--89326AE95DAD449D85DFAB2C5B1C6683--> <ISINCLUDED><![CDATA[N]]></ISINCLUDED> <!--89326AE95DAD449D85DFAB2C5B1C6683--> <DEPENDANT_MODULE_NAME><![CDATA[User Interface Selector]]></DEPENDANT_MODULE_NAME> <!--89326AE95DAD449D85DFAB2C5B1C6683--> <DEPENDENCY_ENFORCEMENT><![CDATA[MAJOR]]></DEPENDENCY_ENFORCEMENT> @@ -21,7 +21,7 @@ <!--B97FC854C6DD41E692161585645A900F--> <ISACTIVE><![CDATA[Y]]></ISACTIVE> <!--B97FC854C6DD41E692161585645A900F--> <AD_MODULE_ID><![CDATA[A918E3331C404B889D69AA9BFAFB23AC]]></AD_MODULE_ID> <!--B97FC854C6DD41E692161585645A900F--> <AD_DEPENDENT_MODULE_ID><![CDATA[0]]></AD_DEPENDENT_MODULE_ID> -<!--B97FC854C6DD41E692161585645A900F--> <STARTVERSION><![CDATA[3.0.15241]]></STARTVERSION> +<!--B97FC854C6DD41E692161585645A900F--> <STARTVERSION><![CDATA[3.0.15259]]></STARTVERSION> <!--B97FC854C6DD41E692161585645A900F--> <ISINCLUDED><![CDATA[N]]></ISINCLUDED> <!--B97FC854C6DD41E692161585645A900F--> <DEPENDANT_MODULE_NAME><![CDATA[core]]></DEPENDANT_MODULE_NAME> <!--B97FC854C6DD41E692161585645A900F--> <DEPENDENCY_ENFORCEMENT><![CDATA[MAJOR]]></DEPENDENCY_ENFORCEMENT> diff -r 578ff14a16ee -r 933a9b7b9d89 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 Mon Jan 30 07:43:43 2012 +0000 +++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddOrderOrInvoice.java Wed Feb 01 08:45:07 2012 +0100 @@ -23,7 +23,10 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; +import java.util.StringTokenizer; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; @@ -89,8 +92,7 @@ String strDueDateFrom = vars.getStringParameter("inpDueDateFrom", ""); String strDueDateTo = vars.getStringParameter("inpDueDateTo", ""); String strDocumentType = vars.getStringParameter("inpDocumentType", ""); - String strSelectedPaymentDetails = vars.getInStringParameter("inpScheduledPaymentDetailId", - IsIDFilter.instance); + String strSelectedPaymentDetails = vars.getInStringParameter("inpScheduledPaymentDetailId"); boolean isReceipt = vars.getRequiredStringParameter("isReceipt").equals("Y"); Boolean showAlternativePM = "Y".equals(vars.getStringParameter("inpAlternativePaymentMethod", filterYesNo)); @@ -107,8 +109,8 @@ strAction = vars.getRequiredStringParameter("inpActionDocument"); } String strPaymentId = vars.getRequiredStringParameter("inpfinPaymentId"); - String strSelectedScheduledPaymentDetailIds = vars.getInParameter( - "inpScheduledPaymentDetailId", "", IsIDFilter.instance); + String strSelectedScheduledPaymentDetailIds = vars.getInStringParameter( + "inpScheduledPaymentDetailId", ""); String strAddedGLItems = vars.getStringParameter("inpGLItems"); JSONArray addedGLITemsArray = null; try { @@ -142,8 +144,8 @@ List<FIN_PaymentScheduleDetail> selectedPaymentDetails = FIN_Utility.getOBObjectList( FIN_PaymentScheduleDetail.class, strSelectedScheduledPaymentDetailIds); - HashMap<String, BigDecimal> selectedPaymentDetailAmounts = FIN_AddPayment - .getSelectedPaymentDetailsAndAmount(vars, selectedPaymentDetails); + HashMap<String, BigDecimal> selectedPaymentDetailAmounts = getSelectedPaymentDetailsAndAmount( + vars, strSelectedScheduledPaymentDetailIds); FIN_Payment payment = dao.getObject(FIN_Payment.class, strPaymentId); BigDecimal newPaymentAmount = new BigDecimal(strPaymentAmount); @@ -412,8 +414,9 @@ showAlternativePM ? null : payment.getPaymentMethod(), selectedScheduledPaymentDetails, isReceipt); - final FieldProvider[] data = FIN_AddPayment.getShownScheduledPaymentDetails(vars, + FieldProvider[] data = FIN_AddPayment.getShownScheduledPaymentDetails(vars, selectedScheduledPaymentDetails, filteredScheduledPaymentDetails, false, null); + data = groupPerDocumentType(data, strDocumentType); xmlDocument.setData("structure", (data == null) ? set() : data); response.setContentType("text/html; charset=UTF-8"); @@ -436,6 +439,149 @@ return FieldProviderFactory.getFieldProviderArray(result); } + private FieldProvider[] groupPerDocumentType(FieldProvider[] data, String strDocumenType) { + ArrayList<FieldProvider> gridLines = new ArrayList<FieldProvider>(); + HashMap<String, Integer> amountsPerGroupingField = new HashMap<String, Integer>(); + String groupingField = "finScheduledPaymentDetailId"; + if ("I".equals(strDocumenType)) { + groupingField = "invoicePaymentScheduleId"; + } else if ("O".equals(strDocumenType)) { + groupingField = "orderPaymentScheduleId"; + } + for (int i = 0; i < data.length; i++) { + if (!amountsPerGroupingField.containsKey(data[i].getField(groupingField)) + || "".equals(data[i].getField(groupingField))) { + amountsPerGroupingField.put(data[i].getField(groupingField), gridLines.size()); + FieldProviderFactory.setField(data[i], "rownum", String.valueOf(gridLines.size())); + gridLines.add(data[i]); + } else { + Integer listIndex = amountsPerGroupingField.get(data[i].getField(groupingField)); + FieldProvider row = gridLines.get(listIndex); + FieldProviderFactory.setField( + row, + "finScheduledPaymentDetailId", + row.getField("finScheduledPaymentDetailId") + "," + + data[i].getField("finScheduledPaymentDetailId")); + FieldProviderFactory.setField( + row, + "finSelectedPaymentDetailId", + row.getField("finSelectedPaymentDetailId") + "," + + data[i].getField("finScheduledPaymentDetailId")); + FieldProviderFactory.setField( + row, + "outstandingAmount", + new BigDecimal(row.getField("outstandingAmount")).add( + new BigDecimal(data[i].getField("outstandingAmount"))).toString()); + BigDecimal payAmount = BigDecimal.ZERO; + if (!"".equals(row.getField("paymentAmount"))) { + payAmount = new BigDecimal(row.getField("paymentAmount")); + } + FieldProviderFactory.setField( + row, + "paymentAmount", + !"".equals(data[i].getField("paymentAmount")) ? payAmount.add( + new BigDecimal(data[i].getField("paymentAmount"))).toString() : (payAmount + .compareTo(BigDecimal.ZERO) == 0 ? "" : payAmount.toString())); + if ("O".equals(strDocumenType)) { + String strGroupedInvoicesNr = row.getField("invoiceNr"); + FieldProviderFactory.setField(row, "invoiceNr", (strGroupedInvoicesNr.isEmpty() ? "" + : strGroupedInvoicesNr + ", ") + data[i].getField("invoiceNr")); + String invoiceNumber = row.getField("invoiceNr"); + String invoiceNumberTrunc = (invoiceNumber.length() > 17) ? invoiceNumber + .substring(0, 14).concat("...").toString() : invoiceNumber; + FieldProviderFactory.setField(row, "invoiceNrTrunc", invoiceNumberTrunc); + } else if ("I".equals(strDocumenType)) { + String strGroupedOrdersNr = row.getField("orderNr"); + FieldProviderFactory.setField(row, "orderNr", (strGroupedOrdersNr.isEmpty() ? "" + : strGroupedOrdersNr + ", ") + data[i].getField("orderNr")); + String orderNumber = row.getField("orderNr"); + String orderNumberTrunc = (orderNumber.length() > 17) ? orderNumber.substring(0, 14) + .concat("...").toString() : orderNumber; + FieldProviderFactory.setField(row, "orderNrTrunc", orderNumberTrunc); + } + } + } + FieldProvider[] result = new FieldProvider[gridLines.size()]; + gridLines.toArray(result); + return result; + } + + /** + * Creates a HashMap with the FIN_PaymentScheduleDetail id's and the amount gotten from the + * Session. + * + * The amounts are stored in Session like "inpPaymentAmount"+paymentScheduleDetail.Id + * + * @param vars + * VariablseSecureApp with the session data. + * @param selectedPaymentScheduleDetails + * List of FIN_PaymentScheduleDetails that need to be included in the HashMap. + * @return A HashMap mapping the FIN_PaymentScheduleDetail's Id with the corresponding amount. + */ + private HashMap<String, BigDecimal> getSelectedPaymentDetailsAndAmount(VariablesSecureApp vars, + String _strSelectedScheduledPaymentDetailIds) throws ServletException { + String strSelectedScheduledPaymentDetailIds = _strSelectedScheduledPaymentDetailIds; + // Remove "(" ")" + strSelectedScheduledPaymentDetailIds = strSelectedScheduledPaymentDetailIds.replace("(", ""); + strSelectedScheduledPaymentDetailIds = strSelectedScheduledPaymentDetailIds.replace(")", ""); + HashMap<String, BigDecimal> selectedPaymentScheduleDetailsAmounts = new HashMap<String, BigDecimal>(); + // As selected items may contain records with multiple IDs we as well need the records list as + // amounts are related to records + StringTokenizer records = new StringTokenizer(strSelectedScheduledPaymentDetailIds, "'"); + Set<String> recordSet = new LinkedHashSet<String>(); + while (records.hasMoreTokens()) { + recordSet.add(records.nextToken()); + } + for (String record : recordSet) { + if (", ".equals(record)) { + continue; + } + Set<String> psdSet = new LinkedHashSet<String>(); + StringTokenizer psds = new StringTokenizer(record, ","); + while (psds.hasMoreTokens()) { + psdSet.add(psds.nextToken()); + } + BigDecimal recordAmount = new BigDecimal(vars.getNumericParameter( + "inpPaymentAmount" + record, "")); + HashMap<String, BigDecimal> recordsAmounts = calculateAmounts(recordAmount, psdSet); + selectedPaymentScheduleDetailsAmounts.putAll(recordsAmounts); + } + return selectedPaymentScheduleDetailsAmounts; + } + + /** + * This method returns a HashMap with pairs of UUID of payment schedule details and amounts + * related to those ones. + * + * @param recordAmount + * : amount to split among the set + * @param psdSet + * : set of payment schedule details where to allocate the amount + * @return + */ + private HashMap<String, BigDecimal> calculateAmounts(BigDecimal recordAmount, Set<String> psdSet) { + BigDecimal remainingAmount = recordAmount; + HashMap<String, BigDecimal> recordsAmounts = new HashMap<String, BigDecimal>(); + for (String psdId : psdSet) { + FIN_PaymentScheduleDetail paymentScheduleDetail = OBDal.getInstance().get( + FIN_PaymentScheduleDetail.class, psdId); + BigDecimal outstandingAmount = paymentScheduleDetail.getAmount(); + // Manage negative amounts + if ((remainingAmount.compareTo(BigDecimal.ZERO) > 0 && remainingAmount + .compareTo(outstandingAmount) >= 0) + || ((remainingAmount.compareTo(BigDecimal.ZERO) == -1 && outstandingAmount + .compareTo(BigDecimal.ZERO) == -1) && (remainingAmount.compareTo(outstandingAmount) <= 0))) { + recordsAmounts.put(psdId, outstandingAmount); + remainingAmount = remainingAmount.subtract(outstandingAmount); + } else { + recordsAmounts.put(psdId, remainingAmount); + remainingAmount = BigDecimal.ZERO; + } + + } + return recordsAmounts; + } + public String getServletInfo() { return "Servlet that presents the payment proposal"; // end of getServletInfo() method diff -r 578ff14a16ee -r 933a9b7b9d89 modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentGrid.srpt --- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentGrid.srpt Mon Jan 30 07:43:43 2012 +0000 +++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentGrid.srpt Wed Feb 01 08:45:07 2012 +0100 @@ -22,8 +22,8 @@ <input type="hidden" name="inpRecordAmtxx" value="" id="fieldRecordAmt"/> <tr id="funcEvenOddRow" class="DataGrid_Body_Row DataGrid_Body_Row_xx" bgcolor="#E1E1E1"> <td class="DataGrid_Body_LineNoCell"> <input type="checkbox" name="inpScheduledPaymentDetailId" value="" id="fieldScheduledPaymentDetailId" onclick="updateData(this.value, this.checked, true);return true;"/></td> - <td class="DataGrid_Body_Cell" id="fieldOrderNr">xx</td> - <td class="DataGrid_Body_Cell" id="fieldInvoiceNr">xxINV30004 (2/3)</td> + <td class="DataGrid_Body_Cell" title="zz" id="fieldOrderNr">xx</td> + <td class="DataGrid_Body_Cell" title="zz" id="fieldInvoiceNr">xxINV30004 (2/3)</td> <td class="DataGrid_Body_Cell" id="businessPartnerName" title="">xxBPartner</td> <td class="DataGrid_Body_Cell" title="zz" id="fieldPaymentMethod">xxCash</td> <td class="DataGrid_Body_Cell" id="fieldDueDate">xx12/12/2009</td> diff -r 578ff14a16ee -r 933a9b7b9d89 modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentGrid.xml --- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentGrid.xml Mon Jan 30 07:43:43 2012 +0000 +++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentGrid.xml Wed Feb 01 08:45:07 2012 +0100 @@ -28,8 +28,10 @@ <FIELD id="fieldRecordId" attribute="name" replace="xx">rownum</FIELD> <FIELD id="fieldRecordAmt" attribute="value" format="euroEdition">outstandingAmount</FIELD> <FIELD id="fieldRecordAmt" attribute="name" replace="xx">finScheduledPaymentDetailId</FIELD> - <FIELD id="fieldOrderNr">orderNr</FIELD> - <FIELD id="fieldInvoiceNr">invoiceNr</FIELD> + <FIELD id="fieldOrderNr">orderNrTrunc</FIELD> + <FIELD id="fieldOrderNr" attribute="title" replace="zz">orderNr</FIELD> + <FIELD id="fieldInvoiceNr">invoiceNrTrunc</FIELD> + <FIELD id="fieldInvoiceNr" attribute="title" replace="zz">invoiceNr</FIELD> <FIELD id="businessPartnerName" attribute="title">businessPartnerName</FIELD> <FIELD id="businessPartnerName">businessPartnerNameTrunc</FIELD> <FIELD id="fieldPaymentMethod">paymentMethodNameTrunc</FIELD> diff -r 578ff14a16ee -r 933a9b7b9d89 modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_AddPayment.java --- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_AddPayment.java Mon Jan 30 07:43:43 2012 +0000 +++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_AddPayment.java Wed Feb 01 08:45:07 2012 +0100 @@ -533,9 +533,7 @@ shownScheduledPaymentDetails.addAll(filteredScheduledPaymentDetails); FIN_PaymentScheduleDetail[] FIN_PaymentScheduleDetails = new FIN_PaymentScheduleDetail[0]; FIN_PaymentScheduleDetails = shownScheduledPaymentDetails.toArray(FIN_PaymentScheduleDetails); - // FieldProvider[] data = FieldProviderFactory.getFieldProviderArray(FIN_PaymentSchedules); - // FieldProvider[] data = new FieldProviderFactory[selectedScheduledPayments.size()]; FieldProvider[] data = FieldProviderFactory.getFieldProviderArray(shownScheduledPaymentDetails); String dateFormat = OBPropertiesProvider.getInstance().getOpenbravoProperties() .getProperty("dateFormat.java"); @@ -552,16 +550,30 @@ : ""); FieldProviderFactory.setField(data[i], "finScheduledPaymentDetailId", FIN_PaymentScheduleDetails[i].getId()); - if (FIN_PaymentScheduleDetails[i].getOrderPaymentSchedule() != null) + if (FIN_PaymentScheduleDetails[i].getOrderPaymentSchedule() != null) { FieldProviderFactory.setField(data[i], "orderNr", FIN_PaymentScheduleDetails[i] .getOrderPaymentSchedule().getOrder().getDocumentNo()); - else + FieldProviderFactory.setField(data[i], "orderNrTrunc", FIN_PaymentScheduleDetails[i] + .getOrderPaymentSchedule().getOrder().getDocumentNo()); + FieldProviderFactory.setField(data[i], "orderPaymentScheduleId", + FIN_PaymentScheduleDetails[i].getOrderPaymentSchedule().getId()); + } else { FieldProviderFactory.setField(data[i], "orderNr", ""); - if (FIN_PaymentScheduleDetails[i].getInvoicePaymentSchedule() != null) + FieldProviderFactory.setField(data[i], "orderNrTrunc", ""); ------------------------------------------------------------------------------ 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
