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
|
# sold_precedent = suma sold pentru rânduri cu dataact IS NULL
|
||||||
# total_incasari = suma incasari pentru rânduri cu dataact IS NOT 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
|
# 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"""
|
totals_plsql = f"""
|
||||||
DECLARE
|
DECLARE
|
||||||
v_an NUMBER;
|
v_an NUMBER;
|
||||||
@@ -270,18 +275,15 @@ class TreasuryService:
|
|||||||
|
|
||||||
-- Sold precedent: suma sold pentru rânduri fără dată (opening balance)
|
-- Sold precedent: suma sold pentru rânduri fără dată (opening balance)
|
||||||
SELECT NVL(SUM(sold), 0) INTO :sold_precedent_all
|
SELECT NVL(SUM(sold), 0) INTO :sold_precedent_all
|
||||||
FROM ({base_select}) sub{where_clause}
|
FROM ({base_select}) sub{where_clause}{dataact_null_cond};
|
||||||
WHERE dataact IS NULL;
|
|
||||||
|
|
||||||
-- Total încasări: suma incasari pentru rânduri cu dată (transactions)
|
-- Total încasări: suma incasari pentru rânduri cu dată (transactions)
|
||||||
SELECT NVL(SUM(incasari), 0) INTO :total_incasari_all
|
SELECT NVL(SUM(incasari), 0) INTO :total_incasari_all
|
||||||
FROM ({base_select}) sub{where_clause}
|
FROM ({base_select}) sub{where_clause}{dataact_not_null_cond};
|
||||||
WHERE dataact IS NOT NULL;
|
|
||||||
|
|
||||||
-- Total plăți: suma plati pentru rânduri cu dată (transactions)
|
-- Total plăți: suma plati pentru rânduri cu dată (transactions)
|
||||||
SELECT NVL(SUM(plati), 0) INTO :total_plati_all
|
SELECT NVL(SUM(plati), 0) INTO :total_plati_all
|
||||||
FROM ({base_select}) sub{where_clause}
|
FROM ({base_select}) sub{where_clause}{dataact_not_null_cond};
|
||||||
WHERE dataact IS NOT NULL;
|
|
||||||
END;
|
END;
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user