You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by sa...@apache.org on 2011/11/03 18:59:33 UTC

svn commit: r1197247 [5/10] - in /ofbiz/branches/jackrabbit20100709: ./ applications/accounting/script/org/ofbiz/accounting/invoice/ applications/accounting/servicedef/ applications/accounting/src/org/ofbiz/accounting/invoice/ applications/accounting/w...

Modified: ofbiz/branches/jackrabbit20100709/applications/content/widget/forum/BlogForms.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/content/widget/forum/BlogForms.xml?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/content/widget/forum/BlogForms.xml (original)
+++ ofbiz/branches/jackrabbit20100709/applications/content/widget/forum/BlogForms.xml Thu Nov  3 17:59:29 2011
@@ -75,14 +75,14 @@ under the License.
         <field name="uploadedFile" title="${uiLabelMap.ContentImage}"><file size="25"/></field>
         <field name="templateDataResourceId" title="${uiLabelMap.ContentTemplate}">
             <drop-down>
-                <option key="BLOG_TPL_TOPLEFT" description="${uiLabelMap.EcommerceBlogTopLeft}"/>
-                <option key="BLOG_TPL_TOPCENTER" description="${uiLabelMap.EcommerceBlogTopCenter}"/>
+                <option key="BLOG_TPL_TOPLEFT" description="${uiLabelMap.ContentBlogTopLeft}"/>
+                <option key="BLOG_TPL_TOPCENTER" description="${uiLabelMap.ContentBlogTopCenter}"/>
             </drop-down>
         </field>
         <field name="statusId" title="${uiLabelMap.CommonStatus}">
             <drop-down no-current-selected-key="CTNT_INITIAL_DRAFT">
-                <option key="CTNT_PUBLISHED" description="${uiLabelMap.EcommerceBlogPublish}"/>
-                <option key="CTNT_INITIAL_DRAFT" description="${uiLabelMap.EcommerceBlogPreview}"/>
+                <option key="CTNT_PUBLISHED" description="${uiLabelMap.ContentBlogPublish}"/>
+                <option key="CTNT_INITIAL_DRAFT" description="${uiLabelMap.ContentBlogPreview}"/>
             </drop-down>
         </field>
         <field name="submitButton" title="${uiLabelMap.CommonSubmit}" widget-style="smallSubmit"><submit button-type="button"/></field>

Modified: ofbiz/branches/jackrabbit20100709/applications/humanres/config/HumanResUiLabels.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/humanres/config/HumanResUiLabels.xml?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/humanres/config/HumanResUiLabels.xml (original)
+++ ofbiz/branches/jackrabbit20100709/applications/humanres/config/HumanResUiLabels.xml Thu Nov  3 17:59:29 2011
@@ -2050,6 +2050,9 @@
         <value xml:lang="zh">薪水历史</value>
         <value xml:lang="zh_TW">薪水歷史</value>
     </property>
+    <property key="HumanResPayRollHistory">
+        <value xml:lang="en">PayRoll History</value>
+    </property>
     <property key="HumanResPayRollPreferences">
         <value xml:lang="en">PayRoll Preferences</value>
         <value xml:lang="fr">Préférences de registre du personnel</value>

Modified: ofbiz/branches/jackrabbit20100709/applications/humanres/src/org/ofbiz/humanres/HumanResEvents.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/humanres/src/org/ofbiz/humanres/HumanResEvents.java?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/humanres/src/org/ofbiz/humanres/HumanResEvents.java (original)
+++ ofbiz/branches/jackrabbit20100709/applications/humanres/src/org/ofbiz/humanres/HumanResEvents.java Thu Nov  3 17:59:29 2011
@@ -32,10 +32,15 @@ import javolution.util.FastMap;
 import net.sf.json.JSONObject;
 
 import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.UtilDateTime;
 import org.ofbiz.base.util.UtilMisc;
 import org.ofbiz.base.util.UtilValidate;
 import org.ofbiz.entity.Delegator;
+import org.ofbiz.entity.GenericEntityException;
 import org.ofbiz.entity.GenericValue;
+import org.ofbiz.entity.condition.EntityCondition;
+import org.ofbiz.entity.condition.EntityExpr;
+import org.ofbiz.entity.condition.EntityOperator;
 import org.ofbiz.entity.util.EntityUtil;
 
 public class HumanResEvents {
@@ -183,11 +188,21 @@ public class HumanResEvents {
                     
                 }
                 
-                List<GenericValue> childOfEmpls = delegator.findByAnd("EmplPosition", UtilMisc.toMap(
-                        "partyId", partyId));
-                if (UtilValidate.isNotEmpty(childOfEmpls)) {
-                    for (GenericValue childOfEmpl : childOfEmpls ) {
-                    	Map emplMap = FastMap.newInstance();
+                List<EntityExpr> exprs = FastList.newInstance();
+                exprs.add(EntityCondition.makeCondition("partyId", EntityOperator.EQUALS, partyId));
+                exprs.add(EntityCondition.makeCondition("statusId", EntityOperator.NOT_EQUAL, "EMPL_POS_INACTIVE"));
+        
+                List<GenericValue> isEmpls = null;
+                try {
+                    isEmpls = delegator.findList("EmplPosition", EntityCondition.makeCondition(exprs, EntityOperator.AND), null, null, null, false);
+                } catch (GenericEntityException e) {
+                    Debug.logError(e, module);
+                }
+                
+                isEmpls = EntityUtil.filterByDate(isEmpls, UtilDateTime.nowTimestamp(), "actualFromDate", "actualThruDate", true);
+                if (UtilValidate.isNotEmpty(isEmpls)) {
+                    for (GenericValue childOfEmpl : isEmpls ) {
+                        Map emplMap = FastMap.newInstance();
                         Map emplAttrMap = FastMap.newInstance();
                         Map empldataMap = FastMap.newInstance();
                         Map emplDataAttrMap = FastMap.newInstance();

Modified: ofbiz/branches/jackrabbit20100709/applications/humanres/webapp/humanres/WEB-INF/controller.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/humanres/webapp/humanres/WEB-INF/controller.xml?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/humanres/webapp/humanres/WEB-INF/controller.xml (original)
+++ ofbiz/branches/jackrabbit20100709/applications/humanres/webapp/humanres/WEB-INF/controller.xml Thu Nov  3 17:59:29 2011
@@ -1103,6 +1103,12 @@ under the License.
         <response name="error" type="view-last"/>
     </request-map>
     
+    <!--==============PayRoll History Requests==================-->
+    <request-map uri="PayrollHistory">
+        <security https="true" auth="true"/>
+        <response name="success" type="view" value="PayrollHistory"/>
+    </request-map>
+    
     <!-- ===================Lookup Request===================== -->
     <request-map uri="LookupPartyName"><security auth="true" https="true"/><response name="success" type="view" value="LookupPartyName"/></request-map>
     <request-map uri="LookupPayment"><security auth="true" https="true"/><response name="success" type="view" value="LookupPayment"/></request-map>
@@ -1233,4 +1239,7 @@ under the License.
     <view-map name="FindTrainingApprovals" type="screen" page="component://humanres/widget/PersonTrainingScreens.xml#FindTrainingApprovals"/>
     <view-map name="EditTrainingApprovals" type="screen" page="component://humanres/widget/PersonTrainingScreens.xml#EditTrainingApprovals"/>
     <view-map name="LookupTraining" type="screen" page="component://humanres/widget/LookupScreens.xml#LookupTraining"/>
+    
+    <!-- ==================PayRoll History View Map===================== -->
+    <view-map name="PayrollHistory" type="screen" page="component://humanres/widget/EmployeeScreens.xml#PayrollHistory"/>
 </site-conf>

Modified: ofbiz/branches/jackrabbit20100709/applications/humanres/widget/EmployeeScreens.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/humanres/widget/EmployeeScreens.xml?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/humanres/widget/EmployeeScreens.xml (original)
+++ ofbiz/branches/jackrabbit20100709/applications/humanres/widget/EmployeeScreens.xml Thu Nov  3 17:59:29 2011
@@ -297,4 +297,29 @@ under the License.
             </widgets>
         </section>
     </screen>
+    
+    <screen name="PayrollHistory">
+        <section>
+            <actions>
+                <set field="titleProperty" value="HumanResPayRollHistory"/>
+                <set field="tabButtonItem" value="PayrollHistory"/>
+                <set field="partyId" from-field="parameters.partyId"/>
+                <set field="parameters.sortField" from-field="parameters.sortField" default-value="invoiceDate DESC"/>
+                <entity-condition list="payroll" entity-name="InvoiceAndType">
+                    <condition-list combine="and">
+                        <condition-expr field-name="partyIdFrom" operator="equals" from-field="partyId"/>
+                        <condition-expr field-name="invoiceTypeId" operator="equals" value="PAYROL_INVOICE"/>
+                    </condition-list>
+                    <order-by field-name="${parameters.sortField}"/>
+                </entity-condition>
+            </actions>
+            <widgets>
+                <decorator-screen name="EmployeeDecorator" location="${parameters.mainDecoratorLocation}">
+                    <decorator-section name="body">
+                        <include-form name="PayrollHistoryList" location="component://humanres/widget/forms/EmployeeForms.xml"/>
+                    </decorator-section>
+                </decorator-screen>
+            </widgets>
+        </section>
+    </screen>
 </screens>

Modified: ofbiz/branches/jackrabbit20100709/applications/humanres/widget/HumanresMenus.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/humanres/widget/HumanresMenus.xml?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/humanres/widget/HumanresMenus.xml (original)
+++ ofbiz/branches/jackrabbit20100709/applications/humanres/widget/HumanresMenus.xml Thu Nov  3 17:59:29 2011
@@ -241,6 +241,11 @@
                 <parameter param-name="partyId"/>
             </link>
         </menu-item>
+        <menu-item name="PayrollHistory" title="${uiLabelMap.HumanResPayRollHistory}">
+            <link target="PayrollHistory">
+                <parameter param-name="partyId"/>
+            </link>
+        </menu-item>
     </menu>
 
     <menu name="EmplPositionTypeTabBar" extends="CommonTabBarMenu" extends-resource="component://common/widget/CommonMenus.xml"

Modified: ofbiz/branches/jackrabbit20100709/applications/humanres/widget/forms/EmplPositionForms.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/humanres/widget/forms/EmplPositionForms.xml?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/humanres/widget/forms/EmplPositionForms.xml (original)
+++ ofbiz/branches/jackrabbit20100709/applications/humanres/widget/forms/EmplPositionForms.xml Thu Nov  3 17:59:29 2011
@@ -65,7 +65,7 @@ under the License.
         <field use-when="emplPosition==null&amp;&amp;emplPositionId!=null" name="emplPositionId" title="${uiLabelMap.HumanResEmplPositionId}" tooltip="${uiLabelMap.CommonCannotBeFound}: [${emplPositionId}]"><display/></field>
         <field name="partyId" use-when="emplPosition!=null" parameter-name="partyId" title="organization partyId">
             <drop-down allow-empty="false">
-                <entity-options description="${partyId}" entity-name="PartyRole" key-field-name="partyId">
+                <entity-options description="${groupName}" entity-name="PartyRoleAndPartyDetail" key-field-name="partyId">
                     <entity-constraint name="roleTypeId" value="INTERNAL_ORGANIZATIO"/>
                     <entity-order-by field-name="partyId"/>
                 </entity-options>
@@ -303,6 +303,11 @@ under the License.
     <form name="EmplPositionInfo" type="single" default-map-name="emplPosition" paginate-target="FindEmplPositions"
         header-row-style="header-row" default-table-style="basic-table">
         <auto-fields-service service-name="updateEmplPosition" default-field-type="display"/>
+        <field name="partyId"><display-entity entity-name="PartyGroup" description="${groupName}">
+            <sub-hyperlink target="EmployeeProfile" description="[${emplPosition.partyId}]">
+                <parameter param-name="partyId" from-field="emplPosition.partyId"/>
+            </sub-hyperlink>
+        </display-entity></field>
         <field name="emplPositionTypeId"><display-entity entity-name="EmplPositionType" description="${description}">
             <sub-hyperlink target="EditEmplPositionTypes" description="[${emplPosition.emplPositionTypeId}]">
                 <parameter param-name="emplPositionTypeId" from-field="emplPosition.emplPositionTypeId"/>

Modified: ofbiz/branches/jackrabbit20100709/applications/humanres/widget/forms/EmployeeForms.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/humanres/widget/forms/EmployeeForms.xml?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/humanres/widget/forms/EmployeeForms.xml (original)
+++ ofbiz/branches/jackrabbit20100709/applications/humanres/widget/forms/EmployeeForms.xml Thu Nov  3 17:59:29 2011
@@ -237,5 +237,12 @@
             <display type="currency" currency="${employmentData.emplPositionRateAmount.rateCurrencyUomId}"/>
         </field>
     </form>
+    <form name="PayrollHistoryList" type="list" list-name="payroll" extends="ListInvoices" extends-resource="component://accounting/widget/InvoiceForms.xml" paginate-target="PayrollHistory">
+        <field name="invoiceId" widget-style="buttontext" sort-field="true">
+            <hyperlink description="${invoiceId}" target="/accounting/control/invoiceOverview" target-type="inter-app">
+                <parameter param-name="invoiceId"/>
+            </hyperlink>
+        </field>
+    </form>
 </forms>
 

Modified: ofbiz/branches/jackrabbit20100709/applications/manufacturing/config/ManufacturingUiLabels.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/manufacturing/config/ManufacturingUiLabels.xml?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/manufacturing/config/ManufacturingUiLabels.xml (original)
+++ ofbiz/branches/jackrabbit20100709/applications/manufacturing/config/ManufacturingUiLabels.xml Thu Nov  3 17:59:29 2011
@@ -142,7 +142,7 @@
         <value xml:lang="de">Freitagskapazität</value>
         <value xml:lang="en">Friday Capacity</value>
         <value xml:lang="es">Capacidad para viernes</value>
-        <value xml:lang="fr">Capacité de vendredi</value>
+        <value xml:lang="fr">Capacité du vendredi</value>
         <value xml:lang="it">Venerdì  Capacità</value>
         <value xml:lang="pt_BR">Capacidade para Sexta-feira</value>
         <value xml:lang="th">การปฎิบัติหน้าที่ในวันศุกร์</value>
@@ -153,7 +153,7 @@
         <value xml:lang="de">Freitagsstartzeit</value>
         <value xml:lang="en">Friday Start Time</value>
         <value xml:lang="es">Hora de comienzo para viernes</value>
-        <value xml:lang="fr">Heure de départ, vendredi</value>
+        <value xml:lang="fr">Heure de début du vendredi</value>
         <value xml:lang="it">Venerdì Tempo Inizio</value>
         <value xml:lang="pt_BR">Hora de início para sexta-feira</value>
         <value xml:lang="th">เวลาเริ่มต้นในวันศุกร์</value>
@@ -196,6 +196,7 @@
     </property>
     <property key="FormFieldTitle_lotId">
         <value xml:lang="en">Lot Id</value>
+        <value xml:lang="fr">Réf. de lot</value>
         <value xml:lang="it">Numero lotto</value>
         <value xml:lang="pt_BR">Id do lote</value>
         <value xml:lang="zh">批次标识</value>
@@ -227,7 +228,7 @@
         <value xml:lang="de">Montagskapazität</value>
         <value xml:lang="en">Monday Capacity</value>
         <value xml:lang="es">Capacidad para lunes</value>
-        <value xml:lang="fr">Capacité de lundi</value>
+        <value xml:lang="fr">Capacité du lundi</value>
         <value xml:lang="it">Lunedì Capacità</value>
         <value xml:lang="pt_BR">Capacidade de segunda-feira</value>
         <value xml:lang="th">การปฏิบัติหน้าที่ในวันจันทร์</value>
@@ -238,7 +239,7 @@
         <value xml:lang="de">Montagsstartzeit</value>
         <value xml:lang="en">Monday Start Time</value>
         <value xml:lang="es">Hora de comienzo para lunes</value>
-        <value xml:lang="fr">Heure de départ, lundi</value>
+        <value xml:lang="fr">Heure de début du lundi</value>
         <value xml:lang="it">Lunedì Tempo Inizio</value>
         <value xml:lang="pt_BR">Hora de início de segunda-feira</value>
         <value xml:lang="th">เวลาเริ่มต้นในวันจันทร์</value>
@@ -391,7 +392,7 @@
         <value xml:lang="de">Samstagskapazität</value>
         <value xml:lang="en">Saturday Capacity</value>
         <value xml:lang="es">Capacidad para sábado</value>
-        <value xml:lang="fr">Capacité de samedi</value>
+        <value xml:lang="fr">Capacité du samedi</value>
         <value xml:lang="it">Sabato Capacità</value>
         <value xml:lang="pt_BR">Capacidade de sábado</value>
         <value xml:lang="th">การปฏิบัติหน้าที่ในวันเสาร์</value>
@@ -435,7 +436,7 @@
         <value xml:lang="de">Sonntagskapazität</value>
         <value xml:lang="en">Sunday Capacity</value>
         <value xml:lang="es">Capacidad para domingo</value>
-        <value xml:lang="fr">capacité du dimanche</value>
+        <value xml:lang="fr">Capacité du dimanche</value>
         <value xml:lang="it">Domenica Capacità</value>
         <value xml:lang="pt_BR">Capacidade de domingo</value>
         <value xml:lang="th">การปฏิบัติงานในวันอาทิตย์</value>
@@ -457,7 +458,7 @@
         <value xml:lang="de">Donnerstagskapazität</value>
         <value xml:lang="en">Thursday Capacity</value>
         <value xml:lang="es">Capacidad para jueves</value>
-        <value xml:lang="fr">Capacité de jeudi</value>
+        <value xml:lang="fr">Capacité du jeudi</value>
         <value xml:lang="it">Giovedì Capacità</value>
         <value xml:lang="pt_BR">Capacidade de quinta-feira</value>
         <value xml:lang="th">การปฏิบัติหน้าที่ในวันพฤหัสบดี</value>
@@ -515,7 +516,7 @@
         <value xml:lang="de">Dienstagskapazität</value>
         <value xml:lang="en">Tuesday Capacity</value>
         <value xml:lang="es">Cantidad total planificada</value>
-        <value xml:lang="fr">Capacité de jeudi</value>
+        <value xml:lang="fr">Capacité du mardi</value>
         <value xml:lang="it">Martedì Capacità</value>
         <value xml:lang="pt_BR">Capacidade de terça-feira</value>
         <value xml:lang="th">การปฏิบัติงานในวันอังคาร</value>
@@ -526,7 +527,7 @@
         <value xml:lang="de">Dienstagssstartzeit</value>
         <value xml:lang="en">Tuesday Start Time</value>
         <value xml:lang="es">Hora de comienzo para martes</value>
-        <value xml:lang="fr">Heure de début du jeudi</value>
+        <value xml:lang="fr">Heure de début du mardi</value>
         <value xml:lang="it">Martedì Tempo Inizio</value>
         <value xml:lang="pt_BR">Hora de início da terça-feira</value>
         <value xml:lang="th">เวลาเริ่มต้นในวันอังคาร</value>
@@ -561,7 +562,7 @@
         <value xml:lang="de">Mittwochskapazität</value>
         <value xml:lang="en">Wednesday Capacity</value>
         <value xml:lang="es">Capacidad pra miércoles</value>
-        <value xml:lang="fr">Capacité de vendredi</value>
+        <value xml:lang="fr">Capacité du mercredi</value>
         <value xml:lang="it">Mercoledì Capacità</value>
         <value xml:lang="pt_BR">Capacidade de quarta-feira</value>
         <value xml:lang="th">กรปฏิบัติงานในวันพุธ</value>
@@ -572,7 +573,7 @@
         <value xml:lang="de">Mittwochsstartzeit</value>
         <value xml:lang="en">Wednesday Start Time</value>
         <value xml:lang="es">Hora de comienzo para miércoles</value>
-        <value xml:lang="fr">Heure de début du vendredi</value>
+        <value xml:lang="fr">Heure de début du mercredi</value>
         <value xml:lang="it">Mercoledì Tempo Inizio</value>
         <value xml:lang="pt_BR">Hora de início de quarta-feira</value>
         <value xml:lang="th">เวลาเริ่มต้นในวันพุธ</value>

Modified: ofbiz/branches/jackrabbit20100709/applications/manufacturing/script/org/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/manufacturing/script/org/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.xml?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/manufacturing/script/org/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.xml (original)
+++ ofbiz/branches/jackrabbit20100709/applications/manufacturing/script/org/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.xml Thu Nov  3 17:59:29 2011
@@ -105,6 +105,13 @@ under the License.
             <field-to-list field="orderByString" list="orderByList"/>
             <set from-field="productId" field="lookupFieldMap.productId"/>
             <set from-field="workEffort.facilityId" field="lookupFieldMap.facilityId"/>
+            
+            <!-- if lotId is passed, failIfItemsAreNotAvailable is set to automatically set to "Y" -->
+            <if-not-empty field="parameters.lotId">
+                <set field="parameters.failIfItemsAreNotAvailable" value="Y"/>
+                <set field="lookupFieldMap.lotId" from-field="parameters.lotId"/>
+            </if-not-empty>
+            
             <!-- if locationSeqId is passed, then only the inventory items in the location are considered -->
             <if-not-empty field="parameters.locationSeqId">
                 <set from-field="parameters.locationSeqId" field="lookupFieldMap.locationSeqId"/>

Modified: ofbiz/branches/jackrabbit20100709/applications/manufacturing/servicedef/services_production_run.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/manufacturing/servicedef/services_production_run.xml?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/manufacturing/servicedef/services_production_run.xml (original)
+++ ofbiz/branches/jackrabbit20100709/applications/manufacturing/servicedef/services_production_run.xml Thu Nov  3 17:59:29 2011
@@ -195,6 +195,7 @@ under the License.
             no reservation will be stolen.
             If failIfItemsAreNotOnHand is set to "Y" (the default is "Y") then the service fails if there is not enough inventory:
             no items with negative qoh will be created.
+            If lotId is filled, failIfItemsAreNotAvailable is set to automatically set to "Y".
         </description>
         <attribute name="workEffortId" type="String" mode="IN" optional="false"/>
         <attribute name="productId" type="String" mode="IN" optional="false"/>
@@ -203,6 +204,7 @@ under the License.
         <attribute name="failIfItemsAreNotAvailable" type="String" mode="IN" optional="true"/>
         <attribute name="failIfItemsAreNotOnHand" type="String" mode="IN" optional="true"/>
         <attribute name="reserveOrderEnumId" type="String" mode="IN" optional="true"/>
+        <attribute name="lotId" mode="IN" type="String" optional="true" />
         <attribute name="locationSeqId" type="String" mode="IN" optional="true"/>
         <attribute name="secondaryLocationSeqId" type="String" mode="IN" optional="true"/>
         <attribute name="reasonEnumId" type="String" mode="IN" optional="true"/>
@@ -260,6 +262,8 @@ under the License.
         <attribute name="currencyUomId" type="String" mode="IN" optional="true"/>
         <attribute name="inventoryItemTypeId" type="String" mode="IN" optional="true"/>
         <attribute name="inventoryItemIds" type="List" mode="OUT" optional="false"/>
+        <attribute name="lotId" mode="IN" type="String" optional="true" />
+        <attribute name="isReturned" mode="IN" type="String" optional="true" default-value="N"></attribute>
     </service>
     <service name="productionRunTaskReturnMaterial" engine="java"
             location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="productionRunTaskReturnMaterial" auth="true">
@@ -270,6 +274,7 @@ under the License.
         <attribute name="productId" type="String" mode="IN" optional="false"/>
         <attribute name="quantity" type="BigDecimal" mode="IN" optional="true"/>
         <attribute name="inventoryItemTypeId" type="String" mode="IN" optional="true"/>
+        <attribute name="lotId" mode="IN" type="String" optional="true" />
     </service>
     <service name="checkDecomposeInventoryItem" engine="java"
             location="org.ofbiz.manufacturing.jobshopmgt.ProductionRunServices" invoke="checkDecomposeInventoryItem" auth="true">

Modified: ofbiz/branches/jackrabbit20100709/applications/manufacturing/src/org/ofbiz/manufacturing/jobshopmgt/ProductionRun.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/manufacturing/src/org/ofbiz/manufacturing/jobshopmgt/ProductionRun.java?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/manufacturing/src/org/ofbiz/manufacturing/jobshopmgt/ProductionRun.java (original)
+++ ofbiz/branches/jackrabbit20100709/applications/manufacturing/src/org/ofbiz/manufacturing/jobshopmgt/ProductionRun.java Thu Nov  3 17:59:29 2011
@@ -131,7 +131,7 @@ public class ProductionRun {
             try {
                 productionRun.store();
                 if (quantityIsUpdated) {
-                    productionRunProduct.set("estimatedQuantity",this.quantity);
+                    productionRunProduct.set("estimatedQuantity",this.quantity.doubleValue());
                     productionRunProduct.store();
                     quantityIsUpdated = false;
                 }
@@ -204,7 +204,7 @@ public class ProductionRun {
         for (Iterator<GenericValue> iter = productionRunComponents.iterator(); iter.hasNext();) {
             GenericValue component = iter.next();
             componentQuantity = component.getBigDecimal("estimatedQuantity");
-            component.set("estimatedQuantity", componentQuantity.divide(previousQuantity, 10, BigDecimal.ROUND_HALF_UP).multiply(newQuantity));
+            component.set("estimatedQuantity", componentQuantity.divide(previousQuantity, 10, BigDecimal.ROUND_HALF_UP).multiply(newQuantity).doubleValue());
         }
     }
     /**

Modified: ofbiz/branches/jackrabbit20100709/applications/manufacturing/src/org/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/manufacturing/src/org/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.java?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/manufacturing/src/org/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.java (original)
+++ ofbiz/branches/jackrabbit20100709/applications/manufacturing/src/org/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.java Thu Nov  3 17:59:29 2011
@@ -1864,6 +1864,8 @@ public class ProductionRunServices {
         String currencyUomId = (String)context.get("currencyUomId");
         BigDecimal unitCost = (BigDecimal)context.get("unitCost");
         String inventoryItemTypeId = (String)context.get("inventoryItemTypeId");
+        String lotId = (String)context.get("lotId");
+        String isReturned = (String)context.get("isReturned");
 
         // The default is non-serialized inventory item
         if (UtilValidate.isEmpty(inventoryItemTypeId)) {
@@ -1890,7 +1892,9 @@ public class ProductionRunServices {
                         serviceContext.put("unitCost", unitCost);
                         serviceContext.put("currencyUomId", currencyUomId);
                     }
+                    serviceContext.put("lotId",    lotId);
                     serviceContext.put("userLogin", userLogin);
+                    serviceContext.put("isReturned", isReturned);
                     Map<String, Object> resultService = dispatcher.runSync("createInventoryItem", serviceContext);
                     String inventoryItemId = (String)resultService.get("inventoryItemId");
                     serviceContext.clear();
@@ -1926,7 +1930,9 @@ public class ProductionRunServices {
                     serviceContext.put("unitCost", unitCost);
                     serviceContext.put("currencyUomId", currencyUomId);
                 }
+                serviceContext.put("lotId", lotId);
                 serviceContext.put("userLogin", userLogin);
+                serviceContext.put("isReturned", isReturned);
                 Map<String, Object> resultService = dispatcher.runSync("createInventoryItem", serviceContext);
                 String inventoryItemId = (String)resultService.get("inventoryItemId");
 
@@ -1965,6 +1971,7 @@ public class ProductionRunServices {
         String productId = (String)context.get("productId");
         // Optional input fields
         BigDecimal quantity = (BigDecimal)context.get("quantity");
+        String lotId = (String)context.get("lotId");
         Locale locale = (Locale) context.get("locale");
         if (quantity == null || quantity.compareTo(ZERO) == 0) {
             return ServiceUtil.returnSuccess();
@@ -2009,7 +2016,7 @@ public class ProductionRunServices {
         try {
             Map<String, Object> inventoryResult = dispatcher.runSync("productionRunTaskProduce", 
                     UtilMisc.<String, Object>toMap("workEffortId", productionRunTaskId,
-                            "productId", productId, "quantity", quantity,
+                            "productId", productId, "quantity", quantity, "lotId", lotId, "isReturned", "Y",
                             "inventoryItemTypeId", inventoryItemTypeId, "userLogin", userLogin));
             if (ServiceUtil.isError(inventoryResult)) {
                 return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunTaskProduceError" + ServiceUtil.getErrorMessage(inventoryResult), locale));

Modified: ofbiz/branches/jackrabbit20100709/applications/manufacturing/widget/manufacturing/ProductionRunForms.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/manufacturing/widget/manufacturing/ProductionRunForms.xml?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/manufacturing/widget/manufacturing/ProductionRunForms.xml (original)
+++ ofbiz/branches/jackrabbit20100709/applications/manufacturing/widget/manufacturing/ProductionRunForms.xml Thu Nov  3 17:59:29 2011
@@ -434,6 +434,9 @@ under the License.
                 </entity-options>
             </drop-down>
         </field>
+        <field name="lotId">
+            <text />
+        </field>
         <field name="submitButton" title="${uiLabelMap.CommonSubmit}"><submit/></field>
     </form>
     <form name="ListReturnProductionRunDeclComponents" type="multi" use-row-submit="true" target="productionRunTaskReturnMaterials?productionRunId=${productionRunId}" title="" list-name="productionRunComponentsAlreadyIssued"
@@ -451,6 +454,7 @@ under the License.
         <field name="estimatedQuantity" title="${uiLabelMap.ManufacturingQuantity}"><display also-hidden="false"/></field>
         <field name="issuedQuantity" title="${uiLabelMap.ManufacturingIssuedQuantity}"><display also-hidden="false"/></field>
         <field name="returnedQuantity" title="${uiLabelMap.ManufacturingReturnedQuantity}"><display also-hidden="false"/></field>
+        <field name="lotId" title="${uiLabelMap.ProductLotId}"><text /></field>
         <field name="quantity" title="${uiLabelMap.CommonQuantity}"><text/></field>
         <field name="_rowSubmit" title="${uiLabelMap.CommonSelected}"><check/></field>
         <field name="submitButton" title="${uiLabelMap.CommonSubmit}"><submit/></field>
@@ -542,6 +546,9 @@ under the License.
         <field name="quantity" title="${uiLabelMap.ManufacturingAddQuantityProduced}">
             <text/>
         </field>
+        <field name="lotId" title="${uiLabelMap.ProductLotId}">
+            <text />
+        </field>
         <field name="submitButton" title="${uiLabelMap.CommonAdd}">
             <submit button-type="button"/>
         </field>
@@ -966,6 +973,9 @@ under the License.
         <field name="productId">
             <lookup target-form-name="LookupProduct"/>
         </field>
+        <field name="lotId" title="${uiLabelMap.ProductLotId}">
+            <text />
+        </field>
         <field name="reasonEnumId">
             <drop-down allow-empty="true">
                 <entity-options entity-name="Enumeration" key-field-name="enumId" description="${description}">

Modified: ofbiz/branches/jackrabbit20100709/applications/marketing/webapp/sfa/WEB-INF/controller.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/marketing/webapp/sfa/WEB-INF/controller.xml?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/marketing/webapp/sfa/WEB-INF/controller.xml (original)
+++ ofbiz/branches/jackrabbit20100709/applications/marketing/webapp/sfa/WEB-INF/controller.xml Thu Nov  3 17:59:29 2011
@@ -56,6 +56,12 @@ under the License.
         <response name="success" type="request" value="ViewSalesOpportunity"/>
         <response name="error" type="view" value="EditSalesOpportunity"/>
     </request-map>
+    <request-map uri="closeSalesOpportunity">
+        <security https="true" auth="true"/>
+        <event type="service" invoke="updateSalesOpportunity"/>
+        <response name="success" type="request" value="FindSalesOpportunity"/>
+        <response name="error" type="view" value="FindSalesOpportunity"/>
+    </request-map>
 
     <!-- Account Entry Requests -->
     <request-map uri="FindAccounts">

Modified: ofbiz/branches/jackrabbit20100709/applications/marketing/widget/sfa/forms/OpportunityForms.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/marketing/widget/sfa/forms/OpportunityForms.xml?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/marketing/widget/sfa/forms/OpportunityForms.xml (original)
+++ ofbiz/branches/jackrabbit20100709/applications/marketing/widget/sfa/forms/OpportunityForms.xml Thu Nov  3 17:59:29 2011
@@ -55,6 +55,9 @@ under the License.
                 <field-map field-name="viewSize" from-field="viewSize"/>
             </service>
         </actions>
+        <row-actions>
+            <set field="isDateAfterNow" value="${groovy:org.ofbiz.base.util.UtilValidate.isDateAfterNow(estimatedCloseDate)}" type="Boolean"/>
+        </row-actions>
         <field name="salesOpportunityId"><hidden/></field>
         <field name="opportunityName" title="${uiLabelMap.SfaOpportunityName}">
             <hyperlink target="ViewSalesOpportunity" description="${opportunityName}[${salesOpportunityId}]">
@@ -65,9 +68,10 @@ under the License.
         <field name="nextStep"><display/></field>
         <field name="estimatedAmount" title="${uiLabelMap.SfaEstimatedAmount}"><display/></field>
         <field name="estimatedCloseDate" title="${uiLabelMap.SfaCloseDate}"><display/></field>
-        <field name="editButton" title="${uiLabelMap.CommonEdit}" widget-style="buttontext">
-            <hyperlink target="EditSalesOpportunity" description="${uiLabelMap.CommonEdit}">
+        <field name="editButton" title="${uiLabelMap.CommonClose}" use-when="${groovy: estimatedCloseDate == null || isDateAfterNow == true || opportunityStageId != &quot;SOSTG_CLOSED&quot;}" widget-style="buttontext">
+            <hyperlink target="closeSalesOpportunity" description="${uiLabelMap.CommonClose}">
                 <parameter param-name="salesOpportunityId"/>
+                <parameter param-name="opportunityStageId" value="SOSTG_CLOSED"/>
             </hyperlink>
         </field>
     </form>

Modified: ofbiz/branches/jackrabbit20100709/applications/order/script/org/ofbiz/order/opportunity/OpportunityServices.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/order/script/org/ofbiz/order/opportunity/OpportunityServices.xml?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/order/script/org/ofbiz/order/opportunity/OpportunityServices.xml (original)
+++ ofbiz/branches/jackrabbit20100709/applications/order/script/org/ofbiz/order/opportunity/OpportunityServices.xml Thu Nov  3 17:59:29 2011
@@ -114,6 +114,14 @@ This file contains basic services for Sa
     </simple-method>
     <simple-method method-name="updateSalesOpportunity" short-description="Update an Sales opportunity">
         <entity-one entity-name="SalesOpportunity" value-field="lookedUpValue"/>
+        <if-compare field="parameters.opportunityStageId" operator="equals" value="SOSTG_CLOSED">
+            <if-empty field="parameters.estimatedCloseDate">
+                <now-timestamp field="nowTimestamp"/>
+                <call-class-method class-name="org.ofbiz.base.util.UtilDateTime" method-name="getDayStart" ret-field="parameters.estimatedCloseDate">
+                    <field field="nowTimestamp" type="java.sql.Timestamp"/>
+                </call-class-method>
+            </if-empty>
+        </if-compare>
         <set-nonpk-fields value-field="lookedUpValue" map="parameters"/>
         <store-value value-field="lookedUpValue"/>
     </simple-method>

Modified: ofbiz/branches/jackrabbit20100709/applications/order/servicedef/services_request.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/order/servicedef/services_request.xml?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/order/servicedef/services_request.xml (original)
+++ ofbiz/branches/jackrabbit20100709/applications/order/servicedef/services_request.xml Thu Nov  3 17:59:29 2011
@@ -95,6 +95,7 @@ under the License.
         <auto-attributes include="pk" mode="IN" optional="false"/>
         <auto-attributes include="nonpk" mode="IN" optional="true"/>
         <override name="story" allow-html="safe"/>
+        <override name="description" allow-html="safe"/>
     </service>
     <service name="copyCustRequestItem" default-entity-name="CustRequestItem" engine="simple"
                 location="component://order/script/org/ofbiz/order/request/CustRequestServices.xml" invoke="copyCustRequestItem" auth="true">

Modified: ofbiz/branches/jackrabbit20100709/applications/order/webapp/ordermgr/WEB-INF/actions/entry/catalog/Product.groovy
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/order/webapp/ordermgr/WEB-INF/actions/entry/catalog/Product.groovy?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/order/webapp/ordermgr/WEB-INF/actions/entry/catalog/Product.groovy (original)
+++ ofbiz/branches/jackrabbit20100709/applications/order/webapp/ordermgr/WEB-INF/actions/entry/catalog/Product.groovy Thu Nov  3 17:59:29 2011
@@ -40,21 +40,6 @@ pageTitle = null;
 metaDescription = null;
 metaKeywords = null;
 
-/*
- * NOTE JLR 20070221 this should be done using the same method than in add to cart. I will do it like that and remove all this after.
- *
-if (productId) {
-    previousParams = session.getAttribute("_PREVIOUS_PARAMS_");
-    if (previousParams) {
-        previousParams = UtilHttp.stripNamedParamsFromQueryString(previousParams, ["product_id"]);
-        previousParams += "&product_id=" + productId;
-    } else {
-        previousParams = "product_id=" + productId;
-    }
-    session.setAttribute("_PREVIOUS_PARAMS_", previousParams);    // for login
-    context.previousParams = previousParams;
-}*/
-
 // get the product entity
 if (productId) {
     product = delegator.findByPrimaryKeyCache("Product", [productId : productId]);
@@ -122,13 +107,17 @@ if (productId) {
             context.metaKeywords = metaKeywords.textData;
         } else {
             keywords = [];
-            keywords.add(product.productName);
+            keywords.add(contentWrapper.get("PRODUCT_NAME"));
             keywords.add(catalogName);
             members = delegator.findByAndCache("ProductCategoryMember", [productId : productId]);
             members.each { member ->
                 category = member.getRelatedOneCache("ProductCategory");
                 if (category.description) {
-                    keywords.add(category.description);
+                    categoryContentWrapper = new CategoryContentWrapper(category, request);
+                    categoryDescription = categoryContentWrapper.DESCRIPTION;
+                    if (categoryDescription) {
+                            keywords.add(categoryDescription);
+                    }
                 }
             }
             context.metaKeywords = StringUtil.join(keywords, ", ");

Modified: ofbiz/branches/jackrabbit20100709/applications/order/webapp/ordermgr/WEB-INF/actions/order/OrderView.groovy
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/order/webapp/ordermgr/WEB-INF/actions/order/OrderView.groovy?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/order/webapp/ordermgr/WEB-INF/actions/order/OrderView.groovy (original)
+++ ofbiz/branches/jackrabbit20100709/applications/order/webapp/ordermgr/WEB-INF/actions/order/OrderView.groovy Thu Nov  3 17:59:29 2011
@@ -170,12 +170,8 @@ if (orderHeader) {
     context.itemIssuancesPerItem = itemIssuancesPerItem;
 
     // get a list of all invoices
-    allInvoices = new HashSet();
     orderBilling = delegator.findByAnd("OrderItemBilling", [orderId : orderId], ["invoiceId"]);
-    orderBilling.each { billingGv ->
-        allInvoices.add(billingGv.invoiceId);
-    }
-    context.invoices = allInvoices;
+    context.invoices = orderBilling*.invoiceId.unique();
 
     ecl = EntityCondition.makeCondition([
                                     EntityCondition.makeCondition("orderId", EntityOperator.EQUALS, orderId),

Modified: ofbiz/branches/jackrabbit20100709/applications/order/webapp/ordermgr/order/orderpaymentinfo.ftl
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/order/webapp/ordermgr/order/orderpaymentinfo.ftl?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/order/webapp/ordermgr/order/orderpaymentinfo.ftl (original)
+++ ofbiz/branches/jackrabbit20100709/applications/order/webapp/ordermgr/order/orderpaymentinfo.ftl Thu Nov  3 17:59:29 2011
@@ -71,6 +71,21 @@ under the License.
            </tr>
          </#list>
        </#list>
+       <#-- invoices -->
+       <#if invoices?has_content>
+         <tr><td colspan="4"><hr /></td></tr>
+         <tr>
+           <td align="right" valign="top" width="29%">&nbsp;<span class="label">${uiLabelMap.OrderInvoices}</span></td>
+           <td width="1%">&nbsp;</td>
+           <td valign="top" width="60%">
+             <#list invoices as invoice>
+               <div>${uiLabelMap.CommonNbr}<a href="/accounting/control/invoiceOverview?invoiceId=${invoice}&amp;externalLoginKey=${externalLoginKey}" class="buttontext">${invoice}</a>
+               (<a target="_BLANK" href="/accounting/control/invoice.pdf?invoiceId=${invoice}&amp;externalLoginKey=${externalLoginKey}" class="buttontext">PDF</a>)</div>
+             </#list>
+           </td>
+           <td width="10%">&nbsp;</td>
+         </tr>
+       </#if>
      <#else>
      
      <#-- order payment status -->

Modified: ofbiz/branches/jackrabbit20100709/applications/product/config/ProductErrorUiLabels.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/product/config/ProductErrorUiLabels.xml?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/product/config/ProductErrorUiLabels.xml (original)
+++ ofbiz/branches/jackrabbit20100709/applications/product/config/ProductErrorUiLabels.xml Thu Nov  3 17:59:29 2011
@@ -1119,6 +1119,26 @@
         <value xml:lang="zh">创建快速添加变型数据时发生交易错误:${errMessage}。</value>
         <value xml:lang="zh_TW">創建快速添加變型資料時發生交易錯誤: ${errMessage}。</value>
     </property>
+    <property key="PicklistManageTooMuchQuantity">
+        <value xml:lang="en">The quantity entered (${parameters.quantity}) is higher than the quantity expected (${picklistItem.quantity}).</value>
+        <value xml:lang="fr">La quantité entrée (${parameters.quantity}) est supérieure à la quantité attendue (${picklistItem.quantity}).</value>
+    </property>
+    <property key="PicklistManageNoLinkProductAndLot">
+        <value xml:lang="en">There is no link between the lot ${parameters.lotId} and the product ${parameters.productId}.</value>
+        <value xml:lang="fr">Il n'y a pas de lien entre le lot ${parameters.lotId} et le produit ${parameters.productId}.</value>
+    </property>
+    <property key="PicklistManageStockLow">
+        <value xml:lang="en">Not enough stock for this lot.</value>
+        <value xml:lang="fr">Pas assez de stock pour ce lot.</value>
+    </property>
+    <property key="ProductLotIdMandatory">
+        <value xml:lang="en">The lotId is mandatory for the product ${parameters.productId}.</value>
+        <value xml:lang="fr">Le numéro de lot est obligatoire pour ce produit ${parameters.productId}.</value>
+    </property>
+    <property key="ProductLotIdForbidden">
+        <value xml:lang="en">The lotId is forbidden for the product ${parameters.productId}.</value>
+        <value xml:lang="fr">Le numéro de lot est interdit pour ce produit ${parameters.productId}.</value>
+    </property>
     <property key="variantevents.variantProductId_required_but_missing_enter_an_id">
         <value xml:lang="de">variantProductId wir benötigt fehlt aber, bitte geben Sie eine ID für die neue Produktvariante an.</value>
         <value xml:lang="en">variantProductId is required but missing, please enter an id for the new variant product.</value>

Modified: ofbiz/branches/jackrabbit20100709/applications/product/config/ProductUiLabels.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/product/config/ProductUiLabels.xml?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/product/config/ProductUiLabels.xml (original)
+++ ofbiz/branches/jackrabbit20100709/applications/product/config/ProductUiLabels.xml Thu Nov  3 17:59:29 2011
@@ -24879,6 +24879,50 @@
         <value xml:lang="zh">警告:订单类型是</value>
         <value xml:lang="zh_TW">警告:訂單類型是</value>
     </property>
+    <property key="Tracking">
+        <value xml:lang="en">Tracking</value>
+        <value xml:lang="fr">Traçabilité</value>
+    </property>
+    <property key="SearchTracking">
+        <value xml:lang="en">Search of a tracking</value>
+        <value xml:lang="fr">Recherche d'un suivi</value>
+    </property>
+    <property key="ResultTracking">
+        <value xml:lang="en">Search result</value>
+        <value xml:lang="fr">Résultat de la recherche</value>
+    </property>
+    <property key="TrackingType">
+        <value xml:lang="en">Type of tracking</value>
+        <value xml:lang="fr">Type de suivi</value>
+    </property>
+    <property key="TrackingTypeSale">
+        <value xml:lang="en">Sale</value>
+        <value xml:lang="fr">Vente</value>
+    </property>
+    <property key="TrackingTypeDownstream">
+        <value xml:lang="en">Downstream</value>
+        <value xml:lang="fr">Aval</value>
+    </property>
+    <property key="TrackingTypeUpstream">
+        <value xml:lang="en">Upstream</value>
+        <value xml:lang="fr">Amont</value>
+    </property>
+    <property key="lotIdFilledInForbidden">
+        <value xml:lang="en">Forbidden</value>
+        <value xml:lang="fr">Interdit</value>
+    </property>
+    <property key="lotIdFilledInAllowed">
+        <value xml:lang="en">Allowed</value>
+        <value xml:lang="fr">Facultatif</value>
+    </property>
+    <property key="lotIdFilledInMandatory">
+        <value xml:lang="en">Mandatory</value>
+        <value xml:lang="fr">Obligatoire</value>
+    </property>
+    <property key="ProductManagedByLot">
+        <value xml:lang="en">Lots managing</value>
+        <value xml:lang="fr">Gestion des lots</value>
+    </property>
     <property key="ProductWarningProductNotVirtual">
         <value xml:lang="en">This product is not a virtual product, variants will not generally be used.</value>
         <value xml:lang="es">Este producto no es virtual, generalmente no se usan variantes.</value>

Modified: ofbiz/branches/jackrabbit20100709/applications/product/data/ProductHelpData.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/product/data/ProductHelpData.xml?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/product/data/ProductHelpData.xml (original)
+++ ofbiz/branches/jackrabbit20100709/applications/product/data/ProductHelpData.xml Thu Nov  3 17:59:29 2011
@@ -31,4 +31,19 @@ under the License.
     <Content contentId="IMAGEMANAGEMENT_MAIN" contentTypeId="DOCUMENT" contentName="Image Management" templateDataResourceId="HELP_TEMPL" dataResourceId="IMAGEMANAGEMENT_MAIN" statusId="CTNT_IN_PROGRESS" mimeTypeId="text/html"/>
     <ContentAssoc contentId="PRODCATALOG_main" contentIdTo="IMAGEMANAGEMENT_MAIN" contentAssocTypeId="TREE_CHILD" fromDate="2006-01-12 01:01:01" sequenceNum="01" mapKey="PRODUCT_Imagemanagement"/>
 
+    <!-- Facility help pages -->
+    <DataResource dataResourceId="HELP_FACILITY" localeString="en" dataResourceTypeId="OFBIZ_FILE" 
+        objectInfo="applications/product/data/helpdata/HELP_FACILITY.xml" dataTemplateTypeId="NONE" statusId="CTNT_IN_PROGRESS"
+        dataResourceName="Help system Facility" mimeTypeId="text/xml" isPublic="Y" />
+    <Content contentId="HELP_FACILITY" contentTypeId="DOCUMENT" contentName="Facility" templateDataResourceId="HELP_TEMPL" 
+        dataResourceId="HELP_FACILITY" statusId="CTNT_IN_PROGRESS" mimeTypeId="text/html"/>
+    <ContentAssoc contentId="HELP_ROOT" contentIdTo="HELP_FACILITY" contentAssocTypeId="TREE_CHILD" fromDate="2006-01-12 01:01:01" sequenceNum="000"/>
+
+    <DataResource dataResourceId="HELP_FACILITY_TRK" localeString="en" dataResourceTypeId="OFBIZ_FILE" objectInfo="applications/product/data/helpdata/HELP_FACILITY_Tracking.xml" dataTemplateTypeId="NONE" statusId="CTNT_IN_PROGRESS" dataResourceName="Help system Facility Tracking" mimeTypeId="text/xml" isPublic="Y" />
+    <Content contentId="HELP_FACILITY_TRK" contentTypeId="DOCUMENT" localeString="en" contentName="Facility Tracking" templateDataResourceId="HELP_TEMPL" dataResourceId="HELP_FACILITY_TRK" statusId="CTNT_IN_PROGRESS" mimeTypeId="text/html"/>
+    <ContentAssoc contentId="HELP_FACILITY" contentIdTo="HELP_FACILITY_TRK" contentAssocTypeId="TREE_CHILD" fromDate="2006-01-12 01:01:01" sequenceNum="000" mapKey="FACILITY_Tracking"/>
+    
+    <DataResource dataResourceId="HELP_FACILITY_PICK" localeString="en" dataResourceTypeId="OFBIZ_FILE" objectInfo="applications/product/data/helpdata/HELP_FACILITY_PicklistManage.xml" dataTemplateTypeId="NONE" statusId="CTNT_IN_PROGRESS" dataResourceName="Help system Facility PicklistManage" mimeTypeId="text/xml" isPublic="Y" />
+    <Content contentId="HELP_FACILITY_PICK" contentTypeId="DOCUMENT" localeString="en" contentName="Facility PicklistManage" templateDataResourceId="HELP_TEMPL" dataResourceId="HELP_FACILITY_PICK" statusId="CTNT_IN_PROGRESS" mimeTypeId="text/html"/>
+    <ContentAssoc contentId="HELP_FACILITY" contentIdTo="HELP_FACILITY_PICK" contentAssocTypeId="TREE_CHILD" fromDate="2006-01-12 01:01:01" sequenceNum="000" mapKey="FACILITY_PicklistManage"/>
 </entity-engine-xml>

Modified: ofbiz/branches/jackrabbit20100709/applications/product/entitydef/entitymodel.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/product/entitydef/entitymodel.xml?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/product/entitydef/entitymodel.xml (original)
+++ ofbiz/branches/jackrabbit20100709/applications/product/entitydef/entitymodel.xml Thu Nov  3 17:59:29 2011
@@ -2753,6 +2753,7 @@ under the License.
       <field name="lastModifiedByUserLogin" type="id-vlong"></field>
       <field name="inShippingBox" type="indicator"></field>
       <field name="defaultShipmentBoxTypeId" type="id"></field>
+      <field name="lotIdFilledIn" type="long-varchar"><description>Indicate if the lotId must be informed</description></field>
       <field name="orderDecimalQuantity" type="indicator"><description>use to indicate if decimal quantity can be ordered for this product. Default value is Y</description></field>
       <prim-key field="productId"/>
       <relation type="one" fk-name="PROD_TYPE" rel-entity-name="ProductType">
@@ -3779,6 +3780,7 @@ under the License.
       <field name="addToCartRemoveIncompat" type="indicator"><description>Default N. If Y then on add to cart remove all products in cart with a ProductAssoc record related to or from the product and with the PRODUCT_INCOMPATABLE type.</description></field>
       <field name="addToCartReplaceUpsell" type="indicator"><description>Default N. If Y then on add to cart remove all products in cart with a ProductAssoc record related from the product and with the PRODUCT_UPGRADE type.</description></field>
       <field name="splitPayPrefPerShpGrp" type="indicator"><description>Default N. If Y then before the order is stored the OrderPaymentPreference record will be split, one for each OrderItemShipGroup.</description></field>
+      <field name="managedByLot" type="indicator"><description>If Y, the preparator can choose the InventoryItem by this lotId when he makes the picklist.</description></field>
       <field name="showOutOfStockProducts" type="indicator"><description>Default Y. If N then out of stock products will not be displayed on site</description></field>
       <field name="orderDecimalQuantity" type="indicator"><description>use to indicate if decimal quantity can be ordered for this producStore. Default value is Y</description></field>
         

Modified: ofbiz/branches/jackrabbit20100709/applications/product/entitydef/entitymodel_shipment.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/product/entitydef/entitymodel_shipment.xml?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/product/entitydef/entitymodel_shipment.xml (original)
+++ ofbiz/branches/jackrabbit20100709/applications/product/entitydef/entitymodel_shipment.xml Thu Nov  3 17:59:29 2011
@@ -436,6 +436,7 @@ under the License.
       <alias entity-alias="II" name="quantityOnHandTotal"/>
       <alias entity-alias="II" name="availableToPromiseTotal"/>
       <alias entity-alias="II" name="unitCost"/>
+      <alias entity-alias="II" name="lotId"/>
       <view-link entity-alias="SR" rel-entity-alias="II">
         <key-map field-name="inventoryItemId"/>
       </view-link>

Modified: ofbiz/branches/jackrabbit20100709/applications/product/script/org/ofbiz/product/inventory/InventoryReserveServices.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/product/script/org/ofbiz/product/inventory/InventoryReserveServices.xml?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/product/script/org/ofbiz/product/inventory/InventoryReserveServices.xml (original)
+++ ofbiz/branches/jackrabbit20100709/applications/product/script/org/ofbiz/product/inventory/InventoryReserveServices.xml Thu Nov  3 17:59:29 2011
@@ -86,6 +86,7 @@ under the License.
                         <condition-expr field-name="productId" from-field="parameters.productId"/>
                         <condition-expr field-name="facilityId" from-field="parameters.facilityId" ignore-if-empty="true" ignore-if-null="true"/>
                         <condition-expr field-name="containerId" from-field="parameters.containerId" ignore-if-empty="true" ignore-if-null="true"/>
+                        <condition-expr field-name="lotId" from-field="parameters.lotId" ignore-if-empty="true" ignore-if-null="true"/>
                         <condition-expr field-name="quantityOnHandTotal" operator="greater" value="0.0"/>
                         <condition-expr field-name="locationTypeEnumId" operator="equals" value="FLT_PICKLOC"/>
                         <condition-expr field-name="statusId" operator="not-equals" value="INV_NS_DEFECTIVE"/>
@@ -108,6 +109,7 @@ under the License.
                             <condition-expr field-name="productId" from-field="parameters.productId"/>
                             <condition-expr field-name="facilityId" from-field="parameters.facilityId" ignore-if-empty="true" ignore-if-null="true"/>
                             <condition-expr field-name="containerId" from-field="parameters.containerId" ignore-if-empty="true" ignore-if-null="true"/>
+                            <condition-expr field-name="lotId" from-field="parameters.lotId" ignore-if-empty="true" ignore-if-null="true"/>
                             <condition-expr field-name="quantityOnHandTotal" operator="greater" value="0.0"/>
                             <condition-expr field-name="locationTypeEnumId" operator="equals" value="FLT_BULK"/>
                             <condition-expr field-name="statusId" operator="not-equals" value="INV_NS_DEFECTIVE"/>
@@ -131,6 +133,7 @@ under the License.
                             <condition-expr field-name="productId" from-field="parameters.productId"/>
                             <condition-expr field-name="facilityId" from-field="parameters.facilityId" ignore-if-empty="true" ignore-if-null="true"/>
                             <condition-expr field-name="containerId" from-field="parameters.containerId" ignore-if-empty="true" ignore-if-null="true"/>
+                            <condition-expr field-name="lotId" from-field="parameters.lotId" ignore-if-empty="true" ignore-if-null="true"/>
                             <condition-expr field-name="quantityOnHandTotal" operator="greater" value="0.0"/>
                             <condition-expr field-name="locationSeqId" operator="equals" from-field="nullField"/>
                             <condition-expr field-name="statusId" operator="not-equals" value="INV_NS_DEFECTIVE"/>

Modified: ofbiz/branches/jackrabbit20100709/applications/product/script/org/ofbiz/product/inventory/InventoryServices.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/product/script/org/ofbiz/product/inventory/InventoryServices.xml?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/product/script/org/ofbiz/product/inventory/InventoryServices.xml (original)
+++ ofbiz/branches/jackrabbit20100709/applications/product/script/org/ofbiz/product/inventory/InventoryServices.xml Thu Nov  3 17:59:29 2011
@@ -111,7 +111,60 @@ under the License.
 
     <!-- InventoryItem methods -->
     <simple-method method-name="createInventoryItem" short-description="Create an InventoryItem">
-
+        
+        <!-- Create a lot before -->
+        <entity-one value-field="product" entity-name="Product">
+            <field-map from-field="parameters.productId" field-name="productId"/>
+        </entity-one>
+        
+        <!-- Check if this product can or not have a lotId -->
+        <if>
+            <condition>
+                <and>
+                    <if-compare operator="equals" value="Mandatory" field="product.lotIdFilledIn" />
+                    <if-empty field="parameters.lotId" />
+                </and>
+            </condition>
+            <then>
+                <add-error>
+                    <fail-property resource="ProductErrorUiLabels" property="ProductLotIdMandatory"/>
+                </add-error>
+            </then>
+        </if>
+        
+        <if>
+            <condition>
+                <and>
+                    <if-compare operator="equals" value="Forbidden" field="product.lotIdFilledIn" />
+                       <not>
+                           <if-empty field="parameters.lotId" />
+                       </not>
+                </and>
+            </condition>
+            <then>
+                <add-error>
+                    <fail-property resource="ProductErrorUiLabels" property="ProductLotIdForbidden"/>
+                </add-error>
+            </then>
+        </if>
+        
+        <check-errors />
+        
+        <!-- If this InventoryItem is returned by a manufacturing task, don't create a lot -->
+        <if-compare operator="equals" value="N" field="parameters.isReturned">
+            <if-not-empty field="parameters.lotId">
+                  <!-- Check if the lot already exists -->
+                  <entity-and list="lotList" entity-name="Lot">
+                      <field-map field-name="lotId" from-field="parameters.lotId" />
+                  </entity-and>
+                  <if-empty field="lotList">
+                      <make-value value-field="lot" entity-name="Lot"/>
+                      <set field="lot.lotId" from-field="parameters.lotId"/>
+                      <create-value value-field="lot"/>
+                  </if-empty>
+              </if-not-empty>
+          </if-compare>
+          
         <make-value value-field="inventoryItem" entity-name="InventoryItem"/>
         <!-- TODO: make sure availableToPromiseTotal and quantityOnHandTotal are not changed -->
         <set-nonpk-fields map="parameters" value-field="inventoryItem"/>
@@ -618,6 +671,7 @@ under the License.
         <set from-field="parameters.partyId" field="lookupFieldMap.partyId"/>
         <set from-field="parameters.locationSeqId" field="lookupFieldMap.locationSeqId"/>
         <set from-field="parameters.containerId" field="lookupFieldMap.containerId"/>
+        <set from-field="parameters.lotId" field="lookupFieldMap.lotId"/>
         <!-- we might get away with a cache here since real serious errors will occur during the reservation service... but only if we need the speed -->
         <if-compare field="parameters.useCache" operator="equals" value="true" type="Boolean">
             <!-- if caching was requested, don't use an iterator -->

Modified: ofbiz/branches/jackrabbit20100709/applications/product/script/org/ofbiz/shipment/picklist/PicklistServices.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/product/script/org/ofbiz/shipment/picklist/PicklistServices.xml?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/product/script/org/ofbiz/shipment/picklist/PicklistServices.xml (original)
+++ ofbiz/branches/jackrabbit20100709/applications/product/script/org/ofbiz/shipment/picklist/PicklistServices.xml Thu Nov  3 17:59:29 2011
@@ -917,6 +917,208 @@ under the License.
         <find-by-primary-key map="lookupPKMap" value-field="lookedUpValue"/>
         <remove-value value-field="lookedUpValue"/>
     </simple-method>
+    
+    <!-- Service which edit a PicklistItem when a preparator choose a specified lot for one line order
+        This service is called by the request :
+            - editPicklistItem 
+    -->
+    <simple-method method-name="editPicklistItem" short-description="Edit a Picklist Item">
+        <log level="info"><string>Edit a Picklist Item</string></log>
+        
+        <make-value value-field="lookupPKMap" entity-name="PicklistItem"/>
+        <set-pk-fields map="parameters" value-field="lookupPKMap"/>
+        <find-by-primary-key map="lookupPKMap" value-field="picklistItem"/>
+        
+        <!-- Error if the specified quantity is greater than the picklistItem quantity -->
+        <if-compare-field operator="greater" to-field="picklistItem.quantity" field="parameters.quantity" type="Integer">
+            <add-error>
+                <fail-property resource="ProductErrorUiLabels" property="PicklistManageTooMuchQuantity"/>
+            </add-error>
+        </if-compare-field>
+        
+        <!-- In order to check if there is a link between the lot and the productId,
+            we retrieve all the inventoryItems with this lotId ... -->
+        <entity-condition list="inventoryItemList" entity-name="InventoryItem">
+            <condition-expr field-name="lotId" from-field="parameters.lotId" operator="equals"/>
+        </entity-condition>
+        
+        <set value="ko" field="linkProductAndLot"/>
+        
+        <!-- ... and check if one of the inventoryItems have this productId -->
+        <iterate entry="inventoryItem" list="inventoryItemList">
+            <if-compare-field operator="equals" to-field="inventoryItem.productId" field="parameters.productId">
+                <set value="ok" field="linkProductAndLot"/>
+            </if-compare-field>
+        </iterate>
+        
+        <if-compare field="linkProductAndLot" operator="equals" value="ko">
+            <add-error>
+                <fail-property resource="ProductErrorUiLabels" property="PicklistManageNoLinkProductAndLot"/>
+            </add-error>
+        </if-compare>
+        
+        <check-errors />
+        
+        <set field="inputMap.productId" from-field="parameters.productId"/>
+        <set field="inputMap.facilityId" from-field="parameters.facilityId"/>
+        <set field="inputMap.lotId" from-field="parameters.lotId"/>
+        
+        <!-- Check the stock of this lot -->
+        <call-service service-name="getInventoryAvailableByFacility" in-map-name="inputMap">
+           <result-to-field field="quantityOnHandTotal" result-name="quantityOnHandTotal"/>
+           <result-to-field field="availableToPromiseTotal" result-name="availableToPromiseTotal"/>
+        </call-service>
+        
+        <if>
+            <condition>
+                <if-compare-field operator="greater" field="parameters.quantity" to-field="availableToPromiseTotal" type="Integer"/>
+            </condition>
+            <then>
+                <add-error>
+                    <fail-property resource="ProductErrorUiLabels" property="PicklistManageStockLow"/>
+                </add-error>
+            </then>
+        </if>
+        
+        <check-errors />
+        
+           <!-- Retreive the informations about the OrderItemShipGrpInvRes of the edited PicklistItem -->
+           <entity-one value-field="oisgir" entity-name="OrderItemShipGrpInvRes">
+               <field-map from-field="parameters.orderId" field-name="orderId"/>
+               <field-map from-field="parameters.shipGroupSeqId" field-name="shipGroupSeqId"/>
+               <field-map from-field="parameters.orderItemSeqId" field-name="orderItemSeqId"/>
+               <field-map from-field="parameters.inventoryItemId" field-name="inventoryItemId"/>
+           </entity-one>
+           
+           <!-- We remove the edited PicklistItem ... -->
+           <remove-value value-field="picklistItem"/>
+           
+           <!-- ... and its OrderItemShipGrpInvRes -->
+           <set-service-fields map="parameters" to-map="cancelOrderItemShipGrpInvResMap" service-name="cancelOrderItemShipGrpInvRes"/>
+           <call-service service-name="cancelOrderItemShipGrpInvRes" in-map-name="cancelOrderItemShipGrpInvResMap"/>
+           
+           <clear-field field="inputMap"/>
+           
+           <!-- We create new(s) OrderItemShipGrpInvRes with the new InventoryItem (with the specified lot) -->
+           <set from-field="parameters.orderId" field="inputMap.orderId"/>
+           <set from-field="parameters.shipGroupSeqId" field="inputMap.shipGroupSeqId"/>
+           <set from-field="parameters.orderItemSeqId" field="inputMap.orderItemSeqId"/>
+           <set from-field="parameters.productId" field="inputMap.productId"/>
+           <set from-field="parameters.quantity" field="inputMap.quantity"/>
+           <set from-field="parameters.facilityId" field="inputMap.facilityId" />
+           <set value="Y" field="inputMap.requireInventory"/>
+           <set from-field="oisgir.reserveOrderEnumId" field="inputMap.reserveOrderEnumId"/>
+           <set from-field="parameters.lotId" field="inputMap.lotId"/>
+           
+           <call-service service-name="reserveProductInventoryByFacility" in-map-name="inputMap" />
+           
+           <!-- If the new OrderItemShipGrpInvRes don't contains all of the item, we recreate OrderItemShipGrpInvRes
+               with the previous parameters -->
+           <if-compare-field operator="less" field="parameters.quantity" to-field="picklistItem.quantity" type="Integer">
+               <clear-field field="inputMap"/>
+               
+               <set from-field="parameters.orderId" field="inputMap.orderId"/>
+               <set from-field="parameters.shipGroupSeqId" field="inputMap.shipGroupSeqId"/>
+               <set from-field="parameters.orderItemSeqId" field="inputMap.orderItemSeqId"/>
+               <set from-field="parameters.productId" field="inputMap.productId"/>
+               <set from-field="parameters.facilityId" field="inputMap.facilityId" />
+               
+               <if-not-empty field="parameters.oldLotId">
+                   <set from-field="parameters.oldLotId" field="inputMap.lotId" />
+               </if-not-empty>
+               
+               <calculate field="quantity">
+                   <calcop operator="subtract" field="picklistItem.quantity">
+                       <calcop operator="get" field="parameters.quantity"/>
+                   </calcop>
+               </calculate>
+               
+               <set from-field="quantity" field="inputMap.quantity"/>
+               <set value="Y" field="inputMap.requireInventory"/>
+               <set from-field="oisgir.reserveOrderEnumId" field="inputMap.reserveOrderEnumId"/>
+               
+               <call-service service-name="reserveProductInventoryByFacility" in-map-name="inputMap"/>
+           </if-compare-field>
+           
+           <entity-condition list="oisgirs" entity-name="OrderItemShipGrpInvRes">
+               <condition-list>
+                <condition-expr from-field="parameters.orderId" field-name="orderId" operator="equals"/>
+                <condition-expr from-field="parameters.shipGroupSeqId" field-name="shipGroupSeqId" operator="equals"/>
+                <condition-expr from-field="parameters.orderItemSeqId" field-name="orderItemSeqId" operator="equals"/>
+               </condition-list>
+           </entity-condition>
+           
+           <set from-field="picklistItem.picklistBinId" field="picklistBinId"/>
+           
+           <entity-condition list="picklistItemList" entity-name="PicklistItem">
+               <condition-list>
+                <condition-expr from-field="parameters.orderId" field-name="orderId" operator="equals"/>
+                <condition-expr from-field="parameters.shipGroupSeqId" field-name="shipGroupSeqId" operator="equals"/>
+                <condition-expr from-field="parameters.orderItemSeqId" field-name="orderItemSeqId" operator="equals"/>
+                <condition-expr from-field="picklistBinId" field-name="picklistBinId" operator="equals" />
+               </condition-list>
+           </entity-condition>
+           
+           <clear-field field="inputMap"/>
+           
+           <!-- We create the PicklistItem who correspond at the new(s) OrderItemShipGrpInvRes -->
+           <iterate entry="oisgir" list="oisgirs">
+               
+               <!-- actionOnPli can have 3 values :
+                   - new : the picklistItem has never existed and is created by this service
+                   - edit : the picklistItem exists but we need to modify its quantity
+                   - none : the picklistItem exists and this service haven't to touch at this one. -->
+               <set field="actionOnPli" value="new" />
+               
+               <if-not-empty field="oisgir.quantityNotAvailable">
+                   <calculate field="quantity">
+                       <calcop operator="subtract" field="oisgir.quantity">
+                           <calcop operator="get" field="oisgir.quantityNotAvailable"/>
+                       </calcop>
+                   </calculate>
+                   <else>
+                       <set field="quantity" from-field="oisgir.quantity"/>
+                   </else>
+               </if-not-empty>
+               
+               <iterate entry="pli" list="picklistItemList">
+                   <if-compare-field operator="equals" field="pli.inventoryItemId" to-field="oisgir.inventoryItemId">
+                       <if-compare-field operator="equals" field="pli.quantity" to-field="quantity">
+                           <set field="actionOnPli" value="none" />
+                           <else>
+                               <set field="actionOnPli" value="edit" />
+                               <set field="currentPli" value="pli"/>
+                           </else>
+                       </if-compare-field>
+                   </if-compare-field>
+               </iterate>
+               
+               <if-compare operator="equals" value="new" field="actionOnPli">
+                   
+                   <set from-field="oisgir.inventoryItemId" field="inputMap.inventoryItemId" />
+                   <set from-field="oisgir.orderId" field="inputMap.orderId" />
+                   <set from-field="oisgir.orderItemSeqId" field="inputMap.orderItemSeqId" />
+                   <set from-field="picklistBinId" field="inputMap.picklistBinId" />
+                   <set from-field="quantity" field="inputMap.quantity" />
+                   <set from-field="oisgir.shipGroupSeqId" field="inputMap.shipGroupSeqId" />
+                   
+                   <call-service service-name="createPicklistItem" in-map-name="inputMap" />
+               </if-compare>
+               
+               <if-compare operator="equals" value="edit" field="actionOnPli">
+                   <set from-field="oisgir.inventoryItemId" field="inputMap.inventoryItemId" />
+                   <set from-field="oisgir.orderId" field="inputMap.orderId" />
+                   <set from-field="oisgir.orderItemSeqId" field="inputMap.orderItemSeqId" />
+                   <set from-field="picklistBinId" field="inputMap.picklistBinId" />
+                   <set from-field="quantity" field="inputMap.quantity" />
+                   <set from-field="oisgir.shipGroupSeqId" field="inputMap.shipGroupSeqId" />
+                   
+                   <call-service service-name="updatePicklistItem" in-map-name="inputMap" />
+               </if-compare>
+           </iterate>
+        
+    </simple-method>
+    
     <simple-method method-name="setPicklistItemToComplete" short-description="Set the status of a pick list item to completed">
         <check-permission permission="FACILITY" action="_UPDATE">
             <fail-property resource="ProductUiLabels" property="ProductFacilityUpdatePermissionError"/>
@@ -1217,6 +1419,7 @@ under the License.
             <clear-field field="picklistBinInfo"/>
             <get-related-one value-field="picklistBin" relation-name="PrimaryOrderHeader" to-value-field="picklistBinInfo.primaryOrderHeader"/>
             <get-related-one value-field="picklistBin" relation-name="PrimaryOrderItemShipGroup" to-value-field="picklistBinInfo.primaryOrderItemShipGroup"/>
+            <get-related-one value-field="picklistBinInfo.primaryOrderHeader" relation-name="ProductStore" to-value-field="picklistBinInfo.productStore" />
 
             <clear-field field="picklistItemInfoList"/>
             <get-related value-field="picklistBin" relation-name="PicklistItem" list="picklistItemList" use-cache="true"/>

Modified: ofbiz/branches/jackrabbit20100709/applications/product/servicedef/services_facility.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/product/servicedef/services_facility.xml?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/product/servicedef/services_facility.xml (original)
+++ ofbiz/branches/jackrabbit20100709/applications/product/servicedef/services_facility.xml Thu Nov  3 17:59:29 2011
@@ -44,6 +44,7 @@ under the License.
             <exclude field-name="availableToPromiseTotal"/>
             <exclude field-name="quantityOnHandTotal"/>
         </auto-attributes>
+        <attribute name="isReturned" mode="IN" type="String" default-value="N" />
         <override name="inventoryItemTypeId" optional="false"/>
         <override name="productId" optional="false"/>
         <override name="facilityId" optional="false"/>
@@ -164,6 +165,7 @@ under the License.
         <attribute name="productId" type="String" mode="IN" optional="false"/>
         <attribute name="facilityId" type="String" mode="IN" optional="false"/>
         <attribute name="statusId" type="String" mode="IN" optional="true"/>
+        <attribute name="lotId" mode="IN" type="String" optional="true"/>
         <attribute name="quantityOnHandTotal" type="BigDecimal" mode="OUT" optional="false"/>
         <attribute name="availableToPromiseTotal" type="BigDecimal" mode="OUT" optional="false"/>
         <attribute name="useCache" type="Boolean" mode="IN" optional="true"/>
@@ -330,6 +332,7 @@ under the License.
         <attribute name="requireInventory" type="String" mode="IN" optional="false"/>
         <attribute name="reserveOrderEnumId" type="String" mode="IN" optional="false"/>
         <attribute name="sequenceId" type="Long" mode="IN" optional="true"/>
+        <attribute name="lotId" mode="IN" type="String" optional="true" />
         <attribute name="quantityNotReserved" type="BigDecimal" mode="OUT" optional="false"/>
     </service>
     <service name="reserveProductInventoryByFacility" engine="simple"
@@ -350,6 +353,7 @@ under the License.
         <attribute name="sequenceId" type="Long" mode="IN" optional="true"/>
         <attribute name="quantityNotReserved" type="BigDecimal" mode="OUT" optional="false"/>
         <attribute name="priority" type="String" mode="IN"  optional="true"/>
+        <attribute name="lotId" type="String" mode="IN" optional="true" />
     </service>
     <service name="reserveProductInventoryByContainer" engine="simple"
                 location="component://product/script/org/ofbiz/product/inventory/InventoryReserveServices.xml" invoke="reserveProductInventory" auth="true">

Modified: ofbiz/branches/jackrabbit20100709/applications/product/servicedef/services_picklist.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/product/servicedef/services_picklist.xml?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/product/servicedef/services_picklist.xml (original)
+++ ofbiz/branches/jackrabbit20100709/applications/product/servicedef/services_picklist.xml Thu Nov  3 17:59:29 2011
@@ -163,6 +163,16 @@ under the License.
         <description>Delete PicklistItem</description>
         <auto-attributes include="pk" mode="IN" optional="false"/>
     </service>
+    <service name="editPicklistItem" default-entity-name="PicklistItem" engine="simple"
+            location="component://product/script/org/ofbiz/shipment/picklist/PicklistServices.xml" invoke="editPicklistItem" auth="true">
+        <description>Edit PicklistItem</description>
+        <auto-attributes include="pk" mode="IN" optional="false"/>
+        <attribute name="lotId" mode="IN" type="String" optional="false" />
+        <attribute name="quantity" mode="IN" type="BigDecimal" optional="false" />
+        <attribute name="productId" mode="IN" type="String" optional="false" />
+        <attribute name="facilityId" mode="IN" type="String" optional="false" />
+        <attribute name="oldLotId" mode="IN" type="String" optional="true" />
+    </service>
     <service name="setPicklistItemToComplete" default-entity-name="PicklistItem" engine="simple"
             location="component://product/script/org/ofbiz/shipment/picklist/PicklistServices.xml" invoke="setPicklistItemToComplete" auth="true">
         <description>Update PicklistItem's Status to COMPLETE</description>

Modified: ofbiz/branches/jackrabbit20100709/applications/product/webapp/facility/WEB-INF/actions/shipment/WeightPackage.groovy
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/product/webapp/facility/WEB-INF/actions/shipment/WeightPackage.groovy?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/product/webapp/facility/WEB-INF/actions/shipment/WeightPackage.groovy (original)
+++ ofbiz/branches/jackrabbit20100709/applications/product/webapp/facility/WEB-INF/actions/shipment/WeightPackage.groovy Thu Nov  3 17:59:29 2011
@@ -18,6 +18,7 @@
  */
 
 import org.ofbiz.base.util.UtilProperties;
+import org.ofbiz.entity.GenericValue;
 import org.ofbiz.entity.util.EntityUtil;
 import org.ofbiz.entity.condition.EntityCondition;
 import org.ofbiz.order.order.OrderReadHelper;

Modified: ofbiz/branches/jackrabbit20100709/applications/product/webapp/facility/WEB-INF/controller.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/product/webapp/facility/WEB-INF/controller.xml?rev=1197247&r1=1197246&r2=1197247&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/product/webapp/facility/WEB-INF/controller.xml (original)
+++ ofbiz/branches/jackrabbit20100709/applications/product/webapp/facility/WEB-INF/controller.xml Thu Nov  3 17:59:29 2011
@@ -654,6 +654,12 @@ under the License.
         <response name="success" type="view" value="PicklistManage"/>
         <response name="error" type="view" value="PicklistManage"/>
     </request-map>
+    <request-map uri="editPicklistItem">
+        <security https="true" auth="true" />
+        <event type="service" path="" invoke="editPicklistItem"/>
+        <response name="success" type="view" value="PicklistManage"/>
+        <response name="error" type="view" value="PicklistManage"/>
+    </request-map>
 
     <request-map uri="PicklistReport.pdf">
         <security https="true" auth="true"/>
@@ -1346,6 +1352,10 @@ under the License.
         <response name="success" type="request" value="json"/>
         <response name="error" type="request" value="json"/>
     </request-map>
+    <request-map uri="Tracking">
+        <security https="true" auth="true" />
+        <response name="success" type="view" value="Tracking" />
+    </request-map>
     <!-- ================ Lookup Requests ================= -->
     <request-map uri="LookupOrderHeaderAndShipInfo"><security https="true" auth="true"/><response name="success" type="view" value="LookupOrderHeaderAndShipInfo"/></request-map>
     <request-map uri="LookupPurchaseOrderHeaderAndShipInfo"><security https="true" auth="true"/><response name="success" type="view" value="LookupPurchaseOrderHeaderAndShipInfo"/></request-map>
@@ -1461,6 +1471,8 @@ under the License.
     <view-map name="LookupPartyName" type="screen" page="component://party/widget/partymgr/LookupScreens.xml#LookupPartyName"/>
     <view-map name="LookupInventoryItem" type="screen" page="component://product/widget/facility/LookupScreens.xml#LookupInventoryItem"/>
     <view-map name="LookupContent" type="screen" page="component://content/widget/content/ContentScreens.xml#LookupContent"/>
+    
+    <view-map name="Tracking" page="component://product//widget/facility/TrackingScreens.xml#LookingForTracking" type="screen" />
 
     <!-- Shipment Gateway Config -->
     <view-map name="FindShipmentGatewayConfig" page="component://product//widget/facility/ShipmentGatewayConfigScreens.xml#FindShipmentGatewayConfig" type="screen"/>