From d44f293e2d276073af8228b060e47c4129e7d73a Mon Sep 17 00:00:00 2001 From: Tomasz Szymanski Date: Wed, 24 Mar 2021 14:00:50 +0100 Subject: [PATCH] Handle insufficient stock error --- locale/defaultMessages.json | 4 ++++ src/orders/views/OrderDetails/OrderDetailsMessages.tsx | 8 ++++++++ src/utils/errors/order.ts | 6 ++++++ 3 files changed, 18 insertions(+) diff --git a/locale/defaultMessages.json b/locale/defaultMessages.json index 7898da93b..36da446da 100644 --- a/locale/defaultMessages.json +++ b/locale/defaultMessages.json @@ -6645,6 +6645,10 @@ "src_dot_utils_dot_errors_dot_graphqlError": { "string": "API error" }, + "src_dot_utils_dot_errors_dot_insufficientStock": { + "context": "error message", + "string": "Cannot change the quantity because of insufficient stock" + }, "src_dot_utils_dot_errors_dot_invalid": { "string": "Invalid value" }, diff --git a/src/orders/views/OrderDetails/OrderDetailsMessages.tsx b/src/orders/views/OrderDetails/OrderDetailsMessages.tsx index 27492db0f..3ee40e5e6 100644 --- a/src/orders/views/OrderDetails/OrderDetailsMessages.tsx +++ b/src/orders/views/OrderDetails/OrderDetailsMessages.tsx @@ -1,6 +1,7 @@ import messages from "@saleor/containers/BackgroundTasks/messages"; import useNavigator from "@saleor/hooks/useNavigator"; import useNotifier from "@saleor/hooks/useNotifier"; +import getOrderErrorMessage from "@saleor/utils/errors/order"; import createDialogActionHandlers from "@saleor/utils/handlers/dialogActionHandlers"; import React from "react"; import { useIntl } from "react-intl"; @@ -205,6 +206,13 @@ export const OrderDetailsMessages: React.FC = ({ defaultMessage: "Order line updated" }) }); + } else { + errs.forEach(error => + pushMessage({ + status: "error", + text: getOrderErrorMessage(error, intl) + }) + ); } }; const handleOrderFulfillmentCancel = (data: OrderFulfillmentCancel) => { diff --git a/src/utils/errors/order.ts b/src/utils/errors/order.ts index e2421203f..2e1dcd0b4 100644 --- a/src/utils/errors/order.ts +++ b/src/utils/errors/order.ts @@ -34,6 +34,10 @@ const messages = defineMessages({ defaultMessage: "Only pre-authorized payments can be captured", description: "error message" }, + insufficientStock: { + defaultMessage: "Cannot change the quantity because of insufficient stock", + description: "error message" + }, noShippingAddress: { defaultMessage: "Cannot choose a shipping method for an order without the shipping address", @@ -79,6 +83,8 @@ function getOrderErrorMessage( return intl.formatMessage(commonErrorMessages.graphqlError); case OrderErrorCode.INVALID: return intl.formatMessage(commonErrorMessages.invalid); + case OrderErrorCode.INSUFFICIENT_STOCK: + return intl.formatMessage(messages.insufficientStock); case OrderErrorCode.NOT_EDITABLE: return intl.formatMessage(messages.notEditable); case OrderErrorCode.ORDER_NO_SHIPPING_ADDRESS: