@Test(expected = EntityNotFoundException.class) public void transferirACuentaInexistenteFalla() { servicio.transferir("1111", "9999", new BigDecimal("1")); }
@Transactional @Override public Movimiento transferir(String codigoOrigen, String codigoDestino, BigDecimal importe) { if (importe.compareTo(MAXIMO_PERMITIDO) > 0) { throw new BusinessException( String.format("Importe {0} supera el máximo {1} permitido.", importe, MAXIMO_PERMITIDO)); } CuentaCorriente origen = (CuentaCorriente) repositorioPF.findOne(codigoOrigen); if (origen.getSaldo().compareTo(IMPORTE_COMISION) < 0) { throw new BusinessException( String.format("La cuenta corriente {0} no dispone de saldo para pagar la comisión {1}.", codigoOrigen, IMPORTE_COMISION)); } ProductoFinanciero destino = obtenerProducto(codigoDestino); origen.setSaldo(origen.getSaldo().subtract(IMPORTE_COMISION)); Movimiento movimientoComision = new Movimiento(0, origen, new Date(), IMPORTE_COMISION); respositorioMov.save(movimientoComision); origen.transferir(destino, importe); Movimiento movimientoTransferencia = new Movimiento(0, origen, new Date(), importe); respositorioMov.save(movimientoTransferencia); return movimientoTransferencia; }
GestionProductosServImplJPA implements GestionProductosServ { @Transactional @Override public Movimiento transferir(String codigoOrigen, String codigoDestino, BigDecimal importe) { if (importe.compareTo(MAXIMO_PERMITIDO) > 0) { throw new BusinessException( String.format("Importe {0} supera el máximo {1} permitido.", importe, MAXIMO_PERMITIDO)); } CuentaCorriente origen = (CuentaCorriente) repositorioPF.findOne(codigoOrigen); if (origen.getSaldo().compareTo(IMPORTE_COMISION) < 0) { throw new BusinessException( String.format("La cuenta corriente {0} no dispone de saldo para pagar la comisión {1}.", codigoOrigen, IMPORTE_COMISION)); } ProductoFinanciero destino = obtenerProducto(codigoDestino); origen.setSaldo(origen.getSaldo().subtract(IMPORTE_COMISION)); Movimiento movimientoComision = new Movimiento(0, origen, new Date(), IMPORTE_COMISION); respositorioMov.save(movimientoComision); origen.transferir(destino, importe); Movimiento movimientoTransferencia = new Movimiento(0, origen, new Date(), importe); respositorioMov.save(movimientoTransferencia); return movimientoTransferencia; } }
GestionProductosServImplJPA implements GestionProductosServ { @Transactional @Override public Movimiento transferir(String codigoOrigen, String codigoDestino, BigDecimal importe) { if (importe.compareTo(MAXIMO_PERMITIDO) > 0) { throw new BusinessException( String.format("Importe {0} supera el máximo {1} permitido.", importe, MAXIMO_PERMITIDO)); } CuentaCorriente origen = (CuentaCorriente) repositorioPF.findOne(codigoOrigen); if (origen.getSaldo().compareTo(IMPORTE_COMISION) < 0) { throw new BusinessException( String.format("La cuenta corriente {0} no dispone de saldo para pagar la comisión {1}.", codigoOrigen, IMPORTE_COMISION)); } ProductoFinanciero destino = obtenerProducto(codigoDestino); origen.setSaldo(origen.getSaldo().subtract(IMPORTE_COMISION)); Movimiento movimientoComision = new Movimiento(0, origen, new Date(), IMPORTE_COMISION); respositorioMov.save(movimientoComision); origen.transferir(destino, importe); Movimiento movimientoTransferencia = new Movimiento(0, origen, new Date(), importe); respositorioMov.save(movimientoTransferencia); return movimientoTransferencia; } GestionProductosServImplJPA(); @Autowired  GestionProductosServImplJPA(ProductoFinancieroRepository repositorioPF, MovimientoRepository respositorioMov); }
GestionProductosServImplJPA implements GestionProductosServ { @Transactional @Override public Movimiento transferir(String codigoOrigen, String codigoDestino, BigDecimal importe) { if (importe.compareTo(MAXIMO_PERMITIDO) > 0) { throw new BusinessException( String.format("Importe {0} supera el máximo {1} permitido.", importe, MAXIMO_PERMITIDO)); } CuentaCorriente origen = (CuentaCorriente) repositorioPF.findOne(codigoOrigen); if (origen.getSaldo().compareTo(IMPORTE_COMISION) < 0) { throw new BusinessException( String.format("La cuenta corriente {0} no dispone de saldo para pagar la comisión {1}.", codigoOrigen, IMPORTE_COMISION)); } ProductoFinanciero destino = obtenerProducto(codigoDestino); origen.setSaldo(origen.getSaldo().subtract(IMPORTE_COMISION)); Movimiento movimientoComision = new Movimiento(0, origen, new Date(), IMPORTE_COMISION); respositorioMov.save(movimientoComision); origen.transferir(destino, importe); Movimiento movimientoTransferencia = new Movimiento(0, origen, new Date(), importe); respositorioMov.save(movimientoTransferencia); return movimientoTransferencia; } GestionProductosServImplJPA(); @Autowired  GestionProductosServImplJPA(ProductoFinancieroRepository repositorioPF, MovimientoRepository respositorioMov); @Transactional @Override Movimiento ingresar(String codigoDestino, BigDecimal importe); @Transactional @Override Movimiento reintegrar(String codigoOrigen, BigDecimal importe); @Transactional @Override ProductoFinanciero obtenerProducto(String codigo); @Transactional @Override Movimiento transferir(String codigoOrigen, String codigoDestino, BigDecimal importe); }
GestionProductosServImplJPA implements GestionProductosServ { @Transactional @Override public Movimiento transferir(String codigoOrigen, String codigoDestino, BigDecimal importe) { if (importe.compareTo(MAXIMO_PERMITIDO) > 0) { throw new BusinessException( String.format("Importe {0} supera el máximo {1} permitido.", importe, MAXIMO_PERMITIDO)); } CuentaCorriente origen = (CuentaCorriente) repositorioPF.findOne(codigoOrigen); if (origen.getSaldo().compareTo(IMPORTE_COMISION) < 0) { throw new BusinessException( String.format("La cuenta corriente {0} no dispone de saldo para pagar la comisión {1}.", codigoOrigen, IMPORTE_COMISION)); } ProductoFinanciero destino = obtenerProducto(codigoDestino); origen.setSaldo(origen.getSaldo().subtract(IMPORTE_COMISION)); Movimiento movimientoComision = new Movimiento(0, origen, new Date(), IMPORTE_COMISION); respositorioMov.save(movimientoComision); origen.transferir(destino, importe); Movimiento movimientoTransferencia = new Movimiento(0, origen, new Date(), importe); respositorioMov.save(movimientoTransferencia); return movimientoTransferencia; } GestionProductosServImplJPA(); @Autowired  GestionProductosServImplJPA(ProductoFinancieroRepository repositorioPF, MovimientoRepository respositorioMov); @Transactional @Override Movimiento ingresar(String codigoDestino, BigDecimal importe); @Transactional @Override Movimiento reintegrar(String codigoOrigen, BigDecimal importe); @Transactional @Override ProductoFinanciero obtenerProducto(String codigo); @Transactional @Override Movimiento transferir(String codigoOrigen, String codigoDestino, BigDecimal importe);  }