Ejemplo n.º 1
0
        public ImpostoProdutoDocumento PesquisarImpostoProdutoDocumento(decimal CodigoDocumento, int CodigoProdutoDocumento)
        {
            try
            {
                AbrirConexao();
                Cmd = new SqlCommand("SELECT * FROM [IMPOSTO_PRODUTO_DOCUMENTO] WHERE CD_DOCUMENTO = @v1 AND CD_PROD_DOCUMENTO = @v2", Con);

                Cmd.Parameters.AddWithValue("@v1", CodigoDocumento);
                Cmd.Parameters.AddWithValue("@v2", CodigoProdutoDocumento);

                Dr = Cmd.ExecuteReader();
                ImpostoProdutoDocumento p = null;
                if (Dr.Read())
                {
                    p = new ImpostoProdutoDocumento();
                    p.CodigoDocumento        = Convert.ToDecimal(Dr["CD_DOCUMENTO"]);
                    p.CodigoProdutoDocumento = Convert.ToInt32(Dr["CD_PROD_DOCUMENTO"]);
                    p.CodigoCST_ICMS         = Convert.ToDecimal(Dr["CD_CST_ICMS"]);
                    p.ValorBaseCalculoICMS   = Convert.ToDecimal(Dr["VL_BC_ICMS"]);
                    p.PercentualICMS         = Convert.ToDecimal(Dr["PC_ICMS"]);
                    p.ValorICMS                   = Convert.ToDecimal(Dr["VL_ICMS"]);
                    p.ValorMVA_Entrada            = Convert.ToDecimal(Dr["VL_MVA_ENTRADA"]);
                    p.ValorMVA_Saida              = Convert.ToDecimal(Dr["VL_MVA_SAIDA"]);
                    p.PercentualICMS_Interno      = Convert.ToDecimal(Dr["PC_ICMS_INTERNO"]);
                    p.ValorReducaoBaseCalculoICMS = Convert.ToDecimal(Dr["VL_RED_BC_ICMS"]);
                    p.ValorReducaoBaseCalculoICMS = Convert.ToDecimal(Dr["VL_RED_BC_ICMS_INTERNO"]);
                    p.PercentualICMS_ST           = Convert.ToDecimal(Dr["PC_ICMS_ST"]);
                    p.CodigoCST_IPI               = Convert.ToDecimal(Dr["CD_CST_IPI"]);
                    p.ValorBaseCalculoIPI         = Convert.ToDecimal(Dr["VL_BC_IPI"]);
                    p.PercentualIPI               = Convert.ToDecimal(Dr["PC_IPI"]);
                    p.ValorIPI               = Convert.ToDecimal(Dr["VL_IPI"]);
                    p.CodigoEnquadramento    = Convert.ToInt32(Dr["CD_ENQUADRAMENTO_IPI"]);
                    p.CodigoCST_PIS          = Convert.ToDecimal(Dr["CD_CST_PIS"]);
                    p.ValorBaseCalculoPIS    = Convert.ToDecimal(Dr["VL_BC_PIS"]);
                    p.PercentualPIS          = Convert.ToDecimal(Dr["PC_PIS"]);
                    p.ValorPIS               = Convert.ToDecimal(Dr["VL_PIS"]);
                    p.CodigoCST_COFINS       = Convert.ToDecimal(Dr["CD_CST_COFINS"]);
                    p.ValorBaseCalculoCOFINS = Convert.ToDecimal(Dr["VL_BC_COFINS"]);
                    p.PercentualCOFINS       = Convert.ToDecimal(Dr["PC_COFINS"]);
                    p.ValorCOFINS            = Convert.ToDecimal(Dr["VL_COFINS"]);
                }
                return(p);
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao Obter imposto do produto do documento: " + ex.Message.ToString());
            }
            finally
            {
                FecharConexao();
            }
        }
Ejemplo n.º 2
0
        public static ImpostoProdutoDocumento PreencherImpostosProdutoDocumento(ProdutoDocumento p, long intCodigoEmpresa, long longCodigoPessoa, int intCodigoTipoOperacao, int intCodigoAplicacaoUso, decimal decValorFrete, bool CalcularImpostos)
        {
            try
            {
                if (intCodigoTipoOperacao == 0)
                {
                    return(null);
                }

                ImpostoProdutoDocumento imp = new ImpostoProdutoDocumento();

                PIS    pis    = new PIS();
                PISDAL pisDAL = new PISDAL();

                COFINS    cofins    = new COFINS();
                COFINSDAL cofinsDAL = new COFINSDAL();

                RegFisIPI      ipi    = new RegFisIPI();
                RegraFisIPIDAL ipiDAL = new RegraFisIPIDAL();

                RegFisIcms    regICMS    = new RegFisIcms();
                RegFisIcmsDAL regICMSDAL = new RegFisIcmsDAL();

                TipoOperacao    tpOP    = new TipoOperacao();
                TipoOperacaoDAL tpOPDAL = new TipoOperacaoDAL();
                tpOP = tpOPDAL.PesquisarTipoOperacao(intCodigoTipoOperacao);

                Produto    produto    = new Produto();
                ProdutoDAL produtoDAL = new ProdutoDAL();
                produto = produtoDAL.PesquisarProduto(p.CodigoProduto);

                int CodigoPISUtilizado    = 0;
                int CodigoCOFINSUtilizado = 0;

                switch (tpOP.CodigoPrecedenciaImpostoPIS_COFINS)
                {
                case 159:
                    Pessoa    pessoa    = new Pessoa();
                    PessoaDAL pessoaDAL = new PessoaDAL();
                    if (produto.CodigoPIS != 0 || produto.CodigoCOFINS != 0)
                    {
                        pessoa = pessoaDAL.PesquisarPessoa(longCodigoPessoa);
                    }

                    //PIS
                    if (produto.CodigoPIS == 0)    //SE NÃO EXISTIR PIS NO PRODUTO
                    {
                        if (pessoa.CodigoPIS == 0)
                        {
                            CodigoPISUtilizado = tpOP.CodigoPIS;    //SE NÃO EXISTIR PIS NO PESSOA E PRODUTO
                        }
                        else
                        {
                            CodigoPISUtilizado = pessoa.CodigoPIS;
                        }
                    }
                    else
                    {
                        CodigoPISUtilizado = produto.CodigoPIS;
                    }
                    //FIM PIS

                    //COFINS
                    if (produto.CodigoCOFINS == 0)    //SE NÃO EXISTIR COFINS NO PRODUTO
                    {
                        if (pessoa.CodigoCOFINS == 0)
                        {
                            CodigoCOFINSUtilizado = tpOP.CodigoCOFINS;    //SE NÃO EXISTIR COFINS NO PESSOA E PRODUTO
                        }
                        else
                        {
                            CodigoCOFINSUtilizado = pessoa.CodigoCOFINS;
                        }
                    }
                    else
                    {
                        CodigoCOFINSUtilizado = produto.CodigoCOFINS;
                    }
                    //FIM COFINS

                    break;

                case 160:
                    //PIS
                    //FIM PIS

                    //COFINS
                    //FIM COFINS
                    break;
                }

                if (CodigoPISUtilizado != 0)
                {
                    pis = pisDAL.PesquisarPISIndice(CodigoPISUtilizado);
                }

                if (CodigoCOFINSUtilizado != 0)
                {
                    cofins = cofinsDAL.PesquisarCOFINSIndice(CodigoCOFINSUtilizado);
                }

                regICMS = regICMSDAL.ExecutaSP_BUSCA_REGRA_ICMS(intCodigoTipoOperacao, intCodigoEmpresa, longCodigoPessoa, intCodigoAplicacaoUso);

                imp.CodigoDocumento        = p.CodigoDocumento;
                imp.CodigoProdutoDocumento = p.CodigoItem;

                if (regICMS != null)
                {
                    imp.ValorMVA_Saida       = regICMS.MVAOriginal;
                    imp.ValorMVA_Entrada     = regICMS.MVAEntrada;
                    imp.PercentualICMS       = RetornaPercentualICMS(regICMS);
                    imp.ValorBaseCalculoICMS = p.ValorTotalItem;
                }

                //testar se exite IPI
                imp.ValorBaseCalculoIPI = p.ValorTotalItem;
                imp.PercentualIPI       = 5;

                if (pis != null)
                {
                    imp.ValorBaseCalculoPIS = p.ValorTotalItem;
                    imp.PercentualPIS       = Convert.ToDecimal(pis.ValorPIS);
                }

                if (cofins != null)
                {
                    imp.ValorBaseCalculoCOFINS = p.ValorTotalItem;
                    imp.PercentualCOFINS       = Convert.ToDecimal(cofins.ValorCOFINS);
                }


                if (CalcularImpostos)
                {
                    imp.ValorICMS   = Habil_Impostos.CalcularICMS(p.ValorTotalItem, imp.PercentualICMS, regICMS);
                    imp.ValorIPI    = Habil_Impostos.CalcularIPI(p.ValorTotalItem, imp.PercentualIPI);
                    imp.ValorPIS    = Habil_Impostos.CalcularPIS(p.ValorTotalItem, imp.PercentualPIS);
                    imp.ValorCOFINS = Habil_Impostos.CalcularCOFINS(p.ValorTotalItem, imp.PercentualCOFINS);
                }

                return(imp);
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao calcular impostos: " + ex.Message.ToString());
            }
        }
Ejemplo n.º 3
0
        public void Inserir(ImpostoProdutoDocumento imp)
        {
            try
            {
                ExcluirTodos(imp.CodigoDocumento, imp.CodigoProdutoDocumento);
                AbrirConexao();

                strSQL = "INSERT INTO [dbo].[IMPOSTO_PRODUTO_DOCUMENTO] (" +
                         "[CD_DOCUMENTO]," +
                         "[CD_PROD_DOCUMENTO]," +
                         "[CD_CST_ICMS]," +
                         "[VL_BC_ICMS]," +
                         "[PC_ICMS]," +
                         "[VL_ICMS]," +
                         "[VL_MVA_ENTRADA]," +
                         "[VL_MVA_SAIDA]" +
                         ",[PC_ICMS_INTERNO] " +
                         ",[VL_RED_BC_ICMS] " +
                         ",[VL_RED_BC_ICMS_INTERNO] " +
                         ",[PC_ICMS_ST], " +
                         "[CD_CST_IPI]," +
                         "[VL_BC_IPI]," +
                         "[PC_IPI]," +
                         "[VL_IPI]," +
                         "[CD_ENQUADRAMENTO_IPI]," +
                         "[CD_CST_PIS]," +
                         "[VL_BC_PIS]," +
                         "[PC_PIS]," +
                         "[VL_PIS]," +
                         "[CD_CST_COFINS]," +
                         "[VL_BC_COFINS]," +
                         "[PC_COFINS]," +
                         "[VL_COFINS]) " +
                         "VALUES (@v1,@v2,@v3,@v4,@v5,@v6,@v7,@v8,@v9,@v10,@v11,@v12,@v13,@v14,@v15,@v16,@v17,@v18,@v19,@v20,@v21,@v22,@v23,@v24,@v25)";

                Cmd = new SqlCommand(strSQL, Con);

                Cmd.Parameters.AddWithValue("@v1", imp.CodigoDocumento);
                Cmd.Parameters.AddWithValue("@v2", imp.CodigoProdutoDocumento);
                Cmd.Parameters.AddWithValue("@v3", imp.CodigoCST_ICMS);
                Cmd.Parameters.AddWithValue("@v4", imp.ValorBaseCalculoICMS);
                Cmd.Parameters.AddWithValue("@v5", imp.PercentualICMS);
                Cmd.Parameters.AddWithValue("@v6", imp.ValorICMS);
                Cmd.Parameters.AddWithValue("@v7", imp.ValorMVA_Entrada);
                Cmd.Parameters.AddWithValue("@v8", imp.ValorMVA_Saida);
                Cmd.Parameters.AddWithValue("@v9", imp.PercentualICMS_Interno);
                Cmd.Parameters.AddWithValue("@v10", imp.ValorReducaoBaseCalculoICMS);
                Cmd.Parameters.AddWithValue("@v11", imp.ValorReducaoBaseCalculoICMS_Interno);
                Cmd.Parameters.AddWithValue("@v12", imp.PercentualICMS_ST);
                Cmd.Parameters.AddWithValue("@v13", imp.CodigoCST_IPI);
                Cmd.Parameters.AddWithValue("@v14", imp.ValorBaseCalculoIPI);
                Cmd.Parameters.AddWithValue("@v15", imp.PercentualIPI);
                Cmd.Parameters.AddWithValue("@v16", imp.ValorIPI);
                Cmd.Parameters.AddWithValue("@v17", imp.CodigoEnquadramento);
                Cmd.Parameters.AddWithValue("@v18", imp.CodigoCST_PIS);
                Cmd.Parameters.AddWithValue("@v19", imp.ValorBaseCalculoPIS);
                Cmd.Parameters.AddWithValue("@v20", imp.PercentualPIS);
                Cmd.Parameters.AddWithValue("@v21", imp.ValorPIS);
                Cmd.Parameters.AddWithValue("@v22", imp.CodigoCST_COFINS);
                Cmd.Parameters.AddWithValue("@v23", imp.ValorBaseCalculoCOFINS);
                Cmd.Parameters.AddWithValue("@v24", imp.PercentualCOFINS);
                Cmd.Parameters.AddWithValue("@v25", imp.ValorCOFINS);
                Cmd.ExecuteNonQuery();
            }
            catch (SqlException ex)
            {
                if (ex.Errors.Count > 0) // Assume the interesting stuff is in the first error
                {
                    switch (ex.Errors[0].Number)
                    {
                    case 2601:     // Primary key violation
                        throw new DuplicateNameException("Inclusão não Permitida!!! Chave já consta no Banco de Dados. Mensagem :" + ex.Message.ToString(), ex);

                    case 2627:     // Primary key violation
                        throw new DuplicateNameException("Inclusão não Permitida!!! Chave já consta no Banco de Dados. Mensagem :" + ex.Message.ToString(), ex);

                    default:
                        throw new Exception("Erro ao Incluir imposto do produto do documento: " + ex.Message.ToString());
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao gravar imposto do produto do documento: " + ex.Message.ToString());
            }
            finally
            {
                FecharConexao();
            }
        }