| <?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. |
| --> |
| |
| <simple-methods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| xmlns="http://ofbiz.apache.org/Simple-Method" xsi:schemaLocation="http://ofbiz.apache.org/Simple-Method http://ofbiz.apache.org/dtds/simple-methods.xsd"> |
| <!-- Prerequisite data (available in demo data): |
| * PROD_MANUF and related manufacturing setup |
| * inventory for MAT_A_COST and MAT_B_COST |
| --> |
| <simple-method method-name="testProductionRunCreation" short-description="Test the creation of a production run" login-required="false"> |
| <set field="productId" value="PROD_MANUF"/> |
| <set field="facilityId" value="WebStoreWarehouse"/> |
| <set field="quantity" value="5.0" type="BigDecimal"/> |
| <now-timestamp field="nowTimestamp"/> |
| <set-calendar field="productionRunStartDate" from-field="nowTimestamp" days="1"/> |
| |
| <entity-one entity-name="UserLogin" value-field="userLogin"> |
| <field-map field-name="userLoginId" value="TestManufAdmin"/> |
| </entity-one> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| |
| <set field="serviceCtx.productId" from-field="productId"/> |
| <set field="serviceCtx.pRQuantity" from-field="quantity"/> |
| <set field="serviceCtx.startDate" from-field="productionRunStartDate"/> |
| <set field="serviceCtx.facilityId" from-field="facilityId"/> |
| |
| <!-- the service that we are going to test --> |
| <call-service service-name="createProductionRun" in-map-name="serviceCtx"> |
| <result-to-field result-name="productionRunId"/> |
| </call-service> |
| |
| <!-- the tests --> |
| <assert><not><if-empty field="productionRunId"/></not></assert> |
| <check-errors/> |
| |
| <entity-one entity-name="WorkEffort" value-field="productionRunHeader"> |
| <field-map field-name="workEffortId" from-field="productionRunId"/> |
| </entity-one> |
| |
| <assert> |
| <if-compare field="productionRunHeader.workEffortTypeId" operator="equals" value="PROD_ORDER_HEADER"/> |
| <if-compare-field field="productionRunHeader.facilityId" operator="equals" to-field="facilityId"/> |
| <if-compare field="productionRunHeader.currentStatusId" operator="equals" value="PRUN_CREATED"/> |
| <if-compare-field field="productionRunHeader.quantityToProduce" operator="equals" to-field="quantity"/> |
| <if-compare-field field="productionRunHeader.estimatedStartDate" operator="equals" to-field="productionRunStartDate" type="Timestamp"/> |
| <if-compare-field field="productionRunHeader.estimatedStartDate" operator="less" to-field="productionRunHeader.estimatedCompletionDate" type="Timestamp"/> |
| </assert> |
| |
| <entity-and entity-name="WorkEffortGoodStandard" list="productionRunProducts"> |
| <field-map field-name="workEffortId" from-field="productionRunId"/> |
| </entity-and> |
| <first-from-list list="productionRunProducts" entry="productionRunProduct"/> |
| |
| <assert> |
| <not><if-empty field="productionRunProduct"/></not> |
| <if-compare-field field="productionRunProduct.productId" operator="equals" to-field="productId"/> |
| <if-compare field="productionRunProduct.workEffortGoodStdTypeId" operator="equals" value="PRUN_PROD_DELIV"/> |
| <if-compare-field field="productionRunProduct.estimatedQuantity" operator="equals" to-field="quantity"/> |
| </assert> |
| |
| <entity-and entity-name="WorkEffort" list="productionRunTasks"> |
| <field-map field-name="workEffortParentId" from-field="productionRunId"/> |
| </entity-and> |
| <first-from-list list="productionRunTasks" entry="productionRunTask"/> |
| |
| <assert> |
| <not><if-empty field="productionRunTask"/></not> |
| <if-compare field="productionRunTask.workEffortTypeId" operator="equals" value="PROD_ORDER_TASK"/> |
| <if-compare-field field="productionRunTask.facilityId" operator="equals" to-field="facilityId"/> |
| <if-compare field="productionRunTask.fixedAssetId" operator="equals" value="WORKCENTER_COST"/> |
| <if-compare field="productionRunTask.currentStatusId" operator="equals" value="PRUN_CREATED"/> |
| <if-compare-field field="productionRunTask.quantityToProduce" operator="equals" to-field="quantity"/> |
| <if-compare-field field="productionRunHeader.estimatedStartDate" operator="equals" to-field="productionRunTask.estimatedStartDate" type="Timestamp"/> |
| <if-compare-field field="productionRunHeader.estimatedCompletionDate" operator="equals" to-field="productionRunTask.estimatedCompletionDate" type="Timestamp"/> |
| <if-compare field="productionRunTask.estimatedSetupMillis" operator="equals" value="600000.00" type="BigDecimal"/> |
| <if-compare field="productionRunTask.estimatedMilliSeconds" operator="equals" value="300000.00" type="BigDecimal"/> |
| </assert> |
| |
| <!-- Verify that the cost calcs were copied from the routing task to the production run task --> |
| <entity-and entity-name="WorkEffortCostCalc" list="costCalcs"> |
| <field-map field-name="workEffortId" from-field="productionRunTask.workEffortId" /> |
| </entity-and> |
| <first-from-list list="costCalcs" entry="costCalc"/> |
| |
| <assert> |
| <not><if-empty field="costCalc" /></not> |
| <if-compare field="costCalc.costComponentTypeId" operator="equals" value="OTHER_COST" /> |
| <if-compare field="costCalc.costComponentCalcId" operator="equals" value="TASK_COST_CALC" /> |
| </assert> |
| |
| <!-- Verify that the BOM was properly copied to the production run task --> |
| <entity-and entity-name="WorkEffortGoodStandard" list="productionRunMaterials"> |
| <field-map field-name="workEffortId" from-field="productionRunTask.workEffortId"/> |
| <field-map field-name="productId" value="MAT_A_COST"/> |
| </entity-and> |
| <first-from-list list="productionRunMaterials" entry="productionRunMaterialA"/> |
| <assert> |
| <not><if-empty field="productionRunMaterialA"/></not> |
| <if-compare field="productionRunMaterialA.workEffortGoodStdTypeId" operator="equals" value="PRUNT_PROD_NEEDED"/> |
| <if-compare field="productionRunMaterialA.estimatedQuantity" operator="equals" value="${quantity * 2}" type="BigDecimal"/> |
| </assert> |
| <entity-and entity-name="WorkEffortGoodStandard" list="productionRunMaterials"> |
| <field-map field-name="workEffortId" from-field="productionRunTask.workEffortId"/> |
| <field-map field-name="productId" value="MAT_B_COST"/> |
| </entity-and> |
| <first-from-list list="productionRunMaterials" entry="productionRunMaterialB"/> |
| <assert> |
| <not><if-empty field="productionRunMaterialB"/></not> |
| <if-compare field="productionRunMaterialB.workEffortGoodStdTypeId" operator="equals" value="PRUNT_PROD_NEEDED"/> |
| <if-compare field="productionRunMaterialB.estimatedQuantity" operator="equals" value="${quantity * 3}" type="BigDecimal"/> |
| </assert> |
| |
| <check-errors/> |
| </simple-method> |
| |
| <simple-method method-name="testProductionRunScheduleConfirm" short-description="Test the production run status change to scheduled and confirmed" login-required="false"> |
| <set field="productId" value="PROD_MANUF"/> |
| <set field="facilityId" value="WebStoreWarehouse"/> |
| <set field="quantity" value="5.0" type="BigDecimal"/> |
| <now-timestamp field="nowTimestamp"/> |
| <set-calendar field="productionRunStartDate" from-field="nowTimestamp" days="1"/> |
| |
| <entity-one entity-name="UserLogin" value-field="userLogin"> |
| <field-map field-name="userLoginId" value="TestManufAdmin"/> |
| </entity-one> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.productId" from-field="productId"/> |
| <set field="serviceCtx.pRQuantity" from-field="quantity"/> |
| <set field="serviceCtx.startDate" from-field="productionRunStartDate"/> |
| <set field="serviceCtx.facilityId" from-field="facilityId"/> |
| |
| <!-- production run #1 --> |
| <call-service service-name="createProductionRun" in-map-name="serviceCtx"> |
| <result-to-field result-name="productionRunId"/> |
| </call-service> |
| <clear-field field="serviceCtx"/> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.productionRunId" from-field="productionRunId"/> |
| <set field="serviceCtx.statusId" value="PRUN_SCHEDULED"/> |
| <call-service service-name="quickChangeProductionRunStatus" in-map-name="serviceCtx"/> |
| |
| <!-- the tests --> |
| <entity-one entity-name="WorkEffort" value-field="productionRunHeader"> |
| <field-map field-name="workEffortId" from-field="productionRunId"/> |
| </entity-one> |
| <entity-and entity-name="WorkEffort" list="productionRunTasks"> |
| <field-map field-name="workEffortParentId" from-field="productionRunId"/> |
| </entity-and> |
| <first-from-list list="productionRunTasks" entry="productionRunTask"/> |
| |
| <assert> |
| <if-compare field="productionRunHeader.currentStatusId" operator="equals" value="PRUN_SCHEDULED"/> |
| <if-compare field="productionRunTask.currentStatusId" operator="equals" value="PRUN_SCHEDULED"/> |
| </assert> |
| |
| <clear-field field="serviceCtx"/> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.productionRunId" from-field="productionRunId"/> |
| <set field="serviceCtx.statusId" value="PRUN_DOC_PRINTED"/> |
| <call-service service-name="quickChangeProductionRunStatus" in-map-name="serviceCtx"/> |
| |
| <refresh-value value-field="productionRunHeader"/> |
| <refresh-value value-field="productionRunTask"/> |
| <assert> |
| <if-compare field="productionRunHeader.currentStatusId" operator="equals" value="PRUN_DOC_PRINTED"/> |
| <if-compare field="productionRunTask.currentStatusId" operator="equals" value="PRUN_DOC_PRINTED"/> |
| </assert> |
| |
| <!-- production run #2 --> |
| <clear-field field="serviceCtx"/> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.productId" from-field="productId"/> |
| <set field="serviceCtx.pRQuantity" from-field="quantity"/> |
| <set field="serviceCtx.startDate" from-field="productionRunStartDate"/> |
| <set field="serviceCtx.facilityId" from-field="facilityId"/> |
| |
| <call-service service-name="createProductionRun" in-map-name="serviceCtx"> |
| <result-to-field result-name="productionRunId"/> |
| </call-service> |
| <clear-field field="serviceCtx"/> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.productionRunId" from-field="productionRunId"/> |
| <set field="serviceCtx.statusId" value="PRUN_DOC_PRINTED"/> |
| <call-service service-name="quickChangeProductionRunStatus" in-map-name="serviceCtx"/> |
| <entity-one entity-name="WorkEffort" value-field="productionRunHeader"> |
| <field-map field-name="workEffortId" from-field="productionRunId"/> |
| </entity-one> |
| <entity-and entity-name="WorkEffort" list="productionRunTasks"> |
| <field-map field-name="workEffortParentId" from-field="productionRunId"/> |
| </entity-and> |
| <first-from-list list="productionRunTasks" entry="productionRunTask"/> |
| |
| <assert> |
| <if-compare field="productionRunHeader.currentStatusId" operator="equals" value="PRUN_DOC_PRINTED"/> |
| <if-compare field="productionRunTask.currentStatusId" operator="equals" value="PRUN_DOC_PRINTED"/> |
| </assert> |
| |
| <check-errors/> |
| </simple-method> |
| |
| <simple-method method-name="testProductionRunDateChange" short-description="Test the production run start date change" login-required="false"> |
| <set field="productId" value="PROD_MANUF"/> |
| <set field="facilityId" value="WebStoreWarehouse"/> |
| <set field="quantity" value="5.0" type="BigDecimal"/> |
| <now-timestamp field="nowTimestamp"/> |
| <set-calendar field="productionRunStartDate" from-field="nowTimestamp" days="1"/> |
| |
| <entity-one entity-name="UserLogin" value-field="userLogin"> |
| <field-map field-name="userLoginId" value="TestManufAdmin"/> |
| </entity-one> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.productId" from-field="productId"/> |
| <set field="serviceCtx.pRQuantity" from-field="quantity"/> |
| <set field="serviceCtx.startDate" from-field="productionRunStartDate"/> |
| <set field="serviceCtx.facilityId" from-field="facilityId"/> |
| |
| <call-service service-name="createProductionRun" in-map-name="serviceCtx"> |
| <result-to-field result-name="productionRunId"/> |
| </call-service> |
| <clear-field field="serviceCtx"/> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.productionRunId" from-field="productionRunId"/> |
| <set field="serviceCtx.statusId" value="PRUN_SCHEDULED"/> |
| <call-service service-name="quickChangeProductionRunStatus" in-map-name="serviceCtx"/> |
| |
| <!-- the tests --> |
| <entity-one entity-name="WorkEffort" value-field="productionRunHeader"> |
| <field-map field-name="workEffortId" from-field="productionRunId"/> |
| </entity-one> |
| <entity-and entity-name="WorkEffort" list="productionRunTasks"> |
| <field-map field-name="workEffortParentId" from-field="productionRunId"/> |
| </entity-and> |
| <first-from-list list="productionRunTasks" entry="productionRunTask"/> |
| |
| <call-class-method class-name="org.apache.ofbiz.base.util.UtilDateTime" method-name="getInterval" ret-field="originalProductionRunEstimatedTime"> |
| <field field="productionRunHeader.estimatedStartDate" type="Timestamp"/> |
| <field field="productionRunHeader.estimatedCompletionDate" type="Timestamp"/> |
| </call-class-method> |
| |
| <set-calendar field="productionRunNewStartDate" from-field="nowTimestamp" days="8"/> |
| <clear-field field="serviceCtx"/> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.productionRunId" from-field="productionRunId"/> |
| <set field="serviceCtx.estimatedStartDate" from-field="productionRunNewStartDate"/> |
| <call-service service-name="updateProductionRun" in-map-name="serviceCtx"/> |
| |
| <refresh-value value-field="productionRunHeader"/> |
| <refresh-value value-field="productionRunTask"/> |
| <call-class-method class-name="org.apache.ofbiz.base.util.UtilDateTime" method-name="getInterval" ret-field="newProductionRunEstimatedTime"> |
| <field field="productionRunHeader.estimatedStartDate" type="Timestamp"/> |
| <field field="productionRunHeader.estimatedCompletionDate" type="Timestamp"/> |
| </call-class-method> |
| <set field="taskTimeDifference" value="${originalProductionRunEstimatedTime - newProductionRunEstimatedTime}" type="Double"/> |
| <assert> |
| <if-compare-field field="productionRunHeader.estimatedStartDate" operator="equals" to-field="productionRunNewStartDate" type="Timestamp"/> |
| <if-compare-field field="productionRunTask.estimatedStartDate" operator="equals" to-field="productionRunNewStartDate" type="Timestamp"/> |
| <or> |
| <if-compare field="taskTimeDifference" operator="equals" value="0.0" type="Double"/> |
| <!-- a difference of +/- 1 or 2 hours is accepted because it could be caused by DST change happening in one of the two time periods --> |
| <if-compare field="taskTimeDifference" operator="equals" value="3600000.0" type="Double"/> |
| <if-compare field="taskTimeDifference" operator="equals" value="-3600000.0" type="Double"/> |
| <if-compare field="taskTimeDifference" operator="equals" value="7200000.0" type="Double"/> |
| <if-compare field="taskTimeDifference" operator="equals" value="-7200000.0" type="Double"/> |
| </or> |
| </assert> |
| <check-errors/> |
| </simple-method> |
| |
| <simple-method method-name="testProductionRunCancelled" short-description="Test the process of cancelling a production run" login-required="false"> |
| <set field="productId" value="PROD_MANUF"/> |
| <set field="facilityId" value="WebStoreWarehouse"/> |
| <set field="quantity" value="5.0" type="BigDecimal"/> |
| <now-timestamp field="nowTimestamp"/> |
| <set-calendar field="productionRunStartDate" from-field="nowTimestamp" days="1"/> |
| |
| <entity-one entity-name="UserLogin" value-field="userLogin"> |
| <field-map field-name="userLoginId" value="TestManufAdmin"/> |
| </entity-one> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.productId" from-field="productId"/> |
| <set field="serviceCtx.pRQuantity" from-field="quantity"/> |
| <set field="serviceCtx.startDate" from-field="productionRunStartDate"/> |
| <set field="serviceCtx.facilityId" from-field="facilityId"/> |
| |
| <call-service service-name="createProductionRun" in-map-name="serviceCtx"> |
| <result-to-field result-name="productionRunId"/> |
| </call-service> |
| <clear-field field="serviceCtx"/> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.productionRunId" from-field="productionRunId"/> |
| <set field="serviceCtx.statusId" value="PRUN_SCHEDULED"/> |
| <call-service service-name="quickChangeProductionRunStatus" in-map-name="serviceCtx"/> |
| |
| <clear-field field="serviceCtx"/> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.productionRunId" from-field="productionRunId"/> |
| <call-service service-name="cancelProductionRun" in-map-name="serviceCtx"/> |
| |
| <!-- the tests --> |
| <entity-one entity-name="WorkEffort" value-field="productionRunHeader"> |
| <field-map field-name="workEffortId" from-field="productionRunId"/> |
| </entity-one> |
| <entity-and entity-name="WorkEffort" list="productionRunTasks"> |
| <field-map field-name="workEffortParentId" from-field="productionRunId"/> |
| </entity-and> |
| <first-from-list list="productionRunTasks" entry="productionRunTask"/> |
| |
| <assert> |
| <if-compare field="productionRunHeader.currentStatusId" operator="equals" value="PRUN_CANCELLED"/> |
| <if-compare field="productionRunTask.currentStatusId" operator="equals" value="PRUN_CANCELLED"/> |
| </assert> |
| |
| <entity-and entity-name="WorkEffortGoodStandard" list="productionRunProducts"> |
| <field-map field-name="workEffortId" from-field="productionRunId"/> |
| </entity-and> |
| <first-from-list list="productionRunProducts" entry="productionRunProduct"/> |
| |
| <assert> |
| <not><if-empty field="productionRunProduct"/></not> |
| <if-compare field="productionRunProduct.workEffortGoodStdTypeId" operator="equals" value="PRUN_PROD_DELIV"/> |
| <if-compare field="productionRunProduct.statusId" operator="equals" value="WEGS_CANCELLED"/> |
| </assert> |
| |
| <entity-and entity-name="WorkEffortGoodStandard" list="productionRunMaterials"> |
| <field-map field-name="workEffortId" from-field="productionRunTask.workEffortId"/> |
| <field-map field-name="productId" value="MAT_A_COST"/> |
| </entity-and> |
| <first-from-list list="productionRunMaterials" entry="productionRunMaterialA"/> |
| <assert> |
| <not><if-empty field="productionRunMaterialA"/></not> |
| <if-compare field="productionRunMaterialA.workEffortGoodStdTypeId" operator="equals" value="PRUNT_PROD_NEEDED"/> |
| <if-compare field="productionRunMaterialA.statusId" operator="equals" value="WEGS_CANCELLED"/> |
| </assert> |
| <entity-and entity-name="WorkEffortGoodStandard" list="productionRunMaterials"> |
| <field-map field-name="workEffortId" from-field="productionRunTask.workEffortId"/> |
| <field-map field-name="productId" value="MAT_B_COST"/> |
| </entity-and> |
| <first-from-list list="productionRunMaterials" entry="productionRunMaterialB"/> |
| <assert> |
| <not><if-empty field="productionRunMaterialB"/></not> |
| <if-compare field="productionRunMaterialB.workEffortGoodStdTypeId" operator="equals" value="PRUNT_PROD_NEEDED"/> |
| <if-compare field="productionRunMaterialB.statusId" operator="equals" value="WEGS_CANCELLED"/> |
| </assert> |
| |
| <check-errors/> |
| </simple-method> |
| |
| <simple-method method-name="testProductionRunQuickIssueAndProduce" short-description="Test the production run quick issuance of materials and production of finished product" login-required="false"> |
| <set field="productId" value="PROD_MANUF"/> |
| <set field="facilityId" value="WebStoreWarehouse"/> |
| <set field="quantity" value="2.0" type="BigDecimal"/> |
| <now-timestamp field="nowTimestamp"/> |
| <set-calendar field="productionRunStartDate" from-field="nowTimestamp" days="1"/> |
| |
| <entity-one entity-name="UserLogin" value-field="userLogin"> |
| <field-map field-name="userLoginId" value="TestManufAdmin"/> |
| </entity-one> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.productId" from-field="productId"/> |
| <set field="serviceCtx.pRQuantity" from-field="quantity"/> |
| <set field="serviceCtx.startDate" from-field="productionRunStartDate"/> |
| <set field="serviceCtx.facilityId" from-field="facilityId"/> |
| |
| <!-- production run --> |
| <call-service service-name="createProductionRun" in-map-name="serviceCtx"> |
| <result-to-field result-name="productionRunId"/> |
| </call-service> |
| <clear-field field="serviceCtx"/> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.productionRunId" from-field="productionRunId"/> |
| <set field="serviceCtx.statusId" value="PRUN_DOC_PRINTED"/> |
| <call-service service-name="quickChangeProductionRunStatus" in-map-name="serviceCtx"/> |
| <clear-field field="serviceCtx"/> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.productionRunId" from-field="productionRunId"/> |
| <call-service service-name="quickStartAllProductionRunTasks" in-map-name="serviceCtx"/> |
| <clear-field field="serviceCtx"/> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.productId" from-field="productId"/> |
| <set field="serviceCtx.currencyUomId" value="USD"/> |
| <set field="serviceCtx.costComponentTypePrefix" value="EST_STD"/> |
| <call-service service-name="calculateProductCosts" in-map-name="serviceCtx"/> |
| |
| <!-- the tests --> |
| <entity-one entity-name="WorkEffort" value-field="productionRunHeader"> |
| <field-map field-name="workEffortId" from-field="productionRunId"/> |
| </entity-one> |
| <entity-and entity-name="WorkEffort" list="productionRunTasks"> |
| <field-map field-name="workEffortParentId" from-field="productionRunId"/> |
| </entity-and> |
| <first-from-list entry="productionRunTask" list="productionRunTasks"/> |
| <entity-and entity-name="WorkEffortGoodStandard" list="productionRunMaterials"> |
| <field-map field-name="workEffortId" from-field="productionRunTask.workEffortId"/> |
| <field-map field-name="productId" value="MAT_A_COST"/> |
| </entity-and> |
| <first-from-list entry="productionRunMaterialA" list="productionRunMaterials"/> |
| <entity-and entity-name="WorkEffortGoodStandard" list="productionRunMaterials"> |
| <field-map field-name="workEffortId" from-field="productionRunTask.workEffortId"/> |
| <field-map field-name="productId" value="MAT_B_COST"/> |
| </entity-and> |
| <first-from-list entry="productionRunMaterialB" list="productionRunMaterials"/> |
| |
| <clear-field field="serviceCtx"/> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.workEffortId" from-field="productionRunId"/> |
| <set field="serviceCtx.inventoryItemTypeId" value="NON_SERIAL_INV_ITEM"/> |
| <set field="serviceCtx.lotId" value="LOT12345"/> |
| <set field="componentLocationMap.failIfItemsAreNotAvailable" from-field="Y"/> |
| <set field="componentLocationMap.locationSeqId" value=""/> |
| <set field="componentLocationMap.secondaryLocationSeqId" value=""/> |
| <set field="componentsLocationMap.${productionRunMaterialA}" from-field="componentLocationMap"/> |
| <set field="componentsLocationMap.${productionRunMaterialB}" from-field="componentLocationMap"/> |
| <set field="serviceCtx.componentsLocationMap" from-field="componentsLocationMap"/> |
| <set field="serviceCtx.quantity" value="1.0" type="BigDecimal"/> |
| <call-service service-name="productionRunDeclareAndProduce" in-map-name="serviceCtx"/> |
| <refresh-value value-field="productionRunHeader"/> |
| <refresh-value value-field="productionRunTask"/> |
| |
| <entity-and entity-name="WorkEffortAndInventoryAssign" list="consumedMaterials"> |
| <field-map field-name="workEffortId" from-field="productionRunTask.workEffortId"/> |
| <field-map field-name="productId" value="MAT_A_COST"/> |
| </entity-and> |
| <set field="materialAConsumedTotal" value="0.0" type="BigDecimal"/> |
| <iterate list="consumedMaterials" entry="consumedMaterial"> |
| <set field="materialAConsumedTotal" value="${materialAConsumedTotal + consumedMaterial.quantity}" type="BigDecimal"/> |
| </iterate> |
| <entity-and entity-name="WorkEffortAndInventoryAssign" list="consumedMaterials"> |
| <field-map field-name="workEffortId" from-field="productionRunTask.workEffortId"/> |
| <field-map field-name="productId" value="MAT_B_COST"/> |
| </entity-and> |
| <set field="materialBConsumedTotal" value="0.0" type="BigDecimal"/> |
| <iterate list="consumedMaterials" entry="consumedMaterial"> |
| <set field="materialBConsumedTotal" value="${materialBConsumedTotal + consumedMaterial.quantity}" type="BigDecimal"/> |
| </iterate> |
| <entity-and entity-name="WorkEffortAndInventoryProduced" list="producedMaterials"> |
| <field-map field-name="workEffortId" from-field="productionRunHeader.workEffortId"/> |
| </entity-and> |
| <set field="materialProducedTotal" value="0.0" type="BigDecimal"/> |
| <iterate list="producedMaterials" entry="producedMaterial"> |
| <set field="materialProducedTotal" value="${materialProducedTotal + producedMaterial.quantityOnHandTotal}" type="BigDecimal"/> |
| <assert> |
| <if-compare field="producedMaterial.lotId" operator="equals" value="LOT12345"/> |
| <if-compare field="producedMaterial.unitCost" operator="equals" value="84.00" type="BigDecimal"/> |
| <if-compare field="producedMaterial.currencyUomId" operator="equals" value="USD"/> |
| </assert> |
| </iterate> |
| |
| <assert> |
| <if-compare field="productionRunHeader.currentStatusId" operator="equals" value="PRUN_RUNNING"/> |
| <if-compare field="productionRunTask.currentStatusId" operator="equals" value="PRUN_RUNNING"/> |
| <if-compare field="materialAConsumedTotal" operator="equals" value="2.0" type="BigDecimal"/> |
| <if-compare field="materialBConsumedTotal" operator="equals" value="3.0" type="BigDecimal"/> |
| <if-compare field="materialProducedTotal" operator="equals" value="1.0" type="BigDecimal"/> |
| <if-compare field="productionRunHeader.quantityProduced" operator="equals" value="1.0" type="BigDecimal"/> |
| </assert> |
| |
| <clear-field field="serviceCtx"/> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.workEffortId" from-field="productionRunId"/> |
| <set field="serviceCtx.inventoryItemTypeId" value="NON_SERIAL_INV_ITEM"/> |
| <set field="serviceCtx.lotId" value="LOT12345"/> |
| <set field="componentLocationMap.failIfItemsAreNotAvailable" from-field="Y"/> |
| <set field="componentLocationMap.locationSeqId" value=""/> |
| <set field="componentLocationMap.secondaryLocationSeqId" value=""/> |
| <set field="componentsLocationMap.${productionRunMaterialA}" from-field="componentLocationMap"/> |
| <set field="componentsLocationMap.${productionRunMaterialB}" from-field="componentLocationMap"/> |
| <set field="serviceCtx.componentsLocationMap" from-field="componentsLocationMap"/> |
| <set field="serviceCtx.quantity" value="1.0" type="BigDecimal"/> |
| <call-service service-name="productionRunDeclareAndProduce" in-map-name="serviceCtx"/> |
| |
| <refresh-value value-field="productionRunHeader"/> |
| <refresh-value value-field="productionRunTask"/> |
| <entity-and entity-name="WorkEffortAndInventoryAssign" list="consumedMaterials"> |
| <field-map field-name="workEffortId" from-field="productionRunTask.workEffortId"/> |
| <field-map field-name="productId" value="MAT_A_COST"/> |
| </entity-and> |
| <set field="totalMaterialCost" value="0.0" type="BigDecimal"/> |
| <set field="materialAConsumedTotal" value="0.0" type="BigDecimal"/> |
| <iterate list="consumedMaterials" entry="consumedMaterial"> |
| <set field="materialAConsumedTotal" value="${materialAConsumedTotal + consumedMaterial.quantity}" type="BigDecimal"/> |
| <set field="totalMaterialCost" value="${totalMaterialCost + consumedMaterial.unitCost * consumedMaterial.quantity}" type="BigDecimal"/> |
| </iterate> |
| <entity-and entity-name="WorkEffortAndInventoryAssign" list="consumedMaterials"> |
| <field-map field-name="workEffortId" from-field="productionRunTask.workEffortId"/> |
| <field-map field-name="productId" value="MAT_B_COST"/> |
| </entity-and> |
| <set field="materialBConsumedTotal" value="0.0" type="BigDecimal"/> |
| <iterate list="consumedMaterials" entry="consumedMaterial"> |
| <set field="materialBConsumedTotal" value="${materialBConsumedTotal + consumedMaterial.quantity}" type="BigDecimal"/> |
| <set field="totalMaterialCost" value="${totalMaterialCost + consumedMaterial.unitCost * consumedMaterial.quantity}" type="BigDecimal"/> |
| </iterate> |
| <entity-and entity-name="WorkEffortAndInventoryProduced" list="producedMaterials"> |
| <field-map field-name="workEffortId" from-field="productionRunHeader.workEffortId"/> |
| </entity-and> |
| <set field="materialProducedTotal" value="0.0" type="BigDecimal"/> |
| <iterate list="producedMaterials" entry="producedMaterial"> |
| <set field="materialProducedTotal" value="${materialProducedTotal + producedMaterial.quantityOnHandTotal}" type="BigDecimal"/> |
| <assert> |
| <if-compare field="producedMaterial.lotId" operator="equals" value="LOT12345"/> |
| <if-compare field="producedMaterial.unitCost" operator="equals" value="84.00" type="BigDecimal"/> |
| <if-compare field="producedMaterial.currencyUomId" operator="equals" value="USD"/> |
| </assert> |
| </iterate> |
| |
| <assert> |
| <if-compare field="productionRunHeader.currentStatusId" operator="equals" value="PRUN_RUNNING"/> |
| <if-compare field="productionRunTask.currentStatusId" operator="equals" value="PRUN_RUNNING"/> |
| <if-compare field="materialAConsumedTotal" operator="equals" value="4.0" type="BigDecimal"/> |
| <if-compare field="materialBConsumedTotal" operator="equals" value="6.0" type="BigDecimal"/> |
| <if-compare field="materialProducedTotal" operator="equals" value="2.0" type="BigDecimal"/> |
| <if-compare field="productionRunHeader.quantityProduced" operator="equals" value="2.0" type="BigDecimal"/> |
| </assert> |
| |
| <clear-field field="serviceCtx"/> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.productionRunId" from-field="productionRunId"/> |
| <set field="serviceCtx.statusId" value="PRUN_COMPLETED"/> |
| <call-service service-name="quickChangeProductionRunStatus" in-map-name="serviceCtx"/> |
| <refresh-value value-field="productionRunHeader"/> |
| <refresh-value value-field="productionRunTask"/> |
| <assert> |
| <if-compare field="productionRunHeader.currentStatusId" operator="equals" value="PRUN_COMPLETED"/> |
| <if-compare field="productionRunTask.currentStatusId" operator="equals" value="PRUN_COMPLETED"/> |
| </assert> |
| |
| <entity-and entity-name="CostComponent" list="costComponents"> |
| <field-map field-name="workEffortId" from-field="productionRunHeader.workEffortId"/> |
| </entity-and> |
| <iterate list="costComponents" entry="costComponent"> |
| <if-compare field="costComponent.costComponentTypeId" operator="equals" value="ACTUAL_GEN_COST"> |
| <assert> |
| <if-compare field="costComponent.costUomId" operator="equals" value="USD"/> |
| <if-compare field="costComponent.costComponentCalcId" operator="equals" value="GEN_COST_CALC"/> |
| <if-compare field="costComponent.cost" operator="equals" value="6.7835" type="BigDecimal"/> |
| </assert> |
| </if-compare> |
| </iterate> |
| |
| <entity-and entity-name="CostComponent" list="costComponents"> |
| <field-map field-name="workEffortId" from-field="productionRunTask.workEffortId"/> |
| </entity-and> |
| <iterate list="costComponents" entry="costComponent"> |
| <if-compare field="costComponent.costComponentTypeId" operator="equals" value="ACTUAL_MAT_COST"> |
| <assert> |
| <if-compare field="costComponent.costUomId" operator="equals" value="USD"/> |
| <if-compare field="costComponent.cost" operator="equals" value="78.00" type="BigDecimal"/> |
| </assert> |
| </if-compare> |
| <if-compare field="costComponent.costComponentTypeId" operator="equals" value="ACTUAL_ROUTE_COST"> |
| <assert> |
| <if-compare field="costComponent.costUomId" operator="equals" value="USD"/> |
| <if-compare field="costComponent.fixedAssetId" operator="equals" value="WORKCENTER_COST"/> |
| <if-compare field="costComponent.cost" operator="equals" value="16.67" type="BigDecimal"/> |
| </assert> |
| </if-compare> |
| <if-compare field="costComponent.costComponentTypeId" operator="equals" value="ACTUAL_OTHER_COST"> |
| <assert> |
| <if-compare field="costComponent.costUomId" operator="equals" value="USD"/> |
| <if-compare field="costComponent.costComponentCalcId" operator="equals" value="TASK_COST_CALC"/> |
| <if-compare field="costComponent.cost" operator="equals" value="41.00" type="BigDecimal"/> |
| </assert> |
| </if-compare> |
| </iterate> |
| |
| <clear-field field="serviceCtx"/> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.workEffortId" from-field="productionRunId"/> |
| <call-service service-name="getProductionRunCost" in-map-name="serviceCtx"> |
| <result-to-field result-name="totalCost"/> |
| </call-service> |
| <assert> |
| <if-compare field="totalCost" operator="equals" value="142.4535" type="BigDecimal"/> |
| </assert> |
| |
| <set field="postedTotalAmount" value="0.0" type="BigDecimal"/> |
| <entity-and entity-name="AcctgTrans" list="acctgTransList"> |
| <field-map field-name="acctgTransTypeId" value="INVENTORY"/> |
| <field-map field-name="workEffortId" from-field="productionRunHeader.workEffortId"/> |
| </entity-and> |
| <iterate list="acctgTransList" entry="acctgTrans"> |
| <assert><if-compare field="acctgTrans.isPosted" operator="equals" value="Y"/></assert> |
| <get-related value-field="acctgTrans" relation-name="AcctgTransEntry" list="acctgTransEntryList"/> |
| <iterate list="acctgTransEntryList" entry="acctgTransEntry"> |
| <if-compare field="acctgTransEntry.debitCreditFlag" operator="equals" value="C"> |
| <assert> |
| <if-compare field="acctgTransEntry.glAccountTypeId" operator="equals" value="WIP_INVENTORY"/> |
| <if-compare field="acctgTransEntry.glAccountId" operator="equals" value="142000"/> |
| <if-compare field="acctgTransEntry.amount" operator="equals" value="84.00" type="BigDecimal"/> |
| </assert> |
| <set field="postedTotalAmount" value="${postedTotalAmount + acctgTransEntry.amount}" type="BigDecimal"/> |
| <else> |
| <assert> |
| <if-compare field="acctgTransEntry.glAccountTypeId" operator="equals" value="INVENTORY_ACCOUNT"/> |
| <if-compare field="acctgTransEntry.glAccountId" operator="equals" value="140000"/> |
| <if-compare field="acctgTransEntry.amount" operator="equals" value="84.00" type="BigDecimal"/> |
| </assert> |
| </else> |
| </if-compare> |
| </iterate> |
| </iterate> |
| <assert> |
| <if-compare field="postedTotalAmount" operator="equals" value="168.00" type="BigDecimal"/> |
| </assert> |
| |
| <set field="postedTotalAmount" value="0.0" type="BigDecimal"/> |
| <entity-and entity-name="AcctgTrans" list="acctgTransList"> |
| <field-map field-name="acctgTransTypeId" value="MANUFACTURING"/> |
| <field-map field-name="workEffortId" from-field="productionRunHeader.workEffortId"/> |
| </entity-and> |
| <iterate list="acctgTransList" entry="acctgTrans"> |
| <assert><if-compare field="acctgTrans.isPosted" operator="equals" value="Y"/></assert> |
| <get-related value-field="acctgTrans" relation-name="AcctgTransEntry" list="acctgTransEntryList"/> |
| <iterate list="acctgTransEntryList" entry="acctgTransEntry"> |
| <if-compare field="acctgTransEntry.debitCreditFlag" operator="equals" value="C"> |
| <assert> |
| <if-compare field="acctgTransEntry.glAccountTypeId" operator="equals" value="OPERATING_EXPENSE"/> |
| <if-compare field="acctgTransEntry.glAccountId" operator="equals" value="600000"/> |
| <if-compare field="acctgTransEntry.amount" operator="equals" value="6.78" type="BigDecimal"/> |
| </assert> |
| <set field="postedTotalAmount" value="${postedTotalAmount + acctgTransEntry.amount}" type="BigDecimal"/> |
| <else> |
| <assert> |
| <if-compare field="acctgTransEntry.glAccountTypeId" operator="equals" value="WIP_INVENTORY"/> |
| <if-compare field="acctgTransEntry.glAccountId" operator="equals" value="142000"/> |
| <if-compare field="acctgTransEntry.amount" operator="equals" value="6.78" type="BigDecimal"/> |
| <if-compare-field field="acctgTransEntry.productId" operator="equals" to-field="productId"/> |
| </assert> |
| </else> |
| </if-compare> |
| </iterate> |
| </iterate> |
| <assert> |
| <if-compare field="postedTotalAmount" operator="equals" value="6.78" type="BigDecimal"/> |
| </assert> |
| |
| <set field="postedTotalAmount" value="0.0" type="BigDecimal"/> |
| <entity-and entity-name="AcctgTrans" list="acctgTransList"> |
| <field-map field-name="acctgTransTypeId" value="INVENTORY"/> |
| <field-map field-name="workEffortId" from-field="productionRunTask.workEffortId"/> |
| </entity-and> |
| <iterate list="acctgTransList" entry="acctgTrans"> |
| <assert><if-compare field="acctgTrans.isPosted" operator="equals" value="Y"/></assert> |
| <get-related value-field="acctgTrans" relation-name="AcctgTransEntry" list="acctgTransEntryList"/> |
| <iterate list="acctgTransEntryList" entry="acctgTransEntry"> |
| <if-compare field="acctgTransEntry.debitCreditFlag" operator="equals" value="D"> |
| <assert> |
| <if-compare field="acctgTransEntry.glAccountTypeId" operator="equals" value="WIP_INVENTORY"/> |
| <if-compare field="acctgTransEntry.glAccountId" operator="equals" value="142000"/> |
| <if-compare-field field="acctgTransEntry.productId" operator="equals" to-field="productId"/> |
| <or> |
| <if-compare field="acctgTransEntry.amount" operator="equals" value="18.00" type="BigDecimal"/> |
| <if-compare field="acctgTransEntry.amount" operator="equals" value="21.00" type="BigDecimal"/> |
| <if-compare field="acctgTransEntry.amount" operator="equals" value="36.00" type="BigDecimal"/> |
| <if-compare field="acctgTransEntry.amount" operator="equals" value="42.00" type="BigDecimal"/> |
| </or> |
| </assert> |
| <set field="postedTotalAmount" value="${postedTotalAmount + acctgTransEntry.amount}" type="BigDecimal"/> |
| <else> |
| <assert> |
| <if-compare field="acctgTransEntry.glAccountTypeId" operator="equals" value="RAWMAT_INVENTORY"/> |
| <if-compare field="acctgTransEntry.glAccountId" operator="equals" value="141000"/> |
| <or> |
| <and> |
| <or> |
| <if-compare field="acctgTransEntry.amount" operator="equals" value="18.00" type="BigDecimal"/> |
| <if-compare field="acctgTransEntry.amount" operator="equals" value="36.00" type="BigDecimal"/> |
| </or> |
| <if-compare field="acctgTransEntry.productId" operator="equals" value="MAT_A_COST"/> |
| </and> |
| <and> |
| <or> |
| <if-compare field="acctgTransEntry.amount" operator="equals" value="21.00" type="BigDecimal"/> |
| <if-compare field="acctgTransEntry.amount" operator="equals" value="42.00" type="BigDecimal"/> |
| </or> |
| <if-compare field="acctgTransEntry.productId" operator="equals" value="MAT_B_COST"/> |
| </and> |
| </or> |
| </assert> |
| </else> |
| </if-compare> |
| </iterate> |
| </iterate> |
| <assert> |
| <if-compare field="postedTotalAmount" operator="equals" value="117.00" type="BigDecimal"/> |
| </assert> |
| |
| <set field="postedTotalAmount" value="0.0" type="BigDecimal"/> |
| <entity-and entity-name="AcctgTrans" list="acctgTransList"> |
| <field-map field-name="acctgTransTypeId" value="MANUFACTURING"/> |
| <field-map field-name="workEffortId" from-field="productionRunTask.workEffortId"/> |
| </entity-and> |
| <iterate list="acctgTransList" entry="acctgTrans"> |
| <assert><if-compare field="acctgTrans.isPosted" operator="equals" value="Y"/></assert> |
| <get-related value-field="acctgTrans" relation-name="AcctgTransEntry" list="acctgTransEntryList"/> |
| <iterate list="acctgTransEntryList" entry="acctgTransEntry"> |
| <assert> |
| <if-compare-field field="acctgTransEntry.productId" operator="equals" to-field="productId"/> |
| <or> |
| <if-compare field="acctgTransEntry.amount" operator="equals" value="41.00" type="BigDecimal"/> |
| <if-compare field="acctgTransEntry.amount" operator="equals" value="16.67" type="BigDecimal"/> |
| </or> |
| </assert> |
| <if-compare field="acctgTransEntry.debitCreditFlag" operator="equals" value="C"> |
| <assert> |
| <if-compare field="acctgTransEntry.glAccountTypeId" operator="equals" value="OPERATING_EXPENSE"/> |
| <if-compare field="acctgTransEntry.glAccountId" operator="equals" value="600000"/> |
| </assert> |
| <set field="postedTotalAmount" value="${postedTotalAmount + acctgTransEntry.amount}" type="BigDecimal"/> |
| <else> |
| <assert> |
| <if-compare field="acctgTransEntry.glAccountTypeId" operator="equals" value="WIP_INVENTORY"/> |
| <if-compare field="acctgTransEntry.glAccountId" operator="equals" value="142000"/> |
| </assert> |
| </else> |
| </if-compare> |
| </iterate> |
| </iterate> |
| <assert> |
| <if-compare field="postedTotalAmount" operator="equals" value="57.67" type="BigDecimal"/> |
| </assert> |
| |
| <check-errors/> |
| </simple-method> |
| |
| <simple-method method-name="testQuickRunProductionRun" short-description="Test the quick execution of a production run" login-required="false"> |
| <set field="productId" value="PROD_MANUF"/> |
| <set field="facilityId" value="WebStoreWarehouse"/> |
| <set field="quantity" value="1.0" type="BigDecimal"/> |
| <now-timestamp field="nowTimestamp"/> |
| <set-calendar field="productionRunStartDate" from-field="nowTimestamp" days="1"/> |
| |
| <entity-one entity-name="UserLogin" value-field="userLogin"> |
| <field-map field-name="userLoginId" value="TestManufAdmin"/> |
| </entity-one> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.productId" from-field="productId"/> |
| <set field="serviceCtx.pRQuantity" from-field="quantity"/> |
| <set field="serviceCtx.startDate" from-field="productionRunStartDate"/> |
| <set field="serviceCtx.facilityId" from-field="facilityId"/> |
| |
| <!-- production run --> |
| <call-service service-name="createProductionRun" in-map-name="serviceCtx"> |
| <result-to-field result-name="productionRunId"/> |
| </call-service> |
| <clear-field field="serviceCtx"/> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.productionRunId" from-field="productionRunId"/> |
| <set field="serviceCtx.statusId" value="PRUN_DOC_PRINTED"/> |
| <call-service service-name="quickChangeProductionRunStatus" in-map-name="serviceCtx"/> |
| <clear-field field="serviceCtx"/> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.productionRunId" from-field="productionRunId"/> |
| <call-service service-name="quickRunAllProductionRunTasks" in-map-name="serviceCtx"/> |
| <clear-field field="serviceCtx"/> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.workEffortId" from-field="productionRunId"/> |
| <call-service service-name="getProductionRunCost" in-map-name="serviceCtx"> |
| <result-to-field result-name="totalCost"/> |
| </call-service> |
| <assert> |
| <if-compare field="totalCost" operator="equals" value="84.00" type="BigDecimal"/> |
| </assert> |
| |
| <entity-one entity-name="WorkEffort" value-field="productionRunHeader"> |
| <field-map field-name="workEffortId" from-field="productionRunId"/> |
| </entity-one> |
| <entity-and entity-name="WorkEffort" list="productionRunTasks"> |
| <field-map field-name="workEffortParentId" from-field="productionRunId"/> |
| </entity-and> |
| <first-from-list list="productionRunTasks" entry="productionRunTask"/> |
| |
| <assert> |
| <if-compare field="productionRunHeader.currentStatusId" operator="equals" value="PRUN_COMPLETED"/> |
| <if-compare field="productionRunTask.currentStatusId" operator="equals" value="PRUN_COMPLETED"/> |
| </assert> |
| <check-errors/> |
| </simple-method> |
| |
| <simple-method method-name="testQuickCloseProductionRun" short-description="Test the quick finalization of a production run" login-required="false"> |
| <set field="productId" value="PROD_MANUF"/> |
| <set field="facilityId" value="WebStoreWarehouse"/> |
| <set field="quantity" value="1.0" type="BigDecimal"/> |
| <now-timestamp field="nowTimestamp"/> |
| <set-calendar field="productionRunStartDate" from-field="nowTimestamp" days="1"/> |
| |
| <entity-one entity-name="UserLogin" value-field="userLogin"> |
| <field-map field-name="userLoginId" value="TestManufAdmin"/> |
| </entity-one> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.productId" from-field="productId"/> |
| <set field="serviceCtx.pRQuantity" from-field="quantity"/> |
| <set field="serviceCtx.startDate" from-field="productionRunStartDate"/> |
| <set field="serviceCtx.facilityId" from-field="facilityId"/> |
| |
| <!-- production run --> |
| <call-service service-name="createProductionRun" in-map-name="serviceCtx"> |
| <result-to-field result-name="productionRunId"/> |
| </call-service> |
| <clear-field field="serviceCtx"/> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.productionRunId" from-field="productionRunId"/> |
| <set field="serviceCtx.statusId" value="PRUN_DOC_PRINTED"/> |
| <call-service service-name="quickChangeProductionRunStatus" in-map-name="serviceCtx"/> |
| <clear-field field="serviceCtx"/> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.productionRunId" from-field="productionRunId"/> |
| <set field="serviceCtx.statusId" value="PRUN_CLOSED"/> |
| <call-service service-name="quickChangeProductionRunStatus" in-map-name="serviceCtx"/> |
| <clear-field field="serviceCtx"/> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.workEffortId" from-field="productionRunId"/> |
| <call-service service-name="getProductionRunCost" in-map-name="serviceCtx"> |
| <result-to-field result-name="totalCost"/> |
| </call-service> |
| <assert> |
| <if-compare field="totalCost" operator="equals" value="84.00" type="BigDecimal"/> |
| </assert> |
| |
| <entity-one entity-name="WorkEffort" value-field="productionRunHeader"> |
| <field-map field-name="workEffortId" from-field="productionRunId"/> |
| </entity-one> |
| <entity-and entity-name="WorkEffort" list="productionRunTasks"> |
| <field-map field-name="workEffortParentId" from-field="productionRunId"/> |
| </entity-and> |
| <first-from-list list="productionRunTasks" entry="productionRunTask"/> |
| |
| <assert> |
| <if-compare field="productionRunHeader.currentStatusId" operator="equals" value="PRUN_CLOSED"/> |
| <if-compare-field field="productionRunHeader.quantityProduced" operator="equals" to-field="quantity"/> |
| <if-compare field="productionRunTask.currentStatusId" operator="equals" value="PRUN_CLOSED"/> |
| <if-compare-field field="productionRunTask.quantityProduced" operator="equals" to-field="quantity"/> |
| </assert> |
| |
| <check-errors/> |
| </simple-method> |
| |
| <simple-method method-name="testCreateProductionRunForOrder" short-description="Test the creation of a production run for a specified sales order" login-required="false"> |
| <set field="productId" value="PROD_MANUF"/> |
| |
| <entity-one entity-name="UserLogin" value-field="userLogin"> |
| <field-map field-name="userLoginId" value="admin"/> |
| </entity-one> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.productId" from-field="productId"/> |
| <call-service service-name="createTestSalesOrderSingle" in-map-name="serviceCtx"> |
| <result-to-field result-name="orderId"/> |
| </call-service> |
| <assert><not><if-empty field="orderId"/></not></assert> |
| <check-errors/> |
| |
| <entity-one entity-name="UserLogin" value-field="userLogin"> |
| <field-map field-name="userLoginId" value="TestManufAdmin"/> |
| </entity-one> |
| |
| <entity-and entity-name="OrderItem" list="orderItems"> |
| <field-map field-name="orderId" from-field="orderId"/> |
| <field-map field-name="productId" from-field="productId"/> |
| </entity-and> |
| <first-from-list list="orderItems" entry="orderItem"/> |
| <assert> |
| <not><if-empty field="orderItem"/></not> |
| </assert> |
| <check-errors/> |
| <entity-and entity-name="OrderItemShipGrpInvRes" list="orderItemShipGrpInvRess"> |
| <field-map field-name="orderId" from-field="orderId"/> |
| <field-map field-name="orderItemSeqId" from-field="orderItem.orderItemSeqId"/> |
| </entity-and> |
| <first-from-list list="orderItemShipGrpInvRess" entry="originalOrderItemShipGrpInvRes"/> |
| <assert> |
| <not><if-empty field="originalOrderItemShipGrpInvRes"/></not> |
| </assert> |
| <check-errors/> |
| |
| <clear-field field="serviceCtx"/> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.orderId" from-field="orderId"/> |
| <call-service service-name="createProductionRunsForOrder" in-map-name="serviceCtx"> |
| <result-to-field result-name="productionRuns"/> |
| </call-service> |
| <first-from-list list="productionRuns" entry="productionRunId"/> |
| <assert><not><if-empty field="productionRunId"/></not></assert> |
| <check-errors/> |
| |
| <entity-one entity-name="WorkEffort" value-field="productionRunHeader"> |
| <field-map field-name="workEffortId" from-field="productionRunId"/> |
| </entity-one> |
| <entity-and entity-name="WorkEffort" list="productionRunTasks"> |
| <field-map field-name="workEffortParentId" from-field="productionRunId"/> |
| </entity-and> |
| <first-from-list list="productionRunTasks" entry="productionRunTask"/> |
| |
| <assert> |
| <if-compare field="productionRunHeader.workEffortTypeId" operator="equals" value="PROD_ORDER_HEADER"/> |
| <if-compare field="productionRunHeader.facilityId" operator="equals" value="WebStoreWarehouse"/> |
| <if-compare field="productionRunHeader.currentStatusId" operator="equals" value="PRUN_CREATED"/> |
| <if-compare field="productionRunTask.currentStatusId" operator="equals" value="PRUN_CREATED"/> |
| <if-compare field="productionRunHeader.quantityToProduce" operator="equals" value="1.0" type="BigDecimal"/> |
| </assert> |
| |
| <entity-and entity-name="WorkEffortGoodStandard" list="productionRunProducts"> |
| <field-map field-name="workEffortId" from-field="productionRunId"/> |
| </entity-and> |
| <first-from-list list="productionRunProducts" entry="productionRunProduct"/> |
| |
| <assert> |
| <not><if-empty field="productionRunProduct"/></not> |
| <if-compare-field field="productionRunProduct.productId" operator="equals" to-field="productId"/> |
| <if-compare field="productionRunProduct.workEffortGoodStdTypeId" operator="equals" value="PRUN_PROD_DELIV"/> |
| <if-compare field="productionRunProduct.estimatedQuantity" operator="equals" value="1.0" type="BigDecimal"/> |
| </assert> |
| |
| <entity-and entity-name="WorkOrderItemFulfillment" list="workOrderItemFulfillments"> |
| <field-map field-name="workEffortId" from-field="productionRunId"/> |
| <field-map field-name="orderId" from-field="orderId"/> |
| </entity-and> |
| <first-from-list list="workOrderItemFulfillments" entry="workOrderItemFulfillment"/> |
| <assert> |
| <not><if-empty field="workOrderItemFulfillment"/></not> |
| <not><if-empty field="workOrderItemFulfillment.orderItemSeqId"/></not> |
| </assert> |
| <check-errors/> |
| |
| <clear-field field="serviceCtx"/> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.productionRunId" from-field="productionRunId"/> |
| <set field="serviceCtx.statusId" value="PRUN_DOC_PRINTED"/> |
| <call-service service-name="quickChangeProductionRunStatus" in-map-name="serviceCtx"/> |
| <clear-field field="serviceCtx"/> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.productionRunId" from-field="productionRunId"/> |
| <set field="serviceCtx.statusId" value="PRUN_CLOSED"/> |
| <call-service service-name="quickChangeProductionRunStatus" in-map-name="serviceCtx"/> |
| |
| <entity-and entity-name="WorkEffortAndInventoryProduced" list="producedMaterials"> |
| <field-map field-name="workEffortId" from-field="productionRunHeader.workEffortId"/> |
| </entity-and> |
| <first-from-list entry="producedMaterial" list="producedMaterials"/> |
| |
| <entity-and entity-name="OrderItemShipGrpInvRes" list="orderItemShipGrpInvRess"> |
| <field-map field-name="orderId" from-field="orderId"/> |
| <field-map field-name="orderItemSeqId" from-field="orderItem.orderItemSeqId"/> |
| </entity-and> |
| <first-from-list entry="newOrderItemShipGrpInvRes" list="orderItemShipGrpInvRess"/> |
| <assert> |
| <not><if-empty field="newOrderItemShipGrpInvRes"/></not> |
| <not><if-compare-field field="newOrderItemShipGrpInvRes.inventoryItemId" operator="equals" to-field="originalOrderItemShipGrpInvRes.inventoryItemId"/></not> |
| <if-compare-field field="producedMaterial.inventoryItemId" operator="equals" to-field="newOrderItemShipGrpInvRes.inventoryItemId"/> |
| <not><if-compare-field field="producedMaterial.inventoryItemId" operator="equals" to-field="newOrderItemShipGrpInvRes.inventoryItemId"/></not> |
| </assert> |
| </simple-method> |
| |
| <simple-method method-name="testCreateProductionRunForRequirement" short-description="Test the creation of a production run for a specified requirement" login-required="false"> |
| <set field="productId" value="PROD_MANUF"/> |
| <now-timestamp field="nowTimestamp"/> |
| <set-calendar field="startDate" from-field="nowTimestamp" days="1"/> |
| |
| <entity-one entity-name="UserLogin" value-field="userLogin"> |
| <field-map field-name="userLoginId" value="TestSupplyAdmin"/> |
| </entity-one> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.productId" from-field="productId"/> |
| <set field="serviceCtx.requirementTypeId" value="INTERNAL_REQUIREMENT"/> |
| <set field="serviceCtx.facilityId" value="WebStoreWarehouse"/> |
| <set field="serviceCtx.requirementStartDate" from-field="startDate"/> |
| |
| <call-service service-name="createRequirement" in-map-name="serviceCtx"> |
| <result-to-field result-name="requirementId"/> |
| </call-service> |
| |
| <set field="nowTime" value="${date:nowTimestamp()}" type="Timestamp"/> |
| <set field="serviceCtx.userLogin" from-field="userLogin"/> |
| <set field="serviceCtx.requirementId" from-field="requirementId"/> |
| <set field="serviceCtx.statusId" value="REQ_APPROVED"/> |
| <call-service service-name="updateRequirement" in-map-name="serviceCtx"/> |
| |
| <entity-condition entity-name="WorkEffort" list="workEfforts"> |
| <condition-list> |
| <condition-expr field-name="lastUpdatedStamp" operator="greater-equals" from-field="nowTime"/> |
| <condition-expr field-name="workEffortTypeId" value="PROD_ORDER_HEADER"/> |
| </condition-list> |
| </entity-condition> |
| <first-from-list entry="productionRunHeader" list="workEfforts"/> |
| <entity-and entity-name="WorkEffort" list="productionRunTasks"> |
| <field-map field-name="workEffortParentId" from-field="productionRunHeader.workEffortId"/> |
| </entity-and> |
| <first-from-list entry="productionRunTask" list="productionRunTasks"/> |
| |
| <assert> |
| <if-compare field="productionRunHeader.workEffortTypeId" operator="equals" value="PROD_ORDER_HEADER"/> |
| <if-compare field="productionRunHeader.facilityId" operator="equals" value="WebStoreWarehouse"/> |
| <if-compare field="productionRunHeader.currentStatusId" operator="equals" value="PRUN_CREATED"/> |
| <if-compare field="productionRunTask.currentStatusId" operator="equals" value="PRUN_CREATED"/> |
| <if-compare field="productionRunHeader.quantityToProduce" operator="equals" value="1.0" type="BigDecimal"/> |
| <if-compare-field field="productionRunHeader.estimatedStartDate" operator="equals" to-field="startDate" type="Timestamp"/> |
| <if-compare-field field="productionRunTask.estimatedStartDate" operator="equals" to-field="startDate" type="Timestamp"/> |
| </assert> |
| |
| <entity-and entity-name="WorkEffortGoodStandard" list="productionRunProducts"> |
| <field-map field-name="workEffortId" from-field="productionRunHeader.workEffortId"/> |
| </entity-and> |
| <first-from-list list="productionRunProducts" entry="productionRunProduct"/> |
| |
| <assert> |
| <not><if-empty field="productionRunProduct"/></not> |
| <if-compare-field field="productionRunProduct.productId" operator="equals" to-field="productId"/> |
| <if-compare field="productionRunProduct.workEffortGoodStdTypeId" operator="equals" value="PRUN_PROD_DELIV"/> |
| <if-compare field="productionRunProduct.estimatedQuantity" operator="equals" value="1.0" type="BigDecimal"/> |
| </assert> |
| </simple-method> |
| |
| </simple-methods> |