Last active
November 29, 2020 23:46
-
-
Save TRFN/751d52341b1eb3f9398339621a7067c1 to your computer and use it in GitHub Desktop.
Calculo de Frete em Javascript
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* Esta função requer a biblioteca jQuery */ | |
/* Exemplo de uso: calcularFrete("sedex", "31.130-600", "13.165-000", 8, 350, function(data){console.log(data);}); */ | |
/* Exemplo de uso: calcularFrete(41106, "31.130-600", "13.165-000", 8, 350, function(data){console.log(data);}); */ | |
function calcularFrete(env, orig, dest, qtd, vl, cb){ | |
var URL = "//cors-anywhere.herokuapp.com/ws.correios.com.br/calculador/CalcPrecoPrazo.asmx/"; | |
function codenv(cod){ | |
let cods = [ | |
[40010, "SEDEX"], | |
/*[40215, "SEDEX10"], | |
[40290, "SEDEXH"],*/ /* Estas linhas acima estão comentadas porque a api do correios */ | |
[41106, "PAC"] /* não estão disponibilizando estas opções em todos os casos */ | |
]; | |
for( let i = 0; i < cods.length; i++ ){ | |
if(cods[i].indexOf(typeof cod == "string" ? cod.toUpperCase():cod) !== -1){ | |
return cods[i][0]; | |
} | |
} | |
return cod; | |
} | |
/* Esta parte deve ser formatada conforme a necessidade de uso */ | |
var REQ = { | |
nCdEmpresa: '', | |
sDsSenha: '', | |
nCdServico: codenv(env), | |
sCepOrigem: orig.split(/[^0-9]/).join(""), | |
sCepDestino: dest.split(/[^0-9]/).join(""), | |
nVlPeso: String(Math.ceil(qtd * 0.65)), | |
nCdFormato: '1', | |
nVlComprimento: '40', | |
nVlAltura: String(Math.max(10,qtd*4.5)), | |
nVlLargura: '30', | |
nVlDiametro: '0', | |
sCdMaoPropria: 'n', | |
nVlValorDeclarado: String(vl), | |
sCdAvisoRecebimento: 'n', | |
}; | |
/* Fim da area de personalização */ | |
return $.post(URL + "CalcPreco", REQ, function(data){ | |
result = ({ | |
Valor: $(data.querySelector("cServico Valor")).text() | |
}); | |
XML = [data]; | |
$.post(URL + "CalcPrazo", REQ, function(data){ | |
XML.push(data); | |
result.Prazo = $(data.querySelector("cServico PrazoEntrega")).text(); | |
cb({data: result, "xmls": XML}); | |
}); | |
}); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment