update track-investments so that it uses SimpleFIN IDs instead of names to match accounts
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user