Project

General

Profile

Correccion - Mejora #3267

Permitir cambio de moneda en recepción de fondos sin cuenta origen

Added by Santiago Ramos over 1 year ago. Updated over 1 year ago.

Status:
Resuelta
Priority:
Normal
Category:
Desarrollo
Target version:
Start date:
02/07/2018
Due date:
% Done:

100%

Estimated time:
16.00 h

Description

En los movimientos de recepción de fondos sin cuenta origen, actualmente no se permite la recepción en una moneda distinta a la de la cuenta bancaria de destino.

Esto provoca que si nos envían una transferencia en una moneda distinta de la nominal de la cuenta no sea posible registrar el movimiento de transferencia, teniendo que recurrir a una cuenta bancaria "ficticia" para poder recoger la recepción de fondos y su posterior cambio de moneda.

Debería permitirse definir la moneda de recepción de fondos para, en los casos necesarios, poder diferenciar y registrar las tasas de cambio de la transferencia.

Los tipos de transferencia afectados son:

  • Ingreso sin Cta. origen (Adelanto, Donación, ...)
  • Subvención

Otros tipos de esta casuística que no deberían estar afectados son:

  • Recuperacion IVA
  • Intereses

History

#1 Updated by Santiago Ramos over 1 year ago

  • Status changed from Asignada to Resuelta
  • % Done changed from 0 to 100

#2 Updated by Pascal Carrie over 1 year ago

  • Status changed from Resuelta to Asignada

tengo una exeption
undefined method `/' for nil:NilClass
/home/pascal/gor/db/migrate/20180207091055_monedas_en_transferencias.rb:25

para pasar lo he tenido que poner un rescue true
es curioso porque en muchas transferencia tengo
(byebug) transferencia.importe_cambiado
nil
(byebug) transferencia.importe_recibido
nil
y a pesar de eso pasan sin problema (?)
no lo voy a subir porque no conosco la implicación pero para poder pasar con los bbdd de ciertas ong habría que hacer algo al respeto

#3 Updated by Santiago Ramos over 1 year ago

La línea donde se indica el error creo que es:

      if transferencia.libro_destino && transferencia.importe_cambiado.to_f != 0.0 && transferencia.tasa_cambio.to_f == 0.0
        transferencia.update_column(:tasa_cambio, format("%.8f",transferencia.importe_recibido / transferencia.importe_cambiado)
      end

Si la transferencia no está finalizada por no haberse recibido aún, se da el caso en que teniendo "libro_destino" no existe aún "importe_recibido". Lo raro es que antes de hacer la operación se comprueba que exista el "importe cambiado", y difícilmente debería existir un "importe cambiado" si no existe un "importe recibido".

Sospecho que tienes una una inconsistencia de datos que deberías corregir lo antes posible. Podrías comprobar si existe esta situación (importe_recibido == nil con importe_cambiado != nil) en alguna otra instalación de las ONGs que manejáis?

De todas formas, dejo abierto el ticket para retocar la el aviso de validación de importes por financiadores en el listado de transferencias cuando no coinciden las monedas recibidas y cambiadas.

#4 Updated by Pascal Carrie over 1 year ago

[18, 27] in /home/pascal/gor/db/migrate/20180207091055_monedas_en_transferencias.rb
18: # Ajusta la moneda recibida
19: transferencia.update_column(:moneda_recibida_id, (transferencia.libro_origen||transferencia.libro_destino).moneda_id) if transferencia.libro_destino
20: # Ajusta la TC si no esta cargada
21: if transferencia.libro_destino && transferencia.importe_cambiado.to_f != 0.0 && transferencia.tasa_cambio.to_f == 0.0
22: byebug if transferencia.importe_recibido.nil?
=> 23: transferencia.update_column(:tasa_cambio, format("%.8f",transferencia.importe_recibido / transferencia.importe_cambiado))
24: end
25: end
26: end
27:
(byebug) transferencia
#<Transferencia id: 398, proyecto_id: nil, agente_id: nil, observaciones: "Saldo apertura 2014", iban: nil, tasa_cambio: nil, tipo: "remanente", numero_cheque: nil, remanente: false, subtipo_movimiento_id: nil, fecha_enviado: nil, importe_enviado: nil, libro_origen_id: nil, fecha_recibido: "2014-01-01", importe_recibido: nil, importe_cambiado: #<BigDecimal:5564bf905b18,'0.18185666E6',18(18)>, libro_destino_id: 95, ref_contable_enviado: nil, ref_contable_recibido: nil, marcado_id: nil, moneda_recibida_id: 5>

creo que habría que comprobar con and transferencia.importe_recibido

#5 Updated by Santiago Ramos over 1 year ago

Ufff... remanentes!...

Ok, a poner en el cálculo de TC de la migración una condición adicional para comprobar importe_recibido (lo subo en otro commit), pero quizás habría que abrir un ticket para revisar ese campo "importe_recibido" en los remanentes y existentes y en la generación de estos, pues escapan de la lógica del resto de transferencias.

#6 Updated by Santiago Ramos over 1 year ago

  • Status changed from Asignada to Resuelta

Ya he modificado la migración para que no calcule la tc si no existe el importe_recibido:

https://gong.org.es/projects/gor/repository/revisions/8595/diff/trunk/gor/db/migrate/20180207091055_monedas_en_transferencias.rb

Sin embargo, al cambiar cómo se obtiene el importe_recibido por defecto para contemplar los remantentes:

https://gong.org.es/projects/gor/repository/revisions/8595/diff/trunk/gor/app/models/transferencia.rb

veo que hay código que te tiene que estar fallando con los datos que tienes en BBDD:

https://gong.org.es/projects/gor/repository/entry/trunk/gor/app/models/transferencia.rb#L227

por lo que insisto en que deberías verificar esos datos y corregir esa inconsistencia.

Also available in: Atom PDF

Financiado por:

Desarrollado por:
Software libre forjado en: