Upload qr-payment.js
Browse files- qr-payment.js +6 -6
qr-payment.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
/* V.AI STUDIO — QR Payment / Quote Data
|
| 2 |
(function(){'use strict';
|
| 3 |
|
| 4 |
// ===== BLOB REGISTRY =====
|
|
@@ -37,7 +37,7 @@ function fmt(n){if(!n||isNaN(n))return'0đ';return Number(n).toLocaleString('vi-
|
|
| 37 |
function compactKey(s){return stripDiacritics(String(s||'')).toLowerCase().replace(/[^a-z0-9]/g,'');}
|
| 38 |
function itemKeys(it){var arr=[];['model','sku','code','ma','name'].forEach(function(k){if(it&&it[k])arr.push(compactKey(it[k]));});if(it&&it.name){String(it.name).split('|').forEach(function(x){arr.push(compactKey(x));});}return arr.filter(function(x){return x&&x.length>=3;});}
|
| 39 |
function matchItemDiscount(it,itemDiscounts){itemDiscounts=itemDiscounts||{};var keys=itemKeys(it);for(var i=0;i<keys.length;i++){var k=keys[i];if(itemDiscounts[k])return itemDiscounts[k];}for(var code in itemDiscounts){for(var j=0;j<keys.length;j++){var kk=keys[j];if(code.length>=3&&kk.length>=3&&(kk.indexOf(code)!==-1||code.indexOf(kk)!==-1))return itemDiscounts[code];}}return 0;}
|
| 40 |
-
// FIX: \\b (word boundary)
|
| 41 |
function parseItemDiscountLine(line,map){
|
| 42 |
var lo=stripDiacritics(String(line||'')).toLowerCase();
|
| 43 |
var re1=/\b([a-z]{1,8}[a-z0-9._\-\/]{1,30}\d[a-z0-9._\-\/]*)\b\s*(?:[:=\-]|\s+)?\s*(?:ck|chiet\s*khau|giam|discount)\s*([\d.,]+)\s*%?/gi;
|
|
@@ -53,7 +53,7 @@ function parsePrompt(text){
|
|
| 53 |
var fees=[],notes=[],discount=null,deposit=0,discountPercent=0,itemDiscounts={};
|
| 54 |
if(!text)return{fees:fees,notes:notes,discount:discount,deposit:deposit,discountPercent:discountPercent,itemDiscounts:itemDiscounts};
|
| 55 |
|
| 56 |
-
text.split(/[,;\n]+/).forEach(function(line){
|
| 57 |
line=line.trim();if(!line)return;
|
| 58 |
parseItemDiscountLine(line,itemDiscounts);
|
| 59 |
|
|
@@ -382,7 +382,7 @@ async function doOverride(){
|
|
| 382 |
if(qd.customer)qd.customer.orderCode=getEffectiveOrderCode();
|
| 383 |
return qd;
|
| 384 |
};
|
| 385 |
-
console.log('✅ QR Payment
|
| 386 |
return true;
|
| 387 |
}
|
| 388 |
|
|
@@ -416,7 +416,7 @@ async function _doExportDeliveryPDF(qd,code){
|
|
| 416 |
pdf.save('GH-'+code+'.pdf');
|
| 417 |
}
|
| 418 |
|
| 419 |
-
// ===== EXPORT EXCEL - BAO GỒM PHÍ -
|
| 420 |
var WHITE={argb:'FFFFFFFF'};
|
| 421 |
var HEAD_FILL={type:'pattern',pattern:'solid',fgColor:{argb:'FF003F62'}};
|
| 422 |
var TOTAL_FILL={type:'pattern',pattern:'solid',fgColor:{argb:'FF003F62'}};
|
|
@@ -634,5 +634,5 @@ window.VAI_QR={
|
|
| 634 |
orderToVAIData:orderToVAIData,
|
| 635 |
_fixed:true
|
| 636 |
};
|
| 637 |
-
console.log('[VAI QR
|
| 638 |
})();
|
|
|
|
| 1 |
+
/* V.AI STUDIO — QR Payment / Quote Data v1048 - FIX TRIỆT ĐỂ: PHÍ + CK MÃ SP */
|
| 2 |
(function(){'use strict';
|
| 3 |
|
| 4 |
// ===== BLOB REGISTRY =====
|
|
|
|
| 37 |
function compactKey(s){return stripDiacritics(String(s||'')).toLowerCase().replace(/[^a-z0-9]/g,'');}
|
| 38 |
function itemKeys(it){var arr=[];['model','sku','code','ma','name'].forEach(function(k){if(it&&it[k])arr.push(compactKey(it[k]));});if(it&&it.name){String(it.name).split('|').forEach(function(x){arr.push(compactKey(x));});}return arr.filter(function(x){return x&&x.length>=3;});}
|
| 39 |
function matchItemDiscount(it,itemDiscounts){itemDiscounts=itemDiscounts||{};var keys=itemKeys(it);for(var i=0;i<keys.length;i++){var k=keys[i];if(itemDiscounts[k])return itemDiscounts[k];}for(var code in itemDiscounts){for(var j=0;j<keys.length;j++){var kk=keys[j];if(code.length>=3&&kk.length>=3&&(kk.indexOf(code)!==-1||code.indexOf(kk)!==-1))return itemDiscounts[code];}}return 0;}
|
| 40 |
+
// FIX: \\b (word boundary) thay vì \b (backspace) trong string literal
|
| 41 |
function parseItemDiscountLine(line,map){
|
| 42 |
var lo=stripDiacritics(String(line||'')).toLowerCase();
|
| 43 |
var re1=/\b([a-z]{1,8}[a-z0-9._\-\/]{1,30}\d[a-z0-9._\-\/]*)\b\s*(?:[:=\-]|\s+)?\s*(?:ck|chiet\s*khau|giam|discount)\s*([\d.,]+)\s*%?/gi;
|
|
|
|
| 53 |
var fees=[],notes=[],discount=null,deposit=0,discountPercent=0,itemDiscounts={};
|
| 54 |
if(!text)return{fees:fees,notes:notes,discount:discount,deposit:deposit,discountPercent:discountPercent,itemDiscounts:itemDiscounts};
|
| 55 |
|
| 56 |
+
text.split(/[,\;\n]+/).forEach(function(line){
|
| 57 |
line=line.trim();if(!line)return;
|
| 58 |
parseItemDiscountLine(line,itemDiscounts);
|
| 59 |
|
|
|
|
| 382 |
if(qd.customer)qd.customer.orderCode=getEffectiveOrderCode();
|
| 383 |
return qd;
|
| 384 |
};
|
| 385 |
+
console.log('✅ QR Payment v1048 — FIX TRIỆT ĐỂ: PHÍ GIAO HÀNG, LẮP ĐẶT, CỌC VÀO EXCEL');
|
| 386 |
return true;
|
| 387 |
}
|
| 388 |
|
|
|
|
| 416 |
pdf.save('GH-'+code+'.pdf');
|
| 417 |
}
|
| 418 |
|
| 419 |
+
// ===== EXPORT EXCEL - BAO GỒM PHÍ - v1048 =====
|
| 420 |
var WHITE={argb:'FFFFFFFF'};
|
| 421 |
var HEAD_FILL={type:'pattern',pattern:'solid',fgColor:{argb:'FF003F62'}};
|
| 422 |
var TOTAL_FILL={type:'pattern',pattern:'solid',fgColor:{argb:'FF003F62'}};
|
|
|
|
| 634 |
orderToVAIData:orderToVAIData,
|
| 635 |
_fixed:true
|
| 636 |
};
|
| 637 |
+
console.log('[VAI QR v1048 FIX] Loaded - Phí giao hàng, lắp đặt, cọc được thêm vào Excel báo giá & đơn hàng lưu');
|
| 638 |
})();
|