public dynamic EnviarDadosTiny(DadosTiny dadosEnviarTiny) { Console.WriteLine("Enviando pedido: {0} na Tiny", dadosEnviarTiny.numero_pedido_ecommerce); try { XmlSerializer serializer = new XmlSerializer(typeof(DadosTiny)); // create a MemoryStream here, we are just working // exclusively in memory System.IO.Stream stream = new System.IO.MemoryStream(); // The XmlTextWriter takes a stream and encoding // as one of its constructors System.Xml.XmlTextWriter xtWriter = new System.Xml.XmlTextWriter(stream, Encoding.UTF8); serializer.Serialize(xtWriter, dadosEnviarTiny); xtWriter.Flush(); // go back to the beginning of the Stream to read its contents stream.Seek(0, System.IO.SeekOrigin.Begin); // read back the contents of the stream and supply the encoding System.IO.StreamReader reader = new System.IO.StreamReader(stream, Encoding.UTF8); var xmlEnvio = reader.ReadToEnd(); var client = new TinyService.tinywsdlPortTypeClient(); //var ret = client.incluirPedidoServiceAsync(TokenTiny, dadosEnviarTiny, "JSON"); var ret = client.incluirPedidoService(TokenTiny, xmlEnvio, "XML"); client.Close(); return(ObjectToXML(ret, typeof(Retorno))); } catch (Exception e) { Console.WriteLine(e); throw; } /* * XmlSerializer serializer = new XmlSerializer(typeof(DadosTiny)); * * System.IO.StringWriter sWriter = new System.IO.StringWriter(); * * serializer.Serialize(sWriter, dadosEnviarTiny); * sWriter.Flush(); * * string xmlEnvio = sWriter.ToString(); * * //var xmlEnvio = GetXMLFromObject(dadosEnviarTiny); * var client = new TinyService.tinywsdlPortTypeClient(); * //var ret = client.incluirPedidoServiceAsync(TokenTiny, dadosEnviarTiny, "JSON"); * var ret = client.incluirPedidoService(TokenTiny, xmlEnvio, "XML"); * return ret; */ }
public void BuscarDadosNaCeC2() { Console.WriteLine("\nBuscando pedidos na C&C"); var totalPedidosIntegrados = 0; var totalPedidosComErros = 0; var qtdDePedidos = 0; var ctrTiny = new ControleTiny(); var result = new CeCService.PedidoCompraFornecedoresSoapClient(); var res = result.ListarPedidosNaoVisualizados(Login, Senha).pedidos; result.Close(); if (res.Length < 1) { Console.Clear(); Console.WriteLine("\nNenhum pedido foi encontrado na base de dados da C&C!\n"); Console.WriteLine("Total de pedidos: {0}.", totalPedidosIntegrados + totalPedidosComErros); Console.WriteLine("Total de pedidos integrados: {0}.", totalPedidosIntegrados); Console.WriteLine("Total de pedidos com erros na integração: {0}.", totalPedidosIntegrados); Console.WriteLine("\nPressione qualquer tecla para voltar ao menu principal."); return; } foreach (var pedido in res) { ++qtdDePedidos; if (qtdDePedidos > 20) { Thread.Sleep(60000); Console.WriteLine("Tempo de espera acionado devido a Limites da API...\n O processo vai continuar a depois de 1 minuto!"); Console.WriteLine(); qtdDePedidos = 0; } Console.WriteLine("Processando pedido vindo da C&C número: {0}.", pedido.header.numpedidoantigo); var listaItens = pedido.itens.Select(pedidoIten => new Item { codigo = pedidoIten.codproddf, descricao = pedidoIten.descricao, quantidade = pedidoIten.qtde, unidade = pedidoIten.unidmaior, valor_unitario = pedidoIten.precounit, }) .ToList(); var clienteTemp = new Cliente { bairro = "", atualizar_cliente = "N", cep = pedido.header.filialentrega.endereco.cep, cidade = pedido.header.filialentrega.endereco.municipio, codigo = "", complemento = "", cpf_cnpj = pedido.header.filialentrega.cgccpf, endereco = pedido.header.filialentrega.endereco.ender, fone = pedido.header.filialentrega.fone, ie = pedido.header.filialentrega.ie, nome = pedido.header.filialfatura.nomeloja, nome_fantasia = pedido.header.filialfatura.nomeloja, numero = "", rg = "", tipo_pessoa = "J", uf = pedido.header.filialentrega.endereco.uf }; var dadosTiny = new DadosTiny { data_pedido = (pedido.header.dataemissao).ToString("d"), data_prevista = (pedido.header.dataentrega).ToString("d"), cliente = clienteTemp, items = listaItens, nome_transportador = "", forma_pagamento = "", frete_por_conta = "", valor_frete = "", valor_desconto = "", numero_ordem_compra = pedido.header.numpedidoantigo, numero_pedido_ecommerce = pedido.header.numpedidoantigo, situacao = "", obs = "", forma_envio = "", forma_frete = "", }; var ret = ctrTiny.EnviarDadosTiny(dadosTiny); if (ret.status.ToUpper() == "ERRO") { if (ret.codigo_erro == 2) { Console.WriteLine("Verifique o token usado na conexão com Tiny ERP."); } else { ConfirmarRecebimentoPedido2(pedido.header.numpedidoantigo, true); ++totalPedidosComErros; Console.WriteLine("Pedido vindo da C&C nº: {0}, nao foi integrado pelo motivo abaixo:\n{1}", pedido.header.numpedidoantigo, ret.registros.registro.erros.erro || ret.erro); } } else { try { ConfirmarRecebimentoPedido2(pedido.header.numpedidoantigo, true); ++totalPedidosIntegrados; Console.WriteLine("Pedido integrado com sucesso!\nNumero do pedido gerado pelo tiny: {0}", ret.registros.registro.numero); } catch (Exception e) { Console.WriteLine(e); throw; } } Console.WriteLine("-----------------------------------------------"); } Console.Clear(); Console.WriteLine("Total de pedidos: {0}.", totalPedidosIntegrados + totalPedidosComErros); Console.WriteLine("Total de pedidos integrados: {0}.", totalPedidosIntegrados); Console.WriteLine("Total de pedidos com erros na integração: {0}.", totalPedidosIntegrados); Console.WriteLine("\nPressione qualquer tecla para voltar ao menu principal."); return; }