Package com.sevenrtc.aas.shared

Source Code of com.sevenrtc.aas.shared.Contas

package com.sevenrtc.aas.shared;

import com.sevenrtc.aas.db.DAO;
import com.sevenrtc.aas.entidades.CategoriaDRE;
import com.sevenrtc.aas.entidades.Conta;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import javax.swing.tree.DefaultMutableTreeNode;

/**
* Classe que mapeia codigo de conta a sua respectiva conta
*
* @author Anthony Accioly
*
*/
public class Contas {

    // Mapa dos codigos das contas para seus nomes
    private static HashMap<String, String> contas = new HashMap<String, String>();
    // Codigos das contas em ordem
    private static Object[] cods;
    // Assinatura das contas em ordem
    private static Object[] assinaturasContas;
    // Categorias DRE em ordem
    private static Object[] categoriasDRE;
    // Nodo pai da estrutura de arvore do plano de contas
    private static DefaultMutableTreeNode noPai;

    /**
     * Adiciona uma conta a colecao
     *
     * @param c Conta a ser adicionada
     */
    public static void add(Conta c) {
        contas.put(c.getCodigo(), c.getNome());
    }

    /**
     * Procura e adiciona os nodos descendentes do atual (recursivamente)
     *
     * @param noPai nodo pai
     * @param mConta conta do nodo pai
     * @return nodo pai com com seus nodos descendentes adicionados
     */
    public static DefaultMutableTreeNode adicionarNode(
            DefaultMutableTreeNode noPai, String mConta) {
        DefaultMutableTreeNode mAux;
        ResultSet x = contasFilhas(mConta);
        try {
            while (x.next()) {
                mAux = new DefaultMutableTreeNode(x.getString("CON_Codigo") + "-"
                        + x.getString("CON_Nome"));
                adicionarNode(mAux, x.getString("CON_Codigo"));
                noPai.add(mAux);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return noPai;
    }

    /**
     * Consulta o banco por contas filhas de determinado pai
     */
    public static ResultSet contasFilhas(String contaPai) {
        ResultSet mCursor = DAO.query(
                "SELECT * FROM CON_CONTA WHERE CON_Pai = + '" + contaPai
                + "' AND CTX_ID = " + Contextos.getContextoAtual()
                + " ORDER BY CON_Ordem");

        return mCursor;
    }

    /**
     * Constroi e retorna uma estrutura de arvore contendo o plano de conta da
     * empresa atual
     *
     */
    private static void estruturaContas() {
        // Le cada conta analitica do banco e adiciona à colecao
        DefaultMutableTreeNode mAux;
        // Chama todas as contas no nivel superior da arvore
        ResultSet rs = DAO.query("SELECT * FROM CON_CONTA WHERE CON_PAI is null AND CTX_ID = "
                + Contextos.getContextoAtual() + " ORDER BY CON_Ordem");
        // Cria o nodo pai da colecao
        noPai = new DefaultMutableTreeNode(Contextos.getNomeEmpresa());

        try {
            // Para cada conta do nivel superior da arvore (sem pai)
            while (rs.next()) {
                // Cria um nodo para ela
                mAux = new DefaultMutableTreeNode(rs.getString("CON_Codigo") + "-"
                        + rs.getString("CON_Nome"));
                noPai.add(mAux);
                // E procura por todos seus descendentes
                adicionarNode(mAux, rs.getString("CON_Codigo"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }

    /**
     * Procedimento interno para extrair os códigos e nomes das coleções em
     * ordem
     */
    private static void extractInfo() {
        cods = contas.keySet().toArray();
        Arrays.sort(cods);
        assinaturasContas = new Object[cods.length];
        /*
         * Itera sobre os elements do array de códigos e constrói suas
         * assinaturas
         */
        for (int i = 0; i < assinaturasContas.length; i++) {
            assinaturasContas[i] = getAssinatura((String) cods[i]);
        }

    }

    /**
     * Volta a assinatura de determinada conta
     *
     * @param codigo Codigo da conta
     * @return assinatura da conta
     */
    public static String getAssinatura(String codigo) {
        if (codigo == null) {
            return null;
        }
        return codigo + " - " + contas.get(codigo);
    }

    /**
     * @return array com as assinaturas das contas
     */
    public static Object[] getAssinaturasContas() {
        return assinaturasContas;
    }

    /**
     * Retorna os codigos das contas em ordem
     *
     * @return codigos da coleção
     */
    public static Object[] getCodigos() {
        return cods;
    }

    /**
     * Acha o nome de uma conta referente a um código
     *
     * @param codigo código da conta
     * @return nome da conta
     */
    public static String getNome(String codigo) {
        return contas.get(codigo);
    }

    /**
     * Devolve o nodo raiz de uma estrutura de arvore do plano de contas da
     * empresa atual. <p> O nodo pode ser usado diretamente no construtor de uma
     * {@link javax.swing.JTree} para exibir a estrutura do plano de contas. A
     * arvore é montada em tempo de execução para a empresa, porém, atualizações
     * nas contas são refletidas dinamicamente na mesma, não sendo necessario a
     * reconstrução dos dados a partir do nodo pai. <p> A estrutura do plano de
     * contas de uma empresa é mantida em memoria até que o usuario carregue o
     * plano de contas para outra empresa. Logo, acessos consecutivos ao plano
     * de contas da mesma empresa não requerem reestruturação da arvore
     *
     * @return nodo pai de uma estrutura de plano de contas para a empresa atual
     */
    public static DefaultMutableTreeNode getNoPai() {
        // Se o nodo aberto for nulo ou percentente a outra empresa
        if (noPai == null || !noPai.equals(Contextos.getNomeEmpresa())) // Estrutura as contas da empresa atual
        {
            estruturaContas();
        }
        // Retorna o nodo pai
        return noPai;
    }

    /**
     *
     * @return as categorias DRE em ordem
     */
    public static Object[] getCategoriasDRE() {
        return categoriasDRE;
    }

    /**
     * Remove uma conta da coleção
     *
     * @param c Conta a ser removida
     */
    public static void remove(Conta c) {
        contas.remove(c.getCodigo());
    }

    /**
     * Carrega as contas do banco de dados
     */
    public static void updateContas() {

        // Le cada conta analitica do banco e adiciona à colecao
        ResultSet rs = DAO.query("SELECT * FROM CON_CONTA WHERE CON_FUNCAO = 'A' AND CTX_ID = "
                + Contextos.getContextoAtual());
        contas = new HashMap<String, String>();

        int count = 0;
        try {
            Conta c;
            while (rs.next()) {
                c = Conta.load(rs);
                add(c);
                count++;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

        // Se não há contas e há uma empresa aberta atualmente
        if (count == 0 && Contextos.getContextoAtual() != 0) {
            try {
                // ** Ativo
                Conta.store(new Conta("1", Contextos.getContextoAtual(),
                        "Ativo", 0, 'a', 's', null, 1, 0));
                // Circulante
                Conta.store(new Conta("1.1", Contextos.getContextoAtual(),
                        "Circulante", 0, 'a', 's', "1", 1, 0));
                Conta.store(new Conta("1.1.1", Contextos.getContextoAtual(),
                        "Caixa", 0, 'a', 'a', "1.1", 1, 0));
                Conta.store(new Conta("1.1.2", Contextos.getContextoAtual(),
                        "Banco", 0, 'a', 'a', "1.1", 2, 0));
                Conta.store(new Conta("1.1.3", Contextos.getContextoAtual(),
                        "Duplicatas a receber", 0, 'a', 'a', "1.1", 3, 0));
                Conta.store(new Conta("1.1.4", Contextos.getContextoAtual(),
                        "Estoques", 0, 'a', 'a', "1.1", 4, 0));
                Conta.store((new Conta("1.1.5",
                        Contextos.getContextoAtual(),
                        "Despesas pagas antecipadamente", 0, 'a', 'a',
                        "1.1", 5, 0)));
                // Realizável a longo prazo
                Conta.store(new Conta("1.2", Contextos.getContextoAtual(),
                        "Realizável a Longo Prazo", 0, 'a', 's', "1", 2, 0));
                Conta.store(new Conta("1.2.1", Contextos.getContextoAtual(),
                        "Contas a receber", 0, 'a', 'a', "1.2", 1, 0));
                // Permanente
                Conta.store(new Conta("1.3", Contextos.getContextoAtual(),
                        "Permanente", 0, 'a', 's', "1", 3, 0));
                Conta.store(new Conta("1.3.1", Contextos.getContextoAtual(),
                        "Equipamentos", 0, 'a', 'a', "1.3", 1, 0));
                Conta.store(new Conta("1.3.2", Contextos.getContextoAtual(),
                        "Terrenos", 0, 'a', 'a', "1.3", 2, 0));
                Conta.store(new Conta("1.3.3", Contextos.getContextoAtual(),
                        "Imóveis", 0, 'a', 'a', "1.3", 3, 0));
                Conta.store(new Conta("1.3.4", Contextos.getContextoAtual(),
                        "Veículos", 0, 'a', 'a', "1.3", 4, 0));
                Conta.store(new Conta("1.3.5", Contextos.getContextoAtual(),
                        "Móveis e Utensílios", 0, 'a', 'a', "1.3", 5, 0));

                // ** Passivo
                Conta.store(new Conta("2", Contextos.getContextoAtual(),
                        "Passivo", 0, 'p', 's', null, 2, 0));
                // Circulante
                Conta.store(new Conta("2.1", Contextos.getContextoAtual(),
                        "Circulante", 0, 'p', 's', "2", 1, 0));
                Conta.store(new Conta("2.1.1", Contextos.getContextoAtual(),
                        "Fornecedores", 0, 'p', 'a', "2.1", 1, 0));
                Conta.store(new Conta("2.1.2", Contextos.getContextoAtual(),
                        "Impostos a recolher", 0, 'p', 'a', "2.1", 2, 0));
                Conta.store(new Conta("2.1.3", Contextos.getContextoAtual(),
                        "Salários a Pagar", 0, 'p', 'a', "2.1", 3, 0));
                Conta.store(new Conta("2.1.4", Contextos.getContextoAtual(),
                        "Encargos Sociais a Recolher", 0, 'p', 'a', "2.1", 4, 0));
                Conta.store(new Conta("2.1.5", Contextos.getContextoAtual(),
                        "Empréstimos a Pagar", 0, 'p', 'a', "2.1", 5, 0));
                Conta.store(new Conta("2.1.6", Contextos.getContextoAtual(),
                        "Contas a Pagar", 0, 'p', 'a', "2.1", 6, 0));
                Conta.store(new Conta("2.1.7", Contextos.getContextoAtual(),
                        "Títulos a Pagar", 0, 'p', 'a', "2.1", 7, 0));
                // Exigível a Longo Prazo
                Conta.store(new Conta("2.2", Contextos.getContextoAtual(),
                        "Exigível a longo prazo", 0, 'p', 's', "2", 2, 0));
                Conta.store(new Conta("2.2.1", Contextos.getContextoAtual(),
                        "Financiamentos", 0, 'p', 'a', "2.2", 1, 0));

                // Patrimônio Líquido
                Conta.store(new Conta("3", Contextos.getContextoAtual(),
                        "Patrimônio Líquido", 0, 'l', 's', null, 3, 0));
                Conta.store(new Conta("3.1", Contextos.getContextoAtual(),
                        "Capital", 0, 'l', 'a', "3", 1, 0));
                Conta.store(new Conta("3.2", Contextos.getContextoAtual(),
                        "Lucros Acumulados", 0, 'l', 'a', "3", 2, 0));
                Conta.store(new Conta("3.3", Contextos.getContextoAtual(),
                        "Reservas", 0, 'l', 'a', "3", 3, 0));

                // ** Vendas e Deduções
                Conta.store(new Conta("4", Contextos.getContextoAtual(),
                        "Vendas", 0, 'r', 's', null, 4, 0));
                // Vendas Brutas
                Conta.store(new Conta("4.1", Contextos.getContextoAtual(),
                        "Vendas Brutas", 0, 'r', 's', "4", 1, 0));
                Conta.store(new Conta("4.1.1", Contextos.getContextoAtual(),
                        "Mercado Interno", 0, 'r', 'a', "4.1", 1, 1));
                Conta.store(new Conta("4.1.2", Contextos.getContextoAtual(),
                        "Mercado Externo", 0, 'r', 'a', "4.1", 2, 1));
                // Deduções
                Conta.store(new Conta("4.2", Contextos.getContextoAtual(),
                        "Deduções", 0, 'd', 's', "4", 2, 0));
                Conta.store(new Conta("4.2.1", Contextos.getContextoAtual(),
                        "IPI", 0, 'd', 'a', "4.2", 1, 2));
                Conta.store(new Conta("4.2.2", Contextos.getContextoAtual(),
                        "ICMS", 0, 'd', 'a', "4.2", 2, 2));
                Conta.store(new Conta("4.2.3", Contextos.getContextoAtual(),
                        "ISS", 0, 'd', 'a', "4.2", 3, 2));
                Conta.store(new Conta("4.2.4", Contextos.getContextoAtual(),
                        "Impostos Diversos", 0, 'd', 'a', "4.2", 4, 2));
                Conta.store(new Conta("4.2.5", Contextos.getContextoAtual(),
                        "Devoluções", 0, 'd', 'a', "4.2", 5, 2));
                Conta.store(new Conta("4.2.6", Contextos.getContextoAtual(),
                        "Abatimentos", 0, 'd', 'a', "4.2", 6, 2));

                // ** Despesas
                Conta.store(new Conta("5", Contextos.getContextoAtual(),
                        "Despesas", 0, 'd', 's', null, 5, 0));
                // Custos dos Produtos Vendidos
                Conta.store(new Conta("5.1", Contextos.getContextoAtual(),
                        "Custos dos Produtos Vendidos", 0, 'd', 's', "5", 1, 3));
                Conta.store(new Conta("5.1.1", Contextos.getContextoAtual(),
                        "Matéria Prima", 0, 'd', 'a', "5.1", 1, 0));
                Conta.store(new Conta("5.1.2", Contextos.getContextoAtual(),
                        "Mão-de-obra Direta", 0, 'd', 'a', "5.1", 2, 0));
                Conta.store(new Conta("5.1.3", Contextos.getContextoAtual(),
                        "Aluguel da Fábrica", 0, 'd', 'a', "5.1", 3, 0));
                Conta.store(new Conta("5.1.4", Contextos.getContextoAtual(),
                        "Energia Elétrica", 0, 'd', 'a', "5.1", 4, 0));
                Conta.store(new Conta("5.1.5", Contextos.getContextoAtual(),
                        "Depreciação de Equipamentos", 0, 'd', 'a', "5.1", 5, 0));
                // Despesas de Vendas
                Conta.store(new Conta("5.2", Contextos.getContextoAtual(),
                        "Despesas de Vendas", 0, 'd', 's', "5", 2, 4));
                Conta.store(new Conta("5.2.1", Contextos.getContextoAtual(),
                        "Comissão de Vendedores", 0, 'd', 'a', "5.2", 1, 0));
                Conta.store(new Conta("5.2.2", Contextos.getContextoAtual(),
                        "Propaganda", 0, 'd', 'a', "5.2", 2, 0));
                Conta.store(new Conta("5.2.3", Contextos.getContextoAtual(),
                        "Salários do Pessoal de Vendas", 0, 'd', 'a',
                        "5.2", 3, 0));
                Conta.store(new Conta("5.2.4", Contextos.getContextoAtual(),
                        "Devedores Duvidosos", 0, 'd', 'a', "5.2", 4, 0));
                // Despesas Administrativas
                Conta.store(new Conta("5.3", Contextos.getContextoAtual(),
                        "Despesas Administrativas", 0, 'd', 's', "5", 3, 4));
                Conta.store(new Conta("5.3.1", Contextos.getContextoAtual(),
                        "Aluguel do Escritório", 0, 'd', 'a', "5.3", 1, 0));
                Conta.store(new Conta("5.3.2", Contextos.getContextoAtual(),
                        "Material de Escritório", 0, 'd', 'a', "5.3", 2, 0));
                Conta.store(new Conta("5.3.3", Contextos.getContextoAtual(),
                        "Salário do Pessoal Administrativo", 0, 'd', 'a',
                        "5.3", 3, 0));
                Conta.store(new Conta("5.3.4", Contextos.getContextoAtual(),
                        "Encargos Sociais", 0, 'd', 'a', "5.3", 4, 0));
                // Honorários dos administradores
                Conta.store(new Conta("5.4", Contextos.getContextoAtual(),
                        "Honorários da administração", 0, 'd', 's', "5", 4, 4));
                Conta.store(new Conta("5.4.1", Contextos.getContextoAtual(),
                        "Honorários da diretoria", 0, 'd', 'a', "5.4", 1, 0));
                // Resultados financeiros
                Conta.store(new Conta("5.5", Contextos.getContextoAtual(),
                        "Resultados Financeiros", 0, 'r', 's', "5", 5, 0));
                Conta.store(new Conta("5.5.1", Contextos.getContextoAtual(),
                        "Juros", 0, 'd', 'a', "5.5", 1, 5));
                Conta.store(new Conta("5.5.2", Contextos.getContextoAtual(),
                        "Correção Monetária da Dívida", 0, 'd', 'a', "5.5", 2, 5));
                Conta.store(new Conta("5.5.3", Contextos.getContextoAtual(),
                        "Variação Cambial", 0, 'd', 'a', "5.5", 3, 5));
                Conta.store(new Conta("5.5.4", Contextos.getContextoAtual(),
                        "Receita Financeira", 0, 'r', 'a', "5.5", 4, 5));
                Conta.store(new Conta("5.5.5", Contextos.getContextoAtual(),
                        "Ganhos Extraordinários", 0, 'r', 'a', "5.5", 5, 5));
                Conta.store(new Conta("5.5.6", Contextos.getContextoAtual(),
                        "Provisão para imposto de renda", 0, 'd', 'a',
                        "5.5", 6, 5));
                // Resultados não operacionais
                Conta.store(new Conta("5.6", Contextos.getContextoAtual(),
                        "Resultados não operacionais", 0, 'r', 's', "5", 6, 0));
                Conta.store(new Conta("5.6.1", Contextos.getContextoAtual(),
                        "Receitas não operacionais", 0, 'r', 'a', "5.6", 1, 6));
                Conta.store(new Conta("5.6.2", Contextos.getContextoAtual(),
                        "Despesas não operacionais", 0, 'd', 'a', "5.6", 2, 6));
                // Imposto de Renda e Contribuições Sociais
                Conta.store(new Conta("5.7", Contextos.getContextoAtual(),
                        "Imposto de Renda e Contribuições Sociais", 0, 'd',
                        's', "5", 7, 0));
                Conta.store(new Conta("5.7.1", Contextos.getContextoAtual(),
                        "Corrente", 0, 'd', 'a', "5.7", 1, 7));
                Conta.store(new Conta("5.7.2", Contextos.getContextoAtual(),
                        "Diferido", 0, 'r', 'a', "5.7", 2, 7));
                // Imposto de Renda e Contribuições Sociais
                Conta.store(new Conta("5.8", Contextos.getContextoAtual(),
                        "Participações", 0, 'd', 's', "5", 8, 0));
                Conta.store(new Conta("5.8.1", Contextos.getContextoAtual(),
                        "Debêntures", 0, 'd', 'a', "5.8", 1, 8));
                Conta.store(new Conta("5.8.2", Contextos.getContextoAtual(),
                        "Doações", 0, 'd', 'a', "5.8", 2, 8));
                Conta.store(new Conta("5.8.3", Contextos.getContextoAtual(),
                        "Participação dos administradores", 0, 'd', 'a', "5.8",
                        3, 8));
                Conta.store(new Conta("5.8.4", Contextos.getContextoAtual(),
                        "Participação minoritária", 0, 'd', 'a', "5.8", 4, 8));
            } catch (Exception e) {
                e.printStackTrace();
            }

            // Chama o procedimento recursivamente
            updateContas();
            // sai do método para evitar repetição do extractInfo()
            return;
        }
        // Extrai os nomes e códigos da coleção em ordem alfabética
        extractInfo();

    }

    /**
     * Le cada Categoria DRE e adiciona a coleção
     *
     */
    public static void updateCategorias() {
        // Lista temporaria de categorias
        ArrayList<CategoriaDRE> categorias = new ArrayList<CategoriaDRE>();

        // Cria as categorias
        categorias.add(new CategoriaDRE(0, "(Nenhuma)"));
        categorias.add(new CategoriaDRE(1, "Receita Bruta"));
        categorias.add(new CategoriaDRE(2, "Deduções"));
        categorias.add(new CategoriaDRE(3, "Custos do Período"));
        categorias.add(new CategoriaDRE(4, "Resultado Operacional"));
        categorias.add(new CategoriaDRE(5, "Resultado Financeiro"));
        categorias.add(new CategoriaDRE(6, "Resultado Não Operacional"));
        categorias.add(new CategoriaDRE(7, "Imposto de Renda e C.S."));
        categorias.add(new CategoriaDRE(8, "Participações"));
        // Converte-as para um vetor
        categoriasDRE = categorias.toArray();

        try {
            // Se as categorias ainda não foram persistidas no banco
            if (!DAO.query("SELECT * FROM cat_categoriadre").next()) // Adiciona-as ao banco
            {
                for (CategoriaDRE c : categorias) {
                    CategoriaDRE.store(c);
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }

    /**
     * Impede a construção da classe
     */
    private Contas() {
    }
}
TOP

Related Classes of com.sevenrtc.aas.shared.Contas

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.