← back to Shopify Sample Shipping
switch-to-price.mjs
11 lines
import fs from 'node:fs';
import {query} from './query.mjs';
const p=JSON.parse(fs.readFileSync(new URL('./verification/general-detail.json',import.meta.url))).deliveryProfile;
const g=p.profileLocationGroups[0],z=g.locationGroupZones.nodes.find(x=>x.zone.name==='Domestic'),m=z.methodDefinitions.nodes.find(x=>x.name==='Free Shipping (No Tracking)');
const mutation=`mutation($id:ID!,$profile:DeliveryProfileInput!){deliveryProfileUpdate(id:$id,profile:$profile){profile{id name} userErrors{field message}}}`;
const ids=m.methodConditions.map(x=>x.id);
const remove=await query(mutation,{id:p.id,profile:{conditionsToDelete:ids}});if(remove.deliveryProfileUpdate.userErrors.length)throw Error(JSON.stringify(remove));
const add=await query(mutation,{id:p.id,profile:{locationGroupsToUpdate:[{id:g.locationGroup.id,zonesToUpdate:[{id:z.zone.id,methodDefinitionsToUpdate:[{id:m.id,priceConditionsToCreate:[{operator:'GREATER_THAN_OR_EQUAL_TO',criteria:{amount:'0',currencyCode:'USD'}},{operator:'LESS_THAN_OR_EQUAL_TO',criteria:{amount:'30',currencyCode:'USD'}}]}]}]}]}});
fs.writeFileSync(new URL('./verification/price-band-result.json',import.meta.url),JSON.stringify({ids,remove,add},null,2)+'\n');console.log(JSON.stringify({remove,add}));
if(add.deliveryProfileUpdate.userErrors.length)process.exitCode=1;