Click & Collect (#1268)

* Add initial form of c&c related properties for warehouse

* Add Typography & styling to RadioButtons, drop duplicated state

* Add fields for warehouse fixtures + cleanup

* Add order collectionPointName field + handle click&collect display in order

* Fix review issues + add snapshots

* Modify choices in WarehouseZones with filter

* Rename WarehouseZones to WarehouseSettings

* Add translations messages

* Update schema

* Fix review issues pt.2

* Fix review issues pt.3

* Fix review issues

* Align defaultMessages.json to messages refactor

* Rename interface WarehouseInfo -> WarehouseSettings

* Add pickup annotation to shipping address in order details

* Introduce fragment matcher + small change in deliveryMethod query

* Fixes after rebase

* Add resolve fulfillment option for local warehouse

* Align types after rebase

* Update snapshots

* Repair weird union behaviour

* Add entry to CHANGELOG.md
This commit is contained in:
Paweł Kucharski 2021-08-27 10:10:41 +02:00 committed by GitHub
parent 7051181802
commit 386a2488e7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
64 changed files with 4474 additions and 163 deletions

View file

@ -80,6 +80,7 @@ All notable, unreleased changes to this project will be documented in this file.
- Add text attribute for product and page translations - #1276 by @kamilpastuszka
- Add app dashboard extensions - #1292 by @jwm0
- Introduce fulfillment creation - #1241 by @orzechdev
- Introduce Click&Collect feature - #1268 by @kuchichan
# 2.11.1

9
codegen.yml Normal file
View file

@ -0,0 +1,9 @@
overwrite: true
schema: ./schema.graphql
generates:
fragmentTypes.json:
plugins:
- fragment-matcher
config:
minify: false
apolloClientVersion: 2

426
fragmentTypes.json Normal file
View file

@ -0,0 +1,426 @@
{
"__schema": {
"types": [
{
"kind": "UNION",
"name": "DeliveryMethod",
"possibleTypes": [
{
"name": "Warehouse"
},
{
"name": "ShippingMethod"
}
]
},
{
"kind": "INTERFACE",
"name": "Job",
"possibleTypes": [
{
"name": "AppInstallation"
},
{
"name": "ExportFile"
},
{
"name": "Invoice"
}
]
},
{
"kind": "INTERFACE",
"name": "Node",
"possibleTypes": [
{
"name": "Address"
},
{
"name": "Allocation"
},
{
"name": "App"
},
{
"name": "AppExtension"
},
{
"name": "AppInstallation"
},
{
"name": "AppToken"
},
{
"name": "Attribute"
},
{
"name": "AttributeTranslatableContent"
},
{
"name": "AttributeTranslation"
},
{
"name": "AttributeValue"
},
{
"name": "AttributeValueTranslatableContent"
},
{
"name": "AttributeValueTranslation"
},
{
"name": "Category"
},
{
"name": "CategoryTranslatableContent"
},
{
"name": "CategoryTranslation"
},
{
"name": "Channel"
},
{
"name": "Checkout"
},
{
"name": "CheckoutLine"
},
{
"name": "Collection"
},
{
"name": "CollectionChannelListing"
},
{
"name": "CollectionTranslatableContent"
},
{
"name": "CollectionTranslation"
},
{
"name": "CustomerEvent"
},
{
"name": "DigitalContent"
},
{
"name": "DigitalContentUrl"
},
{
"name": "ExportEvent"
},
{
"name": "ExportFile"
},
{
"name": "Fulfillment"
},
{
"name": "FulfillmentLine"
},
{
"name": "GiftCard"
},
{
"name": "GiftCardEvent"
},
{
"name": "Group"
},
{
"name": "Invoice"
},
{
"name": "Menu"
},
{
"name": "MenuItem"
},
{
"name": "MenuItemTranslatableContent"
},
{
"name": "MenuItemTranslation"
},
{
"name": "Order"
},
{
"name": "OrderDiscount"
},
{
"name": "OrderEvent"
},
{
"name": "OrderLine"
},
{
"name": "Page"
},
{
"name": "PageTranslatableContent"
},
{
"name": "PageTranslation"
},
{
"name": "PageType"
},
{
"name": "Payment"
},
{
"name": "Product"
},
{
"name": "ProductChannelListing"
},
{
"name": "ProductMedia"
},
{
"name": "ProductTranslatableContent"
},
{
"name": "ProductTranslation"
},
{
"name": "ProductType"
},
{
"name": "ProductVariant"
},
{
"name": "ProductVariantChannelListing"
},
{
"name": "ProductVariantTranslatableContent"
},
{
"name": "ProductVariantTranslation"
},
{
"name": "Sale"
},
{
"name": "SaleChannelListing"
},
{
"name": "SaleTranslatableContent"
},
{
"name": "SaleTranslation"
},
{
"name": "ShippingMethod"
},
{
"name": "ShippingMethodChannelListing"
},
{
"name": "ShippingMethodPostalCodeRule"
},
{
"name": "ShippingMethodTranslatableContent"
},
{
"name": "ShippingMethodTranslation"
},
{
"name": "ShippingZone"
},
{
"name": "ShopTranslation"
},
{
"name": "StaffNotificationRecipient"
},
{
"name": "Stock"
},
{
"name": "Transaction"
},
{
"name": "User"
},
{
"name": "Voucher"
},
{
"name": "VoucherChannelListing"
},
{
"name": "VoucherTranslatableContent"
},
{
"name": "VoucherTranslation"
},
{
"name": "Warehouse"
},
{
"name": "Webhook"
}
]
},
{
"kind": "INTERFACE",
"name": "ObjectWithMetadata",
"possibleTypes": [
{
"name": "App"
},
{
"name": "Attribute"
},
{
"name": "Category"
},
{
"name": "Checkout"
},
{
"name": "Collection"
},
{
"name": "DigitalContent"
},
{
"name": "Fulfillment"
},
{
"name": "GiftCard"
},
{
"name": "Invoice"
},
{
"name": "Menu"
},
{
"name": "MenuItem"
},
{
"name": "Order"
},
{
"name": "Page"
},
{
"name": "PageType"
},
{
"name": "Product"
},
{
"name": "ProductType"
},
{
"name": "ProductVariant"
},
{
"name": "Sale"
},
{
"name": "ShippingMethod"
},
{
"name": "ShippingZone"
},
{
"name": "User"
},
{
"name": "Voucher"
},
{
"name": "Warehouse"
}
]
},
{
"kind": "UNION",
"name": "TranslatableItem",
"possibleTypes": [
{
"name": "ProductTranslatableContent"
},
{
"name": "CollectionTranslatableContent"
},
{
"name": "CategoryTranslatableContent"
},
{
"name": "AttributeTranslatableContent"
},
{
"name": "AttributeValueTranslatableContent"
},
{
"name": "ProductVariantTranslatableContent"
},
{
"name": "PageTranslatableContent"
},
{
"name": "ShippingMethodTranslatableContent"
},
{
"name": "SaleTranslatableContent"
},
{
"name": "VoucherTranslatableContent"
},
{
"name": "MenuItemTranslatableContent"
}
]
},
{
"kind": "UNION",
"name": "_Entity",
"possibleTypes": [
{
"name": "App"
},
{
"name": "Address"
},
{
"name": "User"
},
{
"name": "Group"
},
{
"name": "ProductVariant"
},
{
"name": "Product"
},
{
"name": "ProductType"
},
{
"name": "Collection"
},
{
"name": "Category"
},
{
"name": "ProductMedia"
},
{
"name": "ProductImage"
},
{
"name": "PageType"
}
]
}
]
}
}

View file

@ -367,10 +367,6 @@
"context": "shipping address is not set in draft order",
"string": "Not set"
},
"orderPaymentShippingDoesNotApply": {
"context": "order does not require shipping",
"string": "does not apply"
},
"orderPaymentVATDoesNotApply": {
"context": "vat not included in order price",
"string": "does not apply"
@ -3810,6 +3806,14 @@
"src_dot_orders_dot_components_dot_OrderCustomer_dot_4282475982": {
"string": "Billing Address"
},
"src_dot_orders_dot_components_dot_OrderCustomer_dot_orderCustomerFulfillmentAll": {
"context": "OrderCustomer Fulfillment from All Warehouses",
"string": "Fulfill from All Warehouses"
},
"src_dot_orders_dot_components_dot_OrderCustomer_dot_orderCustomerFulfillmentLocal": {
"context": "OrderCustomer Fulfillment from Local Warehouse",
"string": "Fulfill from Local Stock"
},
"src_dot_orders_dot_components_dot_OrderDetailsPage_dot_cancelOrder": {
"context": "cancel button",
"string": "Cancel order"
@ -4430,6 +4434,14 @@
"context": "order total price",
"string": "Total"
},
"src_dot_orders_dot_components_dot_OrderPayment_dot_orderPaymentClickAndCollectShippingMethod": {
"context": "OrderPayment click&collect shipping method",
"string": "click&collect"
},
"src_dot_orders_dot_components_dot_OrderPayment_dot_orderPaymentShippingDoesNotApply": {
"context": "OrderPayment does not require shipping",
"string": "does not apply"
},
"src_dot_orders_dot_components_dot_OrderProductAddDialog_dot_2272209368": {
"context": "variant sku",
"string": "SKU {sku}"
@ -7458,13 +7470,58 @@
"context": "warehouse",
"string": "Name"
},
"src_dot_warehouses_dot_components_dot_WarehouseZones_dot_1225932315": {
"context": "zones that warehouse sends to",
"string": "Shipping Zones"
"src_dot_warehouses_dot_components_dot_WarehouseSettings_dot_warehouseSettingsAllWarehouses": {
"context": "WarehouseSettings all warehouses label",
"string": "All warehouses"
},
"src_dot_warehouses_dot_components_dot_WarehouseZones_dot_2423245141": {
"src_dot_warehouses_dot_components_dot_WarehouseSettings_dot_warehouseSettingsAllWarehousesDescription": {
"context": "WarehouseSettings all warehouses description",
"string": "If selected customer will be able to choose this warehouse as pickup point. Ordered products can be shipped here from a different warehouse"
},
"src_dot_warehouses_dot_components_dot_WarehouseSettings_dot_warehouseSettingsDisabled": {
"context": "WarehouseSettings disabled warehouse label",
"string": "Disabled"
},
"src_dot_warehouses_dot_components_dot_WarehouseSettings_dot_warehouseSettingsDisabledDescription": {
"context": "WarehouseSettings disabled warehouse description",
"string": "If selected customer won't be able to choose this warehouse as pickup point"
},
"src_dot_warehouses_dot_components_dot_WarehouseSettings_dot_warehouseSettingsLocal": {
"context": "WarehouseSettings local warehouse label",
"string": "Local stock only"
},
"src_dot_warehouses_dot_components_dot_WarehouseSettings_dot_warehouseSettingsLocalDescription": {
"context": "WarehouseSettings local warehouse description",
"string": "If selected customer will be able to choose this warehouse as pickup point. Ordered products will be only fulfilled from this warehouse stock"
},
"src_dot_warehouses_dot_components_dot_WarehouseSettings_dot_warehouseSettingsNoShippingZonesAssigned": {
"context": "WarehouseSettings no shipping zones assigned",
"string": "This warehouse has no shipping zones assigned."
},
"src_dot_warehouses_dot_components_dot_WarehouseSettings_dot_warehouseSettingsPickupTitle": {
"context": "WarehouseSettings pickup title",
"string": "Pickup"
},
"src_dot_warehouses_dot_components_dot_WarehouseSettings_dot_warehouseSettingsPrivateStock": {
"context": "WarehouseSettings private stock label",
"string": "Private Stock"
},
"src_dot_warehouses_dot_components_dot_WarehouseSettings_dot_warehouseSettingsPrivateStockDescription": {
"context": "WarehouseSettings private stock description",
"string": "If enabled stock in this warehouse won't be shown"
},
"src_dot_warehouses_dot_components_dot_WarehouseSettings_dot_warehouseSettingsPublicStock": {
"context": "WarehouseSettings public stock label",
"string": "Public Stock"
},
"src_dot_warehouses_dot_components_dot_WarehouseSettings_dot_warehouseSettingsPublicStockDescription": {
"context": "WarehouseSettings public stock description",
"string": "If enabled stock in this warehouse will be shown"
},
"src_dot_warehouses_dot_components_dot_WarehouseSettings_dot_warehouseSettingsTitle": {
"context": "WarehouseSettings title",
"string": "Settings"
},
"src_dot_warehouses_dot_views_dot_WarehouseCreate_dot_934572530": {
"context": "header",
"string": "Create Warehouse"

2033
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -49,7 +49,7 @@
"faker": "^5.1.0",
"fast-array-diff": "^0.2.0",
"fuzzaldrin": "^2.1.0",
"graphql": "^14.4.2",
"graphql": "^15.4.0",
"graphql-tag": "^2.11.0",
"hotkeys-js": "^3.8.1",
"is-url": "^1.2.4",
@ -96,6 +96,9 @@
"@babel/preset-typescript": "^7.13.0",
"@babel/runtime": "^7.7.6",
"@editorjs/embed": "^2.4.6",
"@graphql-codegen/cli": "^2.1.1",
"@graphql-codegen/fragment-matcher": "^3.1.0",
"@graphql-codegen/typescript": "^2.1.1",
"@pollyjs/adapter-node-http": "^5.0.0",
"@pollyjs/core": "^5.0.0",
"@pollyjs/persister-fs": "^5.0.0",
@ -237,15 +240,16 @@
},
"scripts": {
"build-storybook": "build-storybook -c src/storybook/ -o build/storybook",
"build-types": "apollo client:codegen --target=typescript types --globalTypesFile=src/types/globalTypes.ts",
"build": "webpack -p",
"generate-fragment-types": "graphql-codegen",
"build-types": "apollo client:codegen --target=typescript types --globalTypesFile=src/types/globalTypes.ts && npm run generate-fragment-types",
"build": "npm run generate-fragment-types && webpack -p",
"check-strict-null-errors": "tsc --noEmit --strictNullChecks | node scripts/count-strict-null-check-errors.js",
"check-types": "tsc --noEmit",
"extract-json-messages": "rimraf build/locale && cross-env NODE_ENV=extract babel src 'src/**/*.{ts,tsx}' -o build/dashboard.bundle.js",
"extract-messages": "npm run extract-json-messages && npm run transpile-messages",
"heroku-postbuild": "npm run build",
"serve:lhci": "NODE_ENV=production npm run server",
"start": "webpack-dev-server -d",
"start": "npm run generate-fragment-types && webpack-dev-server -d",
"storybook": "start-storybook -p 3000 -c src/storybook/",
"cy:run": "cypress run",
"cy:run:record": "npm run cy:run -- --record",

View file

@ -997,13 +997,15 @@ type Checkout implements Node & ObjectWithMetadata {
privateMetadata: [MetadataItem]!
metadata: [MetadataItem]!
availableShippingMethods: [ShippingMethod]!
availableCollectionPoints: [Warehouse!]!
availablePaymentGateways: [PaymentGateway!]!
email: String!
isShippingRequired: Boolean!
quantity: Int!
lines: [CheckoutLine]
shippingPrice: TaxedMoney
shippingMethod: ShippingMethod
shippingMethod: ShippingMethod @deprecated(reason: "Use delivery method instead")
deliveryMethod: DeliveryMethod
subtotalPrice: TaxedMoney
token: UUID!
totalPrice: TaxedMoney
@ -1069,6 +1071,11 @@ type CheckoutCustomerDetach {
errors: [CheckoutError!]!
}
type CheckoutDeliveryMethodUpdate {
checkout: Checkout
errors: [CheckoutError!]!
}
type CheckoutEmailUpdate {
checkout: Checkout
checkoutErrors: [CheckoutError!]! @deprecated(reason: "Use errors field instead. This field will be removed in Saleor 4.0.")
@ -1098,6 +1105,7 @@ enum CheckoutErrorCode {
REQUIRED
SHIPPING_ADDRESS_NOT_SET
SHIPPING_METHOD_NOT_APPLICABLE
DELIVERY_METHOD_NOT_APPLICABLE
SHIPPING_METHOD_NOT_SET
SHIPPING_NOT_REQUIRED
TAX_ERROR
@ -1789,6 +1797,8 @@ type DeletePrivateMetadata {
item: ObjectWithMetadata
}
union DeliveryMethod = Warehouse | ShippingMethod
type DigitalContent implements Node & ObjectWithMetadata {
useDefaultSettings: Boolean!
automaticFulfillment: Boolean!
@ -3782,7 +3792,8 @@ type Mutation {
checkoutRemovePromoCode(checkoutId: ID, promoCode: String!, token: UUID): CheckoutRemovePromoCode
checkoutPaymentCreate(checkoutId: ID, input: PaymentInput!, token: UUID): CheckoutPaymentCreate
checkoutShippingAddressUpdate(checkoutId: ID, shippingAddress: AddressInput!, token: UUID): CheckoutShippingAddressUpdate
checkoutShippingMethodUpdate(checkoutId: ID, shippingMethodId: ID!, token: UUID): CheckoutShippingMethodUpdate
checkoutShippingMethodUpdate(checkoutId: ID, shippingMethodId: ID!, token: UUID): CheckoutShippingMethodUpdate @deprecated(reason: "Will be removed in Saleor 4.0. Use `checkoutDeliveryMethodUpdate` instead")
checkoutDeliveryMethodUpdate(deliveryMethodId: ID, token: UUID): CheckoutDeliveryMethodUpdate
checkoutLanguageCodeUpdate(checkoutId: ID, languageCode: LanguageCodeEnum!, token: UUID): CheckoutLanguageCodeUpdate
channelCreate(input: ChannelCreateInput!): ChannelCreate
channelUpdate(id: ID!, input: ChannelUpdateInput!): ChannelUpdate
@ -3883,6 +3894,7 @@ type Order implements Node & ObjectWithMetadata {
shippingAddress: Address
shippingMethod: ShippingMethod
shippingMethodName: String
collectionPointName: String
channel: Channel!
shippingPrice: TaxedMoney!
shippingTaxRate: Float!
@ -3899,6 +3911,7 @@ type Order implements Node & ObjectWithMetadata {
lines: [OrderLine]!
actions: [OrderAction]!
availableShippingMethods: [ShippingMethod]
availableCollectionPoints: [Warehouse!]!
invoices: [Invoice]
number: String
original: ID
@ -3918,6 +3931,7 @@ type Order implements Node & ObjectWithMetadata {
totalBalance: Money!
userEmail: String
isShippingRequired: Boolean!
deliveryMethod: DeliveryMethod
languageCode: String! @deprecated(reason: "Use the `languageCodeEnum` field to fetch the language code. This field will be removed in Saleor 4.0.")
languageCodeEnum: LanguageCodeEnum!
discount: Money @deprecated(reason: "Use discounts field. This field will be removed in Saleor 4.0.")
@ -6865,9 +6879,17 @@ type Warehouse implements Node & ObjectWithMetadata {
shippingZones(before: String, after: String, first: Int, last: Int): ShippingZoneCountableConnection!
address: Address!
email: String!
isPrivate: Boolean!
privateMetadata: [MetadataItem]!
metadata: [MetadataItem]!
companyName: String! @deprecated(reason: "Use address.CompanyName. This field will be removed in Saleor 4.0.")
clickAndCollectOption: WarehouseClickAndCollectOptionEnum!
}
enum WarehouseClickAndCollectOptionEnum {
DISABLED
LOCAL
ALL
}
type WarehouseCountableConnection {
@ -6917,8 +6939,10 @@ enum WarehouseErrorCode {
}
input WarehouseFilterInput {
clickAndCollectOption: WarehouseClickAndCollectOptionEnum
search: String
ids: [ID]
isPrivate: Boolean
}
type WarehouseShippingZoneAssign {
@ -6953,6 +6977,8 @@ input WarehouseUpdateInput {
email: String
name: String
address: AddressInput
clickAndCollectOption: WarehouseClickAndCollectOptionEnum
isPrivate: Boolean
}
type Webhook implements Node {
@ -7116,4 +7142,4 @@ union _Entity = App | Address | User | Group | ProductVariant | Product | Produc
type _Service {
sdl: String
}
}

View file

@ -206,10 +206,21 @@ export const fragmentOrderDetails = gql`
shippingAddress {
...AddressFragment
}
deliveryMethod {
__typename
... on ShippingMethod {
id
}
... on Warehouse {
id
clickAndCollectOption
}
}
shippingMethod {
id
}
shippingMethodName
collectionPointName
shippingPrice {
gross {
amount

View file

@ -20,7 +20,7 @@ export interface MetadataFragment_privateMetadata {
}
export interface MetadataFragment {
__typename: "App" | "Warehouse" | "ShippingZone" | "ShippingMethod" | "Product" | "ProductType" | "Attribute" | "Category" | "ProductVariant" | "DigitalContent" | "Collection" | "Page" | "PageType" | "Sale" | "Voucher" | "MenuItem" | "Menu" | "User" | "Checkout" | "GiftCard" | "Order" | "Fulfillment" | "Invoice";
__typename: "App" | "Attribute" | "Category" | "Checkout" | "Collection" | "DigitalContent" | "Fulfillment" | "GiftCard" | "Invoice" | "Menu" | "MenuItem" | "Order" | "Page" | "PageType" | "Product" | "ProductType" | "ProductVariant" | "Sale" | "ShippingMethod" | "ShippingZone" | "User" | "Voucher" | "Warehouse";
metadata: (MetadataFragment_metadata | null)[];
privateMetadata: (MetadataFragment_privateMetadata | null)[];
}

View file

@ -3,7 +3,7 @@
// @generated
// This file was automatically generated and should not be edited.
import { OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
import { OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, WarehouseClickAndCollectOptionEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
// ====================================================
// GraphQL fragment: OrderDetailsFragment
@ -344,6 +344,19 @@ export interface OrderDetailsFragment_shippingAddress {
streetAddress2: string;
}
export interface OrderDetailsFragment_deliveryMethod_ShippingMethod {
__typename: "ShippingMethod";
id: string;
}
export interface OrderDetailsFragment_deliveryMethod_Warehouse {
__typename: "Warehouse";
id: string;
clickAndCollectOption: WarehouseClickAndCollectOptionEnum;
}
export type OrderDetailsFragment_deliveryMethod = OrderDetailsFragment_deliveryMethod_ShippingMethod | OrderDetailsFragment_deliveryMethod_Warehouse;
export interface OrderDetailsFragment_shippingMethod {
__typename: "ShippingMethod";
id: string;
@ -488,8 +501,10 @@ export interface OrderDetailsFragment {
isPaid: boolean;
paymentStatus: PaymentChargeStatusEnum;
shippingAddress: OrderDetailsFragment_shippingAddress | null;
deliveryMethod: OrderDetailsFragment_deliveryMethod | null;
shippingMethod: OrderDetailsFragment_shippingMethod | null;
shippingMethodName: string | null;
collectionPointName: string | null;
shippingPrice: OrderDetailsFragment_shippingPrice;
status: OrderStatus;
subtotal: OrderDetailsFragment_subtotal;

View file

@ -3,6 +3,8 @@
// @generated
// This file was automatically generated and should not be edited.
import { WarehouseClickAndCollectOptionEnum } from "./../../types/globalTypes";
// ====================================================
// GraphQL fragment: WarehouseDetailsFragment
// ====================================================
@ -47,6 +49,8 @@ export interface WarehouseDetailsFragment_address {
export interface WarehouseDetailsFragment {
__typename: "Warehouse";
isPrivate: boolean;
clickAndCollectOption: WarehouseClickAndCollectOptionEnum;
id: string;
name: string;
shippingZones: WarehouseDetailsFragment_shippingZones;

View file

@ -27,6 +27,8 @@ export const warehouseDetailsFragment = gql`
${fragmentAddress}
${warehouseWithShippingFragment}
fragment WarehouseDetailsFragment on Warehouse {
isPrivate
clickAndCollectOption
...WarehouseWithShippingFragment
address {
...AddressFragment

View file

@ -1,6 +1,7 @@
import useAppState from "@saleor/hooks/useAppState";
import { ThemeProvider } from "@saleor/macaw-ui";
import { defaultDataIdFromObject, InMemoryCache } from "apollo-cache-inmemory";
import { IntrospectionFragmentMatcher } from "apollo-cache-inmemory";
import { ApolloClient } from "apollo-client";
import { ApolloLink } from "apollo-link";
import { BatchHttpLink } from "apollo-link-batch-http";
@ -13,6 +14,7 @@ import TagManager from "react-gtm-module";
import { useIntl } from "react-intl";
import { BrowserRouter, Route, Switch } from "react-router-dom";
import introspectionQueryResultData from "../fragmentTypes.json";
import AppsSection from "./apps";
import { ExternalAppProvider } from "./apps/components/ExternalAppContext";
import { appsSection } from "./apps/urls";
@ -68,7 +70,6 @@ import TranslationsSection from "./translations";
import { PermissionEnum } from "./types/globalTypes";
import WarehouseSection from "./warehouses";
import { warehouseSection } from "./warehouses/urls";
if (process.env.GTM_ID) {
TagManager.initialize({ gtmId: GTM_ID });
}
@ -94,8 +95,13 @@ const link = ApolloLink.split(
uploadLink
);
const fragmentMatcher = new IntrospectionFragmentMatcher({
introspectionQueryResultData
});
const apolloClient = new ApolloClient({
cache: new InMemoryCache({
fragmentMatcher,
dataIdFromObject: (obj: any) => {
// We need to set manually shop's ID, since it is singleton and
// API does not return its ID

View file

@ -2,6 +2,7 @@ import { Button, Card, CardContent, Typography } from "@material-ui/core";
import CardTitle from "@saleor/components/CardTitle";
import ExternalLink from "@saleor/components/ExternalLink";
import Form from "@saleor/components/Form";
import FormSpacer from "@saleor/components/FormSpacer";
import Hr from "@saleor/components/Hr";
import Link from "@saleor/components/Link";
import RequirePermissions from "@saleor/components/RequirePermissions";
@ -20,6 +21,8 @@ import { FormattedMessage, useIntl } from "react-intl";
import { customerUrl } from "../../../customers/urls";
import { createHref, maybe } from "../../../misc";
import { OrderDetails_order } from "../../types/OrderDetails";
import { WarehouseClickAndCollectOptionEnum } from "./../../../types/globalTypes";
import messages from "./messages";
const useStyles = makeStyles(
theme => ({
@ -99,6 +102,25 @@ const OrderCustomer: React.FC<OrderCustomerProps> = props => {
const billingAddress = maybe(() => order.billingAddress);
const shippingAddress = maybe(() => order.shippingAddress);
const pickupAnnotation = order => {
if (order?.deliveryMethod?.__typename === "Warehouse") {
return (
<>
<FormSpacer />
<Typography variant="caption" color="textSecondary">
{order?.deliveryMethod?.clickAndCollectOption ===
WarehouseClickAndCollectOptionEnum.LOCAL ? (
<FormattedMessage {...messages.orderCustomerFulfillmentLocal} />
) : (
<FormattedMessage {...messages.orderCustomerFulfillmentAll} />
)}
</Typography>
</>
);
}
return "";
};
return (
<Card>
<CardTitle
@ -305,6 +327,7 @@ const OrderCustomer: React.FC<OrderCustomerProps> = props => {
: shippingAddress.country.country}
</Typography>
<Typography>{shippingAddress.phone}</Typography>
{pickupAnnotation(order)}
</>
)}
</CardContent>

View file

@ -0,0 +1,14 @@
import { defineMessages } from "react-intl";
const messages = defineMessages({
orderCustomerFulfillmentAll: {
defaultMessage: "Fulfill from All Warehouses",
description: "OrderCustomer Fulfillment from All Warehouses"
},
orderCustomerFulfillmentLocal: {
defaultMessage: "Fulfill from Local Stock",
description: "OrderCustomer Fulfillment from Local Warehouse"
}
});
export default messages;

View file

@ -8,6 +8,7 @@ export const orderToFulfill: OrderFulfillData_order = {
__typename: "Order",
id: "T3JkZXI6Mg==",
isPaid: true,
deliveryMethod: null,
lines: [
{
__typename: "OrderLine",

View file

@ -15,6 +15,7 @@ import {
OrderStatus
} from "../../../types/globalTypes";
import { OrderDetails_order } from "../../types/OrderDetails";
import messages from "./messages";
const useStyles = makeStyles(
theme => ({
@ -63,6 +64,28 @@ const OrderPayment: React.FC<OrderPaymentProps> = props => {
order?.totalCaptured &&
order?.total?.gross &&
subtractMoney(order.totalCaptured, order.total.gross);
const getDeliveryMethodName = order => {
if (
order?.shippingMethodName === undefined &&
order?.shippingPrice === undefined &&
order?.collectionPointName === undefined
) {
return <Skeleton />;
}
if (order.shippingMethodName === null) {
return order.collectionPointName == null ? (
<FormattedMessage {...messages.orderPaymentShippingDoesNotApply} />
) : (
<FormattedMessage
{...messages.orderPaymentClickAndCollectShippingMethod}
/>
);
}
return order.shippingMethodName;
};
return (
<Card>
<CardTitle
@ -142,20 +165,7 @@ const OrderPayment: React.FC<OrderPaymentProps> = props => {
description="order shipping method name"
/>
</td>
<td>
{maybe(() => order.shippingMethodName) === undefined &&
maybe(() => order.shippingPrice) === undefined ? (
<Skeleton />
) : order.shippingMethodName === null ? (
intl.formatMessage({
defaultMessage: "does not apply",
description: "order does not require shipping",
id: "orderPaymentShippingDoesNotApply"
})
) : (
order.shippingMethodName
)}
</td>
<td>{getDeliveryMethodName(order)}</td>
<td className={classes.textRight}>
{maybe(() => order.shippingPrice.gross) === undefined ? (
<Skeleton />

View file

@ -0,0 +1,14 @@
import { defineMessages } from "react-intl";
const messages = defineMessages({
orderPaymentClickAndCollectShippingMethod: {
defaultMessage: "click&collect",
description: "OrderPayment click&collect shipping method"
},
orderPaymentShippingDoesNotApply: {
defaultMessage: "does not apply",
description: "OrderPayment does not require shipping"
}
});
export default messages;

View file

@ -3,7 +3,7 @@ import { InvoiceFragment } from "@saleor/fragments/types/InvoiceFragment";
import { OrderSettingsFragment } from "@saleor/fragments/types/OrderSettingsFragment";
import { ShopOrderSettingsFragment } from "@saleor/fragments/types/ShopOrderSettingsFragment";
import { SearchCustomers_search_edges_node } from "@saleor/searches/types/SearchCustomers";
import { warehouseList } from "@saleor/warehouses/fixtures";
import { warehouseForPickup, warehouseList } from "@saleor/warehouses/fixtures";
import { MessageDescriptor } from "react-intl";
import { transformOrderStatus, transformPaymentStatus } from "../misc";
@ -1319,6 +1319,8 @@ export const order = (placeholder: string): OrderDetails_order => ({
},
shippingMethod: null,
shippingMethodName: "Registred priority",
collectionPointName: "Warehouse",
deliveryMethod: warehouseForPickup,
shippingPrice: {
__typename: "TaxedMoney",
gross: {
@ -1534,6 +1536,8 @@ export const draftOrder = (placeholder: string): OrderDetails_order => ({
shippingAddress: null,
shippingMethod: null,
shippingMethodName: null,
collectionPointName: null,
deliveryMethod: null,
shippingPrice: {
__typename: "TaxedMoney" as "TaxedMoney",
gross: {

View file

@ -227,6 +227,16 @@ const orderFulfillData = gql`
order(id: $orderId) {
id
isPaid
deliveryMethod {
__typename
... on ShippingMethod {
id
}
... on Warehouse {
id
clickAndCollectOption
}
}
lines {
id
isShippingRequired

View file

@ -3,7 +3,7 @@
// @generated
// This file was automatically generated and should not be edited.
import { OrderFulfillInput, OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
import { OrderFulfillInput, OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, WarehouseClickAndCollectOptionEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
// ====================================================
// GraphQL mutation operation: FulfillOrder
@ -353,6 +353,19 @@ export interface FulfillOrder_orderFulfill_order_shippingAddress {
streetAddress2: string;
}
export interface FulfillOrder_orderFulfill_order_deliveryMethod_ShippingMethod {
__typename: "ShippingMethod";
id: string;
}
export interface FulfillOrder_orderFulfill_order_deliveryMethod_Warehouse {
__typename: "Warehouse";
id: string;
clickAndCollectOption: WarehouseClickAndCollectOptionEnum;
}
export type FulfillOrder_orderFulfill_order_deliveryMethod = FulfillOrder_orderFulfill_order_deliveryMethod_ShippingMethod | FulfillOrder_orderFulfill_order_deliveryMethod_Warehouse;
export interface FulfillOrder_orderFulfill_order_shippingMethod {
__typename: "ShippingMethod";
id: string;
@ -497,8 +510,10 @@ export interface FulfillOrder_orderFulfill_order {
isPaid: boolean;
paymentStatus: PaymentChargeStatusEnum;
shippingAddress: FulfillOrder_orderFulfill_order_shippingAddress | null;
deliveryMethod: FulfillOrder_orderFulfill_order_deliveryMethod | null;
shippingMethod: FulfillOrder_orderFulfill_order_shippingMethod | null;
shippingMethodName: string | null;
collectionPointName: string | null;
shippingPrice: FulfillOrder_orderFulfill_order_shippingPrice;
status: OrderStatus;
subtotal: FulfillOrder_orderFulfill_order_subtotal;

View file

@ -3,7 +3,7 @@
// @generated
// This file was automatically generated and should not be edited.
import { OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
import { OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, WarehouseClickAndCollectOptionEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
// ====================================================
// GraphQL mutation operation: OrderCancel
@ -351,6 +351,19 @@ export interface OrderCancel_orderCancel_order_shippingAddress {
streetAddress2: string;
}
export interface OrderCancel_orderCancel_order_deliveryMethod_ShippingMethod {
__typename: "ShippingMethod";
id: string;
}
export interface OrderCancel_orderCancel_order_deliveryMethod_Warehouse {
__typename: "Warehouse";
id: string;
clickAndCollectOption: WarehouseClickAndCollectOptionEnum;
}
export type OrderCancel_orderCancel_order_deliveryMethod = OrderCancel_orderCancel_order_deliveryMethod_ShippingMethod | OrderCancel_orderCancel_order_deliveryMethod_Warehouse;
export interface OrderCancel_orderCancel_order_shippingMethod {
__typename: "ShippingMethod";
id: string;
@ -495,8 +508,10 @@ export interface OrderCancel_orderCancel_order {
isPaid: boolean;
paymentStatus: PaymentChargeStatusEnum;
shippingAddress: OrderCancel_orderCancel_order_shippingAddress | null;
deliveryMethod: OrderCancel_orderCancel_order_deliveryMethod | null;
shippingMethod: OrderCancel_orderCancel_order_shippingMethod | null;
shippingMethodName: string | null;
collectionPointName: string | null;
shippingPrice: OrderCancel_orderCancel_order_shippingPrice;
status: OrderStatus;
subtotal: OrderCancel_orderCancel_order_subtotal;

View file

@ -3,7 +3,7 @@
// @generated
// This file was automatically generated and should not be edited.
import { OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
import { OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, WarehouseClickAndCollectOptionEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
// ====================================================
// GraphQL mutation operation: OrderCapture
@ -351,6 +351,19 @@ export interface OrderCapture_orderCapture_order_shippingAddress {
streetAddress2: string;
}
export interface OrderCapture_orderCapture_order_deliveryMethod_ShippingMethod {
__typename: "ShippingMethod";
id: string;
}
export interface OrderCapture_orderCapture_order_deliveryMethod_Warehouse {
__typename: "Warehouse";
id: string;
clickAndCollectOption: WarehouseClickAndCollectOptionEnum;
}
export type OrderCapture_orderCapture_order_deliveryMethod = OrderCapture_orderCapture_order_deliveryMethod_ShippingMethod | OrderCapture_orderCapture_order_deliveryMethod_Warehouse;
export interface OrderCapture_orderCapture_order_shippingMethod {
__typename: "ShippingMethod";
id: string;
@ -495,8 +508,10 @@ export interface OrderCapture_orderCapture_order {
isPaid: boolean;
paymentStatus: PaymentChargeStatusEnum;
shippingAddress: OrderCapture_orderCapture_order_shippingAddress | null;
deliveryMethod: OrderCapture_orderCapture_order_deliveryMethod | null;
shippingMethod: OrderCapture_orderCapture_order_shippingMethod | null;
shippingMethodName: string | null;
collectionPointName: string | null;
shippingPrice: OrderCapture_orderCapture_order_shippingPrice;
status: OrderStatus;
subtotal: OrderCapture_orderCapture_order_subtotal;

View file

@ -3,7 +3,7 @@
// @generated
// This file was automatically generated and should not be edited.
import { OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
import { OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, WarehouseClickAndCollectOptionEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
// ====================================================
// GraphQL mutation operation: OrderConfirm
@ -351,6 +351,19 @@ export interface OrderConfirm_orderConfirm_order_shippingAddress {
streetAddress2: string;
}
export interface OrderConfirm_orderConfirm_order_deliveryMethod_ShippingMethod {
__typename: "ShippingMethod";
id: string;
}
export interface OrderConfirm_orderConfirm_order_deliveryMethod_Warehouse {
__typename: "Warehouse";
id: string;
clickAndCollectOption: WarehouseClickAndCollectOptionEnum;
}
export type OrderConfirm_orderConfirm_order_deliveryMethod = OrderConfirm_orderConfirm_order_deliveryMethod_ShippingMethod | OrderConfirm_orderConfirm_order_deliveryMethod_Warehouse;
export interface OrderConfirm_orderConfirm_order_shippingMethod {
__typename: "ShippingMethod";
id: string;
@ -495,8 +508,10 @@ export interface OrderConfirm_orderConfirm_order {
isPaid: boolean;
paymentStatus: PaymentChargeStatusEnum;
shippingAddress: OrderConfirm_orderConfirm_order_shippingAddress | null;
deliveryMethod: OrderConfirm_orderConfirm_order_deliveryMethod | null;
shippingMethod: OrderConfirm_orderConfirm_order_shippingMethod | null;
shippingMethodName: string | null;
collectionPointName: string | null;
shippingPrice: OrderConfirm_orderConfirm_order_shippingPrice;
status: OrderStatus;
subtotal: OrderConfirm_orderConfirm_order_subtotal;

View file

@ -3,7 +3,7 @@
// @generated
// This file was automatically generated and should not be edited.
import { OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, OrderStatus, OrderAction, JobStatusEnum, WeightUnitsEnum } from "./../../types/globalTypes";
import { OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, WarehouseClickAndCollectOptionEnum, OrderStatus, OrderAction, JobStatusEnum, WeightUnitsEnum } from "./../../types/globalTypes";
// ====================================================
// GraphQL query operation: OrderDetails
@ -344,6 +344,19 @@ export interface OrderDetails_order_shippingAddress {
streetAddress2: string;
}
export interface OrderDetails_order_deliveryMethod_ShippingMethod {
__typename: "ShippingMethod";
id: string;
}
export interface OrderDetails_order_deliveryMethod_Warehouse {
__typename: "Warehouse";
id: string;
clickAndCollectOption: WarehouseClickAndCollectOptionEnum;
}
export type OrderDetails_order_deliveryMethod = OrderDetails_order_deliveryMethod_ShippingMethod | OrderDetails_order_deliveryMethod_Warehouse;
export interface OrderDetails_order_shippingMethod {
__typename: "ShippingMethod";
id: string;
@ -488,8 +501,10 @@ export interface OrderDetails_order {
isPaid: boolean;
paymentStatus: PaymentChargeStatusEnum;
shippingAddress: OrderDetails_order_shippingAddress | null;
deliveryMethod: OrderDetails_order_deliveryMethod | null;
shippingMethod: OrderDetails_order_shippingMethod | null;
shippingMethodName: string | null;
collectionPointName: string | null;
shippingPrice: OrderDetails_order_shippingPrice;
status: OrderStatus;
subtotal: OrderDetails_order_subtotal;

View file

@ -3,7 +3,7 @@
// @generated
// This file was automatically generated and should not be edited.
import { OrderDiscountCommonInput, OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
import { OrderDiscountCommonInput, OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, WarehouseClickAndCollectOptionEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
// ====================================================
// GraphQL mutation operation: OrderDiscountAdd
@ -351,6 +351,19 @@ export interface OrderDiscountAdd_orderDiscountAdd_order_shippingAddress {
streetAddress2: string;
}
export interface OrderDiscountAdd_orderDiscountAdd_order_deliveryMethod_ShippingMethod {
__typename: "ShippingMethod";
id: string;
}
export interface OrderDiscountAdd_orderDiscountAdd_order_deliveryMethod_Warehouse {
__typename: "Warehouse";
id: string;
clickAndCollectOption: WarehouseClickAndCollectOptionEnum;
}
export type OrderDiscountAdd_orderDiscountAdd_order_deliveryMethod = OrderDiscountAdd_orderDiscountAdd_order_deliveryMethod_ShippingMethod | OrderDiscountAdd_orderDiscountAdd_order_deliveryMethod_Warehouse;
export interface OrderDiscountAdd_orderDiscountAdd_order_shippingMethod {
__typename: "ShippingMethod";
id: string;
@ -495,8 +508,10 @@ export interface OrderDiscountAdd_orderDiscountAdd_order {
isPaid: boolean;
paymentStatus: PaymentChargeStatusEnum;
shippingAddress: OrderDiscountAdd_orderDiscountAdd_order_shippingAddress | null;
deliveryMethod: OrderDiscountAdd_orderDiscountAdd_order_deliveryMethod | null;
shippingMethod: OrderDiscountAdd_orderDiscountAdd_order_shippingMethod | null;
shippingMethodName: string | null;
collectionPointName: string | null;
shippingPrice: OrderDiscountAdd_orderDiscountAdd_order_shippingPrice;
status: OrderStatus;
subtotal: OrderDiscountAdd_orderDiscountAdd_order_subtotal;

View file

@ -3,7 +3,7 @@
// @generated
// This file was automatically generated and should not be edited.
import { OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
import { OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, WarehouseClickAndCollectOptionEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
// ====================================================
// GraphQL mutation operation: OrderDiscountDelete
@ -351,6 +351,19 @@ export interface OrderDiscountDelete_orderDiscountDelete_order_shippingAddress {
streetAddress2: string;
}
export interface OrderDiscountDelete_orderDiscountDelete_order_deliveryMethod_ShippingMethod {
__typename: "ShippingMethod";
id: string;
}
export interface OrderDiscountDelete_orderDiscountDelete_order_deliveryMethod_Warehouse {
__typename: "Warehouse";
id: string;
clickAndCollectOption: WarehouseClickAndCollectOptionEnum;
}
export type OrderDiscountDelete_orderDiscountDelete_order_deliveryMethod = OrderDiscountDelete_orderDiscountDelete_order_deliveryMethod_ShippingMethod | OrderDiscountDelete_orderDiscountDelete_order_deliveryMethod_Warehouse;
export interface OrderDiscountDelete_orderDiscountDelete_order_shippingMethod {
__typename: "ShippingMethod";
id: string;
@ -495,8 +508,10 @@ export interface OrderDiscountDelete_orderDiscountDelete_order {
isPaid: boolean;
paymentStatus: PaymentChargeStatusEnum;
shippingAddress: OrderDiscountDelete_orderDiscountDelete_order_shippingAddress | null;
deliveryMethod: OrderDiscountDelete_orderDiscountDelete_order_deliveryMethod | null;
shippingMethod: OrderDiscountDelete_orderDiscountDelete_order_shippingMethod | null;
shippingMethodName: string | null;
collectionPointName: string | null;
shippingPrice: OrderDiscountDelete_orderDiscountDelete_order_shippingPrice;
status: OrderStatus;
subtotal: OrderDiscountDelete_orderDiscountDelete_order_subtotal;

View file

@ -3,7 +3,7 @@
// @generated
// This file was automatically generated and should not be edited.
import { OrderDiscountCommonInput, OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
import { OrderDiscountCommonInput, OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, WarehouseClickAndCollectOptionEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
// ====================================================
// GraphQL mutation operation: OrderDiscountUpdate
@ -351,6 +351,19 @@ export interface OrderDiscountUpdate_orderDiscountUpdate_order_shippingAddress {
streetAddress2: string;
}
export interface OrderDiscountUpdate_orderDiscountUpdate_order_deliveryMethod_ShippingMethod {
__typename: "ShippingMethod";
id: string;
}
export interface OrderDiscountUpdate_orderDiscountUpdate_order_deliveryMethod_Warehouse {
__typename: "Warehouse";
id: string;
clickAndCollectOption: WarehouseClickAndCollectOptionEnum;
}
export type OrderDiscountUpdate_orderDiscountUpdate_order_deliveryMethod = OrderDiscountUpdate_orderDiscountUpdate_order_deliveryMethod_ShippingMethod | OrderDiscountUpdate_orderDiscountUpdate_order_deliveryMethod_Warehouse;
export interface OrderDiscountUpdate_orderDiscountUpdate_order_shippingMethod {
__typename: "ShippingMethod";
id: string;
@ -495,8 +508,10 @@ export interface OrderDiscountUpdate_orderDiscountUpdate_order {
isPaid: boolean;
paymentStatus: PaymentChargeStatusEnum;
shippingAddress: OrderDiscountUpdate_orderDiscountUpdate_order_shippingAddress | null;
deliveryMethod: OrderDiscountUpdate_orderDiscountUpdate_order_deliveryMethod | null;
shippingMethod: OrderDiscountUpdate_orderDiscountUpdate_order_shippingMethod | null;
shippingMethodName: string | null;
collectionPointName: string | null;
shippingPrice: OrderDiscountUpdate_orderDiscountUpdate_order_shippingPrice;
status: OrderStatus;
subtotal: OrderDiscountUpdate_orderDiscountUpdate_order_subtotal;

View file

@ -3,7 +3,7 @@
// @generated
// This file was automatically generated and should not be edited.
import { OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
import { OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, WarehouseClickAndCollectOptionEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
// ====================================================
// GraphQL mutation operation: OrderDraftCancel
@ -351,6 +351,19 @@ export interface OrderDraftCancel_draftOrderDelete_order_shippingAddress {
streetAddress2: string;
}
export interface OrderDraftCancel_draftOrderDelete_order_deliveryMethod_ShippingMethod {
__typename: "ShippingMethod";
id: string;
}
export interface OrderDraftCancel_draftOrderDelete_order_deliveryMethod_Warehouse {
__typename: "Warehouse";
id: string;
clickAndCollectOption: WarehouseClickAndCollectOptionEnum;
}
export type OrderDraftCancel_draftOrderDelete_order_deliveryMethod = OrderDraftCancel_draftOrderDelete_order_deliveryMethod_ShippingMethod | OrderDraftCancel_draftOrderDelete_order_deliveryMethod_Warehouse;
export interface OrderDraftCancel_draftOrderDelete_order_shippingMethod {
__typename: "ShippingMethod";
id: string;
@ -495,8 +508,10 @@ export interface OrderDraftCancel_draftOrderDelete_order {
isPaid: boolean;
paymentStatus: PaymentChargeStatusEnum;
shippingAddress: OrderDraftCancel_draftOrderDelete_order_shippingAddress | null;
deliveryMethod: OrderDraftCancel_draftOrderDelete_order_deliveryMethod | null;
shippingMethod: OrderDraftCancel_draftOrderDelete_order_shippingMethod | null;
shippingMethodName: string | null;
collectionPointName: string | null;
shippingPrice: OrderDraftCancel_draftOrderDelete_order_shippingPrice;
status: OrderStatus;
subtotal: OrderDraftCancel_draftOrderDelete_order_subtotal;

View file

@ -3,7 +3,7 @@
// @generated
// This file was automatically generated and should not be edited.
import { OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
import { OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, WarehouseClickAndCollectOptionEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
// ====================================================
// GraphQL mutation operation: OrderDraftFinalize
@ -351,6 +351,19 @@ export interface OrderDraftFinalize_draftOrderComplete_order_shippingAddress {
streetAddress2: string;
}
export interface OrderDraftFinalize_draftOrderComplete_order_deliveryMethod_ShippingMethod {
__typename: "ShippingMethod";
id: string;
}
export interface OrderDraftFinalize_draftOrderComplete_order_deliveryMethod_Warehouse {
__typename: "Warehouse";
id: string;
clickAndCollectOption: WarehouseClickAndCollectOptionEnum;
}
export type OrderDraftFinalize_draftOrderComplete_order_deliveryMethod = OrderDraftFinalize_draftOrderComplete_order_deliveryMethod_ShippingMethod | OrderDraftFinalize_draftOrderComplete_order_deliveryMethod_Warehouse;
export interface OrderDraftFinalize_draftOrderComplete_order_shippingMethod {
__typename: "ShippingMethod";
id: string;
@ -495,8 +508,10 @@ export interface OrderDraftFinalize_draftOrderComplete_order {
isPaid: boolean;
paymentStatus: PaymentChargeStatusEnum;
shippingAddress: OrderDraftFinalize_draftOrderComplete_order_shippingAddress | null;
deliveryMethod: OrderDraftFinalize_draftOrderComplete_order_deliveryMethod | null;
shippingMethod: OrderDraftFinalize_draftOrderComplete_order_shippingMethod | null;
shippingMethodName: string | null;
collectionPointName: string | null;
shippingPrice: OrderDraftFinalize_draftOrderComplete_order_shippingPrice;
status: OrderStatus;
subtotal: OrderDraftFinalize_draftOrderComplete_order_subtotal;

View file

@ -3,7 +3,7 @@
// @generated
// This file was automatically generated and should not be edited.
import { DraftOrderInput, OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
import { DraftOrderInput, OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, WarehouseClickAndCollectOptionEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
// ====================================================
// GraphQL mutation operation: OrderDraftUpdate
@ -351,6 +351,19 @@ export interface OrderDraftUpdate_draftOrderUpdate_order_shippingAddress {
streetAddress2: string;
}
export interface OrderDraftUpdate_draftOrderUpdate_order_deliveryMethod_ShippingMethod {
__typename: "ShippingMethod";
id: string;
}
export interface OrderDraftUpdate_draftOrderUpdate_order_deliveryMethod_Warehouse {
__typename: "Warehouse";
id: string;
clickAndCollectOption: WarehouseClickAndCollectOptionEnum;
}
export type OrderDraftUpdate_draftOrderUpdate_order_deliveryMethod = OrderDraftUpdate_draftOrderUpdate_order_deliveryMethod_ShippingMethod | OrderDraftUpdate_draftOrderUpdate_order_deliveryMethod_Warehouse;
export interface OrderDraftUpdate_draftOrderUpdate_order_shippingMethod {
__typename: "ShippingMethod";
id: string;
@ -495,8 +508,10 @@ export interface OrderDraftUpdate_draftOrderUpdate_order {
isPaid: boolean;
paymentStatus: PaymentChargeStatusEnum;
shippingAddress: OrderDraftUpdate_draftOrderUpdate_order_shippingAddress | null;
deliveryMethod: OrderDraftUpdate_draftOrderUpdate_order_deliveryMethod | null;
shippingMethod: OrderDraftUpdate_draftOrderUpdate_order_shippingMethod | null;
shippingMethodName: string | null;
collectionPointName: string | null;
shippingPrice: OrderDraftUpdate_draftOrderUpdate_order_shippingPrice;
status: OrderStatus;
subtotal: OrderDraftUpdate_draftOrderUpdate_order_subtotal;

View file

@ -3,10 +3,24 @@
// @generated
// This file was automatically generated and should not be edited.
import { WarehouseClickAndCollectOptionEnum } from "./../../types/globalTypes";
// ====================================================
// GraphQL query operation: OrderFulfillData
// ====================================================
export interface OrderFulfillData_order_deliveryMethod_ShippingMethod {
__typename: "ShippingMethod";
}
export interface OrderFulfillData_order_deliveryMethod_Warehouse {
__typename: "Warehouse";
id: string;
clickAndCollectOption: WarehouseClickAndCollectOptionEnum;
}
export type OrderFulfillData_order_deliveryMethod = OrderFulfillData_order_deliveryMethod_ShippingMethod | OrderFulfillData_order_deliveryMethod_Warehouse;
export interface OrderFulfillData_order_lines_allocations_warehouse {
__typename: "Warehouse";
id: string;
@ -75,6 +89,7 @@ export interface OrderFulfillData_order {
__typename: "Order";
id: string;
isPaid: boolean;
deliveryMethod: OrderFulfillData_order_deliveryMethod | null;
lines: (OrderFulfillData_order_lines | null)[];
number: string | null;
}

View file

@ -3,7 +3,7 @@
// @generated
// This file was automatically generated and should not be edited.
import { OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
import { OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, WarehouseClickAndCollectOptionEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
// ====================================================
// GraphQL mutation operation: OrderFulfillmentApprove
@ -351,6 +351,19 @@ export interface OrderFulfillmentApprove_orderFulfillmentApprove_order_shippingA
streetAddress2: string;
}
export interface OrderFulfillmentApprove_orderFulfillmentApprove_order_deliveryMethod_ShippingMethod {
__typename: "ShippingMethod";
id: string;
}
export interface OrderFulfillmentApprove_orderFulfillmentApprove_order_deliveryMethod_Warehouse {
__typename: "Warehouse";
id: string;
clickAndCollectOption: WarehouseClickAndCollectOptionEnum;
}
export type OrderFulfillmentApprove_orderFulfillmentApprove_order_deliveryMethod = OrderFulfillmentApprove_orderFulfillmentApprove_order_deliveryMethod_ShippingMethod | OrderFulfillmentApprove_orderFulfillmentApprove_order_deliveryMethod_Warehouse;
export interface OrderFulfillmentApprove_orderFulfillmentApprove_order_shippingMethod {
__typename: "ShippingMethod";
id: string;
@ -495,8 +508,10 @@ export interface OrderFulfillmentApprove_orderFulfillmentApprove_order {
isPaid: boolean;
paymentStatus: PaymentChargeStatusEnum;
shippingAddress: OrderFulfillmentApprove_orderFulfillmentApprove_order_shippingAddress | null;
deliveryMethod: OrderFulfillmentApprove_orderFulfillmentApprove_order_deliveryMethod | null;
shippingMethod: OrderFulfillmentApprove_orderFulfillmentApprove_order_shippingMethod | null;
shippingMethodName: string | null;
collectionPointName: string | null;
shippingPrice: OrderFulfillmentApprove_orderFulfillmentApprove_order_shippingPrice;
status: OrderStatus;
subtotal: OrderFulfillmentApprove_orderFulfillmentApprove_order_subtotal;

View file

@ -3,7 +3,7 @@
// @generated
// This file was automatically generated and should not be edited.
import { FulfillmentCancelInput, OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
import { FulfillmentCancelInput, OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, WarehouseClickAndCollectOptionEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
// ====================================================
// GraphQL mutation operation: OrderFulfillmentCancel
@ -351,6 +351,19 @@ export interface OrderFulfillmentCancel_orderFulfillmentCancel_order_shippingAdd
streetAddress2: string;
}
export interface OrderFulfillmentCancel_orderFulfillmentCancel_order_deliveryMethod_ShippingMethod {
__typename: "ShippingMethod";
id: string;
}
export interface OrderFulfillmentCancel_orderFulfillmentCancel_order_deliveryMethod_Warehouse {
__typename: "Warehouse";
id: string;
clickAndCollectOption: WarehouseClickAndCollectOptionEnum;
}
export type OrderFulfillmentCancel_orderFulfillmentCancel_order_deliveryMethod = OrderFulfillmentCancel_orderFulfillmentCancel_order_deliveryMethod_ShippingMethod | OrderFulfillmentCancel_orderFulfillmentCancel_order_deliveryMethod_Warehouse;
export interface OrderFulfillmentCancel_orderFulfillmentCancel_order_shippingMethod {
__typename: "ShippingMethod";
id: string;
@ -495,8 +508,10 @@ export interface OrderFulfillmentCancel_orderFulfillmentCancel_order {
isPaid: boolean;
paymentStatus: PaymentChargeStatusEnum;
shippingAddress: OrderFulfillmentCancel_orderFulfillmentCancel_order_shippingAddress | null;
deliveryMethod: OrderFulfillmentCancel_orderFulfillmentCancel_order_deliveryMethod | null;
shippingMethod: OrderFulfillmentCancel_orderFulfillmentCancel_order_shippingMethod | null;
shippingMethodName: string | null;
collectionPointName: string | null;
shippingPrice: OrderFulfillmentCancel_orderFulfillmentCancel_order_shippingPrice;
status: OrderStatus;
subtotal: OrderFulfillmentCancel_orderFulfillmentCancel_order_subtotal;

View file

@ -3,7 +3,7 @@
// @generated
// This file was automatically generated and should not be edited.
import { OrderRefundProductsInput, OrderErrorCode, AddressTypeEnum, DiscountValueTypeEnum, FulfillmentStatus, OrderDiscountType, OrderEventsEmailsEnum, OrderEventsEnum, PaymentChargeStatusEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
import { OrderRefundProductsInput, OrderErrorCode, AddressTypeEnum, DiscountValueTypeEnum, FulfillmentStatus, OrderDiscountType, OrderEventsEmailsEnum, OrderEventsEnum, PaymentChargeStatusEnum, WarehouseClickAndCollectOptionEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
// ====================================================
// GraphQL mutation operation: OrderFulfillmentRefundProducts
@ -447,6 +447,19 @@ export interface OrderFulfillmentRefundProducts_orderFulfillmentRefundProducts_o
streetAddress2: string;
}
export interface OrderFulfillmentRefundProducts_orderFulfillmentRefundProducts_order_deliveryMethod_ShippingMethod {
__typename: "ShippingMethod";
id: string;
}
export interface OrderFulfillmentRefundProducts_orderFulfillmentRefundProducts_order_deliveryMethod_Warehouse {
__typename: "Warehouse";
id: string;
clickAndCollectOption: WarehouseClickAndCollectOptionEnum;
}
export type OrderFulfillmentRefundProducts_orderFulfillmentRefundProducts_order_deliveryMethod = OrderFulfillmentRefundProducts_orderFulfillmentRefundProducts_order_deliveryMethod_ShippingMethod | OrderFulfillmentRefundProducts_orderFulfillmentRefundProducts_order_deliveryMethod_Warehouse;
export interface OrderFulfillmentRefundProducts_orderFulfillmentRefundProducts_order_shippingMethod {
__typename: "ShippingMethod";
id: string;
@ -591,8 +604,10 @@ export interface OrderFulfillmentRefundProducts_orderFulfillmentRefundProducts_o
isPaid: boolean;
paymentStatus: PaymentChargeStatusEnum;
shippingAddress: OrderFulfillmentRefundProducts_orderFulfillmentRefundProducts_order_shippingAddress | null;
deliveryMethod: OrderFulfillmentRefundProducts_orderFulfillmentRefundProducts_order_deliveryMethod | null;
shippingMethod: OrderFulfillmentRefundProducts_orderFulfillmentRefundProducts_order_shippingMethod | null;
shippingMethodName: string | null;
collectionPointName: string | null;
shippingPrice: OrderFulfillmentRefundProducts_orderFulfillmentRefundProducts_order_shippingPrice;
status: OrderStatus;
subtotal: OrderFulfillmentRefundProducts_orderFulfillmentRefundProducts_order_subtotal;

View file

@ -3,7 +3,7 @@
// @generated
// This file was automatically generated and should not be edited.
import { FulfillmentUpdateTrackingInput, OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
import { FulfillmentUpdateTrackingInput, OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, WarehouseClickAndCollectOptionEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
// ====================================================
// GraphQL mutation operation: OrderFulfillmentUpdateTracking
@ -351,6 +351,19 @@ export interface OrderFulfillmentUpdateTracking_orderFulfillmentUpdateTracking_o
streetAddress2: string;
}
export interface OrderFulfillmentUpdateTracking_orderFulfillmentUpdateTracking_order_deliveryMethod_ShippingMethod {
__typename: "ShippingMethod";
id: string;
}
export interface OrderFulfillmentUpdateTracking_orderFulfillmentUpdateTracking_order_deliveryMethod_Warehouse {
__typename: "Warehouse";
id: string;
clickAndCollectOption: WarehouseClickAndCollectOptionEnum;
}
export type OrderFulfillmentUpdateTracking_orderFulfillmentUpdateTracking_order_deliveryMethod = OrderFulfillmentUpdateTracking_orderFulfillmentUpdateTracking_order_deliveryMethod_ShippingMethod | OrderFulfillmentUpdateTracking_orderFulfillmentUpdateTracking_order_deliveryMethod_Warehouse;
export interface OrderFulfillmentUpdateTracking_orderFulfillmentUpdateTracking_order_shippingMethod {
__typename: "ShippingMethod";
id: string;
@ -495,8 +508,10 @@ export interface OrderFulfillmentUpdateTracking_orderFulfillmentUpdateTracking_o
isPaid: boolean;
paymentStatus: PaymentChargeStatusEnum;
shippingAddress: OrderFulfillmentUpdateTracking_orderFulfillmentUpdateTracking_order_shippingAddress | null;
deliveryMethod: OrderFulfillmentUpdateTracking_orderFulfillmentUpdateTracking_order_deliveryMethod | null;
shippingMethod: OrderFulfillmentUpdateTracking_orderFulfillmentUpdateTracking_order_shippingMethod | null;
shippingMethodName: string | null;
collectionPointName: string | null;
shippingPrice: OrderFulfillmentUpdateTracking_orderFulfillmentUpdateTracking_order_shippingPrice;
status: OrderStatus;
subtotal: OrderFulfillmentUpdateTracking_orderFulfillmentUpdateTracking_order_subtotal;

View file

@ -3,7 +3,7 @@
// @generated
// This file was automatically generated and should not be edited.
import { OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
import { OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, WarehouseClickAndCollectOptionEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
// ====================================================
// GraphQL mutation operation: OrderLineDelete
@ -351,6 +351,19 @@ export interface OrderLineDelete_orderLineDelete_order_shippingAddress {
streetAddress2: string;
}
export interface OrderLineDelete_orderLineDelete_order_deliveryMethod_ShippingMethod {
__typename: "ShippingMethod";
id: string;
}
export interface OrderLineDelete_orderLineDelete_order_deliveryMethod_Warehouse {
__typename: "Warehouse";
id: string;
clickAndCollectOption: WarehouseClickAndCollectOptionEnum;
}
export type OrderLineDelete_orderLineDelete_order_deliveryMethod = OrderLineDelete_orderLineDelete_order_deliveryMethod_ShippingMethod | OrderLineDelete_orderLineDelete_order_deliveryMethod_Warehouse;
export interface OrderLineDelete_orderLineDelete_order_shippingMethod {
__typename: "ShippingMethod";
id: string;
@ -495,8 +508,10 @@ export interface OrderLineDelete_orderLineDelete_order {
isPaid: boolean;
paymentStatus: PaymentChargeStatusEnum;
shippingAddress: OrderLineDelete_orderLineDelete_order_shippingAddress | null;
deliveryMethod: OrderLineDelete_orderLineDelete_order_deliveryMethod | null;
shippingMethod: OrderLineDelete_orderLineDelete_order_shippingMethod | null;
shippingMethodName: string | null;
collectionPointName: string | null;
shippingPrice: OrderLineDelete_orderLineDelete_order_shippingPrice;
status: OrderStatus;
subtotal: OrderLineDelete_orderLineDelete_order_subtotal;

View file

@ -3,7 +3,7 @@
// @generated
// This file was automatically generated and should not be edited.
import { OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
import { OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, WarehouseClickAndCollectOptionEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
// ====================================================
// GraphQL mutation operation: OrderLineDiscountRemove
@ -351,6 +351,19 @@ export interface OrderLineDiscountRemove_orderLineDiscountRemove_order_shippingA
streetAddress2: string;
}
export interface OrderLineDiscountRemove_orderLineDiscountRemove_order_deliveryMethod_ShippingMethod {
__typename: "ShippingMethod";
id: string;
}
export interface OrderLineDiscountRemove_orderLineDiscountRemove_order_deliveryMethod_Warehouse {
__typename: "Warehouse";
id: string;
clickAndCollectOption: WarehouseClickAndCollectOptionEnum;
}
export type OrderLineDiscountRemove_orderLineDiscountRemove_order_deliveryMethod = OrderLineDiscountRemove_orderLineDiscountRemove_order_deliveryMethod_ShippingMethod | OrderLineDiscountRemove_orderLineDiscountRemove_order_deliveryMethod_Warehouse;
export interface OrderLineDiscountRemove_orderLineDiscountRemove_order_shippingMethod {
__typename: "ShippingMethod";
id: string;
@ -495,8 +508,10 @@ export interface OrderLineDiscountRemove_orderLineDiscountRemove_order {
isPaid: boolean;
paymentStatus: PaymentChargeStatusEnum;
shippingAddress: OrderLineDiscountRemove_orderLineDiscountRemove_order_shippingAddress | null;
deliveryMethod: OrderLineDiscountRemove_orderLineDiscountRemove_order_deliveryMethod | null;
shippingMethod: OrderLineDiscountRemove_orderLineDiscountRemove_order_shippingMethod | null;
shippingMethodName: string | null;
collectionPointName: string | null;
shippingPrice: OrderLineDiscountRemove_orderLineDiscountRemove_order_shippingPrice;
status: OrderStatus;
subtotal: OrderLineDiscountRemove_orderLineDiscountRemove_order_subtotal;

View file

@ -3,7 +3,7 @@
// @generated
// This file was automatically generated and should not be edited.
import { OrderDiscountCommonInput, OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
import { OrderDiscountCommonInput, OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, WarehouseClickAndCollectOptionEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
// ====================================================
// GraphQL mutation operation: OrderLineDiscountUpdate
@ -351,6 +351,19 @@ export interface OrderLineDiscountUpdate_orderLineDiscountUpdate_order_shippingA
streetAddress2: string;
}
export interface OrderLineDiscountUpdate_orderLineDiscountUpdate_order_deliveryMethod_ShippingMethod {
__typename: "ShippingMethod";
id: string;
}
export interface OrderLineDiscountUpdate_orderLineDiscountUpdate_order_deliveryMethod_Warehouse {
__typename: "Warehouse";
id: string;
clickAndCollectOption: WarehouseClickAndCollectOptionEnum;
}
export type OrderLineDiscountUpdate_orderLineDiscountUpdate_order_deliveryMethod = OrderLineDiscountUpdate_orderLineDiscountUpdate_order_deliveryMethod_ShippingMethod | OrderLineDiscountUpdate_orderLineDiscountUpdate_order_deliveryMethod_Warehouse;
export interface OrderLineDiscountUpdate_orderLineDiscountUpdate_order_shippingMethod {
__typename: "ShippingMethod";
id: string;
@ -495,8 +508,10 @@ export interface OrderLineDiscountUpdate_orderLineDiscountUpdate_order {
isPaid: boolean;
paymentStatus: PaymentChargeStatusEnum;
shippingAddress: OrderLineDiscountUpdate_orderLineDiscountUpdate_order_shippingAddress | null;
deliveryMethod: OrderLineDiscountUpdate_orderLineDiscountUpdate_order_deliveryMethod | null;
shippingMethod: OrderLineDiscountUpdate_orderLineDiscountUpdate_order_shippingMethod | null;
shippingMethodName: string | null;
collectionPointName: string | null;
shippingPrice: OrderLineDiscountUpdate_orderLineDiscountUpdate_order_shippingPrice;
status: OrderStatus;
subtotal: OrderLineDiscountUpdate_orderLineDiscountUpdate_order_subtotal;

View file

@ -3,7 +3,7 @@
// @generated
// This file was automatically generated and should not be edited.
import { OrderLineInput, OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
import { OrderLineInput, OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, WarehouseClickAndCollectOptionEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
// ====================================================
// GraphQL mutation operation: OrderLineUpdate
@ -351,6 +351,19 @@ export interface OrderLineUpdate_orderLineUpdate_order_shippingAddress {
streetAddress2: string;
}
export interface OrderLineUpdate_orderLineUpdate_order_deliveryMethod_ShippingMethod {
__typename: "ShippingMethod";
id: string;
}
export interface OrderLineUpdate_orderLineUpdate_order_deliveryMethod_Warehouse {
__typename: "Warehouse";
id: string;
clickAndCollectOption: WarehouseClickAndCollectOptionEnum;
}
export type OrderLineUpdate_orderLineUpdate_order_deliveryMethod = OrderLineUpdate_orderLineUpdate_order_deliveryMethod_ShippingMethod | OrderLineUpdate_orderLineUpdate_order_deliveryMethod_Warehouse;
export interface OrderLineUpdate_orderLineUpdate_order_shippingMethod {
__typename: "ShippingMethod";
id: string;
@ -495,8 +508,10 @@ export interface OrderLineUpdate_orderLineUpdate_order {
isPaid: boolean;
paymentStatus: PaymentChargeStatusEnum;
shippingAddress: OrderLineUpdate_orderLineUpdate_order_shippingAddress | null;
deliveryMethod: OrderLineUpdate_orderLineUpdate_order_deliveryMethod | null;
shippingMethod: OrderLineUpdate_orderLineUpdate_order_shippingMethod | null;
shippingMethodName: string | null;
collectionPointName: string | null;
shippingPrice: OrderLineUpdate_orderLineUpdate_order_shippingPrice;
status: OrderStatus;
subtotal: OrderLineUpdate_orderLineUpdate_order_subtotal;

View file

@ -3,7 +3,7 @@
// @generated
// This file was automatically generated and should not be edited.
import { OrderLineCreateInput, OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
import { OrderLineCreateInput, OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, WarehouseClickAndCollectOptionEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
// ====================================================
// GraphQL mutation operation: OrderLinesAdd
@ -351,6 +351,19 @@ export interface OrderLinesAdd_orderLinesCreate_order_shippingAddress {
streetAddress2: string;
}
export interface OrderLinesAdd_orderLinesCreate_order_deliveryMethod_ShippingMethod {
__typename: "ShippingMethod";
id: string;
}
export interface OrderLinesAdd_orderLinesCreate_order_deliveryMethod_Warehouse {
__typename: "Warehouse";
id: string;
clickAndCollectOption: WarehouseClickAndCollectOptionEnum;
}
export type OrderLinesAdd_orderLinesCreate_order_deliveryMethod = OrderLinesAdd_orderLinesCreate_order_deliveryMethod_ShippingMethod | OrderLinesAdd_orderLinesCreate_order_deliveryMethod_Warehouse;
export interface OrderLinesAdd_orderLinesCreate_order_shippingMethod {
__typename: "ShippingMethod";
id: string;
@ -495,8 +508,10 @@ export interface OrderLinesAdd_orderLinesCreate_order {
isPaid: boolean;
paymentStatus: PaymentChargeStatusEnum;
shippingAddress: OrderLinesAdd_orderLinesCreate_order_shippingAddress | null;
deliveryMethod: OrderLinesAdd_orderLinesCreate_order_deliveryMethod | null;
shippingMethod: OrderLinesAdd_orderLinesCreate_order_shippingMethod | null;
shippingMethodName: string | null;
collectionPointName: string | null;
shippingPrice: OrderLinesAdd_orderLinesCreate_order_shippingPrice;
status: OrderStatus;
subtotal: OrderLinesAdd_orderLinesCreate_order_subtotal;

View file

@ -3,7 +3,7 @@
// @generated
// This file was automatically generated and should not be edited.
import { OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
import { OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, WarehouseClickAndCollectOptionEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
// ====================================================
// GraphQL mutation operation: OrderMarkAsPaid
@ -351,6 +351,19 @@ export interface OrderMarkAsPaid_orderMarkAsPaid_order_shippingAddress {
streetAddress2: string;
}
export interface OrderMarkAsPaid_orderMarkAsPaid_order_deliveryMethod_ShippingMethod {
__typename: "ShippingMethod";
id: string;
}
export interface OrderMarkAsPaid_orderMarkAsPaid_order_deliveryMethod_Warehouse {
__typename: "Warehouse";
id: string;
clickAndCollectOption: WarehouseClickAndCollectOptionEnum;
}
export type OrderMarkAsPaid_orderMarkAsPaid_order_deliveryMethod = OrderMarkAsPaid_orderMarkAsPaid_order_deliveryMethod_ShippingMethod | OrderMarkAsPaid_orderMarkAsPaid_order_deliveryMethod_Warehouse;
export interface OrderMarkAsPaid_orderMarkAsPaid_order_shippingMethod {
__typename: "ShippingMethod";
id: string;
@ -495,8 +508,10 @@ export interface OrderMarkAsPaid_orderMarkAsPaid_order {
isPaid: boolean;
paymentStatus: PaymentChargeStatusEnum;
shippingAddress: OrderMarkAsPaid_orderMarkAsPaid_order_shippingAddress | null;
deliveryMethod: OrderMarkAsPaid_orderMarkAsPaid_order_deliveryMethod | null;
shippingMethod: OrderMarkAsPaid_orderMarkAsPaid_order_shippingMethod | null;
shippingMethodName: string | null;
collectionPointName: string | null;
shippingPrice: OrderMarkAsPaid_orderMarkAsPaid_order_shippingPrice;
status: OrderStatus;
subtotal: OrderMarkAsPaid_orderMarkAsPaid_order_subtotal;

View file

@ -3,7 +3,7 @@
// @generated
// This file was automatically generated and should not be edited.
import { OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
import { OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, WarehouseClickAndCollectOptionEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
// ====================================================
// GraphQL mutation operation: OrderRefund
@ -351,6 +351,19 @@ export interface OrderRefund_orderRefund_order_shippingAddress {
streetAddress2: string;
}
export interface OrderRefund_orderRefund_order_deliveryMethod_ShippingMethod {
__typename: "ShippingMethod";
id: string;
}
export interface OrderRefund_orderRefund_order_deliveryMethod_Warehouse {
__typename: "Warehouse";
id: string;
clickAndCollectOption: WarehouseClickAndCollectOptionEnum;
}
export type OrderRefund_orderRefund_order_deliveryMethod = OrderRefund_orderRefund_order_deliveryMethod_ShippingMethod | OrderRefund_orderRefund_order_deliveryMethod_Warehouse;
export interface OrderRefund_orderRefund_order_shippingMethod {
__typename: "ShippingMethod";
id: string;
@ -495,8 +508,10 @@ export interface OrderRefund_orderRefund_order {
isPaid: boolean;
paymentStatus: PaymentChargeStatusEnum;
shippingAddress: OrderRefund_orderRefund_order_shippingAddress | null;
deliveryMethod: OrderRefund_orderRefund_order_deliveryMethod | null;
shippingMethod: OrderRefund_orderRefund_order_shippingMethod | null;
shippingMethodName: string | null;
collectionPointName: string | null;
shippingPrice: OrderRefund_orderRefund_order_shippingPrice;
status: OrderStatus;
subtotal: OrderRefund_orderRefund_order_subtotal;

View file

@ -3,7 +3,7 @@
// @generated
// This file was automatically generated and should not be edited.
import { OrderUpdateShippingInput, OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
import { OrderUpdateShippingInput, OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, WarehouseClickAndCollectOptionEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
// ====================================================
// GraphQL mutation operation: OrderShippingMethodUpdate
@ -413,6 +413,19 @@ export interface OrderShippingMethodUpdate_orderUpdateShipping_order_shippingAdd
streetAddress2: string;
}
export interface OrderShippingMethodUpdate_orderUpdateShipping_order_deliveryMethod_ShippingMethod {
__typename: "ShippingMethod";
id: string;
}
export interface OrderShippingMethodUpdate_orderUpdateShipping_order_deliveryMethod_Warehouse {
__typename: "Warehouse";
id: string;
clickAndCollectOption: WarehouseClickAndCollectOptionEnum;
}
export type OrderShippingMethodUpdate_orderUpdateShipping_order_deliveryMethod = OrderShippingMethodUpdate_orderUpdateShipping_order_deliveryMethod_ShippingMethod | OrderShippingMethodUpdate_orderUpdateShipping_order_deliveryMethod_Warehouse;
export interface OrderShippingMethodUpdate_orderUpdateShipping_order_subtotal_gross {
__typename: "Money";
amount: number;
@ -508,6 +521,8 @@ export interface OrderShippingMethodUpdate_orderUpdateShipping_order {
isPaid: boolean;
paymentStatus: PaymentChargeStatusEnum;
shippingAddress: OrderShippingMethodUpdate_orderUpdateShipping_order_shippingAddress | null;
deliveryMethod: OrderShippingMethodUpdate_orderUpdateShipping_order_deliveryMethod | null;
collectionPointName: string | null;
status: OrderStatus;
subtotal: OrderShippingMethodUpdate_orderUpdateShipping_order_subtotal;
actions: (OrderAction | null)[];

View file

@ -3,7 +3,7 @@
// @generated
// This file was automatically generated and should not be edited.
import { OrderUpdateInput, OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
import { OrderUpdateInput, OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, WarehouseClickAndCollectOptionEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
// ====================================================
// GraphQL mutation operation: OrderUpdate
@ -351,6 +351,19 @@ export interface OrderUpdate_orderUpdate_order_shippingAddress {
streetAddress2: string;
}
export interface OrderUpdate_orderUpdate_order_deliveryMethod_ShippingMethod {
__typename: "ShippingMethod";
id: string;
}
export interface OrderUpdate_orderUpdate_order_deliveryMethod_Warehouse {
__typename: "Warehouse";
id: string;
clickAndCollectOption: WarehouseClickAndCollectOptionEnum;
}
export type OrderUpdate_orderUpdate_order_deliveryMethod = OrderUpdate_orderUpdate_order_deliveryMethod_ShippingMethod | OrderUpdate_orderUpdate_order_deliveryMethod_Warehouse;
export interface OrderUpdate_orderUpdate_order_shippingMethod {
__typename: "ShippingMethod";
id: string;
@ -495,8 +508,10 @@ export interface OrderUpdate_orderUpdate_order {
isPaid: boolean;
paymentStatus: PaymentChargeStatusEnum;
shippingAddress: OrderUpdate_orderUpdate_order_shippingAddress | null;
deliveryMethod: OrderUpdate_orderUpdate_order_deliveryMethod | null;
shippingMethod: OrderUpdate_orderUpdate_order_shippingMethod | null;
shippingMethodName: string | null;
collectionPointName: string | null;
shippingPrice: OrderUpdate_orderUpdate_order_shippingPrice;
status: OrderStatus;
subtotal: OrderUpdate_orderUpdate_order_subtotal;

View file

@ -3,7 +3,7 @@
// @generated
// This file was automatically generated and should not be edited.
import { OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
import { OrderErrorCode, AddressTypeEnum, OrderDiscountType, DiscountValueTypeEnum, OrderEventsEmailsEnum, OrderEventsEnum, FulfillmentStatus, PaymentChargeStatusEnum, WarehouseClickAndCollectOptionEnum, OrderStatus, OrderAction, JobStatusEnum } from "./../../types/globalTypes";
// ====================================================
// GraphQL mutation operation: OrderVoid
@ -351,6 +351,19 @@ export interface OrderVoid_orderVoid_order_shippingAddress {
streetAddress2: string;
}
export interface OrderVoid_orderVoid_order_deliveryMethod_ShippingMethod {
__typename: "ShippingMethod";
id: string;
}
export interface OrderVoid_orderVoid_order_deliveryMethod_Warehouse {
__typename: "Warehouse";
id: string;
clickAndCollectOption: WarehouseClickAndCollectOptionEnum;
}
export type OrderVoid_orderVoid_order_deliveryMethod = OrderVoid_orderVoid_order_deliveryMethod_ShippingMethod | OrderVoid_orderVoid_order_deliveryMethod_Warehouse;
export interface OrderVoid_orderVoid_order_shippingMethod {
__typename: "ShippingMethod";
id: string;
@ -495,8 +508,10 @@ export interface OrderVoid_orderVoid_order {
isPaid: boolean;
paymentStatus: PaymentChargeStatusEnum;
shippingAddress: OrderVoid_orderVoid_order_shippingAddress | null;
deliveryMethod: OrderVoid_orderVoid_order_deliveryMethod | null;
shippingMethod: OrderVoid_orderVoid_order_shippingMethod | null;
shippingMethodName: string | null;
collectionPointName: string | null;
shippingPrice: OrderVoid_orderVoid_order_shippingPrice;
status: OrderStatus;
subtotal: OrderVoid_orderVoid_order_subtotal;

View file

@ -7,15 +7,35 @@ import {
useOrderFulfillData,
useOrderFulfillSettingsQuery
} from "@saleor/orders/queries";
import { OrderFulfillData_order } from "@saleor/orders/types/OrderFulfillData";
import { orderUrl } from "@saleor/orders/urls";
import { getWarehousesFromOrderLines } from "@saleor/orders/utils/data";
import React from "react";
import { useIntl } from "react-intl";
import { WarehouseClickAndCollectOptionEnum } from "../../../types/globalTypes";
export interface OrderFulfillProps {
orderId: string;
}
const resolveLocalFulfillment = (
order: OrderFulfillData_order,
orderLineWarehouses
) => {
const deliveryMethod = order?.deliveryMethod;
if (
deliveryMethod?.__typename === "Warehouse" &&
deliveryMethod?.clickAndCollectOption ===
WarehouseClickAndCollectOptionEnum.LOCAL
) {
return orderLineWarehouses?.filter(
warehouse => warehouse?.id === deliveryMethod?.id
);
}
return orderLineWarehouses;
};
const OrderFulfill: React.FC<OrderFulfillProps> = ({ orderId }) => {
const navigate = useNavigator();
const notify = useNotifier();
@ -50,6 +70,11 @@ const OrderFulfill: React.FC<OrderFulfillProps> = ({ orderId }) => {
}
});
const resolvedOrderLinesWarehouses = resolveLocalFulfillment(
data?.order,
orderLinesWarehouses
);
return (
<>
<WindowTitle
@ -91,7 +116,7 @@ const OrderFulfill: React.FC<OrderFulfillProps> = ({ orderId }) => {
}
order={data?.order}
saveButtonBar="default"
warehouses={orderLinesWarehouses}
warehouses={resolvedOrderLinesWarehouses}
shopSettings={settings?.shop}
/>
</>

File diff suppressed because it is too large Load diff

View file

@ -1770,6 +1770,12 @@ export enum VoucherTypeEnum {
SPECIFIC_PRODUCT = "SPECIFIC_PRODUCT",
}
export enum WarehouseClickAndCollectOptionEnum {
ALL = "ALL",
DISABLED = "DISABLED",
LOCAL = "LOCAL",
}
export enum WarehouseErrorCode {
ALREADY_EXISTS = "ALREADY_EXISTS",
GRAPHQL_ERROR = "GRAPHQL_ERROR",
@ -2842,8 +2848,10 @@ export interface WarehouseCreateInput {
}
export interface WarehouseFilterInput {
clickAndCollectOption?: WarehouseClickAndCollectOptionEnum | null;
search?: string | null;
ids?: (string | null)[] | null;
isPrivate?: boolean | null;
}
export interface WarehouseSortingInput {
@ -2856,6 +2864,8 @@ export interface WarehouseUpdateInput {
email?: string | null;
name?: string | null;
address?: AddressInput | null;
clickAndCollectOption?: WarehouseClickAndCollectOptionEnum | null;
isPrivate?: boolean | null;
}
export interface WebhookCreateInput {

View file

@ -39,7 +39,7 @@ export interface UpdateMetadata_deleteMetadata_item_privateMetadata {
}
export interface UpdateMetadata_deleteMetadata_item {
__typename: "App" | "Warehouse" | "ShippingZone" | "ShippingMethod" | "Product" | "ProductType" | "Attribute" | "Category" | "ProductVariant" | "DigitalContent" | "Collection" | "Page" | "PageType" | "Sale" | "Voucher" | "MenuItem" | "Menu" | "User" | "Checkout" | "GiftCard" | "Order" | "Fulfillment" | "Invoice";
__typename: "App" | "Attribute" | "Category" | "Checkout" | "Collection" | "DigitalContent" | "Fulfillment" | "GiftCard" | "Invoice" | "Menu" | "MenuItem" | "Order" | "Page" | "PageType" | "Product" | "ProductType" | "ProductVariant" | "Sale" | "ShippingMethod" | "ShippingZone" | "User" | "Voucher" | "Warehouse";
metadata: (UpdateMetadata_deleteMetadata_item_metadata | null)[];
privateMetadata: (UpdateMetadata_deleteMetadata_item_privateMetadata | null)[];
id: string;

View file

@ -39,7 +39,7 @@ export interface UpdatePrivateMetadata_deletePrivateMetadata_item_privateMetadat
}
export interface UpdatePrivateMetadata_deletePrivateMetadata_item {
__typename: "App" | "Warehouse" | "ShippingZone" | "ShippingMethod" | "Product" | "ProductType" | "Attribute" | "Category" | "ProductVariant" | "DigitalContent" | "Collection" | "Page" | "PageType" | "Sale" | "Voucher" | "MenuItem" | "Menu" | "User" | "Checkout" | "GiftCard" | "Order" | "Fulfillment" | "Invoice";
__typename: "App" | "Attribute" | "Category" | "Checkout" | "Collection" | "DigitalContent" | "Fulfillment" | "GiftCard" | "Invoice" | "Menu" | "MenuItem" | "Order" | "Page" | "PageType" | "Product" | "ProductType" | "ProductVariant" | "Sale" | "ShippingMethod" | "ShippingZone" | "User" | "Voucher" | "Warehouse";
metadata: (UpdatePrivateMetadata_deletePrivateMetadata_item_metadata | null)[];
privateMetadata: (UpdatePrivateMetadata_deletePrivateMetadata_item_privateMetadata | null)[];
id: string;

View file

@ -1,10 +1,10 @@
import { address, countries } from "@saleor/fixtures";
import { countries } from "@saleor/fixtures";
import Decorator from "@saleor/storybook/Decorator";
import { WarehouseErrorCode } from "@saleor/types/globalTypes";
import { storiesOf } from "@storybook/react";
import React from "react";
import { warehouseList } from "../../fixtures";
import { warehouse } from "../../fixtures";
import WarehouseDetailsPage, {
WarehouseDetailsPageFormData,
WarehouseDetailsPageProps
@ -23,10 +23,7 @@ const props: WarehouseDetailsPageProps = {
onShippingZoneClick: () => undefined,
onSubmit: () => undefined,
saveButtonBarState: "default",
warehouse: {
...warehouseList[0],
address
}
warehouse
};
storiesOf("Views / Warehouses / Warehouse details", module)
.addDecorator(Decorator)

View file

@ -8,6 +8,7 @@ import PageHeader from "@saleor/components/PageHeader";
import Savebar from "@saleor/components/Savebar";
import { ShopInfo_shop_countries } from "@saleor/components/Shop/types/ShopInfo";
import { AddressTypeInput } from "@saleor/customers/types";
import { WarehouseDetailsFragment } from "@saleor/fragments/types/WarehouseDetailsFragment";
import { WarehouseErrorFragment } from "@saleor/fragments/types/WarehouseErrorFragment";
import useAddressValidation from "@saleor/hooks/useAddressValidation";
import { SubmitPromise } from "@saleor/hooks/useForm";
@ -15,25 +16,29 @@ import useStateFromProps from "@saleor/hooks/useStateFromProps";
import { sectionNames } from "@saleor/intl";
import { Backlink } from "@saleor/macaw-ui";
import { findValueInEnum, maybe } from "@saleor/misc";
import { CountryCode } from "@saleor/types/globalTypes";
import {
CountryCode,
WarehouseClickAndCollectOptionEnum
} from "@saleor/types/globalTypes";
import createSingleAutocompleteSelectHandler from "@saleor/utils/handlers/singleAutocompleteSelectChangeHandler";
import { mapCountriesToChoices, mapEdgesToItems } from "@saleor/utils/maps";
import React from "react";
import { FormattedMessage, useIntl } from "react-intl";
import { WarehouseDetails_warehouse } from "../../types/WarehouseDetails";
import WarehouseInfo from "../WarehouseInfo";
import WarehouseZones from "../WarehouseZones";
import WarehouseSettings from "../WarehouseSettings";
export interface WarehouseDetailsPageFormData extends AddressTypeInput {
name: string;
isPrivate: boolean;
clickAndCollectOption: WarehouseClickAndCollectOptionEnum;
}
export interface WarehouseDetailsPageProps {
countries: ShopInfo_shop_countries[];
disabled: boolean;
errors: WarehouseErrorFragment[];
saveButtonBarState: ConfirmButtonTransitionState;
warehouse: WarehouseDetails_warehouse;
warehouse: WarehouseDetailsFragment;
onBack: () => void;
onDelete: () => void;
onShippingZoneClick: (id: string) => void;
@ -67,6 +72,10 @@ const WarehouseDetailsPage: React.FC<WarehouseDetailsPageProps> = ({
country: maybe(() =>
findValueInEnum(warehouse.address.country.code, CountryCode)
),
isPrivate: !!warehouse?.isPrivate,
clickAndCollectOption:
warehouse?.clickAndCollectOption ||
WarehouseClickAndCollectOptionEnum.DISABLED,
countryArea: maybe(() => warehouse.address.countryArea, ""),
name: maybe(() => warehouse.name, ""),
phone: maybe(() => warehouse.address.phone, ""),
@ -77,7 +86,7 @@ const WarehouseDetailsPage: React.FC<WarehouseDetailsPageProps> = ({
return (
<Form initial={initialForm} onSubmit={handleSubmit}>
{({ change, data, hasChanged, submit }) => {
{({ change, data, hasChanged, set, submit }) => {
const countryChoices = mapCountriesToChoices(countries);
const handleCountryChange = createSingleAutocompleteSelectHandler(
change,
@ -115,9 +124,13 @@ const WarehouseDetailsPage: React.FC<WarehouseDetailsPageProps> = ({
/>
</div>
<div>
<WarehouseZones
<WarehouseSettings
zones={mapEdgesToItems(warehouse?.shippingZones)}
data={data}
disabled={disabled}
onShippingZoneClick={onShippingZoneClick}
onChange={change}
setData={set}
/>
</div>
</Grid>

View file

@ -0,0 +1,204 @@
import { Card, CardContent, Divider, Typography } from "@material-ui/core";
import CardSpacer from "@saleor/components/CardSpacer";
import CardTitle from "@saleor/components/CardTitle";
import { FormSpacer } from "@saleor/components/FormSpacer";
import Link from "@saleor/components/Link";
import { RadioGroupField } from "@saleor/components/RadioGroupField";
import Skeleton from "@saleor/components/Skeleton";
import { makeStyles } from "@saleor/macaw-ui";
import { renderCollection } from "@saleor/misc";
import { WarehouseDetails_warehouse_shippingZones_edges_node } from "@saleor/warehouses/types/WarehouseDetails";
import React from "react";
import { FormattedMessage } from "react-intl";
import { WarehouseClickAndCollectOptionEnum } from "./../../../types/globalTypes";
import { WarehouseDetailsPageFormData } from "./../WarehouseDetailsPage";
import messages from "./messages";
export interface WarehouseSettingsProps {
zones: WarehouseDetails_warehouse_shippingZones_edges_node[];
disabled: boolean;
data: WarehouseDetailsPageFormData;
onShippingZoneClick: (id: string) => void;
onChange: (event: React.ChangeEvent<any>) => void;
setData: (data: Partial<WarehouseDetailsPageFormData>) => void;
}
const useStyles = makeStyles(
theme => ({
link: {
"&:not(:last-of-type)": {
marginBottom: theme.spacing()
}
}
}),
{
name: "WarehouseInfoProps"
}
);
const WarehouseSettings: React.FC<WarehouseSettingsProps> = ({
zones,
disabled,
data,
onChange,
onShippingZoneClick,
setData
}) => {
React.useEffect(() => {
if (
data.isPrivate &&
data.clickAndCollectOption === WarehouseClickAndCollectOptionEnum.LOCAL
) {
setData({
clickAndCollectOption: WarehouseClickAndCollectOptionEnum.DISABLED
});
}
}, [data.isPrivate]);
const classes = useStyles({});
const booleanRadioHandler = ({ target: { name, value } }) => {
setData({ [name]: value === "true" });
};
const isPrivateChoices = [
{
label: (
<>
<FormattedMessage {...messages.warehouseSettingsPrivateStock} />
<Typography variant="caption" color="textSecondary">
<FormattedMessage
{...messages.warehouseSettingsPrivateStockDescription}
/>
</Typography>
<FormSpacer />
</>
),
value: "true"
},
{
label: (
<>
<FormattedMessage {...messages.warehouseSettingsPublicStock} />
<Typography variant="caption" color="textSecondary">
<FormattedMessage
{...messages.warehouseSettingsPublicStockDescription}
/>
</Typography>
</>
),
value: "false"
}
];
const clickAndCollectChoicesPublic = [
{
label: (
<>
<FormattedMessage {...messages.warehouseSettingsDisabled} />
<Typography variant="caption" color="textSecondary">
<FormattedMessage
{...messages.warehouseSettingsDisabledDescription}
/>
</Typography>
<FormSpacer />
</>
),
value: WarehouseClickAndCollectOptionEnum.DISABLED
},
{
label: (
<>
<FormattedMessage {...messages.warehouseSettingsLocal} />
<Typography variant="caption" color="textSecondary">
<FormattedMessage {...messages.warehouseSettingsLocalDescription} />
</Typography>
<FormSpacer />
</>
),
value: WarehouseClickAndCollectOptionEnum.LOCAL
},
{
label: (
<>
<FormattedMessage {...messages.warehouseSettingsAllWarehouses} />
<Typography variant="caption" color="textSecondary">
<FormattedMessage
{...messages.warehouseSettingsAllWarehousesDescription}
/>
</Typography>
</>
),
value: WarehouseClickAndCollectOptionEnum.ALL
}
];
const clickAndCollectChoices = clickAndCollectChoicesPublic.filter(
choice => choice.value !== WarehouseClickAndCollectOptionEnum.LOCAL
);
return (
<Card>
<CardTitle
title={<FormattedMessage {...messages.warehouseSettingsTitle} />}
/>
<CardContent>
{renderCollection(
zones,
zone =>
zone ? (
<div className={classes.link} key={zone.id}>
<Link underline onClick={() => onShippingZoneClick(zone.id)}>
{zone.name}
</Link>
</div>
) : (
<Skeleton />
),
() => (
<Typography color="textSecondary">
<FormattedMessage
{...messages.warehouseSettingsNoShippingZonesAssigned}
/>
</Typography>
)
)}
</CardContent>
<Divider />
<CardContent>
<CardSpacer />
<RadioGroupField
disabled={disabled}
choices={isPrivateChoices}
onChange={booleanRadioHandler}
value={data.isPrivate.toString()}
name="isPrivate"
alignTop={true}
/>
</CardContent>
<Divider />
<CardContent>
<Typography color="textSecondary" variant="h6">
<FormattedMessage {...messages.warehouseSettingsPickupTitle} />
</Typography>
<CardSpacer />
<RadioGroupField
disabled={disabled}
choices={
data.isPrivate
? clickAndCollectChoices
: clickAndCollectChoicesPublic
}
onChange={onChange}
value={data.clickAndCollectOption}
name="clickAndCollectOption"
alignTop={true}
/>
</CardContent>
</Card>
);
};
WarehouseSettings.displayName = "WarehouseInfo";
export default WarehouseSettings;

View file

@ -0,0 +1,2 @@
export { default } from "./WarehouseSettings";
export * from "./WarehouseSettings";

View file

@ -0,0 +1,61 @@
import { defineMessages } from "react-intl";
const messages = defineMessages({
warehouseSettingsPublicStock: {
defaultMessage: "Public Stock",
description: "WarehouseSettings public stock label"
},
warehouseSettingsPublicStockDescription: {
defaultMessage: "If enabled stock in this warehouse will be shown",
description: "WarehouseSettings public stock description"
},
warehouseSettingsPrivateStock: {
defaultMessage: "Private Stock",
description: "WarehouseSettings private stock label"
},
warehouseSettingsPrivateStockDescription: {
defaultMessage: "If enabled stock in this warehouse won't be shown",
description: "WarehouseSettings private stock description"
},
warehouseSettingsDisabled: {
defaultMessage: "Disabled",
description: "WarehouseSettings disabled warehouse label"
},
warehouseSettingsDisabledDescription: {
defaultMessage:
"If selected customer won't be able to choose this warehouse as pickup point",
description: "WarehouseSettings disabled warehouse description"
},
warehouseSettingsLocal: {
defaultMessage: "Local stock only",
description: "WarehouseSettings local warehouse label"
},
warehouseSettingsLocalDescription: {
defaultMessage:
"If selected customer will be able to choose this warehouse as pickup point. Ordered products will be only fulfilled from this warehouse stock",
description: "WarehouseSettings local warehouse description"
},
warehouseSettingsAllWarehouses: {
defaultMessage: "All warehouses",
description: "WarehouseSettings all warehouses label"
},
warehouseSettingsAllWarehousesDescription: {
defaultMessage:
"If selected customer will be able to choose this warehouse as pickup point. Ordered products can be shipped here from a different warehouse",
description: "WarehouseSettings all warehouses description"
},
warehouseSettingsTitle: {
defaultMessage: "Settings",
description: "WarehouseSettings title"
},
warehouseSettingsPickupTitle: {
defaultMessage: "Pickup",
description: "WarehouseSettings pickup title"
},
warehouseSettingsNoShippingZonesAssigned: {
defaultMessage: "This warehouse has no shipping zones assigned.",
description: "WarehouseSettings no shipping zones assigned"
}
});
export default messages;

View file

@ -1,70 +0,0 @@
import { Card, CardContent, Typography } from "@material-ui/core";
import CardTitle from "@saleor/components/CardTitle";
import Link from "@saleor/components/Link";
import Skeleton from "@saleor/components/Skeleton";
import { makeStyles } from "@saleor/macaw-ui";
import { maybe, renderCollection } from "@saleor/misc";
import { WarehouseDetails_warehouse_shippingZones_edges_node } from "@saleor/warehouses/types/WarehouseDetails";
import React from "react";
import { FormattedMessage, useIntl } from "react-intl";
export interface WarehouseInfoProps {
zones: WarehouseDetails_warehouse_shippingZones_edges_node[];
onShippingZoneClick: (id: string) => void;
}
const useStyles = makeStyles(
theme => ({
link: {
"&:not(:last-of-type)": {
marginBottom: theme.spacing()
}
}
}),
{
name: "WarehouseInfoProps"
}
);
const WarehouseInfo: React.FC<WarehouseInfoProps> = ({
zones,
onShippingZoneClick
}) => {
const classes = useStyles({});
const intl = useIntl();
return (
<Card>
<CardTitle
title={intl.formatMessage({
defaultMessage: "Shipping Zones",
description: "zones that warehouse sends to"
})}
/>
<CardContent>
{renderCollection(
zones,
zone =>
maybe(
() => (
<div className={classes.link} key={zone.id}>
<Link underline onClick={() => onShippingZoneClick(zone.id)}>
{zone.name}
</Link>
</div>
),
<Skeleton />
),
() => (
<Typography color="textSecondary">
<FormattedMessage defaultMessage="This warehouse has no shipping zones assigned." />
</Typography>
)
)}
</CardContent>
</Card>
);
};
WarehouseInfo.displayName = "WarehouseInfo";
export default WarehouseInfo;

View file

@ -1,2 +0,0 @@
export { default } from "./WarehouseZones";
export * from "./WarehouseZones";

View file

@ -1,4 +1,8 @@
import { address } from "@saleor/fixtures";
import { shippingZones } from "../shipping/fixtures";
import { WarehouseClickAndCollectOptionEnum } from "./../types/globalTypes";
import { WarehouseDetails_warehouse } from "./types/WarehouseDetails";
import { WarehouseList_warehouses_edges_node } from "./types/WarehouseList";
export const warehouseList: WarehouseList_warehouses_edges_node[] = [
@ -51,3 +55,17 @@ export const warehouseList: WarehouseList_warehouses_edges_node[] = [
}
}
];
export const warehouse: WarehouseDetails_warehouse = {
...warehouseList[0],
isPrivate: true,
clickAndCollectOption: WarehouseClickAndCollectOptionEnum.DISABLED,
address
};
export const warehouseForPickup: WarehouseDetails_warehouse = {
...warehouseList[0],
isPrivate: false,
clickAndCollectOption: WarehouseClickAndCollectOptionEnum.ALL,
address
};

View file

@ -3,7 +3,7 @@
// @generated
// This file was automatically generated and should not be edited.
import { WarehouseCreateInput, WarehouseErrorCode } from "./../../types/globalTypes";
import { WarehouseCreateInput, WarehouseErrorCode, WarehouseClickAndCollectOptionEnum } from "./../../types/globalTypes";
// ====================================================
// GraphQL mutation operation: WarehouseCreate
@ -55,6 +55,8 @@ export interface WarehouseCreate_createWarehouse_warehouse_address {
export interface WarehouseCreate_createWarehouse_warehouse {
__typename: "Warehouse";
isPrivate: boolean;
clickAndCollectOption: WarehouseClickAndCollectOptionEnum;
id: string;
name: string;
shippingZones: WarehouseCreate_createWarehouse_warehouse_shippingZones;

View file

@ -3,6 +3,8 @@
// @generated
// This file was automatically generated and should not be edited.
import { WarehouseClickAndCollectOptionEnum } from "./../../types/globalTypes";
// ====================================================
// GraphQL query operation: WarehouseDetails
// ====================================================
@ -47,6 +49,8 @@ export interface WarehouseDetails_warehouse_address {
export interface WarehouseDetails_warehouse {
__typename: "Warehouse";
isPrivate: boolean;
clickAndCollectOption: WarehouseClickAndCollectOptionEnum;
id: string;
name: string;
shippingZones: WarehouseDetails_warehouse_shippingZones;

View file

@ -3,7 +3,7 @@
// @generated
// This file was automatically generated and should not be edited.
import { WarehouseUpdateInput, WarehouseErrorCode } from "./../../types/globalTypes";
import { WarehouseUpdateInput, WarehouseErrorCode, WarehouseClickAndCollectOptionEnum } from "./../../types/globalTypes";
// ====================================================
// GraphQL mutation operation: WarehouseUpdate
@ -55,6 +55,8 @@ export interface WarehouseUpdate_updateWarehouse_warehouse_address {
export interface WarehouseUpdate_updateWarehouse_warehouse {
__typename: "Warehouse";
isPrivate: boolean;
clickAndCollectOption: WarehouseClickAndCollectOptionEnum;
id: string;
name: string;
shippingZones: WarehouseUpdate_updateWarehouse_warehouse_shippingZones;

View file

@ -94,7 +94,9 @@ const WarehouseDetails: React.FC<WarehouseDetailsProps> = ({ id, params }) => {
streetAddress1: data.streetAddress1,
streetAddress2: data.streetAddress2
},
name: data.name
name: data.name,
isPrivate: data.isPrivate,
clickAndCollectOption: data.clickAndCollectOption
}
}
});

View file

@ -185,6 +185,10 @@ const WebhookEvents: React.FC<WebhookEventsProps> = ({
[WebhookEventTypeEnum.TRANSLATION_UPDATED]: intl.formatMessage({
defaultMessage: "Translation updated",
description: "event"
}),
[WebhookEventTypeEnum.FULFILLMENT_CANCELED]: intl.formatMessage({
defaultMessage: "Translation updated",
description: "event"
})
};