<?xml version="1.0" encoding="UTF-8" ?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->

<services xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/services.xsd">
    <description>Order Services</description>
    <vendor>OFBiz</vendor>
    <version>1.0</version>

    <!-- Requirement Services -->
    <service name="requirementInterface" engine="interface" location="" invoke="">
        <description>Requirement Interface</description>
        <auto-attributes mode="IN" entity-name="Requirement" include="nonpk" optional="true">
            <exclude field-name="createdDate"/>
            <exclude field-name="createdByUserLogin"/>
            <exclude field-name="lastModifiedDate"/>
            <exclude field-name="lastModifiedByUserLogin"/>
        </auto-attributes>
    </service>
    <service name="createRequirement" engine="simple"
            location="component://order/script/org/ofbiz/order/requirement/RequirementServices.xml" invoke="createRequirement">
        <description>Create a new requirement</description>
        <implements service="requirementInterface"/>
        <attribute name="requirementTypeId" type="String" mode="IN" optional="false"/>
        <attribute name="custRequestId" type="String" mode="IN" optional="true"/>
        <attribute name="custRequestItemSeqId" type="String" mode="IN" optional="true"/>
        <attribute name="requirementId" type="String" mode="INOUT" optional="true"/>
    </service>
    <service name="updateRequirement" engine="simple"
            location="component://order/script/org/ofbiz/order/requirement/RequirementServices.xml" invoke="updateRequirement">
        <description>Update an existing requirement</description>
        <implements service="requirementInterface"/>
        <attribute name="requirementId" type="String" mode="IN" optional="false"/>
        <attribute name="oldStatusId" type="String" mode="OUT" optional="false"/>
    </service>

    <service name="deleteRequirement" engine="simple"
            location="component://order/script/org/ofbiz/order/requirement/RequirementServices.xml" invoke="deleteRequirement">
        <description>Delete a requirement</description>
        <attribute name="requirementId" type="String" mode="IN" optional="false"/>
    </service>

    <service name="createRequirementRole" default-entity-name="RequirementRole" engine="simple" auth="true"
            location="component://order/script/org/ofbiz/order/requirement/RequirementServices.xml" invoke="createRequirementRole">
        <description>Creates a new party role for the requirement</description>
        <auto-attributes mode="IN" include="pk" optional="false"/>
        <auto-attributes mode="IN" include="nonpk" optional="true"/>
        <override name="fromDate" optional="true"/>
    </service>
    <service name="updateRequirementRole" default-entity-name="RequirementRole" engine="simple"
                location="component://order/script/org/ofbiz/order/requirement/RequirementServices.xml" invoke="updateRequirementRole" auth="true">
        <description>Update a RequirementRole</description>
        <auto-attributes include="pk" mode="IN" optional="false"/>
        <auto-attributes include="nonpk" mode="IN" optional="true"/>
    </service>
    <service name="removeRequirementRole" engine="simple" default-entity-name="RequirementRole"
                location="component://order/script/org/ofbiz/order/requirement/RequirementServices.xml" invoke="removeRequirementRole" auth="true">
        <description>Remove a RequirementRole</description>
        <auto-attributes include="pk" mode="IN" optional="false"/>
    </service>

    <service name="associatedRequirementWithRequestItem" engine="simple"
            location="component://order/script/org/ofbiz/order/requirement/RequirementServices.xml" invoke="associateRequirementWithRequestItem">
        <description>Creates a CustRequestItem/Requirement association</description>
        <attribute name="requirementId" type="String" mode="IN" optional="false"/>
        <attribute name="custRequestId" type="String" mode="IN" optional="false"/>
        <attribute name="custRequestItemSeqId" type="String" mode="IN" optional="false"/>
    </service>

    <service name="addRequirementTask" engine="simple"
            location="component://order/script/org/ofbiz/order/requirement/RequirementServices.xml" invoke="addTaskToRequirement">
        <description>Associate an existing task w/ a requirement</description>
        <attribute name="requirementId" type="String" mode="IN" optional="false"/>
        <attribute name="workEffortId" type="String" mode="IN" optional="false"/>
        <attribute name="workReqFulfTypeId" type="String" mode="IN" optional="true"/>
    </service>

    <service name="getRequirementsForSupplier" engine="java"
            location="org.ofbiz.order.requirement.RequirementServices" invoke="getRequirementsForSupplier">
        <description>Retrieves requirements information for suppliers</description>
        <attribute mode="IN" name="requirementConditions" type="org.ofbiz.entity.condition.EntityCondition" optional="true"/>
        <attribute mode="IN" name="partyId" type="String" optional="true"/>
        <attribute mode="IN" name="unassignedRequirements" type="String" optional="true"/>
        <attribute mode="IN" name="currencyUomId" type="String" optional="true"/>
        <attribute mode="IN" name="statusIds" type="List" optional="true"/> <!-- By default, this service looks for approved requirements.  To override this, pass in a list of requirement statusIds to search. -->
        <attribute mode="OUT" name="requirementsForSupplier" type="java.util.List" optional="true"/>
        <attribute mode="OUT" name="distinctProductCount" type="Integer" optional="true"/>
        <attribute mode="OUT" name="quantityTotal" type="BigDecimal" optional="true"/>
        <attribute mode="OUT" name="amountTotal" type="BigDecimal" optional="true"/>
    </service>
    <service name="createOrderRequirementCommitment" engine="simple" auth="true"
        location="component://order/script/org/ofbiz/order/order/OrderServices.xml" invoke="createOrderRequirementCommitment">
        <auto-attributes entity-name="OrderRequirementCommitment" include="pk" mode="IN" optional="false"/>
        <auto-attributes entity-name="OrderRequirementCommitment" include="nonpk" mode="IN" optional="true"/>
    </service>
    <service name="checkCreateOrderRequirement" engine="simple" auth="true"
            location="component://order/script/org/ofbiz/order/order/OrderServices.xml" invoke="checkCreateOrderRequirement">
        <description>Create OrderRequirementCommitment and Requirement for items with automatic requirement upon ordering</description>
        <attribute name="orderId" type="String" mode="IN" optional="false"/>
        <attribute name="orderItemSeqId" type="String" mode="IN" optional="false"/>
        <attribute name="productId" type="String" mode="IN" optional="true"/>
        <attribute name="quantity" type="BigDecimal" mode="IN" optional="true"/>
        <attribute name="requirementId" type="String" mode="OUT" optional="true"/>
    </service>
    <service name="checkCreateStockRequirementQoh" engine="simple" auth="true" default-entity-name="ItemIssuance"
            location="component://order/script/org/ofbiz/order/order/OrderServices.xml" invoke="checkCreateStockRequirementQoh">
        <description>Create a Product Requirement based on QOH inventory</description>
        <auto-attributes include="pk" mode="IN" optional="true"/>
        <auto-attributes include="nonpk" mode="IN" optional="true">
            <exclude field-name="issuedDateTime"/>
        </auto-attributes>
        <attribute name="requirementId" type="String" mode="OUT" optional="true"/>
    </service>
    <service name="checkCreateStockRequirementAtp" engine="simple" auth="true"
            location="component://order/script/org/ofbiz/order/order/OrderServices.xml" invoke="checkCreateStockRequirementAtp">
        <description>Create a Product Requirement based on ATP inventory</description>
        <attribute name="orderId" type="String" mode="IN" optional="false"/>
        <attribute name="shipGroupSeqId" type="String" mode="IN" optional="false"/>
        <attribute name="orderItemSeqId" type="String" mode="IN" optional="false"/>
        <attribute name="inventoryItemId" type="String" mode="IN" optional="true"/>
        <attribute name="productId" type="String" mode="IN" optional="true"/>
        <attribute name="quantity" type="BigDecimal" mode="IN" optional="true"/>
        <attribute name="requirementId" type="String" mode="OUT" optional="true"/>
    </service>
    <service name="createRequirementFromItemATP" engine="simple" auth="true"
            location="component://order/script/org/ofbiz/order/order/OrderServices.xml" invoke="createRequirementFromItemATP">
        <description>Create OrderRequirementCommitment and Requirement for items with requirement based on ATP stock levels</description>
        <attribute name="orderId" type="String" mode="IN" optional="false"/>
        <attribute name="shipGroupSeqId" type="String" mode="IN" optional="false"/>
        <attribute name="orderItemSeqId" type="String" mode="IN" optional="false"/>
        <attribute name="inventoryItemId" type="String" mode="IN" optional="true"/>
        <attribute name="productId" type="String" mode="IN" optional="true"/>
        <attribute name="quantity" type="BigDecimal" mode="IN" optional="true"/>
        <attribute name="requirementId" type="String" mode="OUT" optional="true"/>
    </service>

    <service name="checkCreateProductRequirementForFacility" engine="simple" auth="true"
            location="component://order/script/org/ofbiz/order/order/OrderServices.xml" invoke="checkCreateProductRequirementForFacility">
        <description>Create Requirements for all the products in a facility with QOH under the minimum stock level</description>
        <attribute name="facilityId" type="String" mode="IN" optional="false"/>
        <attribute name="defaultRequirementMethodId" type="String" mode="IN" optional="true"/>
    </service>

    <service name="approveRequirement" engine="java"
            location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="approveRequirement" auth="true">
        <description>Approves a requirement.</description>
        <attribute mode="IN" name="requirementId" optional="false" type="String"/>
        <attribute mode="IN" name="quantity" optional="true" type="BigDecimal"/>
    </service>

    <service name="autoAssignRequirementToSupplier" engine="simple" auth="true"
            location="component://order/script/org/ofbiz/order/requirement/RequirementServices.xml" invoke="autoAssignRequirementToSupplier">
        <description>If the requirement is a product requirement (purchasing) try to assign it to the primary supplier</description>
        <attribute name="requirementId" type="String" mode="IN" optional="false"/>
    </service>

    <service name="createTransferFromRequirement" engine="simple" auth="true"
            location="component://order/script/org/ofbiz/order/requirement/RequirementServices.xml" invoke="createTransferFromRequirement">
        <description>Create the inventory transfers required to fulfill the requirement.</description>
        <attribute mode="IN" name="requirementId" optional="false" type="String"/>
        <attribute mode="IN" name="fromFacilityId" optional="false" type="String"/>
        <attribute mode="IN" name="quantity" optional="true" type="BigDecimal"/>
    </service>

    <service name="createAutoRequirementsForOrder" engine="java"
            location="org.ofbiz.order.requirement.RequirementServices" invoke="createAutoRequirementsForOrder" auth="true">
        <description>
            Creates requirements for any products with requirementMethodEnumId PRODRQM_AUTO in the given sales order.
        </description>
        <attribute name="orderId" type="String" mode="IN" optional="false"/>
    </service>
    <service name="createATPRequirementsForOrder" engine="java"
            location="org.ofbiz.order.requirement.RequirementServices" invoke="createATPRequirementsForOrder" auth="true">
        <description>
            Creates requirements for any products with requirementMethodEnumId PRODRQM_ATP in the given sales order when
            the ATP falls below or is below the minimum stock for the order facility.  ProductFacility.minimumStock must
            be configured for requirements to be generated.  ProductFacility.reorderQuantity is not currently supported.
        </description>
        <attribute name="orderId" type="String" mode="IN" optional="false"/>
    </service>
</services>

