details: https://code.openbravo.com/erp/devel/pi/rev/8e9266e71595 changeset: 25901:8e9266e71595 user: Unai Martirena <unai.martirena <at> openbravo.com> date: Wed Feb 11 18:25:54 2015 +0100 summary: Related to bug 28854: Fix on JoinClauserOrder and JoinClauseInvoice.
filter by business partner only if a business partner is selected in the parent window details: https://code.openbravo.com/erp/devel/pi/rev/f0e8afa3c9fa changeset: 25902:f0e8afa3c9fa user: Unai Martirena <unai.martirena <at> openbravo.com> date: Wed Feb 11 19:01:27 2015 +0100 summary: Fixes bug 28896: Purchase Invoices Supplier reference is shown in add payment. A case has been added in AddPaymentOrderInvoicesTransformer to display the Supplier Reference instead of Invoice Number when is configured like that in Organization Info tab, only for Purchase Invoices diffstat: modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/hqlinjections/AddPaymentOrderInvoicesTransformer.java | 47 ++++++++- 1 files changed, 38 insertions(+), 9 deletions(-) diffs (113 lines): diff -r 084bfe1a6854 -r f0e8afa3c9fa modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/hqlinjections/AddPaymentOrderInvoicesTransformer.java --- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/hqlinjections/AddPaymentOrderInvoicesTransformer.java Wed Feb 11 17:49:29 2015 +0100 +++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/hqlinjections/AddPaymentOrderInvoicesTransformer.java Wed Feb 11 19:01:27 2015 +0100 @@ -35,6 +35,8 @@ import org.openbravo.dal.service.OBDal; import org.openbravo.model.ad.datamodel.Column; import org.openbravo.model.ad.datamodel.Table; +import org.openbravo.model.common.enterprise.OrganizationInformation; +import org.openbravo.model.common.invoice.Invoice; import org.openbravo.service.datasource.HQLDataSourceService; import org.openbravo.service.datasource.hql.HqlQueryTransformer; import org.openbravo.service.db.DalConnectionProvider; @@ -68,8 +70,8 @@ boolean justCount = strJustCount.equalsIgnoreCase("true"); StringBuffer selectClause = getSelectClause(transactionType, hasSelectedIds); - StringBuffer joinClauseOrder = getJoinClauseOrder(); - StringBuffer joinClauseInvoice = getJoinClauseInvoice(); + StringBuffer joinClauseOrder = getJoinClauseOrder(requestParameters); + StringBuffer joinClauseInvoice = getJoinClauseInvoice(requestParameters); StringBuffer whereClause = getWhereClause(transactionType, requestParameters, selectedPSDs); StringBuffer groupByClause = getGroupByClause(transactionType); StringBuffer orderByClause = new StringBuffer(); @@ -119,7 +121,11 @@ selectClause.append(getAggregatorFunction("psd.id") + " as paymentScheduleDetail, "); if ("I".equals(transactionType)) { selectClause.append(getAggregatorFunction("ord.documentNo") + " as salesOrderNo, "); - selectClause.append(" inv.documentNo as invoiceNo, "); + selectClause.append(" case when (inv." + Invoice.PROPERTY_SALESTRANSACTION + + " = false and oinfo is not null and oinfo." + + OrganizationInformation.PROPERTY_APRMPAYMENTDESCRIPTION + + " like 'Supplier Reference') then inv." + Invoice.PROPERTY_ORDERREFERENCE + + " else inv." + Invoice.PROPERTY_DOCUMENTNO + " end as invoiceNo, "); selectClause .append(" COALESCE(ips.finPaymentmethod.id, ops.finPaymentmethod.id) as paymentMethod, "); selectClause.append(" COALESCE(ipsfp.name, opsfp.name) as paymentMethodName, "); @@ -130,7 +136,12 @@ selectClause.append(" max(COALESCE(inv.grandTotalAmount, 0)) as invoicedAmount, "); } else if ("O".equals(transactionType)) { selectClause.append(" ord.documentNo as salesOrderNo, "); - selectClause.append(getAggregatorFunction("inv.documentNo") + " as invoiceNo, "); + selectClause.append(getAggregatorFunction(" case when (inv." + + Invoice.PROPERTY_SALESTRANSACTION + " = false and oinfo is not null and oinfo." + + OrganizationInformation.PROPERTY_APRMPAYMENTDESCRIPTION + + " like 'Supplier Reference') then inv." + Invoice.PROPERTY_ORDERREFERENCE + + " else inv." + Invoice.PROPERTY_DOCUMENTNO + " end") + + " as invoiceNo, "); selectClause .append(" COALESCE(ops.finPaymentmethod.id, ips.finPaymentmethod.id) as paymentMethod, "); selectClause.append(" COALESCE(opsfp.name, ipsfp.name) as paymentMethodName, "); @@ -141,7 +152,11 @@ selectClause.append(" sum(COALESCE(inv.grandTotalAmount, 0)) as invoicedAmount, "); } else { selectClause.append(" ord.documentNo as salesOrderNo, "); - selectClause.append(" inv.documentNo as invoiceNo, "); + selectClause.append(" case when (inv." + Invoice.PROPERTY_SALESTRANSACTION + + " = false and oinfo is not null and oinfo." + + OrganizationInformation.PROPERTY_APRMPAYMENTDESCRIPTION + + " like 'Supplier Reference') then inv." + Invoice.PROPERTY_ORDERREFERENCE + + " else inv." + Invoice.PROPERTY_DOCUMENTNO + " end as invoiceNo, "); selectClause .append(" COALESCE(ips.finPaymentmethod.id, ops.finPaymentmethod.id) as paymentMethod, "); selectClause.append(" COALESCE(ipsfp.name, opsfp.name) as paymentMethodName, "); @@ -165,17 +180,25 @@ return selectClause; } - protected StringBuffer getJoinClauseOrder() { + protected StringBuffer getJoinClauseOrder(Map<String, String> requestParameters) { + String strBusinessPartnerId = requestParameters.get("received_from"); StringBuffer joinClauseOrder = new StringBuffer(); joinClauseOrder - .append(" with ord.businessPartner.id = :businessPartnerId and ord.salesTransaction = :isSalesTransaction and ord.currency.id = :currencyId"); + .append(" with ord.salesTransaction = :isSalesTransaction and ord.currency.id = :currencyId"); + if (strBusinessPartnerId != null && !"null".equals(strBusinessPartnerId)) { + joinClauseOrder.append(" and ord.businessPartner.id = :businessPartnerId"); + } return joinClauseOrder; } - protected StringBuffer getJoinClauseInvoice() { + protected StringBuffer getJoinClauseInvoice(Map<String, String> requestParameters) { + String strBusinessPartnerId = requestParameters.get("received_from"); StringBuffer joinClauseInvoice = new StringBuffer(); joinClauseInvoice - .append(" with inv.businessPartner.id = :businessPartnerId and inv.salesTransaction = :isSalesTransaction and inv.currency.id = :currencyId"); + .append(" with inv.salesTransaction = :isSalesTransaction and inv.currency.id = :currencyId"); + if (strBusinessPartnerId != null && !"null".equals(strBusinessPartnerId)) { + joinClauseInvoice.append(" and inv.businessPartner.id = :businessPartnerId"); + } return joinClauseInvoice; } @@ -269,6 +292,9 @@ groupByClause.append(" COALESCE(ipsfp.name, opsfp.name), "); groupByClause.append(" COALESCE(ips.expectedDate, ops.expectedDate), "); groupByClause.append(" COALESCE(ipriority.priority, opriority.priority), "); + groupByClause.append(" inv.salesTransaction, "); + groupByClause.append(" oinfo.organization, "); + groupByClause.append(" inv.orderReference, "); } else if ("O".equals(transactionType)) { groupByClause.append(" ord.documentNo, "); groupByClause.append(" COALESCE(ops.finPaymentmethod.id, ips.finPaymentmethod.id), "); @@ -282,6 +308,9 @@ groupByClause.append(" COALESCE(ipsfp.name, opsfp.name), "); groupByClause.append(" COALESCE(ips.expectedDate, ops.expectedDate), "); groupByClause.append(" COALESCE(ipriority.priority, opriority.priority), "); + groupByClause.append(" inv.salesTransaction, "); + groupByClause.append(" oinfo.organization, "); + groupByClause.append(" inv.orderReference, "); } groupByClause.append(" COALESCE(invbp.id, ordbp.id), "); groupByClause.append(" COALESCE(invbp.name, ordbp.name) "); ------------------------------------------------------------------------------ Dive into the World of Parallel Programming. The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ _______________________________________________ Openbravo-commits mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openbravo-commits
