<!--
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>Manufacturing Services - Production Run</description>
    <vendor>OFBiz</vendor>
    <version>1.0</version>

    <!-- Job Shop Management services -->
    <!-- creation of production runs -->
    <service name="createProductionRun" engine="java"
            location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="createProductionRun" auth="true">
        <description>Create a Production Run</description>
        <attribute name="productId" type="String" mode="IN" optional="false"/>
        <attribute name="pRQuantity" type="BigDecimal" mode="IN" optional="false"/>
        <attribute name="startDate" type="java.sql.Timestamp" mode="IN" optional="false"/>
        <attribute name="facilityId" type="String" mode="IN" optional="false"/>
        <attribute name="routingId" type="String" mode="IN" optional="true"/>
        <attribute name="workEffortName" type="String" mode="IN" optional="true"/>
        <attribute name="description" type="String" mode="IN" optional="true"/>
        <attribute name="productionRunId" type="String" mode="OUT" optional="false"/>
        <attribute name="estimatedCompletionDate" type="java.sql.Timestamp" mode="OUT" optional="true"/>
    </service>
    <service name="createProductionRunsForProductBom" engine="java"
            location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="createProductionRunsForProductBom" auth="true">
        <description>Explodes a product id and creates all the needed production runs.</description>
        <attribute name="productId" type="String" mode="IN" optional="false"/>
        <attribute name="quantity" optional="true" mode="IN" type="BigDecimal"/>
        <attribute name="startDate" type="java.sql.Timestamp" mode="IN" optional="false"/>
        <attribute name="facilityId" type="String" mode="IN" optional="false"/>
        <attribute name="routingId" type="String" mode="IN" optional="true"/>
        <attribute name="workEffortName" type="String" mode="IN" optional="true"/>
        <attribute name="description" type="String" mode="IN" optional="true"/>
        <attribute name="productionRuns" optional="true" mode="OUT" type="java.util.List"/><!-- TODO -->
        <attribute name="productionRunId" type="String" mode="OUT" optional="false"/>
    </service>
    <service name="createProductionRunsForOrder" engine="java"
            location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="createProductionRunsForOrder" auth="true">
        <description>Explodes a product id and creates all the needed production runs; if an order id is also provided, it links the production runs to the sales order.</description>
        <attribute mode="IN" name="orderId" optional="false" type="String"/>
        <attribute mode="IN" name="orderItemSeqId" optional="true" type="String"/>
        <attribute mode="IN" name="shipGroupSeqId" optional="true" type="String"/>
        <attribute mode="IN" name="quantity" optional="true" type="BigDecimal"/>
        <attribute mode="IN" name="fromDate" optional="true" type="String"/>
        <attribute mode="IN" name="shipmentId" optional="true" type="String"/>
        <attribute mode="OUT" name="productionRuns" type="java.util.List"/>
    </service>
    <service name="createProductionRunFromRequirement" engine="java"
            location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="createProductionRunFromRequirement" auth="true">
        <description>Creates a production run from a requirement.</description>
        <attribute mode="IN" name="requirementId" optional="false" type="String"/>
        <attribute mode="IN" name="quantity" optional="true" type="BigDecimal"/>
        <attribute mode="OUT" name="productionRunId" optional="true" type="String"/>
    </service>
    <service name="createProductionRunFromConfiguration" engine="java"
            location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="createProductionRunFromConfiguration" auth="true">
        <description>Creates a production run from a product configuration.</description>
        <attribute mode="IN" name="facilityId" optional="false" type="String"/>
        <attribute mode="IN" name="configId" optional="true" type="String"/>
        <attribute mode="IN" name="config" optional="true" type="org.ofbiz.product.config.ProductConfigWrapper"/>
        <attribute mode="IN" name="quantity" optional="true" type="BigDecimal"/>
        <attribute mode="IN" name="orderId" optional="true" type="String"/>
        <attribute mode="IN" name="orderItemSeqId" optional="true" type="String"/>
        <attribute mode="OUT" name="productionRunId" optional="false" type="String"/>
    </service>
    <service name="createProductionRunForMktgPkg" engine="java"
            location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="createProductionRunForMktgPkg" auth="true">
        <description>Creates a production run for a marketing package when the product is out of stock (ATP quantity less than zero.)
                Attempts to produce enough to bring total ATP quantity of the product back up to zero, but will only produce what is
                available based on the components required.</description>
        <attribute mode="IN" name="orderId" optional="false" type="String"/>
        <attribute mode="IN" name="orderItemSeqId" optional="false" type="String"/>
        <attribute mode="IN" name="facilityId" optional="false" type="String"/>
        <attribute mode="OUT" name="productionRunId" optional="true" type="String"/>
    </service>

    
    <service name="updateProductionRun" engine="java"
            location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="updateProductionRun" auth="true">
        <description>Update a Production Run</description>
        <attribute name="productionRunId" type="String" mode="IN" optional="false"/>
        <attribute name="quantity" type="BigDecimal" mode="IN" optional="true"/>
        <attribute name="estimatedStartDate" type="Timestamp" mode="IN" optional="true"/>
        <attribute name="workEffortName" type="String" mode="IN" optional="true"/>
        <attribute name="description" type="String" mode="IN" optional="true"/>
        <attribute name="facilityId" type="String" mode="IN" optional="true"/>
    </service>
    <service name="changeProductionRunStatus" engine="java"
            location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="changeProductionRunStatus" auth="true">
        <description>Change the Production Run status</description>
        <attribute name="productionRunId" type="String" mode="IN" optional="false"/>
        <attribute name="statusId" type="String" mode="IN" optional="true"/>
        <attribute name="newStatusId" type="String" mode="OUT" optional="false"/>
    </service>
    <service name="changeProductionRunTaskStatus" engine="java"
            location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="changeProductionRunTaskStatus" auth="true">
        <description>Change the Production Run Task status</description>
        <attribute name="productionRunId" type="String" mode="IN" optional="false"/>
        <attribute name="workEffortId" type="String" mode="IN" optional="false"/> <!-- The task id -->
        <attribute name="statusId" type="String" mode="IN" optional="true"/>
        <attribute name="issueAllComponents" type="Boolean" mode="IN" optional="true"/>
        <attribute name="oldStatusId" type="String" mode="OUT" optional="false"/>
        <attribute name="newStatusId" type="String" mode="OUT" optional="false"/>
    </service>
    <service name="addProductionRunRoutingTask" engine="java"
            location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="addProductionRunRoutingTask" auth="true">
        <description>add a RoutingTask to an existing ProductionRun</description>
        <attribute name="productionRunId" type="String" mode="IN" optional="false"/>
        <attribute name="routingTaskId" type="String" mode="INOUT" optional="false"/>
        <attribute name="priority" type="Long" mode="IN" optional="false"/>
        <attribute name="estimatedSetupMillis" type="BigDecimal" mode="IN" optional="true"/>
        <attribute name="estimatedMilliSeconds" type="BigDecimal" mode="IN" optional="true"/>
        <attribute name="workEffortName" type="String" mode="IN" optional="true"/>
        <attribute name="description" type="String" mode="IN" optional="true"/>
        <attribute name="estimatedStartDate" type="Timestamp" mode="INOUT" optional="true"/>
        <attribute name="estimatedCompletionDate" type="Timestamp" mode="INOUT" optional="true"/>
    </service>
    <service name="checkUpdatePrunRoutingTask" engine="java"
            location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="checkUpdatePrunRoutingTask" auth="true">
        <description>check if field for routingTask update are correct and if needed  recalculated data and update Production Run</description>
        <attribute name="productionRunId" type="String" mode="IN" optional="false"/>
        <attribute name="routingTaskId" type="String" mode="IN" optional="false"/>
        <attribute name="priority" type="Long" mode="IN"/>
        <attribute name="estimatedStartDate" type="Timestamp" mode="IN"/>
        <attribute name="estimatedSetupMillis" type="BigDecimal" mode="IN"/>
        <attribute name="estimatedMilliSeconds" type="BigDecimal" mode="IN"/>
    </service>
    <!-- TODO: NOT STILL IMPLEMENTED ('deleteWorkEffort' is called directly) -->
    <service name="deleteProductionRunRoutingTask" engine="java"
            location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="deleteProductionRunRoutingTask" auth="true">
        <description>delete a RoutingTask to an existing ProductionRun</description>
        <attribute name="productionRunId" type="String" mode="IN" optional="false"/>
        <attribute name="routingTaskId" type="String" mode="IN" optional="false"/>
    </service>
    <service name="addProductionRunComponent" engine="java"
            location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="addProductionRunComponent" auth="true">
        <description>add a Product Component to an existing ProductionRun</description>
        <attribute name="productionRunId" type="String" mode="IN" optional="false"/>
        <attribute name="productId" type="String" mode="IN" optional="false"/>
        <attribute name="estimatedQuantity" type="BigDecimal" mode="IN"/>
        <attribute name="workEffortId" type="String" mode="IN" optional="true"/>
    </service>
    <service name="updateProductionRunComponent" engine="java"
            location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="updateProductionRunComponent" auth="true">
        <description>update a Product Component to an existing ProductionRun</description>
        <attribute name="productionRunId" type="String" mode="IN" optional="false"/>
        <attribute name="productId" type="String" mode="IN" optional="false"/>
        <attribute name="workEffortId" type="String" mode="IN" optional="true"/>
        <attribute name="estimatedQuantity" type="BigDecimal" mode="IN" optional="true"/>
    </service>
    <!-- TODO: NOT STILL IMPLEMENTED ('removeWorkEffortGoodStandard' is called directly) -->
    <service name="deleteProductionRunComponent" engine="java"
            location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="deleteProductionRunComponent" auth="true">
        <description>delete a Product Component to an existing ProductionRun</description>
        <attribute name="productionRunId" type="String" mode="IN" optional="false"/>
        <attribute name="productId" type="String" mode="IN" optional="false"/>
    </service>
    <service name="issueProductionRunTask" engine="simple"
                location="component://manufacturing/script/org/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.xml" invoke="issueProductionRunTask" auth="false">
        <description>
            Issues the Inventory for a Production Run Task.
            Note that this skips the normal inventory reservation process.
        </description>
        <attribute name="workEffortId" type="String" mode="IN" optional="false"/>
        <attribute name="reserveOrderEnumId" type="String" mode="IN" optional="true"/>
        <attribute name="failIfItemsAreNotAvailable" type="String" mode="IN" optional="true"/>
        <attribute name="failIfItemsAreNotOnHand" type="String" mode="IN" optional="true"/>
    </service>
    <service name="issueProductionRunTaskComponent" engine="simple"
                location="component://manufacturing/script/org/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.xml" invoke="issueProductionRunTaskComponent" auth="false">
        <description>
            Issues the Inventory for a Production Run Task Component. For more info see the issueProductionRunTask service.
            If fromDate is passed, then the WorkEffortGoodStandard record with pk composed of (workEffortId|productId|fromDate)
            with type PRUNT_PROD_NEEDED is retrieved and used to get the quantity; its status is also updated to COMPLETED after
            the issuance is done.
            If locationSeqIds are provided, then the items are only issued from the inventory items associated to the locations.
            If failIfItemsAreNotAvailable is set to "Y" (the default is "N") then the service fails if there isn not enough inventory available:
            no reservation will be stolen.
            If failIfItemsAreNotOnHand is set to "Y" (the default is "N") then the service fails if there isn not enough inventory:
            no items with negative qoh will be created.
        </description>
        <attribute name="workEffortId" type="String" mode="IN" optional="false"/>
        <attribute name="productId" type="String" mode="IN" optional="false"/>
        <attribute name="fromDate" type="Timestamp" mode="IN" optional="true"/>
        <attribute name="quantity" type="BigDecimal" mode="IN" optional="true"/>
        <attribute name="failIfItemsAreNotAvailable" type="String" mode="IN" optional="true"/>
        <attribute name="failIfItemsAreNotOnHand" type="String" mode="IN" optional="true"/>
        <attribute name="reserveOrderEnumId" type="String" mode="IN" optional="true"/>
        <attribute name="locationSeqId" type="String" mode="IN" optional="true"/>
        <attribute name="secondaryLocationSeqId" type="String" mode="IN" optional="true"/>
        <attribute name="reasonEnumId" type="String" mode="IN" optional="true"/>
        <attribute name="description" type="String" mode="IN" optional="true"/>
    </service>
    <service name="issueInventoryItemToWorkEffort" engine="simple"
                location="component://manufacturing/script/org/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.xml" invoke="issueInventoryItemToWorkEffort" auth="false">
        <description>
            Issue one InventoryItem (or part of it) to a WorkEffort.
            Note that this skips the normal inventory reservation process.
        </description>
        <attribute name="workEffortId" type="String" mode="IN" optional="false"/>
        <attribute name="inventoryItem" type="org.ofbiz.entity.GenericValue" mode="IN" optional="false"/>
        <attribute name="quantity" type="BigDecimal" mode="IN" optional="true"/>
        <attribute name="quantityIssued" type="BigDecimal" mode="OUT" optional="false"/>
        <attribute name="finishedProductId" type="String" mode="OUT" optional="false"/>
    </service>
    <service name="productionRunProduce" engine="java" transaction-timeout="7200"
            location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="productionRunProduce" auth="true">
        <description>
            Create Inventory for product produced by a Production Run.
        </description>
        <attribute name="workEffortId" type="String" mode="IN" optional="false"/>
        <attribute name="inventoryItemIds" type="List" mode="OUT" optional="false"/>
        <attribute name="quantity" type="BigDecimal" mode="INOUT" optional="true"/>
        <attribute name="inventoryItemTypeId" type="String" mode="IN" optional="true"/>
        <attribute name="lotId" type="String" mode="IN" optional="true"/>
        <attribute name="createLotIfNeeded" type="Boolean" mode="IN" optional="true"/>
        <attribute name="autoCreateLot" type="Boolean" mode="IN" optional="true"/>
    </service>
    <service name="productionRunDeclareAndProduce" engine="java" transaction-timeout="7200"
            location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="productionRunDeclareAndProduce" auth="true">
        <description>
            Create Inventory for product produced by a Production Run and if necessary add declared quantities to tasks (and issue materials, if needed).
        </description>
        <attribute name="workEffortId" type="String" mode="IN" optional="false"/>
        <attribute name="inventoryItemIds" type="List" mode="OUT" optional="false"/>
        <attribute name="quantity" type="BigDecimal" mode="INOUT" optional="false"/>
        <attribute name="inventoryItemTypeId" type="String" mode="IN" optional="true"/>
        <attribute name="lotId" type="String" mode="IN" optional="true"/>
        <attribute name="createLotIfNeeded" type="Boolean" mode="IN" optional="true"/>
        <attribute name="autoCreateLot" type="Boolean" mode="IN" optional="true"/>
        <attribute name="componentsLocationMap" mode="IN" type="Map" optional="true"/>
    </service>
    <service name="productionRunTaskProduce" engine="java"
            location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="productionRunTaskProduce" auth="true">
        <description>
            Create Inventory from a Production Run Task.
        </description>
        <attribute name="workEffortId" type="String" mode="IN" optional="false"/>
        <attribute name="productId" type="String" mode="IN" optional="false"/>
        <attribute name="quantity" type="BigDecimal" mode="IN" optional="false"/>
        <attribute name="facilityId" type="String" mode="IN" optional="true"/>
        <attribute name="unitCost" type="BigDecimal" mode="IN" optional="true"/>
        <attribute name="currencyUomId" type="String" mode="IN" optional="true"/>
        <attribute name="inventoryItemTypeId" type="String" mode="IN" optional="true"/>
        <attribute name="inventoryItemIds" type="List" mode="OUT" optional="false"/>
    </service>
    <service name="productionRunTaskReturnMaterial" engine="java"
            location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="productionRunTaskReturnMaterial" auth="true">
        <description>
            Create Inventory from a Production Run Task, by returning to warehouse part of the materials allocated.
        </description>
        <attribute name="workEffortId" type="String" mode="IN" optional="false"/>
        <attribute name="productId" type="String" mode="IN" optional="false"/>
        <attribute name="quantity" type="BigDecimal" mode="IN" optional="true"/>
        <attribute name="inventoryItemTypeId" type="String" mode="IN" optional="true"/>
    </service>
    <service name="checkDecomposeInventoryItem" engine="java"
            location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="checkDecomposeInventoryItem" auth="true">
        <description>
            If the inventory item is for a 'marketing package' run the decomposeInventoryItem service.
            It is intended to be called as seca when a marketing package is received into warehouse (e.g. from a return).
        </description>
        <attribute name="inventoryItemId" type="String" mode="IN" optional="false"/>
        <!--<attribute name="quantityAccepted" type="BigDecimal" mode="IN" optional="true"/>-->
    </service>
    <service name="decomposeInventoryItem" engine="java"
            location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="decomposeInventoryItem" auth="true">
        <description>
            Create a decompose work effort, issue the inventory item (or part of it), and put in warehouse its components.
            It is intended to be called when a marketing package is received into warehouse (e.g. from a return).
            The components will be returned to inventory at ((Marketing Package Actual Inventory Unit Cost) / (Marketing Package Standard Cost)) * (Component Standard Cost)
        </description>
        <attribute name="inventoryItemId" type="String" mode="IN" optional="false"/>
        <attribute name="quantity" type="BigDecimal" mode="IN" optional="true"/>
        <attribute name="inventoryItemIds" type="List" mode="OUT" optional="false"/>
    </service>
    <service name="updateProductionRunTask" engine="java"
            location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="updateProductionRunTask" auth="true">
        <description>
            Add a TimeEntry for the production run task and updates the relevant fields.
        </description>
        <attribute name="productionRunId" type="String" mode="IN" optional="false"/>
        <attribute name="productionRunTaskId" type="String" mode="IN" optional="false"/>
        <attribute name="partyId" type="String" mode="IN" optional="true"/>
        <attribute name="fromDate" type="Timestamp" mode="IN" optional="true"/>
        <attribute name="thruDate" type="Timestamp" mode="IN" optional="true"/>
        <attribute name="addQuantityProduced" type="BigDecimal" mode="IN" optional="true"/>
        <attribute name="addQuantityRejected" type="BigDecimal" mode="IN" optional="true"/>
        <attribute name="addSetupTime" type="BigDecimal" mode="IN" optional="true"/>
        <attribute name="addTaskTime" type="BigDecimal" mode="IN" optional="true"/>
        <attribute name="comments" type="String" mode="IN" optional="true"/>
        <attribute name="issueRequiredComponents" type="Boolean" mode="IN" optional="true"/>
        <attribute name="componentsLocationMap" mode="IN" type="Map" optional="true"/>
    </service>
    <service name="quickRunProductionRunTask" engine="java"
            location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="quickRunProductionRunTask" auth="true">
        <description>Quick runs a ProductionRun task to the completed status, also issuing components if necessary.</description>
        <attribute name="productionRunId" type="String" mode="IN" optional="false"/>
        <attribute name="taskId" type="String" mode="IN" optional="false"/>
    </service>
    <service name="quickRunAllProductionRunTasks" engine="java"
            location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="quickRunAllProductionRunTasks" auth="true">
        <description>Quick runs all the tasks of a ProductionRun to the completed status, also issuing components if necessary.</description>
        <attribute name="productionRunId" type="String" mode="IN" optional="false"/>
    </service>
    <service name="quickStartAllProductionRunTasks" engine="java"
            location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="quickStartAllProductionRunTasks" auth="true">
        <description>Quick starts all the tasks of a ProductionRun.</description>
        <attribute name="productionRunId" type="String" mode="IN" optional="false"/>
    </service>
    <service name="quickChangeProductionRunStatus" engine="java"
            location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="quickChangeProductionRunStatus" auth="true">
        <description>Quick moves a ProductionRun to the passed in status, performing all the needed tasks in the way</description>
        <attribute name="productionRunId" type="String" mode="IN" optional="false"/>
        <attribute name="statusId" type="String" mode="IN" optional="false"/>
    </service>
    <service name="cancelProductionRun" engine="java"
            location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="cancelProductionRun" auth="true">
        <description>Cancels a ProductionRun.</description>
        <attribute name="productionRunId" type="String" mode="IN" optional="false"/>
    </service>
    <service name="getProductionRunTotResQty" engine="java"
            location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="getProductionRunTotResQty" auth="true">
        <description>Given a productId and an optional date, returns the total qty of productId reserved by production runs</description>
        <attribute name="productId" type="String" mode="IN" optional="false"/>
        <attribute name="startDate" type="Timestamp" mode="IN" optional="true"/>
        <attribute name="reservedQuantity" type="BigDecimal" mode="OUT" optional="false"/>
    </service>
    <service name="getWorkEffortCosts" engine="java"
            location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="getWorkEffortCosts" auth="true">
        <description>Retrieve the costs of a work effort (production run task).</description>
        <attribute mode="IN" name="workEffortId" optional="false" type="String"/>
        <attribute mode="OUT" name="costComponents" optional="false" type="List"/>
        <attribute mode="OUT" name="totalCost" optional="false" type="BigDecimal"/>
        <attribute mode="OUT" name="totalCostNoMaterials" optional="false" type="BigDecimal"/>
    </service>
    <service name="getProductionRunCost" engine="java"
            location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="getProductionRunCost" auth="true">
        <description>Retrieve the total cost of a production run.</description>
        <attribute mode="IN" name="workEffortId" optional="false" type="String"/>
        <attribute mode="OUT" name="totalCost" optional="false" type="BigDecimal"/>
    </service>
    <service name="createProductionRunTaskCosts" engine="java"
            location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="createProductionRunTaskCosts" auth="true">
        <description>Compute the actual costs for the production run task.</description>
        <attribute mode="IN" name="productionRunTaskId" optional="false" type="String"/>
    </service>
</services>
