import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; import CardActions from "@material-ui/core/CardActions"; import { createStyles, Theme, withStyles, WithStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; import TableHead from "@material-ui/core/TableHead"; import TableRow from "@material-ui/core/TableRow"; import Typography from "@material-ui/core/Typography"; import React from "react"; import CardMenu from "@saleor/components/CardMenu"; import CardTitle from "@saleor/components/CardTitle"; import Money from "@saleor/components/Money"; import Skeleton from "@saleor/components/Skeleton"; import StatusLabel from "@saleor/components/StatusLabel"; import TableCellAvatar, { AVATAR_MARGIN } from "@saleor/components/TableCellAvatar"; import i18n from "../../../i18n"; import { maybe, renderCollection } from "../../../misc"; import { FulfillmentStatus } from "../../../types/globalTypes"; import { OrderDetails_order_fulfillments } from "../../types/OrderDetails"; const styles = (theme: Theme) => createStyles({ clickableRow: { cursor: "pointer" }, colName: { width: "auto" }, colNameLabel: { marginLeft: AVATAR_MARGIN }, colPrice: { textAlign: "right", width: 120 }, colQuantity: { textAlign: "center", width: 120 }, colTotal: { textAlign: "right", width: 120 }, orderNumber: { display: "inline", marginLeft: theme.spacing.unit }, statusBar: { paddingTop: 0 }, table: { tableLayout: "fixed" } }); interface OrderFulfillmentProps extends WithStyles { fulfillment: OrderDetails_order_fulfillments; orderNumber: string; onOrderFulfillmentCancel: () => void; onTrackingCodeAdd: () => void; } const numberOfColumns = 3; const OrderFulfillment = withStyles(styles, { name: "OrderFulfillment" })( ({ classes, fulfillment, orderNumber, onOrderFulfillmentCancel, onTrackingCodeAdd }: OrderFulfillmentProps) => { const lines = maybe(() => fulfillment.lines); const status = maybe(() => fulfillment.status); return ( {status === FulfillmentStatus.FULFILLED ? i18n.t("Fulfilled ({{ quantity }})", { quantity: lines .map(line => line.quantity) .reduce((prev, curr) => prev + curr, 0) }) : i18n.t("Cancelled ({{ quantity }})", { quantity: lines .map(line => line.quantity) .reduce((prev, curr) => prev + curr, 0) })} {maybe( () => `#${orderNumber}-${fulfillment.fulfillmentOrder}` )} } status={ status === FulfillmentStatus.FULFILLED ? "success" : "error" } /> ) : ( ) } toolbar={ maybe(() => fulfillment.status) === FulfillmentStatus.FULFILLED && ( ) } /> {i18n.t("Product")} {i18n.t("Quantity")} {i18n.t("Price")} {i18n.t("Total")} {renderCollection(lines, line => ( line.id)} > line.orderLine.thumbnail.url)} > {maybe(() => line.orderLine.productName) || } {maybe(() => line.quantity) || } {maybe(() => line.orderLine.unitPrice.gross) ? ( ) : ( )} {maybe( () => line.quantity * line.orderLine.unitPrice.gross.amount ) ? ( ) : ( )} ))} {maybe(() => fulfillment.trackingNumber) && ( {i18n.t("Tracking Number: {{ trackingNumber }}", { trackingNumber: fulfillment.trackingNumber })} )}
{status === FulfillmentStatus.FULFILLED && !fulfillment.trackingNumber && ( )}
); } ); OrderFulfillment.displayName = "OrderFulfillment"; export default OrderFulfillment;