← back to Shopify Sample Shipping
verify-general-live.mjs
31 lines
import {query} from './query.mjs';
import fs from 'node:fs';
// (1) Fresh live read of the GENERAL profile Domestic zone methods + conditions
const id='gid://shopify/DeliveryProfile/29033627699';
const q=`query($id:ID!){deliveryProfile(id:$id){name
profileLocationGroups{locationGroupZones(first:20){nodes{
zone{name}
methodDefinitions(first:30){nodes{name active
rateProvider{__typename ... on DeliveryRateDefinition{price{amount currencyCode}}}
methodConditions{operator conditionCriteria{__typename ... on Weight{value unit} ... on MoneyV2{amount currencyCode}}}}}
}}}}}`;
const d=await query(q,{id});
console.log('=== GENERAL PROFILE LIVE (Domestic methods) ===');
for(const g of d.deliveryProfile.profileLocationGroups){
for(const z of g.locationGroupZones.nodes){
if(z.zone.name!=='Domestic') continue;
for(const m of z.methodDefinitions.nodes){
const rp=m.rateProvider; const price=rp&&rp.price?`${rp.price.amount} ${rp.price.currencyCode}`:rp?.__typename;
const conds=(m.methodConditions||[]).map(mc=>{const cr=mc.conditionCriteria;const v=cr?.value!==undefined?`${cr.value}${cr.unit||''}`:(cr?.amount!==undefined?`$${cr.amount}`:'?');return `${mc.operator} ${v}`;}).join(' & ')||'(none)';
console.log(` "${m.name}" active=${m.active} price=${price} cond=[${conds}]`);
}
}
}
// (2) Stacking check: quote a ~$17 (4-sample) cart — <=$20 (Priority range) AND <=$30 (free band)
const S=['gid://shopify/ProductVariant/44090076954675','gid://shopify/ProductVariant/44086096756787','gid://shopify/ProductVariant/44044973408307'];
const items=[{variantId:S[0],quantity:2},{variantId:S[1],quantity:1},{variantId:S[2],quantity:1}]; // 4 x $4.25 = $17
const qq=fs.readFileSync(new URL('./quote-check.graphql',import.meta.url),'utf8');
const r=await query(qq,{items});
console.log('\n=== $17 (4-sample) CART RATES OFFERED (stacking check) ===');
for(const x of r.draftOrderAvailableDeliveryOptions.availableShippingRates){ console.log(` ${x.title} = $${x.price.amount}`); }