[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>
- <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> ${shippingAddress.toName}<br/></#if>
+ <#if shippingAddress.attnName?has_content><b>Attn:</b> ${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>:
- </#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> ${shippingAddress.toName}<br/></#if>
- <#if shippingAddress.attnName?has_content><b>Attn:</b> ${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>
+ <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>:
+ </#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>
- <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> </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>:
- </#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