public void pesquisarProduto() { try { SearchWindowApp searchWindow = new SearchWindowApp(typeof(ProdutoDTO), typeof(ServicoEstoque)); searchWindow.definirColunas(new string[] { "gtin", "nome", "valorVenda", "quantidadeEstoque" }); if (searchWindow.ShowDialog() == true) { produtoSelected = (ProdutoDTO)searchWindow.itemSelecionado; detalheNFe = new NFeDetalheDTO(); notifyPropertyChanged("produtoSelected"); notifyPropertyChanged("detalheNFe"); } } catch (Exception ex) { throw ex; } }
public bool importarNFe() { try { string FORMATO_DATA = "yyyy-MM-dd"; OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = "Arquivos Processados NF-e (*-procNFe.xml) | *-procNFe.xml"; dialog.Title = "Selecione a NF-e"; dialog.InitialDirectory = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); dialog.Multiselect = false; if (dialog.ShowDialog() != true) { return(false); } string path = dialog.FileName; XmlSerializer serializer = new XmlSerializer(typeof(TNfeProc)); StreamReader reader = new StreamReader(path); TNfeProc nfeProc = (TNfeProc)serializer.Deserialize(reader); nfeSelected = new NFeCabecalhoDTO(); nfeSelected.emitente = new NFeEmitenteDTO(); nfeSelected.listaDetalhe = new List <NFeDetalheDTO>(); nfeSelected.tipoOperacao = "0"; nfeSelected.codigoNumerico = nfeProc.NFe.infNFe.ide.cNF; nfeSelected.naturezaOperacao = nfeProc.NFe.infNFe.ide.natOp; nfeSelected.indicadorFormaPagamento = ((int)nfeProc.NFe.infNFe.ide.indPag).ToString(); nfeSelected.codigoModelo = nfeProc.NFe.infNFe.ide.mod.ToString().Replace("Item", ""); nfeSelected.serie = nfeProc.NFe.infNFe.ide.serie; nfeSelected.numero = nfeProc.NFe.infNFe.ide.nNF; nfeSelected.dataEmissao = DateTime.ParseExact(nfeProc.NFe.infNFe.ide.dEmi, FORMATO_DATA, CultureInfo.InvariantCulture); nfeSelected.dataEntradaSaida = DateTime.ParseExact(nfeProc.NFe.infNFe.ide.dSaiEnt, FORMATO_DATA, CultureInfo.InvariantCulture); nfeSelected.horaEntradaSaida = nfeProc.NFe.infNFe.ide.hSaiEnt; nfeSelected.tipoEmissao = nfeProc.NFe.infNFe.ide.tpEmis.ToString().Last().ToString(); nfeSelected.versaoProcessoEmissao = nfeProc.NFe.infNFe.ide.verProc; nfeSelected.finalidadeEmissao = nfeProc.NFe.infNFe.ide.finNFe.ToString().Last().ToString(); nfeSelected.digitoChaveAcesso = nfeProc.NFe.infNFe.ide.cDV; nfeSelected.chaveAcesso = nfeProc.protNFe.infProt.chNFe; nfeSelected.formatoImpressaoDanfe = nfeProc.NFe.infNFe.ide.tpImp.ToString().Replace("Item", ""); nfeSelected.ambiente = nfeProc.NFe.infNFe.ide.tpAmb.ToString().Replace("Item", ""); /*Emitente*/ nfeSelected.emitente.logradouro = nfeProc.NFe.infNFe.emit.enderEmit.xLgr; nfeSelected.emitente.numero = nfeProc.NFe.infNFe.emit.enderEmit.nro; nfeSelected.emitente.complemento = nfeProc.NFe.infNFe.emit.enderEmit.xCpl; nfeSelected.emitente.bairro = nfeProc.NFe.infNFe.emit.enderEmit.xBairro; nfeSelected.emitente.codigoMunicipio = int.Parse(nfeProc.NFe.infNFe.emit.enderEmit.cMun); nfeSelected.emitente.nomeMunicipio = nfeProc.NFe.infNFe.emit.enderEmit.xMun; nfeSelected.emitente.uf = nfeProc.NFe.infNFe.emit.enderEmit.UF.ToString(); nfeSelected.emitente.cep = nfeProc.NFe.infNFe.emit.enderEmit.CEP; nfeSelected.emitente.codigoPais = 55; nfeSelected.emitente.nomePais = "Brasil"; nfeSelected.emitente.telefone = nfeProc.NFe.infNFe.emit.enderEmit.fone; nfeSelected.emitente.crt = nfeProc.NFe.infNFe.emit.CRT.ToString().Replace("Item", ""); nfeSelected.emitente.inscricaoEstadual = nfeProc.NFe.infNFe.emit.IE; nfeSelected.emitente.inscricaoEstadualSt = nfeProc.NFe.infNFe.emit.IEST; nfeSelected.emitente.razaoSocial = nfeProc.NFe.infNFe.emit.xNome; nfeSelected.emitente.fantasia = nfeProc.NFe.infNFe.emit.xFant; nfeSelected.emitente.cpfCnpj = nfeProc.NFe.infNFe.emit.Item; nfeSelected.informacoesAddFisco = nfeProc.NFe.infNFe.infAdic.infAdFisco; nfeSelected.informacoesAddContribuinte = nfeProc.NFe.infNFe.infAdic.infCpl; using (ServicoEstoqueClient serv = new ServicoEstoqueClient()) { foreach (TNFeInfNFeDet detalhe in nfeProc.NFe.infNFe.det) { NFeDetalheDTO nfeDet = new NFeDetalheDTO(); nfeDet.gtin = detalhe.prod.cEAN; nfeDet.nomeProduto = detalhe.prod.xProd; nfeDet.valorTotal = decimal.Parse(detalhe.prod.vProd); nfeDet.valorUnitarioComercial = decimal.Parse(detalhe.prod.vUnCom); nfeDet.quantidadeComercial = decimal.Parse(detalhe.prod.qCom); nfeSelected.listaDetalhe.Add(nfeDet); List <ProdutoDTO> listaProd = serv.selectProduto(new ProdutoDTO { gtin = nfeDet.gtin }); if (listaProd != null && listaProd.Count > 0) { nfeDet.idProduto = listaProd.First().id; } else { throw new Exception("Produto não localizado, efetue o cadastramento: " + nfeDet.gtin + " - " + nfeDet.nomeProduto); } } } nfeSelected.baseCalculoIcms = decimal.Parse(nfeProc.NFe.infNFe.total.ICMSTot.vBC); nfeSelected.valorIcms = decimal.Parse(nfeProc.NFe.infNFe.total.ICMSTot.vICMS); nfeSelected.baseCalculoIcmsSt = decimal.Parse(nfeProc.NFe.infNFe.total.ICMSTot.vBCST); nfeSelected.valorIcmsSt = decimal.Parse(nfeProc.NFe.infNFe.total.ICMSTot.vST); nfeSelected.valorCofins = decimal.Parse(nfeProc.NFe.infNFe.total.ICMSTot.vCOFINS); nfeSelected.valorTotalProdutos = decimal.Parse(nfeProc.NFe.infNFe.total.ICMSTot.vProd); nfeSelected.valorFrete = decimal.Parse(nfeProc.NFe.infNFe.total.ICMSTot.vFrete); nfeSelected.valorSeguro = decimal.Parse(nfeProc.NFe.infNFe.total.ICMSTot.vSeg); nfeSelected.valorDespesasAcessorias = decimal.Parse(nfeProc.NFe.infNFe.total.ICMSTot.vOutro); nfeSelected.valorPis = decimal.Parse(nfeProc.NFe.infNFe.total.ICMSTot.vPIS); nfeSelected.valorDesconto = decimal.Parse(nfeProc.NFe.infNFe.total.ICMSTot.vDesc); nfeSelected.valorTotal = decimal.Parse(nfeProc.NFe.infNFe.total.ICMSTot.vNF); contentPresenterTabDados.Content = new NFeDados(); isSelectedTabDados = true; notifyPropertyChanged("isSelectedTabDados"); return(true); } catch (Exception ex) { throw ex; } }
public void incluirProduto(decimal quantidade) { // Cálculos serão apurados no segundo ciclo após novo levantamento de requisitos da Tributação try { if (produtoSelected == null) { throw new Exception("Selecione o produto."); } if (nfeSelected.listaDetalhe == null) { nfeSelected.listaDetalhe = 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 (ServicoEstoqueClient serv = new ServicoEstoqueClient()) { viewIcms.IdTributOperacaoFiscal = nfeSelected.TributOperacaoFiscal.Id; viewIcms.IdTributGrupoTributario = produtoSelected.TributGrupoTributario.Id; viewIcms.UfDestino = nfeSelected.destinatario.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.impostoIcms = new NfeDetalheImpostoIcmsDTO(); detalheNFe.impostoIcms.OrigemMercadoria = viewIcms.OrigemMercadoria; detalheNFe.impostoIcms.CstIcms = viewIcms.CstB; detalheNFe.impostoIcms.Csosn = viewIcms.CsosnB; detalheNFe.impostoIcms.ModalidadeBcIcms = viewIcms.ModalidadeBc; detalheNFe.impostoIcms.TaxaReducaoBcIcms = viewIcms.PorcentoBc; detalheNFe.impostoIcms.AliquotaIcms = viewIcms.Aliquota; detalheNFe.impostoIcms.ModalidadeBcIcmsSt = viewIcms.ModalidadeBcSt; detalheNFe.impostoIcms.PercentualMvaIcmsSt = viewIcms.Mva; detalheNFe.impostoIcms.PercentualReducaoBcIcmsSt = viewIcms.PorcentoBcSt; detalheNFe.impostoIcms.AliquotaIcmsSt = viewIcms.AliquotaIcmsSt; detalheNFe.impostoIcms.BaseCalculoIcms = produtoSelected.valorVenda; detalheNFe.impostoIcms.ValorIcms = (produtoSelected.valorVenda * viewIcms.Aliquota) / 100; ViewTributacaoPisDTO viewPis = new ViewTributacaoPisDTO(); using (ServicoEstoqueClient serv = new ServicoEstoqueClient()) { viewPis.IdTributOperacaoFiscal = nfeSelected.TributOperacaoFiscal.Id; viewPis.IdTributGrupoTributario = produtoSelected.TributGrupoTributario.Id; viewPis = serv.selectViewTributacaoPis(viewPis); detalheNFe.impostoPis = new NfeDetalheImpostoPisDTO(); detalheNFe.impostoPis.CstPis = viewPis.CstPis; detalheNFe.impostoPis.AliquotaPisPercentual = viewPis.AliquotaPorcento; detalheNFe.impostoPis.AliquotaPisReais = viewPis.AliquotaUnidade; detalheNFe.impostoPis.ValorBaseCalculoPis = produtoSelected.valorVenda; detalheNFe.impostoPis.ValorPis = (produtoSelected.valorVenda * viewPis.AliquotaPorcento) / 100;; } ViewTributacaoCofinsDTO viewCofins = new ViewTributacaoCofinsDTO(); using (ServicoEstoqueClient serv = new ServicoEstoqueClient()) { viewCofins.IdTributOperacaoFiscal = nfeSelected.TributOperacaoFiscal.Id; viewCofins.IdTributGrupoTributario = produtoSelected.TributGrupoTributario.Id; viewCofins = serv.selectViewTributacaoCofins(viewCofins); detalheNFe.impostoCofins = new NfeDetalheImpostoCofinsDTO(); detalheNFe.impostoCofins.CstCofins = viewCofins.CstCofins; detalheNFe.impostoCofins.AliquotaCofinsPercentual = viewCofins.AliquotaPorcento; detalheNFe.impostoCofins.AliquotaCofinsReais = viewCofins.AliquotaUnidade; detalheNFe.impostoCofins.BaseCalculoCofins = produtoSelected.valorVenda; detalheNFe.impostoCofins.ValorCofins = (produtoSelected.valorVenda * viewCofins.AliquotaPorcento) / 100;; } nfeSelected.listaDetalhe.Add(detalheNFe); atualizarNumeroItemDetalhe(); atualizarValoresNFe(); produtoSelected = null; detalheNFe = null; notifyPropertyChanged("produtoSelected"); notifyPropertyChanged("detalheNFe"); } catch (Exception ex) { throw ex; } }