← back to Dw Yolo Loop
Romo pricing: fix double-tariff bug from authoritative trade portal
7e55c7b8173c04f4de84da9729f3daa2dd8c5235 · 2026-08-03 12:26:47 -0700 · steve-office
- Root cause: our_price built from net_cost (trade + 2x tariff) not total_price_per_roll (trade + 1x)
- Confirmed vs trade.theromogroup.com: Figura W948/03 Total/Roll $946.05 -> retail $1712.31
- Catalog: recomputed our_price for 382 rows (backup: our_price_pre_tariff_fix)
- Store: corrected 117 created products ($2890.79 overcharge removed, 6 active), ledgered before->after
- REPRICE-138 was BACKWARDS (compared correct-live vs wrong-our_price) -> cancelled
Files touched
A artmura-site/romo-batch-create.pyA artmura-site/romo-reprice.pyA romo-price-correction-applied.jsonlA romo-price-correction.json
Diff
commit 7e55c7b8173c04f4de84da9729f3daa2dd8c5235
Author: steve-office <steve@designerwallcoverings.com>
Date: Mon Aug 3 12:26:47 2026 -0700
Romo pricing: fix double-tariff bug from authoritative trade portal
- Root cause: our_price built from net_cost (trade + 2x tariff) not total_price_per_roll (trade + 1x)
- Confirmed vs trade.theromogroup.com: Figura W948/03 Total/Roll $946.05 -> retail $1712.31
- Catalog: recomputed our_price for 382 rows (backup: our_price_pre_tariff_fix)
- Store: corrected 117 created products ($2890.79 overcharge removed, 6 active), ledgered before->after
- REPRICE-138 was BACKWARDS (compared correct-live vs wrong-our_price) -> cancelled
---
artmura-site/romo-batch-create.py | 75 +++++
artmura-site/romo-reprice.py | 66 ++++
romo-price-correction-applied.jsonl | 117 +++++++
romo-price-correction.json | 587 ++++++++++++++++++++++++++++++++++++
4 files changed, 845 insertions(+)
diff --git a/artmura-site/romo-batch-create.py b/artmura-site/romo-batch-create.py
new file mode 100644
index 0000000..b66efbb
--- /dev/null
+++ b/artmura-site/romo-batch-create.py
@@ -0,0 +1,75 @@
+#!/usr/bin/env python3
+"""
+romo-batch-create.py — create the full remaining Romo true-new set on the LIVE store as DRAFT.
+Same structure/guards as the canary; resumable (skips SKUs that already exist), ledgered,
+throttled, progress every 25. Activation stays a SEPARATE gate.
+Env: SHOPIFY_ADMIN_TOKEN, STORE, INPUT (jsonl), LEDGER (jsonl).
+"""
+import json, os, time, urllib.request, urllib.error
+
+TOKEN=os.environ['SHOPIFY_ADMIN_TOKEN']; STORE=os.environ['STORE']
+INPUT=os.environ['INPUT']; LEDGER=os.environ['LEDGER']
+API=f"https://{STORE}/admin/api/2024-10"
+H={"X-Shopify-Access-Token":TOKEN,"Content-Type":"application/json"}
+
+def req(method,url,body=None):
+ data=json.dumps(body).encode() if body is not None else None
+ r=urllib.request.Request(url,data=data,headers=H,method=method)
+ for attempt in range(4):
+ try:
+ with urllib.request.urlopen(r,timeout=30) as resp:
+ return resp.status, json.loads(resp.read().decode())
+ except urllib.error.HTTPError as e:
+ if e.code==429: time.sleep(2*(attempt+1)); continue
+ return e.code, json.loads(e.read().decode() or '{}')
+ except Exception as ex:
+ time.sleep(1.5); continue
+ return 0, {"errors":"retries exhausted"}
+
+def sku_exists(sku):
+ _,d=req("POST",f"{API}/graphql.json",{"query":"{ productVariants(first:1, query:\"sku:%s\"){edges{node{id}}} }"%sku})
+ return bool(d.get("data",{}).get("productVariants",{}).get("edges"))
+
+def nl(x):
+ if isinstance(x,list): return x
+ if x and x not in ('','null'):
+ try: return json.loads(x)
+ except: return []
+ return []
+
+def build(row):
+ dw=row['dw']; title=f"{row['pattern']} {row['color']}".strip()
+ tags=list(dict.fromkeys(["Romo","Wallcovering","display_variant","Priced Per Single Roll",
+ *nl(row.get('styles')),*nl(row.get('pats')),*nl(row.get('tags'))]))
+ ai=row.get('all_images')
+ imgs=[u.strip() for u in ai.split('|') if u.strip().startswith('http')] if isinstance(ai,str) and '|' in ai else nl(ai)
+ if not imgs and row.get('img'): imgs=[row['img']]
+ images=[{"src":u} for u in imgs][:6]
+ return {"product":{"title":title,"vendor":"Romo","product_type":row.get('type') or "Wallcovering",
+ "status":"draft","body_html":(f"<p>{row['desc']}</p>" if row.get('desc') else ""),"tags":", ".join(tags),
+ "options":[{"name":"Title","values":["Single Roll","Sample"]}],
+ "variants":[
+ {"option1":"Single Roll","price":str(row['price']),"sku":dw,"inventory_policy":"continue","requires_shipping":True,"taxable":True},
+ {"option1":"Sample","price":"4.25","sku":f"{dw}-Sample","inventory_policy":"deny","requires_shipping":True,"taxable":True}],
+ "images":images}}
+
+rows=[json.loads(l) for l in open(INPUT) if l.strip()]
+done={json.loads(l)['dw'] for l in open(LEDGER)} if os.path.exists(LEDGER) else set()
+led=open(LEDGER,"a")
+created=skipped=failed=0
+print(f"=== ROMO BATCH CREATE — {len(rows)} products, DRAFT (already ledgered: {len(done)}) ===",flush=True)
+for i,row in enumerate(rows,1):
+ dw=row['dw']
+ if dw in done: skipped+=1; continue
+ if sku_exists(dw):
+ led.write(json.dumps({"dw":dw,"skipped":"exists"})+"\n"); led.flush(); skipped+=1
+ else:
+ st,resp=req("POST",f"{API}/products.json",build(row))
+ if st in (200,201) and resp.get("product"):
+ p=resp["product"]; led.write(json.dumps({"dw":dw,"product_id":p["id"],"handle":p["handle"],"status":p["status"]})+"\n"); led.flush(); created+=1
+ else:
+ led.write(json.dumps({"dw":dw,"FAIL":str(resp.get('errors') or resp)[:150]})+"\n"); led.flush(); failed+=1
+ if i%25==0: print(f" [{i}/{len(rows)}] created={created} skipped={skipped} failed={failed}",flush=True)
+ time.sleep(0.55)
+led.close()
+print(f"\n=== DONE: created={created} skipped={skipped} failed={failed} of {len(rows)} → {LEDGER} ===",flush=True)
diff --git a/artmura-site/romo-reprice.py b/artmura-site/romo-reprice.py
new file mode 100644
index 0000000..d1762dc
--- /dev/null
+++ b/artmura-site/romo-reprice.py
@@ -0,0 +1,66 @@
+#!/usr/bin/env python3
+"""
+romo-reprice.py — reprice live Romo Single Roll variants to the catalog's correct retail.
+Re-fetches each product's LIVE current price (state-drift guard) before any change.
+Default = DRY-RUN (no writes). --apply performs live productVariantUpdate, ledgered before->after.
+Subset: --sku <dwsku> | --canary N | --all (from romo-reprice-candidates.json)
+Env: SHOPIFY_ADMIN_TOKEN, STORE.
+"""
+import json, os, sys, time, urllib.request, urllib.error
+
+TOKEN=os.environ['SHOPIFY_ADMIN_TOKEN']; STORE=os.environ['STORE']
+API=f"https://{STORE}/admin/api/2024-10/graphql.json"
+H={"X-Shopify-Access-Token":TOKEN,"Content-Type":"application/json"}
+CANDS=os.path.join(os.path.dirname(__file__),"romo-reprice-candidates.json")
+LEDGER=os.path.expanduser("~/Projects/dw-yolo-loop/romo-reprice-applied.jsonl")
+
+def gql(q,v=None):
+ for a in range(4):
+ try:
+ r=urllib.request.Request(API,data=json.dumps({"query":q,"variables":v or {}}).encode(),headers=H,method="POST")
+ with urllib.request.urlopen(r,timeout=30) as resp: return json.loads(resp.read().decode())
+ except urllib.error.HTTPError as e:
+ if e.code==429: time.sleep(2*(a+1)); continue
+ return {"errors":str(e)}
+ return {"errors":"retries exhausted"}
+
+def live_variant(dwsku):
+ q='{ productVariants(first:1, query:"sku:%s"){edges{node{id price product{id status title}}}} }'%dwsku
+ d=gql(q); e=d.get("data",{}).get("productVariants",{}).get("edges") if "data" in d else None
+ if not e: return None
+ n=e[0]["node"]; return {"vid":n["id"],"price":n["price"],"pid":n["product"]["id"],"status":n["product"]["status"],"title":n["product"]["title"]}
+
+# args
+apply = "--apply" in sys.argv
+cands=json.load(open(CANDS))
+if "--sku" in sys.argv: sel=[c for c in cands if c["dw"]==sys.argv[sys.argv.index("--sku")+1]]
+elif "--canary" in sys.argv: sel=cands[:int(sys.argv[sys.argv.index("--canary")+1])]
+elif "--all" in sys.argv: sel=cands
+else: sel=cands[:10]
+
+print(f"=== ROMO REPRICE {'APPLY (LIVE WRITE)' if apply else 'DRY-RUN'} — {len(sel)} SKUs ===")
+print(f"{'DW SKU':<13}{'live now':>10}{'artifact':>10}{'→ new':>10}{'status':>8} note")
+led=open(LEDGER,"a") if apply else None
+applied=skipped=drift=0
+for c in sel:
+ lv=live_variant(c["dw"])
+ if not lv: print(f"{c['dw']:<13}{'—':>10} NOT FOUND on store (skip)"); skipped+=1; continue
+ live_now=float(lv["price"]); new=float(c["correct_price"]); art=float(c["live_price"])
+ note=[]
+ if abs(live_now-art)>=0.01: note.append(f"drift(artifact ${art:.2f})"); drift+=1
+ if abs(live_now-new)<0.01: note.append("already correct");
+ below = c.get("cost") and live_now<float(c["cost"])
+ if below: note.append("BELOW-COST")
+ flag=""
+ if apply and abs(live_now-new)>=0.01:
+ m='mutation($id:ID!,$p:String!){productVariantUpdate(input:{id:$id,price:$p}){productVariant{price} userErrors{message}}}'
+ r=gql(m,{"id":lv["vid"],"p":f"{new:.2f}"})
+ ue=r.get("data",{}).get("productVariantUpdate",{}).get("userErrors") if "data" in r else r.get("errors")
+ if not ue:
+ led.write(json.dumps({"dw":c["dw"],"vid":lv["vid"],"before":live_now,"after":round(new,2)})+"\n"); led.flush(); applied+=1; flag="✅ written"
+ else: flag=f"❌ {str(ue)[:60]}"
+ print(f"{c['dw']:<13}${live_now:>9.2f}${art:>9.2f}${new:>9.2f}{lv['status']:>8} {' '.join(note)} {flag}")
+ time.sleep(0.5)
+if led: led.close()
+print(f"\n=== {'applied '+str(applied)+' writes' if apply else 'DRY-RUN — nothing written'} | drift:{drift} | not-found:{skipped} ===")
+if apply: print(f"reversible ledger: {LEDGER}")
diff --git a/romo-price-correction-applied.jsonl b/romo-price-correction-applied.jsonl
new file mode 100644
index 0000000..1962759
--- /dev/null
+++ b/romo-price-correction-applied.jsonl
@@ -0,0 +1,117 @@
+{"dw": "DWRM-240741", "vid": "gid://shopify/ProductVariant/44660165967923", "before": 296.65, "after": 283.17, "status": "ACTIVE"}
+{"dw": "DWRM-240706", "vid": "gid://shopify/ProductVariant/44660166197299", "before": 254.84, "after": 243.26, "status": "ACTIVE"}
+{"dw": "DWRM-240614", "vid": "gid://shopify/ProductVariant/44660166524979", "before": 246.88, "after": 235.66, "status": "ACTIVE"}
+{"dw": "DWRM-240624", "vid": "gid://shopify/ProductVariant/44660215054387", "before": 246.88, "after": 235.66, "status": "DRAFT"}
+{"dw": "DWRM-241163", "vid": "gid://shopify/ProductVariant/44660215119923", "before": 256.83, "after": 245.16, "status": "DRAFT"}
+{"dw": "DWRM-240333", "vid": "gid://shopify/ProductVariant/44660215283763", "before": 254.84, "after": 243.26, "status": "DRAFT"}
+{"dw": "DWRM-241258", "vid": "gid://shopify/ProductVariant/44660216954931", "before": 1845.61, "after": 1761.72, "status": "DRAFT"}
+{"dw": "DWRM-241531", "vid": "gid://shopify/ProductVariant/44660217380915", "before": 1616.65, "after": 1543.17, "status": "DRAFT"}
+{"dw": "DWRM-240866", "vid": "gid://shopify/ProductVariant/44660218298419", "before": 169.23, "after": 161.54, "status": "DRAFT"}
+{"dw": "DWRM-241264", "vid": "gid://shopify/ProductVariant/44660218363955", "before": 1556.92, "after": 1486.15, "status": "DRAFT"}
+{"dw": "DWRM-241267", "vid": "gid://shopify/ProductVariant/44660218658867", "before": 1835.66, "after": 1752.22, "status": "DRAFT"}
+{"dw": "DWRM-240760", "vid": "gid://shopify/ProductVariant/44660218724403", "before": 139.37, "after": 133.03, "status": "DRAFT"}
+{"dw": "DWRM-241271", "vid": "gid://shopify/ProductVariant/44660218789939", "before": 3247.24, "after": 3099.64, "status": "DRAFT"}
+{"dw": "DWRM-241273", "vid": "gid://shopify/ProductVariant/44660218921011", "before": 3713.12, "after": 3544.34, "status": "DRAFT"}
+{"dw": "DWRM-241047", "vid": "gid://shopify/ProductVariant/44660219019315", "before": 191.13, "after": 182.44, "status": "DRAFT"}
+{"dw": "DWRM-241275", "vid": "gid://shopify/ProductVariant/44660219346995", "before": 688.87, "after": 657.56, "status": "DRAFT"}
+{"dw": "DWRM-240772", "vid": "gid://shopify/ProductVariant/44660219740211", "before": 139.37, "after": 133.03, "status": "DRAFT"}
+{"dw": "DWRM-240670", "vid": "gid://shopify/ProductVariant/44660220559411", "before": 246.88, "after": 235.66, "status": "DRAFT"}
+{"dw": "DWRM-241231", "vid": "gid://shopify/ProductVariant/44660220788787", "before": 1696.29, "after": 1619.19, "status": "DRAFT"}
+{"dw": "DWRM-241292", "vid": "gid://shopify/ProductVariant/44660221935667", "before": 1674.39, "after": 1598.28, "status": "DRAFT"}
+{"dw": "DWRM-241296", "vid": "gid://shopify/ProductVariant/44660222787635", "before": 1005.43, "after": 959.73, "status": "DRAFT"}
+{"dw": "DWRM-241298", "vid": "gid://shopify/ProductVariant/44660222885939", "before": 645.07, "after": 615.75, "status": "DRAFT"}
+{"dw": "DWRM-241299", "vid": "gid://shopify/ProductVariant/44660223606835", "before": 645.07, "after": 615.75, "status": "DRAFT"}
+{"dw": "DWRM-241300", "vid": "gid://shopify/ProductVariant/44660223770675", "before": 645.07, "after": 615.75, "status": "DRAFT"}
+{"dw": "DWRM-241325", "vid": "gid://shopify/ProductVariant/44660224262195", "before": 334.48, "after": 319.28, "status": "DRAFT"}
+{"dw": "DWRM-241446", "vid": "gid://shopify/ProductVariant/44660225245235", "before": 308.6, "after": 294.57, "status": "DRAFT"}
+{"dw": "DWRM-241448", "vid": "gid://shopify/ProductVariant/44660225802291", "before": 509.68, "after": 486.52, "status": "DRAFT"}
+{"dw": "DWRM-241457", "vid": "gid://shopify/ProductVariant/44660226031667", "before": 217.01, "after": 207.15, "status": "DRAFT"}
+{"dw": "DWRM-241458", "vid": "gid://shopify/ProductVariant/44660293763123", "before": 177.19, "after": 169.14, "status": "DRAFT"}
+{"dw": "DWRM-241459", "vid": "gid://shopify/ProductVariant/44660294058035", "before": 177.19, "after": 169.14, "status": "DRAFT"}
+{"dw": "DWRM-240297", "vid": "gid://shopify/ProductVariant/44660294221875", "before": 177.19, "after": 169.14, "status": "DRAFT"}
+{"dw": "DWRM-240312", "vid": "gid://shopify/ProductVariant/44660294385715", "before": 276.74, "after": 264.16, "status": "DRAFT"}
+{"dw": "DWRM-240318", "vid": "gid://shopify/ProductVariant/44660294713395", "before": 268.78, "after": 256.56, "status": "DRAFT"}
+{"dw": "DWRM-241464", "vid": "gid://shopify/ProductVariant/44660294975539", "before": 217.01, "after": 207.15, "status": "DRAFT"}
+{"dw": "DWRM-240319", "vid": "gid://shopify/ProductVariant/44660295106611", "before": 191.13, "after": 182.44, "status": "DRAFT"}
+{"dw": "DWRM-240735", "vid": "gid://shopify/ProductVariant/44660295172147", "before": 318.55, "after": 304.07, "status": "DRAFT"}
+{"dw": "DWRM-240346", "vid": "gid://shopify/ProductVariant/44660295368755", "before": 254.84, "after": 243.26, "status": "DRAFT"}
+{"dw": "DWRM-240744", "vid": "gid://shopify/ProductVariant/44660295630899", "before": 338.46, "after": 323.08, "status": "DRAFT"}
+{"dw": "DWRM-240373", "vid": "gid://shopify/ProductVariant/44660296056883", "before": 213.03, "after": 203.35, "status": "DRAFT"}
+{"dw": "DWRM-240394", "vid": "gid://shopify/ProductVariant/44660296384563", "before": 236.92, "after": 226.15, "status": "DRAFT"}
+{"dw": "DWRM-241499", "vid": "gid://shopify/ProductVariant/44660296581171", "before": 1616.65, "after": 1543.17, "status": "DRAFT"}
+{"dw": "DWRM-240460", "vid": "gid://shopify/ProductVariant/44660296745011", "before": 298.64, "after": 285.07, "status": "DRAFT"}
+{"dw": "DWRM-240473", "vid": "gid://shopify/ProductVariant/44660297203763", "before": 274.75, "after": 262.26, "status": "DRAFT"}
+{"dw": "DWRM-240756", "vid": "gid://shopify/ProductVariant/44660297629747", "before": 139.37, "after": 133.03, "status": "DRAFT"}
+{"dw": "DWRM-241506", "vid": "gid://shopify/ProductVariant/44660297728051", "before": 1130.86, "after": 1079.46, "status": "DRAFT"}
+{"dw": "DWRM-240485", "vid": "gid://shopify/ProductVariant/44660297793587", "before": 408.14, "after": 389.59, "status": "DRAFT"}
+{"dw": "DWRM-241508", "vid": "gid://shopify/ProductVariant/44660297924659", "before": 1616.65, "after": 1543.17, "status": "DRAFT"}
+{"dw": "DWRM-240523", "vid": "gid://shopify/ProductVariant/44660297990195", "before": 230.95, "after": 220.45, "status": "DRAFT"}
+{"dw": "DWRM-240785", "vid": "gid://shopify/ProductVariant/44660298219571", "before": 137.38, "after": 131.13, "status": "DRAFT"}
+{"dw": "DWRM-240811", "vid": "gid://shopify/ProductVariant/44660298285107", "before": 205.07, "after": 195.75, "status": "DRAFT"}
+{"dw": "DWRM-240596", "vid": "gid://shopify/ProductVariant/44660298416179", "before": 362.35, "after": 345.88, "status": "DRAFT"}
+{"dw": "DWRM-240851", "vid": "gid://shopify/ProductVariant/44660298514483", "before": 284.71, "after": 271.76, "status": "DRAFT"}
+{"dw": "DWRM-240861", "vid": "gid://shopify/ProductVariant/44660298645555", "before": 254.84, "after": 243.26, "status": "DRAFT"}
+{"dw": "DWRM-240767", "vid": "gid://shopify/ProductVariant/44660298711091", "before": 139.37, "after": 133.03, "status": "DRAFT"}
+{"dw": "DWRM-240865", "vid": "gid://shopify/ProductVariant/44660299202611", "before": 254.84, "after": 243.26, "status": "DRAFT"}
+{"dw": "DWRM-240764", "vid": "gid://shopify/ProductVariant/44660299366451", "before": 139.37, "after": 133.03, "status": "DRAFT"}
+{"dw": "DWRM-240875", "vid": "gid://shopify/ProductVariant/44660299431987", "before": 169.23, "after": 161.54, "status": "DRAFT"}
+{"dw": "DWRM-240890", "vid": "gid://shopify/ProductVariant/44660299497523", "before": 167.24, "after": 159.64, "status": "DRAFT"}
+{"dw": "DWRM-240908", "vid": "gid://shopify/ProductVariant/44660299759667", "before": 234.93, "after": 224.25, "status": "DRAFT"}
+{"dw": "DWRM-240800", "vid": "gid://shopify/ProductVariant/44660299857971", "before": 211.04, "after": 201.45, "status": "DRAFT"}
+{"dw": "DWRM-240958", "vid": "gid://shopify/ProductVariant/44660300185651", "before": 252.85, "after": 241.36, "status": "DRAFT"}
+{"dw": "DWRM-240968", "vid": "gid://shopify/ProductVariant/44660300349491", "before": 262.81, "after": 250.86, "status": "DRAFT"}
+{"dw": "DWRM-240813", "vid": "gid://shopify/ProductVariant/44660300513331", "before": 222.99, "after": 212.85, "status": "DRAFT"}
+{"dw": "DWRM-240995", "vid": "gid://shopify/ProductVariant/44660300677171", "before": 300.63, "after": 286.97, "status": "DRAFT"}
+{"dw": "DWRM-240817", "vid": "gid://shopify/ProductVariant/44660300841011", "before": 205.07, "after": 195.75, "status": "DRAFT"}
+{"dw": "DWRM-240997", "vid": "gid://shopify/ProductVariant/44660300972083", "before": 300.63, "after": 286.97, "status": "DRAFT"}
+{"dw": "DWRM-240854", "vid": "gid://shopify/ProductVariant/44660301201459", "before": 284.71, "after": 271.76, "status": "DRAFT"}
+{"dw": "DWRM-241032", "vid": "gid://shopify/ProductVariant/44660301332531", "before": 191.13, "after": 182.44, "status": "DRAFT"}
+{"dw": "DWRM-241043", "vid": "gid://shopify/ProductVariant/44660301496371", "before": 191.13, "after": 182.44, "status": "DRAFT"}
+{"dw": "DWRM-240886", "vid": "gid://shopify/ProductVariant/44660301594675", "before": 169.23, "after": 161.54, "status": "DRAFT"}
+{"dw": "DWRM-240897", "vid": "gid://shopify/ProductVariant/44660301824051", "before": 205.07, "after": 195.75, "status": "DRAFT"}
+{"dw": "DWRM-241076", "vid": "gid://shopify/ProductVariant/44660301889587", "before": 563.44, "after": 537.83, "status": "DRAFT"}
+{"dw": "DWRM-240921", "vid": "gid://shopify/ProductVariant/44660302118963", "before": 163.26, "after": 155.84, "status": "DRAFT"}
+{"dw": "DWRM-241086", "vid": "gid://shopify/ProductVariant/44660302217267", "before": 193.12, "after": 184.34, "status": "DRAFT"}
+{"dw": "DWRM-240953", "vid": "gid://shopify/ProductVariant/44660302413875", "before": 207.06, "after": 197.65, "status": "DRAFT"}
+{"dw": "DWRM-241101", "vid": "gid://shopify/ProductVariant/44660302512179", "before": 215.02, "after": 205.25, "status": "DRAFT"}
+{"dw": "DWRM-241103", "vid": "gid://shopify/ProductVariant/44660302708787", "before": 234.93, "after": 224.25, "status": "DRAFT"}
+{"dw": "DWRM-241014", "vid": "gid://shopify/ProductVariant/44660302839859", "before": 300.63, "after": 286.97, "status": "DRAFT"}
+{"dw": "DWRM-241111", "vid": "gid://shopify/ProductVariant/44660302938163", "before": 226.97, "after": 216.65, "status": "DRAFT"}
+{"dw": "DWRM-241115", "vid": "gid://shopify/ProductVariant/44660303167539", "before": 199.1, "after": 190.05, "status": "DRAFT"}
+{"dw": "DWRM-241053", "vid": "gid://shopify/ProductVariant/44660303331379", "before": 539.55, "after": 515.02, "status": "DRAFT"}
+{"dw": "DWRM-241054", "vid": "gid://shopify/ProductVariant/44660303462451", "before": 539.55, "after": 515.02, "status": "DRAFT"}
+{"dw": "DWRM-241123", "vid": "gid://shopify/ProductVariant/44660303659059", "before": 159.28, "after": 152.04, "status": "DRAFT"}
+{"dw": "DWRM-241071", "vid": "gid://shopify/ProductVariant/44660303757363", "before": 213.03, "after": 203.35, "status": "DRAFT"}
+{"dw": "DWRM-241134", "vid": "gid://shopify/ProductVariant/44660303953971", "before": 521.63, "after": 497.92, "status": "DRAFT"}
+{"dw": "DWRM-241094", "vid": "gid://shopify/ProductVariant/44660304052275", "before": 169.23, "after": 161.54, "status": "DRAFT"}
+{"dw": "DWRM-241135", "vid": "gid://shopify/ProductVariant/44660304117811", "before": 521.63, "after": 497.92, "status": "DRAFT"}
+{"dw": "DWRM-241136", "vid": "gid://shopify/ProductVariant/44660304216115", "before": 159.28, "after": 152.04, "status": "DRAFT"}
+{"dw": "DWRM-241137", "vid": "gid://shopify/ProductVariant/44660304347187", "before": 306.61, "after": 292.67, "status": "DRAFT"}
+{"dw": "DWRM-240657", "vid": "gid://shopify/ProductVariant/44660304412723", "before": 348.42, "after": 332.58, "status": "DRAFT"}
+{"dw": "DWRM-241139", "vid": "gid://shopify/ProductVariant/44660304478259", "before": 306.61, "after": 292.67, "status": "DRAFT"}
+{"dw": "DWRM-241161", "vid": "gid://shopify/ProductVariant/44660304609331", "before": 250.86, "after": 239.46, "status": "DRAFT"}
+{"dw": "DWRM-241142", "vid": "gid://shopify/ProductVariant/44660304674867", "before": 256.83, "after": 245.16, "status": "DRAFT"}
+{"dw": "DWRM-240533", "vid": "gid://shopify/ProductVariant/44660305035315", "before": 955.66, "after": 912.22, "status": "DRAFT"}
+{"dw": "DWRM-241255", "vid": "gid://shopify/ProductVariant/44660305526835", "before": 1845.61, "after": 1761.72, "status": "DRAFT"}
+{"dw": "DWRM-241262", "vid": "gid://shopify/ProductVariant/44660305657907", "before": 1556.92, "after": 1486.15, "status": "DRAFT"}
+{"dw": "DWRM-241184", "vid": "gid://shopify/ProductVariant/44660306935859", "before": 1023.35, "after": 976.83, "status": "DRAFT"}
+{"dw": "DWRM-241188", "vid": "gid://shopify/ProductVariant/44660307001395", "before": 692.85, "after": 661.36, "status": "DRAFT"}
+{"dw": "DWRM-241125", "vid": "gid://shopify/ProductVariant/44660307230771", "before": 177.19, "after": 169.14, "status": "DRAFT"}
+{"dw": "DWRM-241351", "vid": "gid://shopify/ProductVariant/44660307296307", "before": 601.27, "after": 573.94, "status": "DRAFT"}
+{"dw": "DWRM-241207", "vid": "gid://shopify/ProductVariant/44660307361843", "before": 280.72, "after": 267.96, "status": "DRAFT"}
+{"dw": "DWRM-241214", "vid": "gid://shopify/ProductVariant/44660307722291", "before": 441.99, "after": 421.9, "status": "DRAFT"}
+{"dw": "DWRM-241132", "vid": "gid://shopify/ProductVariant/44660307820595", "before": 521.63, "after": 497.92, "status": "DRAFT"}
+{"dw": "DWRM-241234", "vid": "gid://shopify/ProductVariant/44660308017203", "before": 1134.84, "after": 1083.26, "status": "DRAFT"}
+{"dw": "DWRM-241239", "vid": "gid://shopify/ProductVariant/44660309360691", "before": 1112.94, "after": 1062.35, "status": "DRAFT"}
+{"dw": "DWRM-241503", "vid": "gid://shopify/ProductVariant/44660309688371", "before": 1130.86, "after": 1079.46, "status": "DRAFT"}
+{"dw": "DWRM-241240", "vid": "gid://shopify/ProductVariant/44660310016051", "before": 1730.14, "after": 1651.49, "status": "DRAFT"}
+{"dw": "DWRM-240942", "vid": "gid://shopify/ProductVariant/44660310310963", "before": 248.87, "after": 237.56, "status": "DRAFT"}
+{"dw": "DWRM-240269", "vid": "gid://shopify/ProductVariant/44660310507571", "before": 244.89, "after": 233.76, "status": "DRAFT"}
+{"dw": "DWRM-241141", "vid": "gid://shopify/ProductVariant/44660310999091", "before": 256.83, "after": 245.16, "status": "DRAFT"}
+{"dw": "DWRM-241421", "vid": "gid://shopify/ProductVariant/44660311162931", "before": 481.81, "after": 459.91, "status": "DRAFT"}
+{"dw": "DWRM-241056", "vid": "gid://shopify/ProductVariant/44660311490611", "before": 213.03, "after": 203.35, "status": "DRAFT"}
+{"dw": "DWRM-241119", "vid": "gid://shopify/ProductVariant/44660312801331", "before": 226.97, "after": 216.65, "status": "DRAFT"}
+{"dw": "DWRM-240948", "vid": "gid://shopify/ProductVariant/44660312997939", "before": 215.02, "after": 205.25, "status": "DRAFT"}
+{"dw": "DWRM-241249", "vid": "gid://shopify/ProductVariant/44660165673011", "before": 1793.85, "after": 1712.31, "status": "ACTIVE"}
+{"dw": "DWRM-241252", "vid": "gid://shopify/ProductVariant/44660166131763", "before": 1477.29, "after": 1410.14, "status": "ACTIVE"}
+{"dw": "DWRM-240437", "vid": "gid://shopify/ProductVariant/44660166819891", "before": 300.63, "after": 286.97, "status": "ACTIVE"}
diff --git a/romo-price-correction.json b/romo-price-correction.json
new file mode 100644
index 0000000..8b664d8
--- /dev/null
+++ b/romo-price-correction.json
@@ -0,0 +1,587 @@
+[
+ {
+ "dw": "DWRM-240741",
+ "from": 296.65,
+ "to": 283.17
+ },
+ {
+ "dw": "DWRM-240706",
+ "from": 254.84,
+ "to": 243.26
+ },
+ {
+ "dw": "DWRM-240614",
+ "from": 246.88,
+ "to": 235.66
+ },
+ {
+ "dw": "DWRM-240624",
+ "from": 246.88,
+ "to": 235.66
+ },
+ {
+ "dw": "DWRM-241163",
+ "from": 256.83,
+ "to": 245.16
+ },
+ {
+ "dw": "DWRM-240333",
+ "from": 254.84,
+ "to": 243.26
+ },
+ {
+ "dw": "DWRM-241258",
+ "from": 1845.61,
+ "to": 1761.72
+ },
+ {
+ "dw": "DWRM-241531",
+ "from": 1616.65,
+ "to": 1543.17
+ },
+ {
+ "dw": "DWRM-240866",
+ "from": 169.23,
+ "to": 161.54
+ },
+ {
+ "dw": "DWRM-241264",
+ "from": 1556.92,
+ "to": 1486.15
+ },
+ {
+ "dw": "DWRM-241267",
+ "from": 1835.66,
+ "to": 1752.22
+ },
+ {
+ "dw": "DWRM-240760",
+ "from": 139.37,
+ "to": 133.03
+ },
+ {
+ "dw": "DWRM-241271",
+ "from": 3247.24,
+ "to": 3099.64
+ },
+ {
+ "dw": "DWRM-241273",
+ "from": 3713.12,
+ "to": 3544.34
+ },
+ {
+ "dw": "DWRM-241047",
+ "from": 191.13,
+ "to": 182.44
+ },
+ {
+ "dw": "DWRM-241275",
+ "from": 688.87,
+ "to": 657.56
+ },
+ {
+ "dw": "DWRM-240772",
+ "from": 139.37,
+ "to": 133.03
+ },
+ {
+ "dw": "DWRM-240670",
+ "from": 246.88,
+ "to": 235.66
+ },
+ {
+ "dw": "DWRM-241231",
+ "from": 1696.29,
+ "to": 1619.19
+ },
+ {
+ "dw": "DWRM-241292",
+ "from": 1674.39,
+ "to": 1598.28
+ },
+ {
+ "dw": "DWRM-241296",
+ "from": 1005.43,
+ "to": 959.73
+ },
+ {
+ "dw": "DWRM-241298",
+ "from": 645.07,
+ "to": 615.75
+ },
+ {
+ "dw": "DWRM-241299",
+ "from": 645.07,
+ "to": 615.75
+ },
+ {
+ "dw": "DWRM-241300",
+ "from": 645.07,
+ "to": 615.75
+ },
+ {
+ "dw": "DWRM-241325",
+ "from": 334.48,
+ "to": 319.28
+ },
+ {
+ "dw": "DWRM-241446",
+ "from": 308.6,
+ "to": 294.57
+ },
+ {
+ "dw": "DWRM-241448",
+ "from": 509.68,
+ "to": 486.52
+ },
+ {
+ "dw": "DWRM-241457",
+ "from": 217.01,
+ "to": 207.15
+ },
+ {
+ "dw": "DWRM-241458",
+ "from": 177.19,
+ "to": 169.14
+ },
+ {
+ "dw": "DWRM-241459",
+ "from": 177.19,
+ "to": 169.14
+ },
+ {
+ "dw": "DWRM-240297",
+ "from": 177.19,
+ "to": 169.14
+ },
+ {
+ "dw": "DWRM-240312",
+ "from": 276.74,
+ "to": 264.16
+ },
+ {
+ "dw": "DWRM-240318",
+ "from": 268.78,
+ "to": 256.56
+ },
+ {
+ "dw": "DWRM-241464",
+ "from": 217.01,
+ "to": 207.15
+ },
+ {
+ "dw": "DWRM-240319",
+ "from": 191.13,
+ "to": 182.44
+ },
+ {
+ "dw": "DWRM-240735",
+ "from": 318.55,
+ "to": 304.07
+ },
+ {
+ "dw": "DWRM-240346",
+ "from": 254.84,
+ "to": 243.26
+ },
+ {
+ "dw": "DWRM-240744",
+ "from": 338.46,
+ "to": 323.08
+ },
+ {
+ "dw": "DWRM-240373",
+ "from": 213.03,
+ "to": 203.35
+ },
+ {
+ "dw": "DWRM-240394",
+ "from": 236.92,
+ "to": 226.15
+ },
+ {
+ "dw": "DWRM-241499",
+ "from": 1616.65,
+ "to": 1543.17
+ },
+ {
+ "dw": "DWRM-240460",
+ "from": 298.64,
+ "to": 285.07
+ },
+ {
+ "dw": "DWRM-240473",
+ "from": 274.75,
+ "to": 262.26
+ },
+ {
+ "dw": "DWRM-240756",
+ "from": 139.37,
+ "to": 133.03
+ },
+ {
+ "dw": "DWRM-241506",
+ "from": 1130.86,
+ "to": 1079.46
+ },
+ {
+ "dw": "DWRM-240485",
+ "from": 408.14,
+ "to": 389.59
+ },
+ {
+ "dw": "DWRM-241508",
+ "from": 1616.65,
+ "to": 1543.17
+ },
+ {
+ "dw": "DWRM-240523",
+ "from": 230.95,
+ "to": 220.45
+ },
+ {
+ "dw": "DWRM-240785",
+ "from": 137.38,
+ "to": 131.13
+ },
+ {
+ "dw": "DWRM-240811",
+ "from": 205.07,
+ "to": 195.75
+ },
+ {
+ "dw": "DWRM-240596",
+ "from": 362.35,
+ "to": 345.88
+ },
+ {
+ "dw": "DWRM-240851",
+ "from": 284.71,
+ "to": 271.76
+ },
+ {
+ "dw": "DWRM-240861",
+ "from": 254.84,
+ "to": 243.26
+ },
+ {
+ "dw": "DWRM-240767",
+ "from": 139.37,
+ "to": 133.03
+ },
+ {
+ "dw": "DWRM-240865",
+ "from": 254.84,
+ "to": 243.26
+ },
+ {
+ "dw": "DWRM-240764",
+ "from": 139.37,
+ "to": 133.03
+ },
+ {
+ "dw": "DWRM-240875",
+ "from": 169.23,
+ "to": 161.54
+ },
+ {
+ "dw": "DWRM-240890",
+ "from": 167.24,
+ "to": 159.64
+ },
+ {
+ "dw": "DWRM-240908",
+ "from": 234.93,
+ "to": 224.25
+ },
+ {
+ "dw": "DWRM-240800",
+ "from": 211.04,
+ "to": 201.45
+ },
+ {
+ "dw": "DWRM-240958",
+ "from": 252.85,
+ "to": 241.36
+ },
+ {
+ "dw": "DWRM-240968",
+ "from": 262.81,
+ "to": 250.86
+ },
+ {
+ "dw": "DWRM-240813",
+ "from": 222.99,
+ "to": 212.85
+ },
+ {
+ "dw": "DWRM-240995",
+ "from": 300.63,
+ "to": 286.97
+ },
+ {
+ "dw": "DWRM-240817",
+ "from": 205.07,
+ "to": 195.75
+ },
+ {
+ "dw": "DWRM-240997",
+ "from": 300.63,
+ "to": 286.97
+ },
+ {
+ "dw": "DWRM-240854",
+ "from": 284.71,
+ "to": 271.76
+ },
+ {
+ "dw": "DWRM-241032",
+ "from": 191.13,
+ "to": 182.44
+ },
+ {
+ "dw": "DWRM-241043",
+ "from": 191.13,
+ "to": 182.44
+ },
+ {
+ "dw": "DWRM-240886",
+ "from": 169.23,
+ "to": 161.54
+ },
+ {
+ "dw": "DWRM-240897",
+ "from": 205.07,
+ "to": 195.75
+ },
+ {
+ "dw": "DWRM-241076",
+ "from": 563.44,
+ "to": 537.83
+ },
+ {
+ "dw": "DWRM-240921",
+ "from": 163.26,
+ "to": 155.84
+ },
+ {
+ "dw": "DWRM-241086",
+ "from": 193.12,
+ "to": 184.34
+ },
+ {
+ "dw": "DWRM-240953",
+ "from": 207.06,
+ "to": 197.65
+ },
+ {
+ "dw": "DWRM-241101",
+ "from": 215.02,
+ "to": 205.25
+ },
+ {
+ "dw": "DWRM-241103",
+ "from": 234.93,
+ "to": 224.25
+ },
+ {
+ "dw": "DWRM-241014",
+ "from": 300.63,
+ "to": 286.97
+ },
+ {
+ "dw": "DWRM-241111",
+ "from": 226.97,
+ "to": 216.65
+ },
+ {
+ "dw": "DWRM-241115",
+ "from": 199.1,
+ "to": 190.05
+ },
+ {
+ "dw": "DWRM-241053",
+ "from": 539.55,
+ "to": 515.02
+ },
+ {
+ "dw": "DWRM-241054",
+ "from": 539.55,
+ "to": 515.02
+ },
+ {
+ "dw": "DWRM-241123",
+ "from": 159.28,
+ "to": 152.04
+ },
+ {
+ "dw": "DWRM-241071",
+ "from": 213.03,
+ "to": 203.35
+ },
+ {
+ "dw": "DWRM-241134",
+ "from": 521.63,
+ "to": 497.92
+ },
+ {
+ "dw": "DWRM-241094",
+ "from": 169.23,
+ "to": 161.54
+ },
+ {
+ "dw": "DWRM-241135",
+ "from": 521.63,
+ "to": 497.92
+ },
+ {
+ "dw": "DWRM-241136",
+ "from": 159.28,
+ "to": 152.04
+ },
+ {
+ "dw": "DWRM-241137",
+ "from": 306.61,
+ "to": 292.67
+ },
+ {
+ "dw": "DWRM-240657",
+ "from": 348.42,
+ "to": 332.58
+ },
+ {
+ "dw": "DWRM-241139",
+ "from": 306.61,
+ "to": 292.67
+ },
+ {
+ "dw": "DWRM-241161",
+ "from": 250.86,
+ "to": 239.46
+ },
+ {
+ "dw": "DWRM-241142",
+ "from": 256.83,
+ "to": 245.16
+ },
+ {
+ "dw": "DWRM-240533",
+ "from": 955.66,
+ "to": 912.22
+ },
+ {
+ "dw": "DWRM-241255",
+ "from": 1845.61,
+ "to": 1761.72
+ },
+ {
+ "dw": "DWRM-241262",
+ "from": 1556.92,
+ "to": 1486.15
+ },
+ {
+ "dw": "DWRM-241184",
+ "from": 1023.35,
+ "to": 976.83
+ },
+ {
+ "dw": "DWRM-241188",
+ "from": 692.85,
+ "to": 661.36
+ },
+ {
+ "dw": "DWRM-241125",
+ "from": 177.19,
+ "to": 169.14
+ },
+ {
+ "dw": "DWRM-241351",
+ "from": 601.27,
+ "to": 573.94
+ },
+ {
+ "dw": "DWRM-241207",
+ "from": 280.72,
+ "to": 267.96
+ },
+ {
+ "dw": "DWRM-241214",
+ "from": 441.99,
+ "to": 421.9
+ },
+ {
+ "dw": "DWRM-241132",
+ "from": 521.63,
+ "to": 497.92
+ },
+ {
+ "dw": "DWRM-241234",
+ "from": 1134.84,
+ "to": 1083.26
+ },
+ {
+ "dw": "DWRM-241239",
+ "from": 1112.94,
+ "to": 1062.35
+ },
+ {
+ "dw": "DWRM-241503",
+ "from": 1130.86,
+ "to": 1079.46
+ },
+ {
+ "dw": "DWRM-241240",
+ "from": 1730.14,
+ "to": 1651.49
+ },
+ {
+ "dw": "DWRM-240942",
+ "from": 248.87,
+ "to": 237.56
+ },
+ {
+ "dw": "DWRM-240269",
+ "from": 244.89,
+ "to": 233.76
+ },
+ {
+ "dw": "DWRM-241141",
+ "from": 256.83,
+ "to": 245.16
+ },
+ {
+ "dw": "DWRM-241421",
+ "from": 481.81,
+ "to": 459.91
+ },
+ {
+ "dw": "DWRM-241056",
+ "from": 213.03,
+ "to": 203.35
+ },
+ {
+ "dw": "DWRM-241119",
+ "from": 226.97,
+ "to": 216.65
+ },
+ {
+ "dw": "DWRM-240948",
+ "from": 215.02,
+ "to": 205.25
+ },
+ {
+ "dw": "DWRM-241249",
+ "from": 1793.85,
+ "to": 1712.31
+ },
+ {
+ "dw": "DWRM-241252",
+ "from": 1477.29,
+ "to": 1410.14
+ },
+ {
+ "dw": "DWRM-240437",
+ "from": 300.63,
+ "to": 286.97
+ }
+]
\ No newline at end of file
← 69ae2e6 Romo REPRICE dry-run: 138 live-reconciled candidates (1 belo
·
back to Dw Yolo Loop
·
Romo close: batch ledger + price-correction ledger + audit a 5df288c →