/// <summary> /// Exportar Pedido em .txt /// </summary> /// <param name="layoutArquivoPedidos"></param> /// <returns></returns> private string ExportarPedido(LayoutArquivoPedidos layoutArquivoPedidos) { TraillerLayout trailler = new TraillerLayout(); //Gera nome do arquivo a ser exportado string arquivoExportacao = "Pedido.txt"; arquivoExportacao = arquivoExportacao.GerarNomeUnico(true); var appSettings = ConfigurationManager.AppSettings; string _diretorioExportacao = string.Format("{0}", appSettings["_diretorioExportacao"]); string _diretorioPendente = string.Format("{0}{1}", _diretorioExportacao, appSettings["_diretorioPendente"]); string _diretorioProcessado = string.Format("{0}{1}", _diretorioExportacao, appSettings["_diretorioProcessado"]); string pathArquivoPendente = string.Format("{0}{1}", _diretorioPendente, arquivoExportacao); string pathArquivoProcessado = string.Format("{0}{1}", _diretorioProcessado, arquivoExportacao); using (FileStream aFile = new FileStream(pathArquivoPendente, FileMode.Append, FileAccess.Write)) { using (StreamWriter writer = new StreamWriter(aFile)) { foreach (PedidoLayout pedido in layoutArquivoPedidos.listaPedidos) { //Gera a linha do pedido writer.WriteLine(pedido.GerarLinha()); //Lista todos os endereços do pedido List <EnderecoLayout> enderecosPedido = layoutArquivoPedidos.listaEnderecos.Where(p => p.idTiny == pedido.idTiny).ToList(); foreach (EnderecoLayout endereco in enderecosPedido) { writer.WriteLine(endereco.GerarLinha()); } //Lista todos os produtos do pedido List <ProdutoLayout> produtosPedido = layoutArquivoPedidos.listaProdutos.Where(p => p.idTiny == pedido.idTiny).ToList(); foreach (ProdutoLayout produto in produtosPedido) { writer.WriteLine(produto.GerarLinha()); } } //Gera arquivo trailler trailler.QuantidadePedidos = layoutArquivoPedidos.listaPedidos.Count.ToString(); trailler.QuantidadeProdutos = layoutArquivoPedidos.listaProdutos.Count.ToString(); writer.WriteLine(trailler.GerarLinha()); } } //remover os arquivos temporarios ao término da geração do arquivo if ((File.Exists(pathArquivoPendente))) { File.Move(pathArquivoPendente, pathArquivoProcessado); } return(arquivoExportacao); }
public string ExportarPedido(long id, string dataInicial, string dataFinal) { string idParametro = null; if (id > 0) { idParametro = id.ToString(); } PesquisarRequest filtros = new PesquisarRequest() { numero = idParametro, dataInicial = dataInicial, dataFinal = dataFinal }; PesquisarPedidos pedidoPesquisaApi = null; if (id.Equals(0) && dataInicial == null) { pedidoPesquisaApi = _bllPedidos.ListarTodos(null).FirstOrDefault(); } else { pedidoPesquisaApi = _bllPedidos.ListarTodos(filtros).FirstOrDefault(); } #region " - Pedidos - " LayoutArquivoPedidos layoutArquivoPedidos = new LayoutArquivoPedidos(); List <PedidoLayout> listaPedidos = new List <PedidoLayout>(); List <ProdutoLayout> listaProdutos = new List <ProdutoLayout>(); List <EnderecoLayout> listaEnderecos = new List <EnderecoLayout>(); if (pedidoPesquisaApi != null) { foreach (var pedido in pedidoPesquisaApi.retorno.pedidos) { try { //Se for igual a 0, ira retornar todos os pedidos ou entao retorna apenas o pedido selecionado if (id.Equals(0) || pedido.pedido.numero.Equals((int)id)) { ObterNotaFiscal notaFiscalDetalhe = _bllNotaFiscal.ObterNotaFiscalApi(pedido.pedido.id_nota_fiscal.ToString()); PedidoLayout pedidoLayout = new PedidoLayout(); pedidoLayout.idTiny = pedido.pedido.id; pedidoLayout.Numero = pedido.pedido.numero.ToString(); pedidoLayout.RazaoSocial = pedido.detalhes.retorno.pedido.cliente.nome; pedidoLayout.NomeFantasia = pedido.detalhes.retorno.pedido.cliente.nome_fantasia; pedidoLayout.Pessoa = pedido.detalhes.retorno.pedido.cliente.tipo_pessoa; if (pedido.detalhes.retorno.pedido.cliente.tipo_pessoa.Trim().ToUpper().Equals("J")) { pedidoLayout.CNPJ = pedido.detalhes.retorno.pedido.cliente.cpf_cnpj; } if (pedido.detalhes.retorno.pedido.cliente.tipo_pessoa.Trim().ToUpper().Equals("F")) { pedidoLayout.CPF = pedido.detalhes.retorno.pedido.cliente.cpf_cnpj; } pedidoLayout.IE = pedido.detalhes.retorno.pedido.cliente.ie; pedidoLayout.NumeroPedidoCliente = pedido.detalhes.retorno.pedido.numero_ordem_compra; pedidoLayout.NumeroNota = notaFiscalDetalhe.retorno.nota_fiscal.numero.ToString(); pedidoLayout.DataPedido = Convert.ToDateTime(pedido.pedido.data_pedido); pedidoLayout.ObsFaturamento = pedido.detalhes.retorno.pedido.obs; listaPedidos.Add(pedidoLayout); #region " - Produtos - " int contadorProduto = 0; foreach (var produto in pedido.detalhes.retorno.pedido.itens) { contadorProduto++; //incrementa um produto ProdutoLayout produtoLayout = new ProdutoLayout(); produtoLayout.idTiny = pedidoLayout.idTiny; produtoLayout.Item = contadorProduto.ToString(); produtoLayout.NumeroPedido = pedidoLayout.Numero; //produtoLayout.EAN = ; //<ToDo> Não localizamos o EAN var itemNota = notaFiscalDetalhe.retorno.nota_fiscal.itens.Find(p => p.item.descricao.Trim() == produto.item.descricao.Trim() && p.item.codigo.Trim() == produto.item.codigo.Trim()); if (itemNota != null) { produtoLayout.NCM = itemNota.item.ncm; } produtoLayout.CodigoProduto = produto.item.codigo; produtoLayout.DescricaoProduto = produto.item.descricao; produtoLayout.Quantidade = produto.item.quantidade.ToString(); produtoLayout.Unidade = produto.item.unidade; produtoLayout.ValorUnitarioVenda = produto.item.valor_unitario; produtoLayout.ValorUnitarioRetorno = produto.item.valor_unitario; listaProdutos.Add(produtoLayout); } #endregion #region " - Endereços - " EnderecoLayout enderecoLayout = new EnderecoLayout(); enderecoLayout.idTiny = pedidoLayout.idTiny; enderecoLayout.NumeroPedido = pedidoLayout.Numero; var cliente = pedido.detalhes.retorno.pedido.cliente; enderecoLayout.Telefone = cliente.fone; enderecoLayout.Email = cliente.email; //Endereço Principal enderecoLayout.Endereco = cliente.endereco; enderecoLayout.Numero = cliente.numero; enderecoLayout.Complemento = cliente.complemento; enderecoLayout.CEP = cliente.cep; enderecoLayout.Bairro = cliente.bairro; enderecoLayout.CodIBGE = _bllCep.ObterEnderecoCompleto(enderecoLayout.CEP).ibge; //Endereço Cobrança - repetir o endereço principal enderecoLayout.EnderecoCobranca = enderecoLayout.Endereco; enderecoLayout.NumeroCobranca = enderecoLayout.Numero; enderecoLayout.ComplementoCobranca = enderecoLayout.Complemento; enderecoLayout.CEPCobranca = enderecoLayout.CEP; enderecoLayout.BairroCobranca = enderecoLayout.Bairro; enderecoLayout.CodIBGECobranca = enderecoLayout.CodIBGE; listaEnderecos.Add(enderecoLayout); #endregion } } catch (Exception ex) //Try catch para capturar quando a API estoura as chamadas dela, e da um erro. { } } } #endregion layoutArquivoPedidos.listaPedidos = listaPedidos; layoutArquivoPedidos.listaProdutos = listaProdutos; layoutArquivoPedidos.listaEnderecos = listaEnderecos; return(this.ExportarPedido(layoutArquivoPedidos)); }