Skip to content

Error cash control before closing the session account.cashbox.session #770

@fsuleWitdata

Description

@fsuleWitdata

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()

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions