have you looked at the makecondition method? Jonatan Soto sent the following on 9/24/2010 2:00 AM:
Given the following queries and code:mysql> select INVOICE_ITEM_TYPE_ID, PARENT_TYPE_ID from INVOICE_ITEM_TYPE where INVOICE_ITEM_TYPE_ID = 'INVOICE_HEAD_ADJ' OR PARENT_TYPE_ID = 'INVOICE_HEAD_ADJ'; +----------------------+------------------+ | INVOICE_ITEM_TYPE_ID | PARENT_TYPE_ID | +----------------------+------------------+ | INVOICE_HEAD_ADJ | INVOICE_ADJ | | PINVOICE_ADJ | INVOICE_HEAD_ADJ | | SINVOICE_HEAD_ADJ | INVOICE_HEAD_ADJ | +----------------------+------------------+ 3 rows in set (0.00 sec) mysql> select INVOICE_ITEM_TYPE_ID, PARENT_TYPE_ID from INVOICE_ITEM_TYPE where INVOICE_ITEM_TYPE_ID = 'PINVOICE_ADJ' OR PARENT_TYPE_ID = 'PINVOICE_ADJ'; +----------------------+------------------+ | INVOICE_ITEM_TYPE_ID | PARENT_TYPE_ID | +----------------------+------------------+ | PINVOICE_ADJ | INVOICE_HEAD_ADJ | | PINV_ADD_FEATURE | PINVOICE_ADJ | | PINV_DISCOUNT_ADJ | PINVOICE_ADJ | | PINV_MISC_CHARGE | PINVOICE_ADJ | | PINV_PROMOTION_ADJ | PINVOICE_ADJ | | PINV_SALES_TAX | PINVOICE_ADJ | | PINV_SHIP_CHARGES | PINVOICE_ADJ | | PINV_SURCHARGE_ADJ | PINVOICE_ADJ | | PINV_WARRANTY_ADJ | PINVOICE_ADJ | | P_FEE | PINVOICE_ADJ | +----------------------+------------------+ 10 rows in set (0.00 sec) mysql> select INVOICE_ITEM_TYPE_ID, PARENT_TYPE_ID from INVOICE_ITEM_TYPE where INVOICE_ITEM_TYPE_ID = 'SINVOICE_HEAD_ADJ' OR PARENT_TYPE_ID = 'SINVOICE_HEAD_ADJ'; +----------------------+-------------------+ | INVOICE_ITEM_TYPE_ID | PARENT_TYPE_ID | +----------------------+-------------------+ | FEE | SINVOICE_HEAD_ADJ | | INV_ADD_FEATURE | SINVOICE_HEAD_ADJ | | INV_DISCOUNT_ADJ | SINVOICE_HEAD_ADJ | | INV_INTRST_CHRG | SINVOICE_HEAD_ADJ | | INV_MISC_CHARGE | SINVOICE_HEAD_ADJ | | INV_PROMOTION_ADJ | SINVOICE_HEAD_ADJ | | INV_SALES_TAX | SINVOICE_HEAD_ADJ | | INV_SHIPPING_CHARGES | SINVOICE_HEAD_ADJ | | INV_SURCHARGE_ADJ | SINVOICE_HEAD_ADJ | | INV_WARRANTY_ADJ | SINVOICE_HEAD_ADJ | | SINVOICE_HEAD_ADJ | INVOICE_HEAD_ADJ | +----------------------+-------------------+ 11 rows in set (0.00 sec) GetInvoiceItemTypes.groovy: if ("SALES_INVOICE".equals(invoice.invoiceTypeId)) { itemTypesCond = exprBldr.OR() { EQUALS(invoiceItemTypeId: "INVOICE_ADJ") EQUALS(parentTypeId: "INVOICE_ADJ") EQUALS(invoiceItemTypeId: "INVOICE_ITM_ADJ") EQUALS(parentTypeId: "INVOICE_ITM_ADJ") EQUALS(invoiceItemTypeId: "INV_PROD_ITEM") EQUALS(parentTypeId: "INV_PROD_ITEM") } invoiceItemTypes = delegator.findList("InvoiceItemType", itemTypesCond, null, ["parentTypeId", "invoiceItemTypeId"], null, false); glAccountOrganizationAndClassList = delegator.findByAnd("GlAccountOrganizationAndClass", [organizationPartyId : invoice.partyIdFrom]); } else if ("PURCHASE_INVOICE".equals(invoice.invoiceTypeId)) { itemTypesCond = exprBldr.OR() { EQUALS(invoiceItemTypeId: "PINVOICE_ADJ") EQUALS(parentTypeId: "PINVOICE_ADJ") EQUALS(invoiceItemTypeId: "PINVOICE_ITM_ADJ") EQUALS(parentTypeId: "PINVOICE_ITM_ADJ") EQUALS(invoiceItemTypeId: "PINV_PROD_ITEM") EQUALS(parentTypeId: "PINV_PROD_ITEM") } invoiceItemTypes = delegator.findList("InvoiceItemType", itemTypesCond, null, ["parentTypeId", "invoiceItemTypeId"], null, false); glAccountOrganizationAndClassList = delegator.findByAnd("GlAccountOrganizationAndClass", [organizationPartyId : invoice.partyId]); } In the last query the PARENT_TYPE_ID shouldn't be INVOICE_ADJ instead of INVOICE_HEAD_ADJ and also in the first query the INVOICE_ITEM_TYPE_ID field shouldn't be SINVOICE_ADJ? ------ I want to create a sales item tax manually in a sales invoice for instance so for now I've replaced the OR conditional when invoiceTypeId = 'SALES_INVOICE' with this: if ("SALES_INVOICE".equals(invoice.invoiceTypeId)) { itemTypesCond = exprBldr.OR() { EQUALS(invoiceItemTypeId: "SINVOICE_ADJ") EQUALS(parentTypeId: "SINVOICE_ADJ") EQUALS(invoiceItemTypeId: "SINVOICE_ITM_ADJ") EQUALS(parentTypeId: "SINVOICE_ITM_ADJ") EQUALS(invoiceItemTypeId: "SINV_PROD_ITEM") EQUALS(parentTypeId: "SINV_PROD_ITEM") EQUALS(invoiceItemTypeId: "SINVOICE_HEAD_ADJ") --> to be removed if the relation parent -> child is not correct as I suspect EQUALS(parentTypeId: "SINVOICE_HEAD_ADJ") --> to be removed if the relation parent -> child is not correct as I suspect }
