src/main/resources/static/javascripts/site-calcular-frete.js
// Calcula o frete e o prazo de entrega no WebService dos Correios
Calcula o frete e o prazo de entrega no WebService dos Correios
Calcula o frete e o prazo de entrega no WebService dos Correios
function calcularFrete(cep) {
		cep = cep.replace(/\D/, "");
		var parametros = "";
		var servicos = [];
		servicos[40010] = 'SEDEX';
		servicos[40215] = 'SEDEX 10';
		servicos[41106] = 'PAC';
		parametros = 
		"nCdEmpresa=" +
		"&sDsSenha=" +
		"&nCdServico=40010,40215,41106" +
		"&sCepOrigem=04696000" +
		"&sCepDestino=" + cep +
		"&nVlPeso=1" +
		"&nCdFormato=1" +
		"&nVlComprimento=20" +
		"&nVlAltura=6" +
		"&nVlLargura=20" +
		"&nVlDiametro=0" +
		"&sCdMaoPropria=n" +
		"&nVlValorDeclarado=0" +
		"&sCdAvisoRecebimento=s" +
		"&StrRetorno=xml" +
		"&nIndicaCalculo=3";
		$.ajax({
			method: "POST",
			url: "http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx?" + parametros,
			dataType: "xml",
			contentType: "application/xml",
			success: function (xml) {
				if ($(xml).find('cServico').find('Valor').eq(0).text() == '0,00') {
					alert('CEP inválido!');
					return false;
				}
				var finalizarCompra = $('.js-finalizar-compra');
				textoFrete.html('');
				btnComprar.focus();
				finalizarCompra.focus();
				$(xml).find('cServico').each(function () {
					var codigo = servicos[$(this).find('Codigo').text()];
					var valor = $(this).find('Valor').text();
					var prazo = $(this).find('PrazoEntrega').text();
					if (valor != 0 && prazo != 0) {
						if (btnComprar.length) {
							textoFrete.append('<p>' + "Serviço: " + codigo + " - Valor: R$ " + valor + " - Prazo: " + prazo + " dia(s)" + '</p>');
						} else {
							var checked = '';
							if (valorFrete.val().replace('R$ ', '') == valor) {
								checked = 'checked';
							}
							textoFrete.append("<p><input " + checked + " class='with-gap tc-radio-site js-valor-frete' name='opcao-valor-frete' value='" + valor + "|" + prazo + "' type='radio' id='" + codigo + "' required /><label for='" + codigo + "'>Serviço: " + codigo + " - Valor: R$ " + valor + " - Prazo: " + prazo + " dia(s)" + "</label></p>");
						}
					}
				});
				$('.js-valor-frete').on('click', function() {
					var subtotal = $('#subtotal');
					var total = $('#total');
					valorFrete.val('R$ ' + $(this).val().split('|')[0]);
					diasEntrega.val($(this).val().split('|')[1]);
					total.val('R$ ' + converterParaReal(converterParaDecimal(subtotal.val()) + converterParaDecimal($(this).val())));
					atualizarValoresParcelas();
					$('#valor-frete-barra-superior').val($(this).val().split('|')[0]);
					$('#dias-entrega-barra-superior').val($(this).val().split('|')[1]);
				});
			},
			error: function () {
				alert("CEP inválido!");
			},
			beforeSend: function () {
				$('.gif-carregando').removeClass('hide');
				if (btnComprar.length) {
					textoFrete.removeClass('s12 m8');
					textoFrete.addClass('s10 m6');
				} else if (opcaoEntrga.length) {
					textoFrete.removeClass('s12 m8');
					textoFrete.addClass('s11 m7');
				}
			},
			complete: function () {
				$('.gif-carregando').addClass('hide');
				if (btnComprar.length) {
					textoFrete.removeClass('s10 m6');
					textoFrete.addClass('s12 m8');
				} else if (opcaoEntrga.length) {
					textoFrete.removeClass('s11 m7');
					textoFrete.addClass('s12 m8');
				}
			}
		})
	}
function calcularFrete ( cep ) { cep = cep . replace ( / \D / , "" ) ; var parametros = "" ; var servicos = [ ] ; servicos [ 40010 ] = 'SEDEX' ; servicos [ 40215 ] = 'SEDEX 10' ; servicos [ 41106 ] = 'PAC' ; parametros = "nCdEmpresa=" + "&sDsSenha=" + "&nCdServico=40010,40215,41106" + "&sCepOrigem=04696000" + "&sCepDestino=" + cep + "&nVlPeso=1" + "&nCdFormato=1" + "&nVlComprimento=20" + "&nVlAltura=6" + "&nVlLargura=20" + "&nVlDiametro=0" + "&sCdMaoPropria=n" + "&nVlValorDeclarado=0" + "&sCdAvisoRecebimento=s" + "&StrRetorno=xml" + "&nIndicaCalculo=3" ; $ . ajax ( { method : "POST" , url : "http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx?" + parametros , dataType : "xml" , contentType : "application/xml" , success : function ( xml ) { if ( $ ( xml ) . find ( 'cServico' ) . find ( 'Valor' ) . eq ( 0 ) . text ( ) == '0,00' ) { alert ( 'CEP inválido!') ; return false ; } var finalizarCompra = $ ( '.js-finalizar-compra' ) ; textoFrete . html ( '' ) ; btnComprar . focus ( ) ; finalizarCompra . focus ( ) ; $ ( xml ) . find ( 'cServico' ) . each ( function ( ) { var codigo = servicos [ $ ( this ) . find ( 'Codigo' ) . text ( ) ] ; var valor = $ ( this ) . find ( 'Valor' ) . text ( ) ; var prazo = $ ( this ) . find ( 'PrazoEntrega' ) . text ( ) ; if ( valor != 0 && prazo != 0 ) { if ( btnComprar . length ) { textoFrete . append ( '<p>' + "Serviço: "  odigo   - Valor: R$ "  alor   - Prazo: "  razo   dia(s)"  </p>') ; } else { var checked = '' ; if ( valorFrete . val ( ) . replace ( 'R$ ' , '' ) == valor ) { checked = 'checked' ; } textoFrete . append ( "<p><input " + checked + " class='with-gap tc-radio-site js-valor-frete' name='opcao-valor-frete' value='" + valor + "|" + prazo + "' type='radio' id='" + codigo + "' required /><label for='" + codigo + "'>Serviço: "  odigo   - Valor: R$ "  alor   - Prazo: "  razo   dia(s)"  </label></p>") ; } } } ) ; $ ( '.js-valor-frete' ) . on ( 'click' , function ( ) { var subtotal = $ ( '#subtotal' ) ; var total = $ ( '#total' ) ; valorFrete . val ( 'R$ ' + $ ( this ) . val ( ) . split ( '|' ) [ 0 ] ) ; diasEntrega . val ( $ ( this ) . val ( ) . split ( '|' ) [ 1 ] ) ; total . val ( 'R$ ' + converterParaReal ( converterParaDecimal ( subtotal . val ( ) ) + converterParaDecimal ( $ ( this ) . val ( ) ) ) ) ; atualizarValoresParcelas ( ) ; $ ( '#valor-frete-barra-superior' ) . val ( $ ( this ) . val ( ) . split ( '|' ) [ 0 ] ) ; $ ( '#dias-entrega-barra-superior' ) . val ( $ ( this ) . val ( ) . split ( '|' ) [ 1 ] ) ; } ) ; } , error : function ( ) { alert ( "CEP inválido!") ; } , beforeSend : function ( ) { $ ( '.gif-carregando' ) . removeClass ( 'hide' ) ; if ( btnComprar . length ) { textoFrete . removeClass ( 's12 m8' ) ; textoFrete . addClass ( 's10 m6' ) ; } else if ( opcaoEntrga . length ) { textoFrete . removeClass ( 's12 m8' ) ; textoFrete . addClass ( 's11 m7' ) ; } } , complete : function ( ) { $ ( '.gif-carregando' ) . addClass ( 'hide' ) ; if ( btnComprar . length ) { textoFrete . removeClass ( 's10 m6' ) ; textoFrete . addClass ( 's12 m8' ) ; } else if ( opcaoEntrga . length ) { textoFrete . removeClass ( 's11 m7' ) ; textoFrete . addClass ( 's12 m8' ) ; } } } ) }
Calcula o frete e o prazo de entrega no WebService dos Correios
Calcula o frete e o prazo de entrega no WebService dos Correios
// Parametros obrigatórios mesmo quando vazios // Percorre o retorno para montar as informações que serão exibidas // Se houver uma opção marcada em alguns dos forms já deixa ela marcada // Coloca uma função nas opções de frete para atualizar o valor total da compra // Apresenta o gif até o fim da requisição // Retira o gif após a requisição