Change usages of order error order line prop (#1175)

* Change usages of order error order line prop to order lines

* Fix fixture

* Fixes after review
This commit is contained in:
mmarkusik 2021-06-21 13:13:54 +02:00 committed by GitHub
parent c8d7edfeab
commit 2cfadd09bd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 42 additions and 17 deletions

View file

@ -3027,6 +3027,7 @@ type Order implements Node & ObjectWithMetadata {
discountName: String @deprecated(reason: "Use discounts field. This field will be removed in Saleor 4.0.")
translatedDiscountName: String @deprecated(reason: "Use discounts field. This field will be removed in Saleor 4.0.")
discounts: [OrderDiscount!]
errors: [OrderError!]!
}
enum OrderAction {
@ -3140,7 +3141,7 @@ type OrderError {
message: String
code: OrderErrorCode!
warehouse: ID
orderLine: ID
orderLines: [ID!]
variants: [ID!]
addressType: AddressTypeEnum
}
@ -3260,6 +3261,8 @@ enum OrderEventsEnum {
ORDER_DISCOUNT_DELETED
ORDER_LINE_DISCOUNT_UPDATED
ORDER_LINE_DISCOUNT_REMOVED
ORDER_LINE_PRODUCT_DELETED
ORDER_LINE_VARIANT_DELETED
UPDATED_ADDRESS
EMAIL_SENT
CONFIRMED

View file

@ -36,7 +36,7 @@ storiesOf("Views / Orders / Fulfill order", module)
__typename: "OrderError",
code: OrderErrorCode.INSUFFICIENT_STOCK,
field: null,
orderLine: orderToFulfill.lines[0].id,
orderLines: [orderToFulfill.lines[0].id],
warehouse: warehouseList[0].id,
addressType: null
}

View file

@ -215,6 +215,31 @@ const OrderFulfillPage: React.FC<OrderFulfillPageProps> = props => {
return isAtLeastOneFulfilled && areProperlyFulfilled;
};
const isStockError = (
overfulfill: boolean,
formsetStock: { quantity: number },
availableQuantity: number,
warehouse: WarehouseFragment,
line: OrderFulfillData_order_lines,
errors: FulfillOrder_orderFulfill_errors[]
) => {
if (overfulfill) {
return true;
}
const isQuantityLargerThanAvailable =
line.variant.trackInventory && formsetStock.quantity > availableQuantity;
const isError = !!errors?.find(
err =>
err.warehouse === warehouse.id &&
err.orderLines.find((id: string) => id === line.id) &&
err.code === OrderErrorCode.INSUFFICIENT_STOCK
);
return isQuantityLargerThanAvailable || isError;
};
return (
<Container>
<AppHeader onBack={onBack}>
@ -422,19 +447,14 @@ const OrderFulfillPage: React.FC<OrderFulfillPageProps> = props => {
)
)
}
error={
overfulfill ||
(line.variant.trackInventory &&
formsetStock.quantity >
availableQuantity) ||
!!errors?.find(
err =>
err.warehouse === warehouse.id &&
err.orderLine === line.id &&
err.code ===
OrderErrorCode.INSUFFICIENT_STOCK
)
}
error={isStockError(
overfulfill,
formsetStock,
availableQuantity,
warehouse,
line,
errors
)}
InputProps={{
endAdornment: line.variant
.trackInventory && (

View file

@ -675,7 +675,7 @@ const fulfillOrder = gql`
errors {
...OrderErrorFragment
warehouse
orderLine
orderLines
}
order {
...OrderDetailsFragment

View file

@ -15,7 +15,7 @@ export interface FulfillOrder_orderFulfill_errors {
field: string | null;
addressType: AddressTypeEnum | null;
warehouse: string | null;
orderLine: string | null;
orderLines: string[] | null;
}
export interface FulfillOrder_orderFulfill_order_metadata {

View file

@ -679,6 +679,8 @@ export enum OrderEventsEnum {
ORDER_FULLY_PAID = "ORDER_FULLY_PAID",
ORDER_LINE_DISCOUNT_REMOVED = "ORDER_LINE_DISCOUNT_REMOVED",
ORDER_LINE_DISCOUNT_UPDATED = "ORDER_LINE_DISCOUNT_UPDATED",
ORDER_LINE_PRODUCT_DELETED = "ORDER_LINE_PRODUCT_DELETED",
ORDER_LINE_VARIANT_DELETED = "ORDER_LINE_VARIANT_DELETED",
ORDER_MARKED_AS_PAID = "ORDER_MARKED_AS_PAID",
ORDER_REPLACEMENT_CREATED = "ORDER_REPLACEMENT_CREATED",
OTHER = "OTHER",