Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Fábio BN

Calcular todos os Fretes de uma só Vez.

Recommended Posts

Oi Pessoal.

 

Eu ja vi Lojas Virtuais que conseguem calcular o preço dos fretes todos de uma só vez, trazendo os resultados todos juntos numa mesma tela.

Exemplo:

- Sedex 10

- Encomenda Normal

- PAC

- E-Sedex

 

Eu já sei como calcular um de cada vez alterando o código do serviço, mas eu já tentei de tudo que eu sabia para tentar calcular todos de uma só vez e trazer os dados na tela, mas não consegui.

 

Será que alguém sabe como calcular todos de uma só vez pela consulta na base de dados dos Correios?

 

Abraços - Fábio

fabiobal@uol.com.br

Compartilhar este post


Link para o post
Compartilhar em outros sites

como está seu codigo?

Meu Código está assim:

ASP
<%

if request.form("tipo_postagem") = "sedex" then

session("tipo_de_postagem") = request.form("tipo_postagem")

response.redirect "http://www.correios.com.br/encomendas/precos/calculo.cfm?cepOrigem=00000000&cepDestino="&cep&"&peso=0.400&resposta=http://www.meusite.com.br/tabela_frete.asp"

else

session("tipo_de_postagem") = request.form("tipo_postagem")

response.redirect "http://www.correios.com.br/encomendas/precos/calculo.cfm?resposta=http://www.meu.com.br/tabela_frete.asp&servico=41017&cepOrigem=00000000&cepDestino="&cep&"&peso=0.400&Formato=1&Comprimento=30&Largura=21&Altura=12&MaoPropria=n&valorDeclarado=&avisoRecebimento=N"

end if

end if

%>

 

- Eu queria saber se tem como em um único POST trazer tanto a encomenda normal quanto o Sedex ao mesmo tempo, e se possível os outros serviços.

- Pois no meu código, se você perceber, se o usuário tiver selecionado Encomenda Normal, ele só traz a encomenda normal, e se tiver selecionado o Sedex, ele só trás o Sedex.

- Se você souber como fazer para o Site do Correios retornar todos os tipos de postagens em um só post, eu agradeço.

 

Abraços - Fábio

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem alguns jeitos....

 

você pode durante o postback fzr varios outros posts pro site dos correios usando um objeto que chama AspHTTP (http://www.serverobjects.com/comp/asphttp3.htm).

 

OrElse...

 

você pode pegar esses valores via ajax assim q a página for carregada (eu preferiria a 1ª forma).

 

Or Ainda...

 

fzr uma gambi master e dar 3 postbacks e em cada 1 pegar um valor e ir guardando na session (q medo...) depois mostrar. (desaconselho mas se nao tiver outro jeito ja era ;)

 

espero ter t ajudado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi.

Essa de fazer 3 posts e guardar em session, eu já tentei, eu quase consegui mas entrou num Loop Infinito, mas eu acho que se eu quebrasse a cabeça + um pouco eu teria conseguido, mas vou continuar tentando, acho que uma hora eu consigo.

 

Abraços!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

essa url dos correios não tem o codigo do serviço, você precisa de algo assim:

ASP
if loja("utilizar_encomenda")="Sim" then

'41017 - Encomenda Normal

 url_correios = "http://www.correios.com.br/encomendas/precos/calculo.cfm?servico=41017&cepDestino="& session("PesoTotalCep") &"&CepOrigem="& loja("cep") &"&peso="& Session("PesoTotalFrete") &""

 Set objXMLHTTP = CreateObject("Microsoft.XMLHTTP")

 objXMLHTTP.open "post", url_correios,false

 objXMLHTTP.send

 ValorBox = objXMLHTTP.responseText

 set objXMLHTTP = nothing

 p = right(valorbox,len(valorbox)-instr(valorbox,"Tarifa"))

 s = right(p,len(p)-instr(p,"Tarifa"))

 enc = replace(replace(left(right(s,len(s)-6),5),"&",""),".",",")

 enc = replace(enc, "e", "")

   enc = replace(enc, "r", "")

     enc = replace(enc, "a", "")

       enc = replace(enc, "u", "")

         enc = replace(enc, "i", "")

 

 if enc = "0rr" then

 session("frete_encomenda") = "nao"

 else

 session("frete_encomenda") = enc

 end if

end if

 

if loja("utilizar_sedex")="Sim" then

'40010 = Sedex Convencional

 

  url_correios="http://www.correios.com.br/encomendas/precos/calculo.cfm?Servico=40010&CepDestino="& session("PesoTotalCep") &"&CepOrigem="& loja("cep") &"&Peso="& Session("PesoTotalFrete") &"&ValorDeclarado="& Replace(session("vcCalculoCorreios"), ".", "") &"&MaoPropria="& mao_propria_correios

   

  Set objXMLHTTP = CreateObject("Microsoft.XMLHTTP")

  objXMLHTTP.open "post", url_correios,false

 

  objXMLHTTP.send

  ValorBox = objXMLHTTP.responseText

  set objXMLHTTP = nothing

 

  p = right(valorbox,len(valorbox)-instr(valorbox,"Tarifa"))

  s = right(p,len(p)-instr(p,"Tarifa"))

  enc = replace(replace(left(right(s,len(s)-6),5),"&",""),".",",")

  enc = replace(enc, "e", "")

  enc = replace(enc, "r", "")

  enc = replace(enc, "a", "")

  enc = replace(enc, "u", "")

  enc = replace(enc, "i", "")

 session("Frete_sedex") = enc

end if

 

if loja("sedex_10")="Sim" then

 'Opção de SEDEX 10

 '40215 = Sedex 10

  url_correios="http://www.correios.com.br/encomendas/precos/calculo.cfm?Servico=40215&CepDestino="& session("PesoTotalCep") &"&CepOrigem="& loja("cep") &"&Peso="& Session("PesoTotalFrete") &"&AvisoRecebimento=n&ValorDeclarado="& Replace(session("vcCalculoCorreios"), ".", "") &"&MaoPropria="& mao_propria_correios

 

  Set objXMLHTTP = CreateObject("Microsoft.XMLHTTP")

  objXMLHTTP.open "get", url_correios,false  

  objXMLHTTP.send

  ValorBox = objXMLHTTP.responseText

  set objXMLHTTP = nothing

  p = right(valorbox,len(valorbox)-instr(valorbox,"Tarifa"))

  s = right(p,len(p)-instr(p,"Tarifa"))

  enc = replace(replace(left(right(s,len(s)-6),5),"&",""),".",",")

  enc = replace(enc, "e", "")

  enc = replace(enc, "r", "")

  enc = replace(enc, "a", "")

  enc = replace(enc, "u", "")

  enc = replace(enc, "i", "")

  session("Frete_sedex_10") = enc

end if

 

if loja("sedex_cobrar")="Sim"  then

 'Opção de SEDEX À COBRAR

 '40045 = Sedex à cobrar

  url_correios="http://www.correios.com.br/encomendas/precos/calculo.cfm?Servico=40045&CepDestino="& session("PesoTotalCep") &"&CepOrigem="& loja("cep") &"&Peso="& Session("PesoTotalFrete") &"&AvisoRecebimento=n&ValorDeclarado="& Replace(session("vcCalculoCorreios"), ".", "") &"&MaoPropria="& mao_propria_correios

 

  Set objXMLHTTP = CreateObject("Microsoft.XMLHTTP")

  objXMLHTTP.open "post", url_correios,false

 

  objXMLHTTP.send

  ValorBox = objXMLHTTP.responseText

  set objXMLHTTP = nothing

  primeira_tarifa = right(valorbox,len(valorbox)-instr(valorbox,"Tarifaz"))

  segunda_tarifa = right(primeira_tarifa,len(primeira_tarifa)-instr(primeira_tarifa,"Tarifa"))

  p = right(valorbox,len(valorbox)-instr(valorbox,"Tarifa"))

  s = right(p,len(p)-instr(p,"Tarifa"))

  enc = replace(replace(left(right(s,len(s)-6),5),"&",""),".",",")

  enc = replace(enc, "e", "")

  enc = replace(enc, "r", "")

  enc = replace(enc, "a", "")

  enc = replace(enc, "u", "")

  enc = replace(enc, "i", "")

if final_sedex_cobrar = "d"",""p" or final_sedex_cobrar = "0err" then

  session("Frete_sedex_cobrar") = 0

 else

  session("Frete_sedex_cobrar") =  enc

end if

Divirtam-se

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi, tudo bem?

 

Jonathan Cardozo, eu vi o código, parece ser bom.

Mas vou tentar fazer sem usar o objXMLHTTP pra ver se fica mais fácil, talvez eu consiga no esquema de fazer 3 posts comuns e guardar o retorno em sessions, não é?

 

Vou tentar, mas qualquer coisa se eu não conseguir, tento esse seu código.

 

Obrigado - Fábio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.