svn commit: r482800 - in /incubator/ofbiz/trunk/specialpurpose: ./ hhfacility/ hhfacility/script/ hhfacility/script/org/ hhfacility/script/org/ofbiz/ hhfacility/script/org/ofbiz/hhfacility/ hhfacility/servicedef/ hhfacility/src/ hhfacility/src/org/ hhf...

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r482800 - in /incubator/ofbiz/trunk/specialpurpose: ./ hhfacility/ hhfacility/script/ hhfacility/script/org/ hhfacility/script/org/ofbiz/ hhfacility/script/org/ofbiz/hhfacility/ hhfacility/servicedef/ hhfacility/src/ hhfacility/src/org/ hhf...

jacopoc
Author: jacopoc
Date: Tue Dec  5 13:57:06 2006
New Revision: 482800

URL: http://svn.apache.org/viewvc?view=rev&rev=482800
Log:
First commit of the "hhfacility" component a special purpose application for warehouse operations done using hand held devices.
The application is still in a very initial stage, a lot of cleanups still need to be done, but it is a nice start.
It has been contributed by Daniel Goodwin and Ray Barlow; see OFBIZ-226 for details.
Daniel, Ray many thanks to both of you.


Added:
    incubator/ofbiz/trunk/specialpurpose/hhfacility/   (with props)
    incubator/ofbiz/trunk/specialpurpose/hhfacility/build.xml   (with props)
    incubator/ofbiz/trunk/specialpurpose/hhfacility/ofbiz-component.xml   (with props)
    incubator/ofbiz/trunk/specialpurpose/hhfacility/script/
    incubator/ofbiz/trunk/specialpurpose/hhfacility/script/org/
    incubator/ofbiz/trunk/specialpurpose/hhfacility/script/org/ofbiz/
    incubator/ofbiz/trunk/specialpurpose/hhfacility/script/org/ofbiz/hhfacility/
    incubator/ofbiz/trunk/specialpurpose/hhfacility/script/org/ofbiz/hhfacility/FacilityServices.xml   (with props)
    incubator/ofbiz/trunk/specialpurpose/hhfacility/servicedef/
    incubator/ofbiz/trunk/specialpurpose/hhfacility/servicedef/services_hhfacility.xml   (with props)
    incubator/ofbiz/trunk/specialpurpose/hhfacility/src/
    incubator/ofbiz/trunk/specialpurpose/hhfacility/src/org/
    incubator/ofbiz/trunk/specialpurpose/hhfacility/src/org/ofbiz/
    incubator/ofbiz/trunk/specialpurpose/hhfacility/src/org/ofbiz/hhfacility/
    incubator/ofbiz/trunk/specialpurpose/hhfacility/src/org/ofbiz/hhfacility/FacilityServices.java   (with props)
    incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/
    incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/
    incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/WEB-INF/
    incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/WEB-INF/actions/
    incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/WEB-INF/controller.xml   (with props)
    incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/error/
    incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/error/error.jsp   (with props)
    incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/facilities.ftl   (with props)
    incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/forms/
    incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/forms/FacilityForms.xml   (with props)
    incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/includes/
    incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/includes/header.ftl   (with props)
    incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/includes/messages.ftl   (with props)
    incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/index.jsp   (with props)
    incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/main.ftl   (with props)
    incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/menu.ftl   (with props)
    incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/productstocktake.ftl   (with props)
    incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/receipt.ftl   (with props)
    incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/setFocusOnField.ftl   (with props)
    incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/stocktake.ftl   (with props)
    incubator/ofbiz/trunk/specialpurpose/hhfacility/widget/
    incubator/ofbiz/trunk/specialpurpose/hhfacility/widget/hhfacility/
Modified:
    incubator/ofbiz/trunk/specialpurpose/build.xml
    incubator/ofbiz/trunk/specialpurpose/component-load.xml

Modified: incubator/ofbiz/trunk/specialpurpose/build.xml
URL: http://svn.apache.org/viewvc/incubator/ofbiz/trunk/specialpurpose/build.xml?view=diff&rev=482800&r1=482799&r2=482800
==============================================================================
--- incubator/ofbiz/trunk/specialpurpose/build.xml (original)
+++ incubator/ofbiz/trunk/specialpurpose/build.xml Tue Dec  5 13:57:06 2006
@@ -17,7 +17,7 @@
 
 <project name="OFBiz Special Purpose Applications Build" default="build" basedir=".">
     <filelist id="application-builds" dir="."
-        files="pos/build.xml"/>
+        files="pos/build.xml, hhfacility/build.xml"/>
 
     <!-- ================================================================== -->
     <!-- Removes all created files and directories                          -->

Modified: incubator/ofbiz/trunk/specialpurpose/component-load.xml
URL: http://svn.apache.org/viewvc/incubator/ofbiz/trunk/specialpurpose/component-load.xml?view=diff&rev=482800&r1=482799&r2=482800
==============================================================================
--- incubator/ofbiz/trunk/specialpurpose/component-load.xml (original)
+++ incubator/ofbiz/trunk/specialpurpose/component-load.xml Tue Dec  5 13:57:06 2006
@@ -18,4 +18,5 @@
 <component-loader xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/component-loader.xsd">
     <load-component component-location="${ofbiz.home}/specialpurpose/pos"/>
+    <load-component component-location="${ofbiz.home}/specialpurpose/hhfacility"/>
 </component-loader>

Propchange: incubator/ofbiz/trunk/specialpurpose/hhfacility/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Tue Dec  5 13:57:06 2006
@@ -0,0 +1 @@
+build

Added: incubator/ofbiz/trunk/specialpurpose/hhfacility/build.xml
URL: http://svn.apache.org/viewvc/incubator/ofbiz/trunk/specialpurpose/hhfacility/build.xml?view=auto&rev=482800
==============================================================================
--- incubator/ofbiz/trunk/specialpurpose/hhfacility/build.xml (added)
+++ incubator/ofbiz/trunk/specialpurpose/hhfacility/build.xml Tue Dec  5 13:57:06 2006
@@ -0,0 +1,118 @@
+<?xml version="1.0"?>
+<!--
+Copyright 2001-2006 The Apache Software Foundation
+
+Licensed 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.
+-->
+
+<project name="OFBiz - HHFacility" default="jar" basedir=".">
+
+    <!-- ================================================================== -->
+    <!-- Initialization of all property settings                            -->
+    <!-- ================================================================== -->
+
+    <target name="init">
+        <property environment="env"/>
+        <property name="desc" value="HHFacility Component"/>
+        <property name="name" value="ofbiz-hhfacility"/>
+        <property name="ofbiz.home.dir" value="../.."/>
+        <property name="src.dir" value="src"/>
+        <property name="build.dir" value="build"/>
+    </target>
+
+    <target name="classpath">
+        <path id="local.class.path">
+            <fileset dir="../../framework/base/lib" includes="*.jar"/>
+            <fileset dir="../../framework/base/lib/commons" includes="*.jar"/>
+            <fileset dir="../../framework/base/lib/j2eespecs" includes="*.jar"/>
+            <fileset dir="../../framework/base/lib/scripting" includes="*.jar"/>
+            <fileset dir="../../framework/base/build/lib" includes="*.jar"/>
+            <fileset dir="../../framework/entity/lib" includes="*.jar"/>
+            <fileset dir="../../framework/entity/build/lib" includes="*.jar"/>
+            <fileset dir="../../framework/security/build/lib" includes="*.jar"/>
+            <fileset dir="../../framework/service/lib" includes="*.jar"/>
+            <fileset dir="../../framework/service/build/lib" includes="*.jar"/>
+            <fileset dir="../../framework/entityext/build/lib" includes="*.jar"/>
+            <fileset dir="../../framework/guiapp/lib" includes="*.jar"/>
+            <fileset dir="../../framework/guiapp/build/lib" includes="*.jar"/>
+            <fileset dir="../../framework/webapp/build/lib" includes="*.jar"/>
+            <fileset dir="../../applications/party/build/lib" includes="*.jar"/>
+            <fileset dir="../../applications/product/build/lib" includes="*.jar"/>
+        </path>
+    </target>
+
+    <!-- ================================================================== -->
+    <!-- Removes all created files and directories                          -->
+    <!-- ================================================================== -->
+
+    <target name="clean" depends="clean-lib">
+        <delete dir="${build.dir}"/>
+    </target>
+
+    <target name="clean-lib" depends="init">
+        <delete dir="${build.dir}/lib"/>
+    </target>
+
+    <!-- ================================================================== -->
+    <!-- Makes sure the needed directory structure is in place              -->
+    <!-- ================================================================== -->
+
+    <target name="prepare" depends="clean-lib">
+        <mkdir dir="${build.dir}/classes"/>
+        <mkdir dir="${build.dir}/lib"/>
+    </target>
+
+    <target name="prepare-docs" depends="init">
+        <mkdir dir="${build.dir}/javadocs"/>
+    </target>
+
+    <!-- ================================================================== -->
+    <!-- Compilation of the source files                                                                                                                         -->
+    <!-- ================================================================== -->
+
+    <target name="classes" depends="prepare,classpath">
+     <javac debug="on" source="1.4" deprecation="on" destdir="${build.dir}/classes">
+            <classpath>
+                <path refid="local.class.path"/>
+            </classpath>
+            <src path="${src.dir}"/>
+        </javac>
+        <copy todir="${build.dir}/classes">
+            <fileset dir="${src.dir}" includes="**/*.properties,**/*.xml,**/*.bsh,**/*.logic,**/*.js,**/*.jacl,**/*.py"/>
+        </copy>
+        
+        <!-- now add the NOTICE and LICENSE files to allow the jar file to be distributed alone -->
+        <copy todir="${build.dir}/classes/META-INF">
+            <fileset dir="${ofbiz.home.dir}" includes="NOTICE,LICENSE"/>
+        </copy>        
+    </target>
+
+    <target name="jar" depends="classes">
+        <jar jarfile="${build.dir}/lib/${name}.jar" basedir="${build.dir}/classes"/>
+    </target>
+
+    <!-- ================================================================== -->
+    <!-- Build JavaDoc                                                      -->
+    <!-- ================================================================== -->
+
+    <target name="docs" depends="prepare-docs,classpath">
+        <javadoc packagenames="org.ofbiz.pos.*"
+                 classpathref="local.class.path"
+                 destdir="${build.dir}/javadocs"
+                 Windowtitle="Open for Business - ${desc}">
+            <sourcepath path="${src.dir}"/>
+        </javadoc>
+    </target>
+
+    <target name="all" depends="jar,docs"/>
+</project>

Propchange: incubator/ofbiz/trunk/specialpurpose/hhfacility/build.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/ofbiz/trunk/specialpurpose/hhfacility/build.xml
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: incubator/ofbiz/trunk/specialpurpose/hhfacility/build.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/ofbiz/trunk/specialpurpose/hhfacility/ofbiz-component.xml
URL: http://svn.apache.org/viewvc/incubator/ofbiz/trunk/specialpurpose/hhfacility/ofbiz-component.xml?view=auto&rev=482800
==============================================================================
--- incubator/ofbiz/trunk/specialpurpose/hhfacility/ofbiz-component.xml (added)
+++ incubator/ofbiz/trunk/specialpurpose/hhfacility/ofbiz-component.xml Tue Dec  5 13:57:06 2006
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+Copyright 2003-2006 The Apache Software Foundation
+
+Licensed 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.
+-->
+
+<ofbiz-component name="hhfacility"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/ofbiz-component.xsd">
+    <resource-loader name="main" type="component"/>
+    <classpath type="dir" location="script"/>
+    <classpath type="jar" location="build/lib/*"/>
+
+    <service-resource type="model" loader="main" location="servicedef/services_hhfacility.xml"/>
+
+    <webapp name="hhfacility" title="Handheld Facility" server="default-server" location="webapp/hhfacility"
+        base-permission="OFBTOOLS,FACILITY" mount-point="/hhfacility"/>
+</ofbiz-component>

Propchange: incubator/ofbiz/trunk/specialpurpose/hhfacility/ofbiz-component.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/ofbiz/trunk/specialpurpose/hhfacility/ofbiz-component.xml
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: incubator/ofbiz/trunk/specialpurpose/hhfacility/ofbiz-component.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/ofbiz/trunk/specialpurpose/hhfacility/script/org/ofbiz/hhfacility/FacilityServices.xml
URL: http://svn.apache.org/viewvc/incubator/ofbiz/trunk/specialpurpose/hhfacility/script/org/ofbiz/hhfacility/FacilityServices.xml?view=auto&rev=482800
==============================================================================
--- incubator/ofbiz/trunk/specialpurpose/hhfacility/script/org/ofbiz/hhfacility/FacilityServices.xml (added)
+++ incubator/ofbiz/trunk/specialpurpose/hhfacility/script/org/ofbiz/hhfacility/FacilityServices.xml Tue Dec  5 13:57:06 2006
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright 2001-2006 The Apache Software Foundation
+
+Licensed 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"
+        xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/simple-methods.xsd">
+
+    <simple-method method-name="tc_ProductExists" short-description="Check Product Exists" login-required="false">
+        <set from-field="parameters.productId" field="productIdMap.productId"/>
+        <find-by-primary-key entity-name="Product" map-name="productIdMap" value-name="product"/>      
+        <if-not-empty field-name="product.productId">
+            <log level="info" message="Found product ID ${parameters.productId}, "/>
+            <!-- <log level="info"><string value="Product Details are: "/><field field-name="product"/></log> -->
+            <return response-code="success"/>  <!-- all done -->
+        </if-not-empty>
+        <if-empty field-name="product.productId">
+            <log level="info" message="No product found for ID ${parameters.productId}, "/>
+            <add-error error-list-name="errorMessageList"><fail-message message="Product not found"/></add-error>
+            <return response-code="error"/>  <!-- all done -->
+        </if-empty>
+    </simple-method>
+
+    <simple-method method-name="tc_ReceiveProductQty" short-description="Receive Product to Facility" login-required="false">
+        <log level="info" message="Receive product ${parameters.productId} qty ${parameters.qty} to location ${parameters.location} in facility ${parameters.facilityId} "/>
+        <now-timestamp-to-env env-name="nowTimestamp"/>
+        <clear-field field-name="receiveCtx"/>
+        <set from-field="parameters.facilityId" field="receiveCtx.facilityId"/>
+        <set from-field="parameters.productId" field="receiveCtx.productId"/>
+        <set from-field="parameters.productQty" field="receiveCtx.quantityAccepted"/>
+        <set from-field="parameters.productLocation" field="receiveCtx.locationSeqId"/>
+        <set value="hhFacility Receipt" field="receiveCtx.comments"/>
+        <set from-field="nowTimestamp" field="receiveCtx.datetimeReceived"/>
+        <set value="NON_SERIAL_INV_ITEM" field="receiveCtx.inventoryItemTypeId"/>
+        <calculate field-name="quantityRejected" map-name="receiveCtx" type="Double">
+            <number value="0"/>
+        </calculate>
+        <call-service service-name="receiveInventoryProduct" in-map-name="receiveCtx"/>
+    </simple-method>
+
+</simple-methods>

Propchange: incubator/ofbiz/trunk/specialpurpose/hhfacility/script/org/ofbiz/hhfacility/FacilityServices.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/ofbiz/trunk/specialpurpose/hhfacility/script/org/ofbiz/hhfacility/FacilityServices.xml
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: incubator/ofbiz/trunk/specialpurpose/hhfacility/script/org/ofbiz/hhfacility/FacilityServices.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/ofbiz/trunk/specialpurpose/hhfacility/servicedef/services_hhfacility.xml
URL: http://svn.apache.org/viewvc/incubator/ofbiz/trunk/specialpurpose/hhfacility/servicedef/services_hhfacility.xml?view=auto&rev=482800
==============================================================================
--- incubator/ofbiz/trunk/specialpurpose/hhfacility/servicedef/services_hhfacility.xml (added)
+++ incubator/ofbiz/trunk/specialpurpose/hhfacility/servicedef/services_hhfacility.xml Tue Dec  5 13:57:06 2006
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright 2001-2006 The Apache Software Foundation
+
+Licensed 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://www.ofbiz.org/dtds/services.xsd">
+    <description>Handheld Facility Demo Services</description>
+
+    <service name="tc_ProductExists" engine="simple"
+        location="org/ofbiz/hhfacility/FacilityServices.xml" invoke="tc_ProductExists">
+        <description>Check Product exists</description>
+        <attribute name="productId" type="String" mode="IN" optional="false"/>
+    </service>
+
+    <service name="tc_ReceiveProductQty" engine="simple"
+        location="org/ofbiz/hhfacility/FacilityServices.xml" invoke="tc_ReceiveProductQty">
+        <description>Receive Product Qty to Facility</description>
+        <attribute name="facilityId" type="String" mode="IN" optional="false"/>
+        <attribute name="productId" type="String" mode="IN" optional="false"/>
+        <attribute name="productQty" type="Double" mode="IN" optional="false"/>
+        <attribute name="productLocation" type="String" mode="IN" optional="true"/>
+    </service>
+
+    <service name="findProductsById" engine="java"
+                location="org.ofbiz.hhfacility.FacilityServices" invoke="findProductsById" auth="false">
+        <description>
+            Returns a map of products based on either productId or SKU.
+        </description>
+        <attribute name="facilityId" type="String" mode="IN" optional="false"/>
+        <attribute name="idValue" type="String" mode="IN" optional="false"/>
+        <attribute name="productList" type="List" mode="OUT" optional="true"/>
+    </service>
+
+    <service name="updateProductStocktake" engine="java"
+                location="org.ofbiz.hhfacility.FacilityServices" invoke="updateProductStocktake" auth="true">
+        <description>
+            Pass this a productId, facilityId, locationSeqId and a desired QOH and it will adjust stock levels to match.
+            QOH is expected to be what you can see on the shelf.
+            Pass in locationSeqIdNew and all inventoryItems found with the above criteria will be moved to the new location.
+        </description>
+        <attribute name="facilityId" type="String" mode="IN" optional="false"/>
+        <attribute name="locationSeqId" type="String" mode="IN" optional="false"/>
+        <attribute name="productId" type="String" mode="IN" optional="false"/>
+        <attribute name="quantity" type="Double" mode="IN" optional="false"/>
+        <attribute name="locationSeqIdNew" type="String" mode="IN" optional="true"/>
+    </service>
+
+    <service name="fixProductNegativeQOH" engine="java"
+                location="org.ofbiz.hhfacility.FacilityServices" invoke="fixProductNegativeQOH" auth="true">
+        <description>
+            Pass this a productId, facilityId and it will check for negative QOH values and correct them to zero.
+            ATP will be adjusted the same amount but they may still leave it below zero which can realistically happen.
+        </description>
+        <attribute name="facilityId" type="String" mode="IN" optional="false"/>
+        <attribute name="productId" type="String" mode="IN" optional="false"/>
+    </service>
+
+</services>

Propchange: incubator/ofbiz/trunk/specialpurpose/hhfacility/servicedef/services_hhfacility.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/ofbiz/trunk/specialpurpose/hhfacility/servicedef/services_hhfacility.xml
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: incubator/ofbiz/trunk/specialpurpose/hhfacility/servicedef/services_hhfacility.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/ofbiz/trunk/specialpurpose/hhfacility/src/org/ofbiz/hhfacility/FacilityServices.java
URL: http://svn.apache.org/viewvc/incubator/ofbiz/trunk/specialpurpose/hhfacility/src/org/ofbiz/hhfacility/FacilityServices.java?view=auto&rev=482800
==============================================================================
--- incubator/ofbiz/trunk/specialpurpose/hhfacility/src/org/ofbiz/hhfacility/FacilityServices.java (added)
+++ incubator/ofbiz/trunk/specialpurpose/hhfacility/src/org/ofbiz/hhfacility/FacilityServices.java Tue Dec  5 13:57:06 2006
@@ -0,0 +1,273 @@
+/*
+ * Copyright 2001-2006 The Apache Software Foundation
+ *
+ * Licensed 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.hhfacility;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import org.ofbiz.base.util.UtilValidate;
+import org.ofbiz.base.util.GeneralRuntimeException;
+import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.UtilMisc;
+import org.ofbiz.entity.GenericDelegator;
+import org.ofbiz.entity.GenericEntityException;
+import org.ofbiz.entity.GenericValue;
+import org.ofbiz.service.DispatchContext;
+import org.ofbiz.service.GenericServiceException;
+import org.ofbiz.service.LocalDispatcher;
+import org.ofbiz.service.ServiceUtil;
+
+public class FacilityServices {
+
+    public static final String module = FacilityServices.class.getName();
+
+    public static Map findProductsById(DispatchContext dctx, Map context) {
+        GenericDelegator delegator = dctx.getDelegator();
+        String facilityId = (String) context.get("facilityId");
+        String idValue = (String) context.get("idValue");
+        GenericValue product = null;
+        List productsFound = null;
+        
+        GenericValue productItem = null;
+        if (UtilValidate.isNotEmpty(idValue)) {
+            // First lets find the productId from the Sku(s)
+            try {
+                productsFound = delegator.findByAnd("GoodIdentificationAndProduct",
+                   UtilMisc.toMap("idValue", idValue), UtilMisc.toList("productId"));
+            } catch (GenericEntityException e) {
+                Debug.logError(e, module);
+                throw new GeneralRuntimeException(e.getMessage());
+            }
+        }
+
+        // Now do a direct lookup..
+        productItem = null;
+        try {
+            productItem = delegator.findByPrimaryKey("Product", UtilMisc.toMap("productId", idValue));
+        } catch (GenericEntityException e) {
+            Debug.logError(e, module);
+            throw new GeneralRuntimeException(e.getMessage());
+        }
+        if (productItem != null) {
+            if (productsFound == null) {
+                productsFound = new ArrayList();
+            }
+            productsFound.add(productItem);
+        }
+
+        // Send back the results
+        Map result = ServiceUtil.returnSuccess();
+        if (productsFound != null && productsFound.size() > 0) {
+            result.put("productList", productsFound);
+        }
+        return result;
+    }    
+
+    public static Map fixProductNegativeQOH(DispatchContext dctx, Map context) {
+        GenericDelegator delegator = dctx.getDelegator();
+        LocalDispatcher dispatcher = dctx.getDispatcher();
+
+        String facilityId = (String) context.get("facilityId");
+        String productId = (String) context.get("productId");
+        GenericValue userLogin = (GenericValue) context.get("userLogin");
+
+        // Now we build a list of inventory items against the facility and product.
+        // todo: change this to a select from inv_items where productId and facilityId matches distinct (locationSeqId).
+        List invItemList = null;
+        try {
+            invItemList = delegator.findByAnd("InventoryItem",
+                UtilMisc.toMap("productId", productId, "facilityId", facilityId));
+        } catch (GenericEntityException e) {
+            Debug.logError(e, module);
+            throw new GeneralRuntimeException(e.getMessage());
+        }
+
+        Map locations = new HashMap();
+        Iterator invItemListIter = invItemList.iterator();
+        while (invItemListIter.hasNext()) {
+            GenericValue invItem = (GenericValue)invItemListIter.next();
+            if ( invItem != null) {
+                int qoh = ((Double)invItem.get("quantityOnHandTotal")).intValue();
+                
+                if ( qoh < 0 ) {
+                    // Got a negative qoh so lets balance if off to zero.
+                    Map contextInput = UtilMisc.toMap("userLogin", userLogin, "inventoryItemId", invItem.get("inventoryItemId"),
+                            "varianceReasonId", "VAR_LOST", "availableToPromiseVar", new Double(qoh*-1),
+                            "quantityOnHandVar", new Double(qoh*-1), "comments", "QOH < 0 stocktake correction");
+                    try {
+                        dispatcher.runSync("createPhysicalInventoryAndVariance",contextInput);
+                    } catch (GenericServiceException e) {
+                        Debug.logError(e, "fixProductNegativeQOH failed on createPhysicalInventoryAndVariance invItemId"+invItem.get("inventoryItemId"), module);
+                        return ServiceUtil.returnError("fixProductNegativeQOH failed on createPhysicalInventoryAndVariance invItemId"+invItem.get("inventoryItemId"));
+                    }
+                }
+            }
+        }
+        Map result = ServiceUtil.returnSuccess();
+        return result;
+    }
+
+    public static Map updateProductStocktake(DispatchContext dctx, Map context) {
+        GenericDelegator delegator = dctx.getDelegator();
+        LocalDispatcher dispatcher = dctx.getDispatcher();
+
+        String facilityId = (String) context.get("facilityId");
+        String productId = (String) context.get("productId");
+        String locationSeqId = (String) context.get("locationSeqId");
+        String locationSeqIdNew = (String) context.get("locationSeqIdNew");
+        Double quantity = (Double) context.get("quantity");
+        if ( UtilValidate.isEmpty(productId) || UtilValidate.isEmpty(facilityId) ) {
+            return ServiceUtil.returnError("productId or facilityId not found");
+        }
+
+        // First identify the location and get a list of inventoryItemIds for that location.
+        if ( UtilValidate.isEmpty(locationSeqId) ) {
+            // Assume this is the null field version
+            locationSeqId = "nullField";
+        }
+
+        // Get the current atp/qoh values for the location(s).
+        Map contextInput = UtilMisc.toMap("productId",productId, "facilityId", facilityId, "locationSeqId", locationSeqId);
+        Map invAvailability = null;
+        try {
+            invAvailability = dispatcher.runSync("getInventoryAvailableByLocationSeq",contextInput);
+        } catch (GenericServiceException e) {
+            Debug.logError(e, "updateProductStocktake failed getting inventory counts", module);
+            return ServiceUtil.returnError("updateProductStocktake failed getting inventory counts");
+        }
+        int atp = ((Double)invAvailability.get("availableToPromiseTotal")).intValue();
+        int qoh = ((Double)invAvailability.get("quantityOnHandTotal")).intValue();
+        if ( quantity.intValue() == qoh ) {
+            // No change required.
+            Debug.logInfo("updateProductStocktake No change required quantity("+quantity+") = qoh("+qoh+")", module);
+            return ServiceUtil.returnSuccess();
+        }
+
+        // Now get the inventory items that are found for that location, facility and product
+        List invItemList = null;
+        try {
+            invItemList = delegator.findByAnd("InventoryItem",
+                UtilMisc.toMap("productId", productId, "facilityId", facilityId, "locationSeqId", locationSeqId));
+        } catch (GenericEntityException e) {
+            Debug.logError(e, "updateProductStocktake failed getting inventory items", module);
+            return ServiceUtil.returnError("updateProductStocktake failed getting inventory items");
+        }
+
+        Iterator invItemListIter = invItemList.iterator();
+        while (invItemListIter.hasNext()) {
+            GenericValue invItem = (GenericValue)invItemListIter.next();
+            String locationFound = invItem.getString("locationSeqId");
+            Debug.logInfo("updateProductStocktake: InvItemId("+invItem.getString("inventoryItemId")+")", module);
+            if ( locationFound == null ) {
+                locationFound = "nullField";
+            }
+        }
+        // Check if there is a request to change the locationSeqId
+        GenericValue product = null;
+        try {
+            Map resultOutput = dispatcher.runSync("getInventoryAvailableByFacility", UtilMisc.toMap("productId", productId,
+                    "facilityId", facilityId));
+        } catch (GenericServiceException e) {
+            Debug.logError(e, module);
+            return ServiceUtil.returnError("Inventory atp/qoh lookup problem [" + e.getMessage() + "]");
+        }
+
+/*
+        try {
+            inventoryTransfer = delegator.findByPrimaryKey("InventoryTransfer",
+                    UtilMisc.toMap("inventoryTransferId", inventoryTransferId));
+            inventoryItem = inventoryTransfer.getRelatedOne("InventoryItem");
+            destinationFacility = inventoryTransfer.getRelatedOne("ToFacility");
+        } catch (GenericEntityException e) {
+            return ServiceUtil.returnError("Inventory Item/Transfer lookup problem [" + e.getMessage() + "]");
+        }
+        
+        if (inventoryTransfer == null || inventoryItem == null) {
+            return ServiceUtil.returnError("ERROR: Lookup of InventoryTransfer and/or InventoryItem failed!");
+        }
+            
+        String inventoryType = inventoryItem.getString("inventoryItemTypeId");
+        
+        // set the fields on the transfer record            
+        if (inventoryTransfer.get("receiveDate") == null) {
+            inventoryTransfer.set("receiveDate", UtilDateTime.nowTimestamp());
+        }
+            
+        if (inventoryType.equals("NON_SERIAL_INV_ITEM")) {
+            // add an adjusting InventoryItemDetail so set ATP back to QOH: ATP = ATP + (QOH - ATP), diff = QOH - ATP
+            double atp = inventoryItem.get("availableToPromiseTotal") == null ? 0 : inventoryItem.getDouble("availableToPromiseTotal").doubleValue();
+            double qoh = inventoryItem.get("quantityOnHandTotal") == null ? 0 : inventoryItem.getDouble("quantityOnHandTotal").doubleValue();
+            Map createDetailMap = UtilMisc.toMap("availableToPromiseDiff", new Double(qoh - atp),
+                    "inventoryItemId", inventoryItem.get("inventoryItemId"), "userLogin", userLogin);
+            try {
+                Map result = dctx.getDispatcher().runSync("createInventoryItemDetail", createDetailMap);
+                if (ServiceUtil.isError(result)) {
+                    return ServiceUtil.returnError("Inventory Item Detail create problem in complete inventory transfer", null, null, result);
+                }
+            } catch (GenericServiceException e1) {
+                return ServiceUtil.returnError("Inventory Item Detail create problem in complete inventory transfer: [" + e1.getMessage() + "]");
+            }
+            try {
+                inventoryItem.refresh();
+            } catch (GenericEntityException e) {
+                return ServiceUtil.returnError("Inventory refresh problem [" + e.getMessage() + "]");
+            }
+        } else if (inventoryType.equals("SERIALIZED_INV_ITEM")) {
+            inventoryItem.set("statusId", "INV_AVAILABLE");
+        }
+
+        // set the fields on the item
+        Map updateInventoryItemMap = UtilMisc.toMap("inventoryItemId", inventoryItem.getString("inventoryItemId"),
+                                                    "facilityId", inventoryTransfer.get("facilityIdTo"),
+                                                    "containerId", inventoryTransfer.get("containerIdTo"),
+                                                    "locationSeqId", inventoryTransfer.get("locationSeqIdTo"),
+                                                    "userLogin", userLogin);
+        // if the destination facility's owner is different
+        // from the inventory item's ownwer,
+        // the inventory item is assigned to the new owner.
+        if (destinationFacility != null && destinationFacility.get("ownerPartyId") != null) {
+            String fromPartyId = inventoryItem.getString("ownerPartyId");
+            String toPartyId = destinationFacility.getString("ownerPartyId");
+            if (fromPartyId == null || !fromPartyId.equals(toPartyId)) {
+                updateInventoryItemMap.put("ownerPartyId", toPartyId);
+            }
+        }
+        try {
+            Map result = dctx.getDispatcher().runSync("updateInventoryItem", updateInventoryItemMap);
+            if (ServiceUtil.isError(result)) {
+                return ServiceUtil.returnError("Inventory item store problem", null, null, result);
+            }
+        } catch (GenericServiceException exc) {
+            return ServiceUtil.returnError("Inventory item store problem [" + exc.getMessage() + "]");
+        }
+
+        // set the inventory transfer record to complete
+        inventoryTransfer.set("statusId", "IXF_COMPLETE");
+        
+        // store the entities
+        try {
+            inventoryTransfer.store();
+        } catch (GenericEntityException e) {
+            return ServiceUtil.returnError("Inventory store problem [" + e.getMessage() + "]");
+        }
+         */
+        return ServiceUtil.returnSuccess();
+    }    
+}

Propchange: incubator/ofbiz/trunk/specialpurpose/hhfacility/src/org/ofbiz/hhfacility/FacilityServices.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/ofbiz/trunk/specialpurpose/hhfacility/src/org/ofbiz/hhfacility/FacilityServices.java
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: incubator/ofbiz/trunk/specialpurpose/hhfacility/src/org/ofbiz/hhfacility/FacilityServices.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/WEB-INF/controller.xml
URL: http://svn.apache.org/viewvc/incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/WEB-INF/controller.xml?view=auto&rev=482800
==============================================================================
--- incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/WEB-INF/controller.xml (added)
+++ incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/WEB-INF/controller.xml Tue Dec  5 13:57:06 2006
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright 2001-2006 The Apache Software Foundation
+
+Licensed 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.
+-->
+
+<site-conf xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/site-conf.xsd">
+    <description>Facility Handheld Demo</description>
+    <owner>Copyright 2001-2006 The Apache Software Foundation</owner>
+    <errorpage>/error/error.jsp</errorpage>
+
+    <handler name="java" type="request" class="org.ofbiz.webapp.event.JavaEventHandler"/>
+    <handler name="bsf" type="request" class="org.ofbiz.webapp.event.BsfEventHandler"/>
+    <handler name="soap" type="request" class="org.ofbiz.webapp.event.SOAPEventHandler"/>
+    <handler name="service" type="request" class="org.ofbiz.webapp.event.ServiceEventHandler"/>
+    <handler name="service-multi" type="request" class="org.ofbiz.webapp.event.ServiceMultiEventHandler"/>
+    <handler name="simple" type="request" class="org.ofbiz.webapp.event.SimpleEventHandler"/>
+
+    <!-- view handlers -->
+    <handler name="screen" type="view" class="org.ofbiz.widget.screen.ScreenWidgetViewHandler"/>
+
+    <handler name="ftl" type="view" class="org.ofbiz.webapp.ftl.FreeMarkerViewHandler"/>
+    <handler name="jsp" type="view" class="org.ofbiz.webapp.view.JspViewHandler"/>
+    <handler name="http" type="view" class="org.ofbiz.webapp.view.HttpViewHandler"/>
+
+    <!-- Events to run on every request before security (chains exempt) -->
+    <preprocessor>
+        <!-- Events to run on every request before security (chains exempt) -->
+        <!-- <event type="java" path="org.ofbiz.webapp.event.TestEvent" invoke="test"/> -->
+        <event type="java" path="org.ofbiz.webapp.control.LoginWorker" invoke="checkExternalLoginKey"/>
+    </preprocessor>
+    <postprocessor>
+        <!-- Events to run on every request after all other processing (chains exempt) -->
+        <!-- <event type="java" path="org.ofbiz.webapp.event.TestEvent" invoke="test"/> -->
+    </postprocessor>
+    
+    <!-- Security Mappings -->
+    <request-map uri="checkLogin" edit="false">
+        <description>Verify a user is logged in.</description>
+        <security https="true" auth="false"/>
+        <event type="java" path="org.ofbiz.webapp.control.LoginWorker" invoke="checkLogin" />
+        <response name="success" type="view" value="main" />
+        <response name="error" type="view" value="login" />
+    </request-map>
+    
+    <request-map uri="login">
+        <security https="true" auth="false"/>
+        <event type="java" path="org.ofbiz.webapp.control.LoginWorker" invoke="login"/>
+        <response name="success" type="view" value="main"/>
+        <response name="error" type="view" value="login"/>
+    </request-map>
+    
+    <request-map uri="logout">
+        <security https="true" auth="true"/>
+        <event type="java" path="org.ofbiz.webapp.control.LoginWorker" invoke="logout"/>
+        <response name="success" type="request" value="checkLogin"/>
+        <response name="error" type="view" value="main"/>
+    </request-map>
+    <!-- End of Security Mappings -->
+
+    
+    <!-- Request Mappings -->
+    <request-map uri="main">
+        <security https="true" auth="true"/>
+        <response name="success" type="view" value="main"/>
+    </request-map>
+    <request-map uri="receipt">
+        <security https="true" auth="true"/>
+        <response name="success" type="view" value="receipt"/>
+    </request-map>
+    <request-map uri="poreceipt">
+        <security https="true" auth="true"/>
+        <response name="success" type="view" value="poreceipt"/>
+    </request-map>
+    <request-map uri="productreceipt">
+        <security https="true" auth="true"/>
+        <response name="success" type="view" value="productreceipt"/>
+    </request-map>
+    <request-map uri="movement">
+        <security https="true" auth="true"/>
+        <response name="success" type="view" value="movement"/>
+    </request-map>
+    <request-map uri="picking">
+        <security https="true" auth="true"/>
+        <response name="success" type="view" value="picking"/>
+    </request-map>
+    <request-map uri="packing">
+        <security https="true" auth="true"/>
+        <response name="success" type="view" value="packing"/>
+    </request-map>
+
+    <request-map uri="stocktake">
+        <security https="true" auth="true"/>
+        <response name="success" type="view" value="stocktake"/>
+    </request-map>
+    <request-map uri="findstocktake">
+        <security https="true" auth="true"/>
+        <event type="java" path="org.ofbiz.hhfacility.FacilitySession" invoke="findProductsById"/>
+        <response name="success" type="view" value="stocktake"/>
+    </request-map>
+
+    <request-map uri="menu">
+        <security https="true" auth="true"/>
+        <response name="success" type="view" value="menu"/>
+    </request-map>
+    <request-map uri="facilities">
+        <security https="true" auth="true"/>
+        <response name="success" type="view" value="facilities"/>
+    </request-map>
+    
+    <!-- these requests correspond to POSTs of forms and call services to do their work.
+        OFBiz automatically parses form fields to service inputs.
+        User can be re-directed to other requests or views after the service is called.
+        The re-direct can depend on if the service succeeded or failed. -->
+    <request-map uri="polinereceipt">
+        <security https="true" auth="true"/>
+        <!-- <event type="service" invoke="tc_POExists"/> -->
+        <response name="success" type="view" value="linereceipt"/>
+        <response name="error" type="view" value="poreceipt"/>
+    </request-map>
+
+    
+    <request-map uri="productqtyreceipt">
+        <security https="true" auth="true"/>
+        <event type="service" invoke="tc_ProductExists"/>
+        <response name="success" type="view" value="qtyreceipt"/>
+        <response name="error" type="view" value="productreceipt"/>
+    </request-map>
+    
+    <request-map uri="receiveproductqty">
+        <security https="true" auth="true"/>
+        <event type="service" invoke="tc_ReceiveProductQty"/>
+        <response name="success" type="view" value="productreceipt"/>
+        <response name="error" type="view" value="qtyreceipt"/>
+    </request-map>
+    
+    <request-map uri="productstocktake">
+        <security https="true" auth="true"/>
+        <response name="success" type="view" value="productstocktake"/>
+        <response name="error" type="view" value="productstocktake"/>
+    </request-map>
+    
+    <request-map uri="updateproductstocktake">
+        <security https="true" auth="true"/>
+        <event type="service" invoke="updateProductStocktake"/>
+        <response name="success" type="view" value="productstocktake"/>
+        <response name="error" type="view" value="productstocktake"/>
+    </request-map>
+
+    <request-map uri="fixproductnegativeqoh">
+        <security https="true" auth="true"/>
+        <event type="service" invoke="fixProductNegativeQOH"/>
+        <response name="success" type="view" value="productstocktake"/>
+        <response name="error" type="view" value="productstocktake"/>
+    </request-map>
+    
+    <!-- end of request mappings -->
+
+    <!-- View Mappings -->
+    <view-map name="error" type="jsp" page="/error/error.jsp"/>
+    <view-map name="main" type="screen" page="component://hhfacility/widget/hhfacility/FacilityScreens.xml#main"/>
+    <view-map name="login" type="screen" page="component://hhfacility/widget/hhfacility/FacilityScreens.xml#login"/>
+
+    <view-map name="receipt" type="screen" page="component://hhfacility/widget/hhfacility/FacilityScreens.xml#receipt"/>
+    <view-map name="poreceipt" type="screen" page="component://hhfacility/widget/hhfacility/FacilityScreens.xml#poreceipt"/>
+    <view-map name="linereceipt" type="screen" page="component://hhfacility/widget/hhfacility/FacilityScreens.xml#linereceipt"/>
+    <view-map name="productreceipt" type="screen" page="component://hhfacility/widget/hhfacility/FacilityScreens.xml#productreceipt"/>
+    <view-map name="qtyreceipt" type="screen" page="component://hhfacility/widget/hhfacility/FacilityScreens.xml#qtyreceipt"/>
+    <view-map name="movement" type="screen" page="component://hhfacility/widget/hhfacility/FacilityScreens.xml#movement"/>
+    <view-map name="picking" type="screen" page="component://hhfacility/widget/hhfacility/FacilityScreens.xml#picking"/>
+    <view-map name="stocktake" type="screen" page="component://hhfacility/widget/hhfacility/FacilityScreens.xml#stocktake"/>
+    <view-map name="packing" type="screen" page="component://hhfacility/widget/hhfacility/FacilityScreens.xml#packing"/>
+    <view-map name="facilities" type="screen" page="component://hhfacility/widget/hhfacility/FacilityScreens.xml#facilities"/>
+    <view-map name="menu" type="screen" page="component://hhfacility/widget/hhfacility/FacilityScreens.xml#menu"/>
+
+    <view-map name="productstocktake" type="screen" page="component://hhfacility/widget/hhfacility/FacilityScreens.xml#productstocktake"/>
+    <!-- end of view mappings -->
+</site-conf>

Propchange: incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/WEB-INF/controller.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/WEB-INF/controller.xml
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/WEB-INF/controller.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/error/error.jsp
URL: http://svn.apache.org/viewvc/incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/error/error.jsp?view=auto&rev=482800
==============================================================================
--- incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/error/error.jsp (added)
+++ incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/error/error.jsp Tue Dec  5 13:57:06 2006
@@ -0,0 +1,50 @@
+<%--
+Copyright 2001-2006 The Apache Software Foundation
+
+Licensed 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.
+--%>
+
+<%@ page import="org.ofbiz.base.util.*" %>
+<html>
+<head>
+<title>Open For Business Message</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+</head>
+
+<% String errorMsg = (String) request.getAttribute("_ERROR_MESSAGE_"); %>
+
+<body bgcolor="#FFFFFF">
+<div align="center">
+  <br/>
+  <table width="100%" border="1" height="200">
+    <tr>
+      <td>
+        <table width="100%" border="0" height="200">
+          <tr bgcolor="#CC6666">
+            <td height="45">
+              <div align="center"><font face="Verdana, Arial, Helvetica, sans-serif" size="4" color="#FFFFFF"><b>:ERROR MESSAGE:</b></font></div>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <div align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><%=UtilFormatOut.replaceString(errorMsg, "\n", "<br/>")%></font></div>
+            </td>
+          </tr>
+        </table>
+      </td>
+    </tr>
+  </table>
+</div>
+<div align="center"></div>
+</body>
+</html>

Propchange: incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/error/error.jsp
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/error/error.jsp
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/facilities.ftl
URL: http://svn.apache.org/viewvc/incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/facilities.ftl?view=auto&rev=482800
==============================================================================
--- incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/facilities.ftl (added)
+++ incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/facilities.ftl Tue Dec  5 13:57:06 2006
@@ -0,0 +1,25 @@
+<#--
+Copyright 2001-2006 The Apache Software Foundation
+
+Licensed 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.
+-->
+
+<#if facilities?has_content>
+Facilities :
+<ul>
+    <#list facilities as facility>
+       <li> ${facility.facilityId?if_exists} ${facility.facilityName?if_exists} ${facility.description?if_exists}
+
+    </#list>
+</ul>
+</#if>
\ No newline at end of file

Propchange: incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/facilities.ftl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/facilities.ftl
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/facilities.ftl
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/forms/FacilityForms.xml
URL: http://svn.apache.org/viewvc/incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/forms/FacilityForms.xml?view=auto&rev=482800
==============================================================================
--- incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/forms/FacilityForms.xml (added)
+++ incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/forms/FacilityForms.xml Tue Dec  5 13:57:06 2006
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright 2001-2006 The Apache Software Foundation
+
+Licensed 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.
+-->
+
+<forms xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/widget-form.xsd">
+    
+    <form name="ListFacilities" type="list" list-name="facilities" paginate-target="main"
+             default-title-style="tableheadtext" default-widget-style="tabletext" default-tooltip-style="tabletext">
+        <actions>
+            <entity-condition entity-name="Facility">
+                <order-by field-name="description"/>
+            </entity-condition>
+        </actions>
+        
+        <field name="facilityId" title="ID" widget-style="buttontext">
+            <hyperlink also-hidden="false" description="${facilityId}" target="menu?facilityId=${facilityId}"/>
+        </field>
+        <field name="facilityName" title="Name"><display/></field>
+        <field name="description" title="Description"><display/></field>
+    </form>
+
+    <!-- this form posts to "polinereceipt" (see controller.xml) -->
+    <form name="POEnter" type="single" target="polinereceipt"
+            default-title-style="tableheadtext" default-widget-style="tabletext" default-tooltip-style="tabletext">
+        <field name="facilityId"><hidden/></field>
+        <field name="OrderId" required-field="true" title="PO Number"><text size="10"/></field>
+        <field name="submitButton" title="Next" widget-style="standardSubmit"><submit button-type="button"/></field>
+    </form>
+
+    <!-- this form posts to "productqtyreceipt" (see controller.xml) -->
+    <form name="ProductEnter" type="single" target="productqtyreceipt"
+            default-title-style="tableheadtext" default-widget-style="tabletext" default-tooltip-style="tabletext">
+        <field name="facilityId"><hidden/></field>
+        <field name="productId"  required-field="true" title="Product ID" ><text size="10" default-value=""/></field>
+        <field name="submitButton" title="Next" widget-style="standardSubmit"><submit button-type="button"/></field>
+    </form>
+
+    <!-- this form posts to "receiveproductqty" (see controller.xml) -->
+    <form name="ProductQtyEnter" type="single" target="receiveproductqty"
+            default-title-style="tableheadtext" default-widget-style="tabletext" default-tooltip-style="tabletext">
+        <field name="facilityId"><hidden/></field>
+        <field name="productId"><hidden/></field>
+        <field name="productId" title="Product" entry-name="product.productId" ><display/></field>
+        <field name="productName" title=" " entry-name="product.productName" ><display/></field>
+        <field name="productLocation"  title="Location" event="onkeypress" action="return enter(event,document.forms[0].productQty)"><text size="10"/></field>
+        <field name="productQty" required-field="true" title="Qty" ><text default-value="1" size="5"/></field>
+        <field name="submitButton" title="Receive" widget-style="standardSubmit"><submit button-type="button"/></field>
+    </form>
+
+    <!-- this form posts to "findstocktake" (see controller.xml) -->
+    <form name="FindProductStock" type="single" target="findstocktake"
+            default-title-style="tableheadtext" default-widget-style="tabletext" default-tooltip-style="tabletext">
+        <field name="facilityId"><hidden/></field>
+        <field name="idValue"  required-field="true" title="ID Value" ><text size="10" default-value=""/></field>
+        <field name="submitButton" title="Next" widget-style="standardSubmit"><submit button-type="button"/></field>
+    </form>
+
+    <form name="ProductStocktake" type="single" target="updateproductstocktake"
+            default-title-style="tableheadtext" default-widget-style="tabletext" default-tooltip-style="tabletext">
+        <field name="facilityId"><hidden/></field>
+        <field name="productId" title="Product"><display/></field>
+        <field name="productName" title="Name" entry-name="product.productName"><display/></field>
+        <field name="atp_qoh" title="ATP/QOH" entry-name="quantitySummary.atp_qoh"><display/></field>
+        <field name="locationSeqId" title="Location" entry-name="locationSeqId"><display/></field>
+        <!--<field name="submitButton" title="Submit" widget-style="standardSubmit"><submit button-type="button"/></field>-->
+    </form>
+    <form name="UpdateProductStocktake" type="list"
+            target="updateproductstocktake" title="" list-name="productQtyByLocations"
+            default-title-style="tableheadtext" default-widget-style="inputBox" default-tooltip-style="tabletext">
+    <!--    <auto-fields-service service-name="updateproductstocktake"/>  -->
+        <field name="productId"><hidden/></field>
+        <field name="facilityId"><hidden/></field>
+        <field name="atp_qoh" title="ATP/QOH" entry-name="atp_qoh"><display/></field>
+        <field name="locationSeqId"><hidden/></field>
+        <field name="locationSeqIdNew" title="Location" entry-name="locationSeqId"><text size="10" default-value=""/></field>
+        <field name="quantity" title="Quantity" required-field="true" entry-name="totalQuantityOnHand"><text size="6" default-value=""/></field>
+        <field name="submitButton" title="Update" widget-style="smallSubmit"><submit button-type="button"/></field>
+        <field name="deleteLink" title="" widget-style="buttontext">
+            <hyperlink target="removeProductFromCategory?productId=${productId}&amp;productCategoryId=${productCategoryId}&amp;fromDate=${fromDate}"
+                description="${uiLabelMap.CommonDelete}" also-hidden="false"/>
+        </field>
+    </form>
+
+    <form name="MainMenu" type="single" target="menu">
+        <field name="facilityId"><hidden/></field>
+        <field name="m1" title="Facility : ${facilityId}" position="1"><display/></field>
+        <field name="receipt" title="1. Goods Receipt">
+            <submit button-type="text-link"/>
+        </field>
+        <field name="picking" title="2. Picking" position="1">
+            <submit button-type="text-link"/>
+        </field>
+    </form>
+
+</forms>

Propchange: incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/forms/FacilityForms.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/forms/FacilityForms.xml
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: incubator/ofbiz/trunk/specialpurpose/hhfacility/webapp/hhfacility/forms/FacilityForms.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/ofbiz/trunk/specialpurpose/hhfacility