update track-investments so that it uses SimpleFIN IDs instead of names to match accounts

This commit is contained in:
Robert Dyer
2024-08-10 18:41:48 -05:00
parent a6cd5dee0d
commit b7c5000883
2 changed files with 19 additions and 4 deletions
+6 -4
View File
@@ -1,7 +1,7 @@
const api = require('@actual-app/api'); const api = require('@actual-app/api');
const fs = require('fs'); const fs = require('fs');
const readline = require('readline-sync'); const readline = require('readline-sync');
const { closeBudget, ensureCategory, ensurePayee, getAccountBalance, getAccountNote, getTransactions, openBudget } = require('./utils'); const { closeBudget, ensureCategory, ensurePayee, getAccountBalance, getAccountNote, getSimpleFinID, getTransactions, openBudget } = require('./utils');
require("dotenv").config(); require("dotenv").config();
@@ -48,11 +48,12 @@ const getSimplefinBalances = async () => {
const data = await response.json(); const data = await response.json();
const accounts = data.accounts; const accounts = data.accounts;
const balances = {}; const balances = {};
accounts.forEach(a => balances[a.name] = parseFloat(a.balance)); //accounts.forEach(a => balances[a.name] = parseFloat(a.balance));
accounts.forEach(a => balances[a.id] = parseFloat(a.balance));
return balances;
} catch (e) { } catch (e) {
return undefined; return undefined;
} }
return balances;
}; };
const shouldDrop = (payment) => { const shouldDrop = (payment) => {
@@ -106,7 +107,8 @@ const zeroTransaction = async (payment) => {
if (note.indexOf('calcInvestment') > -1) { if (note.indexOf('calcInvestment') > -1) {
const currentBalance = await getAccountBalance(account); const currentBalance = await getAccountBalance(account);
const simplefinBalance = parseInt(simplefinBalances[account.name] * 100); const simpleFinID = await getSimpleFinID(account);
const simplefinBalance = parseInt(simplefinBalances[simpleFinID] * 100);
const diff = simplefinBalance - currentBalance; const diff = simplefinBalance - currentBalance;
console.log('Account:', account.name); console.log('Account:', account.name);
+13
View File
@@ -140,6 +140,19 @@ const Utils = {
}); });
}, },
getSimpleFinID: async function (account) {
const data = await api.runQuery(
api.q('accounts')
.filter({ id: account.id })
.filter({ account_sync_source: 'simpleFin' })
.select('account_id')
);
if (data.data.length && data.data[0].account_id) {
return data.data[0].account_id;
}
return undefined;
},
sleep: function (ms) { sleep: function (ms) {
return new Promise((resolve) => { return new Promise((resolve) => {
setTimeout(resolve, ms); setTimeout(resolve, ms);