[email protected] wrote: > Author: lektran > Date: Sun Apr 18 20:20:41 2010 > New Revision: 935402 > > URL: http://svn.apache.org/viewvc?rev=935402&view=rev > Log: > As it turns out, Groovy's List.first() method doesn't quite behave as I'd > assumed. Fixes bug report by Blas Rodriguez Somoza in OFBIZ-3711.
What is wrong about it? In the use cases below, the list can't be null, so it can't be that. Is it maybe the handling of a 0-sized list? > > Modified: > > ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/invoice/EditInvoice.groovy > > ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/invoice/OrderListInvoiceItem.groovy > > ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/order/BillingAccountOrders.groovy > > ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/reports/TransactionTotals.groovy > > Modified: > ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/invoice/EditInvoice.groovy > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/invoice/EditInvoice.groovy?rev=935402&r1=935401&r2=935402&view=diff > ============================================================================== > --- > ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/invoice/EditInvoice.groovy > (original) > +++ > ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/invoice/EditInvoice.groovy > Sun Apr 18 20:20:41 2010 > @@ -78,7 +78,7 @@ if (invoice) { > taxRate = invoiceItem.getRelatedOne("TaxAuthorityRateProduct"); > if (taxRate && "VAT_TAX".equals(taxRate.taxAuthorityRateTypeId)) { > taxInfos = > EntityUtil.filterByDate(delegator.findByAnd("PartyTaxAuthInfo", [partyId : > billingParty.partyId, taxAuthGeoId : taxRate.taxAuthGeoId, taxAuthPartyId : > taxRate.taxAuthPartyId]), invoice.invoiceDate); > - taxInfo = taxInfos.first(); > + taxInfo = EntityUtil.getFirst(taxInfos); > if (taxInfo) { > context.billingPartyTaxId = taxInfo.partyTaxId; > } > > Modified: > ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/invoice/OrderListInvoiceItem.groovy > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/invoice/OrderListInvoiceItem.groovy?rev=935402&r1=935401&r2=935402&view=diff > ============================================================================== > --- > ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/invoice/OrderListInvoiceItem.groovy > (original) > +++ > ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/invoice/OrderListInvoiceItem.groovy > Sun Apr 18 20:20:41 2010 > @@ -32,7 +32,7 @@ if (invoiceItemList) { > invoiceItemList.each { invoiceItem -> > invoiceItemSeqId = invoiceItem.invoiceItemSeqId; > invoiceId = invoiceItem.invoiceId; > - orderItemBilling = delegator.findByAnd("OrderItemBilling", > [invoiceId : invoiceId, invoiceItemSeqId : invoiceItemSeqId]).first(); > + orderItemBilling = > EntityUtil.getFirst(delegator.findByAnd("OrderItemBilling", [invoiceId : > invoiceId, invoiceItemSeqId : invoiceItemSeqId])); > Map invoiceItemMap = FastMap.newInstance(); > invoiceItemMap.putAll((Map) invoiceItem); > if (orderItemBilling) { > > Modified: > ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/order/BillingAccountOrders.groovy > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/order/BillingAccountOrders.groovy?rev=935402&r1=935401&r2=935402&view=diff > ============================================================================== > --- > ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/order/BillingAccountOrders.groovy > (original) > +++ > ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/order/BillingAccountOrders.groovy > Sun Apr 18 20:20:41 2010 > @@ -27,7 +27,7 @@ if (billingAccountId) { > if (orderList) { > orderList.each { orderHeader -> > orderId = orderHeader.orderId; > - orderBillingAcc = > delegator.findByAnd("OrderHeaderAndPaymentPref", [orderId : orderId]).first(); > + orderBillingAcc = > EntityUtil.getFirst(delegator.findByAnd("OrderHeaderAndPaymentPref", [orderId > : orderId])); > orderBillingAccMap = FastMap.newInstance(); > if (orderBillingAcc.paymentMethodTypeId.equals("EXT_BILLACT") && > orderBillingAcc.paymentStatusId.equals("PAYMENT_NOT_RECEIVED")) { > orderBillingAccMap.putAll(orderBillingAcc); > > Modified: > ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/reports/TransactionTotals.groovy > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/reports/TransactionTotals.groovy?rev=935402&r1=935401&r2=935402&view=diff > ============================================================================== > --- > ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/reports/TransactionTotals.groovy > (original) > +++ > ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/reports/TransactionTotals.groovy > Sun Apr 18 20:20:41 2010 > @@ -76,7 +76,7 @@ if (postedTransactionTotals) { > > timePeriodAndExprs.add(EntityCondition.makeCondition("organizationPartyId", > EntityOperator.EQUALS, organizationPartyId)); > > timePeriodAndExprs.add(EntityCondition.makeCondition("glAccountId", > EntityOperator.EQUALS, postedTransactionTotal.glAccountId)); > > timePeriodAndExprs.add(EntityCondition.makeCondition("customTimePeriodId", > EntityOperator.EQUALS, lastClosedTimePeriod.customTimePeriodId)); > - lastTimePeriodHistory = > delegator.findList("GlAccountAndHistory", > EntityCondition.makeCondition(timePeriodAndExprs, EntityOperator.AND), null, > null, null, false).first(); > + lastTimePeriodHistory = > EntityUtil.getFirst(delegator.findList("GlAccountAndHistory", > EntityCondition.makeCondition(timePeriodAndExprs, EntityOperator.AND), null, > null, null, false)); > if (lastTimePeriodHistory) { > accountMap = UtilMisc.toMap("glAccountId", > lastTimePeriodHistory.glAccountId, "accountCode", > lastTimePeriodHistory.accountCode, "accountName", > lastTimePeriodHistory.accountName, "balance", > lastTimePeriodHistory.getBigDecimal("endingBalance"), "openingD", > lastTimePeriodHistory.getBigDecimal("postedDebits"), "openingC", > lastTimePeriodHistory.getBigDecimal("postedCredits"), "D", BigDecimal.ZERO, > "C", BigDecimal.ZERO); > } > @@ -173,7 +173,7 @@ if (unpostedTransactionTotals) { > > timePeriodAndExprs.add(EntityCondition.makeCondition("organizationPartyId", > EntityOperator.EQUALS, organizationPartyId)); > > timePeriodAndExprs.add(EntityCondition.makeCondition("glAccountId", > EntityOperator.EQUALS, unpostedTransactionTotal.glAccountId)); > > timePeriodAndExprs.add(EntityCondition.makeCondition("customTimePeriodId", > EntityOperator.EQUALS, lastClosedTimePeriod.customTimePeriodId)); > - lastTimePeriodHistory = > delegator.findList("GlAccountAndHistory", > EntityCondition.makeCondition(timePeriodAndExprs, EntityOperator.AND), null, > null, null, false).first(); > + lastTimePeriodHistory = > EntityUtil.getFirst(delegator.findList("GlAccountAndHistory", > EntityCondition.makeCondition(timePeriodAndExprs, EntityOperator.AND), null, > null, null, false)); > if (lastTimePeriodHistory) { > accountMap = UtilMisc.toMap("glAccountId", > lastTimePeriodHistory.glAccountId, "accountCode", > lastTimePeriodHistory.accountCode, "accountName", > lastTimePeriodHistory.accountName, "balance", > lastTimePeriodHistory.getBigDecimal("endingBalance"), "openingD", > lastTimePeriodHistory.getBigDecimal("postedDebits"), "openingC", > lastTimePeriodHistory.getBigDecimal("postedCredits"), "D", BigDecimal.ZERO, > "C", BigDecimal.ZERO); > } > @@ -269,7 +269,7 @@ if (allTransactionTotals) { > > timePeriodAndExprs.add(EntityCondition.makeCondition("organizationPartyId", > EntityOperator.EQUALS, organizationPartyId)); > > timePeriodAndExprs.add(EntityCondition.makeCondition("glAccountId", > EntityOperator.EQUALS, allTransactionTotal.glAccountId)); > > timePeriodAndExprs.add(EntityCondition.makeCondition("customTimePeriodId", > EntityOperator.EQUALS, lastClosedTimePeriod.customTimePeriodId)); > - lastTimePeriodHistory = > delegator.findList("GlAccountAndHistory", > EntityCondition.makeCondition(timePeriodAndExprs, EntityOperator.AND), null, > null, null, false).first(); > + lastTimePeriodHistory = > EntityUtil.getFirst(delegator.findList("GlAccountAndHistory", > EntityCondition.makeCondition(timePeriodAndExprs, EntityOperator.AND), null, > null, null, false)); > if (lastTimePeriodHistory) { > accountMap = UtilMisc.toMap("glAccountId", > lastTimePeriodHistory.glAccountId, "accountCode", > lastTimePeriodHistory.accountCode, "accountName", > lastTimePeriodHistory.accountName, "balance", > lastTimePeriodHistory.getBigDecimal("endingBalance"), "openingD", > lastTimePeriodHistory.getBigDecimal("postedDebits"), "openingC", > lastTimePeriodHistory.getBigDecimal("postedCredits"), "D", BigDecimal.ZERO, > "C", BigDecimal.ZERO); > } > >
