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