Skip to content

coodesoft/soporte/ecocontrol-soporte#20_TC_RC_OP

Estefania requested to merge coodesoft/soporte/ecocontrol-soporte#20_TC_RC_OP into dev

Permite pagar en una sola orden una factura en dolares al tipo de cambio del comprobante y ademas un excedente que queda abierto para conciliar despues contra una nota de debito o de credito.

Hasta ahora habia que hacer dos ordenes de pago separadas. Metiendo las dos cosas en una sola, la diferencia de cambio no se asentaba y quedaban importes colgados.

El motivo esta en account_move.py, dentro de reconcile():

if involved_lines[0].currency_id and all(...):
    is_full_needed = all(line.currency_id.is_zero(line.amount_residual_currency) ...)
else:
    is_full_needed = all(line.company_currency_id.is_zero(line.amount_residual) ...)

if is_full_needed:
    exchange_move = involved_lines._create_exchange_difference_move()

La diferencia de cambio solo se asienta si TODO lo que entra en la conciliacion queda en cero. El excedente nunca queda en cero -ese es su proposito- asi que bloqueaba el asiento para el conjunto entero.

La orden de pago ahora identifica sus pagos de excedente (los que cubren exactamente unreconciled_amount, prefiriendo los que estan en la moneda de la compania) y los avisa por contexto. account.move.line.reconcile los deja afuera. Sin esa clave de contexto el metodo no hace nada.

Si los pagos no suman exactamente el excedente no se excluye ninguno: es preferible el comportamiento de siempre a dejar abierto un importe que nadie pidio.

Verificado en el entorno local. Factura de USD 100 asentada a 900 (90.000 ARS), pagada en UNA orden con una linea de USD 100 forzada a 100.000 (TC 1000) mas 20.000 de excedente:

factura residuo 0, conciliada linea de la deuda residuo 0, conciliada linea excedente 20.000 abiertos, sin conciliar EXCH/2026/09/0004 10.000 a Diferencias de cambio

Control: una orden en pesos sin excedente concilia como siempre.

Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com

Merge request reports

Loading