예제 #1
0
        public void IncluirProduto(decimal quantidade)
        {
            // Exercício: Implemente os cálculos de imposto

            try
            {
                if (ProdutoSelected == null)
                {
                    throw new Exception("Selecione o produto.");
                }

                if (NFeSelected.ListaNfeDetalhe == null)
                {
                    NFeSelected.ListaNfeDetalhe = new List <NfeDetalheDTO>();
                }

                DetalheNFe.IdProduto               = ProdutoSelected.Id;
                DetalheNFe.CodigoProduto           = ProdutoSelected.Gtin;
                DetalheNFe.Gtin                    = ProdutoSelected.Gtin;
                DetalheNFe.ValorBrutoProduto       = quantidade * ProdutoSelected.ValorVenda;
                DetalheNFe.GtinUnidadeTributavel   = ProdutoSelected.Gtin;
                DetalheNFe.QuantidadeTributavel    = quantidade;
                DetalheNFe.ValorUnitarioTributavel = ProdutoSelected.ValorVenda;
                DetalheNFe.NomeProduto             = ProdutoSelected.Nome;
                DetalheNFe.QuantidadeComercial     = quantidade;
                DetalheNFe.ValorUnitarioComercial  = ProdutoSelected.ValorVenda;
                DetalheNFe.ValorSubtotal           = quantidade * ProdutoSelected.ValorVenda;
                DetalheNFe.ValorTotal              = quantidade * ProdutoSelected.ValorVenda;
                DetalheNFe.Ncm = ProdutoSelected.Ncm;
                DetalheNFe.UnidadeComercial  = ProdutoSelected.UnidadeProduto.Sigla;
                DetalheNFe.UnidadeTributavel = ProdutoSelected.UnidadeProduto.Sigla;

                // ICMS
                ViewTributacaoIcmsDTO viewIcms = new ViewTributacaoIcmsDTO();
                using (ServidorClient serv = new ServidorClient())
                {
                    viewIcms.IdTributOperacaoFiscal  = NFeSelected.TributOperacaoFiscal.Id;
                    viewIcms.IdTributGrupoTributario = ProdutoSelected.TributGrupoTributario.Id;
                    viewIcms.UfDestino = NFeSelected.NfeDestinatario.Uf;
                    viewIcms           = serv.SelectViewTributacaoIcms(viewIcms);

                    if (viewIcms == null)
                    {
                        throw new Exception("Não existe tributação definida para o para o produto selecionado.");
                    }
                }
                DetalheNFe.Cfop = viewIcms.Cfop;
                DetalheNFe.NfeDetalheImpostoIcms = new NfeDetalheImpostoIcmsDTO();
                DetalheNFe.NfeDetalheImpostoIcms.OrigemMercadoria  = int.Parse(viewIcms.OrigemMercadoria);
                DetalheNFe.NfeDetalheImpostoIcms.CstIcms           = viewIcms.CstB;
                DetalheNFe.NfeDetalheImpostoIcms.Csosn             = viewIcms.CsosnB;
                DetalheNFe.NfeDetalheImpostoIcms.ModalidadeBcIcms  = int.Parse(viewIcms.ModalidadeBc);
                DetalheNFe.NfeDetalheImpostoIcms.TaxaReducaoBcIcms = viewIcms.PorcentoBc;
                DetalheNFe.NfeDetalheImpostoIcms.AliquotaIcms      = viewIcms.Aliquota;
                //DetalheNFe.NfeDetalheImpostoIcms.ModalidadeBcIcmsSt = int.Parse(viewIcms.ModalidadeBcSt);
                DetalheNFe.NfeDetalheImpostoIcms.PercentualMvaIcmsSt       = viewIcms.Mva;
                DetalheNFe.NfeDetalheImpostoIcms.PercentualReducaoBcIcmsSt = viewIcms.PorcentoBcSt;
                DetalheNFe.NfeDetalheImpostoIcms.AliquotaIcmsSt            = viewIcms.AliquotaIcmsSt;
                DetalheNFe.NfeDetalheImpostoIcms.BaseCalculoIcms           = ProdutoSelected.ValorVenda;
                DetalheNFe.NfeDetalheImpostoIcms.ValorIcms = (ProdutoSelected.ValorVenda * viewIcms.Aliquota) / 100;



                ViewTributacaoPisDTO viewPis = new ViewTributacaoPisDTO();
                using (ServidorClient serv = new ServidorClient())
                {
                    viewPis.IdTributOperacaoFiscal  = NFeSelected.TributOperacaoFiscal.Id;
                    viewPis.IdTributGrupoTributario = ProdutoSelected.TributGrupoTributario.Id;
                    viewPis = serv.SelectViewTributacaoPis(viewPis);

                    DetalheNFe.NfeDetalheImpostoPis = new NfeDetalheImpostoPisDTO();

                    DetalheNFe.NfeDetalheImpostoPis.CstPis = viewPis.CstPis;
                    DetalheNFe.NfeDetalheImpostoPis.AliquotaPisPercentual = viewPis.AliquotaPorcento;
                    DetalheNFe.NfeDetalheImpostoPis.AliquotaPisReais      = viewPis.AliquotaUnidade;
                    DetalheNFe.NfeDetalheImpostoPis.ValorBaseCalculoPis   = ProdutoSelected.ValorVenda;
                    DetalheNFe.NfeDetalheImpostoPis.ValorPis = (ProdutoSelected.ValorVenda * viewPis.AliquotaPorcento) / 100;;
                }

                ViewTributacaoCofinsDTO viewCofins = new ViewTributacaoCofinsDTO();
                using (ServidorClient serv = new ServidorClient())
                {
                    viewCofins.IdTributOperacaoFiscal  = NFeSelected.TributOperacaoFiscal.Id;
                    viewCofins.IdTributGrupoTributario = ProdutoSelected.TributGrupoTributario.Id;
                    viewCofins = serv.SelectViewTributacaoCofins(viewCofins);

                    DetalheNFe.NfeDetalheImpostoCofins = new NfeDetalheImpostoCofinsDTO();

                    DetalheNFe.NfeDetalheImpostoCofins.CstCofins = viewCofins.CstCofins;
                    DetalheNFe.NfeDetalheImpostoCofins.AliquotaCofinsPercentual = viewCofins.AliquotaPorcento;
                    DetalheNFe.NfeDetalheImpostoCofins.AliquotaCofinsReais      = viewCofins.AliquotaUnidade;
                    DetalheNFe.NfeDetalheImpostoCofins.BaseCalculoCofins        = ProdutoSelected.ValorVenda;
                    DetalheNFe.NfeDetalheImpostoCofins.ValorCofins = (ProdutoSelected.ValorVenda * viewCofins.AliquotaPorcento) / 100;;
                }

                NFeSelected.ListaNfeDetalhe.Add(DetalheNFe);

                AtualizarNumeroItemDetalhe();
                AtualizarValoresNFe();

                ProdutoSelected = null;
                DetalheNFe      = null;

                notifyPropertyChanged("ProdutoSelected");
                notifyPropertyChanged("DetalheNFe");
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #2
0
        public void IncluirProduto(decimal quantidade)
        {
            // Exercício: Implemente os cálculos de imposto

            try
            {
                if (ProdutoSelected == null)
                {
                    throw new Exception("Selecione o produto.");
                }

                /*
                 * EXERCÍCIO: Analise e corrija o que for necessário.
                 *    if (NFeSelected.NFE_DETALHE == null)
                 *        NFeSelected.NFE_DETALHE = new List<NFE_DETALHE>();
                 */
                DetalheNFe.ID_PRODUTO                = ProdutoSelected.Id;
                DetalheNFe.CODIGO_PRODUTO            = ProdutoSelected.Gtin;
                DetalheNFe.GTIN                      = ProdutoSelected.Gtin;
                DetalheNFe.VALOR_BRUTO_PRODUTO       = quantidade * ProdutoSelected.ValorVenda;
                DetalheNFe.GTIN_UNIDADE_TRIBUTAVEL   = ProdutoSelected.Gtin;
                DetalheNFe.QUANTIDADE_TRIBUTAVEL     = quantidade;
                DetalheNFe.VALOR_UNITARIO_TRIBUTAVEL = ProdutoSelected.ValorVenda;
                DetalheNFe.NOME_PRODUTO              = ProdutoSelected.Nome;
                DetalheNFe.QUANTIDADE_COMERCIAL      = quantidade;
                DetalheNFe.VALOR_UNITARIO_COMERCIAL  = ProdutoSelected.ValorVenda;
                DetalheNFe.VALOR_SUBTOTAL            = quantidade * ProdutoSelected.ValorVenda;
                DetalheNFe.VALOR_TOTAL               = quantidade * ProdutoSelected.ValorVenda;
                DetalheNFe.NCM = ProdutoSelected.Ncm;
                DetalheNFe.UNIDADE_COMERCIAL  = ProdutoSelected.UnidadeProduto.Sigla;
                DetalheNFe.UNIDADE_TRIBUTAVEL = ProdutoSelected.UnidadeProduto.Sigla;

                // ICMS
                ViewTributacaoIcmsDTO viewIcms = new ViewTributacaoIcmsDTO();
                using (ServidorClient serv = new ServidorClient())
                {
                    viewIcms.IdTributOperacaoFiscal  = NFeSelected.TRIBUT_OPERACAO_FISCAL.ID;
                    viewIcms.IdTributGrupoTributario = ProdutoSelected.TributGrupoTributario.Id;
                    viewIcms.UfDestino = NFeSelected.NFE_DESTINATARIO[0].UF;
                    viewIcms           = serv.SelectViewTributacaoIcms(viewIcms);

                    if (viewIcms == null)
                    {
                        throw new Exception("Não existe tributação definida para o para o produto selecionado.");
                    }
                }
                DetalheNFe.CFOP = viewIcms.Cfop;

                /*
                 * EXERCÍCIO: Analise e corrija o que for necessário.
                 *    DetalheNFe.NFE_DETALHE_IMPOSTO_ICMS[0] = new NfeDetalheImpostoIcmsDTO();
                 */
                DetalheNFe.NFE_DETALHE_IMPOSTO_ICMS[0].ORIGEM_MERCADORIA    = int.Parse(viewIcms.OrigemMercadoria);
                DetalheNFe.NFE_DETALHE_IMPOSTO_ICMS[0].CST_ICMS             = viewIcms.CstB;
                DetalheNFe.NFE_DETALHE_IMPOSTO_ICMS[0].CSOSN                = viewIcms.CsosnB;
                DetalheNFe.NFE_DETALHE_IMPOSTO_ICMS[0].MODALIDADE_BC_ICMS   = int.Parse(viewIcms.ModalidadeBc);
                DetalheNFe.NFE_DETALHE_IMPOSTO_ICMS[0].TAXA_REDUCAO_BC_ICMS = viewIcms.PorcentoBc;
                DetalheNFe.NFE_DETALHE_IMPOSTO_ICMS[0].ALIQUOTA_ICMS        = viewIcms.Aliquota;
                //DetalheNFe.NFE_DETALHE_IMPOSTO_ICMS[0].ModalidadeBcIcmsSt = int.Parse(viewIcms.ModalidadeBcSt);
                DetalheNFe.NFE_DETALHE_IMPOSTO_ICMS[0].PERCENTUAL_MVA_ICMS_ST        = viewIcms.Mva;
                DetalheNFe.NFE_DETALHE_IMPOSTO_ICMS[0].PERCENTUAL_REDUCAO_BC_ICMS_ST = viewIcms.PorcentoBcSt;
                DetalheNFe.NFE_DETALHE_IMPOSTO_ICMS[0].ALIQUOTA_ICMS_ST  = viewIcms.AliquotaIcmsSt;
                DetalheNFe.NFE_DETALHE_IMPOSTO_ICMS[0].BASE_CALCULO_ICMS = ProdutoSelected.ValorVenda;
                DetalheNFe.NFE_DETALHE_IMPOSTO_ICMS[0].VALOR_ICMS        = (ProdutoSelected.ValorVenda * viewIcms.Aliquota) / 100;



                ViewTributacaoPisDTO viewPis = new ViewTributacaoPisDTO();
                using (ServidorClient serv = new ServidorClient())
                {
                    viewPis.IdTributOperacaoFiscal  = NFeSelected.TRIBUT_OPERACAO_FISCAL.ID;
                    viewPis.IdTributGrupoTributario = ProdutoSelected.TributGrupoTributario.Id;
                    viewPis = serv.SelectViewTributacaoPis(viewPis);

                    /*
                     * EXERCÍCIO: Analise e corrija o que for necessário.
                     *        DetalheNFe.NfeDetalheImpostoPis = new NfeDetalheImpostoPisDTO();
                     */
                    DetalheNFe.NFE_DETALHE_IMPOSTO_PIS[0].CST_PIS = viewPis.CstPis;
                    DetalheNFe.NFE_DETALHE_IMPOSTO_PIS[0].ALIQUOTA_PIS_PERCENTUAL = viewPis.AliquotaPorcento;
                    DetalheNFe.NFE_DETALHE_IMPOSTO_PIS[0].ALIQUOTA_PIS_REAIS      = viewPis.AliquotaUnidade;
                    DetalheNFe.NFE_DETALHE_IMPOSTO_PIS[0].VALOR_BASE_CALCULO_PIS  = ProdutoSelected.ValorVenda;
                    DetalheNFe.NFE_DETALHE_IMPOSTO_PIS[0].VALOR_PIS = (ProdutoSelected.ValorVenda * viewPis.AliquotaPorcento) / 100;;
                }

                ViewTributacaoCofinsDTO viewCofins = new ViewTributacaoCofinsDTO();
                using (ServidorClient serv = new ServidorClient())
                {
                    viewCofins.IdTributOperacaoFiscal  = NFeSelected.TRIBUT_OPERACAO_FISCAL.ID;
                    viewCofins.IdTributGrupoTributario = ProdutoSelected.TributGrupoTributario.Id;
                    viewCofins = serv.SelectViewTributacaoCofins(viewCofins);

                    /*
                     * EXERCÍCIO: Analise e corrija o que for necessário.
                     *            DetalheNFe.NfeDetalheImpostoCofins = new NfeDetalheImpostoCofinsDTO();
                     */
                    DetalheNFe.NFE_DETALHE_IMPOSTO_COFINS[0].CST_COFINS = viewCofins.CstCofins;
                    DetalheNFe.NFE_DETALHE_IMPOSTO_COFINS[0].ALIQUOTA_COFINS_PERCENTUAL = viewCofins.AliquotaPorcento;
                    DetalheNFe.NFE_DETALHE_IMPOSTO_COFINS[0].ALIQUOTA_COFINS_REAIS      = viewCofins.AliquotaUnidade;
                    DetalheNFe.NFE_DETALHE_IMPOSTO_COFINS[0].BASE_CALCULO_COFINS        = ProdutoSelected.ValorVenda;
                    DetalheNFe.NFE_DETALHE_IMPOSTO_COFINS[0].VALOR_COFINS = (ProdutoSelected.ValorVenda * viewCofins.AliquotaPorcento) / 100;;
                }

                NFeSelected.NFE_DETALHE.Add(DetalheNFe);

                AtualizarNumeroItemDetalhe();
                AtualizarValoresNFe();

                ProdutoSelected = null;
                DetalheNFe      = null;

                notifyPropertyChanged("ProdutoSelected");
                notifyPropertyChanged("DetalheNFe");
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }