NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!

UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI

Você está em: PrincipalArtigosProgweb : Freteinternacional
Quer receber novidades e e-books gratuitos?

ASP – Cálculo de Frete Internacional com ASP e Access

 

Objetivo:

 

O objetivo deste tutorial é habilitar o cálculo de frete para exportações, direto no seu website. Utilizamos uma tabela oficial dos Correios com os valores de envio, atualizados até novembro de 2013.

 

Pré-requisito:

 

Para você poder acompanhar o desenvolvimento deste tutorial, será necessário ter conhecimento mínimo de lógica de programação e programação ASP clássica (estruturada).

 

Nota:

 

Para baixar os arquivos deste tutorial, clique aqui.

 

Para começar, verifique o arquivo index.asp. Nele é criada a conexão com o banco CorreiosInternacional.mdb, e feita uma query para buscar os países, como abaixo:

<%Set conn = server.CreateObject("ADODB.Connection") conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("\intranet\dados\CorreiosInternacional.mdb")
Set Rs = conn.Execute("SELECT * FROM paises ORDER BY pais")
%>

 

Depois iniciamos o formulário que vai chamar o nosso include de cálculo. Note que existe, dentro do formulário, um campo hidden chamado "p", simplesmente. Ele traz o peso do produto via GET, POST, ou um valor fixo, se preferir. A mesma coisa com o formulário, se desejar usar POST ou manter o GET:

<form action="" method="get" name="frete">
<input type="hidden" name="p" value="<%= request("p") %>">

 

Agora faremos a listagem dos países disponíveis através do campo <select>:

<select name="pais" size="1" onChange="this.form.submit();">

 

Utilizando um loop while dentro deste <select>, traremos os países com suas respectivas siglas (3 caracteres):

<% While NOT Rs.EOF %>
<option value="<%= Rs("sigla") %>"><%= Rs("pais") %></option>
<% Rs.MoveNext Wend %>

 

* Note que o <select> possui um valor onchange, ou seja, quando um valor for escolhido, o formulário será submetido.

 

Agora faremos a verificação de se o formulário foi ou não enviado, usando o if:

<% if request("pais") <> "" then %>

 

Se for verdadeiro, ele trará o seguinte include:

<!--#INCLUDE VIRTUAL="/includes/ws_correios_exterior.asp"-->

 

* Lembre de modificar o caminho do seu include, prefira utilizar o VIRTUAL ao FILE, pois ele pode trazer problemas e arrancamento de cabelos desnecessários.

 

Agora, vamos chamar a função Exportar(sigla,peso):

<%= Exportar(request("pais"),request("p")) %>

 

Veja que estou usando somente request() e não request.querystring ou request.form. Assim não há problemas caso você mude o protocolo de envio do formulário.

 

* Se desejar, você pode adicionar uma validação, mas dentro da função já faremos isto.

 

O arquivo ws_correios_exterior.asp, que contém a função Exportar(sigla,peso):

<% Session.LCID = 1046 Session.Timeout = 1400 response.buffer = true

Function Exportar(cnt,wgt) Dim margem : margem = 15 'porcentagem do lojista (por segurança, pois o cálculo é estimado) - 0 para não calcular Dim porc : porc = 1 'porcentagem a adicionar caso o peso seja maior que 5kg Dim peso : peso = replace(wgt,",",".") 'pega o peso vindo da página, se tiver formato BR troca vírgula por ponto Dim sigla : sigla = replace(left(cnt,3),"'","") 'substr pra garantir que só pegue 3 caracteres, e invalida injection

'arredonda o peso por causa dos envios (tenta até 5kg; acima disso, adiciona % ao total) if peso < "0.5" then peso = "0.5" elseif peso > "0.5" and peso < "1" then peso = 1 elseif peso > "1.1" and peso < "2" then peso = 2 elseif peso > "2.1" and peso < "3" then peso = 3 elseif peso > "3.1" and peso < "4" then peso = 4 elseif peso > "4.1" and peso < "5" then peso = 5 end if

'pega os dados do país de acordo com a sigla internacional trazida (3 letras) Set Rs = conn.Execute("SELECT * FROM paises WHERE sigla = '"&sigla&"'")

'passa pelos modos de envio e verifica quais podem ser usados Set Val = conn.Execute("SELECT * FROM valores WHERE
(grupo = "&Rs("grupo_ems")&" AND tipo_envio = 'EMS') OR (grupo = "&Rs("grupo_leve")&" AND tipo_envio = 'LEVE') OR (grupo = "&Rs("grupo_econ")&" AND tipo_envio = 'ECON')")

response.write "<p>Valor do frete de "&peso&"kg para: <b>"&Rs("pais")&"</b>, capital:</p>" response.write "<table align=center width='93%' border=0 cellspacing=5 cellpadding=5>" response.write "<tr>" While NOT Val.EOF pp = Val("valor_"&replace(peso,".","")) 'se for peso quebrado, tira a pontuação pra = Val("prazo_envio") tip = Val("tipo_envio")

'se o peso estiver fora do arredondamento acima, adiciona o % ao total if peso > 5 then pp = pp + (porc/100) * pp end if

'se o valor for real, exibe o modo if pp <> 0 then 'se tiver margem do lojista, adiciona ao total if margem <> 0 then pp = pp + (margem/100)*pp end if

%><td align="center" width="33%"><p>Via <b><%= tip %>:</b><br><%= FormatCurrency(pp) %><br>(<a title="Prazo estimado!" style="cursor:help"><%= pra %> dias &uacute;teis</a>)<br><input type="radio" name="frete" onClick="window.location='carrinho.asp?frete=<%= tip %>|<%= pp %>|<%= pra %>';"></p></td> <%

end if Val.MoveNext Wend response.write "</tr>" response.write "</table>" End Function %>

 

Conclusão:

 

Este tutorial é um básico sistema de cálculo de frete para o exterior. Ele utiliza valores pré-definidos em um banco de dados Access, e com certeza pode ser melhorado. Espero que sirva de início para um código que pode ser bastante difundido. Bons estudos e até o próximo, onde explicarei como fazer o cálculo de frete dinâmico para dentro do país, usando seu CEP.

Autor: Dimas Pante

www.dimaspante.com.br

Untitled Document
ASP BÁSICO
1 Cálculo de Frete Internacional com ASP e Access
1 Sistema de Login com ASP 3.0 usando três camadas – Parte 1
1 Sistema de Login com ASP 3.0 usando três camadas – Parte 2
1 Sistema de Login com ASP 3.0 usando três camadas – Parte 3
1 Sistema de Login com ASP 3.0 usando três camadas – Parte 4
1 Sistema de Login com ASP 3.0 usando três camadas – Parte 5
1 Sistema de Login com ASP 3.0 usando três camadas – Parte 6
1 Sistema de Login com ASP 3.0 usando três camadas – Parte 7
1 Sistema de Login com ASP 3.0 usando três camadas – Parte 8
1 Sistema de Login com ASP 3.0 usando três camadas – Parte 9
1 Sistema de Login com ASP 3.0 usando três camadas – Parte 10
1 ASP 3.0 utilizando 3 camadas - Parte 1
1 ASP 3.0 utilizando 3 camadas - Parte 2
1 ASP 3.0 utilizando 3 camadas - Parte 3
COLDFUSION
1 Criando um formulário em Flash usando o ColdFusion MX 7
FLASH - ACTIONSCRIPT
1 Movimentar objeto – Parte 01
1 Movimentar objeto – Parte 02
1 Jogo – Acerte o Alvo
1 Como Movimentar um Objeto utilizando Botões
1 Exibir frases Aleatórias
1 Ações Básicas do ActionScript
1 Criando Botões com MovieClip no Flash
1 Criando Links em Botões Flash
1 Integrando Flash com Fireworks na Criação de Botões
1 Interpolação Motion (Movimento)
1 Interpolação Shape (Forma)
1 Principais Eventos do Mouse (Flash/ActionScript)
1 Criando Máscaras no Flash (Mask) Parte 1
1 Criando Máscaras no Flash (Mask) Parte 2
1 Galeria de Fotos Carregando Arquivos Externos (Flash e ActionScript)
PHP BÁSICO
1 Introdução ao PHP
1 Lógica em PHP
1 Trabalhando com Formulários HTML
1 Utilizando Arquivos – Criando um Scrap Book
1 Banco de Dados em Arquivos Texto
1 PHP - Sistema de busca de preços - Parte 1
1 PHP - Sistema de busca de preços - Parte 2
1 PHP - Sistema de busca de preços - Parte 3
1 PHP - Sistema de busca de preços - Parte 4
1 PHP - Sistema de busca de preços - Parte Final
1 Primeiros Scripts
1 Guardando dados em memória
1 Um pouco mais sobre variáveis
1 Manipulando variáveis
1 Estruturas de controle - Parte 1
1 Estruturas de controle - Parte 2
1 Estruturas de controle - Parte 3
1 Estruturas de controle - Parte 4
1 Estruturas de controle - Parte 5
1 Criação de Funções no PHP
1 Funções – Um pouco mais Sobre Parâmetros - Parte 1
1 Funções – Um pouco mais Sobre Parâmetros - Parte 2
1 Funções – Alguns Truques
1 Funções – Últimos Truques
1 Arrays – Noções Básicas
1 Arrays – Um pouco Mais Sobre Criação de Arrays
PHP COM BANCO DE DADOS
1 Criando um Sistema Ficha Cadastral Clientes - Parte 1
1 Criando um Sistema Ficha Cadastral Clientes - Parte 2
1 Criando um Sistema Ficha Cadastral Clientes - Parte Final
1 Controle Horarios Funcionários - Parte 1
1 Controle Horarios Funcionários - Parte 2
1 Controle Horarios Funcionários - Parte 3
1 Controle Horarios Funcionários - Parte 4
1 Controle Horarios Funcionários - Parte 5
1 Controle Horarios Funcionários - Parte 6
1 Controle Horarios Funcionários - Parte 7
1 Controle Horarios Funcionários - Parte 8
1 Controle Horarios Funcionários - Parte 9
1 Controle Horarios Funcionários - Parte 10
1 Controle Horarios Funcionários - Parte 11
1 Controle Horarios Funcionários - Parte 12
1 Controle Horarios Funcionários - Parte 13 - Conclusão
1 Instalando o PHP no Windows XP
1 Instalando o MySQL no Windows XP
1 Sistema Controle Extintores -Parte 1
1 Sistema Controle Extintores -Parte 2
1 Sistema Controle Extintores -Parte 3
1 Sistema Controle Extintores -Parte 4
1 Sistema Controle Extintores -Parte 5
1 Sistema Controle Extintores -Parte - Conclusão
1 PHP - Controle dos Correios - Parte 1
1 PHP - Controle dos Correios - Parte 2
1 PHP - Controle dos Correios - Parte 3
1 PHP - Controle dos Correios - Parte 4
1 PHP - Controle dos Correios - Parte 5
1 PHP - Controle dos Correios - Parte 6
1 Sistema Para Controle do IMC - Índice de Massa Corporal - Parte 1
1 Sistema Para Controle do IMC - Índice de Massa Corporal - Parte 2
1 Sistema Para Controle do IMC - Índice de Massa Corporal - Parte 3
1 Sistema Para Controle do IMC - Índice de Massa Corporal - Parte 4
1 Sistema Para Controle do IMC - Índice de Massa Corporal - Parte 5
1 Sistema Para Controle do IMC - Índice de Massa Corporal - Parte 6
1 Sistema Para Controle do IMC - Índice de Massa Corporal - Parte 7
1 Sistema Para Controle do IMC - Índice de Massa Corporal - Parte 8
1 Sistema Para Controle do IMC - Índice de Massa Corporal - Parte 9
1 Sistema Para Controle do IMC - Índice de Massa Corporal - Parte 10
1 Sistema Para Controle do IMC - Índice de Massa Corporal - Parte 11
1 Sistema Para Controle do IMC - Índice de Massa Corporal - Parte 12
1 Sistema Para Controle do IMC - Índice de Massa Corporal - Parte 13
1 Sistema Para Controle do IMC - Índice de Massa Corporal - Parte 14
1 Sistema Para Controle do IMC - Índice de Massa Corporal - Parte 15
1 Sistema Para Controle do IMC - Índice de Massa Corporal - Parte 16
JAVASCRIPT BÁSICO
1 JavaScript Básico - Lição 1
1 JavaScript Básico - Lição 2
1 JavaScript Básico - Lição 3
1 JavaScript Básico - Lição 4
1 JavaScript Básico - Lição 5
1 JavaScript Básico - Lição 6
1 JavaScript Básico - Lição 7
1 JavaScript Básico - Lição 8 - Instruções If e Else
1 JavaScript Básico - Lição 9 - Tópicos Diversos
1 JavaScript Básico - Lição 10 - Objetos Math e Date
1 JavaScript Básico - Lição 11 - Trabalhando com o objeto Browser
1 JavaScript - Criando Seus Próprios Objetos
1 JavaScript - Virtual Earth – Primeiro Passo
1 JavaScript - Virtual Earth – Segundo Passo
Quer receber novidades e e-books gratuitos?

 
 

Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434

Júlio Battisti Livros e Cursos Ltda | CNPJ: 08.916.484/0001-25 | Rua Vereador Ivo Cláudio Weigel, 537 - Universitário, Santa Cruz do Sul/RS, CEP: 96816-208

Todos os direitos reservados, Júlio Battisti 2001-2025 ®

LIVRO: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2016 - CURSO COMPLETO E PRÁTICO

DOMINE A PROGRAMAÇÃO VBA NO EXCEL - 878 PÁGINAS - CLIQUE AQUI