wip
This commit is contained in:
parent
14d89d2ab9
commit
0c09d4b11d
3 changed files with 328 additions and 2 deletions
|
@ -22,6 +22,7 @@ import {
|
||||||
OrderDraftBulkCancel,
|
OrderDraftBulkCancel,
|
||||||
OrderDraftBulkCancelVariables
|
OrderDraftBulkCancelVariables
|
||||||
} from "./types/OrderDraftBulkCancel";
|
} from "./types/OrderDraftBulkCancel";
|
||||||
|
import { FulfillOrder, FulfillOrderVariables } from "./types/FulfillOrder";
|
||||||
import {
|
import {
|
||||||
OrderDraftCancel,
|
OrderDraftCancel,
|
||||||
OrderDraftCancelVariables
|
OrderDraftCancelVariables
|
||||||
|
@ -477,3 +478,20 @@ export const TypedOrderLineUpdateMutation = TypedMutation<
|
||||||
OrderLineUpdate,
|
OrderLineUpdate,
|
||||||
OrderLineUpdateVariables
|
OrderLineUpdateVariables
|
||||||
>(orderLineUpdateMutation);
|
>(orderLineUpdateMutation);
|
||||||
|
|
||||||
|
const fulfillOrder = gql`
|
||||||
|
mutation FulfillOrder($orderId: ID!, $input: FulfillmentCreateInput!) {
|
||||||
|
orderFulfillmentCreate(order: $orderId, input: $input) {
|
||||||
|
errors: orderErrors {
|
||||||
|
...OrderErrorFragment
|
||||||
|
}
|
||||||
|
order {
|
||||||
|
...OrderDetailsFragment
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
export const useOrderFulfill = makeMutation<
|
||||||
|
FulfillOrder,
|
||||||
|
FulfillOrderVariables
|
||||||
|
>(fulfillOrder);
|
||||||
|
|
282
src/orders/types/FulfillOrder.ts
Normal file
282
src/orders/types/FulfillOrder.ts
Normal file
|
@ -0,0 +1,282 @@
|
||||||
|
/* tslint:disable */
|
||||||
|
/* eslint-disable */
|
||||||
|
// This file was automatically generated and should not be edited.
|
||||||
|
|
||||||
|
import { FulfillmentCreateInput, OrderErrorCode, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, OrderStatus, OrderAction } from "./../../types/globalTypes";
|
||||||
|
|
||||||
|
// ====================================================
|
||||||
|
// GraphQL mutation operation: FulfillOrder
|
||||||
|
// ====================================================
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_errors {
|
||||||
|
__typename: "OrderError";
|
||||||
|
code: OrderErrorCode;
|
||||||
|
field: string | null;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_order_billingAddress_country {
|
||||||
|
__typename: "CountryDisplay";
|
||||||
|
code: string;
|
||||||
|
country: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_order_billingAddress {
|
||||||
|
__typename: "Address";
|
||||||
|
city: string;
|
||||||
|
cityArea: string;
|
||||||
|
companyName: string;
|
||||||
|
country: FulfillOrder_orderFulfillmentCreate_order_billingAddress_country;
|
||||||
|
countryArea: string;
|
||||||
|
firstName: string;
|
||||||
|
id: string;
|
||||||
|
lastName: string;
|
||||||
|
phone: string | null;
|
||||||
|
postalCode: string;
|
||||||
|
streetAddress1: string;
|
||||||
|
streetAddress2: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_order_events_user {
|
||||||
|
__typename: "User";
|
||||||
|
id: string;
|
||||||
|
email: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_order_events {
|
||||||
|
__typename: "OrderEvent";
|
||||||
|
id: string;
|
||||||
|
amount: number | null;
|
||||||
|
date: any | null;
|
||||||
|
email: string | null;
|
||||||
|
emailType: OrderEventsEmailsEnum | null;
|
||||||
|
message: string | null;
|
||||||
|
quantity: number | null;
|
||||||
|
type: OrderEventsEnum | null;
|
||||||
|
user: FulfillOrder_orderFulfillmentCreate_order_events_user | null;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_order_fulfillments_lines_orderLine_unitPrice_gross {
|
||||||
|
__typename: "Money";
|
||||||
|
amount: number;
|
||||||
|
currency: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_order_fulfillments_lines_orderLine_unitPrice_net {
|
||||||
|
__typename: "Money";
|
||||||
|
amount: number;
|
||||||
|
currency: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_order_fulfillments_lines_orderLine_unitPrice {
|
||||||
|
__typename: "TaxedMoney";
|
||||||
|
gross: FulfillOrder_orderFulfillmentCreate_order_fulfillments_lines_orderLine_unitPrice_gross;
|
||||||
|
net: FulfillOrder_orderFulfillmentCreate_order_fulfillments_lines_orderLine_unitPrice_net;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_order_fulfillments_lines_orderLine_thumbnail {
|
||||||
|
__typename: "Image";
|
||||||
|
url: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_order_fulfillments_lines_orderLine {
|
||||||
|
__typename: "OrderLine";
|
||||||
|
id: string;
|
||||||
|
isShippingRequired: boolean;
|
||||||
|
productName: string;
|
||||||
|
productSku: string;
|
||||||
|
quantity: number;
|
||||||
|
quantityFulfilled: number;
|
||||||
|
unitPrice: FulfillOrder_orderFulfillmentCreate_order_fulfillments_lines_orderLine_unitPrice | null;
|
||||||
|
thumbnail: FulfillOrder_orderFulfillmentCreate_order_fulfillments_lines_orderLine_thumbnail | null;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_order_fulfillments_lines {
|
||||||
|
__typename: "FulfillmentLine";
|
||||||
|
id: string;
|
||||||
|
quantity: number;
|
||||||
|
orderLine: FulfillOrder_orderFulfillmentCreate_order_fulfillments_lines_orderLine | null;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_order_fulfillments {
|
||||||
|
__typename: "Fulfillment";
|
||||||
|
id: string;
|
||||||
|
lines: (FulfillOrder_orderFulfillmentCreate_order_fulfillments_lines | null)[] | null;
|
||||||
|
fulfillmentOrder: number;
|
||||||
|
status: FulfillmentStatus;
|
||||||
|
trackingNumber: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_order_lines_unitPrice_gross {
|
||||||
|
__typename: "Money";
|
||||||
|
amount: number;
|
||||||
|
currency: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_order_lines_unitPrice_net {
|
||||||
|
__typename: "Money";
|
||||||
|
amount: number;
|
||||||
|
currency: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_order_lines_unitPrice {
|
||||||
|
__typename: "TaxedMoney";
|
||||||
|
gross: FulfillOrder_orderFulfillmentCreate_order_lines_unitPrice_gross;
|
||||||
|
net: FulfillOrder_orderFulfillmentCreate_order_lines_unitPrice_net;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_order_lines_thumbnail {
|
||||||
|
__typename: "Image";
|
||||||
|
url: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_order_lines {
|
||||||
|
__typename: "OrderLine";
|
||||||
|
id: string;
|
||||||
|
isShippingRequired: boolean;
|
||||||
|
productName: string;
|
||||||
|
productSku: string;
|
||||||
|
quantity: number;
|
||||||
|
quantityFulfilled: number;
|
||||||
|
unitPrice: FulfillOrder_orderFulfillmentCreate_order_lines_unitPrice | null;
|
||||||
|
thumbnail: FulfillOrder_orderFulfillmentCreate_order_lines_thumbnail | null;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_order_shippingAddress_country {
|
||||||
|
__typename: "CountryDisplay";
|
||||||
|
code: string;
|
||||||
|
country: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_order_shippingAddress {
|
||||||
|
__typename: "Address";
|
||||||
|
city: string;
|
||||||
|
cityArea: string;
|
||||||
|
companyName: string;
|
||||||
|
country: FulfillOrder_orderFulfillmentCreate_order_shippingAddress_country;
|
||||||
|
countryArea: string;
|
||||||
|
firstName: string;
|
||||||
|
id: string;
|
||||||
|
lastName: string;
|
||||||
|
phone: string | null;
|
||||||
|
postalCode: string;
|
||||||
|
streetAddress1: string;
|
||||||
|
streetAddress2: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_order_shippingMethod {
|
||||||
|
__typename: "ShippingMethod";
|
||||||
|
id: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_order_shippingPrice_gross {
|
||||||
|
__typename: "Money";
|
||||||
|
amount: number;
|
||||||
|
currency: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_order_shippingPrice {
|
||||||
|
__typename: "TaxedMoney";
|
||||||
|
gross: FulfillOrder_orderFulfillmentCreate_order_shippingPrice_gross;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_order_subtotal_gross {
|
||||||
|
__typename: "Money";
|
||||||
|
amount: number;
|
||||||
|
currency: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_order_subtotal {
|
||||||
|
__typename: "TaxedMoney";
|
||||||
|
gross: FulfillOrder_orderFulfillmentCreate_order_subtotal_gross;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_order_total_gross {
|
||||||
|
__typename: "Money";
|
||||||
|
amount: number;
|
||||||
|
currency: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_order_total_tax {
|
||||||
|
__typename: "Money";
|
||||||
|
amount: number;
|
||||||
|
currency: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_order_total {
|
||||||
|
__typename: "TaxedMoney";
|
||||||
|
gross: FulfillOrder_orderFulfillmentCreate_order_total_gross;
|
||||||
|
tax: FulfillOrder_orderFulfillmentCreate_order_total_tax;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_order_totalAuthorized {
|
||||||
|
__typename: "Money";
|
||||||
|
amount: number;
|
||||||
|
currency: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_order_totalCaptured {
|
||||||
|
__typename: "Money";
|
||||||
|
amount: number;
|
||||||
|
currency: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_order_user {
|
||||||
|
__typename: "User";
|
||||||
|
id: string;
|
||||||
|
email: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_order_availableShippingMethods_price {
|
||||||
|
__typename: "Money";
|
||||||
|
amount: number;
|
||||||
|
currency: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_order_availableShippingMethods {
|
||||||
|
__typename: "ShippingMethod";
|
||||||
|
id: string;
|
||||||
|
name: string;
|
||||||
|
price: FulfillOrder_orderFulfillmentCreate_order_availableShippingMethods_price | null;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate_order {
|
||||||
|
__typename: "Order";
|
||||||
|
id: string;
|
||||||
|
billingAddress: FulfillOrder_orderFulfillmentCreate_order_billingAddress | null;
|
||||||
|
canFinalize: boolean;
|
||||||
|
created: any;
|
||||||
|
customerNote: string;
|
||||||
|
events: (FulfillOrder_orderFulfillmentCreate_order_events | null)[] | null;
|
||||||
|
fulfillments: (FulfillOrder_orderFulfillmentCreate_order_fulfillments | null)[];
|
||||||
|
lines: (FulfillOrder_orderFulfillmentCreate_order_lines | null)[];
|
||||||
|
number: string | null;
|
||||||
|
paymentStatus: PaymentChargeStatusEnum | null;
|
||||||
|
shippingAddress: FulfillOrder_orderFulfillmentCreate_order_shippingAddress | null;
|
||||||
|
shippingMethod: FulfillOrder_orderFulfillmentCreate_order_shippingMethod | null;
|
||||||
|
shippingMethodName: string | null;
|
||||||
|
shippingPrice: FulfillOrder_orderFulfillmentCreate_order_shippingPrice | null;
|
||||||
|
status: OrderStatus;
|
||||||
|
subtotal: FulfillOrder_orderFulfillmentCreate_order_subtotal | null;
|
||||||
|
total: FulfillOrder_orderFulfillmentCreate_order_total | null;
|
||||||
|
actions: (OrderAction | null)[];
|
||||||
|
totalAuthorized: FulfillOrder_orderFulfillmentCreate_order_totalAuthorized | null;
|
||||||
|
totalCaptured: FulfillOrder_orderFulfillmentCreate_order_totalCaptured | null;
|
||||||
|
user: FulfillOrder_orderFulfillmentCreate_order_user | null;
|
||||||
|
userEmail: string | null;
|
||||||
|
availableShippingMethods: (FulfillOrder_orderFulfillmentCreate_order_availableShippingMethods | null)[] | null;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder_orderFulfillmentCreate {
|
||||||
|
__typename: "FulfillmentCreate";
|
||||||
|
errors: FulfillOrder_orderFulfillmentCreate_errors[];
|
||||||
|
order: FulfillOrder_orderFulfillmentCreate_order | null;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrder {
|
||||||
|
orderFulfillmentCreate: FulfillOrder_orderFulfillmentCreate | null;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FulfillOrderVariables {
|
||||||
|
orderId: string;
|
||||||
|
input: FulfillmentCreateInput;
|
||||||
|
}
|
|
@ -7,6 +7,8 @@ import useNavigator from "@saleor/hooks/useNavigator";
|
||||||
import { orderUrl } from "@saleor/orders/urls";
|
import { orderUrl } from "@saleor/orders/urls";
|
||||||
import { useWarehouseList } from "@saleor/warehouses/queries";
|
import { useWarehouseList } from "@saleor/warehouses/queries";
|
||||||
import { WindowTitle } from "@saleor/components/WindowTitle";
|
import { WindowTitle } from "@saleor/components/WindowTitle";
|
||||||
|
import { useOrderFulfill } from "@saleor/orders/mutations";
|
||||||
|
import useNotifier from "@saleor/hooks/useNotifier";
|
||||||
|
|
||||||
export interface OrderFulfillProps {
|
export interface OrderFulfillProps {
|
||||||
orderId: string;
|
orderId: string;
|
||||||
|
@ -14,6 +16,7 @@ export interface OrderFulfillProps {
|
||||||
|
|
||||||
const OrderFulfill: React.FC<OrderFulfillProps> = ({ orderId }) => {
|
const OrderFulfill: React.FC<OrderFulfillProps> = ({ orderId }) => {
|
||||||
const navigate = useNavigator();
|
const navigate = useNavigator();
|
||||||
|
const notify = useNotifier();
|
||||||
const intl = useIntl();
|
const intl = useIntl();
|
||||||
const { data, loading } = useOrderFulfillData({
|
const { data, loading } = useOrderFulfillData({
|
||||||
displayLoader: true,
|
displayLoader: true,
|
||||||
|
@ -27,6 +30,19 @@ const OrderFulfill: React.FC<OrderFulfillProps> = ({ orderId }) => {
|
||||||
first: 20
|
first: 20
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
const [fulfillOrder, fulfillOrderOpts] = useOrderFulfill({
|
||||||
|
onCompleted: data => {
|
||||||
|
if (data.orderFulfillmentCreate.errors.length === 0) {
|
||||||
|
navigate(orderUrl(orderId));
|
||||||
|
notify({
|
||||||
|
text: intl.formatMessage({
|
||||||
|
defaultMessage: "Fulfilled Items",
|
||||||
|
description: "order fulfilled success message"
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
@ -49,9 +65,19 @@ const OrderFulfill: React.FC<OrderFulfillProps> = ({ orderId }) => {
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
<OrderFulfillPage
|
<OrderFulfillPage
|
||||||
disabled={loading || warehousesLoading}
|
disabled={loading || warehousesLoading || fulfillOrderOpts.loading}
|
||||||
onBack={() => navigate(orderUrl(orderId))}
|
onBack={() => navigate(orderUrl(orderId))}
|
||||||
onSubmit={() => undefined}
|
onSubmit={formData =>
|
||||||
|
fulfillOrder({
|
||||||
|
variables: {
|
||||||
|
input: {
|
||||||
|
lines: formData.items.map(line => line.value),
|
||||||
|
notifyCustomer: formData.sendInfo
|
||||||
|
},
|
||||||
|
orderId
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
order={data?.order}
|
order={data?.order}
|
||||||
saveButtonBar="default"
|
saveButtonBar="default"
|
||||||
warehouses={warehouseData?.warehouses.edges.map(edge => edge.node)}
|
warehouses={warehouseData?.warehouses.edges.map(edge => edge.node)}
|
||||||
|
|
Loading…
Reference in a new issue