import AppHeader from "@saleor/components/AppHeader"; import CardSpacer from "@saleor/components/CardSpacer"; import Container from "@saleor/components/Container"; import Grid from "@saleor/components/Grid"; import PageHeader from "@saleor/components/PageHeader"; import { OrderErrorFragment } from "@saleor/fragments/types/OrderErrorFragment"; import { SubmitPromise } from "@saleor/hooks/useForm"; import { renderCollection } from "@saleor/misc"; import { OrderRefundData_order } from "@saleor/orders/types/OrderRefundData"; import { FulfillmentStatus } from "@saleor/types/globalTypes"; import React from "react"; import { useIntl } from "react-intl"; import OrderRefund from "../OrderRefund"; import OrderRefundFulfilledProducts from "../OrderRefundFulfilledProducts"; import OrderRefundAmount from "../OrderRefundReturnAmount"; import { getMiscellaneousAmountValues, getRefundProductsAmountValues } from "../OrderRefundReturnAmount/utils"; import OrderRefundUnfulfilledProducts from "../OrderRefundUnfulfilledProducts"; import OrderRefundForm, { OrderRefundSubmitData, OrderRefundType } from "./form"; export const refundFulfilledStatuses = [ FulfillmentStatus.FULFILLED, FulfillmentStatus.RETURNED ]; export interface OrderRefundPageProps { order: OrderRefundData_order; defaultType?: OrderRefundType; disabled: boolean; errors: OrderErrorFragment[]; onBack: () => void; onSubmit: (data: OrderRefundSubmitData) => SubmitPromise; } const OrderRefundPage: React.FC = props => { const { order, defaultType = OrderRefundType.PRODUCTS, disabled, errors = [], onBack, onSubmit } = props; const intl = useIntl(); const unfulfilledLines = order?.lines.filter( line => line.quantity !== line.quantityFulfilled ); const fulfilledFulfillemnts = order?.fulfillments.filter(({ status }) => refundFulfilledStatuses.includes(status) ) || []; return ( {({ data, handlers, change, submit }) => { const isProductRefund = data.type === OrderRefundType.PRODUCTS; return ( {order?.number ? intl.formatMessage( { defaultMessage: "Order #{orderNumber}", description: "page header with order number" }, { orderNumber: order.number } ) : intl.formatMessage({ defaultMessage: "Order", description: "page header" })}
{isProductRefund && ( <> {unfulfilledLines?.length > 0 && ( <> )} {renderCollection(fulfilledFulfillemnts, fulfillment => ( handlers.setMaximalRefundedFulfilledProductQuantities( fulfillment?.id ) } /> ))} )}
); }}
); }; OrderRefundPage.displayName = "OrderRefundPage"; export default OrderRefundPage;