Upload grob-price-fix.js
Browse files- grob-price-fix.js +68 -0
grob-price-fix.js
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/**
|
| 2 |
+
* V.AI STUDIO — Grob Price Fix
|
| 3 |
+
* ==============================
|
| 4 |
+
* Fixes incorrect prices from the catalogue-based PDF price list.
|
| 5 |
+
* Fixed as of July 2026 per Grob Vietnam catalogue.
|
| 6 |
+
*/
|
| 7 |
+
(function() {
|
| 8 |
+
'use strict';
|
| 9 |
+
if (window.__GROB_PRICE_FIX__) return;
|
| 10 |
+
window.__GROB_PRICE_FIX__ = true;
|
| 11 |
+
|
| 12 |
+
const PRICE_FIXES = {
|
| 13 |
+
// 0203 | Grob | Bản lề inox - cánh/phủ bì 203mm: 0đ -> 67.000đ
|
| 14 |
+
'0203': { p: '67.000đ', pn: 67000 },
|
| 15 |
+
// 0280 | Grob | Khay chia thìa dĩa nhựa - cánh/phủ bì 280mm: 885.000đ -> 965.000đ
|
| 16 |
+
'0280': { p: '965.000đ', pn: 965000 },
|
| 17 |
+
// 0290 | Grob | Khay chia thìa dĩa nhựa - cánh/phủ bì 290mm: 965.000đ -> 1.018.000đ
|
| 18 |
+
'0290': { p: '1.018.000đ', pn: 1018000 },
|
| 19 |
+
};
|
| 20 |
+
|
| 21 |
+
function patchProduct(prod) {
|
| 22 |
+
if (!prod) return;
|
| 23 |
+
var name = prod.n || prod.name || '';
|
| 24 |
+
for (var code in PRICE_FIXES) {
|
| 25 |
+
if (name.indexOf(code) === 0 && name.indexOf('Grob') !== -1) {
|
| 26 |
+
var fix = PRICE_FIXES[code];
|
| 27 |
+
if (prod.p) prod.p = fix.p;
|
| 28 |
+
if (prod.pn !== undefined) prod.pn = fix.pn;
|
| 29 |
+
if (prod.price) prod.price = fix.p;
|
| 30 |
+
if (prod.priceNum !== undefined) prod.priceNum = fix.pn;
|
| 31 |
+
return true;
|
| 32 |
+
}
|
| 33 |
+
}
|
| 34 |
+
return false;
|
| 35 |
+
}
|
| 36 |
+
|
| 37 |
+
// Patch after D is populated
|
| 38 |
+
function patchD() {
|
| 39 |
+
if (typeof window.D !== 'undefined' && Array.isArray(window.D)) {
|
| 40 |
+
var patched = 0;
|
| 41 |
+
window.D.forEach(function(p) {
|
| 42 |
+
if (patchProduct(p)) patched++;
|
| 43 |
+
});
|
| 44 |
+
if (patched > 0) {
|
| 45 |
+
console.log('[Grob Price Fix] Patched ' + patched + ' product(s) in D');
|
| 46 |
+
if (typeof window.refreshUI === 'function') window.refreshUI();
|
| 47 |
+
}
|
| 48 |
+
}
|
| 49 |
+
}
|
| 50 |
+
|
| 51 |
+
// Try patching at various intervals as data loads
|
| 52 |
+
function onReady() {
|
| 53 |
+
setTimeout(patchD, 200);
|
| 54 |
+
setTimeout(patchD, 500);
|
| 55 |
+
setTimeout(patchD, 1000);
|
| 56 |
+
setTimeout(patchD, 2000);
|
| 57 |
+
setTimeout(patchD, 3000);
|
| 58 |
+
setTimeout(patchD, 5000);
|
| 59 |
+
}
|
| 60 |
+
|
| 61 |
+
if (document.readyState === 'loading') {
|
| 62 |
+
document.addEventListener('DOMContentLoaded', onReady);
|
| 63 |
+
} else {
|
| 64 |
+
onReady();
|
| 65 |
+
}
|
| 66 |
+
|
| 67 |
+
console.log('[Grob Price Fix] Loaded: 02.03=67k, 02.80=965k, 02.90=1,018k');
|
| 68 |
+
})();
|