GL detail

This commit is contained in:
2026-05-19 21:34:23 +02:00
parent f8aded48af
commit 133ca49eda

View File

@@ -2858,23 +2858,56 @@ class GeneralLedgerDetail(DescriptionOriginMixin, ModelSQL, ModelView):
Concat(Coalesce(account.code, ''), ' - '),
Coalesce(account.name, ''))
@classmethod
def _opening_balance_query(cls, context):
Line, line, move, account, company = cls._tables()
tx_currency = Coalesce(line.second_currency, company.currency)
base_amount = Coalesce(line.debit, 0) - Coalesce(line.credit, 0)
tx_amount = Case(
(line.second_currency != Null,
Coalesce(line.amount_second_currency, 0)),
else_=base_amount)
with Transaction().set_context(
context, **cls._query_context('opening', context)):
line_query, _ = Line.query_get(line)
where = line_query & cls._extra_where(
line, move, account, tx_currency, context)
return (line.join(move, condition=line.move == move.id)
.join(account, condition=line.account == account.id)
.join(company, condition=move.company == company.id)
.select(
line.account.as_('account'),
tx_currency.as_('transaction_currency'),
Sum(base_amount).as_('base_amount'),
Sum(tx_amount).as_('transaction_amount'),
where=where,
group_by=[line.account, tx_currency],
having=Sum(base_amount) != 0))
@classmethod
def _line_query(cls, name, context):
Line, line, move, account, company = cls._tables()
lot, uom = cls._lot_tables(Line)
opening_balance = cls._opening_balance_query(context)
account_label = cls._account_label(account)
quantity = Literal(None)
unit = Literal(None)
tx_currency = Coalesce(line.second_currency, company.currency)
from_ = (line.join(move, condition=line.move == move.id)
.join(account, condition=line.account == account.id)
.join(company, condition=move.company == company.id))
from_ = from_.join(opening_balance, 'LEFT',
condition=(
(opening_balance.account == line.account)
& (opening_balance.transaction_currency == tx_currency)))
if lot is not None:
from_ = (from_
.join(lot, 'LEFT', condition=Column(line, 'lot') == lot.id)
.join(uom, 'LEFT', condition=lot.lot_unit_line == uom.id))
quantity = lot.lot_qt
unit = uom.symbol
tx_currency = Coalesce(line.second_currency, company.currency)
base_amount = Coalesce(line.debit, 0) - Coalesce(line.credit, 0)
second_amount = Coalesce(line.amount_second_currency, 0)
tx_amount = Case(
@@ -2929,12 +2962,14 @@ class GeneralLedgerDetail(DescriptionOriginMixin, ModelSQL, ModelView):
line.debit.as_('debit_base_currency'),
line.credit.as_('credit_base_currency'),
base_amount.as_('balance_base_currency'),
Sum(base_amount, window=window).as_(
(Coalesce(opening_balance.base_amount, 0)
+ Sum(base_amount, window=window)).as_(
'running_balance_base_currency'),
debit_tx.as_('debit_transaction_currency'),
credit_tx.as_('credit_transaction_currency'),
tx_amount.as_('balance_transaction_currency'),
Sum(tx_amount, window=window).as_(
(Coalesce(opening_balance.transaction_amount, 0)
+ Sum(tx_amount, window=window)).as_(
'running_balance_transaction_currency'),
quantity.as_('payable_qty'),
unit.as_('uom'),