Fix monthly actuals: allow negative values and fix save/reconcile error

- Remove min={0} from NumberInput to allow negative actuals (refunds/corrections)
- Fix post() in journal-entries service: use id param directly instead of
  RETURNING result which returns [rows, count] in TypeORM QueryRunner
- Handle negative amounts in saveActuals(): negative expense credits the
  expense account, negative income debits the income account

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-23 15:51:33 -05:00
parent 84822474f8
commit 32af961173
3 changed files with 23 additions and 20 deletions

View File

@@ -127,25 +127,28 @@ export class MonthlyActualsService {
for (const line of filteredLines) {
const acctType = accountTypeMap.get(line.accountId);
if (!acctType) continue;
const abs = Math.abs(line.amount);
if (acctType === 'expense') {
// Expense: debit expense account, credit cash
jeLines.push({
accountId: line.accountId,
debit: Math.abs(line.amount),
credit: 0,
memo: `${monthLabel} actual`,
});
totalCashCredit += Math.abs(line.amount);
if (line.amount > 0) {
// Normal expense: debit expense, credit cash
jeLines.push({ accountId: line.accountId, debit: abs, credit: 0, memo: `${monthLabel} actual` });
totalCashCredit += abs;
} else {
// Negative expense (refund/correction): credit expense, debit cash
jeLines.push({ accountId: line.accountId, debit: 0, credit: abs, memo: `${monthLabel} actual (correction)` });
totalCashDebit += abs;
}
} else if (acctType === 'income') {
// Income: credit income account, debit cash
jeLines.push({
accountId: line.accountId,
debit: 0,
credit: Math.abs(line.amount),
memo: `${monthLabel} actual`,
});
totalCashDebit += Math.abs(line.amount);
if (line.amount > 0) {
// Normal income: credit income, debit cash
jeLines.push({ accountId: line.accountId, debit: 0, credit: abs, memo: `${monthLabel} actual` });
totalCashDebit += abs;
} else {
// Negative income (correction): debit income, credit cash
jeLines.push({ accountId: line.accountId, debit: abs, credit: 0, memo: `${monthLabel} actual (correction)` });
totalCashCredit += abs;
}
}
}