← back to Dw Signup Fulfillment

verification/tk10836/verify-paid-order-profiles.js

30 lines

#!/usr/bin/env node
// TK-10836: do the PAID comped sample orders share Kelly's delivery profile?
// (Previous attempt used a shipping_line: query filter that Shopify silently ignored.)
const fs=require('fs'),os=require('os');
for (const line of fs.readFileSync(os.homedir()+'/Projects/secrets-manager/.env','utf8').split('\n')) {
  const m=line.match(/^\s*([A-Z0-9_]+)\s*=\s*(.*)$/); if(!m) continue;
  let v=m[2].trim().replace(/^['"]|['"]$/g,''); if(!process.env[m[1]]) process.env[m[1]]=v;
}
const STORE=process.env.SHOPIFY_STORE_DOMAIN||'designer-laboratory-sandbox.myshopify.com';
const TOKEN=process.env.SHOPIFY_FULL_ACCESS_TOKEN, API='2024-10';
async function gql(q,v={}){const r=await fetch(`https://${STORE}/admin/api/${API}/graphql.json`,{method:'POST',
  headers:{'X-Shopify-Access-Token':TOKEN,'Content-Type':'application/json'},body:JSON.stringify({query:q,variables:v})});
  const j=await r.json(); if(j.errors)console.error('ERR',JSON.stringify(j.errors).slice(0,300)); return j.data;}
const NAMES=['#33033','#33020','#33019','#33018','#33014','#33013','#33011','#33008','#32999','#33024','#33028','#32987'];
(async()=>{
  const seen={};
  for(const nm of NAMES){
    const d=await gql(`query($q:String!){ orders(first:1, query:$q){ nodes{ name createdAt
      totalShippingPriceSet{shopMoney{amount}} shippingLine{title} shippingAddress{provinceCode}
      customer{ createdAt numberOfOrders tags }
      lineItems(first:8){ nodes{ variant{ sku deliveryProfile{name} product{createdAt} } } } } } }`,{q:`name:${nm}`});
    const o=d?.orders?.nodes?.[0]; if(!o){console.log(`${nm} not found`);continue;}
    const profs=[...new Set(o.lineItems.nodes.map(l=>l.variant?.deliveryProfile?.name||'(unknown)'))];
    for(const p of profs) seen[p]=(seen[p]||0)+1;
    console.log(`${o.name} ${o.createdAt.slice(0,10)} ${o.shippingAddress?.provinceCode} $${o.totalShippingPriceSet.shopMoney.amount} "${o.shippingLine?.title}"`);
    console.log(`   profiles: ${profs.join(' | ')}  | customer created ${o.customer?.createdAt?.slice(0,10)} orders=${o.customer?.numberOfOrders} tags=[${(o.customer?.tags||[]).join(',')}]`);
  }
  console.log('\nPROFILE TALLY across paid comped orders:', JSON.stringify(seen));
})();