[object Object]

← back to Shopify Sample Shipping

TK-11333: create bulk designer test order #33048 (12 samples, shipping fees incur)

d4101cadc673a62bb997ee1380186d6daa4b54f8 · 2026-09-09 15:12:48 -0700 · Steve Abrams

Interior-designer contrast to #33047: 12 samples $51.00 > $30 band -> UPS Ground
$20.53 shipping charged, total $76.51, with explanatory note on the order. Real
unpaid order. Teardown script now tears down both #33047 + #33048; ledgered.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Files touched

Diff

commit d4101cadc673a62bb997ee1380186d6daa4b54f8
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Wed Sep 9 15:12:48 2026 -0700

    TK-11333: create bulk designer test order #33048 (12 samples, shipping fees incur)
    
    Interior-designer contrast to #33047: 12 samples $51.00 > $30 band -> UPS Ground
    $20.53 shipping charged, total $76.51, with explanatory note on the order. Real
    unpaid order. Teardown script now tears down both #33047 + #33048; ledgered.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---
 cancel-test-order.mjs                        | 23 ++++----
 order-designer-bulk.mjs                      | 37 ++++++++++++
 verification/order-designer-bulk-result.json | 86 ++++++++++++++++++++++++++++
 3 files changed, 136 insertions(+), 10 deletions(-)

diff --git a/cancel-test-order.mjs b/cancel-test-order.mjs
index ac3902d..c214825 100644
--- a/cancel-test-order.mjs
+++ b/cancel-test-order.mjs
@@ -1,11 +1,14 @@
-// One-command UNDO for the TK-11333 test order #33047: cancel (refund n/a, unpaid), then delete.
+// One-command UNDO for the TK-11333 test orders: cancel (unpaid) then delete the record.
 import {query} from './query.mjs';
-const ORDER='gid://shopify/Order/6141633069107'; // #33047
-// Cancel first (safe for unpaid/unfulfilled)
-const c=`mutation($id:ID!){orderCancel(orderId:$id,reason:OTHER,refund:false,restock:true,notifyCustomer:false,staffNote:"TK-11333 test order teardown"){userErrors{field message}}}`;
-const cr=await query(c,{id:ORDER});
-console.log('cancel userErrors:',JSON.stringify(cr.orderCancel?.userErrors||cr));
-// Then delete the record entirely
-const d=`mutation($id:ID!){orderDelete(orderId:$id){deletedId userErrors{field message}}}`;
-const dr=await query(d,{id:ORDER});
-console.log('delete:',JSON.stringify(dr.orderDelete));
+const ORDERS=[
+  'gid://shopify/Order/6141633069107', // #33047 free-shipping proof
+  'gid://shopify/Order/6141644046387', // #33048 bulk designer, fees incur
+];
+for(const id of ORDERS){
+  const c=`mutation($id:ID!){orderCancel(orderId:$id,reason:OTHER,refund:false,restock:true,notifyCustomer:false,staffNote:"TK-11333 test order teardown"){userErrors{field message}}}`;
+  const cr=await query(c,{id});
+  console.log(id,'cancel:',JSON.stringify(cr.orderCancel?.userErrors||cr));
+  const d=`mutation($id:ID!){orderDelete(orderId:$id){deletedId userErrors{field message}}}`;
+  const dr=await query(d,{id});
+  console.log(id,'delete:',JSON.stringify(dr.orderDelete));
+}
diff --git a/order-designer-bulk.mjs b/order-designer-bulk.mjs
new file mode 100644
index 0000000..d7808f9
--- /dev/null
+++ b/order-designer-bulk.mjs
@@ -0,0 +1,37 @@
+import {query} from './query.mjs';
+import fs from 'node:fs';
+const S=['gid://shopify/ProductVariant/44090076954675','gid://shopify/ProductVariant/44086096756787','gid://shopify/ProductVariant/44044973408307'];
+// 12 samples = $51.00 (> $30 free band -> shipping fees incur)
+const lineItems=[{variantId:S[0],quantity:4},{variantId:S[1],quantity:4},{variantId:S[2],quantity:4}];
+const addr={address1:'15442 Ventura Blvd',city:'Sherman Oaks',provinceCode:'CA',countryCode:'US',zip:'91403',firstName:'Interior',lastName:'Designer'};
+// 1) Confirm free is NOT offered and grab the real cheapest paid rate
+const rq=`query($items:[DraftOrderLineItemInput!]!){draftOrderAvailableDeliveryOptions(input:{lineItems:$items,shippingAddress:{address1:"15442 Ventura Blvd",city:"Sherman Oaks",provinceCode:"CA",countryCode:US,zip:"91403"}}){availableShippingRates{title price{amount currencyCode}}}}`;
+const rates=(await query(rq,{items:lineItems})).draftOrderAvailableDeliveryOptions.availableShippingRates;
+const free=rates.some(x=>parseFloat(x.price.amount)===0);
+const cheapest=rates.filter(x=>parseFloat(x.price.amount)>0).sort((a,b)=>parseFloat(a.price.amount)-parseFloat(b.price.amount))[0];
+console.log(`free offered? ${free}  | cheapest paid = ${cheapest.title} $${cheapest.price.amount}`);
+if(free){console.log('ABORT: free shipping IS offered — would not demonstrate fees incurring.');process.exit(1);}
+// 2) Create draft with the real paid shipping line + note
+const input={
+  email:'steve@designerwallcoverings.com',
+  tags:['TK-11333-TEST'],
+  note:'Interior designer order — 12 samples ($51.00) is above the free-shipping threshold ($30), so shipping fees incur (per TK-11333 policy).',
+  shippingAddress:addr,
+  lineItems,
+  shippingLine:{title:cheapest.title,price:cheapest.price.amount}
+};
+const c=`mutation($input:DraftOrderInput!){draftOrderCreate(input:$input){draftOrder{id name subtotalPrice totalShippingPrice totalPrice note2 shippingLine{title price}} userErrors{field message}}}`;
+const cr=await query(c,{input});
+if(cr.draftOrderCreate.userErrors.length){console.log('CREATE ERR',JSON.stringify(cr.draftOrderCreate.userErrors));process.exit(1);}
+const d=cr.draftOrderCreate.draftOrder;
+console.log('\n=== DRAFT ===',d.name,'| subtotal $'+d.subtotalPrice,'| shipping $'+d.totalShippingPrice,'| total $'+d.totalPrice,'| ship:',d.shippingLine?.title,'$'+d.shippingLine?.price);
+console.log('note:',d.note2);
+// 3) Complete unpaid
+const cm=`mutation($id:ID!){draftOrderComplete(id:$id,paymentPending:true){draftOrder{order{id name displayFinancialStatus note totalShippingPriceSet{shopMoney{amount}} totalPriceSet{shopMoney{amount}} shippingLine{title price}}} userErrors{field message}}}`;
+const cmr=await query(cm,{id:d.id});
+if(cmr.draftOrderComplete.userErrors.length){console.log('COMPLETE ERR',JSON.stringify(cmr.draftOrderComplete.userErrors));process.exit(1);}
+const o=cmr.draftOrderComplete.draftOrder.order;
+console.log('\n=== ORDER (unpaid) ===',o.name,'|',o.displayFinancialStatus,'| shipping $'+o.totalShippingPriceSet.shopMoney.amount,'| total $'+o.totalPriceSet.shopMoney.amount,'| ship:',o.shippingLine?.title,'$'+o.shippingLine?.price);
+console.log('order id:',o.id);
+console.log('note:',o.note);
+fs.writeFileSync(new URL('./verification/order-designer-bulk-result.json',import.meta.url),JSON.stringify({rates,draft:d,order:o,createdAt:new Date().toISOString()},null,2)+'\n');
diff --git a/verification/order-designer-bulk-result.json b/verification/order-designer-bulk-result.json
new file mode 100644
index 0000000..14f8ce1
--- /dev/null
+++ b/verification/order-designer-bulk-result.json
@@ -0,0 +1,86 @@
+{
+  "rates": [
+    {
+      "title": "UPS® Ground",
+      "price": {
+        "amount": "20.53",
+        "currencyCode": "USD"
+      }
+    },
+    {
+      "title": "FedEx 2Day®",
+      "price": {
+        "amount": "47.05",
+        "currencyCode": "USD"
+      }
+    },
+    {
+      "title": "FedEx Priority Overnight®",
+      "price": {
+        "amount": "70.53",
+        "currencyCode": "USD"
+      }
+    },
+    {
+      "title": "FedEx 2Day® (with One Rate)",
+      "price": {
+        "amount": "96.9",
+        "currencyCode": "USD"
+      }
+    },
+    {
+      "title": "FedEx Express Saver® (with One Rate)",
+      "price": {
+        "amount": "96.9",
+        "currencyCode": "USD"
+      }
+    },
+    {
+      "title": "FedEx Standard Overnight® (with One Rate)",
+      "price": {
+        "amount": "96.9",
+        "currencyCode": "USD"
+      }
+    },
+    {
+      "title": "FedEx Priority Overnight® (with One Rate)",
+      "price": {
+        "amount": "109.65",
+        "currencyCode": "USD"
+      }
+    }
+  ],
+  "draft": {
+    "id": "gid://shopify/DraftOrder/1001508012083",
+    "name": "#D3498",
+    "subtotalPrice": "51.00",
+    "totalShippingPrice": "20.53",
+    "totalPrice": "76.51",
+    "note2": "Interior designer order — 12 samples ($51.00) is above the free-shipping threshold ($30), so shipping fees incur (per TK-11333 policy).",
+    "shippingLine": {
+      "title": "UPS® Ground",
+      "price": "20.53"
+    }
+  },
+  "order": {
+    "id": "gid://shopify/Order/6141644046387",
+    "name": "#33048",
+    "displayFinancialStatus": "PENDING",
+    "note": "Interior designer order — 12 samples ($51.00) is above the free-shipping threshold ($30), so shipping fees incur (per TK-11333 policy).",
+    "totalShippingPriceSet": {
+      "shopMoney": {
+        "amount": "20.53"
+      }
+    },
+    "totalPriceSet": {
+      "shopMoney": {
+        "amount": "76.51"
+      }
+    },
+    "shippingLine": {
+      "title": "UPS® Ground",
+      "price": "20.53"
+    }
+  },
+  "createdAt": "2026-09-09T22:12:06.245Z"
+}

← 05b3443 TK-11333: interior-designer shipping scenarios (read-only)  ·  back to Shopify Sample Shipping  ·  TK-11333: raise free band to $45 (10 samples free) + 8-disti f124f7e →