<?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/minilang/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/minilang/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/minilang/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/minilang/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/minilang/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/minilang/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/minilang/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/minilang/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.apache.ofbiz.order.requirement.RequirementServices" invoke="getRequirementsForSupplier">
        <description>Retrieves requirements information for suppliers</description>
        <attribute mode="IN" name="requirementConditions" type="org.apache.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="entity-auto" auth="true" default-entity-name="OrderRequirementCommitment" invoke="create">
        <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/minilang/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/minilang/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/minilang/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/minilang/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/minilang/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.apache.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/minilang/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/minilang/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.apache.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.apache.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>

