[ 
https://issues.apache.org/jira/browse/OFBIZ-7147?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16208750#comment-16208750
 ] 

Vikas Mayur commented on OFBIZ-7147:
------------------------------------

Hi Jacques,

I found this issue with the migration of OFBiz 12 to OFBiz 16. Here is the part 
of the error stack trace.

{code}
017-10-17 21:49:00,959 |http-nio-8443-exec-3 |ServiceEcaRule                |I| 
Running Service ECA Service: createAcctgTransForPurchaseInvoice, triggered by 
rule on Service: setInvoiceStatus
2017-10-17 21:49:00,960 |http-nio-8443-exec-3 |Log                           
|I| [GeneralLedgerServices.xml#getGlArithmeticSettingsInline line 2823] Got 
settings from arithmetic.properties: ledgerDecimals=4, roundingMode=HalfUp
2017-10-17 21:49:01,068 |http-nio-8443-exec-3 |UtilProperties                
|I| ResourceBundle MiniLangErrorUiLabels (en) created in 0.042s with 4 
properties
2017-10-17 21:49:01,069 |http-nio-8443-exec-3 |TransactionUtil               
|W| Calling transaction setRollbackOnly; this stack trace shows where this is 
happening:
java.lang.Exception: Error in simple-method [Create an accounting transaction 
for a purchase invoice 
[file:/Users/vikas/work/projects/rel16/applications/accounting/minilang/ledger/GeneralLedgerServices.xml#createAcctgTransForPurchaseInvoice]]:
 Error running the simple-method: nullnull
        at 
org.apache.ofbiz.entity.transaction.TransactionUtil.setRollbackOnly(TransactionUtil.java:361)
 [ofbiz.jar:?]
        at 
org.apache.ofbiz.entity.transaction.TransactionUtil.rollback(TransactionUtil.java:302)
 [ofbiz.jar:?]
        at org.apache.ofbiz.minilang.SimpleMethod.exec(SimpleMethod.java:581) 
[ofbiz.jar:?]
        at 
org.apache.ofbiz.minilang.SimpleMethod.runSimpleMethod(SimpleMethod.java:274) 
[ofbiz.jar:?]
        at 
org.apache.ofbiz.minilang.SimpleMethod.runSimpleService(SimpleMethod.java:293) 
[ofbiz.jar:?]
        at 
org.apache.ofbiz.minilang.SimpleServiceEngine.serviceInvoker(SimpleServiceEngine.java:79)
 [ofbiz.jar:?]
        at 
org.apache.ofbiz.minilang.SimpleServiceEngine.runSync(SimpleServiceEngine.java:48)
 [ofbiz.jar:?]
        at 
org.apache.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java:395) 
[ofbiz.jar:?]
        at 
org.apache.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java:227) 
[ofbiz.jar:?]
        at 
org.apache.ofbiz.service.GenericDispatcherFactory$GenericDispatcher.runSync(GenericDispatcherFactory.java:88)
 [ofbiz.jar:?]
        at 
org.apache.ofbiz.service.eca.ServiceEcaAction.runAction(ServiceEcaAction.java:128)
 [ofbiz.jar:?]
        at 
org.apache.ofbiz.service.eca.ServiceEcaRule.eval(ServiceEcaRule.java:159) 
[ofbiz.jar:?]
        at 
org.apache.ofbiz.service.eca.ServiceEcaUtil.evalRules(ServiceEcaUtil.java:190) 
[ofbiz.jar:?]
        at 
org.apache.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java:492) 
[ofbiz.jar:?]
        at 
org.apache.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java:227) 
[ofbiz.jar:?]
        at 
org.apache.ofbiz.service.GenericDispatcherFactory$GenericDispatcher.runSync(GenericDispatcherFactory.java:88)
 [ofbiz.jar:?]
        at 
org.apache.ofbiz.accounting.invoice.InvoiceServices.createInvoiceForOrder(InvoiceServices.java:874)
 [ofbiz.jar:?]
{code}
The chain of events that lead to this error occurs when you pack and ship a 
sales order.  The error come from the following code of the service 
'createAcctgTransForPurchaseInvoice' (triggered on the service eca 
'setInvoiceStatus')
{code}
        <set field="isPurchaseInvoice" value="${groovy: 
org.apache.ofbiz.entity.util.EntityTypeUtil.hasParentType(delegator, 
'InvoiceType', 'invoiceTypeId', invoice.getString('invoiceTypeId'), 
'parentTypeId', 'PURCHASE_INVOICE')}" type="Boolean"/>
{code}

It looks like the method hasParentType() does not return gracefully. I did not 
look further but running the following update statement fix the issue.

{code}
update invoice_type set parent_type_id = 'INVOICE' where invoice_type_id = 
'SALES_INVOICE';
update invoice_type set parent_type_id = 'INVOICE' where invoice_type_id = 
'PURCHASE_INVOICE';
update invoice_type set parent_type_id = 'INVOICE' where invoice_type_id = 
'TEMPLATE';
{code}

I hope that helps!

Regards
Vikas




> Remove parentTypeId from InvoiceType data where InvoiceTypeId and 
> parentTypeId are equal
> ----------------------------------------------------------------------------------------
>
>                 Key: OFBIZ-7147
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-7147
>             Project: OFBiz
>          Issue Type: Bug
>          Components: accounting
>    Affects Versions: Release Branch 14.12, Trunk, Release Branch 15.12
>            Reporter: Arun Patidar
>            Assignee: Jacques Le Roux
>             Fix For: 14.12.01, 15.12.01, 13.07.04
>
>         Attachments: OFBIZ-7147.patch
>
>
> In InvoiceType data, we have invoiceTypeId value with same parentTypeId. 
> Please refer AccountingTypeData.xml.
> <InvoiceType description="Purchase Invoice" hasTable="N" 
> invoiceTypeId="PURCHASE_INVOICE"  parentTypeId="PURCHASE_INVOICE"/>
> <InvoiceType description="Sales Invoice" hasTable="N" 
> invoiceTypeId="SALES_INVOICE" parentTypeId="SALES_INVOICE"/>
> Here, invoiceTypeId="PURCHASE_INVOICE"  has "PURCHASE_INVOICE" as its 
> parentTypeId. Same applies for invoiceTypeId="SALES_INVOICE" 
> This also causes issue of infinite loop with EntityTypeUtil.hasParentType() 
> method.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to