import addressFragment from '../fragments/address'; import lineItemFragment from '../fragments/line-item'; import orderMetafieldsFragment from '../fragments/order-metafields'; import orderTrasactionFragment from '../fragments/order-transaction'; import priceFragment from '../fragments/price'; // NOTE: https://shopify.dev/docs/api/customer/latest/queries/customer const getCustomerOrderQuery = /* GraphQL */ ` query getCustomerOrderQuery($orderId: ID!) { customer { emailAddress { emailAddress } displayName } order(id: $orderId) { ... on Order { id ...Order customer { id emailAddress { emailAddress marketingState } firstName lastName phoneNumber { phoneNumber marketingState } imageUrl displayName } } } } fragment Order on Order { id name confirmationNumber processedAt cancelledAt currencyCode transactions { ...OrderTransaction } billingAddress { ...Address } shippingAddress { ...Address } fulfillments(first: 20, sortKey: CREATED_AT, reverse: true, query: "NOT status:CANCELLED") { edges { node { id ...Fulfillment } } } lineItems(first: 50) { nodes { id ...LineItem } } totalPrice { ...Price } subtotal { ...Price } totalShipping { ...Price } totalTax { ...Price } financialStatus totalRefunded { ...Price } refunds { id createdAt } paymentInformation { paymentCollectionUrl ...OrderPaymentInformation } requiresShipping note shippingLine { title originalPrice { ...Price } } ...OrderMetafields } fragment Fulfillment on Fulfillment { id status createdAt estimatedDeliveryAt trackingInformation { number company url } requiresShipping fulfillmentLineItems(first: 20) { nodes { id quantity lineItem { id name title presentmentTitle sku image { id url altText } } } } events(first: 20, sortKey: HAPPENED_AT, reverse: true) { edges { node { id ...FulfillmentEvent } } } } fragment FulfillmentEvent on FulfillmentEvent { status happenedAt } fragment OrderPaymentInformation on OrderPaymentInformation { paymentStatus totalPaidAmount { ...Price } totalOutstandingAmount { ...Price } paymentTerms { id overdue nextDueAt paymentSchedules(first: 2) { nodes { id dueAt completed amount { ...Price } } } } } ${lineItemFragment} ${addressFragment} ${priceFragment} ${orderTrasactionFragment} ${orderMetafieldsFragment} `; export default getCustomerOrderQuery;