Add update-investments.js
Create and publish Docker image on GHCR / publish-docker-image (push) Has been cancelled
Create and publish Docker image on GHCR / publish-docker-image (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
const api = require('@actual-app/api');
|
||||
const fs = require('fs');
|
||||
const readline = require('readline');
|
||||
const { closeBudget, ensurePayee, getAccountBalance, getAccountNote, getTagValue, openBudget, showPercent, sleep,
|
||||
getBudgetMonth, getCategoryGroups, getCategories } = require('./utils');
|
||||
require("dotenv").config();
|
||||
|
||||
(async function () {
|
||||
await openBudget();
|
||||
|
||||
const fileStream = fs.createReadStream("/var/www/html/data/investment-data.txt");
|
||||
const rl = readline.createInterface({
|
||||
input: fileStream,
|
||||
crlfDelay: Infinity
|
||||
});
|
||||
|
||||
const payeeId = await ensurePayee('Change in Market Value');
|
||||
for await (const line of rl) {
|
||||
const parts = line.split('=');
|
||||
const accountBalance = await api.getAccountBalance(parts[0]);
|
||||
const adjustment = (accountBalance - parts[1].replace(/\./g, '')) * -1;
|
||||
if (adjustment == 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
console.log(parts[0] + ' --> ' + parts[1] + ' --> $' + adjustment);
|
||||
|
||||
await api.importTransactions(parts[0], [{
|
||||
date: new Date(),
|
||||
payee: payeeId,
|
||||
amount: adjustment,
|
||||
cleared: true,
|
||||
reconciled: true,
|
||||
notes: `Change in Market Value`,
|
||||
}]);
|
||||
|
||||
}
|
||||
|
||||
deleteFileIfExists('/var/www/html/data/investment-data.txt');
|
||||
await closeBudget();
|
||||
})();
|
||||
|
||||
function fixedStringLength(str, length) {
|
||||
if (str === null) {
|
||||
str = '';
|
||||
}
|
||||
return str.padEnd(length).substring(0, length);
|
||||
}
|
||||
|
||||
async function deleteFileIfExists(filePath) {
|
||||
try {
|
||||
await fs.promises.unlink(filePath);
|
||||
console.log(`File ${filePath} deleted successfully.`);
|
||||
} catch (err) {
|
||||
if (err.code === 'ENOENT') {
|
||||
console.log(`File ${filePath} does not exist, so it was not deleted.`);
|
||||
} else {
|
||||
console.error('Error deleting file:', err.message);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user