diff --git a/src/orders/components/OrderDetailsPage/OrderDetailsPage.tsx b/src/orders/components/OrderDetailsPage/OrderDetailsPage.tsx index ddaaedb23..9fa2d71f1 100644 --- a/src/orders/components/OrderDetailsPage/OrderDetailsPage.tsx +++ b/src/orders/components/OrderDetailsPage/OrderDetailsPage.tsx @@ -26,6 +26,8 @@ import { OrderStatus } from "../../../types/globalTypes"; import { OrderDetails_order } from "../../types/OrderDetails"; import OrderCustomer from "../OrderCustomer"; import OrderCustomerNote from "../OrderCustomerNote"; +import OrderDraftDetails from "../OrderDraftDetails/OrderDraftDetails"; +import { FormData as OrderDraftDetailsProductsFormData } from "../OrderDraftDetailsProducts"; import OrderFulfilledProductsCard from "../OrderFulfilledProductsCard"; import OrderHistory, { FormData as HistoryFormData } from "../OrderHistory"; import OrderInvoiceList from "../OrderInvoiceList"; @@ -77,6 +79,13 @@ export interface OrderDetailsPageProps extends UserPermissionProps { onNoteAdd(data: HistoryFormData); onProfileView(); onOrderReturn(); + onOrderLineAdd: () => void; + onOrderLineChange: ( + id: string, + data: OrderDraftDetailsProductsFormData + ) => void; + onOrderLineRemove: (id: string) => void; + onShippingMethodEdit(); onInvoiceClick(invoiceId: string); onInvoiceGenerate(); onInvoiceSend(invoiceId: string); @@ -121,6 +130,10 @@ const OrderDetailsPage: React.FC = props => { onInvoiceGenerate, onInvoiceSend, onOrderReturn, + onOrderLineAdd, + onOrderLineChange, + onOrderLineRemove, + onShippingMethodEdit, onSubmit } = props; const classes = useStyles(props); @@ -214,11 +227,25 @@ const OrderDetailsPage: React.FC = props => {
- + {order?.status !== OrderStatus.UNCONFIRMED ? ( + + ) : ( + <> + + + + )} {order?.fulfillments?.map(fulfillment => ( = props => { /> ))} - + {order?.status !== OrderStatus.UNCONFIRMED && ( + + )} = ({ id, params }) => { orderInvoiceSend }) => ( <> - {order?.status !== OrderStatus.DRAFT ? ( - <> - + + navigate(orderReturnPath(id))} + disabled={ + updateMetadataOpts.loading || + updatePrivateMetadataOpts.loading + } + onNoteAdd={variables => + orderAddNote.mutate({ + input: variables, + order: id + }) + } + onBack={handleBack} + order={order} + saveButtonBarState={getMutationState( + updateMetadataOpts.called || + updatePrivateMetadataOpts.called, + updateMetadataOpts.loading || + updatePrivateMetadataOpts.loading, + [ + ...(updateMetadataOpts.data?.deleteMetadata + .errors || []), + ...(updateMetadataOpts.data?.updateMetadata + .errors || []), + ...(updatePrivateMetadataOpts.data + ?.deletePrivateMetadata.errors || []), + ...(updatePrivateMetadataOpts.data + ?.updatePrivateMetadata.errors || []) + ] + )} + shippingMethods={maybe( + () => data.order.availableShippingMethods, + [] + )} + userPermissions={user?.userPermissions || []} + onOrderCancel={() => openModal("cancel")} + onOrderFulfill={() => navigate(orderFulfillUrl(id))} + onFulfillmentCancel={fulfillmentId => + navigate( + orderUrl(id, { + action: "cancel-fulfillment", + id: fulfillmentId + }) ) } - )} - /> - navigate(orderReturnPath(id))} - disabled={ - updateMetadataOpts.loading || - updatePrivateMetadataOpts.loading - } - onNoteAdd={variables => - orderAddNote.mutate({ - input: variables, - order: id - }) - } - onBack={handleBack} - order={order} - saveButtonBarState={getMutationState( - updateMetadataOpts.called || - updatePrivateMetadataOpts.called, - updateMetadataOpts.loading || - updatePrivateMetadataOpts.loading, - [ - ...(updateMetadataOpts.data?.deleteMetadata - .errors || []), - ...(updateMetadataOpts.data?.updateMetadata - .errors || []), - ...(updatePrivateMetadataOpts.data - ?.deletePrivateMetadata.errors || []), - ...(updatePrivateMetadataOpts.data - ?.updatePrivateMetadata.errors || []) - ] - )} - shippingMethods={maybe( - () => data.order.availableShippingMethods, - [] - )} - userPermissions={user?.userPermissions || []} - onOrderCancel={() => openModal("cancel")} - onOrderFulfill={() => navigate(orderFulfillUrl(id))} - onFulfillmentCancel={fulfillmentId => - navigate( - orderUrl(id, { - action: "cancel-fulfillment", - id: fulfillmentId + onFulfillmentTrackingNumberUpdate={fulfillmentId => + navigate( + orderUrl(id, { + action: "edit-fulfillment", + id: fulfillmentId + }) + ) + } + onPaymentCapture={() => openModal("capture")} + onPaymentVoid={() => openModal("void")} + onPaymentRefund={() => navigate(orderRefundUrl(id))} + onProductClick={id => () => + navigate(productUrl(id))} + onBillingAddressEdit={() => + openModal("edit-billing-address") + } + onShippingAddressEdit={() => + openModal("edit-shipping-address") + } + onPaymentPaid={() => openModal("mark-paid")} + onProfileView={() => + navigate(customerUrl(order.user.id)) + } + onInvoiceClick={id => + window.open( + order.invoices.find( + invoice => invoice.id === id + )?.url, + "_blank" + ) + } + onInvoiceGenerate={() => + orderInvoiceRequest.mutate({ + orderId: id }) - ) - } - onFulfillmentTrackingNumberUpdate={fulfillmentId => - navigate( - orderUrl(id, { - action: "edit-fulfillment", - id: fulfillmentId + } + onInvoiceSend={id => + openModal("invoice-send", { id }) + } + onSubmit={handleSubmit} + /> + + fulfillment.status === + FulfillmentStatus.FULFILLED + ) + } + /> + + orderCancel.mutate({ + id }) - ) - } - onPaymentCapture={() => openModal("capture")} - onPaymentVoid={() => openModal("void")} - onPaymentRefund={() => navigate(orderRefundUrl(id))} - onProductClick={id => () => navigate(productUrl(id))} - onBillingAddressEdit={() => - openModal("edit-billing-address") - } - onShippingAddressEdit={() => - openModal("edit-shipping-address") - } - onPaymentPaid={() => openModal("mark-paid")} - onProfileView={() => - navigate(customerUrl(order.user.id)) - } - onInvoiceClick={id => - window.open( - order.invoices.find(invoice => invoice.id === id) - ?.url, - "_blank" - ) - } - onInvoiceGenerate={() => - orderInvoiceRequest.mutate({ - orderId: id - }) - } - onInvoiceSend={id => - openModal("invoice-send", { id }) - } - onSubmit={handleSubmit} - /> - - fulfillment.status === - FulfillmentStatus.FULFILLED - ) - } - /> - - orderCancel.mutate({ - id - }) - } - /> - - orderPaymentMarkAsPaid.mutate({ - id, - transactionReference - }) - } - open={params.action === "mark-paid"} - transactionReference={transactionReference} - handleTransactionReference={({ target }) => - setTransactionReference(target.value) - } - /> - orderVoid.mutate({ id })} - /> - - orderPaymentCapture.mutate({ - ...variables, - id - }) - } - /> - edge.node - ) || [] - } - onConfirm={variables => - orderFulfillmentCancel.mutate({ - id: params.id, - input: variables - }) - } - onClose={closeModal} - /> - fulfillment.id === params.id - )?.trackingNumber - )} - onConfirm={variables => - orderFulfillmentUpdateTracking.mutate({ - id: params.id, - input: { + } + /> + + orderPaymentMarkAsPaid.mutate({ + id, + transactionReference + }) + } + open={params.action === "mark-paid"} + transactionReference={transactionReference} + handleTransactionReference={({ target }) => + setTransactionReference(target.value) + } + /> + orderVoid.mutate({ id })} + /> + + orderPaymentCapture.mutate({ ...variables, - notifyCustomer: true - } - }) - } - onClose={closeModal} - /> - invoice.id === params.id - )} - onClose={closeModal} - onSend={() => - orderInvoiceSend.mutate({ id: params.id }) - } - /> - - ) : ( + id + }) + } + /> + edge.node + ) || [] + } + onConfirm={variables => + orderFulfillmentCancel.mutate({ + id: params.id, + input: variables + }) + } + onClose={closeModal} + /> + fulfillment.id === params.id + )?.trackingNumber + )} + onConfirm={variables => + orderFulfillmentUpdateTracking.mutate({ + id: params.id, + input: { + ...variables, + notifyCustomer: true + } + }) + } + onClose={closeModal} + /> + invoice.id === params.id + )} + onClose={closeModal} + onSend={() => + orderInvoiceSend.mutate({ id: params.id }) + } + /> + + )} + {order?.status === OrderStatus.DRAFT && ( <> = ({ id, params }) => { /> )} + {order?.status === OrderStatus.UNCONFIRMED && ( + <> + + navigate(orderReturnPath(id))} + disabled={ + updateMetadataOpts.loading || + updatePrivateMetadataOpts.loading + } + onNoteAdd={variables => + orderAddNote.mutate({ + input: variables, + order: id + }) + } + onBack={handleBack} + order={order} + onOrderLineAdd={() => openModal("add-order-line")} + onOrderLineChange={(id, data) => + orderLineUpdate.mutate({ + id, + input: data + }) + } + onOrderLineRemove={id => + orderLineDelete.mutate({ id }) + } + onShippingMethodEdit={() => + openModal("edit-shipping") + } + saveButtonBarState={getMutationState( + updateMetadataOpts.called || + updatePrivateMetadataOpts.called, + updateMetadataOpts.loading || + updatePrivateMetadataOpts.loading, + [ + ...(updateMetadataOpts.data?.deleteMetadata + .errors || []), + ...(updateMetadataOpts.data?.updateMetadata + .errors || []), + ...(updatePrivateMetadataOpts.data + ?.deletePrivateMetadata.errors || []), + ...(updatePrivateMetadataOpts.data + ?.updatePrivateMetadata.errors || []) + ] + )} + shippingMethods={maybe( + () => data.order.availableShippingMethods, + [] + )} + userPermissions={user?.userPermissions || []} + onOrderCancel={() => openModal("cancel")} + onOrderFulfill={() => navigate(orderFulfillUrl(id))} + onFulfillmentCancel={fulfillmentId => + navigate( + orderUrl(id, { + action: "cancel-fulfillment", + id: fulfillmentId + }) + ) + } + onFulfillmentTrackingNumberUpdate={fulfillmentId => + navigate( + orderUrl(id, { + action: "edit-fulfillment", + id: fulfillmentId + }) + ) + } + onPaymentCapture={() => openModal("capture")} + onPaymentVoid={() => openModal("void")} + onPaymentRefund={() => navigate(orderRefundUrl(id))} + onProductClick={id => () => navigate(productUrl(id))} + onBillingAddressEdit={() => + openModal("edit-billing-address") + } + onShippingAddressEdit={() => + openModal("edit-shipping-address") + } + onPaymentPaid={() => openModal("mark-paid")} + onProfileView={() => + navigate(customerUrl(order.user.id)) + } + onInvoiceClick={id => + window.open( + order.invoices.find(invoice => invoice.id === id) + ?.url, + "_blank" + ) + } + onInvoiceGenerate={() => + orderInvoiceRequest.mutate({ + orderId: id + }) + } + onInvoiceSend={id => + openModal("invoice-send", { id }) + } + onSubmit={handleSubmit} + /> + + fulfillment.status === + FulfillmentStatus.FULFILLED + ) + } + /> + + orderCancel.mutate({ + id + }) + } + /> + + orderShippingMethodUpdate.mutate({ + id, + input: { + shippingMethod: variables.shippingMethod + } + }) + } + /> + edge.node + )} + selectedChannelId={order?.channel?.id} + onClose={closeModal} + onFetch={variantSearch} + onFetchMore={loadMore} + onSubmit={variants => + orderLinesAdd.mutate({ + id, + input: variants.map(variant => ({ + quantity: 1, + variantId: variant.id + })) + }) + } + /> + + orderPaymentMarkAsPaid.mutate({ + id, + transactionReference + }) + } + open={params.action === "mark-paid"} + transactionReference={transactionReference} + handleTransactionReference={({ target }) => + setTransactionReference(target.value) + } + /> + orderVoid.mutate({ id })} + /> + + orderPaymentCapture.mutate({ + ...variables, + id + }) + } + /> + edge.node + ) || [] + } + onConfirm={variables => + orderFulfillmentCancel.mutate({ + id: params.id, + input: variables + }) + } + onClose={closeModal} + /> + fulfillment.id === params.id + )?.trackingNumber + )} + onConfirm={variables => + orderFulfillmentUpdateTracking.mutate({ + id: params.id, + input: { + ...variables, + notifyCustomer: true + } + }) + } + onClose={closeModal} + /> + invoice.id === params.id + )} + onClose={closeModal} + onSend={() => + orderInvoiceSend.mutate({ id: params.id }) + } + /> + + )}