← back to Dw Signup Fulfillment

verification/tk10836/verify-kelly-checkout-breakdown.js

43 lines

'use strict';
// Decisive: on Kelly's own 3-sample cart, was the $24.95 total SHIPPING or ITEMS?
const config = require('../../lib/config');
const shop = config.SHOP_DOMAIN, token = config.SHOPIFY_FULFILLMENT_TOKEN;
const Q = `
query($id: ID!) {
  node(id: $id) {
    ... on AbandonedCheckout {
      id createdAt abandonedCheckoutUrl
      customer { email }
      subtotalPriceSet { shopMoney { amount } }
      totalPriceSet { shopMoney { amount } }
      totalTaxSet { shopMoney { amount } }
      totalDiscountSet { shopMoney { amount } }
      shippingAddress { city provinceCode countryCodeV2 }
      lineItems(first: 20) { nodes { title quantity
        
         } }
    }
  }
}`;
(async () => {
  for (const id of ['gid://shopify/AbandonedCheckout/34015098110003','gid://shopify/AbandonedCheckout/34017552728115']) {
    const r = await fetch(`https://${shop}/admin/api/2024-10/graphql.json`, {
      method: 'POST', headers: { 'X-Shopify-Access-Token': token, 'Content-Type': 'application/json' },
      body: JSON.stringify({ query: Q, variables: { id } }) });
    const j = await r.json();
    if (j.errors) { console.error(JSON.stringify(j.errors)); continue; }
    const n = j.data.node;
    const items = Number(n.subtotalPriceSet.shopMoney.amount);
    const total = Number(n.totalPriceSet.shopMoney.amount);
    const tax = Number(n.totalTaxSet ? n.totalTaxSet.shopMoney.amount : 0);
    console.log(`\n=== ${n.id.split('/').pop()}  ${n.createdAt}  ${n.customer && n.customer.email} ===`);
    console.log(`  items subtotal : $${items.toFixed(2)}`);
    console.log(`  discounts      : $${Number(n.totalDiscountSet?n.totalDiscountSet.shopMoney.amount:0).toFixed(2)}`);
    console.log(`  tax            : $${tax.toFixed(2)}`);
    console.log(`  TOTAL          : $${total.toFixed(2)}`);
    console.log(`  => implied shipping (total - items - tax): $${(total - items - tax).toFixed(2)}`);
    console.log(`  dest: ${n.shippingAddress ? n.shippingAddress.city+', '+n.shippingAddress.provinceCode+'/'+n.shippingAddress.countryCodeV2 : '(none set)'}`);
    for (const li of n.lineItems.nodes) console.log(`   - ${li.title} x${li.quantity}  orig $${""} -> $${""}`);
  }
})().catch(e => { console.error('ERR', e.message); process.exit(1); });