bs.proveedores.web.informe.CuentaCorrienteProveedorBean.java Source code

Java tutorial

Introduction

Here is the source code for bs.proveedores.web.informe.CuentaCorrienteProveedorBean.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package bs.proveedores.web.informe;

import bs.entidad.modelo.EntidadComercial;
import bs.entidad.web.EntidadComercialBean;
import bs.global.excepciones.ExcepcionGeneralSistema;
import bs.global.rn.FormularioRN;
import bs.global.util.InformeBase;
import bs.global.util.JsfUtil;
import bs.proveedores.modelo.ItemHistoricoCuentaCorrienteProveedor;
import bs.proveedores.modelo.ItemPendienteCuentaCorrienteProveedor;
import bs.proveedores.modelo.MovimientoProveedor;
import bs.proveedores.rn.CuentaCorrienteProveedorRN;
import bs.proveedores.rn.MovimientoProveedorRN;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;

/**
 *
 * @author Claudio
 */
@ManagedBean
@ViewScoped
public class CuentaCorrienteProveedorBean extends InformeBase implements Serializable {

    @EJB
    private CuentaCorrienteProveedorRN cuentaCorrienteRN;
    @EJB
    private FormularioRN formularioRN;
    @EJB
    private MovimientoProveedorRN proveedorRN;

    private Date fechaDesde;
    private Date fechaHasta;

    @ManagedProperty(value = "#{entidadComercialBean}")
    protected EntidadComercialBean entidadComercialBean;

    private EntidadComercial proveedor;

    private BigDecimal saldoActual;
    private int cantVencidos;
    private int cantVencer;
    private List<ItemPendienteCuentaCorrienteProveedor> debitos;
    private List<ItemPendienteCuentaCorrienteProveedor> creditos;
    private List<ItemHistoricoCuentaCorrienteProveedor> historial;
    private String codigoMonedaRegistracion;

    /** Creates a new instance of CuentaCorrienteBean */
    public CuentaCorrienteProveedorBean() {

    }

    @PostConstruct
    @Override
    public void init() {

        super.init();
        muestraReporte = false;

        fechaDesde = new Date();
        fechaHasta = new Date();

        saldoActual = BigDecimal.ZERO;
        debitos = new ArrayList<ItemPendienteCuentaCorrienteProveedor>();
        creditos = new ArrayList<ItemPendienteCuentaCorrienteProveedor>();
        historial = new ArrayList<ItemHistoricoCuentaCorrienteProveedor>();

        entidadComercialBean.init("2");
        codigoMonedaRegistracion = "";
        marcarProveedorConDeuda();
    }

    public Date getFechaMinima() {

        Calendar cal = Calendar.getInstance();
        cal.set(1900, 1, 1);
        return cal.getTime();
    }

    public Date getFechaMaxima() {

        return new Date();
    }

    public void consultarHistorial() {

        if (proveedor == null) {
            JsfUtil.addErrorMessage("Seleccione un proveedor");
            return;
        }

        if (fechaHasta.before(fechaDesde)) {
            JsfUtil.addWarningMessage("tablaHistorial", "Atencin",
                    "Fecha desde tiene que ser mayor o igual a fecha Hasta");
            return;
        }

        historial = cuentaCorrienteRN.getHistoricoMovimientos(proveedor.getNrocta(), fechaDesde, fechaHasta,
                codigoMonedaRegistracion);

        //Inicializamos el saldo anterior en cero
        ItemHistoricoCuentaCorrienteProveedor SaldoAnterior = cuentaCorrienteRN
                .getSaldoAnterior(proveedor.getNrocta(), fechaDesde);
        historial.add(0, SaldoAnterior);

        BigDecimal saldo = SaldoAnterior.getSaldo();
        for (ItemHistoricoCuentaCorrienteProveedor i : historial) {

            if (!i.getCodfor().equals("SA")) {
                i.setSaldo(saldo.add(i.getDebe().add(i.getHaber().negate())));
                saldo = i.getSaldo();
            }
        }

        if (historial.size() == 1) {
            JsfUtil.addWarningMessage("tablaHistorial", "Atencin",
                    "No se encontraron movimientos en el perodo seleccionado");
        }
    }

    public void imprimir(String codfor, int nrofor) {

        try {

            formulario = formularioRN.getFormulario("PV", codfor);

            if (formulario == null) {
                JsfUtil.addErrorMessage("No se puede imprimir - No se encontr formulario");
                return;
            }

            if (formulario.getNombreReporte() == null) {
                JsfUtil.addErrorMessage("No se puede imprimir - El formulario no tienen reporte asociado");
                return;
            }
            parameters = new HashMap();

            String pathReport = FacesContext.getCurrentInstance().getExternalContext()
                    .getRealPath(formulario.getNombreReporte() + ".jasper");
            nombreArchivo = codfor + "-" + nrofor;

            MovimientoProveedor mp = proveedorRN.getMovimiento(codfor, nrofor);

            parameters.put("ID", mp.getId());
            parameters.put("CANT_COPIAS", 1);

            reportFactory.exportReportToPdfFile(pathReport, nombreArchivo, parameters);
            muestraReporte = true;

        } catch (NullPointerException npe) {
            JsfUtil.addErrorMessage("No se encontr el archivo: " + nombreArchivo + ".jasper");
            muestraReporte = false;

        } catch (Exception e) {
            e.printStackTrace();
            JsfUtil.addErrorMessage("No se puede imprimir a pdf " + e.getMessage());
            muestraReporte = false;
        }
    }

    private void marcarProveedorConDeuda() {

        if (entidadComercialBean.getLista() == null)
            return;

        for (EntidadComercial c : entidadComercialBean.getLista()) {
            c.setConDeuda(cuentaCorrienteRN.conDeuda(c.getNrocta()));
        }
    }

    public void buscarProveedor() {

        entidadComercialBean.buscar();
        for (EntidadComercial c : entidadComercialBean.getLista()) {
            c.setConDeuda(cuentaCorrienteRN.conDeuda(c.getNrocta()));
        }
    }

    public void procesarProveedor() {

        if (entidadComercialBean.getEntidad() != null) {

            proveedor = entidadComercialBean.getEntidad();
            saldoActual = cuentaCorrienteRN.getSaldoActual(proveedor.getNrocta());
            debitos = cuentaCorrienteRN.getDebitosPendientes(proveedor.getNrocta(), codigoMonedaRegistracion);
            creditos = cuentaCorrienteRN.getCreditosPendientes(proveedor.getNrocta(), codigoMonedaRegistracion);

            calcularVencidos(creditos);

            muestraReporte = false;
            todoOk = false;

            consultarHistorial();
        }
    }

    private void calcularVencidos(List<ItemPendienteCuentaCorrienteProveedor> items) {

        cantVencer = 0;
        cantVencidos = 0;

        for (ItemPendienteCuentaCorrienteProveedor icc : items) {

            if (icc.getFechaVencimiento().before(new Date())) {
                cantVencidos++;
            } else {
                cantVencer++;
            }
        }
    }

    @Override
    public void validarDatos() throws ExcepcionGeneralSistema {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public void cargarParametros() throws ExcepcionGeneralSistema {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public void resetParametros() throws ExcepcionGeneralSistema {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    public void postProcessXLS(Object document) {

        HSSFWorkbook wb = (HSSFWorkbook) document;
        HSSFSheet sheet = wb.getSheetAt(0);
        HSSFRow header = sheet.getRow(0);

        HSSFCellStyle cellStyle = wb.createCellStyle();
        cellStyle.setFillForegroundColor(HSSFColor.ORANGE.index);
        cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

        for (int i = 0; i < header.getPhysicalNumberOfCells(); i++) {
            HSSFCell cell = header.getCell(i);
            cell.setCellStyle(cellStyle);
        }
    }

    public Date getFechaDesde() {
        return fechaDesde;
    }

    public void setFechaDesde(Date fechaDesde) {
        this.fechaDesde = fechaDesde;
    }

    public Date getFechaHasta() {
        return fechaHasta;
    }

    public void setFechaHasta(Date fechaHasta) {
        this.fechaHasta = fechaHasta;
    }

    public BigDecimal getSaldoActual() {
        return saldoActual;
    }

    public void setSaldoActual(BigDecimal saldoActual) {
        this.saldoActual = saldoActual;
    }

    public EntidadComercialBean getEntidadComercialBean() {
        return entidadComercialBean;
    }

    public void setEntidadComercialBean(EntidadComercialBean entidadComercialBean) {
        this.entidadComercialBean = entidadComercialBean;
    }

    public EntidadComercial getProveedor() {
        return proveedor;
    }

    public void setProveedor(EntidadComercial proveedor) {
        this.proveedor = proveedor;
    }

    public List<ItemPendienteCuentaCorrienteProveedor> getDebitos() {
        return debitos;
    }

    public void setDebitos(List<ItemPendienteCuentaCorrienteProveedor> debitos) {
        this.debitos = debitos;
    }

    public List<ItemPendienteCuentaCorrienteProveedor> getCreditos() {
        return creditos;
    }

    public void setCreditos(List<ItemPendienteCuentaCorrienteProveedor> creditos) {
        this.creditos = creditos;
    }

    public List<ItemHistoricoCuentaCorrienteProveedor> getHistorial() {
        return historial;
    }

    public void setHistorial(List<ItemHistoricoCuentaCorrienteProveedor> historial) {
        this.historial = historial;
    }

    public int getCantVencidos() {
        return cantVencidos;
    }

    public void setCantVencidos(int cantVencidos) {
        this.cantVencidos = cantVencidos;
    }

    public int getCantVencer() {
        return cantVencer;
    }

    public void setCantVencer(int cantVencer) {
        this.cantVencer = cantVencer;
    }

}