You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ofbiz.apache.org by Vikas Mayur <vi...@gmail.com> on 2014/06/02 17:14:48 UTC

Order Fulfillment Issues

Hi Devs,

I’m testing the order fulfillment on ofbiz release branch 12.04 for a scenario when payment gateway decline the payments. I’m using OOTB service 'alwaysDeclineCCProcessor’ to decline the payments which are earlier authorized by the service ‘alwaysApproveCCProcessor’. Once I create a sales order I click on the link ‘Pack Shipment For Ship Group’ to pack the order, the link is under the shipping information block on the order detail page. After packing the items, I click on ‘Complete’ button to complete the packing.

The order packing is initiated and completed by a main service completePack which do a lot of things. It creates shipment, packages, issue items to shipment (which in turns also change the item status to complete), apply items to packages etc. and update the shipment status to PACKED. We have a following eca, which triggers services that creates invoice and capture the payments.

    <eca service="updateShipment" event="commit">
        <condition-field field-name="statusId" operator="not-equals" to-field-name="oldStatusId"/>
        <condition field-name="statusId" operator="equals" value="SHIPMENT_PACKED"/>
        <condition field-name="shipmentTypeId" operator="equals" value="SALES_SHIPMENT"/>
        <action service="createInvoicesFromShipment" mode=“sync" run-as-user="system"/>
        <action service="setInvoicesToReadyFromShipment" mode="sync" run-as-user="system"/>
    </eca>

I see few issues noted below while processing the order fulfillment. I believe the same issue exists on ofbiz trunk since that code around the packing & payment gateway service remains unchanged.

1. The service processCaptureResult (PaymentGatewayServices) contains a piece of code that creates payment and apply the payment to invoice but it does not check the status of the capture result. This leads to a invoice to PAID status even though the payments are declined.

2. The order status remains complete even though the payments are declined and is not rolled back to approved (preferably hold).

3. The order status ‘complete’ triggers an email to the customer through an eca defined on the service ‘changeOrderStatus’ in the order component.

I think If we add an attribute ignore-error="false" to the <action service ...> element it will roll-back the global transaction started by the service completePack() and hence will revert the oder back to its initial state (status) where we started packing the order but it will also rollback every changes done by the service completePack.

Should we fix all three issues above or just do a global rollback (which takes you back where you started)?

Regards
Vikas 



Re: Order Fulfillment Issues

Posted by Vikas Mayur <vi...@gmail.com>.
Thanks Jacques, I think one ticket for all should be fine. I’ll open one soon.

Regards
Vikas

On Jun 23, 2014, at 1:51 AM, Jacques Le Roux <ja...@les7arts.com> wrote:

> Hi Vikas,
> 
> I'd prefer to fix the 3 issues and open 1 or 3(?) Jira for them...
> 
> Jacques
> 
> Le 02/06/2014 17:14, Vikas Mayur a écrit :
>> Hi Devs,
>> 
>> I’m testing the order fulfillment on ofbiz release branch 12.04 for a scenario when payment gateway decline the payments. I’m using OOTB service 'alwaysDeclineCCProcessor’ to decline the payments which are earlier authorized by the service ‘alwaysApproveCCProcessor’. Once I create a sales order I click on the link ‘Pack Shipment For Ship Group’ to pack the order, the link is under the shipping information block on the order detail page. After packing the items, I click on ‘Complete’ button to complete the packing.
>> 
>> The order packing is initiated and completed by a main service completePack which do a lot of things. It creates shipment, packages, issue items to shipment (which in turns also change the item status to complete), apply items to packages etc. and update the shipment status to PACKED. We have a following eca, which triggers services that creates invoice and capture the payments.
>> 
>>     <eca service="updateShipment" event="commit">
>>         <condition-field field-name="statusId" operator="not-equals" to-field-name="oldStatusId"/>
>>         <condition field-name="statusId" operator="equals" value="SHIPMENT_PACKED"/>
>>         <condition field-name="shipmentTypeId" operator="equals" value="SALES_SHIPMENT"/>
>>         <action service="createInvoicesFromShipment" mode=“sync" run-as-user="system"/>
>>         <action service="setInvoicesToReadyFromShipment" mode="sync" run-as-user="system"/>
>>     </eca>
>> 
>> I see few issues noted below while processing the order fulfillment. I believe the same issue exists on ofbiz trunk since that code around the packing & payment gateway service remains unchanged.
>> 
>> 1. The service processCaptureResult (PaymentGatewayServices) contains a piece of code that creates payment and apply the payment to invoice but it does not check the status of the capture result. This leads to a invoice to PAID status even though the payments are declined.
>> 
>> 2. The order status remains complete even though the payments are declined and is not rolled back to approved (preferably hold).
>> 
>> 3. The order status ‘complete’ triggers an email to the customer through an eca defined on the service ‘changeOrderStatus’ in the order component.
>> 
>> I think If we add an attribute ignore-error="false" to the <action service ...> element it will roll-back the global transaction started by the service completePack() and hence will revert the oder back to its initial state (status) where we started packing the order but it will also rollback every changes done by the service completePack.
>> 
>> Should we fix all three issues above or just do a global rollback (which takes you back where you started)?
>> 
>> Regards
>> Vikas
>> 
>> 
>> 
>> 
> 
> -- 


Re: Order Fulfillment Issues

Posted by Jacques Le Roux <ja...@les7arts.com>.
Hi Vikas,

I'd prefer to fix the 3 issues and open 1 or 3(?) Jira for them...

Jacques

Le 02/06/2014 17:14, Vikas Mayur a écrit :
> Hi Devs,
>
> I’m testing the order fulfillment on ofbiz release branch 12.04 for a scenario when payment gateway decline the payments. I’m using OOTB service 'alwaysDeclineCCProcessor’ to decline the payments which are earlier authorized by the service ‘alwaysApproveCCProcessor’. Once I create a sales order I click on the link ‘Pack Shipment For Ship Group’ to pack the order, the link is under the shipping information block on the order detail page. After packing the items, I click on ‘Complete’ button to complete the packing.
>
> The order packing is initiated and completed by a main service completePack which do a lot of things. It creates shipment, packages, issue items to shipment (which in turns also change the item status to complete), apply items to packages etc. and update the shipment status to PACKED. We have a following eca, which triggers services that creates invoice and capture the payments.
>
>      <eca service="updateShipment" event="commit">
>          <condition-field field-name="statusId" operator="not-equals" to-field-name="oldStatusId"/>
>          <condition field-name="statusId" operator="equals" value="SHIPMENT_PACKED"/>
>          <condition field-name="shipmentTypeId" operator="equals" value="SALES_SHIPMENT"/>
>          <action service="createInvoicesFromShipment" mode=“sync" run-as-user="system"/>
>          <action service="setInvoicesToReadyFromShipment" mode="sync" run-as-user="system"/>
>      </eca>
>
> I see few issues noted below while processing the order fulfillment. I believe the same issue exists on ofbiz trunk since that code around the packing & payment gateway service remains unchanged.
>
> 1. The service processCaptureResult (PaymentGatewayServices) contains a piece of code that creates payment and apply the payment to invoice but it does not check the status of the capture result. This leads to a invoice to PAID status even though the payments are declined.
>
> 2. The order status remains complete even though the payments are declined and is not rolled back to approved (preferably hold).
>
> 3. The order status ‘complete’ triggers an email to the customer through an eca defined on the service ‘changeOrderStatus’ in the order component.
>
> I think If we add an attribute ignore-error="false" to the <action service ...> element it will roll-back the global transaction started by the service completePack() and hence will revert the oder back to its initial state (status) where we started packing the order but it will also rollback every changes done by the service completePack.
>
> Should we fix all three issues above or just do a global rollback (which takes you back where you started)?
>
> Regards
> Vikas
>
>
>
>

--