Hi

TaxAuthorityServices.getTaxAdjustments(....) takes *BigDecimal itemAmount *as one of its parameters and sets it as a condition for delegator.findList("TaxAuthorityRateProduct", ......, however minPurchase is defined as a currency-amount (java Double) and as such fails with the error below.

Any idea's ?


Cheers

Grant Edwards

=-=-=-=-=-=-=-=-= DATABASE TYPE ERROR in EntityExpr =-=-=-=-=-=-=-=-= In entity field [*TaxAuthorityRateProduct.minPurchase*] set the value *passed in [java.math.BigDecimal]* is not compatible with the Java type of the field* [Double]*
Exception: java.lang.Exception
Message: Location of database type error
---- stack trace ---------------------------------------------------------------
java.lang.Exception: Location of database type error
org.ofbiz.entity.condition.EntityExpr.checkRhsType(EntityExpr.java:267)
org.ofbiz.entity.condition.EntityExpr.makeWhereString(EntityExpr.java:167)
org.ofbiz.entity.condition.EntityJoinOperator.addSqlValue(EntityJoinOperator.java:54)
org.ofbiz.entity.condition.EntityExpr.makeWhereString(EntityExpr.java:170)
org.ofbiz.entity.condition.EntityJoinOperator.addSqlValue(EntityJoinOperator.java:67)
org.ofbiz.entity.condition.EntityConditionListBase.makeWhereString(EntityConditionListBase.java:89)
org.ofbiz.entity.datasource.GenericDAO.selectListIteratorByCondition(GenericDAO.java:676)
org.ofbiz.entity.datasource.GenericHelperDAO.findListIteratorByCondition(GenericHelperDAO.java:140)
org.ofbiz.entity.GenericDelegator.find(GenericDelegator.java:2273)
org.ofbiz.entity.GenericDelegator.findList(GenericDelegator.java:2314)
org.ofbiz.accounting.tax.TaxAuthorityServices.getTaxAdjustments(TaxAuthorityServices.java:312)
org.ofbiz.accounting.tax.TaxAuthorityServices.rateProductTaxCalc(TaxAuthorityServices.java:185)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

<entity entity-name="TaxAuthorityRateProduct" package-name="org.ofbiz.accounting.tax" title="Tax Authority Rate Entity">
       <field name="taxAuthorityRateSeqId" type="id-ne"></field>
       <field name="taxAuthGeoId" type="id-ne"></field>
       <field name="taxAuthPartyId" type="id-ne"></field>
       <field name="taxAuthorityRateTypeId" type="id-ne"></field>
       <field name="productStoreId" type="id-ne"></field>
       <field name="productCategoryId" type="id-ne"></field>
       <field name="titleTransferEnumId" type="id-ne"></field>
       <field name="minItemPrice" type="currency-amount"></field>
       <field name="*minPurchase*" type="*currency-amount*"></field>

fieldtypepostgres.xml maps ofbiz to java types as follows:

<field-type-def type="*currency-amount*" sql-type="NUMERIC(18,2)" java-type="*Double*"><validate method="isSignedDouble" /></field-type-def>


private static List getTaxAdjustments(GenericDelegator delegator, GenericValue product, GenericValue productStore, String payToPartyId, String billToPartyId, Set taxAuthoritySet, BigDecimal itemPrice, *BigDecimal itemAmount*, BigDecimal shippingAmount, BigDecimal orderPromotionsAmount) { List mainExprs = UtilMisc.toList(storeCond, taxAuthoritiesCond, productCategoryCond); mainExprs.add(EntityCondition.makeCondition(EntityCondition.makeCondition("minItemPrice", EntityOperator.EQUALS, null), EntityOperator.OR, EntityCondition.makeCondition("minItemPrice", EntityOperator.LESS_THAN_EQUAL_TO, itemPrice))); mainExprs.add(EntityCondition.makeCondition(EntityCondition.makeCondition("minPurchase", EntityOperator.EQUALS, null), EntityOperator.OR, EntityCondition.makeCondition("*minPurchase*", EntityOperator.LESS_THAN_EQUAL_TO, *itemAmount*))); EntityCondition mainCondition = EntityCondition.makeCondition(mainExprs, EntityOperator.AND);

           // create the orderby clause
List orderList = UtilMisc.toList("minItemPrice", "minPurchase", "fromDate");

           // finally ready... do the rate query
List lookupList = delegator.findList("TaxAuthorityRateProduct", mainCondition, null, orderList, null, false);

Reply via email to