co.com.codesoftware.logica.importacion.ImportacionLogica.java Source code

Java tutorial

Introduction

Here is the source code for co.com.codesoftware.logica.importacion.ImportacionLogica.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 co.com.codesoftware.logica.importacion;

import co.com.codesoftware.persistencia.HibernateUtil;
import co.com.codesoftware.persistencia.ReadFunction;
import co.com.codesoftware.persistencia.entidad.importacion.DetalleGastoEntity;
import co.com.codesoftware.persistencia.entidad.importacion.GastoImpoEntity;
import co.com.codesoftware.persistencia.entidad.importacion.ImportacionEntity;
import co.com.codesoftware.persistencia.entidad.importacion.ProductoImportacionEntity;
import co.com.codesoftware.persistencia.utilities.DataType;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.FetchMode;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

/**
 *
 * @author nicolas
 */
public class ImportacionLogica implements AutoCloseable {

    private Session sesion;
    private Transaction tx;

    /**
     * Funcion con la cual inserto una importacion
     *
     * @param objEntity
     * @return
     */
    public String insertaImportacion(ImportacionEntity objEntity) {
        String rta = "";
        try {
            this.initOperation();
            objEntity.setFechaCrea(new Date());
            objEntity.setVlrTotal(new BigDecimal(0));
            objEntity.setVlrImpuestos(new BigDecimal(0));
            objEntity.setEstado("C");
            this.sesion.save(objEntity);
            rta = "Ok";
        } catch (Exception e) {
            rta = "Error " + e;
            e.printStackTrace();
        }
        return rta;
    }

    /**
     * Funcion con la cual inserto un gasto a una importacion
     *
     * @param gasto
     * @return
     */
    public String insertaGastoImportacion(GastoImpoEntity gasto) {
        String rta = "";
        try {
            this.initOperation();
            gasto.setFechaRegistro(new Date());
            this.sesion.save(gasto);
            rta = "Ok";
        } catch (Exception e) {
            e.printStackTrace();
            rta = "Error " + e;
        }
        return rta;
    }

    /**
     * Funcion con la cual obtengo los gastos de una importacion
     *
     * @return
     */
    public List<GastoImpoEntity> obtenerGastosImportacion(Integer idImpo) {
        List<GastoImpoEntity> rta = null;
        try {
            this.initOperation();
            Criteria crit = this.sesion.createCriteria(GastoImpoEntity.class);
            crit.add(Restrictions.eq("idImpo", idImpo));
            crit.setFetchMode("proveedor", FetchMode.JOIN);
            crit.createAlias("proveedor", "prov");
            crit.setFetchMode("proveedor.ciudad", FetchMode.JOIN);
            crit.setFetchMode("proveedor.municipio", FetchMode.JOIN);
            crit.setFetchMode("proveedor.retenciones", FetchMode.JOIN);
            crit.addOrder(Order.asc("id"));
            rta = crit.list();
            if (rta != null) {
                int i = 0;
                for (GastoImpoEntity item : rta) {
                    i++;
                    item.setConsecutivo(i);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return rta;
    }

    /**
     * metodo que consulta las importaciones en un rango de fechas
     *
     * @param fechaInicial
     * @param fechaFinal
     * @return
     */
    public List<ImportacionEntity> consultaImportaciones(Date fechaInicial, Date fechaFinal) {
        List<ImportacionEntity> rta = null;
        try {
            this.initOperation();

            Criteria crit = sesion.createCriteria(ImportacionEntity.class);
            if (fechaInicial != null && fechaFinal != null) {
                fechaFinal.setHours(23);
                fechaFinal.setMinutes(59);
                fechaFinal.setSeconds(59);
                crit.add(Restrictions.ge("fechaCrea", fechaInicial)).add(Restrictions.lt("fechaCrea", fechaFinal));
            }
            crit.addOrder(Order.asc("estado"));
            crit.addOrder(Order.desc("id"));
            rta = crit.list();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return rta;
    }

    /**
     * Funcion con la cual inserto un producto a una importacion
     *
     * @param idImpo
     * @param codExterno
     * @param cantidad
     * @param precio
     * @return
     */
    public String insertarProductoImportacion(Integer idImpo, String codExterno, Integer cantidad,
            BigDecimal precio) {
        String rta = "";
        List<String> response = new ArrayList<>();
        try (ReadFunction rf = new ReadFunction()) {
            rf.setNombreFuncion("IN_INSERTA_PROD_IMPORTACION");
            rf.setNumParam(4);
            rf.addParametro("" + idImpo, DataType.INT);
            rf.addParametro(codExterno, DataType.TEXT);
            rf.addParametro("" + cantidad, DataType.INT);
            rf.addParametro(precio.toString(), DataType.BIGDECIMAL);
            rf.callFunctionJdbc();
            response = rf.getRespuestaPg();
            rta = response.get(0);
        } catch (Exception e) {
            e.printStackTrace();
            rta = "Error de ejecucion del proceso " + e;
        }
        return rta;
    }

    /**
     * Funcion con la cual convierto los productos de dolares a pesos
     *
     * @param idImpo
     * @param trm
     * @param tazaProm
     * @return
     */
    public String insertarTazasCambio(Integer idImpo, BigDecimal trm, BigDecimal tazaProm) {
        String rta = "";
        List<String> response = new ArrayList<>();
        try (ReadFunction rf = new ReadFunction()) {
            rf.setNombreFuncion("im_convierte_dolares_importacion");
            rf.setNumParam(3);
            rf.addParametro("" + idImpo, DataType.INT);
            rf.addParametro(trm.toString(), DataType.BIGDECIMAL);
            rf.addParametro(tazaProm.toString(), DataType.BIGDECIMAL);
            rf.callFunctionJdbc();
            response = rf.getRespuestaPg();
            rta = response.get(0);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return rta;
    }

    /**
     * Funcion con la cual obtengo los productos que tiene una importacion
     *
     * @param idImportacion
     * @return
     */
    public List<ProductoImportacionEntity> obtenerProductosImportacion(Integer idImportacion) {
        List<ProductoImportacionEntity> rta = null;
        try {
            this.initOperation();
            Criteria crit = this.sesion.createCriteria(ProductoImportacionEntity.class);
            crit.add(Restrictions.eq("idImpo", idImportacion));
            crit.setFetchMode("producto", FetchMode.JOIN);
            crit.addOrder(Order.asc("id"));
            rta = crit.list();
            int i = 0;
            if (rta != null) {
                for (ProductoImportacionEntity item : rta) {
                    i++;
                    item.setConsecutivo(i);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return rta;
    }

    /**
     * Funcion con la cual inserto un detalle al gasto
     *
     * @return
     */
    public String insertaDetalleGasto(DetalleGastoEntity gasto) {
        String rta = "";
        try {
            this.initOperation();
            this.initOperation();
            gasto.setFechaRegi(new Date());
            this.sesion.save(gasto);
            rta = "Ok";
        } catch (Exception e) {
            e.printStackTrace();
        }
        return rta;
    }

    /**
     * Funcion con la cual obtengo el detalle de un gasto basandome en su id
     *
     * @return
     */
    public List<DetalleGastoEntity> obtenerDetalleGasto(Integer idGasto) {
        List<DetalleGastoEntity> rta = null;
        try {
            this.initOperation();
            Criteria crit = this.sesion.createCriteria(DetalleGastoEntity.class);
            crit.add(Restrictions.eq("idGasto", idGasto));
            crit.setFetchMode("idAuxconta", FetchMode.JOIN);
            rta = crit.list();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return rta;
    }

    /**
     * Funcion con la cual llamo al proceso que realizara el proceso de
     * importacion dentro del sistema
     *
     * @param idTius
     * @param idImpo
     * @return
     */
    public String ejecutaProcesoImportacion(Integer idTius, Integer idImpo, Integer idSede) {
        String rta = "";
        List<String> response = new ArrayList<>();
        try (ReadFunction rf = new ReadFunction()) {
            rf.setNombreFuncion("IM_FEJECUTAIMPORTACION");
            rf.setNumParam(3);
            rf.adicionarParametro(idTius, DataType.INT);
            rf.adicionarParametro(idImpo, DataType.INT);
            rf.adicionarParametro(idSede, DataType.INT);
            rf.llamarFuncion();
            response = rf.getRespuestaPg();
            rta = response.get(0);
        } catch (Exception e) {
            e.printStackTrace();
            rta = "Error de ejecucion del proceso " + e;
        }
        return rta;
    }

    /**
     * Funcion con la cual borro todos los productos de una importacion
     *
     * @return
     */
    public String borrarProductosImportacion(Integer idImpo) {
        String rta = "";
        try {
            this.initOperation();
            Query query = this.sesion.createQuery("delete ProductoImportacionEntity where idImpo = :idImpo");
            query.setParameter("idImpo", idImpo);
            int result = query.executeUpdate();
            if (result > 0) {
                rta = "Ok Eliminados " + result + " de la importacion";
            } else {
                rta = "Error al eliminar los productos ";
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return rta;
    }

    /**
     * Funcion con la cual obtengo la informacion basica de la importacion
     *
     * @return
     */
    public ImportacionEntity obtenerImportacion(Integer idImpo) {
        ImportacionEntity objEntity = null;
        try {
            this.initOperation();
            objEntity = (ImportacionEntity) this.sesion.createCriteria(ImportacionEntity.class)
                    .add(Restrictions.eq("id", idImpo)).uniqueResult();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return objEntity;
    }

    /**
     * Funcion con la cual elimino un detalle de una importacion
     * @param idImpo
     * @param idDet
     * @return 
     */
    public String eliminarDetalleGasto(Integer idDet) {
        String rta = "";
        try {
            this.initOperation();
            Query query = this.sesion.createQuery("delete DetalleGastoEntity where id = :id");
            query.setInteger("id", idDet);
            query.executeUpdate();
            rta = "Ok";
        } catch (Exception e) {
            e.printStackTrace();
            rta = "Error " + e;
        }
        return rta;
    }

    /**
     * Funcion con la cual se elimina un gasto
     * @param idGasto
     * @return 
     */
    public String eliminarGasto(Integer idGasto) {
        String rta = "";
        try {
            this.initOperation();
            GastoImpoEntity objEntity = new GastoImpoEntity();
            objEntity.setId(idGasto);
            this.sesion.delete(objEntity);
            this.tx.commit();
            rta = "Ok";
        } catch (Exception e) {
            e.printStackTrace();
            rta = "Error " + e;
        }
        return rta;
    }

    /**
     * metodo que inicia la sesion de base de datos
     */
    private void initOperation() {
        try {
            sesion = HibernateUtil.getSessionFactory().openSession();
            tx = sesion.beginTransaction();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void close() throws Exception {
        try {
            if (tx != null) {
                tx.commit();
            }
            if (sesion != null) {
                sesion.close();
            }
        } catch (Exception e) {
            System.err.println("Error al cerrar la sesion del cliente hibernate " + e);
        }

    }

}