fix: Correct SQL syntax in treasury totals query when filters are applied
The totals PL/SQL block was generating invalid SQL with duplicate WHERE clauses when bank/cash filters were applied (e.g., "WHERE bank_account=X WHERE dataact IS NULL"). Now properly uses AND when where_clause exists, WHERE otherwise. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -257,6 +257,11 @@ class TreasuryService:
|
||||
# sold_precedent = suma sold pentru rânduri cu dataact IS NULL
|
||||
# total_incasari = suma incasari pentru rânduri cu dataact IS NOT NULL
|
||||
# total_plati = suma plati pentru rânduri cu dataact IS NOT NULL
|
||||
# Notă: where_clause poate fi gol sau poate conține "WHERE ..."
|
||||
# Dacă e gol, adăugăm WHERE; dacă nu, adăugăm AND
|
||||
dataact_null_cond = " AND dataact IS NULL" if where_clause else " WHERE dataact IS NULL"
|
||||
dataact_not_null_cond = " AND dataact IS NOT NULL" if where_clause else " WHERE dataact IS NOT NULL"
|
||||
|
||||
totals_plsql = f"""
|
||||
DECLARE
|
||||
v_an NUMBER;
|
||||
@@ -270,18 +275,15 @@ class TreasuryService:
|
||||
|
||||
-- Sold precedent: suma sold pentru rânduri fără dată (opening balance)
|
||||
SELECT NVL(SUM(sold), 0) INTO :sold_precedent_all
|
||||
FROM ({base_select}) sub{where_clause}
|
||||
WHERE dataact IS NULL;
|
||||
FROM ({base_select}) sub{where_clause}{dataact_null_cond};
|
||||
|
||||
-- Total încasări: suma incasari pentru rânduri cu dată (transactions)
|
||||
SELECT NVL(SUM(incasari), 0) INTO :total_incasari_all
|
||||
FROM ({base_select}) sub{where_clause}
|
||||
WHERE dataact IS NOT NULL;
|
||||
FROM ({base_select}) sub{where_clause}{dataact_not_null_cond};
|
||||
|
||||
-- Total plăți: suma plati pentru rânduri cu dată (transactions)
|
||||
SELECT NVL(SUM(plati), 0) INTO :total_plati_all
|
||||
FROM ({base_select}) sub{where_clause}
|
||||
WHERE dataact IS NOT NULL;
|
||||
FROM ({base_select}) sub{where_clause}{dataact_not_null_cond};
|
||||
END;
|
||||
"""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user