Last active
July 4, 2023 17:19
-
-
Save ooker777/2deabdbe55d74118c9c82254c56eb013 to your computer and use it in GitHub Desktop.
Script quản lý tài chính bằng tiếng Việt tự nhiên trên Fibery
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
┌───────────────────────────────────────────────────────────────┐ | |
│ Script quản lý tài chính bằng tiếng Việt tự nhiên trên Fibery │ | |
└───────────────────────────────────────────────────────────────┘ | |
• Ở thẻ Actions chọn Created và Updated, với field là Name như hình: https://i.imgur.com/8iVGxfO.png | |
• Chỉnh sửa danhSáchLoạiChiTiêu và danhSáchPhươngThức theo nhu cầu của bạn | |
• Số tiền sẽ là các số có đuôi là tr, k, đ, d. Nếu có nhiều giá trị thì sẽ chọn giá trị đứng đằng sau dấu bằng ('='). Dấu thập phân là dấu chấm ('.'). Bạn có thể dùng dấu phẩy để dễ đọc. Nó sẽ được bỏ đi. Ví dụ: 1.2tr, 3,400k, 123,456,700đ, 123,456,700d. | |
• Nếu kết quả ra -1 nghĩa là có vấn đề | |
• Để kiểm tra kết quả tính toán, vào thẻ Activity | |
Viết bởi Quả Cầu. | |
*/ | |
const fibery = context.getService('fibery'); | |
const danhSáchLoạiChiTiêu = { | |
"đi chợ": "Cần thiết", | |
"khám": "Y tế", | |
"đáo": "Trả nợ", | |
} | |
const danhSáchMãLoạiChiTiêu = Object.keys(danhSáchLoạiChiTiêu) | |
function lấyLoạiChiTiêu(input) { | |
for (const mãLoạiChiTiêu of danhSáchMãLoạiChiTiêu) { | |
if (input.includes(mãLoạiChiTiêu)) { | |
console.log("mãLoạiChiTiêu:", mãLoạiChiTiêu) | |
return danhSáchLoạiChiTiêu[mãLoạiChiTiêu] | |
} | |
} | |
return 'Khác' | |
} | |
const danhSáchPhươngThức = { | |
"ck vcb": "Tài khoản vcb", | |
"ck vcb vợ em": "tài khoản vcb nợn", | |
"charged thẻ shinhan": "tài khoản shinhan kendy", | |
"momo": "tài khoản momo", | |
"nợn trả": "cash vợ em", | |
} | |
const danhSáchMãPhươngThức = Object.keys(danhSáchPhươngThức) | |
function lấyPhươngThức(input) { | |
for (const mãPhươngThức of danhSáchMãPhươngThức) { | |
if (input.includes(mãPhươngThức)) { | |
console.log("mãPhươngThức:", mãPhươngThức) | |
return danhSáchPhươngThức[mãPhươngThức] | |
} | |
} | |
return 'Tiền mặt' | |
} | |
const regexSốTiền = /(=|= )?(\d|,|\.)+(k|tr|d|đ)\b/g //kiếm tất cả các số có tận cùng là tr, k , d, đ. Giữa các số đó có thể có dấu chấm hoặc dấu phẩy. Trước các con số đó có thể có dấu bằng. | |
function lấySốTiền(input) { | |
const kếtQuảKiếm = input.match(regexSốTiền) | |
console.log("kếtQuảKiếm:", kếtQuảKiếm); | |
console.log("kếtQuảKiếm.filter(kếtQuả => kếtQuả.includes('=')):", kếtQuảKiếm.filter(kếtQuả => kếtQuả.includes('='))) | |
// Nếu kếtQuảKiếm chỉ có 1 kết quả, thì đó chính là con số mình cần. Nếu có nhiều hơn 1, thì lấy kết quả có chứa dấu '=' | |
if (kếtQuảKiếm.length == 1) { | |
var tổngTrướcKhiĐịnhDạng = kếtQuảKiếm[0]; | |
} else if (kếtQuảKiếm.join().includes('=')) { | |
var tổngTrướcKhiĐịnhDạng = kếtQuảKiếm.filter(kếtQuả => kếtQuả.includes('='))[0].replace('=', ''); | |
} else { | |
return -1 | |
} | |
console.log("Tổng trước khi định dạng:", tổngTrướcKhiĐịnhDạng); | |
const giáTrịCủaTổng = parseFloat(tổngTrướcKhiĐịnhDạng.replace(/k|tr|d|đ|,/, '')) | |
console.log("Giá trị của tổng:", giáTrịCủaTổng); | |
if (tổngTrướcKhiĐịnhDạng.includes('tr')) { | |
var tổngSauKhiĐịnhDạng = giáTrịCủaTổng * 1000000 | |
} else if (tổngTrướcKhiĐịnhDạng.includes('k')) { | |
var tổngSauKhiĐịnhDạng = giáTrịCủaTổng * 1000 | |
} else { | |
var tổngSauKhiĐịnhDạng = giáTrịCủaTổng | |
} | |
console.log("Tổng sau khi định dạng:", tổngSauKhiĐịnhDạng); | |
return tổngSauKhiĐịnhDạng | |
} | |
for (const entity of args.currentEntities) { | |
const input = entity['Name']; | |
console.log("Name: ", input); | |
const sốTiền = lấySốTiền(input) | |
const loạiChiTiêu = lấyLoạiChiTiêu(input) | |
const phươngThức = lấyPhươngThức(input) | |
await fibery.updateEntity(entity.type, entity.id, { | |
'Số tiền': sốTiền, | |
'Loại chi tiêu': loạiChiTiêu, | |
'Phương thức': phươngThức | |
}); | |
console.log("Loại chi tiêu: ", loạiChiTiêu); | |
console.log("Phương thức: ", phươngThức); | |
console.log("Số tiền: ", sốTiền); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment