← 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}`); }