예제 #1
0
        private PesquisarPedidos PesquisaPedidosApi(PesquisarRequest filtros)
        {
            var parametros = new Dictionary <string, object>();

            if (filtros != null)
            {
                parametros = new Dictionary <string, object>
                {
                    { "cliente", filtros.cliente },
                    { "cpf_cnpj", filtros.cpf_cnpj },
                    { "dataInicial", filtros.dataInicial },
                    { "dataFinal", filtros.dataFinal },
                    { "numeroEcommerce", filtros.numeroEcommerce },
                    { "numero", filtros.numero },
                    { "idVendedor", filtros.idVendedor },
                    { "nomeVendedor", filtros.nomeVendedor }
                };
            }
            else
            {
                parametros = null;
            }

            IRestResponse response = GET_ApiTiny(MetodoApiEnum.PesquisaPedidos, parametros);

            return(JsonConvert.DeserializeObject <PesquisarPedidos>(response.Content));
        }
예제 #2
0
        public List <PesquisarNotaFiscal> ListarTodos(PesquisarRequest filtros)
        {
            var lista = new List <PesquisarNotaFiscal>();
            var pesquisaNotaFiscal = this.PesquisaNotaFiscalApi(filtros);

            //Apenas considera as NF que tenham numero de pedido/ecommerce relacionado
            pesquisaNotaFiscal.retorno.notas_fiscais = pesquisaNotaFiscal.retorno.notas_fiscais.FindAll(p => p.nota_fiscal.numero_ecommerce != null).OrderByDescending(p => p.nota_fiscal.numero_ecommerce.Value).ToList();

            //Se ocorreu sucesso na consulta a API, inclui o retorno da API na lista
            if (pesquisaNotaFiscal.retorno.status_processamento.Equals((int)StatusProcessamentoEnum.SolicitacaoProcessadaComSucesso))
            {
                //Recupera os detalhes da Nota Fiscal
                for (int i = 0; i < pesquisaNotaFiscal.retorno.notas_fiscais.Count; i++)
                {
                    pesquisaNotaFiscal.retorno.notas_fiscais[i].detalhes = this.ObterNotaFiscalApi(pesquisaNotaFiscal.retorno.notas_fiscais[i].nota_fiscal.id.ToString());

                    //Se ocorreu algum erro na consulta do detalhe da NF via API, seta o erro para ser exibido em tela
                    if (!pesquisaNotaFiscal.retorno.notas_fiscais[i].detalhes.retorno.status_processamento.Equals((int)StatusProcessamentoEnum.SolicitacaoProcessadaComSucesso))
                    {
                        foreach (var itemErro in pesquisaNotaFiscal.retorno.notas_fiscais[i].detalhes.retorno.erros)
                        {
                            pesquisaNotaFiscal.retorno.erros.Add(itemErro);
                        }
                    }
                }
            }

            lista.Add(pesquisaNotaFiscal);

            return(lista);
        }
예제 #3
0
        public List <PesquisarPedidos> ListarTodos(PesquisarRequest filtros)
        {
            var lista          = new List <PesquisarPedidos>();
            var pesquisaPedido = this.PesquisaPedidosApi(filtros);

            //Se ocorreu sucesso na consulta a API, inclui o retorno da API na lista
            if (pesquisaPedido.retorno.status_processamento.Equals((int)StatusProcessamentoEnum.SolicitacaoProcessadaComSucesso))
            {
                //Recupera os detalhes do pedido
                for (int i = 0; i < pesquisaPedido.retorno.pedidos.Count; i++)
                {
                    pesquisaPedido.retorno.pedidos[i].detalhes = this.ObterPedidoApi(pesquisaPedido.retorno.pedidos[i].pedido.id.ToString());
                }
            }

            lista.Add(pesquisaPedido);

            return(lista);
        }
예제 #4
0
        private PesquisarNotaFiscal PesquisaNotaFiscalApi(PesquisarRequest filtros)
        {
            var parametros = new Dictionary <string, object>();

            if (filtros != null)
            {
                parametros = new Dictionary <string, object>
                {
                    { "numero", filtros.numero },
                    { "tipoNota", "S" }, //Apenas NF de Saída
                    { "dataInicial", filtros.dataInicial },
                    { "dataFinal", filtros.dataFinal },
                    { "numeroEcommerce", filtros.numeroEcommerce }
                };
            }
            else
            {
                parametros = null;
            }

            IRestResponse response = GET_ApiTiny(MetodoApiEnum.PesquisaNotaFiscal, parametros);

            return(JsonConvert.DeserializeObject <PesquisarNotaFiscal>(response.Content));
        }
예제 #5
0
        public string ExportarNotaFiscal(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
            };

            PesquisarNotaFiscal pesquisarNotaFiscalAPI = null;

            if (id.Equals(0) && dataInicial == null)
            {
                pesquisarNotaFiscalAPI = _bllNotaFiscal.ListarTodos(null).FirstOrDefault();
            }
            else
            {
                pesquisarNotaFiscalAPI = _bllNotaFiscal.ListarTodos(filtros).FirstOrDefault();
            }

            #region " - Notas Fiscais - "

            List <NotaFiscalLayout> listaNotaFiscal = new List <NotaFiscalLayout>();

            if (pesquisarNotaFiscalAPI != null)
            {
                foreach (var notaFiscal in pesquisarNotaFiscalAPI.retorno.notas_fiscais)
                {
                    try
                    {
                        NotaFiscalLayout notaFiscalLayout = new NotaFiscalLayout();
                        //notaFiscalLayout.idTiny = notaFiscal.detalhes.retorno.nota_fiscal.id;

                        if (notaFiscal.detalhes.retorno.status_processamento.Equals((int)StatusProcessamentoEnum.SolicitacaoProcessadaComSucesso))
                        {
                            notaFiscalLayout.nr_pedido            = notaFiscal.detalhes.retorno.nota_fiscal.numero_ecommerce.ToString();
                            notaFiscalLayout.nr_cnpj_remetente    = notaFiscal.detalhes.retorno.nota_fiscal.cliente.cpf_cnpj;
                            notaFiscalLayout.nr_cnpj_destinatario = notaFiscal.detalhes.retorno.nota_fiscal.cliente.cpf_cnpj;
                            notaFiscalLayout.nr_ie           = notaFiscal.detalhes.retorno.nota_fiscal.cliente.ie;
                            notaFiscalLayout.nm_razao_social = notaFiscal.detalhes.retorno.nota_fiscal.cliente.nome;
                            notaFiscalLayout.ds_endereco     = notaFiscal.detalhes.retorno.nota_fiscal.cliente.endereco;
                            notaFiscalLayout.nr_numero       = notaFiscal.detalhes.retorno.nota_fiscal.cliente.numero;
                            notaFiscalLayout.ds_complemento  = notaFiscal.detalhes.retorno.nota_fiscal.cliente.complemento;
                            notaFiscalLayout.ds_bairro       = notaFiscal.detalhes.retorno.nota_fiscal.cliente.bairro;
                            notaFiscalLayout.ds_cidade       = notaFiscal.detalhes.retorno.nota_fiscal.cliente.cidade;
                            notaFiscalLayout.ds_uf           = notaFiscal.detalhes.retorno.nota_fiscal.cliente.uf;
                            notaFiscalLayout.ds_cep          = notaFiscal.detalhes.retorno.nota_fiscal.cliente.cep;
                            notaFiscalLayout.codigo_IBGE     = _bllCep.ObterEnderecoCompleto(notaFiscalLayout.ds_cep).ibge;
                            notaFiscalLayout.nr_telefone     = notaFiscal.detalhes.retorno.nota_fiscal.cliente.fone;
                            notaFiscalLayout.nr_chave_acesso = notaFiscal.detalhes.retorno.nota_fiscal.chave_acesso;
                            notaFiscalLayout.vl_declarado_nf = notaFiscal.detalhes.retorno.nota_fiscal.valor_produtos.ToString();
                            notaFiscalLayout.nr_qtde_teorico = notaFiscal.detalhes.retorno.nota_fiscal.quantidade_volumes.ToString();
                            notaFiscalLayout.nr_peso_teorico = notaFiscal.detalhes.retorno.nota_fiscal.peso_bruto.ToString();
                            notaFiscalLayout.dt_inicio       = notaFiscal.detalhes.retorno.nota_fiscal.data_emissao;
                            notaFiscalLayout.dt_previsao     = string.Format("{0} {1}", notaFiscal.detalhes.retorno.nota_fiscal.data_saida, notaFiscal.detalhes.retorno.nota_fiscal.hora_saida);
                            notaFiscalLayout.nm_solicitante  = notaFiscal.detalhes.retorno.nota_fiscal.nome_vendedor;
                            notaFiscalLayout.Nr_Nota         = string.Format("{0}/{1}", notaFiscal.detalhes.retorno.nota_fiscal.numero.ToString(), notaFiscal.detalhes.retorno.nota_fiscal.serie.ToString());
                        }
                        else
                        {
                            notaFiscalLayout.nr_pedido = notaFiscal.detalhes.retorno.erros.FirstOrDefault().erro;
                        }

                        listaNotaFiscal.Add(notaFiscalLayout);
                    }
                    catch (Exception ex) //Try catch para capturar quando a API estoura as chamadas dela, e da um erro.
                    {
                    }
                }
            }
            else
            {
                NotaFiscalLayout notaFiscalLayout = new NotaFiscalLayout();
                notaFiscalLayout.nr_pedido = pesquisarNotaFiscalAPI.retorno.erros.FirstOrDefault().erro;
                listaNotaFiscal.Add(notaFiscalLayout);
            }

            #endregion

            return(this.ExportarNotaFiscal(listaNotaFiscal));
        }
예제 #6
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));
        }