[OFBiz] SVN: r6133 - in trunk/applications/order: data entitydef script/org/ofbiz/order/order servicedef src/org/ofbiz/order/order webapp/ordermgr/WEB-INF/actions/return webapp/ordermgr/return

jaz at svn.ofbiz.org jaz at svn.ofbiz.org
Wed Nov 16 22:56:26 EST 2005


Author: jaz
Date: 2005-11-16 21:56:16 -0600 (Wed, 16 Nov 2005)
New Revision: 6133

Added:
   trunk/applications/order/webapp/ordermgr/return/returnItemInc.ftl
Modified:
   trunk/applications/order/data/OrderTypeData.xml
   trunk/applications/order/entitydef/entitygroup.xml
   trunk/applications/order/entitydef/entitymodel.xml
   trunk/applications/order/script/org/ofbiz/order/order/OrderReturnServices.xml
   trunk/applications/order/servicedef/services_return.xml
   trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java
   trunk/applications/order/webapp/ordermgr/WEB-INF/actions/return/quickReturn.bsh
   trunk/applications/order/webapp/ordermgr/WEB-INF/actions/return/returnItems.bsh
   trunk/applications/order/webapp/ordermgr/return/quickReturn.ftl
   trunk/applications/order/webapp/ordermgr/return/returnHeader.ftl
   trunk/applications/order/webapp/ordermgr/return/returnItems.ftl
Log:
updated to now include adjustments in returns


Modified: trunk/applications/order/data/OrderTypeData.xml
===================================================================
--- trunk/applications/order/data/OrderTypeData.xml	2005-11-16 22:36:54 UTC (rev 6132)
+++ trunk/applications/order/data/OrderTypeData.xml	2005-11-17 03:56:16 UTC (rev 6133)
@@ -167,44 +167,59 @@
     <StatusValidChange condition="" statusId="QUO_APPROVED" statusIdTo="QUO_ORDERED" transitionName="Order Quote"/>
     <StatusValidChange condition="" statusId="QUO_APPROVED" statusIdTo="QUO_REJECTED" transitionName="Reject Quote"/>
 
-    <!-- Return Adjustment Types and mappings to Order Adjustment Types -->
-    <ReturnAdjustmentType description="Promotion" returnAdjustmentTypeId="PROMOTION_ADJUSTMENT"/>
-    <ReturnAdjustmentType description="Replacement" returnAdjustmentTypeId="REPLACE_ADJUSTMENT"/>
-    <ReturnAdjustmentType description="Discount" returnAdjustmentTypeId="DISCOUNT_ADJUSTMENT"/>
-    <ReturnAdjustmentType description="Fee" returnAdjustmentTypeId="FEE"/>
-    <ReturnAdjustmentType description="Miscellaneous Charges" returnAdjustmentTypeId="MISCELLANEOUS_CHARGE"/>
-    <ReturnAdjustmentType description="Sales Tax" returnAdjustmentTypeId="SALES_TAX"/>
-    <ReturnAdjustmentType description="Shipping and Handling" returnAdjustmentTypeId="SHIPPING_CHARGES"/>
-    <ReturnAdjustmentType description="Surcharge" returnAdjustmentTypeId="SURCHARGE_ADJUSTMENT"/>
-    <ReturnAdjustmentType description="Additional Feature" returnAdjustmentTypeId="ADDITIONAL_FEATURE"/>
-    <ReturnAdjustmentType description="Warranty" returnAdjustmentTypeId="WARRANTY_ADJUSTMENT"/>
-    <ReturnAdjustmentType description="Marketing Package Adjustment" returnAdjustmentTypeId="MKTG_PKG_AUTO_ADJUST"/>
-    <OrderReturnAdjustmentType returnAdjustmentTypeId="PROMOTION_ADJUSTMENT" orderAdjustmentTypeId="PROMOTION_ADJUSTMENT"/>
-    <OrderReturnAdjustmentType returnAdjustmentTypeId="REPLACE_ADJUSTMENT" orderAdjustmentTypeId="REPLACE_ADJUSTMENT"/>
-    <OrderReturnAdjustmentType returnAdjustmentTypeId="DISCOUNT_ADJUSTMENT" orderAdjustmentTypeId="DISCOUNT_ADJUSTMENT"/>
-    <OrderReturnAdjustmentType returnAdjustmentTypeId="FEE" orderAdjustmentTypeId="FEE"/>
-    <OrderReturnAdjustmentType returnAdjustmentTypeId="MISCELLANEOUS_CHARGE" orderAdjustmentTypeId="MISCELLANEOUS_CHARGE"/>
-    <OrderReturnAdjustmentType returnAdjustmentTypeId="SALES_TAX" orderAdjustmentTypeId="SALES_TAX"/>
-    <OrderReturnAdjustmentType returnAdjustmentTypeId="SHIPPING_CHARGES" orderAdjustmentTypeId="SHIPPING_CHARGES"/>
-    <OrderReturnAdjustmentType returnAdjustmentTypeId="SURCHARGE_ADJUSTMENT" orderAdjustmentTypeId="SURCHARGE_ADJUSTMENT"/>
-    <OrderReturnAdjustmentType returnAdjustmentTypeId="ADDITIONAL_FEATURE" orderAdjustmentTypeId="ADDITIONAL_FEATURE"/>
-    <OrderReturnAdjustmentType returnAdjustmentTypeId="WARRANTY_ADJUSTMENT" orderAdjustmentTypeId="WARRANTY_ADJUSTMENT"/>
-    <OrderReturnAdjustmentType returnAdjustmentTypeId="MKTG_PKG_AUTO_ADJUST" orderAdjustmentTypeId="MKTG_PKG_AUTO_ADJUST"/>
+    <!-- Return Header Types -->
+    <ReturnHeaderType description="Return from Customer" returnHeaderTypeId="CUSTOMER_RETURN"/>
+    <ReturnHeaderType description="Return to Vendor" returnHeaderTypeId="VENDOR_RETURN"/>  <!-- not supported yet -->
+    
+    <!-- return item types for sales (AR) returns -->
+    <ReturnItemType description="Return Adjustment" returnItemTypeId="RETURN_ADJ" parentTypeId=""/>
+    <ReturnItemType description="Return Promotion" returnItemTypeId="RET_PROMOTION_ADJ" parentTypeId="RETURN_ADJ"/>
+    <ReturnItemType description="Return Discount" returnItemTypeId="RET_DISCOUNT_ADJ" parentTypeId="RETURN_ADJ"/>
+    <ReturnItemType description="Return Fee" returnItemTypeId="RET_FEE" parentTypeId="RETURN_ADJ"/>
+    <ReturnItemType description="Return Miscellaneous Charges" returnItemTypeId="RET_MISC_CHARGE" parentTypeId="RETURN_ADJ"/>
+    <ReturnItemType description="Return Sales Tax" returnItemTypeId="RET_SALES_TAX" parentTypeId="RETURN_ADJ"/>
+    <ReturnItemType description="Return Shipping and Handling" returnItemTypeId="RET_SHIPPING_CHARGES" parentTypeId="RETURN_ADJ"/>
+    <ReturnItemType description="Return Surcharge" returnItemTypeId="RET_SURCHARGE_ADJ" parentTypeId="RETURN_ADJ"/>
+    <ReturnItemType description="Return Additional Feature" returnItemTypeId="RET_ADD_FEATURE" parentTypeId="RETURN_ADJ"/>
+    <ReturnItemType description="Return Warranty" returnItemTypeId="RET_WARRANTY_ADJ" parentTypeId="RETURN_ADJ"/>
 
-    <!-- Return Item Types and mappings to Order Item Types -->
-    <ReturnItemType description="Bulk Item" returnItemTypeId="BULK_RETURN_ITEM"/>
-    <ReturnItemType description="Product Item" returnItemTypeId="PRODUCT_RETURN_ITEM"/>
-    <ReturnItemType description="Work Item" returnItemTypeId="WORK_RETURN_ITEM"/>
-    <ReturnItemType description="Rental Item" returnItemTypeId="RENTAL_RETURN_ITEM"/>
-    <OrderReturnItemType returnItemTypeId="BULK_RETURN_ITEM" orderItemTypeId="BULK_ORDER_ITEM"/>
-    <OrderReturnItemType returnItemTypeId="PRODUCT_RETURN_ITEM" orderItemTypeId="PRODUCT_ORDER_ITEM"/>
-    <OrderReturnItemType returnItemTypeId="WORK_RETURN_ITEM" orderItemTypeId="WORK_ORDER_ITEM"/>
-    <OrderReturnItemType returnItemTypeId="RENTAL_RETURN_ITEM" orderItemTypeId="RENTAL_ORDER_ITEM"/>
+    <ReturnItemType description="Return Item Adjustment" returnItemTypeId="RETURN_ITM_ADJ" parentTypeId=""/>
+    <ReturnItemType description="Return Item Promotion" returnItemTypeId="RITM_PROMOTION_ADJ" parentTypeId="RETURN_ITM_ADJ"/>
+    <ReturnItemType description="Return Item Replacement" returnItemTypeId="RITM_REPLACE_ADJ" parentTypeId="RETURN_ITM_ADJ"/>
+    <ReturnItemType description="Return Item Discount" returnItemTypeId="RITM_DISCOUNT_ADJ" parentTypeId="RETURN_ITM_ADJ"/>
+    <ReturnItemType description="Return Item Fee" returnItemTypeId="RITM_FEE" parentTypeId="RETURN_ITM_ADJ"/>
+    <ReturnItemType description="Return Item Miscellaneous Charges" returnItemTypeId="RITM_MISC_CHARGE" parentTypeId="RETURN_ITM_ADJ"/>
+    <ReturnItemType description="Return Item Sales Tax" returnItemTypeId="RITM_SALES_TAX" parentTypeId="RETURN_ITM_ADJ"/>
+    <ReturnItemType description="Return Item Shipping and Handling" returnItemTypeId="RITM_SHIPPING_CHARGES" parentTypeId="RETURN_ITM_ADJ"/>
+    <ReturnItemType description="Return Item Surcharge" returnItemTypeId="RITM_SURCHARGE_ADJ" parentTypeId="RETURN_ITM_ADJ"/>
+    <ReturnItemType description="Return Item Additional Feature" returnItemTypeId="RITM_ADD_FEATURE" parentTypeId="RETURN_ITM_ADJ"/>
+    <ReturnItemType description="Return Item Warranty" returnItemTypeId="RITM_WARRANTY_ADJ" parentTypeId="RETURN_ITM_ADJ"/>
 
-    <!-- Return Header Types -->
-    <ReturnHeaderType  description="Return from Customer" returnHeaderTypeId="CUSTOMER_RETURN"/>
-    <ReturnHeaderType  description="Return to Vendor" returnHeaderTypeId="VENDOR_RETURN"/>  <!-- not supported yet -->
+    <ReturnItemType description="Return Product Item" returnItemTypeId="RET_PROD_ITEM" parentTypeId=""/>
+    <ReturnItemType description="Return Finished Good Item" returnItemTypeId="RET_FPROD_ITEM" parentTypeId="RET_PROD_ITEM"/>
+    <ReturnItemType description="Return Digital Good Item" returnItemTypeId="RET_DPROD_ITEM" parentTypeId="RET_PROD_ITEM"/>
+    <ReturnItemType description="Return Finished/Digital Good Item" returnItemTypeId="RET_FDPROD_ITEM" parentTypeId="RET_PROD_ITEM"/>
+    <ReturnItemType description="Return Product-Feature Item" returnItemTypeId="RET_PROD_FEATR_ITEM" parentTypeId="RET_PROD_ITEM"/>
+    <ReturnItemType description="Return Service Product Item" returnItemTypeId="RET_SPROD_ITEM" parentTypeId="RET_PROD_ITEM"/>
 
+    <ReturnItemType description="Return Work-Effort Item" returnItemTypeId="RET_WE_ITEM" parentTypeId=""/>
+    <ReturnItemType description="Return Time-Entry Item" returnItemTypeId="RET_TE_ITEM" parentTypeId=""/>
+
+    <!-- maps line items such as order items to invoice item types.  separate mapping for sales and purchase invoices -->
+    <ReturnItemTypeMap returnHeaderTypeId="CUSTOMER_RETURN" returnItemMapKey="FINISHED_GOOD" returnItemTypeId="RET_FPROD_ITEM"/>
+    <ReturnItemTypeMap returnHeaderTypeId="CUSTOMER_RETURN" returnItemMapKey="DIGITAL_GOOD" returnItemTypeId="RET_DPROD_ITEM"/>
+    <ReturnItemTypeMap returnHeaderTypeId="CUSTOMER_RETURN" returnItemMapKey="FINDIG_GOOD" returnItemTypeId="RET_FDPROD_ITEM"/>
+    <ReturnItemTypeMap returnHeaderTypeId="CUSTOMER_RETURN" returnItemMapKey="PROMOTION_ADJUSTMENT" returnItemTypeId="RITM_PROMOTION_ADJ"/>
+    <ReturnItemTypeMap returnHeaderTypeId="CUSTOMER_RETURN" returnItemMapKey="REPLACE_ADJUSTMENT" returnItemTypeId="RITM_REPLACE_ADJ"/>
+    <ReturnItemTypeMap returnHeaderTypeId="CUSTOMER_RETURN" returnItemMapKey="DISCOUNT_ADJUSTMENT" returnItemTypeId="RITM_DISCOUNT_ADJ"/>
+    <ReturnItemTypeMap returnHeaderTypeId="CUSTOMER_RETURN" returnItemMapKey="FEE" returnItemTypeId="RITM_FEE"/>
+    <ReturnItemTypeMap returnHeaderTypeId="CUSTOMER_RETURN" returnItemMapKey="MISCELLANEOUS_CHARGE" returnItemTypeId="RITM_MISC_CHARGE"/>
+    <ReturnItemTypeMap returnHeaderTypeId="CUSTOMER_RETURN" returnItemMapKey="SALES_TAX" returnItemTypeId="RITM_SALES_TAX"/>
+    <ReturnItemTypeMap returnHeaderTypeId="CUSTOMER_RETURN" returnItemMapKey="SHIPPING_CHARGES" returnItemTypeId="RITM_SHIPPING_CHARGES"/>
+    <ReturnItemTypeMap returnHeaderTypeId="CUSTOMER_RETURN" returnItemMapKey="SURCHARGE_ADJUSTMENT" returnItemTypeId="RITM_SURCHARGE_ADJ"/>
+    <ReturnItemTypeMap returnHeaderTypeId="CUSTOMER_RETURN" returnItemMapKey="ADDITIONAL_FEATURE" returnItemTypeId="RITM_ADD_FEATURE"/>
+    <ReturnItemTypeMap returnHeaderTypeId="CUSTOMER_RETURN" returnItemMapKey="WARRANTY_ADJUSTMENT" returnItemTypeId="RITM_WARRANTY_ADJ"/>
+
     <!-- Return Reasons -->
     <ReturnReason sequenceId="01" returnReasonId="RTN_NOT_WANT" description="Did Not Want Item"/>
     <ReturnReason sequenceId="02" returnReasonId="RTN_DEFECTIVE_ITEM" description="Defective Item"/>

Modified: trunk/applications/order/entitydef/entitygroup.xml
===================================================================
--- trunk/applications/order/entitydef/entitygroup.xml	2005-11-16 22:36:54 UTC (rev 6132)
+++ trunk/applications/order/entitydef/entitygroup.xml	2005-11-17 03:56:16 UTC (rev 6133)
@@ -150,18 +150,14 @@
     <!-- ========================================================= -->
 
     <entity-group group="org.ofbiz" entity="ReturnHeader" />
+    <entity-group group="org.ofbiz" entity="ReturnHeaderType" />
     <entity-group group="org.ofbiz" entity="ReturnItem" />
-    <entity-group group="org.ofbiz" entity="ReturnAdjustment" />
+    <entity-group group="org.ofbiz" entity="ReturnItemTypeMap" />
     <entity-group group="org.ofbiz" entity="ReturnItemResponse" />
-    <entity-group group="org.ofbiz" entity="ReturnInventoryItem" />
-    <entity-group group="org.ofbiz" entity="ReturnHeaderType" />
+    <entity-group group="org.ofbiz" entity="ReturnItemType" />
     <entity-group group="org.ofbiz" entity="ReturnReason" />
     <entity-group group="org.ofbiz" entity="ReturnStatus" />
-    <entity-group group="org.ofbiz" entity="ReturnType" />
-    <entity-group group="org.ofbiz" entity="ReturnItemType" />
-    <entity-group group="org.ofbiz" entity="OrderReturnItemType" />
-    <entity-group group="org.ofbiz" entity="ReturnAdjustmentType" />
-    <entity-group group="org.ofbiz" entity="OrderReturnAdjustmentType" />
+    <entity-group group="org.ofbiz" entity="ReturnType" />            
 
     <!-- ========================================================= -->
     <!-- org.ofbiz.order.shoppingcart -->

Modified: trunk/applications/order/entitydef/entitymodel.xml
===================================================================
--- trunk/applications/order/entitydef/entitymodel.xml	2005-11-16 22:36:54 UTC (rev 6132)
+++ trunk/applications/order/entitydef/entitymodel.xml	2005-11-17 03:56:16 UTC (rev 6133)
@@ -1933,6 +1933,17 @@
             <key-map field-name="createdBy" rel-field-name="userLoginId"/>
         </relation>
     </entity>
+    <entity entity-name="ReturnHeaderType"
+            package-name="org.ofbiz.order.return"
+            title="Return Header Type Entity">
+        <field name="returnHeaderTypeId" type="id-ne"></field>
+        <field name="parentTypeId" type="id"></field>
+        <field name="description" type="description"></field>
+        <prim-key field="returnHeaderTypeId"/>
+        <relation type="one" fk-name="RTHEAD_TYPE_PARENT" title="Parent" rel-entity-name="ReturnHeaderType">
+          <key-map field-name="parentTypeId" rel-field-name="returnHeaderTypeId"/>
+        </relation>
+    </entity>
     <entity entity-name="ReturnItem"
             package-name="org.ofbiz.order.return"
             title="Return Item Entity">
@@ -1943,7 +1954,8 @@
         <field name="returnItemTypeId" type="id"></field>  <!-- what is returned: a product, a service, etc. -->
         <field name="description" type="description"></field>
         <field name="orderId" type="id-ne"></field>
-        <field name="orderItemSeqId" type="id-ne"></field>
+        <field name="orderItemSeqId" type="id"></field>
+        <field name="orderAdjustmentId" type="id"></field>
         <field name="statusId" type="id"></field>
         <field name="returnQuantity" type="floating-point"></field>  <!-- promised by the customer -->
         <field name="receivedQuantity" type="floating-point"></field> <!-- actually received from the customer -->
@@ -1973,6 +1985,9 @@
             <key-map field-name="orderId"/>
             <key-map field-name="orderItemSeqId"/>
         </relation>
+        <relation type="one" fk-name="RTN_ITEM_ODADJ" rel-entity-name="OrderAdjustment">
+            <key-map field-name="orderAdjustmentId"/>            
+        </relation>
         <relation type="one" fk-name="RTN_ITEM_STTSIT" rel-entity-name="StatusItem">
             <key-map field-name="statusId"/>
         </relation>
@@ -1985,57 +2000,6 @@
             <key-map field-name="orderItemSeqId"/>
         </relation>
     </entity>
-    <entity entity-name="ReturnAdjustment"
-            package-name="org.ofbiz.return.return"
-            never-cache="true"
-            title="Return Adjustment Entity">
-      <field name="returnAdjustmentId" type="id-ne"></field>
-      <field name="returnAdjustmentTypeId" type="id"></field>
-      <field name="returnId" type="id"></field>
-      <field name="returnItemSeqId" type="id"></field>
-      <field name="returnItemResponseId" type="id"></field> <!-- a return adjustment can have a response record as well -->
-      <field name="comments" type="comment"></field>
-      <field name="description" type="description"></field>
-      <field name="amountAuthorized" type="currency-precise"></field>  <!-- up to this amount can be granted on the return -->
-      <field name="amountIssued" type="currency-precise"></field>  <!-- this amount is issued to the customer -->
-      <field name="primaryGeoId" type="id"><!-- for tax entries this is the primary jurisdiction Geo (the smallest or most local Geo that this tax is for, usually a state/province, perhaps a county or a city) --></field>
-      <field name="secondaryGeoId" type="id"><!-- for tax entries this is the secondary jurisdiction Geo (usually a country, or other Geo that the primary is within) --></field>
-      <field name="taxAuthGeoId" type="id"></field><!-- these taxAuth fields deprecate the primaryGeoId and secondaryGeoId fields and will be used with the newer tax calc stuff -->
-      <field name="taxAuthPartyId" type="id"></field>
-      <field name="overrideGlAccountId" type="id"></field><!-- used to specify the override or actual glAccountId used for the adjustment, avoids problems if configuration changes after initial posting, etc -->
-      <field name="createdDate" type="date-time"></field>
-      <field name="createdByUserLogin" type="id-vlong"></field>
-      <prim-key field="returnAdjustmentId"/>
-      <relation type="one" fk-name="RETURN_ADJ_TYPE" rel-entity-name="ReturnAdjustmentType">
-        <key-map field-name="returnAdjustmentTypeId"/>
-      </relation>
-      <relation type="one" fk-name="RETURN_ADJ_RETHEAD" rel-entity-name="ReturnHeader">
-        <key-map field-name="returnId"/>
-      </relation>
-      <relation type="one" fk-name="RETURN_ADJ_USERL" rel-entity-name="UserLogin">
-        <key-map field-name="createdByUserLogin" rel-field-name="userLoginId"/>
-      </relation>
-      <relation type="one-nofk" rel-entity-name="ReturnItem">
-        <key-map field-name="returnId"/>
-        <key-map field-name="returnItemSeqId"/>
-      </relation>
-      <relation type="one" fk-name="RTN_ADJ_RESP" rel-entity-name="ReturnItemResponse">
-        <key-map field-name="returnItemResponseId"/>
-      </relation>
-      <relation type="one" fk-name="RETURN_ADJ_PRGEO" title="Primary" rel-entity-name="Geo">
-        <key-map field-name="primaryGeoId" rel-field-name="geoId"/>
-      </relation>
-      <relation type="one" fk-name="RETURN_ADJ_SCGEO" title="Secondary" rel-entity-name="Geo">
-        <key-map field-name="secondaryGeoId" rel-field-name="geoId"/>
-      </relation>
-      <relation type="one" fk-name="RETURN_ADJ_TXA" rel-entity-name="TaxAuthority">
-        <key-map field-name="taxAuthGeoId"/>
-        <key-map field-name="taxAuthPartyId"/>
-      </relation>
-      <relation type="one" fk-name="RETURN_ADJ_OGLA" title="Override" rel-entity-name="GlAccount">
-        <key-map field-name="overrideGlAccountId" rel-field-name="glAccountId"/>
-      </relation>
-    </entity>
     <entity entity-name="ReturnItemResponse"
             package-name="org.ofbiz.order.return"
             never-cache="true"
@@ -2062,36 +2026,36 @@
             <key-map field-name="billingAccountId"/>
         </relation>
     </entity>
-    <entity entity-name="ReturnInventoryItem"
-            package-name="org.ofbiz.return.return"
-            title="Return Inventory Item Entity">
-        <description>Associates a ReturnItem with multiple destination InventoryItems or multiple ReturnItems to a single InventoryItem</description>
-        <field name="returnInventoryItemId" type="id-ne"></field>
-        <field name="returnId" type="id-ne"></field>
-        <field name="returnItemSeqId" type="id-ne"></field>
-        <field name="inventoryItemId" type="id-ne"></field>
-        <field name="quantity" type="floating-point"></field>
-        <prim-key field="returnInventoryItemId"/>
-        <relation type="one" fk-name="RII_RET_ITEM" rel-entity-name="ReturnItem">
-          <key-map field-name="returnId"/>
-          <key-map field-name="returnItemSeqId"/>
-        </relation>
-        <relation type="one" fk-name="RII_INV_ITEM" rel-entity-name="InventoryItem">
-          <key-map field-name="inventoryItemId"/>
-        </relation>
-    </entity>
-
-    <entity entity-name="ReturnHeaderType"
+    <entity entity-name="ReturnItemType"
             package-name="org.ofbiz.order.return"
-            title="Return Header Type Entity">
-        <field name="returnHeaderTypeId" type="id-ne"></field>
-        <field name="parentTypeId" type="id-ne"></field>
+            title="Return Item Type Entity">
+        <description>ReturnItemType records the type of a ReturnItem</description>
+        <field name="returnItemTypeId" type="id-ne"></field>
+        <field name="parentTypeId" type="id"></field>
         <field name="description" type="description"></field>
-        <prim-key field="returnHeaderTypeId"/>
-        <relation type="one" fk-name="RTHEAD_TYPE_PARENT" title="Parent" rel-entity-name="ReturnHeaderType">
-          <key-map field-name="parentTypeId" rel-field-name="returnHeaderTypeId"/>
+        <prim-key field="returnItemTypeId"/>
+        <relation type="one" fk-name="RETURN_ITEM_TYPPAR" title="Parent" rel-entity-name="ReturnItemType">
+          <key-map field-name="parentTypeId" rel-field-name="returnItemTypeId"/>
         </relation>
     </entity>
+    <entity entity-name="ReturnItemTypeMap"
+            package-name="org.ofbiz.order.return"
+            title="Return Item Type Map Entity">
+      <field name="returnItemMapKey" type="id-ne"></field>
+      <field name="returnHeaderTypeId" type="id-ne"></field>
+      <field name="returnItemTypeId" type="id-ne"></field>
+      <prim-key field="returnItemMapKey"/>
+      <prim-key field="returnHeaderTypeId"/>
+      <relation type="one" fk-name="RETURN_ITEM_MAP" rel-entity-name="ReturnItemType">
+        <key-map field-name="returnItemTypeId"/>
+      </relation>
+      <relation type="one" fk-name="RETITMMAP_RETTYP" rel-entity-name="ReturnHeaderType">
+        <key-map field-name="returnHeaderTypeId"/>
+      </relation>
+      <relation type="many" rel-entity-name="InvoiceItem">
+        <key-map field-name="invoiceItemTypeId"/>
+      </relation>
+    </entity>
     <entity entity-name="ReturnReason"
             package-name="org.ofbiz.order.return"
             title="Return Reason Entity">
@@ -2128,59 +2092,6 @@
         <field name="sequenceId" type="id"></field>
         <prim-key field="returnTypeId"/>
     </entity>
-    <entity entity-name="ReturnItemType"
-            package-name="org.ofbiz.order.return"
-            title="Return Item Type Entity">
-        <description>ReturnItemType records the type of a ReturnItem</description>
-        <field name="returnItemTypeId" type="id-ne"></field>
-        <field name="parentTypeId" type="id-ne"></field>
-        <field name="description" type="description"></field>
-        <prim-key field="returnItemTypeId"/>
-        <relation type="one" fk-name="RETURN_ITEM_TYPPAR" title="Parent" rel-entity-name="ReturnItemType">
-          <key-map field-name="parentTypeId" rel-field-name="returnItemTypeId"/>
-        </relation>
-    </entity>
-    <entity entity-name="OrderReturnItemType"
-            package-name="org.ofbiz.order.return"
-            title="Order Return Item Type Entity">
-        <description>Associates a ReturnItemType with an OrderItemType</description>
-        <field name="returnItemTypeId" type="id-ne"></field>
-        <field name="orderItemTypeId" type="id-ne"></field>
-        <prim-key field="returnItemTypeId"/>
-        <prim-key field="orderItemTypeId"/>
-        <relation type="one" fk-name="ORRT_ITEM_TYPE_RT" rel-entity-name="ReturnItemType">
-          <key-map field-name="returnItemTypeId"/>
-        </relation>
-        <relation type="one" fk-name="ORRT_ITEM_TYPE_OR" rel-entity-name="OrderItemType">
-          <key-map field-name="orderItemTypeId" rel-field-name="orderItemTypeId"/>
-        </relation>
-    </entity>
-    <entity entity-name="ReturnAdjustmentType"
-            package-name="org.ofbiz.return.return"
-            title="Return Adjustment Type Entity">
-      <field name="returnAdjustmentTypeId" type="id-ne"></field>
-      <field name="parentTypeId" type="id-ne"></field>
-      <field name="description" type="description"></field>
-      <prim-key field="returnAdjustmentTypeId"/>
-      <relation type="one" fk-name="RETURN_ADJ_TYPPAR" title="Parent" rel-entity-name="ReturnAdjustmentType">
-        <key-map field-name="parentTypeId" rel-field-name="returnAdjustmentTypeId"/>
-      </relation>
-    </entity>
-    <entity entity-name="OrderReturnAdjustmentType"
-            package-name="org.ofbiz.order.return"
-            title="Order Return Adjustment Type Entity">
-        <description>Associates a ReturnAdjustmentType with an OrderAdjustmentType</description>
-        <field name="returnAdjustmentTypeId" type="id-ne"></field>
-        <field name="orderAdjustmentTypeId" type="id-ne"></field>
-        <prim-key field="returnAdjustmentTypeId"/>
-        <prim-key field="orderAdjustmentTypeId"/>
-        <relation type="one" fk-name="ORDRET_ADJ_TYPE_RT" rel-entity-name="ReturnAdjustmentType">
-          <key-map field-name="returnAdjustmentTypeId"/>
-        </relation>
-        <relation type="one" fk-name="ORDRET_ADJ_TYPE_OR" rel-entity-name="OrderAdjustmentType">
-          <key-map field-name="orderAdjustmentTypeId" rel-field-name="orderAdjustmentTypeId"/>
-        </relation>
-    </entity>
 
   <!-- ========================================================= -->
   <!-- org.ofbiz.order.shoppingcart -->

Modified: trunk/applications/order/script/org/ofbiz/order/order/OrderReturnServices.xml
===================================================================
--- trunk/applications/order/script/org/ofbiz/order/order/OrderReturnServices.xml	2005-11-16 22:36:54 UTC (rev 6132)
+++ trunk/applications/order/script/org/ofbiz/order/order/OrderReturnServices.xml	2005-11-17 03:56:16 UTC (rev 6133)
@@ -64,6 +64,17 @@
         </if-empty>
         <check-errors/>
 
+        <!-- check and make sure the header type was set -->
+        <if-empty field-name="returnHeaderTypeId" map-name="parameters">
+            <add-error><fail-message message="Return Header Type not defined."/></add-error>
+            <check-errors/>
+        </if-empty>
+
+        <!-- check the needs inventory receive flag -->
+        <if-empty field-name="needsInventoryReceive" map-name="parameters">
+            <set field="parameters.needsInventoryReceive" value="Y"/>     
+        </if-empty>
+
         <make-value value-name="newEntity" entity-name="ReturnHeader"/>
         <set-nonpk-fields map-name="parameters" value-name="newEntity"/>
 
@@ -106,7 +117,7 @@
     </simple-method>
 
     <simple-method method-name="createReturnItem" short-description="Create Return Item">
-        <field-to-field field-name="returnId" map-name="parameters" to-map-name="lookupPKMap"/>
+        <set field="lookupPKMap.returnId" from-field="parameters.returnId"/>
         <find-by-primary-key entity-name="ReturnHeader" map-name="lookupPKMap" value-name="returnHeader"/>
 
         <if>
@@ -122,24 +133,59 @@
         </if>
         <check-errors/>
 
+        <if-empty field-name="returnItemTypeId"  map-name="parameters">
+            <if-not-empty field-name="returnItemMapKey" map-name="parameters">
+                <!-- find the item mapping -->
+            </if-not-empty>
+        </if-empty>
+
+        <if-empty field-name="returnItemTypeId" map-name="parameters">
+            <add-error><fail-message message="Return Item Type is not defined for this item; or no mapping was found."/></add-error>
+            <check-errors/>
+        </if-empty>
+
         <if-compare field-name="returnQuantity" map-name="parameters" operator="equals" value="0" type="Double">
             <add-error><fail-property resource="OrderErrorUiLabels" property="OrderNoReturnQuantityAvailablePreviousReturnsMayExist"/></add-error>
             <check-errors/>
         </if-compare>
 
-        <make-value value-name="itemLookup" entity-name="OrderItem"/>
-        <set-pk-fields map-name="parameters" value-name="itemLookup"/>
-        <if-not-empty field-name="orderItemSeqId" map-name="parameters">
-            <find-by-primary-key entity-name="OrderItem" value-name="orderItem" map-name="itemLookup"/>
+        <!-- setup some default values for protection -->
+        <set field="returnableQuantity" value="0" type="Double"/>
+        <set field="returnablePrice" value="0" type="Double"/>
+
+        <if-not-empty field-name="parameters.orderItemSeqId">
+            <make-value value-name="itemLookup" entity-name="OrderItem"/>
+            <set-pk-fields map-name="parameters" value-name="itemLookup"/>
+            <if-not-empty field-name="parameters.orderItemSeqId">
+                <find-by-primary-key entity-name="OrderItem" value-name="orderItem" map-name="itemLookup"/>
+                <log level="always" message="Return item is an OrderItem - ${orderItem.orderItemSeqId}"/>
+            </if-not-empty>
         </if-not-empty>
 
+        <if-not-empty field-name="parameters.orderAdjustmentId">
+            <make-value value-name="adjLookup" entity-name="OrderAdjustment"/>
+            <set-pk-fields value-name="adjLookup" map-name="parameters"/>
+            <if-not-empty field-name="parameters.orderAdjustmentId">
+                <find-by-primary-key map-name="adjLookup" value-name="orderAdjustment" entity-name="OrderAdjustment"/>
+                <log level="always" message="Return item is an OrderAdjustment - ${orderAdjustment.orderAdjustmentId}"/>
+            </if-not-empty>
+        </if-not-empty>
+
         <if-not-empty field-name="orderItem">
-            <field-to-field field-name="orderItem" to-map-name="serviceContext"/>
+            <set field="serviceContext.orderItem" from-field="orderItem"/>
             <call-service service-name="getReturnableQuantity" in-map-name="serviceContext">
                 <result-to-field result-name="returnableQuantity" field-name="returnableQuantity"/>
                 <result-to-field result-name="returnablePrice" field-name="returnablePrice"/>
             </call-service>
+        </if-not-empty>
 
+        <if-not-empty field-name="orderAdjustment">
+            <set field="returnableQuantity" value="1" type="Double"/>
+            <set field="returnablePrice" from-field="orderAdjustment.amount" type="Double"/>
+            <log level="always" message="set return price to adjustment amount : ${returnablePrice}"/>
+        </if-not-empty>
+
+        <if-compare field-name="returnableQuantity" value="0" operator="greater" type="Double">
             <if>
                 <condition>
                       <not><if-has-permission permission="ORDERMGR" action="_CREATE"/></not>
@@ -153,9 +199,11 @@
                 <add-error><fail-property resource="OrderErrorUiLabels" property="OrderRequestedReturnQuantityNotAvailablePreviousReturnsMayExist"/></add-error>
             </if-compare-field>
 
-            <if-compare-field field-name="returnQuantity" map-name="parameters" operator="greater" to-field-name="quantity" to-map-name="orderItem" type="Double">
-                <add-error><fail-property resource="OrderErrorUiLabels" property="OrderReturnQuantityCannotExceedTheOrderedQuantity"/></add-error>
-            </if-compare-field>
+            <if-not-empty field-name="orderItem">
+                <if-compare-field field-name="returnQuantity" map-name="parameters" operator="greater" to-field-name="quantity" to-map-name="orderItem" type="Double">
+                    <add-error><fail-property resource="OrderErrorUiLabels" property="OrderReturnQuantityCannotExceedTheOrderedQuantity"/></add-error>
+                </if-compare-field>
+            </if-not-empty>
 
             <!-- Workaround for bug: returnPrice=16.99, returnablePrice=16.9894 => OrderReturnPriceCannotExceedThePurchasePrice -->
             <set field="epsilon" value="0.01" type="Double"/>
@@ -181,7 +229,7 @@
                     <check-errors/>
                 </if-compare>
             </else>
-        </if-not-empty>
+        </if-compare>
 
         <make-value value-name="newEntity" entity-name="ReturnItem"/>
         <field-to-field field-name="returnId" map-name="parameters" to-map-name="newEntity"/>

Modified: trunk/applications/order/servicedef/services_return.xml
===================================================================
--- trunk/applications/order/servicedef/services_return.xml	2005-11-16 22:36:54 UTC (rev 6132)
+++ trunk/applications/order/servicedef/services_return.xml	2005-11-17 03:56:16 UTC (rev 6133)
@@ -57,6 +57,9 @@
             <exclude field-name="returnItemSeqId"/>
         </auto-attributes>
         <override name="returnItemResponseId" optional="true"/>
+        <override name="orderAdjustmentId" optional="true"/>
+        <override name="orderItemSeqId" optional="true"/>
+        <override name="receivedQuantity" optional="true"/>
         <override name="statusId" optional="true"/>
         <override name="returnPrice" optional="true"/>
     </service>
@@ -64,9 +67,8 @@
             location="org/ofbiz/order/order/OrderReturnServices.xml" invoke="createReturnItem">
         <description>Create a new ReturnItem</description>
         <implements service="returnItemInterface"/>
-        <attribute name="returnItemType" type="String" mode="IN" optional="false"/>
+        <attribute name="returnItemMapKey" type="String" mode="IN" optional="true"/>
         <attribute name="returnItemSeqId" type="String" mode="OUT" optional="false"/>
-        <override name="orderItemSeqId" optional="true"/>
         <override name="returnReasonId" optional="true"/>
     </service>
     <service name="updateReturnItem" engine="simple"

Modified: trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java
===================================================================
--- trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java	2005-11-16 22:36:54 UTC (rev 6132)
+++ trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java	2005-11-17 03:56:16 UTC (rev 6133)
@@ -23,22 +23,9 @@
  */
 package org.ofbiz.order.order;
 
-import java.sql.Timestamp;
-import java.text.DecimalFormat;
-import java.text.NumberFormat;
-import java.text.ParseException;
-import java.util.*;
-
 import javolution.util.FastMap;
 import javolution.util.FastSet;
-import org.ofbiz.base.util.Debug;
-import org.ofbiz.base.util.GeneralException;
-import org.ofbiz.base.util.GeneralRuntimeException;
-import org.ofbiz.base.util.UtilDateTime;
-import org.ofbiz.base.util.UtilFormatOut;
-import org.ofbiz.base.util.UtilMisc;
-import org.ofbiz.base.util.UtilProperties;
-import org.ofbiz.base.util.UtilValidate;
+import org.ofbiz.base.util.*;
 import org.ofbiz.base.util.collections.ResourceBundleMapWrapper;
 import org.ofbiz.common.DataModelConstants;
 import org.ofbiz.entity.GenericDelegator;
@@ -50,11 +37,7 @@
 import org.ofbiz.entity.condition.EntityOperator;
 import org.ofbiz.entity.util.EntityListIterator;
 import org.ofbiz.entity.util.EntityUtil;
-import org.ofbiz.order.shoppingcart.CartItemModifyException;
-import org.ofbiz.order.shoppingcart.CheckOutHelper;
-import org.ofbiz.order.shoppingcart.ItemNotFoundException;
-import org.ofbiz.order.shoppingcart.ShoppingCart;
-import org.ofbiz.order.shoppingcart.ShoppingCartItem;
+import org.ofbiz.order.shoppingcart.*;
 import org.ofbiz.order.shoppingcart.shipping.ShippingEvents;
 import org.ofbiz.party.contact.ContactHelper;
 import org.ofbiz.party.party.PartyWorker;
@@ -62,13 +45,15 @@
 import org.ofbiz.product.product.ProductWorker;
 import org.ofbiz.product.store.ProductStoreWorker;
 import org.ofbiz.security.Security;
-import org.ofbiz.service.DispatchContext;
-import org.ofbiz.service.GenericServiceException;
-import org.ofbiz.service.LocalDispatcher;
-import org.ofbiz.service.ModelService;
-import org.ofbiz.service.ServiceUtil;
+import org.ofbiz.service.*;
 import org.ofbiz.workflow.WfUtil;
 
+import java.sql.Timestamp;
+import java.text.DecimalFormat;
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.util.*;
+
 /**
  * Order Processing Services
  *
@@ -2744,8 +2729,28 @@
                         return ServiceUtil.returnError((String) serviceResult.get(ModelService.ERROR_MESSAGE));
                     } else {
                         Map returnInfo = new HashMap();
+                        // first the return info (quantity/price)
                         returnInfo.put("returnableQuantity", serviceResult.get("returnableQuantity"));
                         returnInfo.put("returnablePrice", serviceResult.get("returnablePrice"));
+
+                        // now the product type information
+                        String itemTypeKey = "FINISHED_GOOD"; // default item type (same as invoice)
+                        GenericValue product = null;
+                        if (item.get("productId") != null) {
+                            try {
+                                product = item.getRelatedOne("Product");
+                            } catch (GenericEntityException e) {
+                                Debug.logError(e, module);
+                                return ServiceUtil.returnError("Unable to obtain order item information!");
+                            }
+                        }
+                        if (product != null) {
+                            itemTypeKey = product.getString("productTypeId");
+                        } else if (item != null) {
+                            itemTypeKey = item.getString("orderItemTypeId");
+                        }
+                        returnInfo.put("itemTypeKey", itemTypeKey);
+
                         returnable.put(item, returnInfo);
                     }
                 }

Modified: trunk/applications/order/webapp/ordermgr/WEB-INF/actions/return/quickReturn.bsh
===================================================================
--- trunk/applications/order/webapp/ordermgr/WEB-INF/actions/return/quickReturn.bsh	2005-11-16 22:36:54 UTC (rev 6132)
+++ trunk/applications/order/webapp/ordermgr/WEB-INF/actions/return/quickReturn.bsh	2005-11-17 03:56:16 UTC (rev 6133)
@@ -26,6 +26,7 @@
  
 import org.ofbiz.base.util.*;
 import org.ofbiz.entity.*;
+import org.ofbiz.order.order.*;
 import org.ofbiz.party.contact.*;
 
 dispatcher = request.getAttribute("dispatcher");
@@ -45,6 +46,8 @@
 if (orderId != null) {
     order = delegator.findByPrimaryKey("OrderHeader", UtilMisc.toMap("orderId", orderId));
     productStore = order.getRelatedOne("ProductStore");
+    orh = new OrderReadHelper(order);
+    context.put("orh", orh);
     context.put("toPartyId", productStore.getString("payToPartyId"));
 }
 
@@ -54,6 +57,18 @@
 returnReasons = delegator.findAll("ReturnReason", UtilMisc.toList("sequenceId"));
 context.put("returnReasons", returnReasons);
 
+returnItemTypeMap = delegator.findByAnd("ReturnItemTypeMap", UtilMisc.toMap("returnHeaderTypeId", "CUSTOMER_RETURN"));
+iter = returnItemTypeMap.iterator();
+typeMap = new HashMap();
+while (iter.hasNext()) {
+    value = iter.next();
+    typeMap.put(value.getString("returnItemMapKey"), value.getString("returnItemTypeId"));
+}
+context.put("returnItemTypeMap", typeMap);
+
+orderHeaderAdjustments = delegator.findByAnd("OrderAdjustment", UtilMisc.toMap("orderItemSeqId", "_NA_"));
+context.put("orderHeaderAdjustments", orderHeaderAdjustments);
+
 if (orderId != null) {
     Map returnRes = dispatcher.runSync("getReturnableItems", UtilMisc.toMap("orderId", orderId));   
     context.put("returnableItems", returnRes.get("returnableItems"));

Modified: trunk/applications/order/webapp/ordermgr/WEB-INF/actions/return/returnItems.bsh
===================================================================
--- trunk/applications/order/webapp/ordermgr/WEB-INF/actions/return/returnItems.bsh	2005-11-16 22:36:54 UTC (rev 6132)
+++ trunk/applications/order/webapp/ordermgr/WEB-INF/actions/return/returnItems.bsh	2005-11-17 03:56:16 UTC (rev 6133)
@@ -35,6 +35,9 @@
 }
 context.put("returnId", returnId);
 
+orderId = request.getParameter("orderId");
+context.put("orderId", orderId);
+
 returnHeader = delegator.findByPrimaryKey("ReturnHeader", UtilMisc.toMap("returnId", returnId));
 context.put("returnHeader", returnHeader);
 
@@ -47,6 +50,18 @@
 returnReasons = delegator.findAll("ReturnReason", UtilMisc.toList("sequenceId"));
 context.put("returnReasons", returnReasons);
 
+returnItemTypeMap = delegator.findByAnd("ReturnItemTypeMap", UtilMisc.toMap("returnHeaderTypeId", "CUSTOMER_RETURN"));
+iter = returnItemTypeMap.iterator();
+typeMap = new HashMap();
+while (iter.hasNext()) {
+    value = iter.next();
+    typeMap.put(value.getString("returnItemMapKey"), value.getString("returnItemTypeId"));
+}
+context.put("returnItemTypeMap", typeMap);
+
+orderHeaderAdjustments = delegator.findByAnd("OrderAdjustment", UtilMisc.toMap("orderItemSeqId", "_NA_"));
+context.put("orderHeaderAdjustments", orderHeaderAdjustments);
+
 orderId = request.getParameter("orderId");
 if (orderId != null) {    
     Map returnRes = dispatcher.runSync("getReturnableItems", UtilMisc.toMap("orderId", orderId));   

Modified: trunk/applications/order/webapp/ordermgr/return/quickReturn.ftl
===================================================================
--- trunk/applications/order/webapp/ordermgr/return/quickReturn.ftl	2005-11-16 22:36:54 UTC (rev 6132)
+++ trunk/applications/order/webapp/ordermgr/return/quickReturn.ftl	2005-11-17 03:56:16 UTC (rev 6133)
@@ -30,131 +30,51 @@
     </div>
     <div class="screenlet-body">
         <#-- DO NOT CHANGE THE NAME OF THIS FORM, it will break the some of the multi-service pattern features -->
+        <#assign selectAllFormName = "selectAllForm"/>
         <form name="selectAllForm" method="post" action="<@ofbizUrl>makeQuickReturn</@ofbizUrl>">
           <input type="hidden" name="_checkGlobalScope" value="Y"/>
           <input type="hidden" name="_useRowSubmit" value="Y"/>
           <input type="hidden" name="fromPartyId" value="${party.partyId}"/>
           <input type="hidden" name="toPartyId" value="${toPartyId?if_exists}"/>
           <input type="hidden" name="order_id" value="${orderId}"/>
+          <input type="hidden" name="returnHeaderTypeId" value="CUSTOMER_RETURN"/>
           <#if (orderHeader?has_content) && (orderHeader.currencyUom?has_content)>
           <input type="hidden" name="currencyUomId" value="${orderHeader.currencyUom}"/>
           </#if>
+          <#include "returnItemInc.ftl"/>
           <table border="0" width="100%" cellpadding="2" cellspacing="0">
+            <tr><td colspan="8"><hr class="sepbar"></td></tr>
             <tr>
-              <td colspan="7"><div class="head3">Return Item(s) From Order #<a href="<@ofbizUrl>orderview?order_id=${orderId}</@ofbizUrl>" class="buttontext">${orderId}</div></td>
-              <td align="right">
-                <span class="tableheadtext">Select All</span>&nbsp;
-                <input type="checkbox" name="selectAll" value="Y" onclick="javascript:toggleAll(this, 'selectAllForm');"/>
-              </td>
+              <td colspan="8"><div class="head3">Please select a ship from address:</td>
             </tr>
+            <tr><td colspan="8"><hr class="sepbar"></td></tr>
             <tr>
-              <td><div class="tableheadtext">Description</div></td>
-              <td><div class="tableheadtext">Order Qty</div></td>
-              <td><div class="tableheadtext">Return Qty</div></td>
-              <td><div class="tableheadtext">Unit Price</div></td>
-              <td><div class="tableheadtext">Return Price*</div></td>
-              <td><div class="tableheadtext">Return Reason</div></td>
-              <td><div class="tableheadtext">Return Type</div></td>
-              <td align="right"><div class="tableheadtext">Include?</div></td>
+              <td colspan="8">
+                <table cellspacing="1" cellpadding="2" width="100%">
+                  <#list shippingContactMechList as shippingContactMech>
+                    <#assign shippingAddress = shippingContactMech.getRelatedOne("PostalAddress")>
+                    <tr>
+                      <td align="right" width="1%" valign="top" nowrap>
+                        <input type="radio" name="originContactMechId" value="${shippingAddress.contactMechId}"/>
+                      </td>
+                      <td align="left" width="99%" valign="top" nowrap>
+                        <div class="tabletext">
+                          <#if shippingAddress.toName?has_content><b>To:</b>&nbsp;${shippingAddress.toName}<br/></#if>
+                          <#if shippingAddress.attnName?has_content><b>Attn:</b>&nbsp;${shippingAddress.attnName}<br/></#if>
+                          <#if shippingAddress.address1?has_content>${shippingAddress.address1}<br/></#if>
+                          <#if shippingAddress.address2?has_content>${shippingAddress.address2}<br/></#if>
+                          <#if shippingAddress.city?has_content>${shippingAddress.city}</#if>
+                          <#if shippingAddress.stateProvinceGeoId?has_content><br/>${shippingAddress.stateProvinceGeoId}</#if>
+                          <#if shippingAddress.postalCode?has_content><br/>${shippingAddress.postalCode}</#if>
+                          <#if shippingAddress.countryGeoId?has_content><br/>${shippingAddress.countryGeoId}</#if>
+                          <#--<a href="<@ofbizUrl>editcontactmech?DONE_PAGE=checkoutoptions&contactMechId=${shippingAddress.contactMechId}</@ofbizUrl>" class="buttontext">[Update]</a>-->
+                        </div>
+                      </td>
+                    </tr>
+                  </#list>
+                </table>
+              </td>
             </tr>
-            <tr><td colspan="8"><hr class="sepbar"></td></tr>
-            <#if returnableItems?has_content>
-              <#assign rowCount = 0>
-              <#list returnableItems.keySet() as orderItem>
-                <input type="hidden" name="orderId_o_${rowCount}" value="${orderItem.orderId}"/>
-                <input type="hidden" name="orderItemSeqId_o_${rowCount}" value="${orderItem.orderItemSeqId}"/>
-                <input type="hidden" name="description_o_${rowCount}" value="${orderItem.itemDescription?if_exists}"/>
-                <input type="hidden" name="returnItemType_o_${rowCount}" value="ITEM"/>
-
-                <#-- need some order item information -->
-                <#assign orderHeader = orderItem.getRelatedOne("OrderHeader")>
-                <#assign itemCount = orderItem.quantity>
-                <#assign itemPrice = orderItem.unitPrice>
-                <#-- end of order item information -->
-
-                <tr>
-                  <td>
-                    <div class="tabletext">
-                      <#if orderItem.productId?exists>
-                      <b>${orderItem.productId}</b>:&nbsp;
-                      </#if>
-                      ${orderItem.itemDescription}
-                    </div>
-                  </td>
-                  <td align='center'>
-                    <div class="tabletext">${orderItem.quantity?string.number}</div>
-                  </td>
-                  <td>
-                    <input type="text" class="inputBox" size="6" name="returnQuantity_o_${rowCount}" value="${returnableItems.get(orderItem).get("returnableQuantity")}"/>
-                  </td>
-                  <td align='left'>
-                    <div class="tabletext"><@ofbizCurrency amount=orderItem.unitPrice isoCode=orderHeader.currencyUom/></div>
-                  </td>
-                  <td>
-                    <input type="text" class="inputBox" size="8" name="returnPrice_o_${rowCount}" value="${returnableItems.get(orderItem).get("returnablePrice")?string("##0.00")}"/>
-                  </td>
-                  <td>
-                    <select name="returnReasonId_o_${rowCount}" class="selectBox">
-                      <#list returnReasons as reason>
-                      <option value="${reason.returnReasonId}">${reason.description?default(reason.returnReasonId)}</option>
-                      </#list>
-                    </select>
-                  </td>
-                  <td>
-                    <select name="returnTypeId_o_${rowCount}" class="selectBox">
-                      <#list returnTypes as type>
-                      <option value="${type.returnTypeId}">${type.description?default(type.returnTypeId)}</option>
-                      </#list>
-                    </select>
-                  </td>
-                  <td align="right">
-                    <input type="checkbox" name="_rowSubmit_o_${rowCount}" value="Y" onclick="javascript:checkToggle(this, 'selectAllForm');"/>
-                  </td>
-                </tr>
-                <tr><td colspan="8"><hr class="sepbar"></td></tr>
-                <#assign rowCount = rowCount + 1>
-              </#list>
-              <input type="hidden" name="_rowCount" value="${rowCount}"/>
-              <tr>
-                <td colspan="8"><div class="tableheadtext">Please select a ship from address:</td>
-              </tr>
-              <tr><td colspan="8"><hr class="sepbar"></td></tr>
-              <tr>
-                <td colspan="8">
-                  <table cellspacing="1" cellpadding="2" width="100%">
-                    <#list shippingContactMechList as shippingContactMech>
-                      <#assign shippingAddress = shippingContactMech.getRelatedOne("PostalAddress")>
-                      <tr>
-                        <td align="right" width="1%" valign="top" nowrap>
-                          <input type="radio" name="originContactMechId" value="${shippingAddress.contactMechId}"/>
-                        </td>
-                        <td align="left" width="99%" valign="top" nowrap>
-                          <div class="tabletext">
-                            <#if shippingAddress.toName?has_content><b>To:</b>&nbsp;${shippingAddress.toName}<br/></#if>
-                            <#if shippingAddress.attnName?has_content><b>Attn:</b>&nbsp;${shippingAddress.attnName}<br/></#if>
-                            <#if shippingAddress.address1?has_content>${shippingAddress.address1}<br/></#if>
-                            <#if shippingAddress.address2?has_content>${shippingAddress.address2}<br/></#if>
-                            <#if shippingAddress.city?has_content>${shippingAddress.city}</#if>
-                            <#if shippingAddress.stateProvinceGeoId?has_content><br/>${shippingAddress.stateProvinceGeoId}</#if>
-                            <#if shippingAddress.postalCode?has_content><br/>${shippingAddress.postalCode}</#if>
-                            <#if shippingAddress.countryGeoId?has_content><br/>${shippingAddress.countryGeoId}</#if>
-                            <#--<a href="<@ofbizUrl>editcontactmech?DONE_PAGE=checkoutoptions&contactMechId=${shippingAddress.contactMechId}</@ofbizUrl>" class="buttontext">[Update]</a>-->
-                          </div>
-                        </td>
-                      </tr>
-                    </#list>
-                  </table>
-                </td>
-              </tr>
-              <tr><td colspan="8"><hr class="sepbar"></td></tr>
-              <tr>
-                <td colspan="8" align="right">
-                  <a href="javascript:document.selectAllForm.submit();" class="buttontext">Return Selected Item(s)</a>
-                </td>
-              </tr>
-            <#else>
-              <tr><td colspan="8"><div class="tabletext">No returnable items found for order #${orderId}</div></td></tr>
-            </#if>
           </table>
         </form>
     </div>

Modified: trunk/applications/order/webapp/ordermgr/return/returnHeader.ftl
===================================================================
--- trunk/applications/order/webapp/ordermgr/return/returnHeader.ftl	2005-11-16 22:36:54 UTC (rev 6132)
+++ trunk/applications/order/webapp/ordermgr/return/returnHeader.ftl	2005-11-17 03:56:16 UTC (rev 6133)
@@ -47,6 +47,7 @@
 <#if returnHeader?exists>
 <form name="returnhead" method="post" action="<@ofbizUrl>updateReturn</@ofbizUrl>">
 <input type="hidden" name="returnId" value="${returnHeader.returnId}">
+<input type="hidden" name="returnHeaderTypeId" value="CUSTOMER_RETURN"/>
 <input type="hidden" name="currentStatusId" value="${returnHeader.statusId?if_exists}">
 <#else>
 <form name="returnhead" method="post" action="<@ofbizUrl>createReturn</@ofbizUrl>">

Added: trunk/applications/order/webapp/ordermgr/return/returnItemInc.ftl
===================================================================
--- trunk/applications/order/webapp/ordermgr/return/returnItemInc.ftl	2005-11-16 22:36:54 UTC (rev 6132)
+++ trunk/applications/order/webapp/ordermgr/return/returnItemInc.ftl	2005-11-17 03:56:16 UTC (rev 6133)
@@ -0,0 +1,184 @@
+<#--
+ *  Copyright (c) 2001-2005 The Open For Business Project - www.ofbiz.org
+ *
+ *  Permission is hereby granted, free of charge, to any person obtaining a
+ *  copy of this software and associated documentation files (the "Software"),
+ *  to deal in the Software without restriction, including without limitation
+ *  the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ *  and/or sell copies of the Software, and to permit persons to whom the
+ *  Software is furnished to do so, subject to the following conditions:
+ *
+ *  The above copyright notice and this permission notice shall be included
+ *  in all copies or substantial portions of the Software.
+ *
+ *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ *  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ *  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ *  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ *  CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
+ *  OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ *  THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ *@author     Andy Zeneski (jaz at ofbiz.org)
+ *@version    $Rev$
+ *@since      3.5
+-->
+
+
+          <table border="0" width="100%" cellpadding="2" cellspacing="0">
+            <tr>
+              <td colspan="7"><div class="head3">Return Item(s) From Order #<a href="<@ofbizUrl>orderview?order_id=${orderId}</@ofbizUrl>" class="buttontext">${orderId}</div></td>
+              <td align="right">
+                <span class="tableheadtext">Select All</span>&nbsp;
+                <input type="checkbox" name="selectAll" value="Y" onclick="javascript:toggleAll(this, '${selectAllFormName}');"/>
+              </td>
+            </tr>
+            <tr>
+              <td><div class="tableheadtext">Description</div></td>
+              <td><div class="tableheadtext">Order Qty</div></td>
+              <td><div class="tableheadtext">Return Qty</div></td>
+              <td><div class="tableheadtext">Unit Price</div></td>
+              <td><div class="tableheadtext">Return Price*</div></td>
+              <td><div class="tableheadtext">Return Reason</div></td>
+              <td><div class="tableheadtext">Return Type</div></td>
+              <td align="right"><div class="tableheadtext">Include?</div></td>
+            </tr>
+            <tr><td colspan="8"><hr class="sepbar"></td></tr>
+            <#if returnableItems?has_content>
+              <#assign rowCount = 0>
+              <#list returnableItems.keySet() as orderItem>
+                <#assign returnItemType = returnItemTypeMap.get(returnableItems.get(orderItem).get("itemTypeKey"))/>
+                <input type="hidden" name="returnItemTypeId_o_${rowCount}" value="${returnItemType}"/>
+                <input type="hidden" name="orderId_o_${rowCount}" value="${orderItem.orderId}"/>
+                <input type="hidden" name="orderItemSeqId_o_${rowCount}" value="${orderItem.orderItemSeqId}"/>
+                <input type="hidden" name="description_o_${rowCount}" value="${orderItem.itemDescription?if_exists}"/>
+
+                <#-- need some order item information -->
+                <#assign orderHeader = orderItem.getRelatedOne("OrderHeader")>
+                <#assign itemCount = orderItem.quantity>
+                <#assign itemPrice = orderItem.unitPrice>
+                <#-- end of order item information -->
+
+                <tr>
+                  <td>
+                    <div class="tabletext">
+                      <#if orderItem.productId?exists>
+                      <b>${orderItem.productId}</b>:&nbsp;
+                      </#if>
+                      ${orderItem.itemDescription}
+                    </div>
+                  </td>
+                  <td align='center'>
+                    <div class="tabletext">${orderItem.quantity?string.number}</div>
+                  </td>
+                  <td>
+                    <input type="text" class="inputBox" size="6" name="returnQuantity_o_${rowCount}" value="${returnableItems.get(orderItem).get("returnableQuantity")}"/>
+                  </td>
+                  <td align='left'>
+                    <div class="tabletext"><@ofbizCurrency amount=orderItem.unitPrice isoCode=orderHeader.currencyUom/></div>
+                  </td>
+                  <td>
+                    <input type="text" class="inputBox" size="8" name="returnPrice_o_${rowCount}" value="${returnableItems.get(orderItem).get("returnablePrice")?string("##0.00")}"/>
+                  </td>
+                  <td>
+                    <select name="returnReasonId_o_${rowCount}" class="selectBox">
+                      <#list returnReasons as reason>
+                      <option value="${reason.returnReasonId}">${reason.description?default(reason.returnReasonId)}</option>
+                      </#list>
+                    </select>
+                  </td>
+                  <td>
+                    <select name="returnTypeId_o_${rowCount}" class="selectBox">
+                      <#list returnTypes as type>
+                      <option value="${type.returnTypeId}">${type.description?default(type.returnTypeId)}</option>
+                      </#list>
+                    </select>
+                  </td>
+                  <td align="right">
+                    <input type="checkbox" name="_rowSubmit_o_${rowCount}" value="Y" onclick="javascript:checkToggle(this, '${selectAllFormName}');"/>
+                  </td>
+                </tr>
+                <#assign rowCount = rowCount + 1>
+              </#list>
+
+              <tr><td colspan="8"><hr class="sepbar"></td></tr>
+              <tr>
+                <td colspan="8"><div class="head3">Return Order Adjustment(s) From Order #<a href="<@ofbizUrl>orderview?order_id=${orderId}</@ofbizUrl>" class="buttontext">${orderId}</div></td>
+              </tr>
+              <tr><td colspan="8"><hr class="sepbar"></td></tr>
+              <#if orderHeaderAdjustments?has_content>
+                <tr>
+                  <td><div class="tableheadtext">Description</div></td>
+                  <td><div class="tableheadtext">Order Qty</div></td>
+                  <td><div class="tableheadtext">Return Qty</div></td>
+                  <td><div class="tableheadtext">Unit Price</div></td>
+                  <td><div class="tableheadtext">Return Price</div></td>
+                  <td><div class="tableheadtext">Return Reason</div></td>
+                  <td><div class="tableheadtext">Return Type</div></td>
+                  <td align="right"><div class="tableheadtext">Include?</div></td>
+                </tr>
+                <tr><td colspan="8"><hr class="sepbar"></td></tr>
+                <#list orderHeaderAdjustments as adj>
+                  <#assign returnItemType = returnItemTypeMap.get(adj.get("orderAdjustmentTypeId"))/>
+                  <#assign adjustmentType = adj.getRelatedOne("OrderAdjustmentType")/>
+                  <#assign description = adj.description?default(adjustmentType.description)/>
+
+                  <input type="hidden" name="returnItemTypeId_o_${rowCount}" value="${returnItemType}"/>
+                  <input type="hidden" name="orderId_o_${rowCount}" value="${adj.orderId}"/>
+                  <input type="hidden" name="orderAdjustmentId_o_${rowCount}" value="${adj.orderAdjustmentId}"/>
+                  <input type="hidden" name="description_o_${rowCount}" value="${description}"/>
+
+                  <tr>
+                    <td>
+                      <div class="tabletext">
+                        ${description?default("N/A")}
+                      </div>
+                    </td>
+
+                    <td align='center'>
+                      <div class="tabletext">-</div>
+                    </td>
+                    <td>
+                      <div class="tabletext">-</div>
+                      <input type="hidden" name="returnQuantity_o_${rowCount}" value="1"/>
+                    </td>
+                    <td align='left'>
+                      <div class="tabletext"><@ofbizCurrency amount=adj.amount isoCode=orderHeader.currencyUom/></div>
+                    </td>
+                    <td>
+                      <input type="text" class="inputBox" size="8" name="returnPrice_o_${rowCount}" value="${adj.amount?string("##0.00")}"/>
+                    </td>
+                    <td align="center"><div class='tabletext'>-</div></td>
+                    <td>
+                      <select name="returnTypeId_o_${rowCount}" class="selectBox">
+                        <#list returnTypes as type>
+                          <option value="${type.returnTypeId}">${type.description?default(type.returnTypeId)}</option>
+                        </#list>
+                      </select>
+                    </td>
+                    <td align="right">
+                      <input type="checkbox" name="_rowSubmit_o_${rowCount}" value="Y" onclick="javascript:checkToggle(this, '${selectAllFormName}');"/>
+                    </td>
+                  </tr>
+                  <#assign rowCount = rowCount + 1>
+                </#list>
+              <#else>
+                <tr><td colspan="8"><div class="tableheadtext">No adjustments on this order.</div></td></tr>
+              </#if>
+
+              <!-- final row count -->
+              <input type="hidden" name="_rowCount" value="${rowCount}"/>
+
+              <tr><td colspan="8"><hr class="sepbar"></td></tr>
+              <tr>
+                <td colspan="8" align="right">
+                  <a href="javascript:document.${selectAllFormName}.submit();" class="buttontext">Return Selected Item(s)</a>
+                </td>
+              </tr>
+            <#else>
+              <tr><td colspan="8"><div class="tabletext">No returnable items found for order #${orderId}</div></td></tr>
+            </#if>
+            <tr>
+              <td colspan="7"><div class="tabletext">*Price includes tax & adjustments</div></td>
+            </tr>
+          </table>
\ No newline at end of file


Property changes on: trunk/applications/order/webapp/ordermgr/return/returnItemInc.ftl
___________________________________________________________________
Name: svn:mime-type
   + text/plain
Name: svn:keywords
   + "Id Rev Author"
Name: svn:eol-style
   + native

Modified: trunk/applications/order/webapp/ordermgr/return/returnItems.ftl
===================================================================
--- trunk/applications/order/webapp/ordermgr/return/returnItems.ftl	2005-11-16 22:36:54 UTC (rev 6132)
+++ trunk/applications/order/webapp/ordermgr/return/returnItems.ftl	2005-11-17 03:56:16 UTC (rev 6133)
@@ -136,123 +136,11 @@
   </table>
 </form>
 </#if>
-<#else>                            
+<#else>
+<#assign selectAllFormName = "returnItems"/>
 <form name="returnItems" method="post" action="<@ofbizUrl>createReturnItems</@ofbizUrl>">
   <input type="hidden" name="returnId" value="${returnId}">
   <input type="hidden" name="_useRowSubmit" value="Y">
-  <table border='0' width='100%' cellpadding='2' cellspacing='0'>
-    <tr>
-      <td colspan="8"><div class="head3">Return Item(s) From Order #${requestParameters.orderId}</div></td>
-      <td align="right">
-        <span class="tableheadtext">Select All</span>&nbsp;
-        <input type="checkbox" name="selectAll" value="Y" onclick="javascript:toggleAll(this, 'returnItems');">
-      </td>
-    </tr>
-    <tr>
-      <td><div class="tableheadtext">Description</div></td>
-      <td><div class="tableheadtext">Order Qty</div></td>
-      <td><div class="tableheadtext">Return Qty</div></td>
-      <td><div class="tableheadtext">Unit Price</div></td>
-      <td><div class="tableheadtext">Return Price*</div></td>
-      <td><div class="tableheadtext">Return Reason</div></td>
-      <td><div class="tableheadtext">Return Type</div></td>
-      <td>&nbsp;</td>  
-    </tr>
-    <tr><td colspan="8"><hr class="sepbar"></td></tr>
-    <#if returnableItems?has_content>
-      <#assign rowCount = 0>
-      <#list returnableItems.keySet() as orderItem>     
-      <input type="hidden" name="returnItemType_o_${rowCount}" value="ITEM">
-      <input type="hidden" name="returnId_o_${rowCount}" value="${returnId}">
-      <input type="hidden" name="orderId_o_${rowCount}" value="${orderItem.orderId}">
-      <input type="hidden" name="orderItemSeqId_o_${rowCount}" value="${orderItem.orderItemSeqId}">
-      <input type="hidden" name="description_o_${rowCount}" value="${orderItem.itemDescription?if_exists}">
-      <#-- need some order item information -->
-      <#assign orderHeader = orderItem.getRelatedOne("OrderHeader")>
-      <#assign itemCount = orderItem.quantity>
-      <#assign itemPrice = orderItem.unitPrice>
-      <#-- end of order item information -->
-      <tr>       
-        <td>
-          <div class="tabletext">
-            <#if orderItem.productId?exists>
-            <b>${orderItem.productId}</b>:&nbsp;
-            </#if>
-            ${orderItem.itemDescription}
-          </div>
-        </td>
-        <td align='center'>
-          <div class="tabletext">${orderItem.quantity?string.number}</div>
-        </td>        
-        <td>
-          <input type="text" class="inputBox" size="6" name="returnQuantity_o_${rowCount}" value="${returnableItems.get(orderItem).get("returnableQuantity")}">
-        </td>
-        <td align='left'>
-          <div class="tabletext"><@ofbizCurrency amount=orderItem.unitPrice isoCode=orderHeader.currencyUom/></div>
-        </td>
-        <td>
-          <input type="text" class="inputBox" size="8" name="returnPrice_o_${rowCount}" value="${returnableItems.get(orderItem).get("returnablePrice")?string("##0.00")}">
-        </td>  
-        <td>
-          <select name="returnReasonId_o_${rowCount}" class="selectBox">
-            <#list returnReasons as reason>
-            <option value="${reason.returnReasonId}">${reason.description?default(reason.returnReasonId)}</option>
-            </#list>
-          </select>
-        </td>
-        <td>
-          <select name="returnTypeId_o_${rowCount}" class="selectBox">
-            <#list returnTypes as type>
-            <option value="${type.returnTypeId}">${type.description?default(type.returnTypeId)}</option>
-            </#list>
-          </select>
-        </td>        
-        <td align="right">              
-          <input type="checkbox" name="_rowSubmit_o_${rowCount}" value="Y" onclick="javascript:checkToggle(this, 'returnItems');">
-        </td>        
-      </tr>     
-      <tr><td colspan="8"><hr class="sepbar"></td></tr>  
-      <#assign rowCount = rowCount + 1>        
-      </#list>
-
-      <#-- shipping 'refund' -->
-      <input type="hidden" name="returnItemType_o_${rowCount}" value="ADJUSTMENT">
-      <input type="hidden" name="returnId_o_${rowCount}" value="${returnId}">
-      <input type="hidden" name="orderId_o_${rowCount}" value="${requestParameters.orderId}">    
-      <input type="hidden" name="returnQuantity_o_${rowCount}" value="1">      
-      <input type="hidden" name="description_o_${rowCount}" value="Shipping Adjustment">
-      <tr>
-        <td><div class='tabletext'>Shipping Amount</div></td>
-        <td align='center'><div class='tabletext'>-</div></td>
-        <td align='center'><div class='tabletext'>-</div></td>
-        <td><div class='tabletext'>${shippingAmount}</div></td>
-        <td>
-          <input type="text" class="inputBox" size="8" name="returnPrice_o_${rowCount}" value="${shippingAmount?string("##0.00")}">
-        </td>
-        <td align="center"><div class='tabletext'>-</div></td>
-        <td>
-          <select name="returnTypeId_o_${rowCount}" class="selectBox">
-            <#list returnTypes as type>
-            <option value="${type.returnTypeId}">${type.description?default(type.returnTypeId)}</option>
-            </#list>
-          </select>
-        </td>        
-        <td align="right">              
-          <input type="checkbox" name="_rowSubmit_o_${rowCount}" value="Y" onclick="javascript:checkToggle(this, 'returnItems');">
-        </td>        
-      </tr>
-      <tr><td colspan="8"><hr class="sepbar"></td></tr>  
-      <input type="hidden" name="_rowCount" value="${rowCount+1}">
-      <tr>
-        <td colspan="7" align="right">
-          <a href="javascript:document.returnItems.submit();" class="buttontext">Return Selected Item(s)</a>
-        </td>
-      </tr>      
-    <#else>
-      <tr><td colspan="7"><div class="tabletext">No items found for order #${requestParameters.orderId}</div></td></tr>
-    </#if>
-    <tr>
-      <td colspan="7"><div class="tabletext">*Price includes tax & adjustments</div></td>
-  </table>
+  <#include "returnItemInc.ftl"/>
 </form>
 </#if>



More information about the Svn mailing list