You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ja...@apache.org on 2015/11/21 09:29:01 UTC

svn commit: r1715486 - in /ofbiz/branches/release14.12: ./ applications/accounting/data/ applications/accounting/servicedef/ applications/accounting/src/org/ofbiz/accounting/invoice/ applications/order/data/ applications/order/servicedef/ applications/...

Author: jacopoc
Date: Sat Nov 21 08:29:01 2015
New Revision: 1715486

URL: http://svn.apache.org/viewvc?rev=1715486&view=rev
Log:
Applied fix from trunk for revision: 1715485 
===

Implemented ability to refund non-physical goods (e.g. services).
Thanks to Akash Jain for the contribution: OFBIZ-6728, OFBIZ-6729, OFBIZ-6730


Modified:
    ofbiz/branches/release14.12/   (props changed)
    ofbiz/branches/release14.12/applications/accounting/data/AccountingTypeData.xml
    ofbiz/branches/release14.12/applications/accounting/servicedef/services_invoice.xml
    ofbiz/branches/release14.12/applications/accounting/src/org/ofbiz/accounting/invoice/InvoiceServices.java
    ofbiz/branches/release14.12/applications/order/data/OrderTypeData.xml
    ofbiz/branches/release14.12/applications/order/servicedef/secas.xml
    ofbiz/branches/release14.12/applications/product/script/org/ofbiz/shipment/shipment/ShipmentServices.xml
    ofbiz/branches/release14.12/applications/product/servicedef/services_shipment.xml

Propchange: ofbiz/branches/release14.12/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Nov 21 08:29:01 2015
@@ -8,4 +8,4 @@
 /ofbiz/branches/json-integration-refactoring:1634077-1635900
 /ofbiz/branches/multitenant20100310:921280-927264
 /ofbiz/branches/release13.07:1547657
-/ofbiz/trunk:1649072,1649083-1649084,1649086,1649090,1649096,1649230,1649238-1649239,1649248,1649272,1649275,1649280-1649281,1649283,1649285-1649286,1649291,1649329,1649331,1649384,1649393,1649666,1649742,1650240,1650348,1650357,1650583,1650642,1650678,1650821,1650882,1650887,1650938,1651593,1652312,1652361,1652638,1652641,1652672,1652688,1652706,1652725,1652731,1652739,1652852,1653248,1653296,1653456,1653597,1653614,1654175,1654273,1654509,1654670,1654672-1654673,1654683-1654684,1654824,1655046,1655668,1655979,1656014,1656185,1656198,1656445,1656983,1657323,1657506-1657507,1657514,1657714,1657790,1657848,1658364,1658662,1658882,1659224,1659965,1660031,1660053,1660389,1660444,1660579,1661303,1661328,1661760,1661778,1661853,1661862,1661873,1661940,1661951,1661977,1662119-1662120,1662361,1662500,1662812,1662919,1663202,1663912,1663979,1664602,1664604,1664696,1665154,1665162,1665535,1666404,1666511,1666633,1666836,1666939,1666949,1666958,1667055,1667253,1667483,1667492,1667774,1668207,
 1668214,1668236,1668246,1668258,1668263,1668265,1668270,1668277,1668314,1668657,1669317,1669588,1672427,1672430,1672846,1672853,1672856,1672862,1672873,1673764,1674447,1674464,1674491,1674496,1674908,1676674,1677123,1677597,1677769-1677770,1678294,1678882,1678911,1679689,1679697,1679709,1679720,1679728,1679732,1679957,1680155,1680288,1680304,1680671,1680675,1680733,1680840,1680881,1682272,1682295,1682415,1682633,1683998,1684094,1686360,1686536,1686545,1686566,1686569,1686574,1686583,1686635,1686651,1686970,1687427,1688772,1690086,1690581,1692357,1692458,1692600,1692604,1693393,1693579,1695017,1696018,1696234,1697590,1697647,1697993,1698259,1698261,1698263,1701164,1701441,1701819,1701825,1701936,1702002,1702548,1702704,1703121,1703586,1703945,1703954,1703965,1703971,1703976-1703977,1703981,1704000,1704014,1704018,1704036,1704043,1704052,1704082,1704140,1704230,1705004,1705329,1705405,1705412,1705417,1705427,1705532,1706159,1706162,1706316,1706531,1706549,1706553,1706561,1706569,17065
 77,1706589,1706591,1706593,1706694,1707837,1707857,1708274,1708341,1708742,1708930,1709117,1710178,1710348,1711513,1712971,1714244,1714410,1714415,1714571,1714657,1715477-1715478
+/ofbiz/trunk:1649072,1649083-1649084,1649086,1649090,1649096,1649230,1649238-1649239,1649248,1649272,1649275,1649280-1649281,1649283,1649285-1649286,1649291,1649329,1649331,1649384,1649393,1649666,1649742,1650240,1650348,1650357,1650583,1650642,1650678,1650821,1650882,1650887,1650938,1651593,1652312,1652361,1652638,1652641,1652672,1652688,1652706,1652725,1652731,1652739,1652852,1653248,1653296,1653456,1653597,1653614,1654175,1654273,1654509,1654670,1654672-1654673,1654683-1654684,1654824,1655046,1655668,1655979,1656014,1656185,1656198,1656445,1656983,1657323,1657506-1657507,1657514,1657714,1657790,1657848,1658364,1658662,1658882,1659224,1659965,1660031,1660053,1660389,1660444,1660579,1661303,1661328,1661760,1661778,1661853,1661862,1661873,1661940,1661951,1661977,1662119-1662120,1662361,1662500,1662812,1662919,1663202,1663912,1663979,1664602,1664604,1664696,1665154,1665162,1665535,1666404,1666511,1666633,1666836,1666939,1666949,1666958,1667055,1667253,1667483,1667492,1667774,1668207,
 1668214,1668236,1668246,1668258,1668263,1668265,1668270,1668277,1668314,1668657,1669317,1669588,1672427,1672430,1672846,1672853,1672856,1672862,1672873,1673764,1674447,1674464,1674491,1674496,1674908,1676674,1677123,1677597,1677769-1677770,1678294,1678882,1678911,1679689,1679697,1679709,1679720,1679728,1679732,1679957,1680155,1680288,1680304,1680671,1680675,1680733,1680840,1680881,1682272,1682295,1682415,1682633,1683998,1684094,1686360,1686536,1686545,1686566,1686569,1686574,1686583,1686635,1686651,1686970,1687427,1688772,1690086,1690581,1692357,1692458,1692600,1692604,1693393,1693579,1695017,1696018,1696234,1697590,1697647,1697993,1698259,1698261,1698263,1701164,1701441,1701819,1701825,1701936,1702002,1702548,1702704,1703121,1703586,1703945,1703954,1703965,1703971,1703976-1703977,1703981,1704000,1704014,1704018,1704036,1704043,1704052,1704082,1704140,1704230,1705004,1705329,1705405,1705412,1705417,1705427,1705532,1706159,1706162,1706316,1706531,1706549,1706553,1706561,1706569,17065
 77,1706589,1706591,1706593,1706694,1707837,1707857,1708274,1708341,1708742,1708930,1709117,1710178,1710348,1711513,1712971,1714244,1714410,1714415,1714571,1714657,1715477-1715478,1715485

Modified: ofbiz/branches/release14.12/applications/accounting/data/AccountingTypeData.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/release14.12/applications/accounting/data/AccountingTypeData.xml?rev=1715486&r1=1715485&r2=1715486&view=diff
==============================================================================
--- ofbiz/branches/release14.12/applications/accounting/data/AccountingTypeData.xml (original)
+++ ofbiz/branches/release14.12/applications/accounting/data/AccountingTypeData.xml Sat Nov 21 08:29:01 2015
@@ -599,6 +599,7 @@ under the License.
     <InvoiceItemTypeMap invoiceTypeId="CUST_RTN_INVOICE" invoiceItemMapKey="RET_WARRANTY_ADJ" invoiceItemTypeId="CRT_WARRANTY_ADJ"/>
     <InvoiceItemTypeMap invoiceTypeId="CUST_RTN_INVOICE" invoiceItemMapKey="RET_MAN_ADJ" invoiceItemTypeId="CRT_MAN_ADJ"/>
     <InvoiceItemTypeMap invoiceTypeId="CUST_RTN_INVOICE" invoiceItemMapKey="RET_MKTG_PKG_ADJ" invoiceItemTypeId="CRT_MKTG_PKG_ADJ"/>
+    <InvoiceItemTypeMap invoiceTypeId="CUST_RTN_INVOICE" invoiceItemMapKey="RET_SPROD_ITEM" invoiceItemTypeId="CRT_SPROD_ITEM"/>
 
     <InvoiceItemTypeMap invoiceTypeId="PURC_RTN_INVOICE" invoiceItemMapKey="RET_FPROD_ITEM" invoiceItemTypeId="SRT_FPROD_ITEM"/>
     <InvoiceItemTypeMap invoiceTypeId="PURC_RTN_INVOICE" invoiceItemMapKey="RET_DPROD_ITEM" invoiceItemTypeId="SRT_DPROD_ITEM"/>

Modified: ofbiz/branches/release14.12/applications/accounting/servicedef/services_invoice.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/release14.12/applications/accounting/servicedef/services_invoice.xml?rev=1715486&r1=1715485&r2=1715486&view=diff
==============================================================================
--- ofbiz/branches/release14.12/applications/accounting/servicedef/services_invoice.xml (original)
+++ ofbiz/branches/release14.12/applications/accounting/servicedef/services_invoice.xml Sat Nov 21 08:29:01 2015
@@ -184,7 +184,7 @@ under the License.
             billItems = List of ShipmentReceipts (for sales return) or ItemIssuance (for purchase return) to use for creating the invoice
         </description>
         <attribute name="returnId" type="String" mode="IN" optional="false"/>
-        <attribute name="billItems" type="List" mode="IN" optional="false"/>
+        <attribute name="billItems" type="List" mode="IN" optional="true"/>
         <attribute name="invoiceId" type="String" mode="OUT" optional="true"/>
     </service>
     <service name="createCommissionInvoices" engine="java"

Modified: ofbiz/branches/release14.12/applications/accounting/src/org/ofbiz/accounting/invoice/InvoiceServices.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/release14.12/applications/accounting/src/org/ofbiz/accounting/invoice/InvoiceServices.java?rev=1715486&r1=1715485&r2=1715486&view=diff
==============================================================================
--- ofbiz/branches/release14.12/applications/accounting/src/org/ofbiz/accounting/invoice/InvoiceServices.java (original)
+++ ofbiz/branches/release14.12/applications/accounting/src/org/ofbiz/accounting/invoice/InvoiceServices.java Sat Nov 21 08:29:01 2015
@@ -1906,6 +1906,39 @@ public class InvoiceServices {
                 invoiceTypeId = "PURC_RTN_INVOICE";
                 description = "Return Invoice for Vendor Return #" + returnId;
             }
+
+            List<GenericValue> returnItems = returnHeader.getRelated("ReturnItem", null, null, false);
+            if (!returnItems.isEmpty()) {
+                for (GenericValue returnItem : returnItems) {
+                    if ("RETURN_COMPLETED".equals(returnItem.getString("statusId"))) {
+                        GenericValue product = returnItem.getRelatedOne("Product", false);
+                        if (!ProductWorker.isPhysical(product)) {
+                            boolean isNonPhysicalItemToReturn = false;
+                            List<GenericValue> returnItemBillings = returnItem.getRelated("ReturnItemBilling", null, null, false);
+
+                            if (!returnItemBillings.isEmpty()) {
+                                GenericValue invoice = EntityUtil.getFirst(returnItemBillings).getRelatedOne("Invoice", false);
+                                if ("INVOICE_CANCELLED".equals(invoice.getString("statusId"))) {
+                                    isNonPhysicalItemToReturn = true;
+                                }
+                            } else {
+                                isNonPhysicalItemToReturn = true;
+                            }
+
+                            if (isNonPhysicalItemToReturn) {
+                                if (UtilValidate.isEmpty(billItems)) {
+                                    billItems = new ArrayList();
+                                }
+
+                                billItems.add(returnItem);
+                            }
+                        }
+                    }
+                }
+            }
+
+            Map<String, Object> results = ServiceUtil.returnSuccess();
+            if (UtilValidate.isNotEmpty(billItems)) {
             // set the invoice data
             Map<String, Object> input = UtilMisc.<String, Object>toMap("invoiceTypeId", invoiceTypeId, "statusId", "INVOICE_IN_PROCESS");
             input.put("partyId", returnHeader.get("toPartyId"));
@@ -1934,15 +1967,20 @@ public class InvoiceServices {
             for (GenericValue item : billItems) {
                 boolean shipmentReceiptFound = false;
                 boolean itemIssuanceFound = false;
+                GenericValue returnItem = null;
+                BigDecimal quantity = BigDecimal.ZERO;
+
                 if ("ShipmentReceipt".equals(item.getEntityName())) {
                     shipmentReceiptFound = true;
                 } else if ("ItemIssuance".equals(item.getEntityName())) {
                     itemIssuanceFound = true;
+                } else if ("ReturnItem".equals(item.getEntityName())) {
+                    quantity = item.getBigDecimal("returnQuantity");
+                    returnItem = item;
                 } else {
                     Debug.logError("Unexpected entity " + item + " of type " + item.getEntityName(), module);
                 }
                 // we need the related return item and product
-                GenericValue returnItem = null;
                 if (shipmentReceiptFound) {
                     returnItem = item.getRelatedOne("ReturnItem", true);
                 } else if (itemIssuanceFound) {
@@ -1963,7 +2001,6 @@ public class InvoiceServices {
                             "AccountingNoKnownInvoiceItemTypeReturnItemType",
                             UtilMisc.toMap("returnItemTypeId", returnItem.getString("returnItemTypeId")), locale));
                 }
-                BigDecimal quantity = BigDecimal.ZERO;
                 if (shipmentReceiptFound) {
                     quantity = item.getBigDecimal("quantityAccepted");
                 } else if (itemIssuanceFound) {
@@ -2138,8 +2175,8 @@ public class InvoiceServices {
             }
 
             // return the invoiceId
-            Map<String, Object> results = ServiceUtil.returnSuccess();
             results.put("invoiceId", invoiceId);
+            }
             return results;
         } catch (GenericServiceException e) {
             Debug.logError(e, errorMsg + e.getMessage(), module);

Modified: ofbiz/branches/release14.12/applications/order/data/OrderTypeData.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/release14.12/applications/order/data/OrderTypeData.xml?rev=1715486&r1=1715485&r2=1715486&view=diff
==============================================================================
--- ofbiz/branches/release14.12/applications/order/data/OrderTypeData.xml (original)
+++ ofbiz/branches/release14.12/applications/order/data/OrderTypeData.xml Sat Nov 21 08:29:01 2015
@@ -327,6 +327,7 @@ under the License.
     <ReturnItemTypeMap returnHeaderTypeId="CUSTOMER_RETURN" returnItemMapKey="RENTAL_ORDER_ITEM" returnItemTypeId="RET_FPROD_ITEM" />
     <ReturnItemTypeMap returnHeaderTypeId="CUSTOMER_RETURN" returnItemMapKey="ASSET_USAGE_OUT_IN" returnItemTypeId="RET_FPROD_ITEM" />
     <ReturnItemTypeMap returnHeaderTypeId="CUSTOMER_RETURN" returnItemMapKey="SERVICE_PRODUCT" returnItemTypeId="RET_SPROD_ITEM"/>
+    <ReturnItemTypeMap returnHeaderTypeId="CUSTOMER_RETURN" returnItemMapKey="SERVICE" returnItemTypeId="RET_SPROD_ITEM"/>
     <ReturnItemTypeMap returnHeaderTypeId="CUSTOMER_RETURN" returnItemMapKey="RAW_MATERIAL" returnItemTypeId="RET_MPROD_ITEM"/>
     <ReturnItemTypeMap returnHeaderTypeId="VENDOR_RETURN" returnItemMapKey="FINISHED_GOOD" returnItemTypeId="RET_FPROD_ITEM"/>
     <ReturnItemTypeMap returnHeaderTypeId="VENDOR_RETURN" returnItemMapKey="MARKETING_PKG_AUTO" returnItemTypeId="RET_FPROD_ITEM"/>

Modified: ofbiz/branches/release14.12/applications/order/servicedef/secas.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/release14.12/applications/order/servicedef/secas.xml?rev=1715486&r1=1715485&r2=1715486&view=diff
==============================================================================
--- ofbiz/branches/release14.12/applications/order/servicedef/secas.xml (original)
+++ ofbiz/branches/release14.12/applications/order/servicedef/secas.xml Sat Nov 21 08:29:01 2015
@@ -251,6 +251,7 @@ under the License.
         <action service="sendReturnCompleteNotification" mode="async" persist="true"/>
         <action service="processSubscriptionReturn" mode="sync"/>
         <action service="createReturnStatus" mode="sync"/>
+        <action service="createInvoiceFromReturn" mode="sync"/>
     </eca>
     <eca service="updateReturnHeader" event="commit">
         <condition field-name="statusId" operator="equals" value="RETURN_CANCELLED"/>

Modified: ofbiz/branches/release14.12/applications/product/script/org/ofbiz/shipment/shipment/ShipmentServices.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/release14.12/applications/product/script/org/ofbiz/shipment/shipment/ShipmentServices.xml?rev=1715486&r1=1715485&r2=1715486&view=diff
==============================================================================
--- ofbiz/branches/release14.12/applications/product/script/org/ofbiz/shipment/shipment/ShipmentServices.xml (original)
+++ ofbiz/branches/release14.12/applications/product/script/org/ofbiz/shipment/shipment/ShipmentServices.xml Sat Nov 21 08:29:01 2015
@@ -333,6 +333,25 @@ under the License.
     </simple-method>
 
     <simple-method method-name="createShipmentAndItemsForReturn" short-description="Create Shipment and ShipmentItems based on ReturnHeader and ReturnItems">
+        <entity-condition entity-name="ReturnItem" list="returnItems">
+            <condition-expr field-name="returnId" operator="equals" from-field="parameters.returnId"/>
+        </entity-condition>
+
+       <!-- The return shipment is created if the return contains one or more physical products -->
+        <set field="isPhysicalProductAvailable" value="false" type="Boolean"/>
+        <iterate entry="returnItem" list="returnItems">
+            <get-related-one value-field="returnItem" relation-name="Product" to-value-field="product"/>
+            <if-not-empty field="product">
+                <call-class-method class-name="org.ofbiz.product.product.ProductWorker" method-name="isPhysical" ret-field="isPhysicalProduct">
+                    <field field="product" type="GenericValue"/>
+                </call-class-method>
+                <if-compare field="isPhysicalProduct" operator="equals" value="true" type="Boolean">
+                    <set field="isPhysicalProductAvailable" value="true" type="Boolean"/>
+                </if-compare>
+            </if-not-empty>
+        </iterate>
+
+        <if-compare field="isPhysicalProductAvailable" operator="equals" value="true" type="Boolean">
         <set-service-fields service-name="createShipmentForReturn" map="parameters" to-map="shipmentCtx"/>
         <call-service service-name="createShipmentForReturn" in-map-name="shipmentCtx">
             <result-to-field result-name="shipmentId"/>
@@ -340,10 +359,18 @@ under the License.
         <check-errors/>
         <log level="info" message="Created new shipment ${shipmentId}"/>
 
-        <entity-condition entity-name="ReturnItem" list="returnItems">
-            <condition-expr field-name="returnId" operator="equals" from-field="parameters.returnId"/>
-        </entity-condition>
         <iterate entry="returnItem" list="returnItems">
+
+            <!-- Shipment items are created only for physical products -->
+            <set field="isPhysicalProduct" value="false" type="Boolean"/>
+            <get-related-one value-field="returnItem" relation-name="Product" to-value-field="product"/>
+            <if-not-empty field="product">
+                <call-class-method class-name="org.ofbiz.product.product.ProductWorker" method-name="isPhysical" ret-field="isPhysicalProduct">
+                    <field field="product" type="GenericValue"/>
+                </call-class-method>
+            </if-not-empty>
+
+            <if-compare field="isPhysicalProduct" operator="equals" value="true" type="Boolean">
             <clear-field field="shipItemCtx"/>
             <set from-field="shipmentId" field="shipItemCtx.shipmentId"/>
             <set from-field="returnItem.productId" field="shipItemCtx.productId"/>
@@ -359,9 +386,11 @@ under the License.
             <set from-field="returnItem.returnItemSeqId" field="shipItemCtx.returnItemSeqId"/>
             <set from-field="returnItem.returnQuantity" field="shipItemCtx.quantity"/>
             <call-service service-name="createReturnItemShipment" in-map-name="shipItemCtx"/>
+            </if-compare>
         </iterate>
 
         <field-to-result field="shipmentId"/>
+        </if-compare>
     </simple-method>
 
     <simple-method method-name="createShipmentAndItemsForVendorReturn" short-description="Create Shipment and ShipmentItems based on primaryReturnId for Vendor return">

Modified: ofbiz/branches/release14.12/applications/product/servicedef/services_shipment.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/release14.12/applications/product/servicedef/services_shipment.xml?rev=1715486&r1=1715485&r2=1715486&view=diff
==============================================================================
--- ofbiz/branches/release14.12/applications/product/servicedef/services_shipment.xml (original)
+++ ofbiz/branches/release14.12/applications/product/servicedef/services_shipment.xml Sat Nov 21 08:29:01 2015
@@ -112,7 +112,7 @@ under the License.
         <description>Create a Return Shipment and ShipmentItems with information from ReturnHeader and ReturnItems</description>
         <permission-service service-name="facilityGenericPermission" main-action="CREATE"/>
         <auto-attributes include="pk" mode="IN" optional="false"/>
-        <attribute name="shipmentId" type="String" mode="OUT" optional="false"/>
+        <attribute name="shipmentId" type="String" mode="OUT" optional="true"/>
     </service>
 
     <service name="createShipmentAndItemsForVendorReturn" default-entity-name="Shipment" engine="simple"