You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ofbiz.apache.org by Mridul Pathak <mr...@hotwaxmedia.com> on 2009/09/11 11:57:07 UTC

Re: svn commit: r786013 - in /ofbiz/trunk/applications: order/servicedef/ product/script/org/ofbiz/shipment/issuance/ product/script/org/ofbiz/shipment/receipt/ product/servicedef/

Hi Adrian,

      I have given a try to fix this bug and uploaded the patch on  
jira issue OFBIZ-2928.  It would be great if you can have a look at  
the patch.

--
Thanks,
Mridul Pathak

On 18-Jun-09, at 10:34 PM, Adrian Crum wrote:

> Thank you for the information. That is definitely a bug that should  
> be fixed. I will look into it as soon as I have time.
>
> -Adrian
>
> Mridul Pathak wrote:
>> Hi Adrian,
>>     I tried using variable name modifier as suggested by you, but  
>> it doesn't seem to be working.  I am getting following warning on  
>> terminal: *Code*: <set field="itemIssuance.quantity" value="$ 
>> {parameters.quantity$double + itemIssuance.quantity$double}"  
>> type="BigDecimal"/>
>> *Warning*: "2009-06-18 22:02:59,475 (http-0.0.0.0-8443-1)  
>> [      GenericEntity.java:704:WARN ] The field name (or key)  
>> [quantity$double] is not valid for entity [ItemIssuance], printing  
>> IllegalArgumentException instead of throwing it because Map  
>> interface specification does not allow throwing that exception."
>>    When I tried it following way, it worked correctly:
>> *Code*:
>> <set field="itemIssuanceQuantity" from- 
>> field="itemIssuance.quantity" type="BigDecimal"/>
>> <set field="thisQuantity" from-field="parameters.quantity"  
>> type="BigDecimal"/>
>> <set field="itemIssuance.quantity" value="${thisQuantity$double +  
>> itemIssuanceQuantity$double}" type="BigDecimal"/>
>>    I can do it the second way, but is it possible to make the  
>> former code snippet work?
>> --
>> Thanks,
>> Mridul Pathak
>> On 18-Jun-09, at 8:12 PM, Mridul Pathak wrote:
>>> Thanks Adrian for your useful comments, this will help me to make  
>>> better use of UEL in future :).
>>> Ashish, can you please reopen the Jira Issue OFBIZ-2619.  So that  
>>> I can upload a patch with these improvements on the same issue.
>>>
>>> --
>>> Thanks,
>>> Mridul Pathak
>>>
>>> On 18-Jun-09, at 8:00 PM, Adrian Crum wrote:
>>>
>>>> It's good to see UEL expressions used to simplify simple method  
>>>> code. One thing to watch out for though - UEL will throw an  
>>>> exception if an expression variable doesn't exist. OFBiz has a  
>>>> variable name modifier that can be used to avoid that.
>>>>
>>>> For example:
>>>>
>>>> <set field="itemIssuance.quantity" value="${itemIssuance.quantity  
>>>> + parameters.quantity}" type="BigDecimal"/>
>>>>
>>>> would be better as:
>>>>
>>>> <set field="itemIssuance.quantity" value="${itemIssuance.quantity 
>>>> $double + parameters.quantity$double}" type="BigDecimal"/>
>>>>
>>>> For more information:
>>>>
>>>> http://docs.ofbiz.org/x/Hhk
>>>>
>>>> -Adrian
>>>>
>>>>
>>>> ashish@apache.org <ma...@apache.org> wrote:
>>>>> Author: ashish
>>>>> Date: Thu Jun 18 10:48:09 2009
>>>>> New Revision: 786013
>>>>> URL: http://svn.apache.org/viewvc?rev=786013&view=rev <http://svn.apache.org/viewvc?rev=786013&view=rev 
>>>>> >
>>>>> Log:
>>>>> Applied patch from jira issue OFBIZ-2619 (Issues with Receive PO  
>>>>> functionality).
>>>>> I have tested this patch extensively and now things looks more  
>>>>> accurate.
>>>>> I agree with the issues specified from Mridul in the jira issue.
>>>>> Thanks Mridul for your contribution.
>>>>> Modified:
>>>>>  ofbiz/trunk/applications/order/servicedef/secas.xml
>>>>>  ofbiz/trunk/applications/product/script/org/ofbiz/shipment/ 
>>>>> issuance/IssuanceServices.xml
>>>>>  ofbiz/trunk/applications/product/script/org/ofbiz/shipment/ 
>>>>> receipt/ShipmentReceiptServices.xml
>>>>>  ofbiz/trunk/applications/product/servicedef/secas.xml
>>>>>  ofbiz/trunk/applications/product/servicedef/services_shipment.xml
>>>>> Modified: ofbiz/trunk/applications/order/servicedef/secas.xml
>>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/servicedef/secas.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>  <http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/servicedef/secas.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>> >
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> ==================================================================
>>>>> --- ofbiz/trunk/applications/order/servicedef/secas.xml (original)
>>>>> +++ ofbiz/trunk/applications/order/servicedef/secas.xml Thu Jun  
>>>>> 18 10:48:09 2009
>>>>> @@ -52,7 +52,6 @@
>>>>>       <condition field-name="facilityId" operator="is-not-empty"/>
>>>>>       <condition field-name="orderId" operator="is-not-empty"/>
>>>>>       <action service="addProductsBackToCategory" mode="sync"/>
>>>>> -        <action service="updatePoOnReceiveInventory"  
>>>>> mode="sync"/>
>>>>>   </eca>
>>>>>   <eca service="changeOrderItemStatus" event="commit">
>>>>>       <condition field-name="statusId" operator="equals"  
>>>>> value="ITEM_CANCELLED"/>
>>>>> Modified: ofbiz/trunk/applications/product/script/org/ofbiz/ 
>>>>> shipment/issuance/IssuanceServices.xml
>>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/shipment/issuance/IssuanceServices.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>  <http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/shipment/issuance/IssuanceServices.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>> >
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> ==================================================================
>>>>> --- ofbiz/trunk/applications/product/script/org/ofbiz/shipment/ 
>>>>> issuance/IssuanceServices.xml (original)
>>>>> +++ ofbiz/trunk/applications/product/script/org/ofbiz/shipment/ 
>>>>> issuance/IssuanceServices.xml Thu Jun 18 10:48:09 2009
>>>>> @@ -126,7 +126,7 @@
>>>>>       <entity-one entity-name="Shipment" value-field="shipment"  
>>>>> auto-field-map="true"/>
>>>>>        <call-simple-method method- 
>>>>> name="findCreateIssueShipmentItem"/>
>>>>> -        <call-simple-method method- 
>>>>> name="callCreateItemIssuance"/>
>>>>> +        <call-simple-method method- 
>>>>> name="findCreateItemIssuance"/>
>>>>>       <call-simple-method method-name="associateIssueRoles"/>
>>>>>   </simple-method>
>>>>> @@ -228,7 +228,7 @@
>>>>>       </if-compare>
>>>>>        <!--<call-simple-method method- 
>>>>> name="findCreateIssueShipmentItem"/>-->
>>>>> -        <call-simple-method method- 
>>>>> name="callCreateItemIssuance"/>
>>>>> +        <call-simple-method method- 
>>>>> name="findCreateItemIssuance"/>
>>>>>       <call-simple-method method-name="associateIssueRoles"/>
>>>>>        <!-- decrement quantity still reserved -->
>>>>> @@ -307,7 +307,27 @@
>>>>>       </if-empty>
>>>>>       <field-to-result field="shipmentItem.shipmentItemSeqId"  
>>>>> result-name="shipmentItemSeqId"/>
>>>>>   </simple-method>
>>>>> -    <simple-method method-name="callCreateItemIssuance" short- 
>>>>> description="Call Create ItemIssuance - meant to be called in- 
>>>>> line">
>>>>> +    <simple-method method-name="findCreateItemIssuance" short- 
>>>>> description="Find Create ItemIssuance - meant to be called in- 
>>>>> line">
>>>>> +        <!-- If a non-sales order find ItemIssuance for  
>>>>> orderItemSeqId-shimentItemSeqId-shipGroupSeqId pair, update it  
>>>>> and return -->
>>>>> +        <if-compare field="orderHeader.orderTypeId"  
>>>>> operator="not-equals" value="SALES_ORDER">
>>>>> +            <entity-and list="itemIssuances" entity- 
>>>>> name="ItemIssuance">
>>>>> +                <field-map field-name="orderId" from- 
>>>>> field="orderItem.orderId"/>
>>>>> +                <field-map field-name="orderItemSeqId" from- 
>>>>> field="orderItem.orderItemSeqId"/>
>>>>> +                <field-map field-name="shipmentId" from- 
>>>>> field="shipmentItem.shipmentId"/>
>>>>> +                <field-map field-name="shipmentItemSeqId" from- 
>>>>> field="shipmentItem.shipmentItemSeqId"/>
>>>>> +                <field-map field-name="shipGroupSeqId" from- 
>>>>> field="orderItemShipGroupAssoc.shipGroupSeqId"/>
>>>>> +                <order-by field-name="-issuedDateTime"/>
>>>>> +            </entity-and>
>>>>> +            <if-not-empty field="itemIssuances">
>>>>> +                <first-from-list entry="itemIssuance"  
>>>>> list="itemIssuances"/>
>>>>> +                <set field="itemIssuance.quantity" value="$ 
>>>>> {itemIssuance.quantity + parameters.quantity}" type="BigDecimal"/>
>>>>> +                <store-value value-field="itemIssuance"/>
>>>>> +                <set field="itemIssuanceId" from- 
>>>>> field="itemIssuance.itemIssuanceId"/>
>>>>> +                <field-to-result field="itemIssuanceId"/>
>>>>> +                <return/>
>>>>> +            </if-not-empty>
>>>>> +        </if-compare>
>>>>> +                 <!-- create the ItemIssuance -->
>>>>>       <set from-field="parameters.quantity"  
>>>>> field="itemIssuanceCreate.quantity"/>
>>>>>       <set from-field="shipmentItem.shipmentId"  
>>>>> field="itemIssuanceCreate.shipmentId"/>
>>>>> @@ -557,4 +577,14 @@
>>>>>       </calculate>
>>>>>       <call-service service-name="createInventoryItemDetail" in- 
>>>>> map-name="createDetailMap"/>
>>>>>   </simple-method>
>>>>> +    <simple-method method- 
>>>>> name="getTotalIssuedQuantityForOrderItem" short- 
>>>>> description="Computes the total issued quantity for an order  
>>>>> item">
>>>>> +        <set field="totalIssuedQuantity" type="BigDecimal"  
>>>>> value="0"/>
>>>>> +        <entity-and list="allItemIssuances" entity- 
>>>>> name="ItemIssuance">
>>>>> +            <field-map field-name="orderId" from- 
>>>>> field="orderItem.orderId"/>
>>>>> +            <field-map field-name="orderItemSeqId" from- 
>>>>> field="orderItem.orderItemSeqId"/>
>>>>> +        </entity-and>
>>>>> +        <iterate entry="itemIssuance" list="allItemIssuances">
>>>>> +            <set field="totalIssuedQuantity" value="$ 
>>>>> {totalIssuedQuantity + itemIssuance.quantity}" type="BigDecimal"/>
>>>>> +        </iterate>
>>>>> +    </simple-method>
>>>>> </simple-methods>
>>>>> Modified: ofbiz/trunk/applications/product/script/org/ofbiz/ 
>>>>> shipment/receipt/ShipmentReceiptServices.xml
>>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/shipment/receipt/ShipmentReceiptServices.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>  <http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/shipment/receipt/ShipmentReceiptServices.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>> >
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> ==================================================================
>>>>> --- ofbiz/trunk/applications/product/script/org/ofbiz/shipment/ 
>>>>> receipt/ShipmentReceiptServices.xml (original)
>>>>> +++ ofbiz/trunk/applications/product/script/org/ofbiz/shipment/ 
>>>>> receipt/ShipmentReceiptServices.xml Thu Jun 18 10:48:09 2009
>>>>> @@ -313,25 +313,155 @@
>>>>>           </if-compare>
>>>>>       </if-compare>
>>>>>   </simple-method>
>>>>> +    +    <simple-method method- 
>>>>> name="issueOrderItemToShipmentAndReceiveAgainstPO" short- 
>>>>> description="Issues order item quantity specified to the  
>>>>> shipment, then receives inventory for that item and quantity">
>>>>> +        <set value="Issue OrderItem to Shipment and Receive  
>>>>> against PO" field="operationName"/>
>>>>> +        <check-permission permission="FACILITY" action="_CREATE">
>>>>> +            <fail-message message="Security Error: to run $ 
>>>>> {operationName} you must have the FACILITY_CREATE or  
>>>>> FACILITY_ADMIN permission"/>
>>>>> +        </check-permission>
>>>>> +        <check-permission permission="FACILITY" action="_UPDATE">
>>>>> +            <fail-message message="Security Error: to run $ 
>>>>> {operationName} you must have the FACILITY_UPDATE or  
>>>>> FACILITY_ADMIN permission"/>
>>>>> +        </check-permission>
>>>>> +        <call-simple-method method- 
>>>>> name="checkCanChangeShipmentStatusPacked" xml- 
>>>>> resource="component://product/script/org/ofbiz/shipment/shipment/ 
>>>>> ShipmentServices.xml"/>
>>>>> -    <simple-method method-name="updatePoOnReceiveInventory"  
>>>>> short-description="Update order items if quantity received is  
>>>>> higher than quantity on purchase order">
>>>>> -        <set field="quantityAccepted" from- 
>>>>> field="parameters.quantityAccepted" type="BigDecimal"/>
>>>>> -        <entity-one entity-name="OrderItem" value- 
>>>>> field="orderItem"/>
>>>>> -        <if-compare-field field="orderItem.quantity"  
>>>>> operator="less" to-field="quantityAccepted" type="BigDecimal">
>>>>> -            <set field="orderItem.quantity" from- 
>>>>> field="quantityAccepted"/>
>>>>> -            <store-value  value-field="orderItem"/>
>>>>> -        </if-compare-field>
>>>>> -        <entity-and entity-name="ItemIssuance"  
>>>>> list="itemIssuances">
>>>>> -            <field-map field-name="orderId" from- 
>>>>> field="parameters.orderId"/>
>>>>> -            <field-map field-name="orderItemSeqId" from- 
>>>>> field="parameters.orderItemSeqId"/>
>>>>> -        </entity-and>
>>>>> -        <first-from-list list="itemIssuances"  
>>>>> entry="itemIssuance"/>
>>>>> -        <if-not-empty field="itemIssuance">
>>>>> -            <if-compare-field field="itemIssuance.quantity"   
>>>>> operator="less" to-field="quantityAccepted" type="BigDecimal">
>>>>> -                <set field="itemIssuance.quantity" from- 
>>>>> field="quantityAccepted"/>
>>>>> -                <set-service-fields service- 
>>>>> name="updateItemIssuance" map="itemIssuance" to- 
>>>>> map="updateItemIssuanceMap"/>
>>>>> -                <call-service service-name="updateItemIssuance"  
>>>>> in-map-name="updateItemIssuanceMap"/>
>>>>> +        <!-- get orderItem -->
>>>>> +        <entity-one entity-name="OrderItem" value- 
>>>>> field="orderItem" auto-field-map="true"/>
>>>>> +        <!-- get orderItemShipGroupAssoc -->
>>>>> +        <entity-one entity-name="OrderItemShipGroupAssoc" value- 
>>>>> field="orderItemShipGroupAssoc" auto-field-map="true"/>
>>>>> +        <!-- get shipment -->
>>>>> +        <entity-one entity-name="Shipment" value- 
>>>>> field="shipment" auto-field-map="true"/>
>>>>> +        +        <!-- try to find an existing shipmentItem and  
>>>>> attach to it, if none found create a new shipmentItem -->
>>>>> +        <!-- if there is NO productId on the orderItem, ALWAYS  
>>>>> create a new shipmentItem -->
>>>>> +        <if-not-empty field="orderItem.productId">
>>>>> +            <entity-condition entity-name="ShipmentItem"  
>>>>> list="shipmentItems">
>>>>> +                <condition-list combine="and">
>>>>> +                    <condition-expr field-name="productId" from- 
>>>>> field="orderItem.productId"/>
>>>>> +                    <condition-expr field-name="shipmentId"  
>>>>> from-field="shipment.shipmentId"/>
>>>>> +                    <condition-expr field- 
>>>>> name="shipmentItemSeqId" from- 
>>>>> field="parameters.shipmentItemSeqId" ignore-if-empty="true"/>
>>>>> +                </condition-list>
>>>>> +                <order-by field-name="shipmentItemSeqId"/>
>>>>> +            </entity-condition>
>>>>> +            <first-from-list entry="shipmentItem"  
>>>>> list="shipmentItems"/>
>>>>> +        </if-not-empty>
>>>>> +
>>>>> +        <if-empty field="shipmentItem">
>>>>> +            <set from-field="orderItem.productId"  
>>>>> field="shipmentItemCreate.productId"/>
>>>>> +            <set from-field="parameters.shipmentId"  
>>>>> field="shipmentItemCreate.shipmentId"/>
>>>>> +            <set from-field="parameters.quantity"  
>>>>> field="shipmentItemCreate.quantity"/>
>>>>> +            <call-service service-name="createShipmentItem" in- 
>>>>> map-name="shipmentItemCreate">
>>>>> +                <result-to-field result- 
>>>>> name="shipmentItemSeqId"  
>>>>> field="shipmentItemLookupPk.shipmentItemSeqId"/>
>>>>> +            </call-service>
>>>>> +            <set from-field="parameters.shipmentId"  
>>>>> field="shipmentItemLookupPk.shipmentId"/>
>>>>> +            <find-by-primary-key entity-name="ShipmentItem"  
>>>>> map="shipmentItemLookupPk" value-field="shipmentItem"/>
>>>>> +            +            <!-- Create ItemIssuance for this  
>>>>> ShipmentItem -->
>>>>> +            <set from-field="parameters.quantity"  
>>>>> field="itemIssuanceCreate.quantity"/>
>>>>> +            <set from-field="shipmentItem.shipmentId"  
>>>>> field="itemIssuanceCreate.shipmentId"/>
>>>>> +            <set from-field="shipmentItem.shipmentItemSeqId"  
>>>>> field="itemIssuanceCreate.shipmentItemSeqId"/>
>>>>> +            <set from-field="orderItem.orderId"  
>>>>> field="itemIssuanceCreate.orderId"/>
>>>>> +            <set from-field="orderItem.orderItemSeqId"  
>>>>> field="itemIssuanceCreate.orderItemSeqId"/>
>>>>> +            +            <if-not-empty  
>>>>> field="orderItemShipGroupAssoc">
>>>>> +                <!-- If we have a ShipGroup Assoc for this Item  
>>>>> to focus on, set that; this is mostly the case for purchase  
>>>>> orders and such -->
>>>>> +                <set from- 
>>>>> field="orderItemShipGroupAssoc.shipGroupSeqId"  
>>>>> field="itemIssuanceCreate.shipGroupSeqId"/>
>>>>> +            </if-not-empty>
>>>>> +
>>>>> +            <set from-field="userLogin.userLoginId"  
>>>>> field="itemIssuanceCreate.issuedByUserLoginId"/>
>>>>> +            <call-service service-name="createItemIssuance" in- 
>>>>> map-name="itemIssuanceCreate">
>>>>> +                <result-to-field result-name="itemIssuanceId"/>
>>>>> +            </call-service>
>>>>> +        <else>
>>>>> +            <call-simple-method method- 
>>>>> name="getTotalIssuedQuantityForOrderItem" xml- 
>>>>> resource="component://product/script/org/ofbiz/shipment/issuance/ 
>>>>> IssuanceServices.xml"/>
>>>>> +            <call-simple-method method- 
>>>>> name="getReceivedQuantityForOrderItem"/>
>>>>> +            <set field="receivedQuantity" value="$ 
>>>>> {receivedQuantity + parameters.quantity}" type="BigDecimal"/>
>>>>> +            <if-compare-field field="totalIssuedQuantity"  
>>>>> operator="less" to-field="receivedQuantity" type="BigDecimal">
>>>>> +                <set field="quantityToAdd" value="$ 
>>>>> {receivedQuantity - totalIssuedQuantity}" type="BigDecimal"/>
>>>>> +                <set field="shipmentItem.quantity" value="$ 
>>>>> {shipmentItem.quantity + quantityToAdd}" type="BigDecimal"/>
>>>>> +                <store-value value-field="shipmentItem"/>
>>>>> +                <set field="shipmentItemSeqId" from- 
>>>>> field="shipmentItem.shipmentItemSeqId"/>
>>>>> +                +                <entity-and  
>>>>> list="itemIssuances" entity-name="ItemIssuance">
>>>>> +                    <field-map field-name="orderId" from- 
>>>>> field="orderItem.orderId"/>
>>>>> +                    <field-map field-name="orderItemSeqId" from- 
>>>>> field="orderItem.orderItemSeqId"/>
>>>>> +                    <field-map field-name="shipmentId" from- 
>>>>> field="shipmentItem.shipmentId"/>
>>>>> +                    <field-map field-name="shipmentItemSeqId"  
>>>>> from-field="shipmentItem.shipmentItemSeqId"/>
>>>>> +                    <field-map field-name="shipGroupSeqId" from- 
>>>>> field="orderItemShipGroupAssoc.shipGroupSeqId"/>
>>>>> +                    <order-by field-name="-issuedDateTime"/>
>>>>> +                </entity-and>
>>>>> +                <first-from-list entry="itemIssuance"  
>>>>> list="itemIssuances"/>
>>>>> +                <set field="itemIssuance.quantity" value="$ 
>>>>> {itemIssuance.quantity + quantityToAdd}" type="BigDecimal"/>
>>>>> +                <store-value value-field="itemIssuance"/>
>>>>> +                <set field="itemIssuanceId" from- 
>>>>> field="itemIssuance.itemIssuanceId"/>
>>>>>           </if-compare-field>
>>>>> +        </else>
>>>>> +        </if-empty>
>>>>> +
>>>>> +        <call-simple-method method-name="associateIssueRoles"  
>>>>> xml-resource="component://product/script/org/ofbiz/shipment/ 
>>>>> issuance/IssuanceServices.xml"/>
>>>>> +
>>>>> +        <set-service-fields service- 
>>>>> name="receiveInventoryProduct" map="parameters" to- 
>>>>> map="receiveInventoryProductCtx"/>
>>>>> +        <set  
>>>>> field="receiveInventoryProductCtx.shipmentItemSeqId" from- 
>>>>> field="shipmentItemSeqId"/>
>>>>> +        <set field="receiveInventoryProductCtx.itemIssuanceId"  
>>>>> from-field="itemIssuanceId"/>
>>>>> +        <call-service service-name="receiveInventoryProduct" in- 
>>>>> map-name="receiveInventoryProductCtx">
>>>>> +            <result-to-result result-name="inventoryItemId"/>
>>>>> +        </call-service>
>>>>> +    </simple-method>
>>>>> +    +    <simple-method method- 
>>>>> name="getReceivedQuantityForOrderItem" short- 
>>>>> description="Computes the till now received quantity from all  
>>>>> ShipmentReceipts">
>>>>> +        <set field="receivedQuantity" type="BigDecimal"  
>>>>> value="0"/>
>>>>> +        <entity-and list="shipmentReceipts" entity- 
>>>>> name="ShipmentReceipt">
>>>>> +            <field-map field-name="orderId" from- 
>>>>> field="orderItem.orderId"/>
>>>>> +            <field-map field-name="orderItemSeqId" from- 
>>>>> field="orderItem.orderItemSeqId"/>
>>>>> +        </entity-and>
>>>>> +        <iterate entry="shipmentReceipt" list="shipmentReceipts">
>>>>> +            <set field="receivedQuantity" value="$ 
>>>>> {receivedQuantity + shipmentReceipt.quantityAccepted}"  
>>>>> type="BigDecimal"/>
>>>>> +        </iterate>
>>>>> +    </simple-method>
>>>>> +
>>>>> +    <simple-method method- 
>>>>> name="updateIssuanceShipmentAndPoOnReceiveInventory" short- 
>>>>> description="Update issuance, shipment and order items if  
>>>>> quantity received is higher than quantity on purchase order">
>>>>> +        <entity-one value-field="orderItem" entity- 
>>>>> name="OrderItem"/>
>>>>> +        <set field="unitCost" from-field="parameters.unitCost"  
>>>>> type="BigDecimal"/>
>>>>> +        <if-compare-field field="unitCost" operator="not- 
>>>>> equals" to-field="orderItem.unitPrice">
>>>>> +            <set field="orderItem.unitPrice" from- 
>>>>> field="unitCost"/>
>>>>> +            <store-value value-field="orderItem"/>
>>>>> +        </if-compare-field>
>>>>> +        <call-simple-method method- 
>>>>> name="getReceivedQuantityForOrderItem"/>
>>>>> +        <if-compare-field field="orderItem.quantity"  
>>>>> operator="less" to-field="receivedQuantity" type="BigDecimal">
>>>>> +            <set field="orderItem.quantity" from- 
>>>>> field="receivedQuantity"/>
>>>>> +            <store-value value-field="orderItem"/>
>>>>> +        </if-compare-field>
>>>>> +        <if-not-empty field="parameters.shipmentId">
>>>>> +            <if-not-empty field="orderItem.productId">
>>>>> +                <call-simple-method method- 
>>>>> name="getTotalIssuedQuantityForOrderItem" xml- 
>>>>> resource="component://product/script/org/ofbiz/shipment/issuance/ 
>>>>> IssuanceServices.xml"/>
>>>>> +                <if-compare-field field="totalIssuedQuantity"  
>>>>> operator="less" to-field="receivedQuantity" type="BigDecimal">
>>>>> +                    <set field="quantityToAdd" value="$ 
>>>>> {receivedQuantity - totalIssuedQuantity}" type="BigDecimal"/>
>>>>> +                    <entity-condition entity- 
>>>>> name="ShipmentItem" list="shipmentItems">
>>>>> +                        <condition-list combine="and">
>>>>> +                            <condition-expr field- 
>>>>> name="productId" from-field="orderItem.productId"/>
>>>>> +                            <condition-expr field- 
>>>>> name="shipmentId" from-field="parameters.shipmentId"/>
>>>>> +                            <condition-expr field- 
>>>>> name="shipmentItemSeqId" from- 
>>>>> field="parameters.shipmentItemSeqId" ignore-if-empty="true"/>
>>>>> +                        </condition-list>
>>>>> +                        <order-by field- 
>>>>> name="shipmentItemSeqId"/>
>>>>> +                    </entity-condition>
>>>>> +                    <first-from-list entry="shipmentItem"  
>>>>> list="shipmentItems"/>
>>>>> +                    <set field="shipmentItem.quantity" value="$ 
>>>>> {shipmentItem.quantity + quantityToAdd}" type="BigDecimal"/>
>>>>> +                    <store-value value-field="shipmentItem"/>
>>>>> +                    +                    <entity-and  
>>>>> list="itemIssuances" entity-name="ItemIssuance">
>>>>> +                        <field-map field-name="orderId" from- 
>>>>> field="parameters.orderId"/>
>>>>> +                        <field-map field-name="orderItemSeqId"  
>>>>> from-field="parameters.orderItemSeqId"/>
>>>>> +                        <field-map field-name="shipmentId" from- 
>>>>> field="parameters.shipmentId"/>
>>>>> +                        <field-map field- 
>>>>> name="shipmentItemSeqId" from- 
>>>>> field="shipmentItem.shipmentItemSeqId"/>
>>>>> +                        <order-by field-name="-issuedDateTime"/>
>>>>> +                    </entity-and>
>>>>> +                    <first-from-list entry="itemIssuance"  
>>>>> list="itemIssuances"/>
>>>>> +                    <set field="itemIssuance.quantity" value="$ 
>>>>> {itemIssuance.quantity + quantityToAdd}" type="BigDecimal"/>
>>>>> +                    <store-value value-field="itemIssuance"/>
>>>>> +                    +                    <set  
>>>>> field="itemIssuanceId" from-field="itemIssuance.itemIssuanceId"/>
>>>>> +                    <call-simple-method method- 
>>>>> name="associateIssueRoles" xml-resource="component://product/ 
>>>>> script/org/ofbiz/shipment/issuance/IssuanceServices.xml"/>
>>>>> +                </if-compare-field>
>>>>> +            </if-not-empty>
>>>>>       </if-not-empty>
>>>>>   </simple-method>
>>>>> Modified: ofbiz/trunk/applications/product/servicedef/secas.xml
>>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/servicedef/secas.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>  <http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/servicedef/secas.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>> >
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> ==================================================================
>>>>> --- ofbiz/trunk/applications/product/servicedef/secas.xml  
>>>>> (original)
>>>>> +++ ofbiz/trunk/applications/product/servicedef/secas.xml Thu  
>>>>> Jun 18 10:48:09 2009
>>>>> @@ -117,4 +117,10 @@
>>>>>       <condition field-name="orderIdList" operator="is-not- 
>>>>> empty"/>
>>>>>       <action service="convertPickOrderIdListToHeaders"  
>>>>> mode="sync"/>
>>>>>   </eca>
>>>>> +    +    <eca service="receiveInventoryProduct" event="commit">
>>>>> +        <condition field-name="facilityId" operator="is-not- 
>>>>> empty"/>
>>>>> +        <condition field-name="orderId" operator="is-not-empty"/>
>>>>> +        <action  
>>>>> service="updateIssuanceShipmentAndPoOnReceiveInventory"  
>>>>> mode="sync"/>
>>>>> +    </eca>
>>>>> </service-eca>
>>>>> Modified: ofbiz/trunk/applications/product/servicedef/ 
>>>>> services_shipment.xml
>>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/servicedef/services_shipment.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>  <http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/servicedef/services_shipment.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>> >
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> = 
>>>>> ==================================================================
>>>>> --- ofbiz/trunk/applications/product/servicedef/ 
>>>>> services_shipment.xml (original)
>>>>> +++ ofbiz/trunk/applications/product/servicedef/ 
>>>>> services_shipment.xml Thu Jun 18 10:48:09 2009
>>>>> @@ -709,12 +709,11 @@
>>>>>       <override name="facilityId" optional="false"/>
>>>>>   </service>
>>>>> -    <service name="issueOrderItemToShipmentAndReceiveAgainstPO"  
>>>>> engine="group" auth="true">
>>>>> +    <service name="issueOrderItemToShipmentAndReceiveAgainstPO"  
>>>>> engine="simple" transaction-timeout="600"
>>>>> +            location="component://product/script/org/ofbiz/ 
>>>>> shipment/receipt/ShipmentReceiptServices.xml"  
>>>>> invoke="issueOrderItemToShipmentAndReceiveAgainstPO" auth="true">
>>>>>       <description>Issues order item quantity specified to the  
>>>>> shipment, then receives inventory for that item and quantity</ 
>>>>> description>
>>>>> -        <group>
>>>>> -            <invoke name="issueOrderItemToShipment" result-to- 
>>>>> context="true"/>
>>>>> -            <invoke name="receiveInventoryProduct" result-to- 
>>>>> context="true"/>
>>>>> -        </group>
>>>>> +        <implements service="issueOrderItemToShipment"/>
>>>>> +        <implements service="receiveInventoryProduct"/>
>>>>>   </service>
>>>>>    <service name="quickReceiveReturn" engine="simple"
>>>>> @@ -875,4 +874,14 @@
>>>>>       <attribute name="body" type="String" mode="OUT"  
>>>>> optional="true"/>
>>>>>       <attribute name="messageWrapper"  
>>>>> type="org.ofbiz.service.mail.MimeMessageWrapper" mode="OUT"/>
>>>>>   </service>
>>>>> +    <service  
>>>>> name="updateIssuanceShipmentAndPoOnReceiveInventory"  
>>>>> engine="simple"
>>>>> +            location="component://product/script/org/ofbiz/ 
>>>>> shipment/receipt/ShipmentReceiptServices.xml"  
>>>>> invoke="updateIssuanceShipmentAndPoOnReceiveInventory">
>>>>> +        <description>Update issuance, shipment and order items  
>>>>> if quantity received is higher than quantity on purchase order</ 
>>>>> description>
>>>>> +        <attribute name="orderId" type="String" mode="IN"  
>>>>> optional="false"/>
>>>>> +        <attribute name="orderItemSeqId" type="String"  
>>>>> mode="IN" optional="false"/>
>>>>> +        <attribute name="quantityAccepted"  type="BigDecimal"  
>>>>> mode="IN" optional="false"/>
>>>>> +        <attribute name="shipmentId" type="String" mode="IN"  
>>>>> optional="true"/>
>>>>> +        <attribute name="shipmentItemSeqId" type="String"  
>>>>> mode="IN" optional="true"/>
>>>>> +        <attribute name="unitCost" type="String" mode="IN"  
>>>>> optional="false"/>
>>>>> +    </service>
>>>>> </services>
>>>


Re: svn commit: r786013 - in /ofbiz/trunk/applications: order/servicedef/ product/script/org/ofbiz/shipment/issuance/ product/script/org/ofbiz/shipment/receipt/ product/servicedef/

Posted by Mridul Pathak <mr...@hotwaxmedia.com>.
On 11-Sep-09, at 4:26 PM, Scott Gray wrote:

> Ha sorry, I thought this was that other thread about JUEL that we  
> had going yesterday :-) sorry

No problem Scott, discussion is always better :).

>
> But while we're on the topic please do keep in mind that doubles  
> should not used in place of BigDecimals while doing calculations.  A  
> $bigdecimal version sounds fine but I'm getting quite curious to  
> know how JUEL actually does it's calculations, there is a chance it  
> could be converting to doubles internally which would be a pain.

I would try to find some time to look into it, I'm pretty curious on  
this as well.  Also would look into the possibilities of $bigdecimal  
version.

--
Thanks,
Mridul Pathak

>
> Regards
> Scott
>
> On 11/09/2009, at 10:37 PM, Mridul Pathak wrote:
>
>> Hi Scott,
>>
>>    This is related to UEL support for variable name modifiers as  
>> documented on http://docs.ofbiz.org/x/Hhk.  The purpose here is  
>> that at the time of evaluating UEL expressions, if a value of a  
>> variable is found null, the variable name modifier will return a 0  
>> value based on the type of the modifier, so that expression is  
>> evaluated successfully.  This is something already supported but  
>> wasn't working for values accessed via a key in a Map, so I tried  
>> to fix it up.
>>
>>    Other variable name modifiers are $string, $boolean, $integer,  
>> $long, $null.  Currently $double can be used for BigDecimal  
>> calculations to return 0 for a missing variable.  May be we can add  
>> a variable name modifier $bigdecimal (which returns a  
>> BigDecimal.ZERO for missing variable of type BigDecimal) to  
>> explicitly support BigDecimal calculations.  If it sounds  
>> reasonable, I can provide another patch for this support.
>>
>> --
>> Thanks,
>> Mridul Pathak
>>
>> On 11-Sep-09, at 3:36 PM, Scott Gray wrote:
>>
>>> Hi Mridul,
>>>
>>> I'm not sure I understand, are you proposing that we affix $double  
>>> to the end of all our values?  Having spent many many hours  
>>> removing the use of doubles from OFBiz I would be quite a bit  
>>> against that.
>>>
>>> Regards
>>> Scott
>>>
>>> On 11/09/2009, at 9:57 PM, Mridul Pathak wrote:
>>>
>>>> Hi Adrian,
>>>>
>>>>    I have given a try to fix this bug and uploaded the patch on  
>>>> jira issue OFBIZ-2928.  It would be great if you can have a look  
>>>> at the patch.
>>>>
>>>> --
>>>> Thanks,
>>>> Mridul Pathak
>>>>
>>>> On 18-Jun-09, at 10:34 PM, Adrian Crum wrote:
>>>>
>>>>> Thank you for the information. That is definitely a bug that  
>>>>> should be fixed. I will look into it as soon as I have time.
>>>>>
>>>>> -Adrian
>>>>>
>>>>> Mridul Pathak wrote:
>>>>>> Hi Adrian,
>>>>>>   I tried using variable name modifier as suggested by you, but  
>>>>>> it doesn't seem to be working.  I am getting following warning  
>>>>>> on terminal: *Code*: <set field="itemIssuance.quantity" value="$ 
>>>>>> {parameters.quantity$double + itemIssuance.quantity$double}"  
>>>>>> type="BigDecimal"/>
>>>>>> *Warning*: "2009-06-18 22:02:59,475 (http-0.0.0.0-8443-1)  
>>>>>> [      GenericEntity.java:704:WARN ] The field name (or key)  
>>>>>> [quantity$double] is not valid for entity [ItemIssuance],  
>>>>>> printing IllegalArgumentException instead of throwing it  
>>>>>> because Map interface specification does not allow throwing  
>>>>>> that exception."
>>>>>>  When I tried it following way, it worked correctly:
>>>>>> *Code*:
>>>>>> <set field="itemIssuanceQuantity" from- 
>>>>>> field="itemIssuance.quantity" type="BigDecimal"/>
>>>>>> <set field="thisQuantity" from-field="parameters.quantity"  
>>>>>> type="BigDecimal"/>
>>>>>> <set field="itemIssuance.quantity" value="${thisQuantity$double  
>>>>>> + itemIssuanceQuantity$double}" type="BigDecimal"/>
>>>>>>  I can do it the second way, but is it possible to make the  
>>>>>> former code snippet work?
>>>>>> --
>>>>>> Thanks,
>>>>>> Mridul Pathak
>>>>>> On 18-Jun-09, at 8:12 PM, Mridul Pathak wrote:
>>>>>>> Thanks Adrian for your useful comments, this will help me to  
>>>>>>> make better use of UEL in future :).
>>>>>>> Ashish, can you please reopen the Jira Issue OFBIZ-2619.  So  
>>>>>>> that I can upload a patch with these improvements on the same  
>>>>>>> issue.
>>>>>>>
>>>>>>> --
>>>>>>> Thanks,
>>>>>>> Mridul Pathak
>>>>>>>
>>>>>>> On 18-Jun-09, at 8:00 PM, Adrian Crum wrote:
>>>>>>>
>>>>>>>> It's good to see UEL expressions used to simplify simple  
>>>>>>>> method code. One thing to watch out for though - UEL will  
>>>>>>>> throw an exception if an expression variable doesn't exist.  
>>>>>>>> OFBiz has a variable name modifier that can be used to avoid  
>>>>>>>> that.
>>>>>>>>
>>>>>>>> For example:
>>>>>>>>
>>>>>>>> <set field="itemIssuance.quantity" value="$ 
>>>>>>>> {itemIssuance.quantity + parameters.quantity}"  
>>>>>>>> type="BigDecimal"/>
>>>>>>>>
>>>>>>>> would be better as:
>>>>>>>>
>>>>>>>> <set field="itemIssuance.quantity" value="$ 
>>>>>>>> {itemIssuance.quantity$double + parameters.quantity$double}"  
>>>>>>>> type="BigDecimal"/>
>>>>>>>>
>>>>>>>> For more information:
>>>>>>>>
>>>>>>>> http://docs.ofbiz.org/x/Hhk
>>>>>>>>
>>>>>>>> -Adrian
>>>>>>>>
>>>>>>>>
>>>>>>>> ashish@apache.org <ma...@apache.org> wrote:
>>>>>>>>> Author: ashish
>>>>>>>>> Date: Thu Jun 18 10:48:09 2009
>>>>>>>>> New Revision: 786013
>>>>>>>>> URL: http://svn.apache.org/viewvc?rev=786013&view=rev <http://svn.apache.org/viewvc?rev=786013&view=rev 
>>>>>>>>> >
>>>>>>>>> Log:
>>>>>>>>> Applied patch from jira issue OFBIZ-2619 (Issues with  
>>>>>>>>> Receive PO functionality).
>>>>>>>>> I have tested this patch extensively and now things looks  
>>>>>>>>> more accurate.
>>>>>>>>> I agree with the issues specified from Mridul in the jira  
>>>>>>>>> issue.
>>>>>>>>> Thanks Mridul for your contribution.
>>>>>>>>> Modified:
>>>>>>>>> ofbiz/trunk/applications/order/servicedef/secas.xml
>>>>>>>>> ofbiz/trunk/applications/product/script/org/ofbiz/shipment/ 
>>>>>>>>> issuance/IssuanceServices.xml
>>>>>>>>> ofbiz/trunk/applications/product/script/org/ofbiz/shipment/ 
>>>>>>>>> receipt/ShipmentReceiptServices.xml
>>>>>>>>> ofbiz/trunk/applications/product/servicedef/secas.xml
>>>>>>>>> ofbiz/trunk/applications/product/servicedef/ 
>>>>>>>>> services_shipment.xml
>>>>>>>>> Modified: ofbiz/trunk/applications/order/servicedef/secas.xml
>>>>>>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/servicedef/secas.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>>>>  <http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/servicedef/secas.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>>>> >
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> ==============================================================
>>>>>>>>> --- ofbiz/trunk/applications/order/servicedef/secas.xml  
>>>>>>>>> (original)
>>>>>>>>> +++ ofbiz/trunk/applications/order/servicedef/secas.xml Thu  
>>>>>>>>> Jun 18 10:48:09 2009
>>>>>>>>> @@ -52,7 +52,6 @@
>>>>>>>>>     <condition field-name="facilityId" operator="is-not- 
>>>>>>>>> empty"/>
>>>>>>>>>     <condition field-name="orderId" operator="is-not-empty"/>
>>>>>>>>>     <action service="addProductsBackToCategory" mode="sync"/>
>>>>>>>>> -        <action service="updatePoOnReceiveInventory"  
>>>>>>>>> mode="sync"/>
>>>>>>>>> </eca>
>>>>>>>>> <eca service="changeOrderItemStatus" event="commit">
>>>>>>>>>     <condition field-name="statusId" operator="equals"  
>>>>>>>>> value="ITEM_CANCELLED"/>
>>>>>>>>> Modified: ofbiz/trunk/applications/product/script/org/ofbiz/ 
>>>>>>>>> shipment/issuance/IssuanceServices.xml
>>>>>>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/shipment/issuance/IssuanceServices.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>>>>  <http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/shipment/issuance/IssuanceServices.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>>>> >
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> ==============================================================
>>>>>>>>> --- ofbiz/trunk/applications/product/script/org/ofbiz/ 
>>>>>>>>> shipment/issuance/IssuanceServices.xml (original)
>>>>>>>>> +++ ofbiz/trunk/applications/product/script/org/ofbiz/ 
>>>>>>>>> shipment/issuance/IssuanceServices.xml Thu Jun 18 10:48:09  
>>>>>>>>> 2009
>>>>>>>>> @@ -126,7 +126,7 @@
>>>>>>>>>     <entity-one entity-name="Shipment" value- 
>>>>>>>>> field="shipment" auto-field-map="true"/>
>>>>>>>>>      <call-simple-method method- 
>>>>>>>>> name="findCreateIssueShipmentItem"/>
>>>>>>>>> -        <call-simple-method method- 
>>>>>>>>> name="callCreateItemIssuance"/>
>>>>>>>>> +        <call-simple-method method- 
>>>>>>>>> name="findCreateItemIssuance"/>
>>>>>>>>>     <call-simple-method method-name="associateIssueRoles"/>
>>>>>>>>> </simple-method>
>>>>>>>>> @@ -228,7 +228,7 @@
>>>>>>>>>     </if-compare>
>>>>>>>>>      <!--<call-simple-method method- 
>>>>>>>>> name="findCreateIssueShipmentItem"/>-->
>>>>>>>>> -        <call-simple-method method- 
>>>>>>>>> name="callCreateItemIssuance"/>
>>>>>>>>> +        <call-simple-method method- 
>>>>>>>>> name="findCreateItemIssuance"/>
>>>>>>>>>     <call-simple-method method-name="associateIssueRoles"/>
>>>>>>>>>      <!-- decrement quantity still reserved -->
>>>>>>>>> @@ -307,7 +307,27 @@
>>>>>>>>>     </if-empty>
>>>>>>>>>     <field-to-result field="shipmentItem.shipmentItemSeqId"  
>>>>>>>>> result-name="shipmentItemSeqId"/>
>>>>>>>>> </simple-method>
>>>>>>>>> -    <simple-method method-name="callCreateItemIssuance"  
>>>>>>>>> short-description="Call Create ItemIssuance - meant to be  
>>>>>>>>> called in-line">
>>>>>>>>> +    <simple-method method-name="findCreateItemIssuance"  
>>>>>>>>> short-description="Find Create ItemIssuance - meant to be  
>>>>>>>>> called in-line">
>>>>>>>>> +        <!-- If a non-sales order find ItemIssuance for  
>>>>>>>>> orderItemSeqId-shimentItemSeqId-shipGroupSeqId pair, update  
>>>>>>>>> it and return -->
>>>>>>>>> +        <if-compare field="orderHeader.orderTypeId"  
>>>>>>>>> operator="not-equals" value="SALES_ORDER">
>>>>>>>>> +            <entity-and list="itemIssuances" entity- 
>>>>>>>>> name="ItemIssuance">
>>>>>>>>> +                <field-map field-name="orderId" from- 
>>>>>>>>> field="orderItem.orderId"/>
>>>>>>>>> +                <field-map field-name="orderItemSeqId" from- 
>>>>>>>>> field="orderItem.orderItemSeqId"/>
>>>>>>>>> +                <field-map field-name="shipmentId" from- 
>>>>>>>>> field="shipmentItem.shipmentId"/>
>>>>>>>>> +                <field-map field-name="shipmentItemSeqId"  
>>>>>>>>> from-field="shipmentItem.shipmentItemSeqId"/>
>>>>>>>>> +                <field-map field-name="shipGroupSeqId" from- 
>>>>>>>>> field="orderItemShipGroupAssoc.shipGroupSeqId"/>
>>>>>>>>> +                <order-by field-name="-issuedDateTime"/>
>>>>>>>>> +            </entity-and>
>>>>>>>>> +            <if-not-empty field="itemIssuances">
>>>>>>>>> +                <first-from-list entry="itemIssuance"  
>>>>>>>>> list="itemIssuances"/>
>>>>>>>>> +                <set field="itemIssuance.quantity" value="$ 
>>>>>>>>> {itemIssuance.quantity + parameters.quantity}"  
>>>>>>>>> type="BigDecimal"/>
>>>>>>>>> +                <store-value value-field="itemIssuance"/>
>>>>>>>>> +                <set field="itemIssuanceId" from- 
>>>>>>>>> field="itemIssuance.itemIssuanceId"/>
>>>>>>>>> +                <field-to-result field="itemIssuanceId"/>
>>>>>>>>> +                <return/>
>>>>>>>>> +            </if-not-empty>
>>>>>>>>> +        </if-compare>
>>>>>>>>> +                 <!-- create the ItemIssuance -->
>>>>>>>>>     <set from-field="parameters.quantity"  
>>>>>>>>> field="itemIssuanceCreate.quantity"/>
>>>>>>>>>     <set from-field="shipmentItem.shipmentId"  
>>>>>>>>> field="itemIssuanceCreate.shipmentId"/>
>>>>>>>>> @@ -557,4 +577,14 @@
>>>>>>>>>     </calculate>
>>>>>>>>>     <call-service service-name="createInventoryItemDetail"  
>>>>>>>>> in-map-name="createDetailMap"/>
>>>>>>>>> </simple-method>
>>>>>>>>> +    <simple-method method- 
>>>>>>>>> name="getTotalIssuedQuantityForOrderItem" short- 
>>>>>>>>> description="Computes the total issued quantity for an order  
>>>>>>>>> item">
>>>>>>>>> +        <set field="totalIssuedQuantity" type="BigDecimal"  
>>>>>>>>> value="0"/>
>>>>>>>>> +        <entity-and list="allItemIssuances" entity- 
>>>>>>>>> name="ItemIssuance">
>>>>>>>>> +            <field-map field-name="orderId" from- 
>>>>>>>>> field="orderItem.orderId"/>
>>>>>>>>> +            <field-map field-name="orderItemSeqId" from- 
>>>>>>>>> field="orderItem.orderItemSeqId"/>
>>>>>>>>> +        </entity-and>
>>>>>>>>> +        <iterate entry="itemIssuance"  
>>>>>>>>> list="allItemIssuances">
>>>>>>>>> +            <set field="totalIssuedQuantity" value="$ 
>>>>>>>>> {totalIssuedQuantity + itemIssuance.quantity}"  
>>>>>>>>> type="BigDecimal"/>
>>>>>>>>> +        </iterate>
>>>>>>>>> +    </simple-method>
>>>>>>>>> </simple-methods>
>>>>>>>>> Modified: ofbiz/trunk/applications/product/script/org/ofbiz/ 
>>>>>>>>> shipment/receipt/ShipmentReceiptServices.xml
>>>>>>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/shipment/receipt/ShipmentReceiptServices.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>>>>  <http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/shipment/receipt/ShipmentReceiptServices.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>>>> >
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> ==============================================================
>>>>>>>>> --- ofbiz/trunk/applications/product/script/org/ofbiz/ 
>>>>>>>>> shipment/receipt/ShipmentReceiptServices.xml (original)
>>>>>>>>> +++ ofbiz/trunk/applications/product/script/org/ofbiz/ 
>>>>>>>>> shipment/receipt/ShipmentReceiptServices.xml Thu Jun 18  
>>>>>>>>> 10:48:09 2009
>>>>>>>>> @@ -313,25 +313,155 @@
>>>>>>>>>         </if-compare>
>>>>>>>>>     </if-compare>
>>>>>>>>> </simple-method>
>>>>>>>>> +    +    <simple-method method- 
>>>>>>>>> name="issueOrderItemToShipmentAndReceiveAgainstPO" short- 
>>>>>>>>> description="Issues order item quantity specified to the  
>>>>>>>>> shipment, then receives inventory for that item and quantity">
>>>>>>>>> +        <set value="Issue OrderItem to Shipment and Receive  
>>>>>>>>> against PO" field="operationName"/>
>>>>>>>>> +        <check-permission permission="FACILITY"  
>>>>>>>>> action="_CREATE">
>>>>>>>>> +            <fail-message message="Security Error: to run $ 
>>>>>>>>> {operationName} you must have the FACILITY_CREATE or  
>>>>>>>>> FACILITY_ADMIN permission"/>
>>>>>>>>> +        </check-permission>
>>>>>>>>> +        <check-permission permission="FACILITY"  
>>>>>>>>> action="_UPDATE">
>>>>>>>>> +            <fail-message message="Security Error: to run $ 
>>>>>>>>> {operationName} you must have the FACILITY_UPDATE or  
>>>>>>>>> FACILITY_ADMIN permission"/>
>>>>>>>>> +        </check-permission>
>>>>>>>>> +        <call-simple-method method- 
>>>>>>>>> name="checkCanChangeShipmentStatusPacked" xml- 
>>>>>>>>> resource="component://product/script/org/ofbiz/shipment/ 
>>>>>>>>> shipment/ShipmentServices.xml"/>
>>>>>>>>> -    <simple-method method-name="updatePoOnReceiveInventory"  
>>>>>>>>> short-description="Update order items if quantity received  
>>>>>>>>> is higher than quantity on purchase order">
>>>>>>>>> -        <set field="quantityAccepted" from- 
>>>>>>>>> field="parameters.quantityAccepted" type="BigDecimal"/>
>>>>>>>>> -        <entity-one entity-name="OrderItem" value- 
>>>>>>>>> field="orderItem"/>
>>>>>>>>> -        <if-compare-field field="orderItem.quantity"  
>>>>>>>>> operator="less" to-field="quantityAccepted" type="BigDecimal">
>>>>>>>>> -            <set field="orderItem.quantity" from- 
>>>>>>>>> field="quantityAccepted"/>
>>>>>>>>> -            <store-value  value-field="orderItem"/>
>>>>>>>>> -        </if-compare-field>
>>>>>>>>> -        <entity-and entity-name="ItemIssuance"  
>>>>>>>>> list="itemIssuances">
>>>>>>>>> -            <field-map field-name="orderId" from- 
>>>>>>>>> field="parameters.orderId"/>
>>>>>>>>> -            <field-map field-name="orderItemSeqId" from- 
>>>>>>>>> field="parameters.orderItemSeqId"/>
>>>>>>>>> -        </entity-and>
>>>>>>>>> -        <first-from-list list="itemIssuances"  
>>>>>>>>> entry="itemIssuance"/>
>>>>>>>>> -        <if-not-empty field="itemIssuance">
>>>>>>>>> -            <if-compare-field  
>>>>>>>>> field="itemIssuance.quantity"  operator="less" to- 
>>>>>>>>> field="quantityAccepted" type="BigDecimal">
>>>>>>>>> -                <set field="itemIssuance.quantity" from- 
>>>>>>>>> field="quantityAccepted"/>
>>>>>>>>> -                <set-service-fields service- 
>>>>>>>>> name="updateItemIssuance" map="itemIssuance" to- 
>>>>>>>>> map="updateItemIssuanceMap"/>
>>>>>>>>> -                <call-service service- 
>>>>>>>>> name="updateItemIssuance" in-map- 
>>>>>>>>> name="updateItemIssuanceMap"/>
>>>>>>>>> +        <!-- get orderItem -->
>>>>>>>>> +        <entity-one entity-name="OrderItem" value- 
>>>>>>>>> field="orderItem" auto-field-map="true"/>
>>>>>>>>> +        <!-- get orderItemShipGroupAssoc -->
>>>>>>>>> +        <entity-one entity-name="OrderItemShipGroupAssoc"  
>>>>>>>>> value-field="orderItemShipGroupAssoc" auto-field-map="true"/>
>>>>>>>>> +        <!-- get shipment -->
>>>>>>>>> +        <entity-one entity-name="Shipment" value- 
>>>>>>>>> field="shipment" auto-field-map="true"/>
>>>>>>>>> +        +        <!-- try to find an existing shipmentItem  
>>>>>>>>> and attach to it, if none found create a new shipmentItem -->
>>>>>>>>> +        <!-- if there is NO productId on the orderItem,  
>>>>>>>>> ALWAYS create a new shipmentItem -->
>>>>>>>>> +        <if-not-empty field="orderItem.productId">
>>>>>>>>> +            <entity-condition entity-name="ShipmentItem"  
>>>>>>>>> list="shipmentItems">
>>>>>>>>> +                <condition-list combine="and">
>>>>>>>>> +                    <condition-expr field-name="productId"  
>>>>>>>>> from-field="orderItem.productId"/>
>>>>>>>>> +                    <condition-expr field-name="shipmentId"  
>>>>>>>>> from-field="shipment.shipmentId"/>
>>>>>>>>> +                    <condition-expr field- 
>>>>>>>>> name="shipmentItemSeqId" from- 
>>>>>>>>> field="parameters.shipmentItemSeqId" ignore-if-empty="true"/>
>>>>>>>>> +                </condition-list>
>>>>>>>>> +                <order-by field-name="shipmentItemSeqId"/>
>>>>>>>>> +            </entity-condition>
>>>>>>>>> +            <first-from-list entry="shipmentItem"  
>>>>>>>>> list="shipmentItems"/>
>>>>>>>>> +        </if-not-empty>
>>>>>>>>> +
>>>>>>>>> +        <if-empty field="shipmentItem">
>>>>>>>>> +            <set from-field="orderItem.productId"  
>>>>>>>>> field="shipmentItemCreate.productId"/>
>>>>>>>>> +            <set from-field="parameters.shipmentId"  
>>>>>>>>> field="shipmentItemCreate.shipmentId"/>
>>>>>>>>> +            <set from-field="parameters.quantity"  
>>>>>>>>> field="shipmentItemCreate.quantity"/>
>>>>>>>>> +            <call-service service-name="createShipmentItem"  
>>>>>>>>> in-map-name="shipmentItemCreate">
>>>>>>>>> +                <result-to-field result- 
>>>>>>>>> name="shipmentItemSeqId"  
>>>>>>>>> field="shipmentItemLookupPk.shipmentItemSeqId"/>
>>>>>>>>> +            </call-service>
>>>>>>>>> +            <set from-field="parameters.shipmentId"  
>>>>>>>>> field="shipmentItemLookupPk.shipmentId"/>
>>>>>>>>> +            <find-by-primary-key entity-name="ShipmentItem"  
>>>>>>>>> map="shipmentItemLookupPk" value-field="shipmentItem"/>
>>>>>>>>> +            +            <!-- Create ItemIssuance for this  
>>>>>>>>> ShipmentItem -->
>>>>>>>>> +            <set from-field="parameters.quantity"  
>>>>>>>>> field="itemIssuanceCreate.quantity"/>
>>>>>>>>> +            <set from-field="shipmentItem.shipmentId"  
>>>>>>>>> field="itemIssuanceCreate.shipmentId"/>
>>>>>>>>> +            <set from- 
>>>>>>>>> field="shipmentItem.shipmentItemSeqId"  
>>>>>>>>> field="itemIssuanceCreate.shipmentItemSeqId"/>
>>>>>>>>> +            <set from-field="orderItem.orderId"  
>>>>>>>>> field="itemIssuanceCreate.orderId"/>
>>>>>>>>> +            <set from-field="orderItem.orderItemSeqId"  
>>>>>>>>> field="itemIssuanceCreate.orderItemSeqId"/>
>>>>>>>>> +            +            <if-not-empty  
>>>>>>>>> field="orderItemShipGroupAssoc">
>>>>>>>>> +                <!-- If we have a ShipGroup Assoc for this  
>>>>>>>>> Item to focus on, set that; this is mostly the case for  
>>>>>>>>> purchase orders and such -->
>>>>>>>>> +                <set from- 
>>>>>>>>> field="orderItemShipGroupAssoc.shipGroupSeqId"  
>>>>>>>>> field="itemIssuanceCreate.shipGroupSeqId"/>
>>>>>>>>> +            </if-not-empty>
>>>>>>>>> +
>>>>>>>>> +            <set from-field="userLogin.userLoginId"  
>>>>>>>>> field="itemIssuanceCreate.issuedByUserLoginId"/>
>>>>>>>>> +            <call-service service-name="createItemIssuance"  
>>>>>>>>> in-map-name="itemIssuanceCreate">
>>>>>>>>> +                <result-to-field result- 
>>>>>>>>> name="itemIssuanceId"/>
>>>>>>>>> +            </call-service>
>>>>>>>>> +        <else>
>>>>>>>>> +            <call-simple-method method- 
>>>>>>>>> name="getTotalIssuedQuantityForOrderItem" xml- 
>>>>>>>>> resource="component://product/script/org/ofbiz/shipment/ 
>>>>>>>>> issuance/IssuanceServices.xml"/>
>>>>>>>>> +            <call-simple-method method- 
>>>>>>>>> name="getReceivedQuantityForOrderItem"/>
>>>>>>>>> +            <set field="receivedQuantity" value="$ 
>>>>>>>>> {receivedQuantity + parameters.quantity}" type="BigDecimal"/>
>>>>>>>>> +            <if-compare-field field="totalIssuedQuantity"  
>>>>>>>>> operator="less" to-field="receivedQuantity" type="BigDecimal">
>>>>>>>>> +                <set field="quantityToAdd" value="$ 
>>>>>>>>> {receivedQuantity - totalIssuedQuantity}" type="BigDecimal"/>
>>>>>>>>> +                <set field="shipmentItem.quantity" value="$ 
>>>>>>>>> {shipmentItem.quantity + quantityToAdd}" type="BigDecimal"/>
>>>>>>>>> +                <store-value value-field="shipmentItem"/>
>>>>>>>>> +                <set field="shipmentItemSeqId" from- 
>>>>>>>>> field="shipmentItem.shipmentItemSeqId"/>
>>>>>>>>> +                +                <entity-and  
>>>>>>>>> list="itemIssuances" entity-name="ItemIssuance">
>>>>>>>>> +                    <field-map field-name="orderId" from- 
>>>>>>>>> field="orderItem.orderId"/>
>>>>>>>>> +                    <field-map field-name="orderItemSeqId"  
>>>>>>>>> from-field="orderItem.orderItemSeqId"/>
>>>>>>>>> +                    <field-map field-name="shipmentId" from- 
>>>>>>>>> field="shipmentItem.shipmentId"/>
>>>>>>>>> +                    <field-map field- 
>>>>>>>>> name="shipmentItemSeqId" from- 
>>>>>>>>> field="shipmentItem.shipmentItemSeqId"/>
>>>>>>>>> +                    <field-map field-name="shipGroupSeqId"  
>>>>>>>>> from-field="orderItemShipGroupAssoc.shipGroupSeqId"/>
>>>>>>>>> +                    <order-by field-name="-issuedDateTime"/>
>>>>>>>>> +                </entity-and>
>>>>>>>>> +                <first-from-list entry="itemIssuance"  
>>>>>>>>> list="itemIssuances"/>
>>>>>>>>> +                <set field="itemIssuance.quantity" value="$ 
>>>>>>>>> {itemIssuance.quantity + quantityToAdd}" type="BigDecimal"/>
>>>>>>>>> +                <store-value value-field="itemIssuance"/>
>>>>>>>>> +                <set field="itemIssuanceId" from- 
>>>>>>>>> field="itemIssuance.itemIssuanceId"/>
>>>>>>>>>         </if-compare-field>
>>>>>>>>> +        </else>
>>>>>>>>> +        </if-empty>
>>>>>>>>> +
>>>>>>>>> +        <call-simple-method method- 
>>>>>>>>> name="associateIssueRoles" xml-resource="component://product/ 
>>>>>>>>> script/org/ofbiz/shipment/issuance/IssuanceServices.xml"/>
>>>>>>>>> +
>>>>>>>>> +        <set-service-fields service- 
>>>>>>>>> name="receiveInventoryProduct" map="parameters" to- 
>>>>>>>>> map="receiveInventoryProductCtx"/>
>>>>>>>>> +        <set  
>>>>>>>>> field="receiveInventoryProductCtx.shipmentItemSeqId" from- 
>>>>>>>>> field="shipmentItemSeqId"/>
>>>>>>>>> +        <set  
>>>>>>>>> field="receiveInventoryProductCtx.itemIssuanceId" from- 
>>>>>>>>> field="itemIssuanceId"/>
>>>>>>>>> +        <call-service service- 
>>>>>>>>> name="receiveInventoryProduct" in-map- 
>>>>>>>>> name="receiveInventoryProductCtx">
>>>>>>>>> +            <result-to-result result-name="inventoryItemId"/>
>>>>>>>>> +        </call-service>
>>>>>>>>> +    </simple-method>
>>>>>>>>> +    +    <simple-method method- 
>>>>>>>>> name="getReceivedQuantityForOrderItem" short- 
>>>>>>>>> description="Computes the till now received quantity from  
>>>>>>>>> all ShipmentReceipts">
>>>>>>>>> +        <set field="receivedQuantity" type="BigDecimal"  
>>>>>>>>> value="0"/>
>>>>>>>>> +        <entity-and list="shipmentReceipts" entity- 
>>>>>>>>> name="ShipmentReceipt">
>>>>>>>>> +            <field-map field-name="orderId" from- 
>>>>>>>>> field="orderItem.orderId"/>
>>>>>>>>> +            <field-map field-name="orderItemSeqId" from- 
>>>>>>>>> field="orderItem.orderItemSeqId"/>
>>>>>>>>> +        </entity-and>
>>>>>>>>> +        <iterate entry="shipmentReceipt"  
>>>>>>>>> list="shipmentReceipts">
>>>>>>>>> +            <set field="receivedQuantity" value="$ 
>>>>>>>>> {receivedQuantity + shipmentReceipt.quantityAccepted}"  
>>>>>>>>> type="BigDecimal"/>
>>>>>>>>> +        </iterate>
>>>>>>>>> +    </simple-method>
>>>>>>>>> +
>>>>>>>>> +    <simple-method method- 
>>>>>>>>> name="updateIssuanceShipmentAndPoOnReceiveInventory" short- 
>>>>>>>>> description="Update issuance, shipment and order items if  
>>>>>>>>> quantity received is higher than quantity on purchase order">
>>>>>>>>> +        <entity-one value-field="orderItem" entity- 
>>>>>>>>> name="OrderItem"/>
>>>>>>>>> +        <set field="unitCost" from- 
>>>>>>>>> field="parameters.unitCost" type="BigDecimal"/>
>>>>>>>>> +        <if-compare-field field="unitCost" operator="not- 
>>>>>>>>> equals" to-field="orderItem.unitPrice">
>>>>>>>>> +            <set field="orderItem.unitPrice" from- 
>>>>>>>>> field="unitCost"/>
>>>>>>>>> +            <store-value value-field="orderItem"/>
>>>>>>>>> +        </if-compare-field>
>>>>>>>>> +        <call-simple-method method- 
>>>>>>>>> name="getReceivedQuantityForOrderItem"/>
>>>>>>>>> +        <if-compare-field field="orderItem.quantity"  
>>>>>>>>> operator="less" to-field="receivedQuantity" type="BigDecimal">
>>>>>>>>> +            <set field="orderItem.quantity" from- 
>>>>>>>>> field="receivedQuantity"/>
>>>>>>>>> +            <store-value value-field="orderItem"/>
>>>>>>>>> +        </if-compare-field>
>>>>>>>>> +        <if-not-empty field="parameters.shipmentId">
>>>>>>>>> +            <if-not-empty field="orderItem.productId">
>>>>>>>>> +                <call-simple-method method- 
>>>>>>>>> name="getTotalIssuedQuantityForOrderItem" xml- 
>>>>>>>>> resource="component://product/script/org/ofbiz/shipment/ 
>>>>>>>>> issuance/IssuanceServices.xml"/>
>>>>>>>>> +                <if-compare-field  
>>>>>>>>> field="totalIssuedQuantity" operator="less" to- 
>>>>>>>>> field="receivedQuantity" type="BigDecimal">
>>>>>>>>> +                    <set field="quantityToAdd" value="$ 
>>>>>>>>> {receivedQuantity - totalIssuedQuantity}" type="BigDecimal"/>
>>>>>>>>> +                    <entity-condition entity- 
>>>>>>>>> name="ShipmentItem" list="shipmentItems">
>>>>>>>>> +                        <condition-list combine="and">
>>>>>>>>> +                            <condition-expr field- 
>>>>>>>>> name="productId" from-field="orderItem.productId"/>
>>>>>>>>> +                            <condition-expr field- 
>>>>>>>>> name="shipmentId" from-field="parameters.shipmentId"/>
>>>>>>>>> +                            <condition-expr field- 
>>>>>>>>> name="shipmentItemSeqId" from- 
>>>>>>>>> field="parameters.shipmentItemSeqId" ignore-if-empty="true"/>
>>>>>>>>> +                        </condition-list>
>>>>>>>>> +                        <order-by field- 
>>>>>>>>> name="shipmentItemSeqId"/>
>>>>>>>>> +                    </entity-condition>
>>>>>>>>> +                    <first-from-list entry="shipmentItem"  
>>>>>>>>> list="shipmentItems"/>
>>>>>>>>> +                    <set field="shipmentItem.quantity"  
>>>>>>>>> value="${shipmentItem.quantity + quantityToAdd}"  
>>>>>>>>> type="BigDecimal"/>
>>>>>>>>> +                    <store-value value-field="shipmentItem"/>
>>>>>>>>> +                    +                    <entity-and  
>>>>>>>>> list="itemIssuances" entity-name="ItemIssuance">
>>>>>>>>> +                        <field-map field-name="orderId"  
>>>>>>>>> from-field="parameters.orderId"/>
>>>>>>>>> +                        <field-map field- 
>>>>>>>>> name="orderItemSeqId" from-field="parameters.orderItemSeqId"/>
>>>>>>>>> +                        <field-map field-name="shipmentId"  
>>>>>>>>> from-field="parameters.shipmentId"/>
>>>>>>>>> +                        <field-map field- 
>>>>>>>>> name="shipmentItemSeqId" from- 
>>>>>>>>> field="shipmentItem.shipmentItemSeqId"/>
>>>>>>>>> +                        <order-by field-name="- 
>>>>>>>>> issuedDateTime"/>
>>>>>>>>> +                    </entity-and>
>>>>>>>>> +                    <first-from-list entry="itemIssuance"  
>>>>>>>>> list="itemIssuances"/>
>>>>>>>>> +                    <set field="itemIssuance.quantity"  
>>>>>>>>> value="${itemIssuance.quantity + quantityToAdd}"  
>>>>>>>>> type="BigDecimal"/>
>>>>>>>>> +                    <store-value value-field="itemIssuance"/>
>>>>>>>>> +                    +                    <set  
>>>>>>>>> field="itemIssuanceId" from- 
>>>>>>>>> field="itemIssuance.itemIssuanceId"/>
>>>>>>>>> +                    <call-simple-method method- 
>>>>>>>>> name="associateIssueRoles" xml-resource="component://product/ 
>>>>>>>>> script/org/ofbiz/shipment/issuance/IssuanceServices.xml"/>
>>>>>>>>> +                </if-compare-field>
>>>>>>>>> +            </if-not-empty>
>>>>>>>>>     </if-not-empty>
>>>>>>>>> </simple-method>
>>>>>>>>> Modified: ofbiz/trunk/applications/product/servicedef/ 
>>>>>>>>> secas.xml
>>>>>>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/servicedef/secas.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>>>>  <http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/servicedef/secas.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>>>> >
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> ==============================================================
>>>>>>>>> --- ofbiz/trunk/applications/product/servicedef/secas.xml  
>>>>>>>>> (original)
>>>>>>>>> +++ ofbiz/trunk/applications/product/servicedef/secas.xml  
>>>>>>>>> Thu Jun 18 10:48:09 2009
>>>>>>>>> @@ -117,4 +117,10 @@
>>>>>>>>>     <condition field-name="orderIdList" operator="is-not- 
>>>>>>>>> empty"/>
>>>>>>>>>     <action service="convertPickOrderIdListToHeaders"  
>>>>>>>>> mode="sync"/>
>>>>>>>>> </eca>
>>>>>>>>> +    +    <eca service="receiveInventoryProduct"  
>>>>>>>>> event="commit">
>>>>>>>>> +        <condition field-name="facilityId" operator="is-not- 
>>>>>>>>> empty"/>
>>>>>>>>> +        <condition field-name="orderId" operator="is-not- 
>>>>>>>>> empty"/>
>>>>>>>>> +        <action  
>>>>>>>>> service="updateIssuanceShipmentAndPoOnReceiveInventory"  
>>>>>>>>> mode="sync"/>
>>>>>>>>> +    </eca>
>>>>>>>>> </service-eca>
>>>>>>>>> Modified: ofbiz/trunk/applications/product/servicedef/ 
>>>>>>>>> services_shipment.xml
>>>>>>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/servicedef/services_shipment.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>>>>  <http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/servicedef/services_shipment.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>>>> >
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> = 
>>>>>>>>> ==============================================================
>>>>>>>>> --- ofbiz/trunk/applications/product/servicedef/ 
>>>>>>>>> services_shipment.xml (original)
>>>>>>>>> +++ ofbiz/trunk/applications/product/servicedef/ 
>>>>>>>>> services_shipment.xml Thu Jun 18 10:48:09 2009
>>>>>>>>> @@ -709,12 +709,11 @@
>>>>>>>>>     <override name="facilityId" optional="false"/>
>>>>>>>>> </service>
>>>>>>>>> -    <service  
>>>>>>>>> name="issueOrderItemToShipmentAndReceiveAgainstPO"  
>>>>>>>>> engine="group" auth="true">
>>>>>>>>> +    <service  
>>>>>>>>> name="issueOrderItemToShipmentAndReceiveAgainstPO"  
>>>>>>>>> engine="simple" transaction-timeout="600"
>>>>>>>>> +            location="component://product/script/org/ofbiz/ 
>>>>>>>>> shipment/receipt/ShipmentReceiptServices.xml"  
>>>>>>>>> invoke="issueOrderItemToShipmentAndReceiveAgainstPO"  
>>>>>>>>> auth="true">
>>>>>>>>>     <description>Issues order item quantity specified to the  
>>>>>>>>> shipment, then receives inventory for that item and  
>>>>>>>>> quantity</description>
>>>>>>>>> -        <group>
>>>>>>>>> -            <invoke name="issueOrderItemToShipment" result- 
>>>>>>>>> to-context="true"/>
>>>>>>>>> -            <invoke name="receiveInventoryProduct" result- 
>>>>>>>>> to-context="true"/>
>>>>>>>>> -        </group>
>>>>>>>>> +        <implements service="issueOrderItemToShipment"/>
>>>>>>>>> +        <implements service="receiveInventoryProduct"/>
>>>>>>>>> </service>
>>>>>>>>>  <service name="quickReceiveReturn" engine="simple"
>>>>>>>>> @@ -875,4 +874,14 @@
>>>>>>>>>     <attribute name="body" type="String" mode="OUT"  
>>>>>>>>> optional="true"/>
>>>>>>>>>     <attribute name="messageWrapper"  
>>>>>>>>> type="org.ofbiz.service.mail.MimeMessageWrapper" mode="OUT"/>
>>>>>>>>> </service>
>>>>>>>>> +    <service  
>>>>>>>>> name="updateIssuanceShipmentAndPoOnReceiveInventory"  
>>>>>>>>> engine="simple"
>>>>>>>>> +            location="component://product/script/org/ofbiz/ 
>>>>>>>>> shipment/receipt/ShipmentReceiptServices.xml"  
>>>>>>>>> invoke="updateIssuanceShipmentAndPoOnReceiveInventory">
>>>>>>>>> +        <description>Update issuance, shipment and order  
>>>>>>>>> items if quantity received is higher than quantity on  
>>>>>>>>> purchase order</description>
>>>>>>>>> +        <attribute name="orderId" type="String" mode="IN"  
>>>>>>>>> optional="false"/>
>>>>>>>>> +        <attribute name="orderItemSeqId" type="String"  
>>>>>>>>> mode="IN" optional="false"/>
>>>>>>>>> +        <attribute name="quantityAccepted"   
>>>>>>>>> type="BigDecimal" mode="IN" optional="false"/>
>>>>>>>>> +        <attribute name="shipmentId" type="String"  
>>>>>>>>> mode="IN" optional="true"/>
>>>>>>>>> +        <attribute name="shipmentItemSeqId" type="String"  
>>>>>>>>> mode="IN" optional="true"/>
>>>>>>>>> +        <attribute name="unitCost" type="String" mode="IN"  
>>>>>>>>> optional="false"/>
>>>>>>>>> +    </service>
>>>>>>>>> </services>
>>>>>>>
>>>>
>>>
>>
>


Re: svn commit: r786013 - in /ofbiz/trunk/applications: order/servicedef/ product/script/org/ofbiz/shipment/issuance/ product/script/org/ofbiz/shipment/receipt/ product/servicedef/

Posted by Scott Gray <sc...@hotwaxmedia.com>.
Ha sorry, I thought this was that other thread about JUEL that we had  
going yesterday :-) sorry

But while we're on the topic please do keep in mind that doubles  
should not used in place of BigDecimals while doing calculations.  A  
$bigdecimal version sounds fine but I'm getting quite curious to know  
how JUEL actually does it's calculations, there is a chance it could  
be converting to doubles internally which would be a pain.

Regards
Scott

On 11/09/2009, at 10:37 PM, Mridul Pathak wrote:

> Hi Scott,
>
>     This is related to UEL support for variable name modifiers as  
> documented on http://docs.ofbiz.org/x/Hhk.  The purpose here is that  
> at the time of evaluating UEL expressions, if a value of a variable  
> is found null, the variable name modifier will return a 0 value  
> based on the type of the modifier, so that expression is evaluated  
> successfully.  This is something already supported but wasn't  
> working for values accessed via a key in a Map, so I tried to fix it  
> up.
>
>     Other variable name modifiers are $string, $boolean, $integer,  
> $long, $null.  Currently $double can be used for BigDecimal  
> calculations to return 0 for a missing variable.  May be we can add  
> a variable name modifier $bigdecimal (which returns a  
> BigDecimal.ZERO for missing variable of type BigDecimal) to  
> explicitly support BigDecimal calculations.  If it sounds  
> reasonable, I can provide another patch for this support.
>
> --
> Thanks,
> Mridul Pathak
>
> On 11-Sep-09, at 3:36 PM, Scott Gray wrote:
>
>> Hi Mridul,
>>
>> I'm not sure I understand, are you proposing that we affix $double  
>> to the end of all our values?  Having spent many many hours  
>> removing the use of doubles from OFBiz I would be quite a bit  
>> against that.
>>
>> Regards
>> Scott
>>
>> On 11/09/2009, at 9:57 PM, Mridul Pathak wrote:
>>
>>> Hi Adrian,
>>>
>>>     I have given a try to fix this bug and uploaded the patch on  
>>> jira issue OFBIZ-2928.  It would be great if you can have a look  
>>> at the patch.
>>>
>>> --
>>> Thanks,
>>> Mridul Pathak
>>>
>>> On 18-Jun-09, at 10:34 PM, Adrian Crum wrote:
>>>
>>>> Thank you for the information. That is definitely a bug that  
>>>> should be fixed. I will look into it as soon as I have time.
>>>>
>>>> -Adrian
>>>>
>>>> Mridul Pathak wrote:
>>>>> Hi Adrian,
>>>>>    I tried using variable name modifier as suggested by you, but  
>>>>> it doesn't seem to be working.  I am getting following warning  
>>>>> on terminal: *Code*: <set field="itemIssuance.quantity" value="$ 
>>>>> {parameters.quantity$double + itemIssuance.quantity$double}"  
>>>>> type="BigDecimal"/>
>>>>> *Warning*: "2009-06-18 22:02:59,475 (http-0.0.0.0-8443-1)  
>>>>> [      GenericEntity.java:704:WARN ] The field name (or key)  
>>>>> [quantity$double] is not valid for entity [ItemIssuance],  
>>>>> printing IllegalArgumentException instead of throwing it because  
>>>>> Map interface specification does not allow throwing that  
>>>>> exception."
>>>>>   When I tried it following way, it worked correctly:
>>>>> *Code*:
>>>>> <set field="itemIssuanceQuantity" from- 
>>>>> field="itemIssuance.quantity" type="BigDecimal"/>
>>>>> <set field="thisQuantity" from-field="parameters.quantity"  
>>>>> type="BigDecimal"/>
>>>>> <set field="itemIssuance.quantity" value="${thisQuantity$double  
>>>>> + itemIssuanceQuantity$double}" type="BigDecimal"/>
>>>>>   I can do it the second way, but is it possible to make the  
>>>>> former code snippet work?
>>>>> --
>>>>> Thanks,
>>>>> Mridul Pathak
>>>>> On 18-Jun-09, at 8:12 PM, Mridul Pathak wrote:
>>>>>> Thanks Adrian for your useful comments, this will help me to  
>>>>>> make better use of UEL in future :).
>>>>>> Ashish, can you please reopen the Jira Issue OFBIZ-2619.  So  
>>>>>> that I can upload a patch with these improvements on the same  
>>>>>> issue.
>>>>>>
>>>>>> --
>>>>>> Thanks,
>>>>>> Mridul Pathak
>>>>>>
>>>>>> On 18-Jun-09, at 8:00 PM, Adrian Crum wrote:
>>>>>>
>>>>>>> It's good to see UEL expressions used to simplify simple  
>>>>>>> method code. One thing to watch out for though - UEL will  
>>>>>>> throw an exception if an expression variable doesn't exist.  
>>>>>>> OFBiz has a variable name modifier that can be used to avoid  
>>>>>>> that.
>>>>>>>
>>>>>>> For example:
>>>>>>>
>>>>>>> <set field="itemIssuance.quantity" value="$ 
>>>>>>> {itemIssuance.quantity + parameters.quantity}"  
>>>>>>> type="BigDecimal"/>
>>>>>>>
>>>>>>> would be better as:
>>>>>>>
>>>>>>> <set field="itemIssuance.quantity" value="$ 
>>>>>>> {itemIssuance.quantity$double + parameters.quantity$double}"  
>>>>>>> type="BigDecimal"/>
>>>>>>>
>>>>>>> For more information:
>>>>>>>
>>>>>>> http://docs.ofbiz.org/x/Hhk
>>>>>>>
>>>>>>> -Adrian
>>>>>>>
>>>>>>>
>>>>>>> ashish@apache.org <ma...@apache.org> wrote:
>>>>>>>> Author: ashish
>>>>>>>> Date: Thu Jun 18 10:48:09 2009
>>>>>>>> New Revision: 786013
>>>>>>>> URL: http://svn.apache.org/viewvc?rev=786013&view=rev <http://svn.apache.org/viewvc?rev=786013&view=rev 
>>>>>>>> >
>>>>>>>> Log:
>>>>>>>> Applied patch from jira issue OFBIZ-2619 (Issues with Receive  
>>>>>>>> PO functionality).
>>>>>>>> I have tested this patch extensively and now things looks  
>>>>>>>> more accurate.
>>>>>>>> I agree with the issues specified from Mridul in the jira  
>>>>>>>> issue.
>>>>>>>> Thanks Mridul for your contribution.
>>>>>>>> Modified:
>>>>>>>> ofbiz/trunk/applications/order/servicedef/secas.xml
>>>>>>>> ofbiz/trunk/applications/product/script/org/ofbiz/shipment/ 
>>>>>>>> issuance/IssuanceServices.xml
>>>>>>>> ofbiz/trunk/applications/product/script/org/ofbiz/shipment/ 
>>>>>>>> receipt/ShipmentReceiptServices.xml
>>>>>>>> ofbiz/trunk/applications/product/servicedef/secas.xml
>>>>>>>> ofbiz/trunk/applications/product/servicedef/ 
>>>>>>>> services_shipment.xml
>>>>>>>> Modified: ofbiz/trunk/applications/order/servicedef/secas.xml
>>>>>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/servicedef/secas.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>>>  <http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/servicedef/secas.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>>> >
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> ===============================================================
>>>>>>>> --- ofbiz/trunk/applications/order/servicedef/secas.xml  
>>>>>>>> (original)
>>>>>>>> +++ ofbiz/trunk/applications/order/servicedef/secas.xml Thu  
>>>>>>>> Jun 18 10:48:09 2009
>>>>>>>> @@ -52,7 +52,6 @@
>>>>>>>>      <condition field-name="facilityId" operator="is-not- 
>>>>>>>> empty"/>
>>>>>>>>      <condition field-name="orderId" operator="is-not-empty"/>
>>>>>>>>      <action service="addProductsBackToCategory" mode="sync"/>
>>>>>>>> -        <action service="updatePoOnReceiveInventory"  
>>>>>>>> mode="sync"/>
>>>>>>>>  </eca>
>>>>>>>>  <eca service="changeOrderItemStatus" event="commit">
>>>>>>>>      <condition field-name="statusId" operator="equals"  
>>>>>>>> value="ITEM_CANCELLED"/>
>>>>>>>> Modified: ofbiz/trunk/applications/product/script/org/ofbiz/ 
>>>>>>>> shipment/issuance/IssuanceServices.xml
>>>>>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/shipment/issuance/IssuanceServices.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>>>  <http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/shipment/issuance/IssuanceServices.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>>> >
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> ===============================================================
>>>>>>>> --- ofbiz/trunk/applications/product/script/org/ofbiz/ 
>>>>>>>> shipment/issuance/IssuanceServices.xml (original)
>>>>>>>> +++ ofbiz/trunk/applications/product/script/org/ofbiz/ 
>>>>>>>> shipment/issuance/IssuanceServices.xml Thu Jun 18 10:48:09 2009
>>>>>>>> @@ -126,7 +126,7 @@
>>>>>>>>      <entity-one entity-name="Shipment" value- 
>>>>>>>> field="shipment" auto-field-map="true"/>
>>>>>>>>       <call-simple-method method- 
>>>>>>>> name="findCreateIssueShipmentItem"/>
>>>>>>>> -        <call-simple-method method- 
>>>>>>>> name="callCreateItemIssuance"/>
>>>>>>>> +        <call-simple-method method- 
>>>>>>>> name="findCreateItemIssuance"/>
>>>>>>>>      <call-simple-method method-name="associateIssueRoles"/>
>>>>>>>>  </simple-method>
>>>>>>>> @@ -228,7 +228,7 @@
>>>>>>>>      </if-compare>
>>>>>>>>       <!--<call-simple-method method- 
>>>>>>>> name="findCreateIssueShipmentItem"/>-->
>>>>>>>> -        <call-simple-method method- 
>>>>>>>> name="callCreateItemIssuance"/>
>>>>>>>> +        <call-simple-method method- 
>>>>>>>> name="findCreateItemIssuance"/>
>>>>>>>>      <call-simple-method method-name="associateIssueRoles"/>
>>>>>>>>       <!-- decrement quantity still reserved -->
>>>>>>>> @@ -307,7 +307,27 @@
>>>>>>>>      </if-empty>
>>>>>>>>      <field-to-result field="shipmentItem.shipmentItemSeqId"  
>>>>>>>> result-name="shipmentItemSeqId"/>
>>>>>>>>  </simple-method>
>>>>>>>> -    <simple-method method-name="callCreateItemIssuance"  
>>>>>>>> short-description="Call Create ItemIssuance - meant to be  
>>>>>>>> called in-line">
>>>>>>>> +    <simple-method method-name="findCreateItemIssuance"  
>>>>>>>> short-description="Find Create ItemIssuance - meant to be  
>>>>>>>> called in-line">
>>>>>>>> +        <!-- If a non-sales order find ItemIssuance for  
>>>>>>>> orderItemSeqId-shimentItemSeqId-shipGroupSeqId pair, update  
>>>>>>>> it and return -->
>>>>>>>> +        <if-compare field="orderHeader.orderTypeId"  
>>>>>>>> operator="not-equals" value="SALES_ORDER">
>>>>>>>> +            <entity-and list="itemIssuances" entity- 
>>>>>>>> name="ItemIssuance">
>>>>>>>> +                <field-map field-name="orderId" from- 
>>>>>>>> field="orderItem.orderId"/>
>>>>>>>> +                <field-map field-name="orderItemSeqId" from- 
>>>>>>>> field="orderItem.orderItemSeqId"/>
>>>>>>>> +                <field-map field-name="shipmentId" from- 
>>>>>>>> field="shipmentItem.shipmentId"/>
>>>>>>>> +                <field-map field-name="shipmentItemSeqId"  
>>>>>>>> from-field="shipmentItem.shipmentItemSeqId"/>
>>>>>>>> +                <field-map field-name="shipGroupSeqId" from- 
>>>>>>>> field="orderItemShipGroupAssoc.shipGroupSeqId"/>
>>>>>>>> +                <order-by field-name="-issuedDateTime"/>
>>>>>>>> +            </entity-and>
>>>>>>>> +            <if-not-empty field="itemIssuances">
>>>>>>>> +                <first-from-list entry="itemIssuance"  
>>>>>>>> list="itemIssuances"/>
>>>>>>>> +                <set field="itemIssuance.quantity" value="$ 
>>>>>>>> {itemIssuance.quantity + parameters.quantity}"  
>>>>>>>> type="BigDecimal"/>
>>>>>>>> +                <store-value value-field="itemIssuance"/>
>>>>>>>> +                <set field="itemIssuanceId" from- 
>>>>>>>> field="itemIssuance.itemIssuanceId"/>
>>>>>>>> +                <field-to-result field="itemIssuanceId"/>
>>>>>>>> +                <return/>
>>>>>>>> +            </if-not-empty>
>>>>>>>> +        </if-compare>
>>>>>>>> +                 <!-- create the ItemIssuance -->
>>>>>>>>      <set from-field="parameters.quantity"  
>>>>>>>> field="itemIssuanceCreate.quantity"/>
>>>>>>>>      <set from-field="shipmentItem.shipmentId"  
>>>>>>>> field="itemIssuanceCreate.shipmentId"/>
>>>>>>>> @@ -557,4 +577,14 @@
>>>>>>>>      </calculate>
>>>>>>>>      <call-service service-name="createInventoryItemDetail"  
>>>>>>>> in-map-name="createDetailMap"/>
>>>>>>>>  </simple-method>
>>>>>>>> +    <simple-method method- 
>>>>>>>> name="getTotalIssuedQuantityForOrderItem" short- 
>>>>>>>> description="Computes the total issued quantity for an order  
>>>>>>>> item">
>>>>>>>> +        <set field="totalIssuedQuantity" type="BigDecimal"  
>>>>>>>> value="0"/>
>>>>>>>> +        <entity-and list="allItemIssuances" entity- 
>>>>>>>> name="ItemIssuance">
>>>>>>>> +            <field-map field-name="orderId" from- 
>>>>>>>> field="orderItem.orderId"/>
>>>>>>>> +            <field-map field-name="orderItemSeqId" from- 
>>>>>>>> field="orderItem.orderItemSeqId"/>
>>>>>>>> +        </entity-and>
>>>>>>>> +        <iterate entry="itemIssuance" list="allItemIssuances">
>>>>>>>> +            <set field="totalIssuedQuantity" value="$ 
>>>>>>>> {totalIssuedQuantity + itemIssuance.quantity}"  
>>>>>>>> type="BigDecimal"/>
>>>>>>>> +        </iterate>
>>>>>>>> +    </simple-method>
>>>>>>>> </simple-methods>
>>>>>>>> Modified: ofbiz/trunk/applications/product/script/org/ofbiz/ 
>>>>>>>> shipment/receipt/ShipmentReceiptServices.xml
>>>>>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/shipment/receipt/ShipmentReceiptServices.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>>>  <http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/shipment/receipt/ShipmentReceiptServices.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>>> >
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> ===============================================================
>>>>>>>> --- ofbiz/trunk/applications/product/script/org/ofbiz/ 
>>>>>>>> shipment/receipt/ShipmentReceiptServices.xml (original)
>>>>>>>> +++ ofbiz/trunk/applications/product/script/org/ofbiz/ 
>>>>>>>> shipment/receipt/ShipmentReceiptServices.xml Thu Jun 18  
>>>>>>>> 10:48:09 2009
>>>>>>>> @@ -313,25 +313,155 @@
>>>>>>>>          </if-compare>
>>>>>>>>      </if-compare>
>>>>>>>>  </simple-method>
>>>>>>>> +    +    <simple-method method- 
>>>>>>>> name="issueOrderItemToShipmentAndReceiveAgainstPO" short- 
>>>>>>>> description="Issues order item quantity specified to the  
>>>>>>>> shipment, then receives inventory for that item and quantity">
>>>>>>>> +        <set value="Issue OrderItem to Shipment and Receive  
>>>>>>>> against PO" field="operationName"/>
>>>>>>>> +        <check-permission permission="FACILITY"  
>>>>>>>> action="_CREATE">
>>>>>>>> +            <fail-message message="Security Error: to run $ 
>>>>>>>> {operationName} you must have the FACILITY_CREATE or  
>>>>>>>> FACILITY_ADMIN permission"/>
>>>>>>>> +        </check-permission>
>>>>>>>> +        <check-permission permission="FACILITY"  
>>>>>>>> action="_UPDATE">
>>>>>>>> +            <fail-message message="Security Error: to run $ 
>>>>>>>> {operationName} you must have the FACILITY_UPDATE or  
>>>>>>>> FACILITY_ADMIN permission"/>
>>>>>>>> +        </check-permission>
>>>>>>>> +        <call-simple-method method- 
>>>>>>>> name="checkCanChangeShipmentStatusPacked" xml- 
>>>>>>>> resource="component://product/script/org/ofbiz/shipment/ 
>>>>>>>> shipment/ShipmentServices.xml"/>
>>>>>>>> -    <simple-method method-name="updatePoOnReceiveInventory"  
>>>>>>>> short-description="Update order items if quantity received is  
>>>>>>>> higher than quantity on purchase order">
>>>>>>>> -        <set field="quantityAccepted" from- 
>>>>>>>> field="parameters.quantityAccepted" type="BigDecimal"/>
>>>>>>>> -        <entity-one entity-name="OrderItem" value- 
>>>>>>>> field="orderItem"/>
>>>>>>>> -        <if-compare-field field="orderItem.quantity"  
>>>>>>>> operator="less" to-field="quantityAccepted" type="BigDecimal">
>>>>>>>> -            <set field="orderItem.quantity" from- 
>>>>>>>> field="quantityAccepted"/>
>>>>>>>> -            <store-value  value-field="orderItem"/>
>>>>>>>> -        </if-compare-field>
>>>>>>>> -        <entity-and entity-name="ItemIssuance"  
>>>>>>>> list="itemIssuances">
>>>>>>>> -            <field-map field-name="orderId" from- 
>>>>>>>> field="parameters.orderId"/>
>>>>>>>> -            <field-map field-name="orderItemSeqId" from- 
>>>>>>>> field="parameters.orderItemSeqId"/>
>>>>>>>> -        </entity-and>
>>>>>>>> -        <first-from-list list="itemIssuances"  
>>>>>>>> entry="itemIssuance"/>
>>>>>>>> -        <if-not-empty field="itemIssuance">
>>>>>>>> -            <if-compare-field field="itemIssuance.quantity"   
>>>>>>>> operator="less" to-field="quantityAccepted" type="BigDecimal">
>>>>>>>> -                <set field="itemIssuance.quantity" from- 
>>>>>>>> field="quantityAccepted"/>
>>>>>>>> -                <set-service-fields service- 
>>>>>>>> name="updateItemIssuance" map="itemIssuance" to- 
>>>>>>>> map="updateItemIssuanceMap"/>
>>>>>>>> -                <call-service service- 
>>>>>>>> name="updateItemIssuance" in-map-name="updateItemIssuanceMap"/>
>>>>>>>> +        <!-- get orderItem -->
>>>>>>>> +        <entity-one entity-name="OrderItem" value- 
>>>>>>>> field="orderItem" auto-field-map="true"/>
>>>>>>>> +        <!-- get orderItemShipGroupAssoc -->
>>>>>>>> +        <entity-one entity-name="OrderItemShipGroupAssoc"  
>>>>>>>> value-field="orderItemShipGroupAssoc" auto-field-map="true"/>
>>>>>>>> +        <!-- get shipment -->
>>>>>>>> +        <entity-one entity-name="Shipment" value- 
>>>>>>>> field="shipment" auto-field-map="true"/>
>>>>>>>> +        +        <!-- try to find an existing shipmentItem  
>>>>>>>> and attach to it, if none found create a new shipmentItem -->
>>>>>>>> +        <!-- if there is NO productId on the orderItem,  
>>>>>>>> ALWAYS create a new shipmentItem -->
>>>>>>>> +        <if-not-empty field="orderItem.productId">
>>>>>>>> +            <entity-condition entity-name="ShipmentItem"  
>>>>>>>> list="shipmentItems">
>>>>>>>> +                <condition-list combine="and">
>>>>>>>> +                    <condition-expr field-name="productId"  
>>>>>>>> from-field="orderItem.productId"/>
>>>>>>>> +                    <condition-expr field-name="shipmentId"  
>>>>>>>> from-field="shipment.shipmentId"/>
>>>>>>>> +                    <condition-expr field- 
>>>>>>>> name="shipmentItemSeqId" from- 
>>>>>>>> field="parameters.shipmentItemSeqId" ignore-if-empty="true"/>
>>>>>>>> +                </condition-list>
>>>>>>>> +                <order-by field-name="shipmentItemSeqId"/>
>>>>>>>> +            </entity-condition>
>>>>>>>> +            <first-from-list entry="shipmentItem"  
>>>>>>>> list="shipmentItems"/>
>>>>>>>> +        </if-not-empty>
>>>>>>>> +
>>>>>>>> +        <if-empty field="shipmentItem">
>>>>>>>> +            <set from-field="orderItem.productId"  
>>>>>>>> field="shipmentItemCreate.productId"/>
>>>>>>>> +            <set from-field="parameters.shipmentId"  
>>>>>>>> field="shipmentItemCreate.shipmentId"/>
>>>>>>>> +            <set from-field="parameters.quantity"  
>>>>>>>> field="shipmentItemCreate.quantity"/>
>>>>>>>> +            <call-service service-name="createShipmentItem"  
>>>>>>>> in-map-name="shipmentItemCreate">
>>>>>>>> +                <result-to-field result- 
>>>>>>>> name="shipmentItemSeqId"  
>>>>>>>> field="shipmentItemLookupPk.shipmentItemSeqId"/>
>>>>>>>> +            </call-service>
>>>>>>>> +            <set from-field="parameters.shipmentId"  
>>>>>>>> field="shipmentItemLookupPk.shipmentId"/>
>>>>>>>> +            <find-by-primary-key entity-name="ShipmentItem"  
>>>>>>>> map="shipmentItemLookupPk" value-field="shipmentItem"/>
>>>>>>>> +            +            <!-- Create ItemIssuance for this  
>>>>>>>> ShipmentItem -->
>>>>>>>> +            <set from-field="parameters.quantity"  
>>>>>>>> field="itemIssuanceCreate.quantity"/>
>>>>>>>> +            <set from-field="shipmentItem.shipmentId"  
>>>>>>>> field="itemIssuanceCreate.shipmentId"/>
>>>>>>>> +            <set from-field="shipmentItem.shipmentItemSeqId"  
>>>>>>>> field="itemIssuanceCreate.shipmentItemSeqId"/>
>>>>>>>> +            <set from-field="orderItem.orderId"  
>>>>>>>> field="itemIssuanceCreate.orderId"/>
>>>>>>>> +            <set from-field="orderItem.orderItemSeqId"  
>>>>>>>> field="itemIssuanceCreate.orderItemSeqId"/>
>>>>>>>> +            +            <if-not-empty  
>>>>>>>> field="orderItemShipGroupAssoc">
>>>>>>>> +                <!-- If we have a ShipGroup Assoc for this  
>>>>>>>> Item to focus on, set that; this is mostly the case for  
>>>>>>>> purchase orders and such -->
>>>>>>>> +                <set from- 
>>>>>>>> field="orderItemShipGroupAssoc.shipGroupSeqId"  
>>>>>>>> field="itemIssuanceCreate.shipGroupSeqId"/>
>>>>>>>> +            </if-not-empty>
>>>>>>>> +
>>>>>>>> +            <set from-field="userLogin.userLoginId"  
>>>>>>>> field="itemIssuanceCreate.issuedByUserLoginId"/>
>>>>>>>> +            <call-service service-name="createItemIssuance"  
>>>>>>>> in-map-name="itemIssuanceCreate">
>>>>>>>> +                <result-to-field result- 
>>>>>>>> name="itemIssuanceId"/>
>>>>>>>> +            </call-service>
>>>>>>>> +        <else>
>>>>>>>> +            <call-simple-method method- 
>>>>>>>> name="getTotalIssuedQuantityForOrderItem" xml- 
>>>>>>>> resource="component://product/script/org/ofbiz/shipment/ 
>>>>>>>> issuance/IssuanceServices.xml"/>
>>>>>>>> +            <call-simple-method method- 
>>>>>>>> name="getReceivedQuantityForOrderItem"/>
>>>>>>>> +            <set field="receivedQuantity" value="$ 
>>>>>>>> {receivedQuantity + parameters.quantity}" type="BigDecimal"/>
>>>>>>>> +            <if-compare-field field="totalIssuedQuantity"  
>>>>>>>> operator="less" to-field="receivedQuantity" type="BigDecimal">
>>>>>>>> +                <set field="quantityToAdd" value="$ 
>>>>>>>> {receivedQuantity - totalIssuedQuantity}" type="BigDecimal"/>
>>>>>>>> +                <set field="shipmentItem.quantity" value="$ 
>>>>>>>> {shipmentItem.quantity + quantityToAdd}" type="BigDecimal"/>
>>>>>>>> +                <store-value value-field="shipmentItem"/>
>>>>>>>> +                <set field="shipmentItemSeqId" from- 
>>>>>>>> field="shipmentItem.shipmentItemSeqId"/>
>>>>>>>> +                +                <entity-and  
>>>>>>>> list="itemIssuances" entity-name="ItemIssuance">
>>>>>>>> +                    <field-map field-name="orderId" from- 
>>>>>>>> field="orderItem.orderId"/>
>>>>>>>> +                    <field-map field-name="orderItemSeqId"  
>>>>>>>> from-field="orderItem.orderItemSeqId"/>
>>>>>>>> +                    <field-map field-name="shipmentId" from- 
>>>>>>>> field="shipmentItem.shipmentId"/>
>>>>>>>> +                    <field-map field- 
>>>>>>>> name="shipmentItemSeqId" from- 
>>>>>>>> field="shipmentItem.shipmentItemSeqId"/>
>>>>>>>> +                    <field-map field-name="shipGroupSeqId"  
>>>>>>>> from-field="orderItemShipGroupAssoc.shipGroupSeqId"/>
>>>>>>>> +                    <order-by field-name="-issuedDateTime"/>
>>>>>>>> +                </entity-and>
>>>>>>>> +                <first-from-list entry="itemIssuance"  
>>>>>>>> list="itemIssuances"/>
>>>>>>>> +                <set field="itemIssuance.quantity" value="$ 
>>>>>>>> {itemIssuance.quantity + quantityToAdd}" type="BigDecimal"/>
>>>>>>>> +                <store-value value-field="itemIssuance"/>
>>>>>>>> +                <set field="itemIssuanceId" from- 
>>>>>>>> field="itemIssuance.itemIssuanceId"/>
>>>>>>>>          </if-compare-field>
>>>>>>>> +        </else>
>>>>>>>> +        </if-empty>
>>>>>>>> +
>>>>>>>> +        <call-simple-method method- 
>>>>>>>> name="associateIssueRoles" xml-resource="component://product/ 
>>>>>>>> script/org/ofbiz/shipment/issuance/IssuanceServices.xml"/>
>>>>>>>> +
>>>>>>>> +        <set-service-fields service- 
>>>>>>>> name="receiveInventoryProduct" map="parameters" to- 
>>>>>>>> map="receiveInventoryProductCtx"/>
>>>>>>>> +        <set  
>>>>>>>> field="receiveInventoryProductCtx.shipmentItemSeqId" from- 
>>>>>>>> field="shipmentItemSeqId"/>
>>>>>>>> +        <set  
>>>>>>>> field="receiveInventoryProductCtx.itemIssuanceId" from- 
>>>>>>>> field="itemIssuanceId"/>
>>>>>>>> +        <call-service service-name="receiveInventoryProduct"  
>>>>>>>> in-map-name="receiveInventoryProductCtx">
>>>>>>>> +            <result-to-result result-name="inventoryItemId"/>
>>>>>>>> +        </call-service>
>>>>>>>> +    </simple-method>
>>>>>>>> +    +    <simple-method method- 
>>>>>>>> name="getReceivedQuantityForOrderItem" short- 
>>>>>>>> description="Computes the till now received quantity from all  
>>>>>>>> ShipmentReceipts">
>>>>>>>> +        <set field="receivedQuantity" type="BigDecimal"  
>>>>>>>> value="0"/>
>>>>>>>> +        <entity-and list="shipmentReceipts" entity- 
>>>>>>>> name="ShipmentReceipt">
>>>>>>>> +            <field-map field-name="orderId" from- 
>>>>>>>> field="orderItem.orderId"/>
>>>>>>>> +            <field-map field-name="orderItemSeqId" from- 
>>>>>>>> field="orderItem.orderItemSeqId"/>
>>>>>>>> +        </entity-and>
>>>>>>>> +        <iterate entry="shipmentReceipt"  
>>>>>>>> list="shipmentReceipts">
>>>>>>>> +            <set field="receivedQuantity" value="$ 
>>>>>>>> {receivedQuantity + shipmentReceipt.quantityAccepted}"  
>>>>>>>> type="BigDecimal"/>
>>>>>>>> +        </iterate>
>>>>>>>> +    </simple-method>
>>>>>>>> +
>>>>>>>> +    <simple-method method- 
>>>>>>>> name="updateIssuanceShipmentAndPoOnReceiveInventory" short- 
>>>>>>>> description="Update issuance, shipment and order items if  
>>>>>>>> quantity received is higher than quantity on purchase order">
>>>>>>>> +        <entity-one value-field="orderItem" entity- 
>>>>>>>> name="OrderItem"/>
>>>>>>>> +        <set field="unitCost" from- 
>>>>>>>> field="parameters.unitCost" type="BigDecimal"/>
>>>>>>>> +        <if-compare-field field="unitCost" operator="not- 
>>>>>>>> equals" to-field="orderItem.unitPrice">
>>>>>>>> +            <set field="orderItem.unitPrice" from- 
>>>>>>>> field="unitCost"/>
>>>>>>>> +            <store-value value-field="orderItem"/>
>>>>>>>> +        </if-compare-field>
>>>>>>>> +        <call-simple-method method- 
>>>>>>>> name="getReceivedQuantityForOrderItem"/>
>>>>>>>> +        <if-compare-field field="orderItem.quantity"  
>>>>>>>> operator="less" to-field="receivedQuantity" type="BigDecimal">
>>>>>>>> +            <set field="orderItem.quantity" from- 
>>>>>>>> field="receivedQuantity"/>
>>>>>>>> +            <store-value value-field="orderItem"/>
>>>>>>>> +        </if-compare-field>
>>>>>>>> +        <if-not-empty field="parameters.shipmentId">
>>>>>>>> +            <if-not-empty field="orderItem.productId">
>>>>>>>> +                <call-simple-method method- 
>>>>>>>> name="getTotalIssuedQuantityForOrderItem" xml- 
>>>>>>>> resource="component://product/script/org/ofbiz/shipment/ 
>>>>>>>> issuance/IssuanceServices.xml"/>
>>>>>>>> +                <if-compare-field  
>>>>>>>> field="totalIssuedQuantity" operator="less" to- 
>>>>>>>> field="receivedQuantity" type="BigDecimal">
>>>>>>>> +                    <set field="quantityToAdd" value="$ 
>>>>>>>> {receivedQuantity - totalIssuedQuantity}" type="BigDecimal"/>
>>>>>>>> +                    <entity-condition entity- 
>>>>>>>> name="ShipmentItem" list="shipmentItems">
>>>>>>>> +                        <condition-list combine="and">
>>>>>>>> +                            <condition-expr field- 
>>>>>>>> name="productId" from-field="orderItem.productId"/>
>>>>>>>> +                            <condition-expr field- 
>>>>>>>> name="shipmentId" from-field="parameters.shipmentId"/>
>>>>>>>> +                            <condition-expr field- 
>>>>>>>> name="shipmentItemSeqId" from- 
>>>>>>>> field="parameters.shipmentItemSeqId" ignore-if-empty="true"/>
>>>>>>>> +                        </condition-list>
>>>>>>>> +                        <order-by field- 
>>>>>>>> name="shipmentItemSeqId"/>
>>>>>>>> +                    </entity-condition>
>>>>>>>> +                    <first-from-list entry="shipmentItem"  
>>>>>>>> list="shipmentItems"/>
>>>>>>>> +                    <set field="shipmentItem.quantity"  
>>>>>>>> value="${shipmentItem.quantity + quantityToAdd}"  
>>>>>>>> type="BigDecimal"/>
>>>>>>>> +                    <store-value value-field="shipmentItem"/>
>>>>>>>> +                    +                    <entity-and  
>>>>>>>> list="itemIssuances" entity-name="ItemIssuance">
>>>>>>>> +                        <field-map field-name="orderId" from- 
>>>>>>>> field="parameters.orderId"/>
>>>>>>>> +                        <field-map field- 
>>>>>>>> name="orderItemSeqId" from-field="parameters.orderItemSeqId"/>
>>>>>>>> +                        <field-map field-name="shipmentId"  
>>>>>>>> from-field="parameters.shipmentId"/>
>>>>>>>> +                        <field-map field- 
>>>>>>>> name="shipmentItemSeqId" from- 
>>>>>>>> field="shipmentItem.shipmentItemSeqId"/>
>>>>>>>> +                        <order-by field-name="- 
>>>>>>>> issuedDateTime"/>
>>>>>>>> +                    </entity-and>
>>>>>>>> +                    <first-from-list entry="itemIssuance"  
>>>>>>>> list="itemIssuances"/>
>>>>>>>> +                    <set field="itemIssuance.quantity"  
>>>>>>>> value="${itemIssuance.quantity + quantityToAdd}"  
>>>>>>>> type="BigDecimal"/>
>>>>>>>> +                    <store-value value-field="itemIssuance"/>
>>>>>>>> +                    +                    <set  
>>>>>>>> field="itemIssuanceId" from- 
>>>>>>>> field="itemIssuance.itemIssuanceId"/>
>>>>>>>> +                    <call-simple-method method- 
>>>>>>>> name="associateIssueRoles" xml-resource="component://product/ 
>>>>>>>> script/org/ofbiz/shipment/issuance/IssuanceServices.xml"/>
>>>>>>>> +                </if-compare-field>
>>>>>>>> +            </if-not-empty>
>>>>>>>>      </if-not-empty>
>>>>>>>>  </simple-method>
>>>>>>>> Modified: ofbiz/trunk/applications/product/servicedef/secas.xml
>>>>>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/servicedef/secas.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>>>  <http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/servicedef/secas.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>>> >
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> ===============================================================
>>>>>>>> --- ofbiz/trunk/applications/product/servicedef/secas.xml  
>>>>>>>> (original)
>>>>>>>> +++ ofbiz/trunk/applications/product/servicedef/secas.xml Thu  
>>>>>>>> Jun 18 10:48:09 2009
>>>>>>>> @@ -117,4 +117,10 @@
>>>>>>>>      <condition field-name="orderIdList" operator="is-not- 
>>>>>>>> empty"/>
>>>>>>>>      <action service="convertPickOrderIdListToHeaders"  
>>>>>>>> mode="sync"/>
>>>>>>>>  </eca>
>>>>>>>> +    +    <eca service="receiveInventoryProduct"  
>>>>>>>> event="commit">
>>>>>>>> +        <condition field-name="facilityId" operator="is-not- 
>>>>>>>> empty"/>
>>>>>>>> +        <condition field-name="orderId" operator="is-not- 
>>>>>>>> empty"/>
>>>>>>>> +        <action  
>>>>>>>> service="updateIssuanceShipmentAndPoOnReceiveInventory"  
>>>>>>>> mode="sync"/>
>>>>>>>> +    </eca>
>>>>>>>> </service-eca>
>>>>>>>> Modified: ofbiz/trunk/applications/product/servicedef/ 
>>>>>>>> services_shipment.xml
>>>>>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/servicedef/services_shipment.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>>>  <http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/servicedef/services_shipment.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>>> >
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> = 
>>>>>>>> ===============================================================
>>>>>>>> --- ofbiz/trunk/applications/product/servicedef/ 
>>>>>>>> services_shipment.xml (original)
>>>>>>>> +++ ofbiz/trunk/applications/product/servicedef/ 
>>>>>>>> services_shipment.xml Thu Jun 18 10:48:09 2009
>>>>>>>> @@ -709,12 +709,11 @@
>>>>>>>>      <override name="facilityId" optional="false"/>
>>>>>>>>  </service>
>>>>>>>> -    <service  
>>>>>>>> name="issueOrderItemToShipmentAndReceiveAgainstPO"  
>>>>>>>> engine="group" auth="true">
>>>>>>>> +    <service  
>>>>>>>> name="issueOrderItemToShipmentAndReceiveAgainstPO"  
>>>>>>>> engine="simple" transaction-timeout="600"
>>>>>>>> +            location="component://product/script/org/ofbiz/ 
>>>>>>>> shipment/receipt/ShipmentReceiptServices.xml"  
>>>>>>>> invoke="issueOrderItemToShipmentAndReceiveAgainstPO"  
>>>>>>>> auth="true">
>>>>>>>>      <description>Issues order item quantity specified to the  
>>>>>>>> shipment, then receives inventory for that item and quantity</ 
>>>>>>>> description>
>>>>>>>> -        <group>
>>>>>>>> -            <invoke name="issueOrderItemToShipment" result- 
>>>>>>>> to-context="true"/>
>>>>>>>> -            <invoke name="receiveInventoryProduct" result-to- 
>>>>>>>> context="true"/>
>>>>>>>> -        </group>
>>>>>>>> +        <implements service="issueOrderItemToShipment"/>
>>>>>>>> +        <implements service="receiveInventoryProduct"/>
>>>>>>>>  </service>
>>>>>>>>   <service name="quickReceiveReturn" engine="simple"
>>>>>>>> @@ -875,4 +874,14 @@
>>>>>>>>      <attribute name="body" type="String" mode="OUT"  
>>>>>>>> optional="true"/>
>>>>>>>>      <attribute name="messageWrapper"  
>>>>>>>> type="org.ofbiz.service.mail.MimeMessageWrapper" mode="OUT"/>
>>>>>>>>  </service>
>>>>>>>> +    <service  
>>>>>>>> name="updateIssuanceShipmentAndPoOnReceiveInventory"  
>>>>>>>> engine="simple"
>>>>>>>> +            location="component://product/script/org/ofbiz/ 
>>>>>>>> shipment/receipt/ShipmentReceiptServices.xml"  
>>>>>>>> invoke="updateIssuanceShipmentAndPoOnReceiveInventory">
>>>>>>>> +        <description>Update issuance, shipment and order  
>>>>>>>> items if quantity received is higher than quantity on  
>>>>>>>> purchase order</description>
>>>>>>>> +        <attribute name="orderId" type="String" mode="IN"  
>>>>>>>> optional="false"/>
>>>>>>>> +        <attribute name="orderItemSeqId" type="String"  
>>>>>>>> mode="IN" optional="false"/>
>>>>>>>> +        <attribute name="quantityAccepted"   
>>>>>>>> type="BigDecimal" mode="IN" optional="false"/>
>>>>>>>> +        <attribute name="shipmentId" type="String" mode="IN"  
>>>>>>>> optional="true"/>
>>>>>>>> +        <attribute name="shipmentItemSeqId" type="String"  
>>>>>>>> mode="IN" optional="true"/>
>>>>>>>> +        <attribute name="unitCost" type="String" mode="IN"  
>>>>>>>> optional="false"/>
>>>>>>>> +    </service>
>>>>>>>> </services>
>>>>>>
>>>
>>
>


Re: svn commit: r786013 - in /ofbiz/trunk/applications: order/servicedef/ product/script/org/ofbiz/shipment/issuance/ product/script/org/ofbiz/shipment/receipt/ product/servicedef/

Posted by Mridul Pathak <mr...@hotwaxmedia.com>.
Hi Scott,

     This is related to UEL support for variable name modifiers as  
documented on http://docs.ofbiz.org/x/Hhk.  The purpose here is that  
at the time of evaluating UEL expressions, if a value of a variable is  
found null, the variable name modifier will return a 0 value based on  
the type of the modifier, so that expression is evaluated  
successfully.  This is something already supported but wasn't working  
for values accessed via a key in a Map, so I tried to fix it up.

     Other variable name modifiers are $string, $boolean, $integer,  
$long, $null.  Currently $double can be used for BigDecimal  
calculations to return 0 for a missing variable.  May be we can add a  
variable name modifier $bigdecimal (which returns a BigDecimal.ZERO  
for missing variable of type BigDecimal) to explicitly support  
BigDecimal calculations.  If it sounds reasonable, I can provide  
another patch for this support.

--
Thanks,
Mridul Pathak

On 11-Sep-09, at 3:36 PM, Scott Gray wrote:

> Hi Mridul,
>
> I'm not sure I understand, are you proposing that we affix $double  
> to the end of all our values?  Having spent many many hours removing  
> the use of doubles from OFBiz I would be quite a bit against that.
>
> Regards
> Scott
>
> On 11/09/2009, at 9:57 PM, Mridul Pathak wrote:
>
>> Hi Adrian,
>>
>>     I have given a try to fix this bug and uploaded the patch on  
>> jira issue OFBIZ-2928.  It would be great if you can have a look at  
>> the patch.
>>
>> --
>> Thanks,
>> Mridul Pathak
>>
>> On 18-Jun-09, at 10:34 PM, Adrian Crum wrote:
>>
>>> Thank you for the information. That is definitely a bug that  
>>> should be fixed. I will look into it as soon as I have time.
>>>
>>> -Adrian
>>>
>>> Mridul Pathak wrote:
>>>> Hi Adrian,
>>>>    I tried using variable name modifier as suggested by you, but  
>>>> it doesn't seem to be working.  I am getting following warning on  
>>>> terminal: *Code*: <set field="itemIssuance.quantity" value="$ 
>>>> {parameters.quantity$double + itemIssuance.quantity$double}"  
>>>> type="BigDecimal"/>
>>>> *Warning*: "2009-06-18 22:02:59,475 (http-0.0.0.0-8443-1)  
>>>> [      GenericEntity.java:704:WARN ] The field name (or key)  
>>>> [quantity$double] is not valid for entity [ItemIssuance],  
>>>> printing IllegalArgumentException instead of throwing it because  
>>>> Map interface specification does not allow throwing that  
>>>> exception."
>>>>   When I tried it following way, it worked correctly:
>>>> *Code*:
>>>> <set field="itemIssuanceQuantity" from- 
>>>> field="itemIssuance.quantity" type="BigDecimal"/>
>>>> <set field="thisQuantity" from-field="parameters.quantity"  
>>>> type="BigDecimal"/>
>>>> <set field="itemIssuance.quantity" value="${thisQuantity$double +  
>>>> itemIssuanceQuantity$double}" type="BigDecimal"/>
>>>>   I can do it the second way, but is it possible to make the  
>>>> former code snippet work?
>>>> --
>>>> Thanks,
>>>> Mridul Pathak
>>>> On 18-Jun-09, at 8:12 PM, Mridul Pathak wrote:
>>>>> Thanks Adrian for your useful comments, this will help me to  
>>>>> make better use of UEL in future :).
>>>>> Ashish, can you please reopen the Jira Issue OFBIZ-2619.  So  
>>>>> that I can upload a patch with these improvements on the same  
>>>>> issue.
>>>>>
>>>>> --
>>>>> Thanks,
>>>>> Mridul Pathak
>>>>>
>>>>> On 18-Jun-09, at 8:00 PM, Adrian Crum wrote:
>>>>>
>>>>>> It's good to see UEL expressions used to simplify simple method  
>>>>>> code. One thing to watch out for though - UEL will throw an  
>>>>>> exception if an expression variable doesn't exist. OFBiz has a  
>>>>>> variable name modifier that can be used to avoid that.
>>>>>>
>>>>>> For example:
>>>>>>
>>>>>> <set field="itemIssuance.quantity" value="$ 
>>>>>> {itemIssuance.quantity + parameters.quantity}"  
>>>>>> type="BigDecimal"/>
>>>>>>
>>>>>> would be better as:
>>>>>>
>>>>>> <set field="itemIssuance.quantity" value="$ 
>>>>>> {itemIssuance.quantity$double + parameters.quantity$double}"  
>>>>>> type="BigDecimal"/>
>>>>>>
>>>>>> For more information:
>>>>>>
>>>>>> http://docs.ofbiz.org/x/Hhk
>>>>>>
>>>>>> -Adrian
>>>>>>
>>>>>>
>>>>>> ashish@apache.org <ma...@apache.org> wrote:
>>>>>>> Author: ashish
>>>>>>> Date: Thu Jun 18 10:48:09 2009
>>>>>>> New Revision: 786013
>>>>>>> URL: http://svn.apache.org/viewvc?rev=786013&view=rev <http://svn.apache.org/viewvc?rev=786013&view=rev 
>>>>>>> >
>>>>>>> Log:
>>>>>>> Applied patch from jira issue OFBIZ-2619 (Issues with Receive  
>>>>>>> PO functionality).
>>>>>>> I have tested this patch extensively and now things looks more  
>>>>>>> accurate.
>>>>>>> I agree with the issues specified from Mridul in the jira issue.
>>>>>>> Thanks Mridul for your contribution.
>>>>>>> Modified:
>>>>>>> ofbiz/trunk/applications/order/servicedef/secas.xml
>>>>>>> ofbiz/trunk/applications/product/script/org/ofbiz/shipment/ 
>>>>>>> issuance/IssuanceServices.xml
>>>>>>> ofbiz/trunk/applications/product/script/org/ofbiz/shipment/ 
>>>>>>> receipt/ShipmentReceiptServices.xml
>>>>>>> ofbiz/trunk/applications/product/servicedef/secas.xml
>>>>>>> ofbiz/trunk/applications/product/servicedef/ 
>>>>>>> services_shipment.xml
>>>>>>> Modified: ofbiz/trunk/applications/order/servicedef/secas.xml
>>>>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/servicedef/secas.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>>  <http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/servicedef/secas.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>> >
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> ================================================================
>>>>>>> --- ofbiz/trunk/applications/order/servicedef/secas.xml  
>>>>>>> (original)
>>>>>>> +++ ofbiz/trunk/applications/order/servicedef/secas.xml Thu  
>>>>>>> Jun 18 10:48:09 2009
>>>>>>> @@ -52,7 +52,6 @@
>>>>>>>      <condition field-name="facilityId" operator="is-not- 
>>>>>>> empty"/>
>>>>>>>      <condition field-name="orderId" operator="is-not-empty"/>
>>>>>>>      <action service="addProductsBackToCategory" mode="sync"/>
>>>>>>> -        <action service="updatePoOnReceiveInventory"  
>>>>>>> mode="sync"/>
>>>>>>>  </eca>
>>>>>>>  <eca service="changeOrderItemStatus" event="commit">
>>>>>>>      <condition field-name="statusId" operator="equals"  
>>>>>>> value="ITEM_CANCELLED"/>
>>>>>>> Modified: ofbiz/trunk/applications/product/script/org/ofbiz/ 
>>>>>>> shipment/issuance/IssuanceServices.xml
>>>>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/shipment/issuance/IssuanceServices.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>>  <http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/shipment/issuance/IssuanceServices.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>> >
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> ================================================================
>>>>>>> --- ofbiz/trunk/applications/product/script/org/ofbiz/shipment/ 
>>>>>>> issuance/IssuanceServices.xml (original)
>>>>>>> +++ ofbiz/trunk/applications/product/script/org/ofbiz/shipment/ 
>>>>>>> issuance/IssuanceServices.xml Thu Jun 18 10:48:09 2009
>>>>>>> @@ -126,7 +126,7 @@
>>>>>>>      <entity-one entity-name="Shipment" value-field="shipment"  
>>>>>>> auto-field-map="true"/>
>>>>>>>       <call-simple-method method- 
>>>>>>> name="findCreateIssueShipmentItem"/>
>>>>>>> -        <call-simple-method method- 
>>>>>>> name="callCreateItemIssuance"/>
>>>>>>> +        <call-simple-method method- 
>>>>>>> name="findCreateItemIssuance"/>
>>>>>>>      <call-simple-method method-name="associateIssueRoles"/>
>>>>>>>  </simple-method>
>>>>>>> @@ -228,7 +228,7 @@
>>>>>>>      </if-compare>
>>>>>>>       <!--<call-simple-method method- 
>>>>>>> name="findCreateIssueShipmentItem"/>-->
>>>>>>> -        <call-simple-method method- 
>>>>>>> name="callCreateItemIssuance"/>
>>>>>>> +        <call-simple-method method- 
>>>>>>> name="findCreateItemIssuance"/>
>>>>>>>      <call-simple-method method-name="associateIssueRoles"/>
>>>>>>>       <!-- decrement quantity still reserved -->
>>>>>>> @@ -307,7 +307,27 @@
>>>>>>>      </if-empty>
>>>>>>>      <field-to-result field="shipmentItem.shipmentItemSeqId"  
>>>>>>> result-name="shipmentItemSeqId"/>
>>>>>>>  </simple-method>
>>>>>>> -    <simple-method method-name="callCreateItemIssuance" short- 
>>>>>>> description="Call Create ItemIssuance - meant to be called in- 
>>>>>>> line">
>>>>>>> +    <simple-method method-name="findCreateItemIssuance" short- 
>>>>>>> description="Find Create ItemIssuance - meant to be called in- 
>>>>>>> line">
>>>>>>> +        <!-- If a non-sales order find ItemIssuance for  
>>>>>>> orderItemSeqId-shimentItemSeqId-shipGroupSeqId pair, update it  
>>>>>>> and return -->
>>>>>>> +        <if-compare field="orderHeader.orderTypeId"  
>>>>>>> operator="not-equals" value="SALES_ORDER">
>>>>>>> +            <entity-and list="itemIssuances" entity- 
>>>>>>> name="ItemIssuance">
>>>>>>> +                <field-map field-name="orderId" from- 
>>>>>>> field="orderItem.orderId"/>
>>>>>>> +                <field-map field-name="orderItemSeqId" from- 
>>>>>>> field="orderItem.orderItemSeqId"/>
>>>>>>> +                <field-map field-name="shipmentId" from- 
>>>>>>> field="shipmentItem.shipmentId"/>
>>>>>>> +                <field-map field-name="shipmentItemSeqId"  
>>>>>>> from-field="shipmentItem.shipmentItemSeqId"/>
>>>>>>> +                <field-map field-name="shipGroupSeqId" from- 
>>>>>>> field="orderItemShipGroupAssoc.shipGroupSeqId"/>
>>>>>>> +                <order-by field-name="-issuedDateTime"/>
>>>>>>> +            </entity-and>
>>>>>>> +            <if-not-empty field="itemIssuances">
>>>>>>> +                <first-from-list entry="itemIssuance"  
>>>>>>> list="itemIssuances"/>
>>>>>>> +                <set field="itemIssuance.quantity" value="$ 
>>>>>>> {itemIssuance.quantity + parameters.quantity}"  
>>>>>>> type="BigDecimal"/>
>>>>>>> +                <store-value value-field="itemIssuance"/>
>>>>>>> +                <set field="itemIssuanceId" from- 
>>>>>>> field="itemIssuance.itemIssuanceId"/>
>>>>>>> +                <field-to-result field="itemIssuanceId"/>
>>>>>>> +                <return/>
>>>>>>> +            </if-not-empty>
>>>>>>> +        </if-compare>
>>>>>>> +                 <!-- create the ItemIssuance -->
>>>>>>>      <set from-field="parameters.quantity"  
>>>>>>> field="itemIssuanceCreate.quantity"/>
>>>>>>>      <set from-field="shipmentItem.shipmentId"  
>>>>>>> field="itemIssuanceCreate.shipmentId"/>
>>>>>>> @@ -557,4 +577,14 @@
>>>>>>>      </calculate>
>>>>>>>      <call-service service-name="createInventoryItemDetail" in- 
>>>>>>> map-name="createDetailMap"/>
>>>>>>>  </simple-method>
>>>>>>> +    <simple-method method- 
>>>>>>> name="getTotalIssuedQuantityForOrderItem" short- 
>>>>>>> description="Computes the total issued quantity for an order  
>>>>>>> item">
>>>>>>> +        <set field="totalIssuedQuantity" type="BigDecimal"  
>>>>>>> value="0"/>
>>>>>>> +        <entity-and list="allItemIssuances" entity- 
>>>>>>> name="ItemIssuance">
>>>>>>> +            <field-map field-name="orderId" from- 
>>>>>>> field="orderItem.orderId"/>
>>>>>>> +            <field-map field-name="orderItemSeqId" from- 
>>>>>>> field="orderItem.orderItemSeqId"/>
>>>>>>> +        </entity-and>
>>>>>>> +        <iterate entry="itemIssuance" list="allItemIssuances">
>>>>>>> +            <set field="totalIssuedQuantity" value="$ 
>>>>>>> {totalIssuedQuantity + itemIssuance.quantity}"  
>>>>>>> type="BigDecimal"/>
>>>>>>> +        </iterate>
>>>>>>> +    </simple-method>
>>>>>>> </simple-methods>
>>>>>>> Modified: ofbiz/trunk/applications/product/script/org/ofbiz/ 
>>>>>>> shipment/receipt/ShipmentReceiptServices.xml
>>>>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/shipment/receipt/ShipmentReceiptServices.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>>  <http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/shipment/receipt/ShipmentReceiptServices.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>> >
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> ================================================================
>>>>>>> --- ofbiz/trunk/applications/product/script/org/ofbiz/shipment/ 
>>>>>>> receipt/ShipmentReceiptServices.xml (original)
>>>>>>> +++ ofbiz/trunk/applications/product/script/org/ofbiz/shipment/ 
>>>>>>> receipt/ShipmentReceiptServices.xml Thu Jun 18 10:48:09 2009
>>>>>>> @@ -313,25 +313,155 @@
>>>>>>>          </if-compare>
>>>>>>>      </if-compare>
>>>>>>>  </simple-method>
>>>>>>> +    +    <simple-method method- 
>>>>>>> name="issueOrderItemToShipmentAndReceiveAgainstPO" short- 
>>>>>>> description="Issues order item quantity specified to the  
>>>>>>> shipment, then receives inventory for that item and quantity">
>>>>>>> +        <set value="Issue OrderItem to Shipment and Receive  
>>>>>>> against PO" field="operationName"/>
>>>>>>> +        <check-permission permission="FACILITY"  
>>>>>>> action="_CREATE">
>>>>>>> +            <fail-message message="Security Error: to run $ 
>>>>>>> {operationName} you must have the FACILITY_CREATE or  
>>>>>>> FACILITY_ADMIN permission"/>
>>>>>>> +        </check-permission>
>>>>>>> +        <check-permission permission="FACILITY"  
>>>>>>> action="_UPDATE">
>>>>>>> +            <fail-message message="Security Error: to run $ 
>>>>>>> {operationName} you must have the FACILITY_UPDATE or  
>>>>>>> FACILITY_ADMIN permission"/>
>>>>>>> +        </check-permission>
>>>>>>> +        <call-simple-method method- 
>>>>>>> name="checkCanChangeShipmentStatusPacked" xml- 
>>>>>>> resource="component://product/script/org/ofbiz/shipment/ 
>>>>>>> shipment/ShipmentServices.xml"/>
>>>>>>> -    <simple-method method-name="updatePoOnReceiveInventory"  
>>>>>>> short-description="Update order items if quantity received is  
>>>>>>> higher than quantity on purchase order">
>>>>>>> -        <set field="quantityAccepted" from- 
>>>>>>> field="parameters.quantityAccepted" type="BigDecimal"/>
>>>>>>> -        <entity-one entity-name="OrderItem" value- 
>>>>>>> field="orderItem"/>
>>>>>>> -        <if-compare-field field="orderItem.quantity"  
>>>>>>> operator="less" to-field="quantityAccepted" type="BigDecimal">
>>>>>>> -            <set field="orderItem.quantity" from- 
>>>>>>> field="quantityAccepted"/>
>>>>>>> -            <store-value  value-field="orderItem"/>
>>>>>>> -        </if-compare-field>
>>>>>>> -        <entity-and entity-name="ItemIssuance"  
>>>>>>> list="itemIssuances">
>>>>>>> -            <field-map field-name="orderId" from- 
>>>>>>> field="parameters.orderId"/>
>>>>>>> -            <field-map field-name="orderItemSeqId" from- 
>>>>>>> field="parameters.orderItemSeqId"/>
>>>>>>> -        </entity-and>
>>>>>>> -        <first-from-list list="itemIssuances"  
>>>>>>> entry="itemIssuance"/>
>>>>>>> -        <if-not-empty field="itemIssuance">
>>>>>>> -            <if-compare-field field="itemIssuance.quantity"   
>>>>>>> operator="less" to-field="quantityAccepted" type="BigDecimal">
>>>>>>> -                <set field="itemIssuance.quantity" from- 
>>>>>>> field="quantityAccepted"/>
>>>>>>> -                <set-service-fields service- 
>>>>>>> name="updateItemIssuance" map="itemIssuance" to- 
>>>>>>> map="updateItemIssuanceMap"/>
>>>>>>> -                <call-service service- 
>>>>>>> name="updateItemIssuance" in-map-name="updateItemIssuanceMap"/>
>>>>>>> +        <!-- get orderItem -->
>>>>>>> +        <entity-one entity-name="OrderItem" value- 
>>>>>>> field="orderItem" auto-field-map="true"/>
>>>>>>> +        <!-- get orderItemShipGroupAssoc -->
>>>>>>> +        <entity-one entity-name="OrderItemShipGroupAssoc"  
>>>>>>> value-field="orderItemShipGroupAssoc" auto-field-map="true"/>
>>>>>>> +        <!-- get shipment -->
>>>>>>> +        <entity-one entity-name="Shipment" value- 
>>>>>>> field="shipment" auto-field-map="true"/>
>>>>>>> +        +        <!-- try to find an existing shipmentItem  
>>>>>>> and attach to it, if none found create a new shipmentItem -->
>>>>>>> +        <!-- if there is NO productId on the orderItem,  
>>>>>>> ALWAYS create a new shipmentItem -->
>>>>>>> +        <if-not-empty field="orderItem.productId">
>>>>>>> +            <entity-condition entity-name="ShipmentItem"  
>>>>>>> list="shipmentItems">
>>>>>>> +                <condition-list combine="and">
>>>>>>> +                    <condition-expr field-name="productId"  
>>>>>>> from-field="orderItem.productId"/>
>>>>>>> +                    <condition-expr field-name="shipmentId"  
>>>>>>> from-field="shipment.shipmentId"/>
>>>>>>> +                    <condition-expr field- 
>>>>>>> name="shipmentItemSeqId" from- 
>>>>>>> field="parameters.shipmentItemSeqId" ignore-if-empty="true"/>
>>>>>>> +                </condition-list>
>>>>>>> +                <order-by field-name="shipmentItemSeqId"/>
>>>>>>> +            </entity-condition>
>>>>>>> +            <first-from-list entry="shipmentItem"  
>>>>>>> list="shipmentItems"/>
>>>>>>> +        </if-not-empty>
>>>>>>> +
>>>>>>> +        <if-empty field="shipmentItem">
>>>>>>> +            <set from-field="orderItem.productId"  
>>>>>>> field="shipmentItemCreate.productId"/>
>>>>>>> +            <set from-field="parameters.shipmentId"  
>>>>>>> field="shipmentItemCreate.shipmentId"/>
>>>>>>> +            <set from-field="parameters.quantity"  
>>>>>>> field="shipmentItemCreate.quantity"/>
>>>>>>> +            <call-service service-name="createShipmentItem"  
>>>>>>> in-map-name="shipmentItemCreate">
>>>>>>> +                <result-to-field result- 
>>>>>>> name="shipmentItemSeqId"  
>>>>>>> field="shipmentItemLookupPk.shipmentItemSeqId"/>
>>>>>>> +            </call-service>
>>>>>>> +            <set from-field="parameters.shipmentId"  
>>>>>>> field="shipmentItemLookupPk.shipmentId"/>
>>>>>>> +            <find-by-primary-key entity-name="ShipmentItem"  
>>>>>>> map="shipmentItemLookupPk" value-field="shipmentItem"/>
>>>>>>> +            +            <!-- Create ItemIssuance for this  
>>>>>>> ShipmentItem -->
>>>>>>> +            <set from-field="parameters.quantity"  
>>>>>>> field="itemIssuanceCreate.quantity"/>
>>>>>>> +            <set from-field="shipmentItem.shipmentId"  
>>>>>>> field="itemIssuanceCreate.shipmentId"/>
>>>>>>> +            <set from-field="shipmentItem.shipmentItemSeqId"  
>>>>>>> field="itemIssuanceCreate.shipmentItemSeqId"/>
>>>>>>> +            <set from-field="orderItem.orderId"  
>>>>>>> field="itemIssuanceCreate.orderId"/>
>>>>>>> +            <set from-field="orderItem.orderItemSeqId"  
>>>>>>> field="itemIssuanceCreate.orderItemSeqId"/>
>>>>>>> +            +            <if-not-empty  
>>>>>>> field="orderItemShipGroupAssoc">
>>>>>>> +                <!-- If we have a ShipGroup Assoc for this  
>>>>>>> Item to focus on, set that; this is mostly the case for  
>>>>>>> purchase orders and such -->
>>>>>>> +                <set from- 
>>>>>>> field="orderItemShipGroupAssoc.shipGroupSeqId"  
>>>>>>> field="itemIssuanceCreate.shipGroupSeqId"/>
>>>>>>> +            </if-not-empty>
>>>>>>> +
>>>>>>> +            <set from-field="userLogin.userLoginId"  
>>>>>>> field="itemIssuanceCreate.issuedByUserLoginId"/>
>>>>>>> +            <call-service service-name="createItemIssuance"  
>>>>>>> in-map-name="itemIssuanceCreate">
>>>>>>> +                <result-to-field result-name="itemIssuanceId"/>
>>>>>>> +            </call-service>
>>>>>>> +        <else>
>>>>>>> +            <call-simple-method method- 
>>>>>>> name="getTotalIssuedQuantityForOrderItem" xml- 
>>>>>>> resource="component://product/script/org/ofbiz/shipment/ 
>>>>>>> issuance/IssuanceServices.xml"/>
>>>>>>> +            <call-simple-method method- 
>>>>>>> name="getReceivedQuantityForOrderItem"/>
>>>>>>> +            <set field="receivedQuantity" value="$ 
>>>>>>> {receivedQuantity + parameters.quantity}" type="BigDecimal"/>
>>>>>>> +            <if-compare-field field="totalIssuedQuantity"  
>>>>>>> operator="less" to-field="receivedQuantity" type="BigDecimal">
>>>>>>> +                <set field="quantityToAdd" value="$ 
>>>>>>> {receivedQuantity - totalIssuedQuantity}" type="BigDecimal"/>
>>>>>>> +                <set field="shipmentItem.quantity" value="$ 
>>>>>>> {shipmentItem.quantity + quantityToAdd}" type="BigDecimal"/>
>>>>>>> +                <store-value value-field="shipmentItem"/>
>>>>>>> +                <set field="shipmentItemSeqId" from- 
>>>>>>> field="shipmentItem.shipmentItemSeqId"/>
>>>>>>> +                +                <entity-and  
>>>>>>> list="itemIssuances" entity-name="ItemIssuance">
>>>>>>> +                    <field-map field-name="orderId" from- 
>>>>>>> field="orderItem.orderId"/>
>>>>>>> +                    <field-map field-name="orderItemSeqId"  
>>>>>>> from-field="orderItem.orderItemSeqId"/>
>>>>>>> +                    <field-map field-name="shipmentId" from- 
>>>>>>> field="shipmentItem.shipmentId"/>
>>>>>>> +                    <field-map field-name="shipmentItemSeqId"  
>>>>>>> from-field="shipmentItem.shipmentItemSeqId"/>
>>>>>>> +                    <field-map field-name="shipGroupSeqId"  
>>>>>>> from-field="orderItemShipGroupAssoc.shipGroupSeqId"/>
>>>>>>> +                    <order-by field-name="-issuedDateTime"/>
>>>>>>> +                </entity-and>
>>>>>>> +                <first-from-list entry="itemIssuance"  
>>>>>>> list="itemIssuances"/>
>>>>>>> +                <set field="itemIssuance.quantity" value="$ 
>>>>>>> {itemIssuance.quantity + quantityToAdd}" type="BigDecimal"/>
>>>>>>> +                <store-value value-field="itemIssuance"/>
>>>>>>> +                <set field="itemIssuanceId" from- 
>>>>>>> field="itemIssuance.itemIssuanceId"/>
>>>>>>>          </if-compare-field>
>>>>>>> +        </else>
>>>>>>> +        </if-empty>
>>>>>>> +
>>>>>>> +        <call-simple-method method-name="associateIssueRoles"  
>>>>>>> xml-resource="component://product/script/org/ofbiz/shipment/ 
>>>>>>> issuance/IssuanceServices.xml"/>
>>>>>>> +
>>>>>>> +        <set-service-fields service- 
>>>>>>> name="receiveInventoryProduct" map="parameters" to- 
>>>>>>> map="receiveInventoryProductCtx"/>
>>>>>>> +        <set  
>>>>>>> field="receiveInventoryProductCtx.shipmentItemSeqId" from- 
>>>>>>> field="shipmentItemSeqId"/>
>>>>>>> +        <set  
>>>>>>> field="receiveInventoryProductCtx.itemIssuanceId" from- 
>>>>>>> field="itemIssuanceId"/>
>>>>>>> +        <call-service service-name="receiveInventoryProduct"  
>>>>>>> in-map-name="receiveInventoryProductCtx">
>>>>>>> +            <result-to-result result-name="inventoryItemId"/>
>>>>>>> +        </call-service>
>>>>>>> +    </simple-method>
>>>>>>> +    +    <simple-method method- 
>>>>>>> name="getReceivedQuantityForOrderItem" short- 
>>>>>>> description="Computes the till now received quantity from all  
>>>>>>> ShipmentReceipts">
>>>>>>> +        <set field="receivedQuantity" type="BigDecimal"  
>>>>>>> value="0"/>
>>>>>>> +        <entity-and list="shipmentReceipts" entity- 
>>>>>>> name="ShipmentReceipt">
>>>>>>> +            <field-map field-name="orderId" from- 
>>>>>>> field="orderItem.orderId"/>
>>>>>>> +            <field-map field-name="orderItemSeqId" from- 
>>>>>>> field="orderItem.orderItemSeqId"/>
>>>>>>> +        </entity-and>
>>>>>>> +        <iterate entry="shipmentReceipt"  
>>>>>>> list="shipmentReceipts">
>>>>>>> +            <set field="receivedQuantity" value="$ 
>>>>>>> {receivedQuantity + shipmentReceipt.quantityAccepted}"  
>>>>>>> type="BigDecimal"/>
>>>>>>> +        </iterate>
>>>>>>> +    </simple-method>
>>>>>>> +
>>>>>>> +    <simple-method method- 
>>>>>>> name="updateIssuanceShipmentAndPoOnReceiveInventory" short- 
>>>>>>> description="Update issuance, shipment and order items if  
>>>>>>> quantity received is higher than quantity on purchase order">
>>>>>>> +        <entity-one value-field="orderItem" entity- 
>>>>>>> name="OrderItem"/>
>>>>>>> +        <set field="unitCost" from- 
>>>>>>> field="parameters.unitCost" type="BigDecimal"/>
>>>>>>> +        <if-compare-field field="unitCost" operator="not- 
>>>>>>> equals" to-field="orderItem.unitPrice">
>>>>>>> +            <set field="orderItem.unitPrice" from- 
>>>>>>> field="unitCost"/>
>>>>>>> +            <store-value value-field="orderItem"/>
>>>>>>> +        </if-compare-field>
>>>>>>> +        <call-simple-method method- 
>>>>>>> name="getReceivedQuantityForOrderItem"/>
>>>>>>> +        <if-compare-field field="orderItem.quantity"  
>>>>>>> operator="less" to-field="receivedQuantity" type="BigDecimal">
>>>>>>> +            <set field="orderItem.quantity" from- 
>>>>>>> field="receivedQuantity"/>
>>>>>>> +            <store-value value-field="orderItem"/>
>>>>>>> +        </if-compare-field>
>>>>>>> +        <if-not-empty field="parameters.shipmentId">
>>>>>>> +            <if-not-empty field="orderItem.productId">
>>>>>>> +                <call-simple-method method- 
>>>>>>> name="getTotalIssuedQuantityForOrderItem" xml- 
>>>>>>> resource="component://product/script/org/ofbiz/shipment/ 
>>>>>>> issuance/IssuanceServices.xml"/>
>>>>>>> +                <if-compare-field field="totalIssuedQuantity"  
>>>>>>> operator="less" to-field="receivedQuantity" type="BigDecimal">
>>>>>>> +                    <set field="quantityToAdd" value="$ 
>>>>>>> {receivedQuantity - totalIssuedQuantity}" type="BigDecimal"/>
>>>>>>> +                    <entity-condition entity- 
>>>>>>> name="ShipmentItem" list="shipmentItems">
>>>>>>> +                        <condition-list combine="and">
>>>>>>> +                            <condition-expr field- 
>>>>>>> name="productId" from-field="orderItem.productId"/>
>>>>>>> +                            <condition-expr field- 
>>>>>>> name="shipmentId" from-field="parameters.shipmentId"/>
>>>>>>> +                            <condition-expr field- 
>>>>>>> name="shipmentItemSeqId" from- 
>>>>>>> field="parameters.shipmentItemSeqId" ignore-if-empty="true"/>
>>>>>>> +                        </condition-list>
>>>>>>> +                        <order-by field- 
>>>>>>> name="shipmentItemSeqId"/>
>>>>>>> +                    </entity-condition>
>>>>>>> +                    <first-from-list entry="shipmentItem"  
>>>>>>> list="shipmentItems"/>
>>>>>>> +                    <set field="shipmentItem.quantity"  
>>>>>>> value="${shipmentItem.quantity + quantityToAdd}"  
>>>>>>> type="BigDecimal"/>
>>>>>>> +                    <store-value value-field="shipmentItem"/>
>>>>>>> +                    +                    <entity-and  
>>>>>>> list="itemIssuances" entity-name="ItemIssuance">
>>>>>>> +                        <field-map field-name="orderId" from- 
>>>>>>> field="parameters.orderId"/>
>>>>>>> +                        <field-map field- 
>>>>>>> name="orderItemSeqId" from-field="parameters.orderItemSeqId"/>
>>>>>>> +                        <field-map field-name="shipmentId"  
>>>>>>> from-field="parameters.shipmentId"/>
>>>>>>> +                        <field-map field- 
>>>>>>> name="shipmentItemSeqId" from- 
>>>>>>> field="shipmentItem.shipmentItemSeqId"/>
>>>>>>> +                        <order-by field-name="- 
>>>>>>> issuedDateTime"/>
>>>>>>> +                    </entity-and>
>>>>>>> +                    <first-from-list entry="itemIssuance"  
>>>>>>> list="itemIssuances"/>
>>>>>>> +                    <set field="itemIssuance.quantity"  
>>>>>>> value="${itemIssuance.quantity + quantityToAdd}"  
>>>>>>> type="BigDecimal"/>
>>>>>>> +                    <store-value value-field="itemIssuance"/>
>>>>>>> +                    +                    <set  
>>>>>>> field="itemIssuanceId" from- 
>>>>>>> field="itemIssuance.itemIssuanceId"/>
>>>>>>> +                    <call-simple-method method- 
>>>>>>> name="associateIssueRoles" xml-resource="component://product/ 
>>>>>>> script/org/ofbiz/shipment/issuance/IssuanceServices.xml"/>
>>>>>>> +                </if-compare-field>
>>>>>>> +            </if-not-empty>
>>>>>>>      </if-not-empty>
>>>>>>>  </simple-method>
>>>>>>> Modified: ofbiz/trunk/applications/product/servicedef/secas.xml
>>>>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/servicedef/secas.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>>  <http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/servicedef/secas.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>> >
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> ================================================================
>>>>>>> --- ofbiz/trunk/applications/product/servicedef/secas.xml  
>>>>>>> (original)
>>>>>>> +++ ofbiz/trunk/applications/product/servicedef/secas.xml Thu  
>>>>>>> Jun 18 10:48:09 2009
>>>>>>> @@ -117,4 +117,10 @@
>>>>>>>      <condition field-name="orderIdList" operator="is-not- 
>>>>>>> empty"/>
>>>>>>>      <action service="convertPickOrderIdListToHeaders"  
>>>>>>> mode="sync"/>
>>>>>>>  </eca>
>>>>>>> +    +    <eca service="receiveInventoryProduct" event="commit">
>>>>>>> +        <condition field-name="facilityId" operator="is-not- 
>>>>>>> empty"/>
>>>>>>> +        <condition field-name="orderId" operator="is-not- 
>>>>>>> empty"/>
>>>>>>> +        <action  
>>>>>>> service="updateIssuanceShipmentAndPoOnReceiveInventory"  
>>>>>>> mode="sync"/>
>>>>>>> +    </eca>
>>>>>>> </service-eca>
>>>>>>> Modified: ofbiz/trunk/applications/product/servicedef/ 
>>>>>>> services_shipment.xml
>>>>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/servicedef/services_shipment.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>>  <http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/servicedef/services_shipment.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>> >
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> = 
>>>>>>> ================================================================
>>>>>>> --- ofbiz/trunk/applications/product/servicedef/ 
>>>>>>> services_shipment.xml (original)
>>>>>>> +++ ofbiz/trunk/applications/product/servicedef/ 
>>>>>>> services_shipment.xml Thu Jun 18 10:48:09 2009
>>>>>>> @@ -709,12 +709,11 @@
>>>>>>>      <override name="facilityId" optional="false"/>
>>>>>>>  </service>
>>>>>>> -    <service  
>>>>>>> name="issueOrderItemToShipmentAndReceiveAgainstPO"  
>>>>>>> engine="group" auth="true">
>>>>>>> +    <service  
>>>>>>> name="issueOrderItemToShipmentAndReceiveAgainstPO"  
>>>>>>> engine="simple" transaction-timeout="600"
>>>>>>> +            location="component://product/script/org/ofbiz/ 
>>>>>>> shipment/receipt/ShipmentReceiptServices.xml"  
>>>>>>> invoke="issueOrderItemToShipmentAndReceiveAgainstPO"  
>>>>>>> auth="true">
>>>>>>>      <description>Issues order item quantity specified to the  
>>>>>>> shipment, then receives inventory for that item and quantity</ 
>>>>>>> description>
>>>>>>> -        <group>
>>>>>>> -            <invoke name="issueOrderItemToShipment" result-to- 
>>>>>>> context="true"/>
>>>>>>> -            <invoke name="receiveInventoryProduct" result-to- 
>>>>>>> context="true"/>
>>>>>>> -        </group>
>>>>>>> +        <implements service="issueOrderItemToShipment"/>
>>>>>>> +        <implements service="receiveInventoryProduct"/>
>>>>>>>  </service>
>>>>>>>   <service name="quickReceiveReturn" engine="simple"
>>>>>>> @@ -875,4 +874,14 @@
>>>>>>>      <attribute name="body" type="String" mode="OUT"  
>>>>>>> optional="true"/>
>>>>>>>      <attribute name="messageWrapper"  
>>>>>>> type="org.ofbiz.service.mail.MimeMessageWrapper" mode="OUT"/>
>>>>>>>  </service>
>>>>>>> +    <service  
>>>>>>> name="updateIssuanceShipmentAndPoOnReceiveInventory"  
>>>>>>> engine="simple"
>>>>>>> +            location="component://product/script/org/ofbiz/ 
>>>>>>> shipment/receipt/ShipmentReceiptServices.xml"  
>>>>>>> invoke="updateIssuanceShipmentAndPoOnReceiveInventory">
>>>>>>> +        <description>Update issuance, shipment and order  
>>>>>>> items if quantity received is higher than quantity on purchase  
>>>>>>> order</description>
>>>>>>> +        <attribute name="orderId" type="String" mode="IN"  
>>>>>>> optional="false"/>
>>>>>>> +        <attribute name="orderItemSeqId" type="String"  
>>>>>>> mode="IN" optional="false"/>
>>>>>>> +        <attribute name="quantityAccepted"  type="BigDecimal"  
>>>>>>> mode="IN" optional="false"/>
>>>>>>> +        <attribute name="shipmentId" type="String" mode="IN"  
>>>>>>> optional="true"/>
>>>>>>> +        <attribute name="shipmentItemSeqId" type="String"  
>>>>>>> mode="IN" optional="true"/>
>>>>>>> +        <attribute name="unitCost" type="String" mode="IN"  
>>>>>>> optional="false"/>
>>>>>>> +    </service>
>>>>>>> </services>
>>>>>
>>
>


Re: svn commit: r786013 - in /ofbiz/trunk/applications: order/servicedef/ product/script/org/ofbiz/shipment/issuance/ product/script/org/ofbiz/shipment/receipt/ product/servicedef/

Posted by Scott Gray <sc...@hotwaxmedia.com>.
Hi Mridul,

I'm not sure I understand, are you proposing that we affix $double to  
the end of all our values?  Having spent many many hours removing the  
use of doubles from OFBiz I would be quite a bit against that.

Regards
Scott

On 11/09/2009, at 9:57 PM, Mridul Pathak wrote:

> Hi Adrian,
>
>      I have given a try to fix this bug and uploaded the patch on  
> jira issue OFBIZ-2928.  It would be great if you can have a look at  
> the patch.
>
> --
> Thanks,
> Mridul Pathak
>
> On 18-Jun-09, at 10:34 PM, Adrian Crum wrote:
>
>> Thank you for the information. That is definitely a bug that should  
>> be fixed. I will look into it as soon as I have time.
>>
>> -Adrian
>>
>> Mridul Pathak wrote:
>>> Hi Adrian,
>>>     I tried using variable name modifier as suggested by you, but  
>>> it doesn't seem to be working.  I am getting following warning on  
>>> terminal: *Code*: <set field="itemIssuance.quantity" value="$ 
>>> {parameters.quantity$double + itemIssuance.quantity$double}"  
>>> type="BigDecimal"/>
>>> *Warning*: "2009-06-18 22:02:59,475 (http-0.0.0.0-8443-1)  
>>> [      GenericEntity.java:704:WARN ] The field name (or key)  
>>> [quantity$double] is not valid for entity [ItemIssuance], printing  
>>> IllegalArgumentException instead of throwing it because Map  
>>> interface specification does not allow throwing that exception."
>>>    When I tried it following way, it worked correctly:
>>> *Code*:
>>> <set field="itemIssuanceQuantity" from- 
>>> field="itemIssuance.quantity" type="BigDecimal"/>
>>> <set field="thisQuantity" from-field="parameters.quantity"  
>>> type="BigDecimal"/>
>>> <set field="itemIssuance.quantity" value="${thisQuantity$double +  
>>> itemIssuanceQuantity$double}" type="BigDecimal"/>
>>>    I can do it the second way, but is it possible to make the  
>>> former code snippet work?
>>> --
>>> Thanks,
>>> Mridul Pathak
>>> On 18-Jun-09, at 8:12 PM, Mridul Pathak wrote:
>>>> Thanks Adrian for your useful comments, this will help me to make  
>>>> better use of UEL in future :).
>>>> Ashish, can you please reopen the Jira Issue OFBIZ-2619.  So that  
>>>> I can upload a patch with these improvements on the same issue.
>>>>
>>>> --
>>>> Thanks,
>>>> Mridul Pathak
>>>>
>>>> On 18-Jun-09, at 8:00 PM, Adrian Crum wrote:
>>>>
>>>>> It's good to see UEL expressions used to simplify simple method  
>>>>> code. One thing to watch out for though - UEL will throw an  
>>>>> exception if an expression variable doesn't exist. OFBiz has a  
>>>>> variable name modifier that can be used to avoid that.
>>>>>
>>>>> For example:
>>>>>
>>>>> <set field="itemIssuance.quantity" value="$ 
>>>>> {itemIssuance.quantity + parameters.quantity}" type="BigDecimal"/>
>>>>>
>>>>> would be better as:
>>>>>
>>>>> <set field="itemIssuance.quantity" value="${itemIssuance.quantity 
>>>>> $double + parameters.quantity$double}" type="BigDecimal"/>
>>>>>
>>>>> For more information:
>>>>>
>>>>> http://docs.ofbiz.org/x/Hhk
>>>>>
>>>>> -Adrian
>>>>>
>>>>>
>>>>> ashish@apache.org <ma...@apache.org> wrote:
>>>>>> Author: ashish
>>>>>> Date: Thu Jun 18 10:48:09 2009
>>>>>> New Revision: 786013
>>>>>> URL: http://svn.apache.org/viewvc?rev=786013&view=rev <http://svn.apache.org/viewvc?rev=786013&view=rev 
>>>>>> >
>>>>>> Log:
>>>>>> Applied patch from jira issue OFBIZ-2619 (Issues with Receive  
>>>>>> PO functionality).
>>>>>> I have tested this patch extensively and now things looks more  
>>>>>> accurate.
>>>>>> I agree with the issues specified from Mridul in the jira issue.
>>>>>> Thanks Mridul for your contribution.
>>>>>> Modified:
>>>>>>  ofbiz/trunk/applications/order/servicedef/secas.xml
>>>>>>  ofbiz/trunk/applications/product/script/org/ofbiz/shipment/ 
>>>>>> issuance/IssuanceServices.xml
>>>>>>  ofbiz/trunk/applications/product/script/org/ofbiz/shipment/ 
>>>>>> receipt/ShipmentReceiptServices.xml
>>>>>>  ofbiz/trunk/applications/product/servicedef/secas.xml
>>>>>>  ofbiz/trunk/applications/product/servicedef/ 
>>>>>> services_shipment.xml
>>>>>> Modified: ofbiz/trunk/applications/order/servicedef/secas.xml
>>>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/servicedef/secas.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>  <http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/servicedef/secas.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>> >
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> =================================================================
>>>>>> --- ofbiz/trunk/applications/order/servicedef/secas.xml  
>>>>>> (original)
>>>>>> +++ ofbiz/trunk/applications/order/servicedef/secas.xml Thu Jun  
>>>>>> 18 10:48:09 2009
>>>>>> @@ -52,7 +52,6 @@
>>>>>>       <condition field-name="facilityId" operator="is-not- 
>>>>>> empty"/>
>>>>>>       <condition field-name="orderId" operator="is-not-empty"/>
>>>>>>       <action service="addProductsBackToCategory" mode="sync"/>
>>>>>> -        <action service="updatePoOnReceiveInventory"  
>>>>>> mode="sync"/>
>>>>>>   </eca>
>>>>>>   <eca service="changeOrderItemStatus" event="commit">
>>>>>>       <condition field-name="statusId" operator="equals"  
>>>>>> value="ITEM_CANCELLED"/>
>>>>>> Modified: ofbiz/trunk/applications/product/script/org/ofbiz/ 
>>>>>> shipment/issuance/IssuanceServices.xml
>>>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/shipment/issuance/IssuanceServices.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>  <http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/shipment/issuance/IssuanceServices.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>> >
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> =================================================================
>>>>>> --- ofbiz/trunk/applications/product/script/org/ofbiz/shipment/ 
>>>>>> issuance/IssuanceServices.xml (original)
>>>>>> +++ ofbiz/trunk/applications/product/script/org/ofbiz/shipment/ 
>>>>>> issuance/IssuanceServices.xml Thu Jun 18 10:48:09 2009
>>>>>> @@ -126,7 +126,7 @@
>>>>>>       <entity-one entity-name="Shipment" value-field="shipment"  
>>>>>> auto-field-map="true"/>
>>>>>>        <call-simple-method method- 
>>>>>> name="findCreateIssueShipmentItem"/>
>>>>>> -        <call-simple-method method- 
>>>>>> name="callCreateItemIssuance"/>
>>>>>> +        <call-simple-method method- 
>>>>>> name="findCreateItemIssuance"/>
>>>>>>       <call-simple-method method-name="associateIssueRoles"/>
>>>>>>   </simple-method>
>>>>>> @@ -228,7 +228,7 @@
>>>>>>       </if-compare>
>>>>>>        <!--<call-simple-method method- 
>>>>>> name="findCreateIssueShipmentItem"/>-->
>>>>>> -        <call-simple-method method- 
>>>>>> name="callCreateItemIssuance"/>
>>>>>> +        <call-simple-method method- 
>>>>>> name="findCreateItemIssuance"/>
>>>>>>       <call-simple-method method-name="associateIssueRoles"/>
>>>>>>        <!-- decrement quantity still reserved -->
>>>>>> @@ -307,7 +307,27 @@
>>>>>>       </if-empty>
>>>>>>       <field-to-result field="shipmentItem.shipmentItemSeqId"  
>>>>>> result-name="shipmentItemSeqId"/>
>>>>>>   </simple-method>
>>>>>> -    <simple-method method-name="callCreateItemIssuance" short- 
>>>>>> description="Call Create ItemIssuance - meant to be called in- 
>>>>>> line">
>>>>>> +    <simple-method method-name="findCreateItemIssuance" short- 
>>>>>> description="Find Create ItemIssuance - meant to be called in- 
>>>>>> line">
>>>>>> +        <!-- If a non-sales order find ItemIssuance for  
>>>>>> orderItemSeqId-shimentItemSeqId-shipGroupSeqId pair, update it  
>>>>>> and return -->
>>>>>> +        <if-compare field="orderHeader.orderTypeId"  
>>>>>> operator="not-equals" value="SALES_ORDER">
>>>>>> +            <entity-and list="itemIssuances" entity- 
>>>>>> name="ItemIssuance">
>>>>>> +                <field-map field-name="orderId" from- 
>>>>>> field="orderItem.orderId"/>
>>>>>> +                <field-map field-name="orderItemSeqId" from- 
>>>>>> field="orderItem.orderItemSeqId"/>
>>>>>> +                <field-map field-name="shipmentId" from- 
>>>>>> field="shipmentItem.shipmentId"/>
>>>>>> +                <field-map field-name="shipmentItemSeqId" from- 
>>>>>> field="shipmentItem.shipmentItemSeqId"/>
>>>>>> +                <field-map field-name="shipGroupSeqId" from- 
>>>>>> field="orderItemShipGroupAssoc.shipGroupSeqId"/>
>>>>>> +                <order-by field-name="-issuedDateTime"/>
>>>>>> +            </entity-and>
>>>>>> +            <if-not-empty field="itemIssuances">
>>>>>> +                <first-from-list entry="itemIssuance"  
>>>>>> list="itemIssuances"/>
>>>>>> +                <set field="itemIssuance.quantity" value="$ 
>>>>>> {itemIssuance.quantity + parameters.quantity}"  
>>>>>> type="BigDecimal"/>
>>>>>> +                <store-value value-field="itemIssuance"/>
>>>>>> +                <set field="itemIssuanceId" from- 
>>>>>> field="itemIssuance.itemIssuanceId"/>
>>>>>> +                <field-to-result field="itemIssuanceId"/>
>>>>>> +                <return/>
>>>>>> +            </if-not-empty>
>>>>>> +        </if-compare>
>>>>>> +                 <!-- create the ItemIssuance -->
>>>>>>       <set from-field="parameters.quantity"  
>>>>>> field="itemIssuanceCreate.quantity"/>
>>>>>>       <set from-field="shipmentItem.shipmentId"  
>>>>>> field="itemIssuanceCreate.shipmentId"/>
>>>>>> @@ -557,4 +577,14 @@
>>>>>>       </calculate>
>>>>>>       <call-service service-name="createInventoryItemDetail" in- 
>>>>>> map-name="createDetailMap"/>
>>>>>>   </simple-method>
>>>>>> +    <simple-method method- 
>>>>>> name="getTotalIssuedQuantityForOrderItem" short- 
>>>>>> description="Computes the total issued quantity for an order  
>>>>>> item">
>>>>>> +        <set field="totalIssuedQuantity" type="BigDecimal"  
>>>>>> value="0"/>
>>>>>> +        <entity-and list="allItemIssuances" entity- 
>>>>>> name="ItemIssuance">
>>>>>> +            <field-map field-name="orderId" from- 
>>>>>> field="orderItem.orderId"/>
>>>>>> +            <field-map field-name="orderItemSeqId" from- 
>>>>>> field="orderItem.orderItemSeqId"/>
>>>>>> +        </entity-and>
>>>>>> +        <iterate entry="itemIssuance" list="allItemIssuances">
>>>>>> +            <set field="totalIssuedQuantity" value="$ 
>>>>>> {totalIssuedQuantity + itemIssuance.quantity}"  
>>>>>> type="BigDecimal"/>
>>>>>> +        </iterate>
>>>>>> +    </simple-method>
>>>>>> </simple-methods>
>>>>>> Modified: ofbiz/trunk/applications/product/script/org/ofbiz/ 
>>>>>> shipment/receipt/ShipmentReceiptServices.xml
>>>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/shipment/receipt/ShipmentReceiptServices.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>  <http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/shipment/receipt/ShipmentReceiptServices.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>> >
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> =================================================================
>>>>>> --- ofbiz/trunk/applications/product/script/org/ofbiz/shipment/ 
>>>>>> receipt/ShipmentReceiptServices.xml (original)
>>>>>> +++ ofbiz/trunk/applications/product/script/org/ofbiz/shipment/ 
>>>>>> receipt/ShipmentReceiptServices.xml Thu Jun 18 10:48:09 2009
>>>>>> @@ -313,25 +313,155 @@
>>>>>>           </if-compare>
>>>>>>       </if-compare>
>>>>>>   </simple-method>
>>>>>> +    +    <simple-method method- 
>>>>>> name="issueOrderItemToShipmentAndReceiveAgainstPO" short- 
>>>>>> description="Issues order item quantity specified to the  
>>>>>> shipment, then receives inventory for that item and quantity">
>>>>>> +        <set value="Issue OrderItem to Shipment and Receive  
>>>>>> against PO" field="operationName"/>
>>>>>> +        <check-permission permission="FACILITY"  
>>>>>> action="_CREATE">
>>>>>> +            <fail-message message="Security Error: to run $ 
>>>>>> {operationName} you must have the FACILITY_CREATE or  
>>>>>> FACILITY_ADMIN permission"/>
>>>>>> +        </check-permission>
>>>>>> +        <check-permission permission="FACILITY"  
>>>>>> action="_UPDATE">
>>>>>> +            <fail-message message="Security Error: to run $ 
>>>>>> {operationName} you must have the FACILITY_UPDATE or  
>>>>>> FACILITY_ADMIN permission"/>
>>>>>> +        </check-permission>
>>>>>> +        <call-simple-method method- 
>>>>>> name="checkCanChangeShipmentStatusPacked" xml- 
>>>>>> resource="component://product/script/org/ofbiz/shipment/ 
>>>>>> shipment/ShipmentServices.xml"/>
>>>>>> -    <simple-method method-name="updatePoOnReceiveInventory"  
>>>>>> short-description="Update order items if quantity received is  
>>>>>> higher than quantity on purchase order">
>>>>>> -        <set field="quantityAccepted" from- 
>>>>>> field="parameters.quantityAccepted" type="BigDecimal"/>
>>>>>> -        <entity-one entity-name="OrderItem" value- 
>>>>>> field="orderItem"/>
>>>>>> -        <if-compare-field field="orderItem.quantity"  
>>>>>> operator="less" to-field="quantityAccepted" type="BigDecimal">
>>>>>> -            <set field="orderItem.quantity" from- 
>>>>>> field="quantityAccepted"/>
>>>>>> -            <store-value  value-field="orderItem"/>
>>>>>> -        </if-compare-field>
>>>>>> -        <entity-and entity-name="ItemIssuance"  
>>>>>> list="itemIssuances">
>>>>>> -            <field-map field-name="orderId" from- 
>>>>>> field="parameters.orderId"/>
>>>>>> -            <field-map field-name="orderItemSeqId" from- 
>>>>>> field="parameters.orderItemSeqId"/>
>>>>>> -        </entity-and>
>>>>>> -        <first-from-list list="itemIssuances"  
>>>>>> entry="itemIssuance"/>
>>>>>> -        <if-not-empty field="itemIssuance">
>>>>>> -            <if-compare-field field="itemIssuance.quantity"   
>>>>>> operator="less" to-field="quantityAccepted" type="BigDecimal">
>>>>>> -                <set field="itemIssuance.quantity" from- 
>>>>>> field="quantityAccepted"/>
>>>>>> -                <set-service-fields service- 
>>>>>> name="updateItemIssuance" map="itemIssuance" to- 
>>>>>> map="updateItemIssuanceMap"/>
>>>>>> -                <call-service service- 
>>>>>> name="updateItemIssuance" in-map-name="updateItemIssuanceMap"/>
>>>>>> +        <!-- get orderItem -->
>>>>>> +        <entity-one entity-name="OrderItem" value- 
>>>>>> field="orderItem" auto-field-map="true"/>
>>>>>> +        <!-- get orderItemShipGroupAssoc -->
>>>>>> +        <entity-one entity-name="OrderItemShipGroupAssoc"  
>>>>>> value-field="orderItemShipGroupAssoc" auto-field-map="true"/>
>>>>>> +        <!-- get shipment -->
>>>>>> +        <entity-one entity-name="Shipment" value- 
>>>>>> field="shipment" auto-field-map="true"/>
>>>>>> +        +        <!-- try to find an existing shipmentItem and  
>>>>>> attach to it, if none found create a new shipmentItem -->
>>>>>> +        <!-- if there is NO productId on the orderItem, ALWAYS  
>>>>>> create a new shipmentItem -->
>>>>>> +        <if-not-empty field="orderItem.productId">
>>>>>> +            <entity-condition entity-name="ShipmentItem"  
>>>>>> list="shipmentItems">
>>>>>> +                <condition-list combine="and">
>>>>>> +                    <condition-expr field-name="productId"  
>>>>>> from-field="orderItem.productId"/>
>>>>>> +                    <condition-expr field-name="shipmentId"  
>>>>>> from-field="shipment.shipmentId"/>
>>>>>> +                    <condition-expr field- 
>>>>>> name="shipmentItemSeqId" from- 
>>>>>> field="parameters.shipmentItemSeqId" ignore-if-empty="true"/>
>>>>>> +                </condition-list>
>>>>>> +                <order-by field-name="shipmentItemSeqId"/>
>>>>>> +            </entity-condition>
>>>>>> +            <first-from-list entry="shipmentItem"  
>>>>>> list="shipmentItems"/>
>>>>>> +        </if-not-empty>
>>>>>> +
>>>>>> +        <if-empty field="shipmentItem">
>>>>>> +            <set from-field="orderItem.productId"  
>>>>>> field="shipmentItemCreate.productId"/>
>>>>>> +            <set from-field="parameters.shipmentId"  
>>>>>> field="shipmentItemCreate.shipmentId"/>
>>>>>> +            <set from-field="parameters.quantity"  
>>>>>> field="shipmentItemCreate.quantity"/>
>>>>>> +            <call-service service-name="createShipmentItem" in- 
>>>>>> map-name="shipmentItemCreate">
>>>>>> +                <result-to-field result- 
>>>>>> name="shipmentItemSeqId"  
>>>>>> field="shipmentItemLookupPk.shipmentItemSeqId"/>
>>>>>> +            </call-service>
>>>>>> +            <set from-field="parameters.shipmentId"  
>>>>>> field="shipmentItemLookupPk.shipmentId"/>
>>>>>> +            <find-by-primary-key entity-name="ShipmentItem"  
>>>>>> map="shipmentItemLookupPk" value-field="shipmentItem"/>
>>>>>> +            +            <!-- Create ItemIssuance for this  
>>>>>> ShipmentItem -->
>>>>>> +            <set from-field="parameters.quantity"  
>>>>>> field="itemIssuanceCreate.quantity"/>
>>>>>> +            <set from-field="shipmentItem.shipmentId"  
>>>>>> field="itemIssuanceCreate.shipmentId"/>
>>>>>> +            <set from-field="shipmentItem.shipmentItemSeqId"  
>>>>>> field="itemIssuanceCreate.shipmentItemSeqId"/>
>>>>>> +            <set from-field="orderItem.orderId"  
>>>>>> field="itemIssuanceCreate.orderId"/>
>>>>>> +            <set from-field="orderItem.orderItemSeqId"  
>>>>>> field="itemIssuanceCreate.orderItemSeqId"/>
>>>>>> +            +            <if-not-empty  
>>>>>> field="orderItemShipGroupAssoc">
>>>>>> +                <!-- If we have a ShipGroup Assoc for this  
>>>>>> Item to focus on, set that; this is mostly the case for  
>>>>>> purchase orders and such -->
>>>>>> +                <set from- 
>>>>>> field="orderItemShipGroupAssoc.shipGroupSeqId"  
>>>>>> field="itemIssuanceCreate.shipGroupSeqId"/>
>>>>>> +            </if-not-empty>
>>>>>> +
>>>>>> +            <set from-field="userLogin.userLoginId"  
>>>>>> field="itemIssuanceCreate.issuedByUserLoginId"/>
>>>>>> +            <call-service service-name="createItemIssuance" in- 
>>>>>> map-name="itemIssuanceCreate">
>>>>>> +                <result-to-field result-name="itemIssuanceId"/>
>>>>>> +            </call-service>
>>>>>> +        <else>
>>>>>> +            <call-simple-method method- 
>>>>>> name="getTotalIssuedQuantityForOrderItem" xml- 
>>>>>> resource="component://product/script/org/ofbiz/shipment/ 
>>>>>> issuance/IssuanceServices.xml"/>
>>>>>> +            <call-simple-method method- 
>>>>>> name="getReceivedQuantityForOrderItem"/>
>>>>>> +            <set field="receivedQuantity" value="$ 
>>>>>> {receivedQuantity + parameters.quantity}" type="BigDecimal"/>
>>>>>> +            <if-compare-field field="totalIssuedQuantity"  
>>>>>> operator="less" to-field="receivedQuantity" type="BigDecimal">
>>>>>> +                <set field="quantityToAdd" value="$ 
>>>>>> {receivedQuantity - totalIssuedQuantity}" type="BigDecimal"/>
>>>>>> +                <set field="shipmentItem.quantity" value="$ 
>>>>>> {shipmentItem.quantity + quantityToAdd}" type="BigDecimal"/>
>>>>>> +                <store-value value-field="shipmentItem"/>
>>>>>> +                <set field="shipmentItemSeqId" from- 
>>>>>> field="shipmentItem.shipmentItemSeqId"/>
>>>>>> +                +                <entity-and  
>>>>>> list="itemIssuances" entity-name="ItemIssuance">
>>>>>> +                    <field-map field-name="orderId" from- 
>>>>>> field="orderItem.orderId"/>
>>>>>> +                    <field-map field-name="orderItemSeqId"  
>>>>>> from-field="orderItem.orderItemSeqId"/>
>>>>>> +                    <field-map field-name="shipmentId" from- 
>>>>>> field="shipmentItem.shipmentId"/>
>>>>>> +                    <field-map field-name="shipmentItemSeqId"  
>>>>>> from-field="shipmentItem.shipmentItemSeqId"/>
>>>>>> +                    <field-map field-name="shipGroupSeqId"  
>>>>>> from-field="orderItemShipGroupAssoc.shipGroupSeqId"/>
>>>>>> +                    <order-by field-name="-issuedDateTime"/>
>>>>>> +                </entity-and>
>>>>>> +                <first-from-list entry="itemIssuance"  
>>>>>> list="itemIssuances"/>
>>>>>> +                <set field="itemIssuance.quantity" value="$ 
>>>>>> {itemIssuance.quantity + quantityToAdd}" type="BigDecimal"/>
>>>>>> +                <store-value value-field="itemIssuance"/>
>>>>>> +                <set field="itemIssuanceId" from- 
>>>>>> field="itemIssuance.itemIssuanceId"/>
>>>>>>           </if-compare-field>
>>>>>> +        </else>
>>>>>> +        </if-empty>
>>>>>> +
>>>>>> +        <call-simple-method method-name="associateIssueRoles"  
>>>>>> xml-resource="component://product/script/org/ofbiz/shipment/ 
>>>>>> issuance/IssuanceServices.xml"/>
>>>>>> +
>>>>>> +        <set-service-fields service- 
>>>>>> name="receiveInventoryProduct" map="parameters" to- 
>>>>>> map="receiveInventoryProductCtx"/>
>>>>>> +        <set  
>>>>>> field="receiveInventoryProductCtx.shipmentItemSeqId" from- 
>>>>>> field="shipmentItemSeqId"/>
>>>>>> +        <set field="receiveInventoryProductCtx.itemIssuanceId"  
>>>>>> from-field="itemIssuanceId"/>
>>>>>> +        <call-service service-name="receiveInventoryProduct"  
>>>>>> in-map-name="receiveInventoryProductCtx">
>>>>>> +            <result-to-result result-name="inventoryItemId"/>
>>>>>> +        </call-service>
>>>>>> +    </simple-method>
>>>>>> +    +    <simple-method method- 
>>>>>> name="getReceivedQuantityForOrderItem" short- 
>>>>>> description="Computes the till now received quantity from all  
>>>>>> ShipmentReceipts">
>>>>>> +        <set field="receivedQuantity" type="BigDecimal"  
>>>>>> value="0"/>
>>>>>> +        <entity-and list="shipmentReceipts" entity- 
>>>>>> name="ShipmentReceipt">
>>>>>> +            <field-map field-name="orderId" from- 
>>>>>> field="orderItem.orderId"/>
>>>>>> +            <field-map field-name="orderItemSeqId" from- 
>>>>>> field="orderItem.orderItemSeqId"/>
>>>>>> +        </entity-and>
>>>>>> +        <iterate entry="shipmentReceipt"  
>>>>>> list="shipmentReceipts">
>>>>>> +            <set field="receivedQuantity" value="$ 
>>>>>> {receivedQuantity + shipmentReceipt.quantityAccepted}"  
>>>>>> type="BigDecimal"/>
>>>>>> +        </iterate>
>>>>>> +    </simple-method>
>>>>>> +
>>>>>> +    <simple-method method- 
>>>>>> name="updateIssuanceShipmentAndPoOnReceiveInventory" short- 
>>>>>> description="Update issuance, shipment and order items if  
>>>>>> quantity received is higher than quantity on purchase order">
>>>>>> +        <entity-one value-field="orderItem" entity- 
>>>>>> name="OrderItem"/>
>>>>>> +        <set field="unitCost" from-field="parameters.unitCost"  
>>>>>> type="BigDecimal"/>
>>>>>> +        <if-compare-field field="unitCost" operator="not- 
>>>>>> equals" to-field="orderItem.unitPrice">
>>>>>> +            <set field="orderItem.unitPrice" from- 
>>>>>> field="unitCost"/>
>>>>>> +            <store-value value-field="orderItem"/>
>>>>>> +        </if-compare-field>
>>>>>> +        <call-simple-method method- 
>>>>>> name="getReceivedQuantityForOrderItem"/>
>>>>>> +        <if-compare-field field="orderItem.quantity"  
>>>>>> operator="less" to-field="receivedQuantity" type="BigDecimal">
>>>>>> +            <set field="orderItem.quantity" from- 
>>>>>> field="receivedQuantity"/>
>>>>>> +            <store-value value-field="orderItem"/>
>>>>>> +        </if-compare-field>
>>>>>> +        <if-not-empty field="parameters.shipmentId">
>>>>>> +            <if-not-empty field="orderItem.productId">
>>>>>> +                <call-simple-method method- 
>>>>>> name="getTotalIssuedQuantityForOrderItem" xml- 
>>>>>> resource="component://product/script/org/ofbiz/shipment/ 
>>>>>> issuance/IssuanceServices.xml"/>
>>>>>> +                <if-compare-field field="totalIssuedQuantity"  
>>>>>> operator="less" to-field="receivedQuantity" type="BigDecimal">
>>>>>> +                    <set field="quantityToAdd" value="$ 
>>>>>> {receivedQuantity - totalIssuedQuantity}" type="BigDecimal"/>
>>>>>> +                    <entity-condition entity- 
>>>>>> name="ShipmentItem" list="shipmentItems">
>>>>>> +                        <condition-list combine="and">
>>>>>> +                            <condition-expr field- 
>>>>>> name="productId" from-field="orderItem.productId"/>
>>>>>> +                            <condition-expr field- 
>>>>>> name="shipmentId" from-field="parameters.shipmentId"/>
>>>>>> +                            <condition-expr field- 
>>>>>> name="shipmentItemSeqId" from- 
>>>>>> field="parameters.shipmentItemSeqId" ignore-if-empty="true"/>
>>>>>> +                        </condition-list>
>>>>>> +                        <order-by field- 
>>>>>> name="shipmentItemSeqId"/>
>>>>>> +                    </entity-condition>
>>>>>> +                    <first-from-list entry="shipmentItem"  
>>>>>> list="shipmentItems"/>
>>>>>> +                    <set field="shipmentItem.quantity" value="$ 
>>>>>> {shipmentItem.quantity + quantityToAdd}" type="BigDecimal"/>
>>>>>> +                    <store-value value-field="shipmentItem"/>
>>>>>> +                    +                    <entity-and  
>>>>>> list="itemIssuances" entity-name="ItemIssuance">
>>>>>> +                        <field-map field-name="orderId" from- 
>>>>>> field="parameters.orderId"/>
>>>>>> +                        <field-map field-name="orderItemSeqId"  
>>>>>> from-field="parameters.orderItemSeqId"/>
>>>>>> +                        <field-map field-name="shipmentId"  
>>>>>> from-field="parameters.shipmentId"/>
>>>>>> +                        <field-map field- 
>>>>>> name="shipmentItemSeqId" from- 
>>>>>> field="shipmentItem.shipmentItemSeqId"/>
>>>>>> +                        <order-by field-name="-issuedDateTime"/>
>>>>>> +                    </entity-and>
>>>>>> +                    <first-from-list entry="itemIssuance"  
>>>>>> list="itemIssuances"/>
>>>>>> +                    <set field="itemIssuance.quantity" value="$ 
>>>>>> {itemIssuance.quantity + quantityToAdd}" type="BigDecimal"/>
>>>>>> +                    <store-value value-field="itemIssuance"/>
>>>>>> +                    +                    <set  
>>>>>> field="itemIssuanceId" from-field="itemIssuance.itemIssuanceId"/>
>>>>>> +                    <call-simple-method method- 
>>>>>> name="associateIssueRoles" xml-resource="component://product/ 
>>>>>> script/org/ofbiz/shipment/issuance/IssuanceServices.xml"/>
>>>>>> +                </if-compare-field>
>>>>>> +            </if-not-empty>
>>>>>>       </if-not-empty>
>>>>>>   </simple-method>
>>>>>> Modified: ofbiz/trunk/applications/product/servicedef/secas.xml
>>>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/servicedef/secas.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>  <http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/servicedef/secas.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>> >
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> =================================================================
>>>>>> --- ofbiz/trunk/applications/product/servicedef/secas.xml  
>>>>>> (original)
>>>>>> +++ ofbiz/trunk/applications/product/servicedef/secas.xml Thu  
>>>>>> Jun 18 10:48:09 2009
>>>>>> @@ -117,4 +117,10 @@
>>>>>>       <condition field-name="orderIdList" operator="is-not- 
>>>>>> empty"/>
>>>>>>       <action service="convertPickOrderIdListToHeaders"  
>>>>>> mode="sync"/>
>>>>>>   </eca>
>>>>>> +    +    <eca service="receiveInventoryProduct" event="commit">
>>>>>> +        <condition field-name="facilityId" operator="is-not- 
>>>>>> empty"/>
>>>>>> +        <condition field-name="orderId" operator="is-not- 
>>>>>> empty"/>
>>>>>> +        <action  
>>>>>> service="updateIssuanceShipmentAndPoOnReceiveInventory"  
>>>>>> mode="sync"/>
>>>>>> +    </eca>
>>>>>> </service-eca>
>>>>>> Modified: ofbiz/trunk/applications/product/servicedef/ 
>>>>>> services_shipment.xml
>>>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/servicedef/services_shipment.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>>  <http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/servicedef/services_shipment.xml?rev=786013&r1=786012&r2=786013&view=diff 
>>>>>> >
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> = 
>>>>>> =================================================================
>>>>>> --- ofbiz/trunk/applications/product/servicedef/ 
>>>>>> services_shipment.xml (original)
>>>>>> +++ ofbiz/trunk/applications/product/servicedef/ 
>>>>>> services_shipment.xml Thu Jun 18 10:48:09 2009
>>>>>> @@ -709,12 +709,11 @@
>>>>>>       <override name="facilityId" optional="false"/>
>>>>>>   </service>
>>>>>> -    <service  
>>>>>> name="issueOrderItemToShipmentAndReceiveAgainstPO"  
>>>>>> engine="group" auth="true">
>>>>>> +    <service  
>>>>>> name="issueOrderItemToShipmentAndReceiveAgainstPO"  
>>>>>> engine="simple" transaction-timeout="600"
>>>>>> +            location="component://product/script/org/ofbiz/ 
>>>>>> shipment/receipt/ShipmentReceiptServices.xml"  
>>>>>> invoke="issueOrderItemToShipmentAndReceiveAgainstPO" auth="true">
>>>>>>       <description>Issues order item quantity specified to the  
>>>>>> shipment, then receives inventory for that item and quantity</ 
>>>>>> description>
>>>>>> -        <group>
>>>>>> -            <invoke name="issueOrderItemToShipment" result-to- 
>>>>>> context="true"/>
>>>>>> -            <invoke name="receiveInventoryProduct" result-to- 
>>>>>> context="true"/>
>>>>>> -        </group>
>>>>>> +        <implements service="issueOrderItemToShipment"/>
>>>>>> +        <implements service="receiveInventoryProduct"/>
>>>>>>   </service>
>>>>>>    <service name="quickReceiveReturn" engine="simple"
>>>>>> @@ -875,4 +874,14 @@
>>>>>>       <attribute name="body" type="String" mode="OUT"  
>>>>>> optional="true"/>
>>>>>>       <attribute name="messageWrapper"  
>>>>>> type="org.ofbiz.service.mail.MimeMessageWrapper" mode="OUT"/>
>>>>>>   </service>
>>>>>> +    <service  
>>>>>> name="updateIssuanceShipmentAndPoOnReceiveInventory"  
>>>>>> engine="simple"
>>>>>> +            location="component://product/script/org/ofbiz/ 
>>>>>> shipment/receipt/ShipmentReceiptServices.xml"  
>>>>>> invoke="updateIssuanceShipmentAndPoOnReceiveInventory">
>>>>>> +        <description>Update issuance, shipment and order items  
>>>>>> if quantity received is higher than quantity on purchase order</ 
>>>>>> description>
>>>>>> +        <attribute name="orderId" type="String" mode="IN"  
>>>>>> optional="false"/>
>>>>>> +        <attribute name="orderItemSeqId" type="String"  
>>>>>> mode="IN" optional="false"/>
>>>>>> +        <attribute name="quantityAccepted"  type="BigDecimal"  
>>>>>> mode="IN" optional="false"/>
>>>>>> +        <attribute name="shipmentId" type="String" mode="IN"  
>>>>>> optional="true"/>
>>>>>> +        <attribute name="shipmentItemSeqId" type="String"  
>>>>>> mode="IN" optional="true"/>
>>>>>> +        <attribute name="unitCost" type="String" mode="IN"  
>>>>>> optional="false"/>
>>>>>> +    </service>
>>>>>> </services>
>>>>
>