/**
 * Si un movimiento de tesorería suma o resta en su cuenta.
 *
 * Los ingresos y egresos lo dicen en `tipo`; una transferencia se guarda como dos
 * movimientos de tipo TRANSFERENCIA y el sentido sale de `origen_tipo`: la punta
 * TRANSFERENCIA_DESTINO entra, la TRANSFERENCIA_ORIGEN sale. Mirar sólo `tipo` dejaba
 * la venta de dólares de DOBA (29/05, Gs. 21.140.000) sin monto en la columna de
 * egresos del libro banco, y restaba lo que entraba a la cuenta destino.
 */
export type SentidoMovimiento = 'INGRESO' | 'EGRESO';

export function sentidoMovimiento(m: { tipo: string; origen_tipo?: string | null }): SentidoMovimiento {
  if (m.tipo === 'INGRESO') return 'INGRESO';
  if (m.tipo === 'TRANSFERENCIA' && m.origen_tipo === 'TRANSFERENCIA_DESTINO') return 'INGRESO';
  return 'EGRESO';
}

export const deltaMovimiento = (m: { tipo: string; origen_tipo?: string | null; monto: unknown }): number =>
  sentidoMovimiento(m) === 'INGRESO' ? Number(m.monto) : -Number(m.monto);
