tengo este problema, ponele que no use un metodo de pago, inicie en 0 y lo cierro en 0 You must enter a Real Ending Balance for all journals with cash control before closing the session.
Patch: que logre solucionarlo
-- coding: utf-8 --
from odoo import api, models, _
SENTINEL = 0.0001 # mismo valor que usa la línea de sesión
class AccountCashboxSession(models.Model):
_inherit = "account.cashbox.session"
@api.model
def _is_sentinel(self, value):
"""Chequeo tolerante del sentinel."""
try:
return value is None or abs(value - SENTINEL) < 1e-6
except Exception:
return False
def _autofill_zero_real_balances(self):
"""Si un diario con control no tuvo movimiento (saldo_end == 0)
y el 'Saldo Final Real' quedó en sentinel, lo seteamos en 0.00.
"""
for session in self:
if session.state != "closing_control":
continue
lines = session.line_ids.filtered(lambda l: getattr(l, "require_cash_control", False))
company_currency = session.company_id.currency_id
zero_lines = lines.filtered(
lambda l: self._is_sentinel(l.balance_end_real)
and company_currency.is_zero(l.balance_end)
)
if zero_lines:
zero_lines.write({"balance_end_real": 0.0})
def action_account_cashbox_session_close(self):
# Antes de correr la lógica original, completamos ceros
self._autofill_zero_real_balances()
# Llamamos al flujo original (seguirá exigiendo conteo real donde hubo movimiento)
return super().action_account_cashbox_session_close()
tengo este problema, ponele que no use un metodo de pago, inicie en 0 y lo cierro en 0 You must enter a Real Ending Balance for all journals with cash control before closing the session.
Patch: que logre solucionarlo
-- coding: utf-8 --
from odoo import api, models, _
SENTINEL = 0.0001 # mismo valor que usa la línea de sesión
class AccountCashboxSession(models.Model):
_inherit = "account.cashbox.session"