This commit is contained in:
2026-05-04 14:54:16 -05:00
parent fcfc66a3b9
commit 6735118b2f
2 changed files with 93 additions and 5 deletions

View File

@@ -84,11 +84,30 @@ router.get('/:id', async (req, res) => {
const { id } = req.params;
try {
const invoiceResult = await pool.query(`
SELECT i.*, c.name as customer_name, c.qbo_id as customer_qbo_id,
c.email, c.line1, c.line2, c.line3, c.line4, c.city, c.state, c.zip_code, c.account_number,
COALESCE((SELECT SUM(pi.amount) FROM payment_invoices pi WHERE pi.invoice_id = i.id), 0) as amount_paid
SELECT
i.*,
c.name as customer_name,
c.qbo_id as customer_qbo_id,
c.email,
c.line1,
c.line2,
c.line3,
c.line4,
c.city,
c.state,
c.zip_code,
c.account_number,
src.invoice_number AS recurring_source_invoice_number,
COALESCE((
SELECT SUM(pi.amount)
FROM payment_invoices pi
WHERE pi.invoice_id = i.id
), 0) as amount_paid
FROM invoices i
LEFT JOIN customers c ON i.customer_id = c.id
LEFT JOIN customers c
ON i.customer_id = c.id
LEFT JOIN invoices src
ON src.id = i.recurring_source_id
WHERE i.id = $1
`, [id]);
@@ -269,7 +288,7 @@ router.put('/:id', async (req, res) => {
[customer_id, invoice_date, terms, auth_code, tax_exempt, tax_rate, subtotal, tax_amount, total, scheduled_send_date || null, bill_to_name || null, id]
);
}
// Preserve existing next_recurring_date when editing an already-recurring invoice.
// Otherwise editing an old invoice can move next_recurring_date backwards and create duplicates.
const existingRecurringResult = await client.query(