This is an automated email from the ASF dual-hosted git repository.

gsperi pushed a commit to branch release22.01
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git


The following commit(s) were added to refs/heads/release22.01 by this push:
     new b10e74b030 Fixed: inv. reservation places order if not enough qty 
(OFBIZ-12455) If quantity not reserved is not 0, requireInventory is set to Y, 
system let an order to be placed anyway.
b10e74b030 is described below

commit b10e74b030431c16fd945a4219630e2740c51f23
Author: Giulio Speri <giulio.sp...@mpstyle.it>
AuthorDate: Thu Apr 7 23:33:54 2022 +0200

    Fixed: inv. reservation places order if not enough qty (OFBIZ-12455)
    If quantity not reserved is not 0, requireInventory is set to Y, system
    let an order to be placed anyway.
    
    The usage of the service around the project let make an important
    assertion: we can consider that also reserveInventory flag of the
    ProductStore is Y, since right now is always the caller context that
    checks for the reserveInventory flag.
    
    This fix simply returns a specific error to the caller, avoiding the
    system to place the order.
    
    Thanks Nicola Mazzoni for helping in debug this issue and Jacopo
    Cappellato for the patch review.
---
 applications/product/config/ProductUiLabels.xml                  | 4 ++++
 .../minilang/product/inventory/InventoryReserveServices.xml      | 9 ++++++++-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/applications/product/config/ProductUiLabels.xml 
b/applications/product/config/ProductUiLabels.xml
index 1226c40899..37f5799100 100644
--- a/applications/product/config/ProductUiLabels.xml
+++ b/applications/product/config/ProductUiLabels.xml
@@ -20866,6 +20866,10 @@
         <value xml:lang="zh">这个明细缺货</value>
         <value xml:lang="zh-TW">這個細項缺貨</value>
     </property>
+    <property key="ProductCannotReserveInventoryNotEnoughStock">
+       <value xml:lang="it">Impossibile riservare l'articolo 
${parameters.productId}: quantità in stock non sufficiente nel deposito 
${parameters.facilityId}. Quantità  non riservata è 
${parameters.quantityNotReserved}</value>
+        <value xml:lang="en">Cannot reserve product ${parameters.productId}: 
not enough quantity left in stock for facility ${parameters.facilityId}. 
Quantity not reserved is ${parameters.quantityNotReserved}</value>
+     </property>
     <property key="ProductItemPrc">
         <value xml:lang="de">Position Preis</value>
         <value xml:lang="en">Item Prc</value>
diff --git 
a/applications/product/minilang/product/inventory/InventoryReserveServices.xml 
b/applications/product/minilang/product/inventory/InventoryReserveServices.xml
index fb4f603715..5146bec889 100644
--- 
a/applications/product/minilang/product/inventory/InventoryReserveServices.xml
+++ 
b/applications/product/minilang/product/inventory/InventoryReserveServices.xml
@@ -163,7 +163,14 @@ under the License.
                 -->
                 <if-compare field="parameters.quantityNotReserved" 
operator="not-equals" value="0" type="BigDecimal">
                     <if-compare field="parameters.requireInventory" 
operator="equals" value="Y">
-                        <!-- use this else pattern to accomplish the anything 
but Y logic, ie if not specified default to inventory NOT required -->
+                        <!-- if there is still quantity not reserved but 
ProductStore is configured to require inventory, we can 
+                            assume here that also reserveInventory is set to Y 
(reserveInventory is checked by caller services).
+                           In such a scenario we return an error and avoid 
order creation. 
+                       -->
+                        <add-error>
+                            <fail-property resource="ProductUiLabels" 
property="ProductCannotReserveInventoryNotEnoughStock"/>
+                        </add-error>
+                        <check-errors/>
                     <else>
                         <if-not-empty field="lastNonSerInventoryItem">
                             <!-- subtract from quantityNotReserved from the 
availableToPromise of existing inventory item -->

Reply via email to