import { TableBody, TableCell, TableHead, TableRow, Typography } from "@material-ui/core"; import ActionDialog from "@saleor/components/ActionDialog"; import { CardSpacer } from "@saleor/components/CardSpacer"; import ResponsiveTable from "@saleor/components/ResponsiveTable"; import { FulfillmentFragment, OrderFulfillLineFragment } from "@saleor/graphql"; import { ConfirmButtonTransitionState } from "@saleor/macaw-ui"; import { renderCollection } from "@saleor/misc"; import { getFulfillmentFormsetQuantity, getOrderLineAvailableQuantity, OrderFulfillStockInputFormsetData } from "@saleor/orders/utils/data"; import React from "react"; import { useIntl } from "react-intl"; import OrderFulfillStockExceededDialogLine from "../OrderFulfillStockExceededDialogLine"; import { stockExceededDialogMessages as messages } from "./messages"; import { useStyles } from "./styles"; export interface OrderFulfillStockExceededDialogProps { lines: Array; open: boolean; formsetData: OrderFulfillStockInputFormsetData; warehouseId: string; confirmButtonState: ConfirmButtonTransitionState; onSubmit(); onClose(); } const OrderFulfillStockExceededDialog: React.FC = props => { const { lines, open, formsetData, warehouseId, confirmButtonState, onClose, onSubmit } = props; const intl = useIntl(); const classes = useStyles(props); const exceededLines = lines?.filter(el => { const line = "orderLine" in el ? el.orderLine : el; const stock = line.variant?.stocks.find( stock => stock.warehouse.id === warehouseId ); return ( getFulfillmentFormsetQuantity(formsetData, line) > getOrderLineAvailableQuantity(line, stock) ); }); return ( <> {intl.formatMessage(messages.infoLabel)}
{!!lines?.length && ( {intl.formatMessage(messages.productLabel)} {intl.formatMessage(messages.requiredStockLabel)} {intl.formatMessage(messages.warehouseStockLabel)} )} {renderCollection(exceededLines, line => ( ))}
{intl.formatMessage(messages.questionLabel)}
); }; OrderFulfillStockExceededDialog.displayName = "OrderFulfillStockExceededDialog"; export default OrderFulfillStockExceededDialog;