You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ja...@apache.org on 2008/04/18 15:24:49 UTC
svn commit: r649532 - in /ofbiz/trunk/applications/manufacturing:
script/org/ofbiz/manufacturing/jobshopmgt/ servicedef/
src/org/ofbiz/manufacturing/jobshopmgt/ webapp/manufacturing/WEB-INF/
webapp/manufacturing/WEB-INF/actions/jobshopmgt/ webapp/manuf...
Author: jacopoc
Date: Fri Apr 18 06:24:47 2008
New Revision: 649532
URL: http://svn.apache.org/viewvc?rev=649532&view=rev
Log:
Added ability to specify the primare/alternative locations for materials when using the quick produce form in the production run screen.
Added:
ofbiz/trunk/applications/manufacturing/src/org/ofbiz/manufacturing/jobshopmgt/ProductionRunEvents.java (with props)
Modified:
ofbiz/trunk/applications/manufacturing/script/org/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.xml
ofbiz/trunk/applications/manufacturing/servicedef/services_production_run.xml
ofbiz/trunk/applications/manufacturing/src/org/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.java
ofbiz/trunk/applications/manufacturing/webapp/manufacturing/WEB-INF/actions/jobshopmgt/ProductionRunDeclaration.bsh
ofbiz/trunk/applications/manufacturing/webapp/manufacturing/WEB-INF/controller.xml
ofbiz/trunk/applications/manufacturing/webapp/manufacturing/jobshopmgt/ProductionRunForms.xml
ofbiz/trunk/applications/manufacturing/widget/manufacturing/JobshopScreens.xml
Modified: ofbiz/trunk/applications/manufacturing/script/org/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/manufacturing/script/org/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.xml?rev=649532&r1=649531&r2=649532&view=diff
==============================================================================
--- ofbiz/trunk/applications/manufacturing/script/org/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.xml (original)
+++ ofbiz/trunk/applications/manufacturing/script/org/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.xml Fri Apr 18 06:24:47 2008
@@ -222,8 +222,22 @@
<calculate field-name="quantityNotIssued" map-name="parameters"><number value="0"/></calculate>
</if-compare>
<if-not-empty field-name="workEffortGoodStandard">
- <set value="WEGS_COMPLETED" field="workEffortGoodStandard.statusId"/>
- <store-value value-name="workEffortGoodStandard"/>
+ <entity-and list-name="issuances" entity-name="WorkEffortAndInventoryAssign">
+ <field-map field-name="workEffortId" env-name="workEffortGoodStandard.workEffortId"/>
+ <field-map field-name="productId" env-name="workEffortGoodStandard.productId"/>
+ </entity-and>
+ <iterate list-name="issuances" entry-name="issuance">
+ <calculate field-name="totalIssuance">
+ <calcop operator="add">
+ <calcop field-name="issuance.quantity" operator="get"/>
+ <calcop field-name="totalIssuance" operator="get"/>
+ </calcop>
+ </calculate>
+ </iterate>
+ <if-compare-field field-name="workEffortGoodStandard.estimatedQuantity" operator="less-equals" to-field-name="totalIssuance" type="Double">
+ <set value="WEGS_COMPLETED" field="workEffortGoodStandard.statusId"/>
+ <store-value value-name="workEffortGoodStandard"/>
+ </if-compare-field>
</if-not-empty>
</if-not-empty>
</simple-method>
Modified: ofbiz/trunk/applications/manufacturing/servicedef/services_production_run.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/manufacturing/servicedef/services_production_run.xml?rev=649532&r1=649531&r2=649532&view=diff
==============================================================================
--- ofbiz/trunk/applications/manufacturing/servicedef/services_production_run.xml (original)
+++ ofbiz/trunk/applications/manufacturing/servicedef/services_production_run.xml Fri Apr 18 06:24:47 2008
@@ -205,6 +205,7 @@
<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">
@@ -266,6 +267,7 @@
<attribute name="addTaskTime" type="Double" 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">
Added: ofbiz/trunk/applications/manufacturing/src/org/ofbiz/manufacturing/jobshopmgt/ProductionRunEvents.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/manufacturing/src/org/ofbiz/manufacturing/jobshopmgt/ProductionRunEvents.java?rev=649532&view=auto
==============================================================================
--- ofbiz/trunk/applications/manufacturing/src/org/ofbiz/manufacturing/jobshopmgt/ProductionRunEvents.java (added)
+++ ofbiz/trunk/applications/manufacturing/src/org/ofbiz/manufacturing/jobshopmgt/ProductionRunEvents.java Fri Apr 18 06:24:47 2008
@@ -0,0 +1,101 @@
+/*******************************************************************************
+ * 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.
+ *******************************************************************************/
+package org.ofbiz.manufacturing.jobshopmgt;
+
+import java.sql.Timestamp;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.GeneralException;
+import org.ofbiz.base.util.UtilHttp;
+import org.ofbiz.base.util.UtilMisc;
+import org.ofbiz.entity.GenericDelegator;
+import org.ofbiz.entity.GenericPK;
+import org.ofbiz.service.GenericServiceException;
+import org.ofbiz.entity.GenericValue;
+import org.ofbiz.service.LocalDispatcher;
+
+import javolution.util.FastMap;
+
+public class ProductionRunEvents {
+
+ public static final String module = ProductionRunEvents.class.getName();
+
+ public static String productionRunDeclareAndProduce(HttpServletRequest request, HttpServletResponse response) {
+ HttpSession session = request.getSession();
+ GenericDelegator delegator = (GenericDelegator) request.getAttribute("delegator");
+ LocalDispatcher dispatcher = (LocalDispatcher) request.getAttribute("dispatcher");
+ GenericValue userLogin = (GenericValue) session.getAttribute("userLogin");
+
+ Map parameters = UtilHttp.getParameterMap(request);
+
+ Double quantity = null;
+ try {
+ quantity = Double.valueOf((String)parameters.get("quantity"));
+ } catch(NumberFormatException nfe) {
+ String errMsg = "Invalid format for quantity field: " + nfe.toString();
+ Debug.logError(nfe, errMsg, module);
+ request.setAttribute("_ERROR_MESSAGE_", errMsg);
+ return "error";
+ }
+
+ Collection<Map<String, Object>> componentRows = UtilHttp.parseMultiFormData(parameters);
+ Map componentsLocationMap = FastMap.newInstance();
+ for (Map<String, Object>componentRow : componentRows) {
+ Timestamp fromDate = null;
+ try {
+ fromDate = Timestamp.valueOf((String)componentRow.get("fromDate"));
+ } catch(IllegalArgumentException iae) {
+ String errMsg = "Invalid format for date field: " + iae.toString();
+ Debug.logError(iae, errMsg, module);
+ request.setAttribute("_ERROR_MESSAGE_", errMsg);
+ return "error";
+ }
+ GenericPK key = GenericPK.create(delegator.getModelEntity("WorkEffortGoodStandard"), UtilMisc.toMap("workEffortId", (String)componentRow.get("productionRunTaskId"),
+ "productId", (String)componentRow.get("productId"),
+ "fromDate", fromDate,
+ "workEffortGoodStdTypeId", "PRUNT_PROD_NEEDED"));
+ componentsLocationMap.put(key, UtilMisc.toMap("locationSeqId", (String)componentRow.get("locationSeqId"),
+ "secondaryLocationSeqId", (String)componentRow.get("secondaryLocationSeqId"),
+ "failIfItemsAreNotAvailable", (String)componentRow.get("failIfItemsAreNotAvailable")));
+ }
+
+ try {
+ Map inputMap = UtilMisc.toMap("workEffortId", parameters.get("workEffortId"), "inventoryItemTypeId", parameters.get("inventoryItemTypeId"));
+ inputMap.put("componentsLocationMap", componentsLocationMap);
+ inputMap.put("quantity", quantity);
+ inputMap.put("userLogin", userLogin);
+ Map result = dispatcher.runSync("productionRunDeclareAndProduce", inputMap);
+ } catch (GenericServiceException e) {
+ String errMsg = "Error issuing materials: " + e.toString();
+ Debug.logError(e, errMsg, module);
+ request.setAttribute("_ERROR_MESSAGE_", errMsg);
+ return "error";
+ }
+
+ return "success";
+ }
+}
Propchange: ofbiz/trunk/applications/manufacturing/src/org/ofbiz/manufacturing/jobshopmgt/ProductionRunEvents.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: ofbiz/trunk/applications/manufacturing/src/org/ofbiz/manufacturing/jobshopmgt/ProductionRunEvents.java
------------------------------------------------------------------------------
svn:keywords = Date Rev Author URL Id
Propchange: ofbiz/trunk/applications/manufacturing/src/org/ofbiz/manufacturing/jobshopmgt/ProductionRunEvents.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: ofbiz/trunk/applications/manufacturing/src/org/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/manufacturing/src/org/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.java?rev=649532&r1=649531&r2=649532&view=diff
==============================================================================
--- ofbiz/trunk/applications/manufacturing/src/org/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.java (original)
+++ ofbiz/trunk/applications/manufacturing/src/org/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.java Fri Apr 18 06:24:47 2008
@@ -40,6 +40,7 @@
import org.ofbiz.entity.GenericDelegator;
import org.ofbiz.entity.GenericEntityException;
import org.ofbiz.entity.GenericValue;
+import org.ofbiz.entity.GenericPK;
import org.ofbiz.entity.util.EntityUtil;
import org.ofbiz.entity.condition.EntityExpr;
import org.ofbiz.entity.condition.EntityOperator;
@@ -1636,6 +1637,7 @@
// Optional input fields
Double quantity = (Double)context.get("quantity");
+ Map componentsLocationMap = (Map)context.get("componentsLocationMap");
// The production run is loaded
ProductionRun productionRun = new ProductionRun(productionRunId, delegator, dispatcher);
@@ -1667,6 +1669,7 @@
Map serviceContext = UtilMisc.toMap("productionRunId", productionRunId, "productionRunTaskId", taskId);
serviceContext.put("addQuantityProduced", new Double(minimumQuantityProducedByTask - quantityDeclared.doubleValue()));
serviceContext.put("issueRequiredComponents", Boolean.TRUE);
+ serviceContext.put("componentsLocationMap", componentsLocationMap);
serviceContext.put("userLogin", userLogin);
Map resultService = dispatcher.runSync("updateProductionRunTask", serviceContext);
} catch (GenericServiceException e) {
@@ -1677,7 +1680,10 @@
}
}
try {
- result = dispatcher.runSync("productionRunProduce", context);
+ Map inputMap = FastMap.newInstance();
+ inputMap.putAll(context);
+ inputMap.remove("componentsLocationMap");
+ result = dispatcher.runSync("productionRunProduce", inputMap);
} catch (GenericServiceException e) {
Debug.logError(e, "Problem calling the changeProductionRunTaskStatus service", module);
return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunStatusNotChanged", locale));
@@ -1877,6 +1883,7 @@
Double addTaskTime = (Double)context.get("addTaskTime");
String comments = (String)context.get("comments");
Boolean issueRequiredComponents = (Boolean)context.get("issueRequiredComponents");
+ Map componentsLocationMap = (Map)context.get("componentsLocationMap");
if (issueRequiredComponents == null) {
issueRequiredComponents = Boolean.FALSE;
@@ -1970,8 +1977,18 @@
}
double requiredQuantity = totalRequiredMaterialQuantity - totalIssued;
if (requiredQuantity > 0) {
+ GenericPK key = component.getPrimaryKey();
+ Map componentsLocation = null;
+ if (componentsLocationMap != null) {
+ componentsLocation = (Map)componentsLocationMap.get(key);
+ }
Map serviceContext = UtilMisc.toMap("workEffortId", workEffortId, "productId", component.getString("productId"), "fromDate", component.getTimestamp("fromDate"));
serviceContext.put("quantity", new Double(requiredQuantity));
+ if (componentsLocation != null) {
+ serviceContext.put("locationSeqId", (String)componentsLocation.get("locationSeqId"));
+ serviceContext.put("secondaryLocationSeqId", (String)componentsLocation.get("secondaryLocationSeqId"));
+ serviceContext.put("failIfItemsAreNotAvailable", (String)componentsLocation.get("failIfItemsAreNotAvailable"));
+ }
serviceContext.put("userLogin", userLogin);
Map resultService = dispatcher.runSync("issueProductionRunTaskComponent", serviceContext);
}
Modified: ofbiz/trunk/applications/manufacturing/webapp/manufacturing/WEB-INF/actions/jobshopmgt/ProductionRunDeclaration.bsh
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/manufacturing/webapp/manufacturing/WEB-INF/actions/jobshopmgt/ProductionRunDeclaration.bsh?rev=649532&r1=649531&r2=649532&view=diff
==============================================================================
--- ofbiz/trunk/applications/manufacturing/webapp/manufacturing/WEB-INF/actions/jobshopmgt/ProductionRunDeclaration.bsh (original)
+++ ofbiz/trunk/applications/manufacturing/webapp/manufacturing/WEB-INF/actions/jobshopmgt/ProductionRunDeclaration.bsh Fri Apr 18 06:24:47 2008
@@ -240,10 +240,9 @@
componentData.put("isRunning", "null");
}
productionRunComponentsData.add(componentData);
- if (component.getString("workEffortId").equals(issueTaskId)) {
+ if (productionRunTask.getString("currentStatusId").equals("PRUN_RUNNING") && "WEGS_CREATED".equals(component.getString("statusId"))) {
productionRunComponentsDataReadyForIssuance.add(componentData);
- }
- if (totalIssued > 0.0) {
+ } else if (totalIssued > 0.0) {
productionRunComponentsAlreadyIssued.add(componentData);
}
}
Modified: ofbiz/trunk/applications/manufacturing/webapp/manufacturing/WEB-INF/controller.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/manufacturing/webapp/manufacturing/WEB-INF/controller.xml?rev=649532&r1=649531&r2=649532&view=diff
==============================================================================
--- ofbiz/trunk/applications/manufacturing/webapp/manufacturing/WEB-INF/controller.xml (original)
+++ ofbiz/trunk/applications/manufacturing/webapp/manufacturing/WEB-INF/controller.xml Fri Apr 18 06:24:47 2008
@@ -655,7 +655,7 @@
</request-map>
<request-map uri="productionRunDeclareAndProduce">
<security https="true" auth="true"/>
- <event type="service" invoke="productionRunDeclareAndProduce"/>
+ <event type="java" path="org.ofbiz.manufacturing.jobshopmgt.ProductionRunEvents" invoke="productionRunDeclareAndProduce"/>
<response name="success" type="view" value="ProductionRunDeclaration"/>
<response name="error" type="view" value="ProductionRunDeclaration"/>
</request-map>
Modified: ofbiz/trunk/applications/manufacturing/webapp/manufacturing/jobshopmgt/ProductionRunForms.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/manufacturing/webapp/manufacturing/jobshopmgt/ProductionRunForms.xml?rev=649532&r1=649531&r2=649532&view=diff
==============================================================================
--- ofbiz/trunk/applications/manufacturing/webapp/manufacturing/jobshopmgt/ProductionRunForms.xml (original)
+++ ofbiz/trunk/applications/manufacturing/webapp/manufacturing/jobshopmgt/ProductionRunForms.xml Fri Apr 18 06:24:47 2008
@@ -252,7 +252,7 @@
<submit button-type="button"/>
</field>
</form>
- <form name="ProductionRunDeclareAndProduce" type="single" target="productionRunDeclareAndProduce" title="" default-map-name="productionRunData"
+ <form name="ProductionRunDeclareAndProduceTop" type="single" skip-end="true" target="productionRunDeclareAndProduce" title="" default-map-name="productionRunData"
header-row-style="header-row" default-table-style="basic-table">
<field name="workEffortId"><hidden/></field>
<field name="quantity" title="${uiLabelMap.ManufacturingProduceQuantity}" tooltip="If required, materials will be issued as well."><text/></field>
@@ -261,9 +261,44 @@
<entity-options entity-name="InventoryItemType" description="${description}"/>
</drop-down>
</field>
- <field name="submitButton" title="${uiLabelMap.CommonAdd}">
- <submit button-type="button"/>
+ </form>
+ <form name="ProductionRunDeclareAndProduceBottom" skip-start="true" type="multi" title="" list-name="productionRunComponentsDataReadyForIssuance"
+ odd-row-style="alternate-row" default-table-style="basic-table hover-bar">
+ <field name="productionRunTaskId" entry-name="workEffortId"><hidden/></field>
+ <field name="productId"><hidden/></field>
+ <field name="fromDate"><hidden/></field>
+ <field name="failIfItemsAreNotAvailable">
+ <drop-down allow-empty="false">
+ <option key="Y" description="${uiLabelMap.CommonYes}"/>
+ <option key="N" description="${uiLabelMap.CommonNo}"/>
+ </drop-down>
+ </field>
+ <field name="task" entry-name="workEffortId" title="${uiLabelMap.ManufacturingRoutingTaskId}">
+ <display description="${workEffortName} [${workEffortId}]" also-hidden="false"/>
+ </field>
+ <field name="internalName" title="${uiLabelMap.ProductProductName}">
+ <display description="${productName} [${productId}]" also-hidden="false"/>
+ </field>
+ <field name="estimatedQuantity" title="${uiLabelMap.ManufacturingQuantity}"><display also-hidden="false"/></field>
+ <field name="issuedQuantity" title="${uiLabelMap.ManufacturingIssuedQuantity}"><display also-hidden="false"/></field>
+ <field name="locationSeqId">
+ <drop-down allow-empty="true">
+ <entity-options entity-name="ProductFacilityLocation" description="${locationSeqId}">
+ <entity-constraint name="productId" env-name="productId"/>
+ <entity-constraint name="facilityId" env-name="facilityId"/>
+ </entity-options>
+ </drop-down>
+ </field>
+ <field name="secondaryLocationSeqId">
+ <drop-down allow-empty="true">
+ <entity-options entity-name="ProductFacilityLocation" description="${locationSeqId}" key-field-name="locationSeqId">
+ <entity-constraint name="productId" env-name="productId"/>
+ <entity-constraint name="facilityId" env-name="facilityId"/>
+ </entity-options>
+ </drop-down>
</field>
+ <field name="_rowSubmit"><hidden value="Y"/></field>
+ <field name="submitButton" title="${uiLabelMap.CommonSubmit}"><submit/></field>
</form>
<form name="ListProductionRunDeclRoutingTasks" type="list" target="ProductionRunDeclaration" title="" list-name="productionRunRoutingTasks"
Modified: ofbiz/trunk/applications/manufacturing/widget/manufacturing/JobshopScreens.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/manufacturing/widget/manufacturing/JobshopScreens.xml?rev=649532&r1=649531&r2=649532&view=diff
==============================================================================
--- ofbiz/trunk/applications/manufacturing/widget/manufacturing/JobshopScreens.xml (original)
+++ ofbiz/trunk/applications/manufacturing/widget/manufacturing/JobshopScreens.xml Fri Apr 18 06:24:47 2008
@@ -274,8 +274,9 @@
</container>
<container style="screenlet-body">
<section>
- <widgets>
- <include-form name="ProductionRunDeclareAndProduce" location="component://manufacturing/webapp/manufacturing/jobshopmgt/ProductionRunForms.xml"/>
+ <widgets>
+ <include-form name="ProductionRunDeclareAndProduceTop" location="component://manufacturing/webapp/manufacturing/jobshopmgt/ProductionRunForms.xml"/>
+ <include-form name="ProductionRunDeclareAndProduceBottom" location="component://manufacturing/webapp/manufacturing/jobshopmgt/ProductionRunForms.xml"/>
</widgets>
</section>
</container>