예제 #1
0
        public List <ProdutoDocumento> ListarProdutosDaOrdemDeProducao(decimal CodigoDocumento)
        {
            try
            {
                AbrirConexao();
                Cmd = new SqlCommand(" select P.*,it.*,TP.DS_TIPO AS DS_SITUACAO " +
                                     "from PRODUTO_DO_DOCUMENTO as p " +
                                     "INNER JOIN HABIL_TIPO AS TP " +
                                     "ON TP.CD_TIPO = p.CD_SITUACAO " +
                                     "inner join ITEM_DA_COMPOSICAO as it " +
                                     "on it.CD_COMPONENTE = p.CD_PRODUTO " +
                                     "Where CD_DOCUMENTO = @v1 ", Con);

                Cmd.Parameters.AddWithValue("@v1", CodigoDocumento);
                Dr = Cmd.ExecuteReader();
                List <ProdutoDocumento> lista = new List <ProdutoDocumento>();

                while (Dr.Read())
                {
                    ProdutoDocumento p = new ProdutoDocumento();

                    p.Cpl_CodigoRoteiro   = Convert.ToInt16(Dr["CD_ROTEIRO"]);
                    p.Cpl_DescRoteiro     = Convert.ToString(Dr["DS_ROTEIRO"]);
                    p.CodigoProduto       = Convert.ToInt32(Dr["CD_PRODUTO"]);
                    p.Cpl_DscProduto      = Dr["DS_PRODUTO"].ToString();
                    p.Unidade             = Dr["DS_unidade"].ToString();
                    p.PerQuebraComponente = Convert.ToDecimal(Dr["vl_pct_quebra"]);
                    p.Quantidade          = Convert.ToDecimal(Dr["QT_SOLICITADA"]);
                    p.QuantidadeAtendida  = Convert.ToDecimal(Dr["QT_ATENDIDA"]);
                    p.PrecoItem           = Convert.ToDecimal(Dr["vl_item"]);
                    p.ValorTotalItem      = Convert.ToDecimal(Dr["vl_total"]);
                    if (Dr["DT_INICIO_ROTEIRO"] != DBNull.Value)
                    {
                        p.DataInicio = Convert.ToDateTime(Dr["DT_INICIO_ROTEIRO"]);
                    }
                    if (Dr["DT_FIM_ROTEIRO"] != DBNull.Value)
                    {
                        p.DataFim = Convert.ToDateTime(Dr["DT_FIM_ROTEIRO"]);
                    }
                    p.LocalizacoaProducao = Convert.ToInt32(Dr["CD_LOC_PRODUCAO"]);
                    p.QuantidadeAtendida  = Convert.ToDecimal(Dr["QT_ATENDIDA"]);
                    p.QuantidadePendente  = Convert.ToDecimal(Dr["QT_PENDENTE"]);
                    if (Dr["CD_PROD_DOCUMENTO"] != DBNull.Value)
                    {
                        p.CodigoItem = Convert.ToInt32(Dr["CD_PROD_DOCUMENTO"]);
                    }
                    lista.Add(p);
                }
                return(lista);
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao Obter produtos da Ordem de Produção: " + ex.Message.ToString());
            }
            finally
            {
                FecharConexao();
            }
        }
예제 #2
0
        public List <ProdutoDocumento> ObterItemOrcamentoPedido(decimal CodigoDocumento)
        {
            try
            {
                AbrirConexao();
                Cmd = new SqlCommand("select PROD.*,TP.DS_TIPO AS DS_SITUACAO " +
                                     "from PRODUTO_DO_DOCUMENTO as PROD " +
                                     "INNER JOIN HABIL_TIPO AS TP ON TP.CD_TIPO = PROD.CD_SITUACAO " +
                                     "Where CD_DOCUMENTO= @v1 ", Con);

                Cmd.Parameters.AddWithValue("@v1", CodigoDocumento);
                Dr = Cmd.ExecuteReader();
                List <ProdutoDocumento> lista = new List <ProdutoDocumento>();

                while (Dr.Read())
                {
                    ProdutoDocumento p = new ProdutoDocumento();
                    p.CodigoItem         = Convert.ToInt32(Dr["CD_PROD_DOCUMENTO"]);
                    p.CodigoDocumento    = Convert.ToInt32(Dr["CD_DOCUMENTO"]);
                    p.CodigoProduto      = Convert.ToInt32(Dr["CD_PRODUTO"]);
                    p.Quantidade         = Convert.ToDecimal(Dr["QT_SOLICITADA"]);
                    p.PrecoItem          = Convert.ToDecimal(Dr["VL_ITEM"]);
                    p.Unidade            = Dr["DS_UNIDADE"].ToString();
                    p.ValorDesconto      = Convert.ToDecimal(Dr["VL_DESCONTO"]);
                    p.ValorTotalItem     = Convert.ToDecimal(Dr["VL_TOTAL"]);
                    p.QuantidadeAtendida = Convert.ToDecimal(Dr["QT_ATENDIDA"]);
                    p.Cpl_DscProduto     = Dr["DS_PRODUTO"].ToString();
                    p.Cpl_DscSituacao    = Dr["DS_SITUACAO"].ToString();
                    p.CodigoSituacao     = Convert.ToInt32(Dr["CD_SITUACAO"]);
                    p.QuantidadePendente = Convert.ToDecimal(Dr["QT_PENDENTE"]);
                    p.ValorVolume        = Convert.ToDecimal(Dr["VL_VOLUME"]);
                    p.ValorPeso          = Convert.ToDecimal(Dr["VL_PESO"]);
                    p.ValorFatorCubagem  = Convert.ToDecimal(Dr["VL_FATOR_CUBAGEM"]);

                    if (Dr["CD_PROD_DOCUMENTO"] != DBNull.Value)
                    {
                        p.CodigoItem = Convert.ToInt32(Dr["CD_PROD_DOCUMENTO"]);
                    }

                    ImpostoProdutoDocumentoDAL impDAL = new ImpostoProdutoDocumentoDAL();
                    p.Impostos = impDAL.PesquisarImpostoProdutoDocumento(p.CodigoDocumento, p.CodigoItem);
                    lista.Add(p);
                }
                return(lista);
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao Obter produtos do documento: " + ex.Message.ToString());
            }
            finally
            {
                FecharConexao();
            }
        }
예제 #3
0
        public List <ProdutoDocumento> ObterItemCotPreco(decimal CodigoDocumento)
        {
            try
            {
                AbrirConexao();
                Cmd = new SqlCommand("select PROD.*,TP.DS_TIPO AS DS_SITUACAO, M.DS_MARCA " +
                                     "from PRODUTO_DO_DOCUMENTO as PROD" +
                                     " INNER JOIN PRODUTO AS P ON P.CD_PRODUTO = PROD.CD_PRODUTO " +
                                     " INNER JOIN MARCA AS M ON P.CD_MARCA = M.CD_MARCA " +
                                     "INNER JOIN HABIL_TIPO AS TP ON TP.CD_TIPO = PROD.CD_SITUACAO " +
                                     "Where CD_DOCUMENTO= @v1 ", Con);

                Cmd.Parameters.AddWithValue("@v1", CodigoDocumento);
                Dr = Cmd.ExecuteReader();
                List <ProdutoDocumento> lista = new List <ProdutoDocumento>();

                while (Dr.Read())
                {
                    ProdutoDocumento p = new ProdutoDocumento();
                    p.CodigoDocumento = Convert.ToInt32(Dr["CD_DOCUMENTO"]);
                    p.CodigoItem      = Convert.ToInt32(Dr["CD_PROD_DOCUMENTO"]);
                    p.Cpl_DscProduto  = Dr["DS_PRODUTO"].ToString();
                    p.CodigoProduto   = Convert.ToInt32(Dr["CD_PRODUTO"]);
                    p.Quantidade      = Convert.ToDecimal(Dr["QT_SOLICITADA"]);
                    p.Unidade         = Dr["DS_UNIDADE"].ToString();
                    p.CodigoSituacao  = Convert.ToInt32(Dr["CD_SITUACAO"]);
                    p.DsMarca         = Dr["DS_MARCA"].ToString();
                    p.Cpl_DescRoteiro = Dr["OB_PROD_DOCUMENTO"].ToString();
                    lista.Add(p);
                }
                return(lista);
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao Obter produtos do documento: " + ex.Message.ToString());
            }
            finally
            {
                FecharConexao();
            }
        }
예제 #4
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());
            }
        }