Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        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));
        }