com.valco.dao.FacturasDAO.java Source code

Java tutorial

Introduction

Here is the source code for com.valco.dao.FacturasDAO.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 com.valco.dao;

import com.valco.HibernateUtil;
import com.valco.pojo.Clientes;
import com.valco.pojo.ConceptosFactura;
import com.valco.pojo.Facturas;
import com.valco.pojo.Impuestos;
import com.valco.pojo.NotasDeVenta;
import com.valco.servlets.ReportesXls;
import java.io.OutputStream;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.hibernate.Criteria;
import org.hibernate.Hibernate;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;

/**
 *
 * @author Administrador
 */
public class FacturasDAO implements Serializable {

    public void insertarFacturas(List<Facturas> facturas) throws Exception {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tx = null;
        try {
            tx = session.beginTransaction();
            for (Facturas factura : facturas) {
                session.save(factura);
            }
            tx.commit();
        } catch (Exception e) {
            if (tx != null) {
                try {
                    tx.rollback();
                } catch (HibernateException he) {
                    throw new Exception("Ocurri un error al crear las facturas.");
                }
            }
            throw new Exception("Ocurri un error al crear las facturas.");
        } finally {
            try {
                if (session.isOpen()) {
                    session.close();
                }
            } catch (HibernateException he) {
                throw new Exception("Ocurri un error al crear las facturas.");
            }
        }
    }

    public void insertarFacturasYActualizarNotas(List<NotasDeVenta> notas) throws Exception {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tx = null;
        try {
            tx = session.beginTransaction();
            for (NotasDeVenta nota : notas) {
                session.update(nota);
                session.save(nota.getFacturas());
                for (ConceptosFactura concepto : nota.getFacturas().getConceptosFacturas()) {
                    concepto.setFacturas(nota.getFacturas());
                    session.save(concepto);
                }
            }
            tx.commit();
        } catch (Exception e) {
            if (tx != null) {
                try {
                    tx.rollback();
                } catch (HibernateException he) {
                    throw new Exception("Ocurri un error al crear las facturas.");
                }
            }
            throw new Exception("Ocurri un error al crear las facturas.");
        } finally {
            try {
                if (session.isOpen()) {
                    session.close();
                }
            } catch (HibernateException he) {
                throw new Exception("Ocurri un error al crear las facturas.");
            }
        }
    }

    public void insertarFacturaYActualizarNota(NotasDeVenta nota) throws Exception {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tx = null;
        try {
            tx = session.beginTransaction();
            session.update(nota);
            session.save(nota.getFacturas());
            for (ConceptosFactura concepto : nota.getFacturas().getConceptosFacturas()) {
                concepto.setFacturas(nota.getFacturas());
                session.save(concepto);
            }
            for (Impuestos impuesto : nota.getFacturas().getImpuestoses()) {
                impuesto.setFacturas(nota.getFacturas());
                session.save(impuesto);
            }
            tx.commit();
        } catch (Exception e) {
            if (tx != null) {
                try {
                    tx.rollback();
                } catch (HibernateException he) {
                    throw new Exception(
                            "Factura " + this.getConsecutivo() + ": Ocurri un error al crear la factura.");
                }
            }
            throw new Exception("Factura " + this.getConsecutivo() + ":Ocurri un error al crear la factura.");
        } finally {
            try {
                if (session.isOpen()) {
                    session.close();
                }
            } catch (HibernateException he) {
                throw new Exception(
                        "Factura " + this.getConsecutivo() + ":Ocurri un error al crear las facturas.");
            }
        }
    }

    public void actualizarFacturas(List<Facturas> facturas) throws Exception {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tx = null;
        try {
            tx = session.beginTransaction();
            for (Facturas factura : facturas) {
                session.update(factura);
            }
            tx.commit();
        } catch (Exception e) {
            if (tx != null) {
                try {
                    tx.rollback();
                } catch (HibernateException he) {
                    throw new Exception("Ocurri un error al actualizar la factura.");
                }
            }
            throw new Exception("Ocurri un error al actualizar la factura.");
        } finally {
            try {
                if (session.isOpen()) {
                    session.close();
                }
            } catch (HibernateException he) {
                throw new Exception("Ocurri un error al actualizar la factura.");
            }
        }
    }

    public void actualizarFactura(Facturas factura) throws Exception {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tx = null;
        try {
            tx = session.beginTransaction();
            session.update(factura);
            tx.commit();
        } catch (Exception e) {
            if (tx != null) {
                try {
                    tx.rollback();
                } catch (HibernateException he) {
                    throw new Exception("Ocurri un error al actualizar la factura.");
                }
            }
            throw new Exception("Ocurri un error al actualizar la factura.");
        } finally {
            try {
                if (session.isOpen()) {
                    session.close();
                }
            } catch (HibernateException he) {
                throw new Exception("Ocurri un error al actualizar la factura.");
            }
        }
    }

    public void borrarFacturas(List<Facturas> facturas) throws Exception {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tx = null;
        try {
            tx = session.beginTransaction();
            for (Facturas factura : facturas) {
                session.delete(factura);
            }
            tx.commit();
        } catch (Exception e) {
            if (tx != null) {
                try {
                    tx.rollback();
                } catch (HibernateException he) {
                    throw new Exception("Ocurri un error al borrar el cliente.");
                }
            }
            throw new Exception("Ocurri un error al borrar el cliente.");
        } finally {
            try {
                if (session.isOpen()) {
                    session.close();
                }
            } catch (HibernateException he) {
                throw new Exception("Ocurri un error al borrar el cliente.");
            }
        }
    }

    public List<Clientes> getFacturas() throws Exception {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tx = null;
        List<Clientes> clientes = new ArrayList<Clientes>();
        try {
            tx = session.beginTransaction();
            Criteria q = session.createCriteria(Clientes.class);
            clientes = (List<Clientes>) q.list();
            for (Clientes cliente : clientes) {
                for (NotasDeVenta nota : cliente.getNotasDeVentas()) {
                    Hibernate.initialize(nota);
                    Hibernate.initialize(nota.getCuentaXCobrar());
                }
            }
            return clientes;

        } catch (HibernateException he) {
            throw new Exception("Ocurri un error al consultar las facturas.");

        } finally {
            try {
                session.close();
            } catch (HibernateException he) {
                throw new Exception("Ocurri un error al consultar las facturas.");
            }
        }
    }

    public List<Facturas> getFacturas(Integer noFactura, Integer noNota) throws Exception {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction tx = null;
        List<Facturas> facturas = new ArrayList<Facturas>();
        try {
            tx = session.beginTransaction();
            Criteria q = session.createCriteria(Facturas.class);
            if (noFactura != null) {
                q.add(Restrictions.eq("codigo", noFactura));
            }
            if (noNota != null) {
                q.createCriteria("notasDeVenta").add(Restrictions.eq("folio", noNota));
                //q.createAlias("notasDeVenta", "nota").add(Restrictions.eqProperty("codigo", noNota.toString()));
            }
            facturas = (List<Facturas>) q.list();

            return facturas;

        } catch (HibernateException he) {
            throw new Exception("Ocurri un error al consultar las facturas.");

        } finally {
            try {
                session.close();
            } catch (HibernateException he) {
                throw new Exception("Ocurri un error al consultar las facturas.");
            }
        }
    }

    public Integer getConsecutivo() throws Exception {
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(ReportesXls.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(ReportesXls.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(ReportesXls.class.getName()).log(Level.SEVERE, null, ex);
        }
        try (Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/valco", "admin3ZheGrA",
                "1VtHQW5M-3g-");) {
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt
                    .executeQuery("SELECT SECUENCIA\n" + "FROM SECUENCIAS\n" + "WHERE TABLE_NAME = 'FACTURAS'");
            rs.next();
            Integer consecutivo = rs.getInt("SECUENCIA");
            return consecutivo;
        } catch (Exception e) {
            throw new Exception("Ocurri un error al consultar el consecutivo");
        }

    }

}