From d0d11307d2549697919f3f6d827b7dc20cbcdc09 Mon Sep 17 00:00:00 2001 From: Kasper Fabricius Kristensen <45367945+kasperkristensen@users.noreply.github.com> Date: Tue, 7 Mar 2023 19:43:44 +0100 Subject: [PATCH] fix(admin-ui): Fix use of `expand` parameter on order page (#3383) * Create cuddly-seahorses-thank.md * add integration tests * revert back from master to develop * fix expand * add new integration test * add missing default relations * add missing refunds relation * re work * fix tests * init * fix order page according to fixes to expand * expand shipping on returns * Create .changeset/cuddly-beers-tease.md --------- Co-authored-by: Adrien de Peretti Co-authored-by: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com> --- .changeset/cuddly-beers-tease.md | 6 +++++ .../timeline-events/claim-event/index.tsx | 2 -- .../molecules/timeline-events/exchange.tsx | 24 +++++++++---------- .../components/organisms/timeline/index.tsx | 6 ++--- .../rma-summaries/receive-return-summary.tsx | 8 +++---- .../orders/details/receive-return/index.tsx | 6 ++--- .../orders/details/utils/create-filtering.ts | 12 ++++++++-- .../details/utils/order-returnable-fields.ts | 4 ---- .../utils/use-admin-expand-paramter.ts | 15 ++++++++++++ .../ui/src/hooks/use-build-timeline.tsx | 6 +++-- 10 files changed, 54 insertions(+), 35 deletions(-) create mode 100644 .changeset/cuddly-beers-tease.md delete mode 100644 packages/admin-ui/ui/src/domain/orders/details/utils/order-returnable-fields.ts diff --git a/.changeset/cuddly-beers-tease.md b/.changeset/cuddly-beers-tease.md new file mode 100644 index 0000000000..3a6891e990 --- /dev/null +++ b/.changeset/cuddly-beers-tease.md @@ -0,0 +1,6 @@ +--- +"@medusajs/admin-ui": patch +"@medusajs/admin": patch +--- + +fix(admin-ui): Fix use of `expand` parameter on order page diff --git a/packages/admin-ui/ui/src/components/molecules/timeline-events/claim-event/index.tsx b/packages/admin-ui/ui/src/components/molecules/timeline-events/claim-event/index.tsx index 6ff9fbee28..b07c907d21 100644 --- a/packages/admin-ui/ui/src/components/molecules/timeline-events/claim-event/index.tsx +++ b/packages/admin-ui/ui/src/components/molecules/timeline-events/claim-event/index.tsx @@ -6,7 +6,6 @@ import { import { Fragment } from "react" import CreateFulfillmentModal from "../../../../domain/orders/details/create-fulfillment" import { ReceiveReturnMenu } from "../../../../domain/orders/details/receive-return" -import { orderReturnableFields } from "../../../../domain/orders/details/utils/order-returnable-fields" import useOrdersExpandParam from "../../../../domain/orders/details/utils/use-admin-expand-paramter" import { ClaimEvent } from "../../../../hooks/use-build-timeline" import useNotification from "../../../../hooks/use-notification" @@ -49,7 +48,6 @@ const Claim = ({ event }: Props) => { const { orderRelations } = useOrdersExpandParam() // Orders and returns aren't linked in `medusa-react` so we need to manually refetch the order const { refetch } = useAdminOrder(event.orderId, { - fields: orderReturnableFields, expand: orderRelations, }) diff --git a/packages/admin-ui/ui/src/components/molecules/timeline-events/exchange.tsx b/packages/admin-ui/ui/src/components/molecules/timeline-events/exchange.tsx index 724fe9ef2b..bc8b525b7a 100644 --- a/packages/admin-ui/ui/src/components/molecules/timeline-events/exchange.tsx +++ b/packages/admin-ui/ui/src/components/molecules/timeline-events/exchange.tsx @@ -9,7 +9,6 @@ import React, { useEffect, useState } from "react" import CreateFulfillmentModal from "../../../domain/orders/details/create-fulfillment" import { ReceiveReturnMenu } from "../../../domain/orders/details/receive-return" -import { orderReturnableFields } from "../../../domain/orders/details/utils/order-returnable-fields" import useOrdersExpandParam from "../../../domain/orders/details/utils/use-admin-expand-paramter" import { ExchangeEvent } from "../../../hooks/use-build-timeline" import useNotification from "../../../hooks/use-notification" @@ -39,21 +38,21 @@ type ExchangeStatusProps = { } const ExchangeStatus: React.FC = ({ event }) => { - const divider =
+ const divider =
return ( -
-
+
+
Payment:
{divider} -
+
Return:
{divider} -
+
Fulfillment:
@@ -79,7 +78,6 @@ const Exchange: React.FC = ({ event, refetch }) => { const { orderRelations } = useOrdersExpandParam() const { order } = useAdminOrder(event.orderId, { expand: orderRelations, - fields: orderReturnableFields, }) const notification = useNotification() @@ -197,7 +195,7 @@ const Exchange: React.FC = ({ event, refetch }) => { noNotification: event.noNotification, topNode: getActions(event, actions), children: [ -
+
{event.canceledAt && (
Requested on: @@ -210,7 +208,7 @@ const Exchange: React.FC = ({ event, refetch }) => { {!event.canceledAt && paymentLink} {returnItems} {newItems} -
+
{event.returnStatus === "requested" && ( diff --git a/packages/admin-ui/ui/src/domain/orders/details/utils/create-filtering.ts b/packages/admin-ui/ui/src/domain/orders/details/utils/create-filtering.ts index b947235781..ed47bc3fdd 100644 --- a/packages/admin-ui/ui/src/domain/orders/details/utils/create-filtering.ts +++ b/packages/admin-ui/ui/src/domain/orders/details/utils/create-filtering.ts @@ -4,6 +4,8 @@ export const getAllReturnableItems = ( order: Omit, isClaim: boolean ) => { + console.log(JSON.stringify(order, null, 2)) + let orderItems = order.items.reduce( (map, obj) => map.set(obj.id, { @@ -16,8 +18,10 @@ export const getAllReturnableItems = ( if (order.claims && order.claims.length) { for (const claim of order.claims) { - claim.claim_items = claim.claim_items ?? [] - claimedItems = [...claimedItems, ...claim.claim_items] + if (claim.return_order?.status !== "canceled") { + claim.claim_items = claim.claim_items ?? [] + claimedItems = [...claimedItems, ...claim.claim_items] + } if ( claim.fulfillment_status === "not_fulfilled" && @@ -41,6 +45,10 @@ export const getAllReturnableItems = ( if (!isClaim) { if (order.swaps && order.swaps.length) { for (const swap of order.swaps) { + if (swap.fulfillment_status === "not_fulfilled") { + continue + } + orderItems = swap.additional_items.reduce( (map, obj) => map.set(obj.id, { diff --git a/packages/admin-ui/ui/src/domain/orders/details/utils/order-returnable-fields.ts b/packages/admin-ui/ui/src/domain/orders/details/utils/order-returnable-fields.ts deleted file mode 100644 index 99110297ea..0000000000 --- a/packages/admin-ui/ui/src/domain/orders/details/utils/order-returnable-fields.ts +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Fields paramater used to retrieve an order including its returnable items - */ -export const orderReturnableFields = "returnable_items" diff --git a/packages/admin-ui/ui/src/domain/orders/details/utils/use-admin-expand-paramter.ts b/packages/admin-ui/ui/src/domain/orders/details/utils/use-admin-expand-paramter.ts index ace6a260a5..12af7c0baf 100644 --- a/packages/admin-ui/ui/src/domain/orders/details/utils/use-admin-expand-paramter.ts +++ b/packages/admin-ui/ui/src/domain/orders/details/utils/use-admin-expand-paramter.ts @@ -8,13 +8,28 @@ const orderRelations = [ "discounts.rule", "shipping_methods", "payments", + "items", "fulfillments", "fulfillments.tracking_links", "returns", + "returns.shipping_method", + "returns.shipping_method.tax_lines", + "refunds", "claims", + "claims.claim_items", + "claims.claim_items.item", + "claims.fulfillments", + "claims.return_order", + "claims.additional_items", + "claims.additional_items.variant", + "claims.additional_items.variant.product", "swaps", "swaps.return_order", "swaps.additional_items", + "swaps.additional_items.variant", + "swaps.additional_items.variant.product", + "swaps.fulfillments", + "returnable_items", ] const useOrdersExpandParam = () => { diff --git a/packages/admin-ui/ui/src/hooks/use-build-timeline.tsx b/packages/admin-ui/ui/src/hooks/use-build-timeline.tsx index fadb619384..73de7bd5d5 100644 --- a/packages/admin-ui/ui/src/hooks/use-build-timeline.tsx +++ b/packages/admin-ui/ui/src/hooks/use-build-timeline.tsx @@ -13,7 +13,7 @@ import { useAdminOrderEdits, } from "medusa-react" import { useMemo } from "react" -import { orderReturnableFields } from "../domain/orders/details/utils/order-returnable-fields" +import useOrdersExpandParam from "../domain/orders/details/utils/use-admin-expand-paramter" import { useFeatureFlag } from "../providers/feature-flag-provider" export interface TimelineEvent { @@ -157,8 +157,10 @@ export interface NotificationEvent extends TimelineEvent { } export const useBuildTimeline = (orderId: string) => { + const { orderRelations } = useOrdersExpandParam() + const { order, refetch } = useAdminOrder(orderId, { - fields: orderReturnableFields, + expand: orderRelations, }) const { order_edits: edits } = useAdminOrderEdits({ order_id: orderId })