Fix opening balance scope and add async cash ledger loading
This commit is contained in:
@@ -38,6 +38,33 @@ def _near(a, b, tolerance=0.01):
|
||||
return abs(float(a or 0) - float(b or 0)) <= tolerance
|
||||
|
||||
|
||||
|
||||
def _is_balance_sheet_ledger(row):
|
||||
"""Return True only for ledger masters that belong to the Balance Sheet.
|
||||
|
||||
Tally exports ISREVENUE for Ledger masters. Revenue ledgers (income,
|
||||
expense, purchase and sales accounts) must not carry an opening balance
|
||||
into a new financial year. Stock Items are handled separately below.
|
||||
"""
|
||||
flag = _s((row or {}).get("is_revenue")).casefold()
|
||||
if flag in {"yes", "y", "true", "1"}:
|
||||
return False
|
||||
if flag in {"no", "n", "false", "0"}:
|
||||
return True
|
||||
|
||||
# Defensive fallback for older Tally responses that omitted ISREVENUE.
|
||||
# Exclude only unmistakable P&L roots; retain Balance-Sheet masters.
|
||||
parent = _norm((row or {}).get("parent"))
|
||||
pnl_roots = (
|
||||
"direct expenses", "indirect expenses", "direct incomes",
|
||||
"indirect incomes", "sales accounts", "purchase accounts",
|
||||
)
|
||||
return parent not in pnl_roots
|
||||
|
||||
|
||||
def _balance_sheet_ledgers(masters):
|
||||
return [row for row in list((masters or {}).get("ledgers") or []) if _is_balance_sheet_ledger(row)]
|
||||
|
||||
def _mapping_index(db, *, tenant_id, client_id, master_type, previous_company_guid, current_company_guid):
|
||||
rows = list(
|
||||
db.execute(
|
||||
@@ -308,8 +335,8 @@ def create_comparison_run(
|
||||
)
|
||||
|
||||
ledger_matches = _match_ledgers(
|
||||
list(previous_masters.get("ledgers") or []),
|
||||
list(current_masters.get("ledgers") or []),
|
||||
_balance_sheet_ledgers(previous_masters),
|
||||
_balance_sheet_ledgers(current_masters),
|
||||
ledger_map,
|
||||
)
|
||||
stock_matches = _match_stock(
|
||||
|
||||
Reference in New Issue
Block a user