Update logic based on new API fields

This commit is contained in:
Grzegorz Derdak 2020-10-28 12:42:28 +01:00
parent 9036294491
commit cbdda30a3a
5 changed files with 57 additions and 23 deletions

View file

@ -257,7 +257,7 @@ const OrderFulfillPage: React.FC<OrderFulfillPageProps> = props => {
<TableBody> <TableBody>
{renderCollection( {renderCollection(
order?.lines.filter(line => getRemainingQuantity(line) > 0), order?.lines.filter(line => getRemainingQuantity(line) > 0),
(line, lineIndex) => { (line: OrderFulfillData_order_lines, lineIndex) => {
if (!line) { if (!line) {
return ( return (
<TableRow key={lineIndex}> <TableRow key={lineIndex}>
@ -340,6 +340,17 @@ const OrderFulfillPage: React.FC<OrderFulfillPageProps> = props => {
); );
} }
const warehouseAllocation = line.allocations.find(
allocation =>
allocation.warehouse.id === warehouse.id
);
const allocatedQuantityForLine =
warehouseAllocation?.quantity || 0;
const availableQuantity =
warehouseStock.quantity -
warehouseStock.quantityAllocated +
allocatedQuantityForLine;
return ( return (
<TableCell <TableCell
className={classes.colQuantity} className={classes.colQuantity}
@ -357,7 +368,7 @@ const OrderFulfillPage: React.FC<OrderFulfillPageProps> = props => {
), ),
max: ( max: (
line.variant.trackInventory && line.variant.trackInventory &&
warehouseStock.quantity availableQuantity
).toString(), ).toString(),
min: 0, min: 0,
style: { textAlign: "right" } style: { textAlign: "right" }
@ -384,7 +395,7 @@ const OrderFulfillPage: React.FC<OrderFulfillPageProps> = props => {
overfulfill || overfulfill ||
(line.variant.trackInventory && (line.variant.trackInventory &&
formsetStock.quantity > formsetStock.quantity >
warehouseStock.quantityAllocated) || availableQuantity) ||
!!errors?.find( !!errors?.find(
err => err =>
err.warehouse === warehouse.id && err.warehouse === warehouse.id &&
@ -399,7 +410,7 @@ const OrderFulfillPage: React.FC<OrderFulfillPageProps> = props => {
<div <div
className={classes.remainingQuantity} className={classes.remainingQuantity}
> >
/ {warehouseStock.quantityAllocated} / {availableQuantity}
</div> </div>
) )
}} }}
@ -407,6 +418,7 @@ const OrderFulfillPage: React.FC<OrderFulfillPageProps> = props => {
</TableCell> </TableCell>
); );
})} })}
<TableCell <TableCell
className={classes.colQuantityTotal} className={classes.colQuantityTotal}
key="total" key="total"

View file

@ -15,6 +15,7 @@ export const orderToFulfill: OrderFulfillData_order = {
productName: "T-Shirt", productName: "T-Shirt",
quantity: 3, quantity: 3,
quantityFulfilled: 1, quantityFulfilled: 1,
allocations: [],
variant: { variant: {
__typename: "ProductVariant", __typename: "ProductVariant",
id: "UHJvZHVjdFZhcmlhbnQ6Mjk2", id: "UHJvZHVjdFZhcmlhbnQ6Mjk2",
@ -76,6 +77,7 @@ export const orderToFulfill: OrderFulfillData_order = {
productName: "Lemon Juice", productName: "Lemon Juice",
quantity: 4, quantity: 4,
quantityFulfilled: 0, quantityFulfilled: 0,
allocations: [],
variant: { variant: {
__typename: "ProductVariant", __typename: "ProductVariant",
id: "UHJvZHVjdFZhcmlhbnQ6MTgx", id: "UHJvZHVjdFZhcmlhbnQ6MTgx",
@ -130,6 +132,7 @@ export const orderToFulfill: OrderFulfillData_order = {
productName: "Orange Juice", productName: "Orange Juice",
quantity: 3, quantity: 3,
quantityFulfilled: 2, quantityFulfilled: 2,
allocations: [],
variant: { variant: {
__typename: "ProductVariant", __typename: "ProductVariant",
id: "UHJvZHVjdFZhcmlhbnQ6MTgy", id: "UHJvZHVjdFZhcmlhbnQ6MTgy",

View file

@ -195,6 +195,12 @@ const orderFulfillData = gql`
isShippingRequired isShippingRequired
productName productName
quantity quantity
allocations {
quantity
warehouse {
id
}
}
quantityFulfilled quantityFulfilled
variant { variant {
id id

View file

@ -52,6 +52,7 @@ export interface OrderFulfillData_order_lines {
productName: string; productName: string;
quantity: number; quantity: number;
quantityFulfilled: number; quantityFulfilled: number;
allocations: OrderFulfillData_order_allocation[];
variant: OrderFulfillData_order_lines_variant | null; variant: OrderFulfillData_order_lines_variant | null;
thumbnail: OrderFulfillData_order_lines_thumbnail | null; thumbnail: OrderFulfillData_order_lines_thumbnail | null;
} }
@ -70,3 +71,15 @@ export interface OrderFulfillData {
export interface OrderFulfillDataVariables { export interface OrderFulfillDataVariables {
orderId: string; orderId: string;
} }
export interface OrderFulfillData_order_allocation {
__typename: "Allocation";
id: string;
quantity: number;
warehouse: OrderFulfillData_order_allocation_warehouse;
}
export interface OrderFulfillData_order_allocation_warehouse {
__typename: "Warehouse";
id: string;
}

View file

@ -85627,7 +85627,7 @@ exports[`Storyshots Views / Orders / Fulfill order default 1`] = `
<input <input
aria-invalid="false" aria-invalid="false"
class="MuiInputBase-input-id MuiOutlinedInput-input-id OrderFulfillPage-quantityInnerInput-id MuiInputBase-inputAdornedEnd-id MuiOutlinedInput-inputAdornedEnd-id" class="MuiInputBase-input-id MuiOutlinedInput-input-id OrderFulfillPage-quantityInnerInput-id MuiInputBase-inputAdornedEnd-id MuiOutlinedInput-inputAdornedEnd-id"
max="760" max="758"
min="0" min="0"
style="text-align:right" style="text-align:right"
type="number" type="number"
@ -85636,7 +85636,7 @@ exports[`Storyshots Views / Orders / Fulfill order default 1`] = `
<div <div
class="OrderFulfillPage-remainingQuantity-id" class="OrderFulfillPage-remainingQuantity-id"
> >
/ 2 / 758
</div> </div>
<fieldset <fieldset
aria-hidden="true" aria-hidden="true"
@ -85667,7 +85667,7 @@ exports[`Storyshots Views / Orders / Fulfill order default 1`] = `
<input <input
aria-invalid="false" aria-invalid="false"
class="MuiInputBase-input-id MuiOutlinedInput-input-id OrderFulfillPage-quantityInnerInput-id MuiInputBase-inputAdornedEnd-id MuiOutlinedInput-inputAdornedEnd-id" class="MuiInputBase-input-id MuiOutlinedInput-input-id OrderFulfillPage-quantityInnerInput-id MuiInputBase-inputAdornedEnd-id MuiOutlinedInput-inputAdornedEnd-id"
max="760" max="727"
min="0" min="0"
style="text-align:right" style="text-align:right"
type="number" type="number"
@ -85676,7 +85676,7 @@ exports[`Storyshots Views / Orders / Fulfill order default 1`] = `
<div <div
class="OrderFulfillPage-remainingQuantity-id" class="OrderFulfillPage-remainingQuantity-id"
> >
/ 33 / 727
</div> </div>
<fieldset <fieldset
aria-hidden="true" aria-hidden="true"
@ -85707,7 +85707,7 @@ exports[`Storyshots Views / Orders / Fulfill order default 1`] = `
<input <input
aria-invalid="false" aria-invalid="false"
class="MuiInputBase-input-id MuiOutlinedInput-input-id OrderFulfillPage-quantityInnerInput-id MuiInputBase-inputAdornedEnd-id MuiOutlinedInput-inputAdornedEnd-id" class="MuiInputBase-input-id MuiOutlinedInput-input-id OrderFulfillPage-quantityInnerInput-id MuiInputBase-inputAdornedEnd-id MuiOutlinedInput-inputAdornedEnd-id"
max="760" max="756"
min="0" min="0"
style="text-align:right" style="text-align:right"
type="number" type="number"
@ -85716,7 +85716,7 @@ exports[`Storyshots Views / Orders / Fulfill order default 1`] = `
<div <div
class="OrderFulfillPage-remainingQuantity-id" class="OrderFulfillPage-remainingQuantity-id"
> >
/ 4 / 756
</div> </div>
<fieldset <fieldset
aria-hidden="true" aria-hidden="true"
@ -85801,7 +85801,7 @@ exports[`Storyshots Views / Orders / Fulfill order default 1`] = `
<div <div
class="OrderFulfillPage-remainingQuantity-id" class="OrderFulfillPage-remainingQuantity-id"
> >
/ 0 / 587
</div> </div>
<fieldset <fieldset
aria-hidden="true" aria-hidden="true"
@ -85837,7 +85837,7 @@ exports[`Storyshots Views / Orders / Fulfill order default 1`] = `
<input <input
aria-invalid="false" aria-invalid="false"
class="MuiInputBase-input-id MuiOutlinedInput-input-id OrderFulfillPage-quantityInnerInput-id MuiInputBase-inputAdornedEnd-id MuiOutlinedInput-inputAdornedEnd-id" class="MuiInputBase-input-id MuiOutlinedInput-input-id OrderFulfillPage-quantityInnerInput-id MuiInputBase-inputAdornedEnd-id MuiOutlinedInput-inputAdornedEnd-id"
max="587" max="586"
min="0" min="0"
style="text-align:right" style="text-align:right"
type="number" type="number"
@ -85846,7 +85846,7 @@ exports[`Storyshots Views / Orders / Fulfill order default 1`] = `
<div <div
class="OrderFulfillPage-remainingQuantity-id" class="OrderFulfillPage-remainingQuantity-id"
> >
/ 1 / 586
</div> </div>
<fieldset <fieldset
aria-hidden="true" aria-hidden="true"
@ -86280,7 +86280,7 @@ exports[`Storyshots Views / Orders / Fulfill order error 1`] = `
<input <input
aria-invalid="false" aria-invalid="false"
class="MuiInputBase-input-id MuiOutlinedInput-input-id OrderFulfillPage-quantityInnerInput-id MuiInputBase-inputAdornedEnd-id MuiOutlinedInput-inputAdornedEnd-id" class="MuiInputBase-input-id MuiOutlinedInput-input-id OrderFulfillPage-quantityInnerInput-id MuiInputBase-inputAdornedEnd-id MuiOutlinedInput-inputAdornedEnd-id"
max="760" max="758"
min="0" min="0"
style="text-align:right" style="text-align:right"
type="number" type="number"
@ -86289,7 +86289,7 @@ exports[`Storyshots Views / Orders / Fulfill order error 1`] = `
<div <div
class="OrderFulfillPage-remainingQuantity-id" class="OrderFulfillPage-remainingQuantity-id"
> >
/ 2 / 758
</div> </div>
<fieldset <fieldset
aria-hidden="true" aria-hidden="true"
@ -86320,7 +86320,7 @@ exports[`Storyshots Views / Orders / Fulfill order error 1`] = `
<input <input
aria-invalid="false" aria-invalid="false"
class="MuiInputBase-input-id MuiOutlinedInput-input-id OrderFulfillPage-quantityInnerInput-id MuiInputBase-inputAdornedEnd-id MuiOutlinedInput-inputAdornedEnd-id" class="MuiInputBase-input-id MuiOutlinedInput-input-id OrderFulfillPage-quantityInnerInput-id MuiInputBase-inputAdornedEnd-id MuiOutlinedInput-inputAdornedEnd-id"
max="760" max="727"
min="0" min="0"
style="text-align:right" style="text-align:right"
type="number" type="number"
@ -86329,7 +86329,7 @@ exports[`Storyshots Views / Orders / Fulfill order error 1`] = `
<div <div
class="OrderFulfillPage-remainingQuantity-id" class="OrderFulfillPage-remainingQuantity-id"
> >
/ 33 / 727
</div> </div>
<fieldset <fieldset
aria-hidden="true" aria-hidden="true"
@ -86360,7 +86360,7 @@ exports[`Storyshots Views / Orders / Fulfill order error 1`] = `
<input <input
aria-invalid="false" aria-invalid="false"
class="MuiInputBase-input-id MuiOutlinedInput-input-id OrderFulfillPage-quantityInnerInput-id MuiInputBase-inputAdornedEnd-id MuiOutlinedInput-inputAdornedEnd-id" class="MuiInputBase-input-id MuiOutlinedInput-input-id OrderFulfillPage-quantityInnerInput-id MuiInputBase-inputAdornedEnd-id MuiOutlinedInput-inputAdornedEnd-id"
max="760" max="756"
min="0" min="0"
style="text-align:right" style="text-align:right"
type="number" type="number"
@ -86369,7 +86369,7 @@ exports[`Storyshots Views / Orders / Fulfill order error 1`] = `
<div <div
class="OrderFulfillPage-remainingQuantity-id" class="OrderFulfillPage-remainingQuantity-id"
> >
/ 4 / 756
</div> </div>
<fieldset <fieldset
aria-hidden="true" aria-hidden="true"
@ -86454,7 +86454,7 @@ exports[`Storyshots Views / Orders / Fulfill order error 1`] = `
<div <div
class="OrderFulfillPage-remainingQuantity-id" class="OrderFulfillPage-remainingQuantity-id"
> >
/ 0 / 587
</div> </div>
<fieldset <fieldset
aria-hidden="true" aria-hidden="true"
@ -86490,7 +86490,7 @@ exports[`Storyshots Views / Orders / Fulfill order error 1`] = `
<input <input
aria-invalid="false" aria-invalid="false"
class="MuiInputBase-input-id MuiOutlinedInput-input-id OrderFulfillPage-quantityInnerInput-id MuiInputBase-inputAdornedEnd-id MuiOutlinedInput-inputAdornedEnd-id" class="MuiInputBase-input-id MuiOutlinedInput-input-id OrderFulfillPage-quantityInnerInput-id MuiInputBase-inputAdornedEnd-id MuiOutlinedInput-inputAdornedEnd-id"
max="587" max="586"
min="0" min="0"
style="text-align:right" style="text-align:right"
type="number" type="number"
@ -86499,7 +86499,7 @@ exports[`Storyshots Views / Orders / Fulfill order error 1`] = `
<div <div
class="OrderFulfillPage-remainingQuantity-id" class="OrderFulfillPage-remainingQuantity-id"
> >
/ 1 / 586
</div> </div>
<fieldset <fieldset
aria-hidden="true" aria-hidden="true"
@ -87058,7 +87058,7 @@ exports[`Storyshots Views / Orders / Fulfill order one warehouse 1`] = `
<div <div
class="OrderFulfillPage-remainingQuantity-id" class="OrderFulfillPage-remainingQuantity-id"
> >
/ 0 / 587
</div> </div>
<fieldset <fieldset
aria-hidden="true" aria-hidden="true"