/** * Generamos los items de aplicación a la cuenta corriente * * @param m * @param creditosPendientes * @param debitosPendientes */ public void generarItemAplicacionCuentaCorriente( MovimientoProveedor m, List<ItemPendienteCuentaCorrienteProveedor> creditosPendientes, List<ItemPendienteCuentaCorrienteProveedor> debitosPendientes) { if (creditosPendientes != null) { for (ItemPendienteCuentaCorrienteProveedor ic : creditosPendientes) { if (ic.isSeleccionado()) { MovimientoProveedor mAplicado; BigDecimal importeAplicado; /** * ****************************************************************************************** * Si es una orden de pago con retenciones se hace lo siguiente: - Si es anticipo, sumamos * las retenciones al importe total a pargar - Si no es anticipo restamos el importe a * aplicar para luego aplicarlo con al retención * ******************************************************************************************* */ if (m.isEsAnticipo()) { mAplicado = m; importeAplicado = ic.getImporteAplicar(); } else { mAplicado = movimientoProveedorRN.getMovimiento(ic.getId()); importeAplicado = ic.getImporteAplicar().add(ic.getImporteRetencion().negate()); } BigDecimal importeRetencion = ic.getImporteRetencion(); AplicacionCuentaCorrienteProveedor icc = new AplicacionCuentaCorrienteProveedor(); icc.setMovimiento(m); icc.setMovimientoAplicacion(mAplicado); icc.setCuota(1); icc.setProveedor(m.getProveedor()); icc.setNroSubcuenta(m.getProveedorCuentaCorriente().getNrocta()); icc.setCodigoImputacion("CC"); icc.setMonedaSecundaria(m.getMonedaSecundaria()); icc.setCotizacion(m.getCotizacion()); icc.setImporte(importeAplicado); icc.setImporteSecundario(importeAplicado.divide(m.getCotizacion(), RoundingMode.UP)); icc.setImporteRetencion(importeRetencion); icc.setFechaAplicacion(new Date()); icc.setFechaVencimiento(ic.getFechaVencimiento()); m.getItemCuentaCorriente().add(icc); /** Esto es provisorio, para metalurgica avellaneda */ if (m.getRetenciones() == null || m.getRetenciones().isEmpty()) { continue; } // Si existen retenciones, generamos los items cuenta corriente for (MovimientoProveedor r : m.getRetenciones()) { importeAplicado = ic.getImporteRetencion(); icc = new AplicacionCuentaCorrienteProveedor(); // Si es anticipo viene id de movimiento nulo, aplicamos el mismo comprobante if (ic.getId() == null) { mAplicado = r; } icc.setMovimiento(r); icc.setMovimientoAplicacion(mAplicado); icc.setCuota(1); icc.setProveedor(r.getProveedor()); icc.setNroSubcuenta(r.getProveedorCuentaCorriente().getNrocta()); icc.setCodigoImputacion("CC"); icc.setMonedaSecundaria(r.getMonedaSecundaria()); icc.setCotizacion(r.getCotizacion()); icc.setImporte(importeAplicado); icc.setImporteSecundario(importeAplicado.divide(m.getCotizacion(), RoundingMode.UP)); icc.setFechaAplicacion(new Date()); icc.setFechaVencimiento(ic.getFechaVencimiento()); r.getItemCuentaCorriente().add(icc); } } } } if (debitosPendientes != null) { for (ItemPendienteCuentaCorrienteProveedor id : debitosPendientes) { if (id.isSeleccionado()) { /* Buscamos el movimiento que vamos a aplicar en cta cte. Si el id del pendiente es null, el comprobante aplica a si mismo */ MovimientoProveedor mAplicado; if (id.getId() != null) { mAplicado = movimientoProveedorRN.getMovimiento(id.getId()); } else { mAplicado = m; } BigDecimal importe = id.getImporteAplicar().negate(); AplicacionCuentaCorrienteProveedor icc = new AplicacionCuentaCorrienteProveedor(); icc.setMovimiento(m); icc.setMovimientoAplicacion(mAplicado); icc.setCuota(id.getCuotas()); icc.setProveedor(m.getProveedor()); icc.setNroSubcuenta(m.getProveedorCuentaCorriente().getNrocta()); icc.setCodigoImputacion("CC"); icc.setMonedaSecundaria(m.getMonedaSecundaria()); icc.setCotizacion(m.getCotizacion()); icc.setImporte(importe); icc.setImporteSecundario(importe.divide(m.getCotizacion(), RoundingMode.UP)); icc.setFechaAplicacion(new Date()); icc.setFechaVencimiento(id.getFechaVencimiento()); m.getItemCuentaCorriente().add(icc); } } } }
/** * Se utiliza para generar cuenta corriente cuando el comprobante qeu se ingresa no aplica ningún * movimiento. * * @param m Movimiento de proveedor * @throws ExcepcionGeneralSistema */ @Deprecated public void generarItemCuentaCorrienteAnticipo(MovimientoProveedor m) throws ExcepcionGeneralSistema { if (m.getItemTotal() == null || m.getItemTotal().isEmpty()) { throw new ExcepcionGeneralSistema( "Item total no fue generado, nada para agregar a la cuenta corriente"); } m.getItemCuentaCorriente().clear(); BigDecimal importeTotal = m.getItemTotal().get(0).getImporte(); AplicacionCuentaCorrienteProveedor icc = new AplicacionCuentaCorrienteProveedor(); icc.setMovimiento(m); icc.setMovimientoAplicacion(m); icc.setCuota(1); icc.setProveedor(m.getProveedor()); icc.setNroSubcuenta(m.getProveedorCuentaCorriente().getNrocta()); icc.setCodigoImputacion("CC"); icc.setMonedaSecundaria(m.getMonedaSecundaria()); icc.setCotizacion(m.getCotizacion()); if (m.getComprobante().getSignoAplicacionCuentaCorriente().equals("+")) { icc.setImporte(importeTotal); icc.setImporteSecundario(importeTotal.divide(m.getCotizacion(), RoundingMode.UP)); } else { icc.setImporte(importeTotal.negate()); icc.setImporteSecundario((importeTotal.divide(m.getCotizacion(), RoundingMode.UP)).negate()); } icc.setFechaAplicacion(new Date()); icc.setFechaVencimiento(m.getFechaVencimiento()); m.getItemCuentaCorriente().add(icc); }
/** * Generamos items de aplicación en cuenta corriente a partir de un movimiento ya generado o * persistido. * * @param m Movimiento de proveedor a generar */ public void generarItemsCuentaCorrienteReversionMovimiento(MovimientoProveedor m) { List<AplicacionCuentaCorrienteProveedor> itemsCuentaCorriente = m.getMovimientoReversion().getItemCuentaCorriente(); m.getItemCuentaCorriente().clear(); for (AplicacionCuentaCorrienteProveedor iacc : itemsCuentaCorriente) { BigDecimal importe = iacc.getImporte().add(iacc.getImporteRetencion()).negate(); AplicacionCuentaCorrienteProveedor icc = new AplicacionCuentaCorrienteProveedor(); icc.setMovimiento(m); icc.setMovimientoAplicacion(iacc.getMovimientoAplicacion()); icc.setCuota(iacc.getCuota()); icc.setProveedor(m.getProveedor()); icc.setNroSubcuenta(m.getProveedorCuentaCorriente().getNrocta()); icc.setCodigoImputacion("CC"); icc.setMonedaSecundaria(m.getMonedaSecundaria()); icc.setCotizacion(m.getCotizacion()); icc.setImporte(importe); icc.setImporteSecundario(importe.divide(m.getCotizacion(), RoundingMode.UP)); icc.setFechaAplicacion(new Date()); icc.setFechaVencimiento(iacc.getFechaVencimiento()); m.getItemCuentaCorriente().add(icc); } }
public void generarItemCuentaCorriente(MovimientoProveedor m) throws ExcepcionGeneralSistema { if (m.getCondicionDePago() == null) { throw new ExcepcionGeneralSistema("La condición de pago no puede estar vacía"); } if (m.getItemTotal() == null || m.getItemTotal().isEmpty()) { throw new ExcepcionGeneralSistema( "Item total no fue generado, nada para agregar a la cuenta corriente"); } m.getItemCuentaCorriente().clear(); BigDecimal importeTotal = m.getItemTotal().get(0).getImporte(); // // System.err.println("importeTotal para cuenta corriente"+importeTotal); for (ItemCondicionPagoProveedor icp : m.getCondicionDePago().getCuotas()) { BigDecimal impoteCuota = importeTotal.multiply(icp.getPorcentaje()).divide(new BigDecimal(100), RoundingMode.UP); Calendar fechaVencimiento = Calendar.getInstance(); fechaVencimiento.add(Calendar.DAY_OF_YEAR, icp.getDiasDePago()); AplicacionCuentaCorrienteProveedor icc = new AplicacionCuentaCorrienteProveedor(); icc.setMovimiento(m); icc.setMovimientoAplicacion(m); icc.setCuota(icp.getCuotas()); icc.setProveedor(m.getProveedor()); icc.setNroSubcuenta(m.getProveedorCuentaCorriente().getNrocta()); icc.setCodigoImputacion("CC"); icc.setMonedaSecundaria(m.getMonedaSecundaria()); icc.setCotizacion(m.getCotizacion()); if (m.getComprobante().getSignoAplicacionCuentaCorriente().equals("+")) { icc.setImporte(impoteCuota); icc.setImporteSecundario(impoteCuota.divide(m.getCotizacion(), RoundingMode.UP)); } else { icc.setImporte(importeTotal.negate()); icc.setImporteSecundario((impoteCuota.divide(m.getCotizacion(), RoundingMode.UP)).negate()); } icc.setFechaAplicacion(new Date()); icc.setFechaVencimiento(fechaVencimiento.getTime()); m.getItemCuentaCorriente().add(icc); } }