/* ┌───────────────────────────────────────────────────────────────┐ │ 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); }