/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.ddns.grupotsergio;

import java.sql.*;

/**
 *
 * @author Edson
 */
public class faturaGS {
    int chave = 0;
    String fatura = null;
    int idvenda = 0;
    String dtemissao = null;
    String dtvcto = null;
    String dtprev = null;
    String dtpgto = null;
    String tpdoc = null;
    String vlrtotal = null;
    String vlrdesc = null;
    String vlrmulta = null;
    String vlrjuros = null;
    String vlroutros = null;
    String vlrliq = null;
    String docbaixa = null;
    String obs = null;
    String auditoria = null;
    int filiais_idfiliais = 0;
    String pago = null;
    String dtini = null;
    String dtfin = null;
    int nrlancaconta = 0;

    private static PreparedStatement stm = null;
    private static ResultSet rs = null;
    private static Statement stmt;

    public faturaGS(){
    }

    public String getAuditoria() {
        return auditoria;
    }

    public void setAuditoria(String auditoria) {
        this.auditoria = auditoria;
    }

    public int getChave() {
        return chave;
    }

    public void setChave(int chave) {
        this.chave = chave;
    }

    public String getDocbaixa() {
        return docbaixa;
    }

    public void setDocbaixa(String docbaixa) {
        this.docbaixa = docbaixa;
    }

    public String getDtemissao() {
        return dtemissao;
    }

    public void setDtemissao(String dtemissao) {
        this.dtemissao = dtemissao;
    }

    public String getDtpgto() {
        return dtpgto;
    }

    public void setDtpgto(String dtpgto) {
        this.dtpgto = dtpgto;
    }

    public String getDtprev() {
        return dtprev;
    }

    public void setDtprev(String dtprev) {
        this.dtprev = dtprev;
    }

    public String getDtvcto() {
        return dtvcto;
    }

    public void setDtvcto(String dtvcto) {
        this.dtvcto = dtvcto;
    }

    public int getFiliais_idfiliais() {
        return filiais_idfiliais;
    }

    public void setFiliais_idfiliais(int filiais_idfiliais) {
        this.filiais_idfiliais = filiais_idfiliais;
    }

    public String getFatura() {
        return fatura;
    }

    public void setFatura(String fatura) {
        this.fatura = fatura;
    }

    public int getIdvenda() {
        return idvenda;
    }

    public void setIdvenda(int idvenda) {
        this.idvenda = idvenda;
    }

    public int getNrlancaconta() {
        return nrlancaconta;
    }

    public void setNrlancaconta(int nrlancaconta) {
        this.nrlancaconta = nrlancaconta;
    }

    public String getObs() {
        return obs;
    }

    public void setObs(String obs) {
        this.obs = obs;
    }

    public String getTpdoc() {
        return tpdoc;
    }

    public void setTpdoc(String tpdoc) {
        this.tpdoc = tpdoc;
    }

    public String getVlrdesc() {
        return vlrdesc;
    }

    public void setVlrdesc(String vlrdesc) {
        this.vlrdesc = vlrdesc;
    }

    public String getVlrjuros() {
        return vlrjuros;
    }

    public void setVlrjuros(String vlrjuros) {
        this.vlrjuros = vlrjuros;
    }

    public String getVlrliq() {
        return vlrliq;
    }

    public void setVlrliq(String vlrliq) {
        this.vlrliq = vlrliq;
    }

    public String getVlrmulta() {
        return vlrmulta;
    }

    public void setVlrmulta(String vlrmulta) {
        this.vlrmulta = vlrmulta;
    }

    public String getVlroutros() {
        return vlroutros;
    }

    public void setVlroutros(String vlroutros) {
        this.vlroutros = vlroutros;
    }

    public String getVlrtotal() {
        return vlrtotal;
    }

    public void setVlrtotal(String vlrtotal) {
        this.vlrtotal = vlrtotal;
    }

    public String getPago() {
        return pago;
    }

    public void setPago(String pago) {
        this.pago = pago;
    }

    public String getDtfin() {
        return dtfin;
    }

    public void setDtfin(String dtfin) {
        this.dtfin = dtfin;
    }

    public String getDtini() {
        return dtini;
    }

    public void setDtini(String dtini) {
        this.dtini = dtini;
    }

    public static boolean inserirFatura (faturaGS pcompra){
        try{
            stm = Conexao.conectar().prepareStatement("insert into fatura("
                    + "idfatura,"
                    + "idvenda,"
                    + "dtemissao,"
                    + "dtvcto,"
                    + "vlrtotal,"
                    + "auditoria,"
                    + "filiais_idfiliais,"
                    + "pago) values ("
                    + "?,?,?,?,?,?,?,?)");
            stm.setInt(1, pcompra.getChave());
            stm.setInt(2, pcompra.getIdvenda());
            stm.setString(3, pcompra.getDtemissao());
            stm.setString(4, pcompra.getDtvcto());
            stm.setString(5, pcompra.getVlrtotal());
            stm.setString(6, pcompra.getAuditoria());
            stm.setInt(7, pcompra.getFiliais_idfiliais());
            stm.setString(8, pcompra.getPago());

            stm.executeUpdate();
            stm.close();
            return true;
        }catch(Exception e){
            System.out.println("Erro ao inserir");
            return false;
        }
    }

    public static boolean altFatDtEmi (faturaGS pcompra){
        try{
            stm = Conexao.conectar().prepareStatement("update fatura set "
                    + "dtemissao=? "
                    + "where idfatura=? "
                    + "and filiais_idfiliais=?");
            stm.setString(1, pcompra.getDtemissao());
            stm.setInt(2, pcompra.getChave());
            stm.setInt(3, pcompra.getFiliais_idfiliais());

            stm.executeUpdate();
            stm.close();
            return true;
        }catch(Exception e){
            System.out.println("Erro ao inserir");
            return false;
        }
    }

    public static boolean altFatDtVcto (faturaGS pcompra){
        try{
            stm = Conexao.conectar().prepareStatement("update fatura set "
                    + "dtvcto=? "
                    + "where idfatura=? "
                    + "and filiais_idfiliais=?");
            stm.setString(1, pcompra.getDtvcto());
            stm.setInt(2, pcompra.getChave());
            stm.setInt(3, pcompra.getFiliais_idfiliais());

            stm.executeUpdate();
            stm.close();
            return true;
        }catch(Exception e){
            System.out.println("Erro ao inserir");
            return false;
        }
    }

    public static boolean altFatDtPrev (faturaGS pcompra){
        try{
            stm = Conexao.conectar().prepareStatement("update fatura set "
                    + "dtprev=? "
                    + "where idfatura=? "
                    + "and filiais_idfiliais=?");
            stm.setString(1, pcompra.getDtprev());
            stm.setInt(2, pcompra.getChave());
            stm.setInt(3, pcompra.getFiliais_idfiliais());

            stm.executeUpdate();
            stm.close();
            return true;
        }catch(Exception e){
            System.out.println("Erro ao inserir");
            return false;
        }
    }

    public static boolean altFatVlrTot (faturaGS pcompra){
        try{
            stm = Conexao.conectar().prepareStatement("update fatura set "
                    + "vlrtotal=? "
                    + "where idfatura=? "
                    + "and filiais_idfiliais=?");
            stm.setString(3, pcompra.getVlrtotal());
            stm.setInt(7, pcompra.getChave());
            stm.setInt(8, pcompra.getFiliais_idfiliais());

            stm.executeUpdate();
            stm.close();
            return true;
        }catch(Exception e){
            System.out.println("Erro ao inserir");
            return false;
        }
    }

    public static boolean altFatAud (faturaGS pcompra){
        try{
            stm = Conexao.conectar().prepareStatement("update fatura set "
                    + "auditoria=? "
                    + "where idfatura=? "
                    + "and filiais_idfiliais=?");
            stm.setString(1, pcompra.getAuditoria());
            stm.setInt(2, pcompra.getChave());
            stm.setInt(3, pcompra.getFiliais_idfiliais());

            stm.executeUpdate();
            stm.close();
            return true;
        }catch(Exception e){
            System.out.println("Erro ao inserir");
            return false;
        }
    }

    public static boolean altFatPago (faturaGS pcompra){
        try{
            stm = Conexao.conectar().prepareStatement("update fatura set "
                    + "pago=? "
                    + "where idfatura=? "
                    + "and filiais_idfiliais=?");
            stm.setString(1, pcompra.getPago());
            stm.setInt(2, pcompra.getChave());
            stm.setInt(3, pcompra.getFiliais_idfiliais());

            stm.executeUpdate();
            stm.close();
            return true;
        }catch(Exception e){
            System.out.println("Erro ao inserir");
            return false;
        }
    }

    public static boolean altFatObs (faturaGS pcompra){
        try{
            stm = Conexao.conectar().prepareStatement("update fatura set "
                    + "obs=? "
                    + "where idfatura=? "
                    + "and filiais_idfiliais=?");
            stm.setString(1, pcompra.getObs());
            stm.setInt(2, pcompra.getChave());
            stm.setInt(3, pcompra.getFiliais_idfiliais());

            stm.executeUpdate();
            stm.close();
            return true;
        }catch(Exception e){
            System.out.println("Erro ao inserir");
            return false;
        }
    }

    public static boolean baixaFatDtPg (faturaGS pcompra){
        boolean testa = false;
        try{
            stm = Conexao.conectar().prepareStatement("update fatura set "
                    + "dtpgto=? "
                    + "where idfatura=? "
                    + "and filiais_idfiliais=?");
            stm.setString(1, pcompra.getDtpgto());
            stm.setInt(2, pcompra.getChave());
            stm.setInt(3, pcompra.getFiliais_idfiliais());

            int executeUpdate = stm.executeUpdate();

            if(executeUpdate > 0)
                testa = true;
            else
                testa = false;
        }catch(Exception e){
            System.out.println("Erro ao alterar");
        }
        return testa;
    }

    public static boolean baixaFatVlDes (faturaGS pcompra){
        boolean testa = false;
        try{
            stm = Conexao.conectar().prepareStatement("update fatura set "
                    + "vlrdesc=? "
                    + "where idfatura=? "
                    + "and filiais_idfiliais=?");
            stm.setString(1, pcompra.getVlrdesc());
            stm.setInt(2, pcompra.getChave());
            stm.setInt(3, pcompra.getFiliais_idfiliais());

            int executeUpdate = stm.executeUpdate();

            if(executeUpdate > 0)
                testa = true;
            else
                testa = false;
        }catch(Exception e){
            System.out.println("Erro ao alterar");
        }
        return testa;
    }

    public static boolean baixaFatVlMul (faturaGS pcompra){
        boolean testa = false;
        try{
            stm = Conexao.conectar().prepareStatement("update fatura set "
                    + "vlrmulta=? "
                    + "where idfatura=? "
                    + "and filiais_idfiliais=?");
            stm.setString(1, pcompra.getVlrmulta());
            stm.setInt(2, pcompra.getChave());
            stm.setInt(3, pcompra.getFiliais_idfiliais());

            int executeUpdate = stm.executeUpdate();

            if(executeUpdate > 0)
                testa = true;
            else
                testa = false;
        }catch(Exception e){
            System.out.println("Erro ao alterar");
        }
        return testa;
    }

    public static boolean baixaFatVlJrs (faturaGS pcompra){
        boolean testa = false;
        try{
            stm = Conexao.conectar().prepareStatement("update fatura set "
                    + "vlrjuros=? "
                    + "where idfatura=? "
                    + "and filiais_idfiliais=?");
            stm.setString(1, pcompra.getVlrjuros());
            stm.setInt(2, pcompra.getChave());
            stm.setInt(3, pcompra.getFiliais_idfiliais());

            int executeUpdate = stm.executeUpdate();

            if(executeUpdate > 0)
                testa = true;
            else
                testa = false;
        }catch(Exception e){
            System.out.println("Erro ao alterar");
        }
        return testa;
    }

    public static boolean baixaFatVlOut (faturaGS pcompra){
        boolean testa = false;
        try{
            stm = Conexao.conectar().prepareStatement("update fatura set "
                    + "vlroutros=? "
                    + "where idfatura=? "
                    + "and filiais_idfiliais=?");
            stm.setString(1, pcompra.getVlroutros());
            stm.setInt(2, pcompra.getChave());
            stm.setInt(3, pcompra.getFiliais_idfiliais());

            int executeUpdate = stm.executeUpdate();

            if(executeUpdate > 0)
                testa = true;
            else
                testa = false;
        }catch(Exception e){
            System.out.println("Erro ao alterar");
        }
        return testa;
    }

    public static boolean baixaFatVlLiq (faturaGS pcompra){
        boolean testa = false;
        try{
            stm = Conexao.conectar().prepareStatement("update fatura set "
                    + "vlrliq=? "
                    + "where idfatura=? "
                    + "and filiais_idfiliais=?");
            stm.setString(1, pcompra.getVlrliq());
            stm.setInt(2, pcompra.getChave());
            stm.setInt(3, pcompra.getFiliais_idfiliais());

            int executeUpdate = stm.executeUpdate();

            if(executeUpdate > 0)
                testa = true;
            else
                testa = false;
        }catch(Exception e){
            System.out.println("Erro ao alterar");
        }
        return testa;
    }

    public static boolean baixaFatObs (faturaGS pcompra){
        boolean testa = false;
        try{
            stm = Conexao.conectar().prepareStatement("update fatura set "
                    + "obs=? "
                    + "where idfatura=? "
                    + "and filiais_idfiliais=?");
            stm.setString(1, pcompra.getObs());
            stm.setInt(2, pcompra.getChave());
            stm.setInt(3, pcompra.getFiliais_idfiliais());

            int executeUpdate = stm.executeUpdate();

            if(executeUpdate > 0)
                testa = true;
            else
                testa = false;
        }catch(Exception e){
            System.out.println("Erro ao alterar");
        }
        return testa;
    }

    public static boolean baixaFatAud (faturaGS pcompra){
        boolean testa = false;
        try{
            stm = Conexao.conectar().prepareStatement("update fatura set "
                    + "auditoria=? "
                    + "where idfatura=? "
                    + "and filiais_idfiliais=?");
            stm.setString(1, pcompra.getAuditoria());
            stm.setInt(2, pcompra.getChave());
            stm.setInt(3, pcompra.getFiliais_idfiliais());

            int executeUpdate = stm.executeUpdate();

            if(executeUpdate > 0)
                testa = true;
            else
                testa = false;
        }catch(Exception e){
            System.out.println("Erro ao alterar");
        }
        return testa;
    }

    public static boolean baixaFatPg (faturaGS pcompra){
        boolean testa = false;
        try{
            stm = Conexao.conectar().prepareStatement("update fatura set "
                    + "pago=? "
                    + "where idfatura=? "
                    + "and filiais_idfiliais=?");
            stm.setString(1, pcompra.getPago());
            stm.setInt(2, pcompra.getChave());
            stm.setInt(3, pcompra.getFiliais_idfiliais());

            int executeUpdate = stm.executeUpdate();

            if(executeUpdate > 0)
                testa = true;
            else
                testa = false;
        }catch(Exception e){
            System.out.println("Erro ao alterar");
        }
        return testa;
    }

    public static boolean alteraFatCtab (faturaGS pcompra){
        boolean testa = false;
        try{
            stm = Conexao.conectar().prepareStatement("update fatura set "
            + "nrlancaconta=? "
            + "where idfatura=? "
            + "and filiais_idfiliais=?");
            stm.setInt(1, pcompra.getNrlancaconta());
            stm.setInt(2, pcompra.getChave());
            stm.setInt(3, pcompra.getFiliais_idfiliais());

            int executeUpdate = stm.executeUpdate();

            if(executeUpdate > 0)
                testa = true;
            else
                testa = false;
        }catch(Exception e){
            System.out.println("Erro ao alterar");
        }
        return testa;
    }

    public static boolean excluiFatura(faturaGS pcompra){
        boolean testa = false;
        try {
            stm = Conexao.conectar().prepareStatement("delete from fatura "
                    + "where idfatura = ? "
                    + "and filiais_idfiliais= ?");
            stm.setInt(1, pcompra.getChave());
            stm.setInt(2, pcompra.getFiliais_idfiliais());
            int executeUpdate = stm.executeUpdate();

            if(executeUpdate > 0)
                testa = true;
            else
                testa = false;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return testa;
    }

    public void selFatura(String Id, String Idf) {
        try {
            faturaGS scid = null;
            stmt = Conexao.conectar().createStatement();
            rs = stmt.executeQuery("Select * From fatura f, "
                    + "vendas v, clifor c Where "
                    + "f.idvenda=v.idvendas and "
                    + "v.idclifor=c.idclifor and "
                    + "v.filiais_idfiliais=c.empresa_idempresa and "
                    + "f.filiais_idfiliais=v.filiais_idfiliais and "
                    + "f.filiais_idfiliais='"+Idf+"' and "
                    + "idfatura ='"+Id+"'");
            if (rs.next()) {
                scid = new faturaGS();
                scid.setChave(rs.getInt("chave"));
                scid.setAuditoria(rs.getString("auditoria"));
                scid.setDocbaixa(rs.getString("docbaixa"));
                scid.setDtemissao(rs.getString("dtemissao"));
                scid.setDtpgto(rs.getString("dtpgto"));
                scid.setDtprev(rs.getString("dtprev"));
                scid.setDtvcto(rs.getString("dtvcto"));
                scid.setFiliais_idfiliais(rs.getInt("filiais_idfiliais"));
                scid.setFatura(rs.getString("fatura"));
                scid.setIdvenda(rs.getInt("idvenda"));
                scid.setObs(rs.getString("obs"));
                scid.setTpdoc(rs.getString("tpdoc"));
                scid.setVlrdesc(rs.getString("vlrdesc"));
                scid.setVlrjuros(rs.getString("vlrjuros"));
                scid.setVlrliq(rs.getString("vlrliq"));
                scid.setVlrmulta(rs.getString("vlrmulta"));
                scid.setVlroutros(rs.getString("vlroutros"));
                scid.setVlrtotal(rs.getString("vlrtotal"));
                scid.setPago(rs.getString("pago"));
            }
            rs.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static int getAutoInc(String Idf) {
        int Codigo = 0;
        try {
            PreparedStatement pstmt = Conexao.conectar().prepareStatement(
                "Select max(idfatura) From fatura "
                + "where filiais_idfiliais = '"+Idf+"'");
            ResultSet rss = pstmt.executeQuery();
            rss.next();
            Codigo = rss.getInt(1) + 1;
            }
            catch (Exception e) {
                e.printStackTrace();
        }
        return Codigo;
    }

    public static int selVf(String Id, String Idf) {
        int nregis = 0;
        try {
            PreparedStatement pstmt = Conexao.conectar().prepareStatement("Select "
            + "count(*) From fatura Where idvenda ='"+Id+"' "
                    + "and filiais_idfiliais = '"+Idf+"'");
            ResultSet rss = pstmt.executeQuery();
            rss.next();
            nregis = rss.getInt(1);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return nregis;
    }

    public void listaFatVen(String Id, String Idf){
        try{
            stmt = Conexao.conectar().createStatement();
            rs = stmt.executeQuery("select * from fatura "
                    + "where idvenda = '"+Id+"' "
                    + "and filiais_idfiliais = '"+Idf+"' order by idfatura");
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    public void listaFatCli(String Id){
        try{
            stmt = Conexao.conectar().createStatement();
            rs = stmt.executeQuery("select * from fatura f, vendas v, clifor c "
                    + "where f.idvenda=v.idvendas and "
                    + "f.filiais_idfiliais=v.filiais_idfiliais and "
                    + "v.filiais_idfiliais=c.empresa_idempresa and "
                    + "v.idclifor=c.idclifor and "
                    + "v.idclifor = '"+Id+"' order by v.nf");
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    public void listaFatAber(String Id){
        try{
            stmt = Conexao.conectar().createStatement();
            rs = stmt.executeQuery("select f.*, c.nome, v.nf from fatura f, "
            + "vendas v, clifor c where v.idclifor=c.idclifor and "
            + "f.idvenda=v.idvendas and pago = 'N' and "
            + "f.filiais_idfiliais=v.filiais_idfiliais and "
            + "v.filiais_idfiliais=c.empresa_idempresa and "
            + "f.filiais_idfiliais = '"+Id+"' "
            + "order by dtvcto");
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    public void listaFatura(String Id){
        try{
            stmt = Conexao.conectar().createStatement();
            rs = stmt.executeQuery("select f.*, c.nome, v.nf from fatura f, "
            + "vendas v, clifor c where v.idclifor=c.idclifor and "
            + "f.idvenda=v.idvendas and "
            + "f.filiais_idfiliais=v.filiais_idfiliais and "
            + "v.filiais_idfiliais=c.empresa_idempresa and "
            + "f.filiais_idfiliais = '"+Id+"' "
            + "order by idfatura");
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    public void impFatsARec(String idempre, String dtini, String dtfin){
        faturaGS lista = null;
        try{
            stmt = Conexao.conectar().createStatement();
            rs = stmt.executeQuery("select f.*, v.*, c.nome, ct.cttonr "
                    + "from fatura f, vendas v, clifor c, cttos ct "
                    + "where f.pago = N and "
                    + "f.filiais_idfiliais=v.filiais_idfiliais and "
                    + "f.idvenda=v.idvendas and "
                    + "v.filiais_idfiliais=c.empresa_idempresa and "
                    + "v.idclifor=c.idclifor and "
                    + "v.idctto=ct.idcttos and "
                    + "v.filiais_idfiliais=ct.filiais_idfiliais and "
                    + "f.filiais_idfiliais = '"+idempre+"' and "
                    + "f.dtvcto >= '"+dtini+"' and "
                    + "f.dtvcto <= '"+dtfin+"' "
                    + "order by f.dtvcto");
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    public void preprelctsrec(String dtini, String dtfin, String pago, String Idf){
        try{
            stmt = Conexao.conectar().createStatement();
            rs = stmt.executeQuery("select e.razao_social, f.idfatura, v.nf, c.nome, "
                    + "v.dtemissao, f.dtvcto, v.vlrliq, ct.cttonr, f.obs, v.pisfonte, "
                    + "v.cofinsfonte, v.irfonte, v.csllfonte, v.issfonte, v.inssfonte, v.total "
                    + "from fatura f, vendas v, clifor c, cttos ct, empresa e "
                    + "where f.idvenda = v.idvendas "
                    + "and f.filiais_idfiliais=v.filiais_idfiliais "
                    + "and v.idclifor=c.idclifor "
                    + "and v.filiais_idfiliais=c.empresa_idempresa "
                    + "and v.idctto=ct.idcttos "
                    + "and v.filiais_idfiliais=ct.filiais_idfiliais "
                    + "and e.idempresa=f.filiais_idfiliais "
                    + "and f.filiais_idfiliais= '"+Idf+"' "
                    + "and f.dtvcto >= '"+dtini+"' "
                    + "and f.dtvcto <= '"+dtfin+"' "
                    + "and f.pago = '"+pago+"' order by v.nf;");
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    public void listaCtsReg(){
        try{
            stmt = Conexao.conectar().createStatement();
            rs = stmt.executeQuery("SELECT * "
            + "FROM relctsreceb order by nf");
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    
    public ResultSet getResultado(){
        return rs;
    }

}
