Author: ashish
Date: Sat Jul 22 09:20:33 2017
New Revision: 1802663

URL: http://svn.apache.org/viewvc?rev=1802663&view=rev
Log:
Improved: OFBIZ-7471: Improve all the service level error messages for missing 
required field for facility component(OFBIZ-8714)
Thanks Jagpreet and Lalit for the contribution.

Modified:
    
ofbiz/ofbiz-framework/trunk/applications/product/config/ProductErrorUiLabels.xml
    
ofbiz/ofbiz-framework/trunk/applications/product/servicedef/services_facility.xml

Modified: 
ofbiz/ofbiz-framework/trunk/applications/product/config/ProductErrorUiLabels.xml
URL: 
http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/product/config/ProductErrorUiLabels.xml?rev=1802663&r1=1802662&r2=1802663&view=diff
==============================================================================
--- 
ofbiz/ofbiz-framework/trunk/applications/product/config/ProductErrorUiLabels.xml
 (original)
+++ 
ofbiz/ofbiz-framework/trunk/applications/product/config/ProductErrorUiLabels.xml
 Sat Jul 22 09:20:33 2017
@@ -53,6 +53,97 @@
         <value xml:lang="zh">在当前分类中没有找到产品。</value>
         <value xml:lang="zh-TW">在當前分類中沒有找到產品.</value>
     </property>
+    <property key="facility.assocProducts">
+        <value xml:lang="en">Required Field Missing : Assoc Products</value>
+    </property>
+    <property key="facility.contactMechId">
+        <value xml:lang="en">Required Field Missing : Contact Mech Id.</value>
+    </property>
+    <property key="facility.contactMechTypeId">
+        <value xml:lang="en">Required Field Missing : Contact Mech Type 
Id.</value>
+    </property>
+    <property key="facility.containerId">
+        <value xml:lang="en">Required Field Missing : Container Id</value>
+    </property>
+    <property key="facility.emailAddress">
+        <value xml:lang="en">Required Field Missing : Email Address.</value>
+    </property>
+    <property key="facility.fromDate">
+        <value xml:lang="en">Required Field Missing : From Date.</value>
+    </property>
+    <property key="facility.facilityId">
+        <value xml:lang="en">Required Field Missing : Facility Id.</value>
+    </property>
+    <property key="facility.facilityIdTo">
+        <value xml:lang="en">Required Field Missing : Facility Id To.</value>
+    </property>
+    <property key="facility.inventoryCountDate">
+        <value xml:lang="en">Required Fied Missing : Inventory Count 
Date.</value>
+    </property>
+    <property key="facility.inventoryItemId">
+        <value xml:lang="en">Required Field Missing : Inventory Item 
Id.</value>
+    </property>
+    <property key="facility.inventoryItemVariance">
+        <value xml:lang="en">Required Field Missing : Inventory Item 
Variance.</value>
+    </property>
+    <property key="facility.itemIssuanceId">
+        <value xml:lang="en">Required Field Missing : Item Issuance Id.</value>
+    </property>
+    <property key="facility.inventoryTransferId">
+        <value xml:lang="en">Required Field Missing : Inventory Transfer 
Id.</value>
+    </property>
+    <property key="facility.locationSeqId">
+        <value xml:lang="en">Required Field Missing : Location Sequence 
Id.</value>
+    </property>
+    <property key="facility.orderId">
+        <value xml:lang="en">Required Field Missing : Order Id.</value>
+    </property>
+    <property key="facility.orderItems">
+        <value xml:lang="en">Required Field Missing: Order Items.</value>
+    </property>
+    <property key="facility.orderItemSeqId">
+        <value xml:lang="en">Required Field Missing : Order Item Sequence 
Id.</value>
+    </property>
+    <property key="facility.OrderItemShipGrpInvRes">
+        <value xml:lang="en">Required Field Missing : Order Item Ship Grp Inv 
Res.</value>
+    </property>
+    <property key="facility.partyId">
+        <value xml:lang="en">Requied Field Missing : Party Id.</value>
+    </property>
+    <property key="facility.productId">
+        <value xml:lang="en">Required Field Missing : Product Id.</value>
+    </property>
+    <property key="facility.promisedDatetime">
+        <value xml:lang="en">Required Field Missing : Promised Date 
Time.</value>
+    </property>
+    <property key="facility.quantity">
+        <value xml:lang="en">Required Field Missing : Quantity.</value>
+    </property>
+    <property key="facility.quantityMoved">
+        <value xml:lang="en">Required Field Missing : Quantity Moved.</value>
+    </property>
+    <property key="facility.requireInventory">
+        <value xml:lang="en">Required Field Missing : Require 
Inventory.</value>
+    </property>
+    <property key="facility.reservedDatetime">
+        <value xml:lang="en">Required Field Missing : Reserved Date 
Time</value>
+    </property>
+    <property key="facility.reserveOrderEnumId">
+        <value xml:lang="en">Required Field Missing : Reserve Order Enum 
Id.</value>
+    </property>
+
+    <property key="facility.shipGroupSeqId">
+        <value xml:lang="en">Required Field Missing : Ship Group Sequence 
Id.</value>
+    </property>
+    <property key="facility.statusId">
+        <value xml:lang="en">Required Field Missing : Status Id.</value>
+    </property>
+    <property key="facility.targetLocationSeqId">
+        <value xml:lang="en">Required Field Missing : Target Location Sequence 
Id.</value>
+    </property>
+    <property key="facility.xferQty">
+        <value xml:lang="en">Required Field Missing : xferQty</value>
+    </property>
     <property key="ImageManagementErrorRmoveDefaultImage">
         <value xml:lang="de">Kann Bild nicht entfernen, es ist das 
Standardbild.</value>
         <value xml:lang="en">Unable to remove an image. It is the defualt 
image.</value>

Modified: 
ofbiz/ofbiz-framework/trunk/applications/product/servicedef/services_facility.xml
URL: 
http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/product/servicedef/services_facility.xml?rev=1802663&r1=1802662&r2=1802663&view=diff
==============================================================================
--- 
ofbiz/ofbiz-framework/trunk/applications/product/servicedef/services_facility.xml
 (original)
+++ 
ofbiz/ofbiz-framework/trunk/applications/product/servicedef/services_facility.xml
 Sat Jul 22 09:20:33 2017
@@ -49,15 +49,21 @@ under the License.
         <override name="productId" optional="false"/>
         <override name="facilityId" optional="false"/>
     </service>
+
     <service name="createInventoryItemCheckSetAtpQoh" engine="simple"
                 
location="component://product/minilang/product/inventory/InventoryServices.xml" 
invoke="createInventoryItemCheckSetAtpQoh" auth="false">
         <description>
         </description>
-        <attribute name="inventoryItemId" type="String" mode="IN" 
optional="false"/>
+        <attribute name="inventoryItemId" type="String" mode="IN" 
optional="false">
+            <type-validate>
+                <fail-property resource="ProductErrorUiLabels" 
property="facility.inventoryItemId"/>
+            </type-validate>
+        </attribute>
         <attribute name="availableToPromiseTotal" type="BigDecimal" mode="IN" 
optional="true"/>
         <attribute name="quantityOnHandTotal" type="BigDecimal" mode="IN" 
optional="true"/>
     </service>
 
+
     <service name="updateInventoryItem" default-entity-name="InventoryItem" 
engine="simple"
                 
location="component://product/minilang/product/inventory/InventoryServices.xml" 
invoke="updateInventoryItem" auth="true">
         <description>Update an InventoryItem</description>
@@ -74,7 +80,12 @@ under the License.
     <service name="changeOwnerUponIssuance" engine="simple"  auth="true"
         
location="component://product/minilang/product/inventory/InventoryServices.xml" 
invoke="changeOwnerUponIssuance">
         <description>If product store setOwnerUponIssuance is Y or empty, set 
the inventory item owner upon issuance.</description>
-        <attribute name="itemIssuanceId" type="String" mode="IN" 
optional="false"/>
+        <attribute name="itemIssuanceId" type="String" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.itemIssuanceId"/>
+        </type-validate>
+        </attribute>
+
     </service>
     <service name="createInventoryItemStatus" engine="simple" 
default-entity-name="InventoryItemStatus"
             
location="component://product/minilang/product/inventory/InventoryServices.xml" 
invoke="createInventoryItemStatus">
@@ -87,7 +98,12 @@ under the License.
     <service name="checkProductInventoryDiscontinuation" engine="simple"
                 
location="component://product/minilang/product/inventory/InventoryServices.xml" 
invoke="checkProductInventoryDiscontinuation" auth="false">
         <description>Check Product Inventory Discontinuation</description>
-        <attribute name="productId" mode="IN" optional="false" type="String"/>
+        <attribute name="productId" mode="IN" optional="false" type="String">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.productId"/>
+        </type-validate>
+        </attribute>
+
     </service>
     <service name="inventoryItemCheckSetDefaultValues" 
default-entity-name="InventoryItem" engine="simple"
                 
location="component://product/minilang/product/inventory/InventoryServices.xml" 
invoke="inventoryItemCheckSetDefaultValues" auth="false">
@@ -110,12 +126,20 @@ under the License.
             Sums all availableToPromiseDiff and quantityOnHandDiff elements 
for the inventoryItemId and sets the availableToPromise and quantityOnHand 
fields on the corresponding InventoryItem.
             Meant to be run as an Entity ECA triggered on any modify operation 
on the InventoryItemDetail entity.
         </description>
-        <attribute name="inventoryItemId" type="String" mode="IN" 
optional="false"/>
+        <attribute name="inventoryItemId" type="String" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.inventoryItemId"/>
+        </type-validate>
+        </attribute>
     </service>
     <service name="updateSerializedInventoryTotals" 
default-entity-name="InventoryItem" engine="simple"
                 
location="component://product/minilang/product/inventory/InventoryServices.xml" 
invoke="updateSerializedInventoryTotals" auth="false">
         <description>Sets the ATP/QOH totals for serialized inventory 
items</description>
-        <attribute name="inventoryItemId" type="String" mode="IN" 
optional="false"/>
+        <attribute name="inventoryItemId" type="String" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.inventoryItemId"/>
+        </type-validate>
+        </attribute>
     </service>
 
     <service name="createInventoryItemVariance" 
default-entity-name="InventoryItemVariance" engine="simple"
@@ -134,7 +158,11 @@ under the License.
     <service name="createPhysicalInventoryAndVariance" engine="simple" 
auth="true" transaction-timeout="600"
             
location="component://product/minilang/product/inventory/InventoryServices.xml" 
invoke="createPhysicalInventoryAndVariance">
         <description>Create a PhysicalInventory and an 
InventoryItemVariance</description>
-        <auto-attributes entity-name="InventoryItemVariance" include="pk" 
mode="IN" optional="false"/>
+        <auto-attributes entity-name="InventoryItemVariance" include="pk" 
mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.inventoryItemVariance"/>
+        </type-validate>
+        </auto-attributes>
         <auto-attributes entity-name="PhysicalInventory" include="nonpk" 
mode="IN" optional="true"/>
         <auto-attributes entity-name="InventoryItemVariance" include="nonpk" 
mode="IN" optional="true"/>
         <override name="physicalInventoryId" mode="OUT"/>
@@ -143,7 +171,12 @@ under the License.
     <service name="getMktgPackagesAvailable" engine="simple"
                 
location="component://product/minilang/product/inventory/InventoryServices.xml" 
invoke="getMktgPackagesAvailable" auth="false" use-transaction="false">
         <description>Get Marketing Packages Available From Components In 
Inventory</description>
-        <attribute name="productId" type="String" mode="IN" optional="false"/>
+        <attribute name="productId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.productId"/>
+        </type-validate>
+        </attribute>
+
         <attribute name="facilityId" type="String" mode="IN" optional="true"/>
         <attribute name="statusId" type="String" mode="IN" optional="true"/>
         <attribute name="quantityOnHandTotal" type="BigDecimal" mode="OUT" 
optional="false"/>
@@ -152,7 +185,11 @@ under the License.
     <service name="getProductInventoryAvailable" engine="simple"
                 
location="component://product/minilang/product/inventory/InventoryServices.xml" 
invoke="getProductInventoryAvailable" auth="false" use-transaction="false">
         <description>Get Inventory Availability for a Product</description>
-        <attribute name="productId" type="String" mode="IN" optional="false"/>
+        <attribute name="productId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.productId"/>
+        </type-validate>
+        </attribute>
         <attribute name="statusId" type="String" mode="IN" optional="true"/>
         <attribute name="quantityOnHandTotal" type="BigDecimal" mode="OUT" 
optional="false"/>
         <attribute name="availableToPromiseTotal" type="BigDecimal" mode="OUT" 
optional="false"/>
@@ -161,8 +198,16 @@ under the License.
     <service name="getInventoryAvailableByFacility" engine="simple"
                 
location="component://product/minilang/product/inventory/InventoryServices.xml" 
invoke="getProductInventoryAvailable" auth="false" use-transaction="false">
         <description>Get Inventory Availability for a Product constrained by a 
facilityId</description>
-        <attribute name="productId" type="String" mode="IN" optional="false"/>
-        <attribute name="facilityId" type="String" mode="IN" optional="false"/>
+        <attribute name="productId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.productId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="facilityId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.facilityId"/>
+        </type-validate>
+        </attribute>
         <attribute name="statusId" type="String" mode="IN" optional="true"/>
         <attribute name="lotId" mode="IN" type="String" optional="true"/>
         <attribute name="quantityOnHandTotal" type="BigDecimal" mode="OUT" 
optional="false"/>
@@ -172,9 +217,21 @@ under the License.
     <service name="getInventoryAvailableByLocation" engine="simple"
                 
location="component://product/minilang/product/inventory/InventoryServices.xml" 
invoke="getProductInventoryAvailable" auth="false">
         <description>Get Inventory Availability for a Product constrained by a 
facility and location</description>
-        <attribute name="productId" type="String" mode="IN" optional="false"/>
-        <attribute name="facilityId" type="String" mode="IN" optional="false"/>
-        <attribute name="locationSeqId" type="String" mode="IN" 
optional="false"/>
+        <attribute name="productId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.productId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="facilityId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.facilityId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="locationSeqId" type="String" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.locationSeqId"/>
+        </type-validate>
+        </attribute>
         <attribute name="statusId" type="String" mode="IN" optional="true"/>
         <attribute name="quantityOnHandTotal" type="BigDecimal" mode="OUT" 
optional="false"/>
         <attribute name="availableToPromiseTotal" type="BigDecimal" mode="OUT" 
optional="false"/>
@@ -183,8 +240,16 @@ under the License.
     <service name="getInventoryAvailableByContainer" engine="simple"
                 
location="component://product/minilang/product/inventory/InventoryServices.xml" 
invoke="getProductInventoryAvailable" auth="false" use-transaction="false">
         <description>Get Inventory Availability for a Product constrained by a 
containerId</description>
-        <attribute name="productId" type="String" mode="IN" optional="false"/>
-        <attribute name="containerId" type="String" mode="IN" 
optional="false"/>
+        <attribute name="productId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.productId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="containerId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.containerId"/>
+        </type-validate>
+        </attribute>
         <attribute name="statusId" type="String" mode="IN" optional="true"/>
         <attribute name="quantityOnHandTotal" type="BigDecimal" mode="OUT" 
optional="false"/>
         <attribute name="availableToPromiseTotal" type="BigDecimal" mode="OUT" 
optional="false"/>
@@ -192,7 +257,11 @@ under the License.
     <service name="getInventoryAvailableByItem" engine="simple"
              
location="component://product/minilang/product/inventory/InventoryServices.xml" 
invoke="getProductInventoryAvailable" auth="false" use-transaction="false">
         <description>Get Inventory Availability for an 
InventoryItem</description>
-        <attribute name="inventoryItemId" type="String" mode="IN" 
optional="false"/>
+        <attribute name="inventoryItemId" type="String" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.inventoryItemId"/>
+        </type-validate>
+        </attribute>
         <attribute name="quantityOnHandTotal" type="BigDecimal" mode="OUT" 
optional="false"/>
         <attribute name="availableToPromiseTotal" type="BigDecimal" mode="OUT" 
optional="false"/>
         <attribute name="useCache" type="Boolean" mode="IN" optional="true"/>
@@ -204,7 +273,11 @@ under the License.
             usually marketing package components.
         </description>
         <attribute name="facilityId" type="String" mode="IN" optional="true"/>
-        <attribute name="assocProducts" type="List" mode="IN" 
optional="false"/>
+        <attribute name="assocProducts" type="List" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.assocProducts"/>
+        </type-validate>
+        </attribute>
         <attribute name="statusId" type="String" mode="IN" optional="true"/>
         <attribute name="quantityOnHandTotal" type="BigDecimal" mode="OUT" 
optional="false"/>
         <attribute name="availableToPromiseTotal" type="BigDecimal" mode="OUT" 
optional="false"/>
@@ -212,8 +285,16 @@ under the License.
     <service name="getProductInventoryAvailableBySupplier" engine="simple"
                 
location="component://product/minilang/product/inventory/InventoryServices.xml" 
invoke="getProductInventoryAvailable" auth="false" use-transaction="false">
         <description>Get Inventory Availability for a Product by a 
Supplier</description>
-        <attribute name="productId" type="String" mode="IN" optional="false"/>
-        <attribute name="partyId" type="String" mode="IN" optional="false"/>
+        <attribute name="productId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.productId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="partyId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.partyId"/>
+        </type-validate>
+        </attribute>
         <attribute name="statusId" type="String" mode="IN" optional="true"/>
         <attribute name="quantityOnHandTotal" type="BigDecimal" mode="OUT" 
optional="false"/>
         <attribute name="availableToPromiseTotal" type="BigDecimal" mode="OUT" 
optional="false"/>
@@ -222,19 +303,47 @@ under the License.
     <service name="countProductInventoryOnHand" engine="simple"
                 
location="component://product/minilang/product/inventory/InventoryServices.xml" 
invoke="countProductInventoryOnHand" auth="true" use-transaction="false">
         <description>Count Inventory On Hand for a Product constrained by a 
facilityId at a given date.</description>
-        <attribute name="productId" type="String" mode="IN" optional="false"/>
-        <attribute name="facilityId" type="String" mode="IN" optional="false"/>
-        <attribute name="statusId" type="String" mode="IN" optional="true"/>
-        <attribute name="inventoryCountDate" type="Timestamp" mode="IN" 
optional="false"/>
+        <attribute name="productId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.productId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="facilityId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.facilityId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="statusId" type="String" mode="IN" optional="true">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.statusId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="inventoryCountDate" type="Timestamp" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.inventoryCountDate"/>
+        </type-validate>
+        </attribute>
         <attribute name="quantityOnHandTotal" type="BigDecimal" mode="OUT" 
optional="true"/>
     </service>
     <service name="countProductInventoryShippedForSales" engine="simple"
                 
location="component://product/minilang/product/inventory/InventoryServices.xml" 
invoke="countProductInventoryShippedForSales" auth="true" 
use-transaction="false">
         <description>Count Inventory Shipped for Sales Orders for a Product 
constrained by a facilityId in a given date range.</description>
-        <attribute name="productId" type="String" mode="IN" optional="false"/>
-        <attribute name="facilityId" type="String" mode="IN" optional="false"/>
+        <attribute name="productId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.productId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="facilityId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.facilityId"/>
+        </type-validate>
+        </attribute>
         <attribute name="statusId" type="String" mode="IN" optional="true"/>
-        <attribute name="fromDate" type="Timestamp" mode="IN" 
optional="false"/>
+        <attribute name="fromDate" type="Timestamp" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.fromDate"/>
+        </type-validate>
+        </attribute>
         <attribute name="thruDate" type="Timestamp" mode="IN" optional="true"/>
         <attribute name="quantityOnHandTotal" type="BigDecimal" mode="OUT" 
optional="true"/>
     </service>
@@ -242,7 +351,11 @@ under the License.
                 
location="org.apache.ofbiz.product.inventory.InventoryServices" 
invoke="getProductInventorySummaryForItems" auth="false" 
use-transaction="false">
         <description>Get ATP/QOH Availability for a list of OrderItems by 
summing over all facilities.  If the item is a MARKETING_PKG_AUTO/PICK, then 
put its quantity available from components
             in the mktgPkgATPMap and mktgPkgQOHMap.</description>
-        <attribute name="orderItems" type="List" mode="IN" optional="false"/>
+        <attribute name="orderItems" type="List" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.orderItems"/>
+        </type-validate>
+        </attribute>
         <attribute name="facilityId" type="String" mode="IN" optional="true"/>
         <attribute name="quantityOnHandMap" type="Map" mode="OUT" 
optional="false"/>
         <attribute name="availableToPromiseMap" type="Map" mode="OUT" 
optional="false"/>
@@ -254,8 +367,16 @@ under the License.
         <description>Get ATP/QOH Availability for a list of OrderItems by 
summing over all facilities.  If the item is a MARKETING_PKG_AUTO/PICK, then 
put its quantity available from components
             in the mktgPkgATPMap and mktgPkgQOHMap.</description>
         <attribute name="checkTime" type="Timestamp" mode="IN" 
optional="true"/>
-        <attribute name="facilityId" type="String" mode="IN" optional="false"/>
-        <attribute name="productId" type="String" mode="IN" optional="false"/>
+        <attribute name="facilityId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.facilityId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="productId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.productId"/>
+        </type-validate>
+        </attribute>
         <attribute name="minimumStock" mode="IN" type="BigDecimal" 
optional="true"/>
         <attribute name="statusId" type="String" mode="IN" optional="true"/>
         <attribute name="quantityUomId" type="String" mode="OUT" 
optional="true"/>
@@ -280,7 +401,11 @@ under the License.
     <service name="balanceInventoryItems" engine="simple" 
transaction-timeout="600"
             
location="component://product/minilang/product/inventory/InventoryServices.xml" 
invoke="balanceInventoryItems" auth="true">
         <description>Balance inventory items based on the new item specified 
which will have available inventory that back-order (negative ATP) reservations 
can be reassigned to.</description>
-        <attribute name="inventoryItemId" type="String" mode="IN" 
optional="false"/>
+        <attribute name="inventoryItemId" type="String" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.inventoryItemId"/>
+        </type-validate>
+        </attribute>
         <attribute name="priorityOrderId" type="String" mode="IN" 
optional="true"/>
         <attribute name="priorityOrderItemSeqId" type="String" mode="IN" 
optional="true"/>
         <attribute name="noLongerOnBackOrderIdSet" type="Set" mode="OUT" 
optional="true"/>
@@ -289,8 +414,16 @@ under the License.
     <service name="reassignInventoryReservations" engine="simple" 
transaction-timeout="600"
             
location="component://product/minilang/product/inventory/InventoryServices.xml" 
invoke="reassignInventoryReservations" auth="true">
         <description>Balance inventory reservations for a given 
product/facility, considering all the reservations with promised date greater 
than fromDate.</description>
-        <attribute name="productId" type="String" mode="IN" optional="false"/>
-        <attribute name="facilityId" type="String" mode="IN" optional="false"/>
+        <attribute name="productId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.productId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="facilityId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.facilityId"/>
+        </type-validate>
+        </attribute>
         <attribute name="fromDate" type="Timestamp" mode="IN" optional="true"/>
         <attribute name="noLongerOnBackOrderIdSet" type="Set" mode="OUT" 
optional="true"/>
         <attribute name="priority" type="String" mode="IN"  optional="true"/>
@@ -298,23 +431,59 @@ under the License.
     <service name="balanceOrderItemsWithNegativeReservations" engine="simple"
                 
location="component://product/minilang/product/inventory/InventoryServices.xml" 
invoke="balanceOrderItemsWithNegativeReservations">
         <description>For each product with a negative reservation in the 
order, calls reassignInventoryReservations</description>
-        <attribute name="orderId" type="String" mode="IN" optional="false"/>
+        <attribute name="orderId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.orderId"/>
+        </type-validate>
+        </attribute>
     </service>
 
     <service name="reserveAnInventoryItem" engine="simple"
             
location="component://product/minilang/product/inventory/InventoryReserveServices.xml"
 invoke="reserveAnInventoryItem" auth="true">
         <description></description>
-        <attribute name="inventoryItemId" type="String" mode="INOUT" 
optional="false"/>
-        <attribute name="productId" type="String" mode="IN" optional="false"/>
-        <attribute name="orderId" type="String" mode="IN" optional="false"/>
-        <attribute name="orderItemSeqId" type="String" mode="IN" 
optional="false"/>
-        <attribute name="shipGroupSeqId" type="String" mode="IN" 
optional="false"/>
-        <attribute name="quantity" type="BigDecimal" mode="IN" 
optional="false"/>
+        <attribute name="inventoryItemId" type="String" mode="INOUT" 
optional="false">
+            <type-validate>
+                <fail-property resource="ProductErrorUiLabels" 
property="facility.inventoryItemId"/>
+            </type-validate>
+        </attribute>
+        <attribute name="productId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.productId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="orderId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.orderId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="orderItemSeqId" type="String" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.orderItemSeqId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="shipGroupSeqId" type="String" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.shipGroupSeqId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="quantity" type="BigDecimal" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.quantity"/>
+        </type-validate>
+        </attribute>
         <attribute name="reservedDatetime" type="Timestamp" mode="IN" 
optional="true"/>
-        <attribute name="requireInventory" type="String" mode="IN" 
optional="false"/>
+        <attribute name="requireInventory" type="String" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.requireInventory"/>
+        </type-validate>
+        </attribute>
         <attribute name="serialNumber" type="String" mode="IN" 
optional="true"/>
         <attribute name="sequenceId" type="Long" mode="IN" optional="true"/>
-        <attribute name="promisedDatetime" type="Timestamp" mode="IN" 
optional="false"/>
+        <attribute name="promisedDatetime" type="Timestamp" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.promisedDatetime"/>
+        </type-validate>
+        </attribute>
         <attribute name="priority" type="String" mode="IN" optional="true"/>
     </service>
 
@@ -324,14 +493,42 @@ under the License.
             If requireInventory is Y the quantity not reserved is returned, if 
N then a negative
             availableToPromise will be used to track quantity ordered beyond 
what is in stock.
         </description>
-        <attribute name="productId" type="String" mode="IN" optional="false"/>
-        <attribute name="orderId" type="String" mode="IN" optional="false"/>
-        <attribute name="orderItemSeqId" type="String" mode="IN" 
optional="false"/>
-        <attribute name="shipGroupSeqId" type="String" mode="IN" 
optional="false"/>
-        <attribute name="quantity" type="BigDecimal" mode="IN" 
optional="false"/>
+        <attribute name="productId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.productId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="orderId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.orderId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="orderItemSeqId" type="String" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.orderItemSeqId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="shipGroupSeqId" type="String" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.shipGroupSeqId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="quantity" type="BigDecimal" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.quantity"/>
+        </type-validate>
+        </attribute>
         <attribute name="reservedDatetime" type="Timestamp" mode="IN" 
optional="true"/>
-        <attribute name="requireInventory" type="String" mode="IN" 
optional="false"/>
-        <attribute name="reserveOrderEnumId" type="String" mode="IN" 
optional="false"/>
+        <attribute name="requireInventory" type="String" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.requireInventory"/>
+        </type-validate>
+        </attribute>
+        <attribute name="reserveOrderEnumId" type="String" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.reserveOrderEnumId"/>
+        </type-validate>
+        </attribute>
         <attribute name="sequenceId" type="Long" mode="IN" optional="true"/>
         <attribute name="lotId" mode="IN" type="String" optional="true" />
         <attribute name="priority" type="String" mode="IN" optional="true"/>
@@ -343,14 +540,45 @@ under the License.
             If requireInventory is Y the quantity not reserved is returned, if 
N then a negative
             availableToPromise will be used to track quantity ordered beyond 
what is in stock.
         </description>
-        <attribute name="productId" type="String" mode="IN" optional="false"/>
-        <attribute name="facilityId" type="String" mode="IN" optional="false"/>
-        <attribute name="orderId" type="String" mode="IN" optional="false"/>
-        <attribute name="orderItemSeqId" type="String" mode="IN" 
optional="false"/>
-        <attribute name="shipGroupSeqId" type="String" mode="IN" 
optional="false"/>
-        <attribute name="quantity" type="BigDecimal" mode="IN" 
optional="false"/>
+        <attribute name="productId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.productId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="facilityId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.facilityId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="orderId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.orderId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="orderItemSeqId" type="String" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.orderItemSeqId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="shipGroupSeqId" type="String" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.shipGroupSeqId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="quantity" type="BigDecimal" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.quantity"/>
+        </type-validate>
+        </attribute>
         <attribute name="reservedDatetime" type="Timestamp" mode="IN" 
optional="true"/>
-        <attribute name="requireInventory" type="String" mode="IN" 
optional="false"/>
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.reservedDatetime"/>
+        </type-validate>
+        <attribute name="requireInventory" type="String" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.requireInventory"/>
+        </type-validate>
+        </attribute>
         <attribute name="reserveOrderEnumId" type="String" mode="IN" 
optional="true"/>
         <attribute name="sequenceId" type="Long" mode="IN" optional="true"/>
         <attribute name="quantityNotReserved" type="BigDecimal" mode="OUT" 
optional="false"/>
@@ -363,14 +591,42 @@ under the License.
             If requireInventory is Y the quantity not reserved is returned, if 
N then a negative
             availableToPromise will be used to track quantity ordered beyond 
what is in stock.
         </description>
-        <attribute name="productId" type="String" mode="IN" optional="false"/>
-        <attribute name="containerId" type="String" mode="IN" 
optional="false"/>
-        <attribute name="orderId" type="String" mode="IN" optional="false"/>
-        <attribute name="orderItemSeqId" type="String" mode="IN" 
optional="false"/>
-        <attribute name="shipGroupSeqId" type="String" mode="IN" 
optional="false"/>
-        <attribute name="quantity" type="BigDecimal" mode="IN" 
optional="false"/>
+        <attribute name="productId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.productId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="containerId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.containerId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="orderId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.orderId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="orderItemSeqId" type="String" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.orderItemSeqId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="shipGroupSeqId" type="String" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.shipGroupSeqId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="quantity" type="BigDecimal" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.quantity"/>
+        </type-validate>
+        </attribute>
         <attribute name="reservedDatetime" type="Timestamp" mode="IN" 
optional="true"/>
-        <attribute name="requireInventory" type="String" mode="IN" 
optional="false"/>
+        <attribute name="requireInventory" type="String" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.requireInventory"/>
+        </type-validate>
+        </attribute>
         <attribute name="reserveOrderEnumId" type="String" mode="IN" 
optional="true"/>
         <attribute name="sequenceId" type="Long" mode="IN" optional="true"/>
         <attribute name="quantityNotReserved" type="BigDecimal" mode="OUT" 
optional="false"/>
@@ -394,29 +650,53 @@ under the License.
             inventoryItem's availableToPromise quantity, or setting the status 
of the
             corresponding serialized inventoryItem to available.
         </description>
-        <attribute name="orderId" type="String" mode="IN" optional="false"/>
+        <attribute name="orderId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.orderId"/>
+        </type-validate>
+        </attribute>
         <attribute name="orderItemSeqId" type="String" mode="IN" 
optional="true"/>
         <attribute name="shipGroupSeqId" type="String" mode="IN" 
optional="true"/>
     </service>
     <service name="cancelOrderItemInvResQty" engine="simple"
             
location="component://product/minilang/product/inventory/InventoryReserveServices.xml"
 invoke="cancelOrderItemInvResQty" auth="true">
         <description>Cancel a specific quantity for an order item</description>
-        <attribute name="orderId" type="String" mode="IN" optional="false"/>
-        <attribute name="orderItemSeqId" type="String" mode="IN" 
optional="false"/>
+        <attribute name="orderId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.orderId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="orderItemSeqId" type="String" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.orderItemSeqId"/>
+        </type-validate>
+        </attribute>
         <attribute name="shipGroupSeqId" type="String" mode="IN" 
optional="true"/>
         <attribute name="cancelQuantity" type="BigDecimal" mode="IN" 
optional="true"/>
     </service>
     <service name="cancelOrderItemShipGrpInvRes" engine="simple"
                 
location="component://product/minilang/product/inventory/InventoryReserveServices.xml"
 invoke="cancelOrderItemShipGrpInvRes" auth="true">
         <description>Cancels an inventory reservation</description>
-        <auto-attributes entity-name="OrderItemShipGrpInvRes" include="pk" 
mode="IN" optional="false"/>
+        <auto-attributes entity-name="OrderItemShipGrpInvRes" include="pk" 
mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.OrderItemShipGrpInvRes"/>
+        </type-validate>
+        </auto-attributes>
         <attribute name="cancelQuantity" type="BigDecimal" mode="IN" 
optional="true"/>
     </service>
 
     <service name="interfaceInventoryTransfer" engine="interface" location="" 
invoke="">
         <description>Inventory Transfer Interface</description>
-        <attribute name="inventoryItemId" type="String" mode="IN" 
optional="false"/>
-        <attribute name="statusId" type="String" mode="IN" optional="false"/>
+        <attribute name="inventoryItemId" type="String" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.inventoryItemId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="statusId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.statusId"/>
+        </type-validate>
+        </attribute>
         <attribute name="facilityId" type="String" mode="IN" optional="true"/>
         <attribute name="locationSeqId" type="String" mode="IN" 
optional="true"/>
         <attribute name="containerId" type="String" mode="IN" optional="true"/>
@@ -433,7 +713,11 @@ under the License.
         <description>Create an inventory transfer.  Uses the 
prepareInventoryTransfer service; see comments there about transfer quantities 
and inventory items.</description>
         <permission-service service-name="facilityGenericPermission" 
main-action="CREATE"/>
         <implements service="interfaceInventoryTransfer"/>
-        <attribute name="xferQty" type="BigDecimal" mode="IN" 
optional="false"/>
+        <attribute name="xferQty" type="BigDecimal" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.xferQty"/>
+        </type-validate>
+        </attribute>
         <attribute name="inventoryTransferId" type="String" mode="OUT" 
optional="false"/>
     </service>
     <service name="updateInventoryTransfer" engine="simple"
@@ -441,37 +725,75 @@ under the License.
         <description>Update an inventory transfer record</description>
         <permission-service service-name="facilityGenericPermission" 
main-action="UPDATE"/>
         <implements service="interfaceInventoryTransfer"/>
-        <attribute name="inventoryTransferId" type="String" mode="IN" 
optional="false"/>
+        <attribute name="inventoryTransferId" type="String" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.inventoryTransferId"/>
+        </type-validate>
+        </attribute>
     </service>
     <service name="prepareInventoryTransfer" engine="java"
             location="org.apache.ofbiz.product.inventory.InventoryServices" 
invoke="prepareInventoryTransfer">
         <description>Prepares inventory item for transfer.  If the xferQty is 
less than quantityOnHandTotal of the inventory item, then the inventory
                 item is "split," and an new inventory item will be created 
with xferQty and used for the inventory transfer.</description> 
         <attribute name="inventoryItemId" type="String" mode="INOUT" 
optional="false"/>
-        <attribute name="xferQty" type="BigDecimal" mode="IN" 
optional="false"/>
+        <attribute name="xferQty" type="BigDecimal" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.xferQty"/>
+        </type-validate>
+        </attribute>
     </service>
     <service name="completeInventoryTransfer" engine="java"
             location="org.apache.ofbiz.product.inventory.InventoryServices" 
invoke="completeInventoryTransfer">
         <description>Completes the inventory transfer</description>
-        <attribute name="inventoryTransferId" type="String" mode="IN" 
optional="false"/>
+        <attribute name="inventoryTransferId" type="String" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.inventoryTransferId"/>
+        </type-validate>
+        </attribute>
         <attribute name="receiveDate" type="Timestamp" mode="IN" 
optional="true"/>
     </service>
     <service name="cancelInventoryTransfer" engine="java"
             location="org.apache.ofbiz.product.inventory.InventoryServices" 
invoke="cancelInventoryTransfer">
         <description>Cancel the inventory transfer</description>
-        <attribute name="inventoryTransferId" type="String" mode="IN" 
optional="false"/>
+        <attribute name="inventoryTransferId" type="String" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.inventoryTransferId"/>
+        </type-validate>
+        </attribute>
     </service>
 
     <service name="createInventoryTransfersForProduct" engine="simple"
             
location="component://product/minilang/product/inventory/InventoryServices.xml" 
invoke="createInventoryTransfersForProduct" auth="true">
         <description>Create inventory transfers for the given product and 
quantity. Return the units not available for transfers.</description>
         <permission-service service-name="facilityGenericPermission" 
main-action="CREATE"/>
-        <attribute name="facilityId" type="String" mode="IN" optional="false"/>
+        <attribute name="facilityId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.facilityId"/>
+        </type-validate>
+        </attribute>
         <attribute name="containerId" type="String" mode="IN" optional="true"/>
-        <attribute name="facilityIdTo" type="String" mode="IN" 
optional="false"/>
+        <attribute name="facilityIdTo" type="String" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.facilityIdTo"/>
+        </type-validate>
+        </attribute>
         <attribute name="sendDate" type="Timestamp" mode="IN" optional="true"/>
-        <attribute name="productId" type="String" mode="IN" optional="false"/>
-        <attribute name="quantity" type="BigDecimal" mode="IN" 
optional="false"/>
+        <attribute name="productId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.productId"/>
+        </type-validate>
+        </attribute>
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.productId"/>
+        </type-validate>
+        <attribute name="quantity" type="BigDecimal" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.quantity"/>
+        </type-validate>
+        </attribute>
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.quantity"/>
+        </type-validate>
         <attribute name="reserveOrderEnumId" type="String" mode="IN" 
optional="true"/>
         <attribute name="quantityNotTransferred" type="BigDecimal" mode="OUT" 
optional="false"/>
         <attribute name="statusId" type="String" mode="IN" optional="true"/>
@@ -483,15 +805,27 @@ under the License.
             Issues the Inventory for an Order that was Immediately Fulfilled.
             Note that this skips the normal inventory reservation process, and 
the shipment process (no shipment is created).
         </description>
-        <attribute name="orderId" type="String" mode="IN" optional="false"/>
+        <attribute name="orderId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.orderId"/>
+        </type-validate>
+        </attribute>
     </service>
     <service name="issueImmediatelyFulfilledOrderItem" engine="simple"
                 
location="component://product/minilang/product/inventory/InventoryIssueServices.xml"
 invoke="issueImmediatelyFulfilledOrderItem" auth="false">
         <description>
             Issues the Inventory for an Order Item that was Immediately 
Fulfilled for more info see the issueImmediatelyFulfilledOrder service.
         </description>
-        <attribute name="orderId" type="String" mode="IN" optional="false"/>
-        <attribute name="orderItemSeqId" type="String" mode="IN" 
optional="false"/>
+        <attribute name="orderId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.orderId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="orderItemSeqId" type="String" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.orderItemSeqId"/>
+        </type-validate>
+        </attribute>
         <attribute name="orderHeader" 
type="org.apache.ofbiz.entity.GenericValue" mode="IN" optional="true"/>
         <attribute name="orderItem" 
type="org.apache.ofbiz.entity.GenericValue" mode="IN" optional="true"/>
         <attribute name="productStore" 
type="org.apache.ofbiz.entity.GenericValue" mode="IN" optional="true"/>
@@ -576,7 +910,12 @@ under the License.
         <description>Create a Facility Location</description>
         <permission-service service-name="facilityGenericPermission" 
main-action="CREATE"/>
         <auto-attributes include="nonpk" mode="IN" optional="true"/>
-        <attribute name="facilityId" type="String" mode="IN" optional="false"/>
+        <attribute name="facilityId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ProductErrorUiLabels" 
property="facility.facilityId"/>
+            </type-validate>
+        </attribute>
+
         <attribute name="locationSeqId" type="String" mode="OUT" 
optional="false"/>
     </service>
     <service name="updateFacilityLocation" 
default-entity-name="FacilityLocation" engine="entity-auto" invoke="update" 
auth="true">
@@ -627,7 +966,13 @@ under the License.
         <permission-service service-name="facilityPermissionCheck" 
main-action="UPDATE"/>
         <auto-attributes entity-name="FacilityContactMech" include="all" 
mode="IN" optional="true"/>
         <attribute name="contactMechId" type="String" mode="INOUT" 
optional="false"/>
-        <attribute name="contactMechTypeId" type="String" mode="IN" 
optional="false"/>
+        <attribute name="contactMechTypeId" type="String" mode="IN" 
optional="false">
+                <type-validate>
+                    <fail-property resource="ProductErrorUiLabels" 
property="facility.contactMechTypeId"/>
+                </type-validate>
+        </attribute>
+
+
         <attribute name="infoString" type="String" mode="IN" optional="true"/>
         <attribute name="newContactMechId" type="String" mode="IN" 
optional="true"/>
     </service>
@@ -635,8 +980,16 @@ under the License.
             
location="component://product/minilang/product/storage/FacilityContactMechServices.xml"
 invoke="deleteFacilityContactMech" auth="true">
         <description>Delete a FacilityContactMech</description>
         <permission-service service-name="facilityPermissionCheck" 
main-action="DELETE"/>
-        <attribute name="facilityId" type="String" mode="IN" optional="false"/>
-        <attribute name="contactMechId" type="String" mode="IN" 
optional="false"/>
+        <attribute name="facilityId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.facilityId"/>
+        </type-validate>
+        </attribute>
+        <attribute name="contactMechId" type="String" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.contactMechId"/>
+        </type-validate>
+        </attribute>
     </service>
     <service name="createFacilityPostalAddress" engine="simple"
             
location="component://product/minilang/product/storage/FacilityContactMechServices.xml"
 invoke="createFacilityPostalAddress" auth="true">
@@ -685,7 +1038,11 @@ under the License.
         <auto-attributes entity-name="FacilityContactMech" include="all" 
mode="IN" optional="true"/>
         <attribute name="contactMechPurposeTypeId" type="String" mode="IN" 
optional="true"/>
         <attribute name="contactMechId" type="String" mode="INOUT" 
optional="true"/>
-        <attribute name="emailAddress" type="String" mode="IN" 
optional="false"/>
+        <attribute name="emailAddress" type="String" mode="IN" 
optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.emailAddress"/>
+        </type-validate>
+        </attribute>
     </service>
     <service name="updateFacilityEmailAddress" engine="simple"
             
location="component://product/minilang/product/storage/FacilityContactMechServices.xml"
 invoke="updateFacilityEmailAddress" auth="true">
@@ -693,7 +1050,11 @@ under the License.
         <permission-service service-name="facilityPermissionCheck" 
main-action="UPDATE"/>
         <auto-attributes entity-name="FacilityContactMech" include="all" 
mode="IN" optional="true"/>
         <attribute name="contactMechId" type="String" mode="INOUT" 
optional="false"/>
-        <attribute name="emailAddress" type="String" mode="IN" 
optional="false"/>
+        <attribute name="emailAddress" type="String" mode="IN" 
optional="false">
+            <type-validate>
+                <fail-property resource="ProductErrorUiLabels" 
property="facility.emailAddress"/>
+            </type-validate>
+        </attribute>
     </service>
 
     <service name="createFacilityContactMechPurpose" engine="simple"
@@ -810,7 +1171,11 @@ under the License.
             some promised inventory is in a bulk location and needs to be 
moved to a pick location.
         </description>
         <permission-service service-name="facilityPermissionCheck" 
main-action="VIEW"/>
-        <attribute name="facilityId" type="String" mode="IN" optional="false"/>
+        <attribute name="facilityId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ProductErrorUiLabels" 
property="facility.facilityId"/>
+            </type-validate>
+        </attribute>
         <attribute name="moveByOisgirInfoList" type="List" mode="OUT" 
optional="true"/>
         <attribute name="stockMoveHandled" type="Map" mode="OUT" 
optional="true"/>
         <attribute name="warningMessageList" type="List" mode="OUT" 
optional="true"/>
@@ -821,7 +1186,11 @@ under the License.
             Find all Stock Moves that should be done based on minimum 
quantities on each Pick/Primary ProductFacilityLocation.
         </description>
         <permission-service service-name="facilityPermissionCheck" 
main-action="VIEW"/>
-        <attribute name="facilityId" type="String" mode="IN" optional="false"/>
+        <attribute name="facilityId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ProductErrorUiLabels" 
property="facility.facilityId"/>
+            </type-validate>
+        </attribute>
         <attribute name="stockMoveHandled" type="Map" mode="IN" 
optional="true"/>
         <attribute name="moveByPflInfoList" type="List" mode="OUT" 
optional="true"/>
         <attribute name="warningMessageList" type="List" mode="OUT" 
optional="true"/>
@@ -833,11 +1202,31 @@ under the License.
             This service will not only move quantities from one InventoryItem 
to another but it will
             also reassign any existing OrderItemShipGrpInvRes records to the 
new InventoryItem.
         </description>
-        <attribute name="productId" type="String" mode="IN" optional="false"/>
-        <attribute name="facilityId" type="String" mode="IN" optional="false"/>
-        <attribute name="locationSeqId" type="String" mode="IN" 
optional="false"/>
-        <attribute name="targetLocationSeqId" type="String" mode="IN" 
optional="false"/>
-        <attribute name="quantityMoved" type="BigDecimal" mode="IN" 
optional="false"/>
+        <attribute name="productId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ProductErrorUiLabels" 
property="facility.productId"/>
+            </type-validate>
+        </attribute>
+        <attribute name="facilityId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ProductErrorUiLabels" 
property="facility.facilityId"/>
+            </type-validate>
+        </attribute>
+        <attribute name="locationSeqId" type="String" mode="IN" 
optional="false">
+            <type-validate>
+                <fail-property resource="ProductErrorUiLabels" 
property="facility.locationSeqId"/>
+            </type-validate>
+        </attribute>
+        <attribute name="targetLocationSeqId" type="String" mode="IN" 
optional="false">
+            <type-validate>
+                <fail-property resource="ProductErrorUiLabels" 
property="facility.targetLocationSeqId"/>
+            </type-validate>
+        </attribute>
+        <attribute name="quantityMoved" type="BigDecimal" mode="IN" 
optional="false">
+            <type-validate>
+                <fail-property resource="ProductErrorUiLabels" 
property="facility.quantityMoved"/>
+            </type-validate>
+        </attribute>
         <attribute name="warningMessageList" type="List" mode="INOUT" 
optional="true"/>
     </service>
     <!-- Inventory Label Services -->
@@ -911,8 +1300,16 @@ under the License.
                 
location="component://product/minilang/product/inventory/StockMoveServices.xml" 
invoke="findProductInventorylocations">
        <description>Find Product's inventory locations from 
facility</description>
        <permission-service service-name="facilityGenericPermission" 
main-action="VIEW"/>
-       <attribute name="facilityId" type="String" mode="IN" optional="false"/>
-       <attribute name="productId" type="String" mode="IN" optional="false"/>
+       <attribute name="facilityId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.facilityId"/>
+        </type-validate>
+       </attribute>
+       <attribute name="productId" type="String" mode="IN" optional="false">
+        <type-validate>
+            <fail-property resource="ProductErrorUiLabels" 
property="facility.productId"/>
+        </type-validate>
+       </attribute>
        <attribute name="LocationList" type="List" mode="OUT" optional="true"/>
     </service>
     <service name="setLastInventoryCount" engine="simple"


Reply via email to