← back to Designer Wallcoverings
Designtex fill-in Step 2 COMPLETE: UOM flip verified 0 'Priced Per Single Roll' live (77 prior + 25 tag residue + 3 Pebble metafield). Relabel-only, price untouched.
b813d7d80859acb463009f69683454b7c45696d7 · 2026-06-23 15:58:36 -0700 · Steve
Files touched
A audits/designtex-uom-fix/clean-roll-tag-residue-results.jsonA audits/designtex-uom-fix/designtex-roll-residue.jsonA audits/designtex-uom-fix/flip-3-pebble-metafield.mjs
Diff
commit b813d7d80859acb463009f69683454b7c45696d7
Author: Steve <steve@designerwallcoverings.com>
Date: Tue Jun 23 15:58:36 2026 -0700
Designtex fill-in Step 2 COMPLETE: UOM flip verified 0 'Priced Per Single Roll' live (77 prior + 25 tag residue + 3 Pebble metafield). Relabel-only, price untouched.
---
.../clean-roll-tag-residue-results.json | 127 +++++++++++++++++++++
.../designtex-uom-fix/designtex-roll-residue.json | 4 +
.../designtex-uom-fix/flip-3-pebble-metafield.mjs | 29 +++++
3 files changed, 160 insertions(+)
diff --git a/audits/designtex-uom-fix/clean-roll-tag-residue-results.json b/audits/designtex-uom-fix/clean-roll-tag-residue-results.json
new file mode 100644
index 00000000..7030c2f3
--- /dev/null
+++ b/audits/designtex-uom-fix/clean-roll-tag-residue-results.json
@@ -0,0 +1,127 @@
+[
+ {
+ "id": "gid://shopify/Product/7865500794931",
+ "ok": true,
+ "errs": []
+ },
+ {
+ "id": "gid://shopify/Product/7865500827699",
+ "ok": true,
+ "errs": []
+ },
+ {
+ "id": "gid://shopify/Product/7865500860467",
+ "ok": true,
+ "errs": []
+ },
+ {
+ "id": "gid://shopify/Product/7865500893235",
+ "ok": true,
+ "errs": []
+ },
+ {
+ "id": "gid://shopify/Product/7865500926003",
+ "ok": true,
+ "errs": []
+ },
+ {
+ "id": "gid://shopify/Product/7865522913331",
+ "ok": true,
+ "errs": []
+ },
+ {
+ "id": "gid://shopify/Product/7865522946099",
+ "ok": true,
+ "errs": []
+ },
+ {
+ "id": "gid://shopify/Product/7865522978867",
+ "ok": true,
+ "errs": []
+ },
+ {
+ "id": "gid://shopify/Product/7865523011635",
+ "ok": true,
+ "errs": []
+ },
+ {
+ "id": "gid://shopify/Product/7865523044403",
+ "ok": true,
+ "errs": []
+ },
+ {
+ "id": "gid://shopify/Product/7865523077171",
+ "ok": true,
+ "errs": []
+ },
+ {
+ "id": "gid://shopify/Product/7865523142707",
+ "ok": true,
+ "errs": []
+ },
+ {
+ "id": "gid://shopify/Product/7865523175475",
+ "ok": true,
+ "errs": []
+ },
+ {
+ "id": "gid://shopify/Product/7865526845491",
+ "ok": true,
+ "errs": []
+ },
+ {
+ "id": "gid://shopify/Product/7865526878259",
+ "ok": true,
+ "errs": []
+ },
+ {
+ "id": "gid://shopify/Product/7865526943795",
+ "ok": true,
+ "errs": []
+ },
+ {
+ "id": "gid://shopify/Product/7865526976563",
+ "ok": true,
+ "errs": []
+ },
+ {
+ "id": "gid://shopify/Product/7865527009331",
+ "ok": true,
+ "errs": []
+ },
+ {
+ "id": "gid://shopify/Product/7865527042099",
+ "ok": true,
+ "errs": []
+ },
+ {
+ "id": "gid://shopify/Product/7865527074867",
+ "ok": true,
+ "errs": []
+ },
+ {
+ "id": "gid://shopify/Product/7865527107635",
+ "ok": true,
+ "errs": []
+ },
+ {
+ "id": "gid://shopify/Product/7865534939187",
+ "ok": true,
+ "errs": []
+ },
+ {
+ "id": "gid://shopify/Product/7866902937651",
+ "ok": true,
+ "errs": []
+ },
+ {
+ "id": "gid://shopify/Product/7866902970419",
+ "ok": true,
+ "errs": []
+ },
+ {
+ "id": "gid://shopify/Product/7866903003187",
+ "ok": true,
+ "errs": []
+ }
+]
\ No newline at end of file
diff --git a/audits/designtex-uom-fix/designtex-roll-residue.json b/audits/designtex-uom-fix/designtex-roll-residue.json
new file mode 100644
index 00000000..b4b19f49
--- /dev/null
+++ b/audits/designtex-uom-fix/designtex-roll-residue.json
@@ -0,0 +1,4 @@
+{
+ "rollMf": [],
+ "rollTag": []
+}
\ No newline at end of file
diff --git a/audits/designtex-uom-fix/flip-3-pebble-metafield.mjs b/audits/designtex-uom-fix/flip-3-pebble-metafield.mjs
new file mode 100644
index 00000000..f20e2cad
--- /dev/null
+++ b/audits/designtex-uom-fix/flip-3-pebble-metafield.mjs
@@ -0,0 +1,29 @@
+import fs from 'fs'; import os from 'os'; import path from 'path';
+const TOK = fs.readFileSync(path.join(os.homedir(),'Projects/secrets-manager/.env'),'utf8').match(/^SHOPIFY_ADMIN_TOKEN=(.+)$/m)[1].trim();
+const DOMAIN='designer-laboratory-sandbox.myshopify.com', VER='2024-10';
+const gql=(q,v)=>fetch(`https://${DOMAIN}/admin/api/${VER}/graphql.json`,{method:'POST',headers:{'X-Shopify-Access-Token':TOK,'Content-Type':'application/json'},body:JSON.stringify({query:q,variables:v})}).then(r=>r.json());
+const ids=[
+ 'gid://shopify/Product/7866902937651', // Pebble Hematite
+ 'gid://shopify/Product/7866902970419', // Pebble Alabaster
+ 'gid://shopify/Product/7866903003187', // Pebble Starfish
+];
+const mfMut=`mutation($mf:[MetafieldsSetInput!]!){ metafieldsSet(metafields:$mf){ userErrors{ field message } } }`;
+const tagRm=`mutation($id:ID!,$tags:[String!]!){ tagsRemove(id:$id,tags:$tags){ userErrors{ message } } }`;
+const tagAdd=`mutation($id:ID!,$tags:[String!]!){ tagsAdd(id:$id,tags:$tags){ userErrors{ message } } }`;
+const varQ=`query($id:ID!){ product(id:$id){ variants(first:5){ edges{ node{ id title } } } } }`;
+const varMut=`mutation($pid:ID!,$variants:[ProductVariantsBulkInput!]!){ productVariantsBulkUpdate(productId:$pid,variants:$variants){ userErrors{ message } } }`;
+const EXECUTE=process.argv.includes('--execute');
+console.log('Mode:',EXECUTE?'EXECUTE':'DRY',' targets:',ids.length,'(relabel-only, price never sent)');
+if(!EXECUTE) process.exit(0);
+for(const id of ids){
+ const errs=[];
+ const m=await gql(mfMut,{mf:[{ownerId:id,namespace:'global',key:'unit_of_measure',type:'single_line_text_field',value:'YARD'}]});
+ (m.data?.metafieldsSet?.userErrors||[]).forEach(e=>errs.push('mf:'+e.message));
+ const tr=await gql(tagRm,{id,tags:['Priced Per Single Roll']}); (tr.data?.tagsRemove?.userErrors||[]).forEach(e=>errs.push('tagRm:'+e.message));
+ const ta=await gql(tagAdd,{id,tags:['Priced Per Yard']}); (ta.data?.tagsAdd?.userErrors||[]).forEach(e=>errs.push('tagAdd:'+e.message));
+ const vq=await gql(varQ,{id});
+ const vs=(vq.data?.product?.variants?.edges||[]).map(e=>e.node).filter(v=>!/Sample/i.test(v.title)&&/Roll/i.test(v.title));
+ if(vs.length){ const vm=await gql(varMut,{pid:id,variants:vs.map(v=>({id:v.id,optionValues:[{optionName:'Title',name:'Yard'}]}))}); (vm.data?.productVariantsBulkUpdate?.userErrors||[]).forEach(e=>errs.push('var:'+e.message)); }
+ console.log(id, errs.length?('ERR '+errs.join('; ')):'ok');
+ await new Promise(x=>setTimeout(x,400));
+}
← 4b710456 Close 2 stale Tres Tintas pending-approval memos (work compl
·
back to Designer Wallcoverings
·
Designtex fill-in Step 4 COMPLETE: verified 0/130 discontinu 20c44252 →