Skip to content

Commit 7f15d4d

Browse files
CrescenzoRegaLFbrianchandotcom
authored andcommitted
LPD-33234 Make a return via submit modal button instead of using the default bulkAction DataSet pattern
1 parent 137970d commit 7f15d4d

File tree

8 files changed

+229
-168
lines changed

8 files changed

+229
-168
lines changed

modules/apps/commerce/commerce-frontend-js/src/main/resources/META-INF/resources/utilities/eventsDefinitions.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ export const CART_PRODUCT_QUANTITY_CHANGED = 'quantity-changed-from-cart';
1111
export const CLOSE_MODAL = 'close-modal';
1212
export const CLOSE_SIDE_PANEL = 'close-side-panel';
1313
export const CP_INSTANCE_CHANGED = 'product-instance-changed';
14-
1514
export const CP_OPTION_CHANGED = 'product-option-changed';
1615
export const CP_QUANTITY_SELECTOR_CHANGED =
1716
'quantity-changed-from-quantity-selector';
@@ -30,6 +29,7 @@ export const OPEN_SIDE_PANEL = 'open-side-panel';
3029
export const PRODUCT_COMPARISON_TOGGLED = 'product-comparison-toggled';
3130
export const PRODUCT_OPTIONS_CHANGED = 'product-options-changed';
3231
export const PRODUCT_REMOVED_FROM_CART = 'product-removed-from-cart';
32+
export const SELECTED_RETURNABLE_ITEMS = 'selected-returnable-items';
3333
export const SIDE_PANEL_CLOSED = 'side-panel-closed';
3434
export const TOGGLE_ITEM_IN_PRODUCT_COMPARISON = 'toggle-item-in-compare';
3535

modules/apps/commerce/commerce-order-content-web/src/main/java/com/liferay/commerce/order/content/web/internal/display/context/CommerceReturnContentDisplayContext.java

Lines changed: 82 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
import com.liferay.portal.kernel.theme.ThemeDisplay;
6565
import com.liferay.portal.kernel.util.Constants;
6666
import com.liferay.portal.kernel.util.FastDateFormatFactoryUtil;
67+
import com.liferay.portal.kernel.util.HashMapBuilder;
6768
import com.liferay.portal.kernel.util.ListUtil;
6869
import com.liferay.portal.kernel.util.ParamUtil;
6970
import com.liferay.portal.kernel.util.StringUtil;
@@ -78,6 +79,7 @@
7879

7980
import java.util.ArrayList;
8081
import java.util.Collections;
82+
import java.util.HashMap;
8183
import java.util.List;
8284
import java.util.Map;
8385
import java.util.Objects;
@@ -339,30 +341,19 @@ public CreationMenu getCommerceReturnItemCreationMenu() {
339341
commerceReturn.getReturnStatus(),
340342
CommerceReturnConstants.RETURN_STATUS_DRAFT)) {
341343

344+
LiferayPortletResponse liferayPortletResponse =
345+
_cpRequestHelper.getLiferayPortletResponse();
346+
342347
creationMenu.addDropdownItem(
343348
dropdownItem -> {
344349
dropdownItem.setHref(
345-
PortletURLBuilder.create(
346-
PortletProviderUtil.getPortletURL(
347-
_cpRequestHelper.getRequest(),
348-
CommerceOrder.class.getName(),
349-
PortletProvider.Action.VIEW)
350-
).setMVCRenderCommandName(
351-
"/commerce_order_content" +
352-
"/view_returnable_commerce_order_items"
353-
).setParameter(
354-
"commerceOrderId", getCommerceOrderId()
355-
).setParameter(
356-
"commerceOrderItemIds", _getCommerceOrderItemIds()
357-
).setParameter(
358-
"commerceReturnId", commerceReturn.getId()
359-
).setWindowState(
360-
LiferayWindowState.POP_UP
361-
).buildPortletURL());
350+
liferayPortletResponse.getNamespace() +
351+
"editCommerceReturnableItems");
352+
362353
dropdownItem.setLabel(
363354
_language.get(
364355
_cpRequestHelper.getRequest(), "add-return-item"));
365-
dropdownItem.setTarget("modal-lg");
356+
dropdownItem.setTarget("event");
366357
});
367358
}
368359

@@ -595,6 +586,53 @@ public String getRefundSubtotal() throws PortalException {
595586
return _getTotalAmount();
596587
}
597588

589+
public HashMap<String, Object> getReturnableOrderItemsContextParams() {
590+
try {
591+
CommerceReturn commerceReturn = getCommerceReturn();
592+
593+
if (commerceReturn == null) {
594+
return new HashMap<>();
595+
}
596+
597+
return HashMapBuilder.<String, Object>put(
598+
"accountEntryId", commerceReturn.getAccountId()
599+
).put(
600+
"channelGroupId", commerceReturn.getChannelGroupId()
601+
).put(
602+
"channelId", commerceReturn.getChannelId()
603+
).put(
604+
"channelName", commerceReturn.getChannelName()
605+
).put(
606+
"commerceOrderId", commerceReturn.getOrderId()
607+
).put(
608+
"commerceOrderItemIds",
609+
ParamUtil.getLongValues(
610+
_cpRequestHelper.getRequest(), "commerceOrderItemIds")
611+
).put(
612+
"commerceReturnId",
613+
ParamUtil.getLong(
614+
_cpRequestHelper.getRequest(), "commerceReturnId")
615+
).put(
616+
"redirect",
617+
PortletURLBuilder.create(
618+
PortletProviderUtil.getPortletURL(
619+
_cpRequestHelper.getRequest(),
620+
CommerceReturn.class.getName(),
621+
PortletProvider.Action.EDIT)
622+
).setMVCRenderCommandName(
623+
"/commerce_return_content/view_commerce_return"
624+
).setParameter(
625+
"commerceReturnId", ""
626+
).buildString()
627+
).build();
628+
}
629+
catch (PortalException portalException) {
630+
_log.error(portalException);
631+
632+
return new HashMap<>();
633+
}
634+
}
635+
598636
public String getReturnItemsAPIURL() {
599637
long commerceReturnId = getCommerceReturnId();
600638

@@ -726,6 +764,32 @@ public String getUnitsReturned() {
726764
false);
727765
}
728766

767+
public String getViewReturnableCommerceOrderItemsURL()
768+
throws PortalException {
769+
770+
CommerceReturn commerceReturn = getCommerceReturn();
771+
772+
if (commerceReturn == null) {
773+
return StringPool.BLANK;
774+
}
775+
776+
return PortletURLBuilder.create(
777+
PortletProviderUtil.getPortletURL(
778+
_cpRequestHelper.getRequest(), CommerceOrder.class.getName(),
779+
PortletProvider.Action.VIEW)
780+
).setMVCRenderCommandName(
781+
"/commerce_order_content/view_returnable_commerce_order_items"
782+
).setParameter(
783+
"commerceOrderId", getCommerceOrderId()
784+
).setParameter(
785+
"commerceOrderItemIds", _getCommerceOrderItemIds()
786+
).setParameter(
787+
"commerceReturnId", commerceReturn.getId()
788+
).setWindowState(
789+
LiferayWindowState.POP_UP
790+
).buildString();
791+
}
792+
729793
public boolean hasCommentPermission(
730794
DiscussionComment discussionComment, String actionId)
731795
throws PortalException {

modules/apps/commerce/commerce-order-content-web/src/main/resources/META-INF/resources/js/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export {default as commerceOrderOrderTypeModal} from './commerceOrderOrderTypeMo
88
export {default as commerceReturnItemsPropsTransformer} from './commerceReturnItemsPropsTransformer';
99
export {default as commerceReturnPropsTransformer} from './commerceReturnPropsTransformer';
1010
export {default as editCommerceOrder} from './editCommerceOrder';
11+
export {default as editCommerceReturnItem} from './editCommerceReturnItem';
1112
export {default as editCommerceReturn} from './editCommerceReturn';
1213
export {default as InfoBox} from './InfoBox';
1314
export {default as newView} from './newView';
@@ -17,5 +18,5 @@ export {default as preview} from './preview';
1718
export {default as requestQuote} from './requestQuote';
1819
export {default as returnableOrderItemsPropsTransformer} from './returnableOrderItemsPropsTransformer';
1920
export {default as StepTracker} from './StepTracker';
20-
export {default as view} from './view';
2121
export {default as viewCommerceOrderDetailsCTAs} from './viewCommerceOrderDetailsCTAs';
22+
export {default as view} from './view';

modules/apps/commerce/commerce-order-content-web/src/main/resources/META-INF/resources/js/returnableOrderItemsPropsTransformer.js

Lines changed: 6 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -3,112 +3,15 @@
33
* SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
44
*/
55

6-
import {CommerceServiceProvider} from 'commerce-frontend-js';
7-
import {createPortletURL, openToast} from 'frontend-js-web';
6+
import {commerceEvents} from 'commerce-frontend-js';
87

9-
function returnableOrderItemsPropsTransformer({
10-
additionalProps: context,
11-
...props
12-
}) {
8+
function returnableOrderItemsPropsTransformer({...props}) {
139
return {
1410
...props,
15-
onBulkActionItemClick: async ({
16-
selectedData: {items: commerceOrderItems},
17-
}) => {
18-
const CommerceReturnResource = CommerceServiceProvider.ReturnAPI();
19-
20-
const {
21-
accountEntryId,
22-
channelGroupId,
23-
channelId,
24-
channelName,
25-
commerceOrderId,
26-
commerceReturnId,
27-
redirect,
28-
} = context;
29-
30-
const commerceReturn = {
31-
channelGroupId: parseInt(channelGroupId, 10),
32-
channelId: parseInt(channelId, 10),
33-
channelName,
34-
commerceReturnToCommerceReturnItems: commerceOrderItems.map(
35-
({
36-
id: commerceOrderItemId,
37-
price: {finalPrice: amount},
38-
quantity,
39-
}) => ({
40-
amount,
41-
quantity,
42-
r_accountToCommerceReturnItems_accountEntryId: parseInt(
43-
accountEntryId,
44-
10
45-
),
46-
r_commerceOrderItemToCommerceReturnItems_commerceOrderItemId:
47-
commerceOrderItemId,
48-
})
49-
),
50-
r_accountToCommerceReturns_accountEntryId: parseInt(
51-
accountEntryId,
52-
10
53-
),
54-
r_commerceOrderToCommerceReturns_commerceOrderId: parseInt(
55-
commerceOrderId,
56-
10
57-
),
58-
};
59-
60-
if (parseInt(commerceReturnId, 10)) {
61-
return CommerceReturnResource.updateItemById(
62-
commerceReturnId,
63-
commerceReturn
64-
)
65-
.then((response) => {
66-
window.top.location.href = createPortletURL(redirect, {
67-
commerceReturnId: response.id,
68-
});
69-
70-
openToast({
71-
message: Liferay.Language.get(
72-
'your-request-completed-successfully'
73-
),
74-
type: 'success',
75-
});
76-
})
77-
.catch((error) => {
78-
openToast({
79-
message:
80-
error.message ||
81-
Liferay.Language.get(
82-
'an-unexpected-error-occurred'
83-
),
84-
type: 'danger',
85-
});
86-
});
87-
}
88-
89-
return CommerceReturnResource.createItem(commerceReturn)
90-
.then((response) => {
91-
window.top.location.href = createPortletURL(redirect, {
92-
commerceReturnId: response.id,
93-
});
94-
95-
openToast({
96-
message: Liferay.Language.get(
97-
'your-request-completed-successfully'
98-
),
99-
type: 'success',
100-
});
101-
})
102-
.catch((error) => {
103-
openToast({
104-
message:
105-
error.message ||
106-
Liferay.Language.get(
107-
'an-unexpected-error-occurred'
108-
),
109-
type: 'danger',
110-
});
111-
});
11+
onSelectedItemsChange: (selectedItems) => {
12+
window.top.Liferay.fire(commerceEvents.SELECTED_RETURNABLE_ITEMS, {
13+
selectedItems,
14+
});
11215
},
11316
};
11417
}

0 commit comments

Comments
 (0)