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; } }
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; } }