var rmHaciaArriba = true;
$(document).ready(function() {
$("#haciaArriba").scrollToTop();
$(".form-addProduct input").on("keypress",function(e){if(e.which===13){$('#btnAddCart').click();}});
});
function vaciarCarro() {
BootstrapDialog.confirm("Tem certeza que pretende esvaziar o carrinho?", function(result) {
if (result){
document.location = 'PStores?s=1825&o=updtCart_b2c&p=3&t=a';
}
});
}
function inc(id,cantidad){
var inp = document.getElementById(id);
if( Number(inp.value) >= 0){
inp.value = Number(inp.value) + Number(cantidad);
}else{
inp.value = 0;
}
}
function dec(id,cantidad){
var inp = document.getElementById(id);
if( Number(inp.value) > 0){
inp.value = Number(inp.value) - Number(cantidad);
if (inp.value < 0) {
inp.value = 0;
}
}else{
inp.value = 0;
}
}
function addPedCarro(codigo,css){
if (!isNaN(codigo) && codigo > 0) {
//Comprobación de si existe contenido previo en el carro
var url = css + '&o=updtCart_b2c&p=4&t=a&cod.'+codigo+'=A';
BootstrapDialog.confirm("Tem certeza de que deseja adicionar a ordem" + " " + codigo + " " + "ao Carrinho?", function(result) {
if (result){
window.location = url;
}
});
}
}
function checkCarroAjaxCheckMsgExcel(codigo, num, disponible, rnd, fechaEntrada, cantidadRepo, urlwhenComplete, __param_o, __param_url){
var respuesta = {msj:"", tipo:"0"};
if (codigo!='' && !isNaN(num) && num>0) {
// Hacemos una llamada ajax para ver la disponibilidad de el/los producto
$.ajaxSetup({async: false});
$.ajax({
type : "GET",
//async : false,
timeout: 20000,
data: {o : "product_b2c", p : 7, codProduct : codigo, t: "a"},
url : "PStores?s=1825",
success : function(data) {
// parseamos array
var dataProd = $.parseJSON(data);
// si hay un solo producto
if(dataProd.length==1){
var fechaEntrada = "";
var cantidadRepo = 0;
var res = false;
disponible = dataProd["0"].stock;
if(dataProd[0].fechaEntrada != ""){
fechaEntrada = dataProd[0].fechaEntrada;
}
if(dataProd[0].cantidadRepo != ""){
cantidadRepo = dataProd[0].cantidadRepo;
}
if(dataProd[0].codProd != ""){
codigo = dataProd[0].codProd;
}
if(dataProd[0].stock != ""){
res = dataProd[0].stock;
}
//Liberamos
var msj = "";
if (!isNaN(codigo) && isNumeric(num) && codigo!=0 && num >= 0) {
if ( !disponible) {
if (fechaEntrada == '') {
msj = "Atualmente não temos stock suficiente para este artigo.";
respuesta = {msj:msj, tipo:"2"};
} else {
if(cantidadRepo != null && isNumeric(cantidadRepo) && cantidadRepo>0){
msj = "Atualmente não temos stock suficiente para este artigo."+"\nData prevista de entrada: "+fechaEntrada+",\u00a0"+cantidadRepo+"\u00a0Uds";
respuesta = {msj:msj, tipo:"2"};
}else{
msj = "Atualmente não temos stock suficiente para este artigo."+"\nData prevista de entrada: "+fechaEntrada;
respuesta = {msj:msj, tipo:"2"};
}
}
return respuesta;
}
}else {
msj = "Deve indicar uma quantidade maior que 0 (zero) ";
respuesta = {msj:msj, tipo:"2"};
}
}else if(dataProd.length > 1){
// multiples referencias, construimos modal pasandole el array
constructModal(dataProd, num);
}else{
// msj sin resultados
msj = "Nenhum produto foi encontrado com esse código o essa referência.";
respuesta = {msj:msj, tipo:"2"};
}
},
error : function(data) {
// error accediendo a los datos
msj = "Produziu-se um erro no acesso aos dados que solicita";
respuesta = {msj:msj, tipo:"2"};
}
});
} else {
msj = "Por favor, insira valores corretos";
respuesta = {msj:msj, tipo:"2"};
}
return respuesta;
}
function checkCarroAjaxCompleteFunction(codigo, num, disponible, rnd, fechaEntrada, cantidadRepo, urlwhenComplete, __param_o, __param_url){
if (!isNaN(codigo) && isNumeric(num) && codigo!=0 && num >= 0) {
if (!disponible) {
if (fechaEntrada == '') {
BootstrapDialog.alert("Atualmente não temos stock suficiente para este artigo.", function(){});
} else {
if(cantidadRepo != null && isNumeric(cantidadRepo) && cantidadRepo>0)
BootstrapDialog.alert("Atualmente não temos stock suficiente para este artigo."+"\nData prevista de entrada: "+fechaEntrada+",\u00a0"+cantidadRepo+"\u00a0Uds", function(){});
else
BootstrapDialog.alert("Atualmente não temos stock suficiente para este artigo."+"\nData prevista de entrada: "+fechaEntrada, function(){});
}
return;
}else{
$.get(urlwhenComplete).complete(function() {
addCarroAjax(codigo, num, disponible, rnd, fechaEntrada, cantidadRepo);
if (isNaN(__param_o) && isNaN(__param_url)){
if (__param_o == 'viewCart_b2c' || __param_o == 'updtCart_b2c') {
window.location.href=__param_url;
}
}
});
}
}else {
BootstrapDialog.alert("Deve indicar uma quantidade maior que 0 (zero) ", function(){});
var input = document.getElementById("num."+codigo);
if ( input != null) {
input.focus();
}
}
}
function checkCarroAjax(codigo, num, disponible, rnd, fechaEntrada, cantidadRepo, stock, thiso){
if (!isNaN(codigo) && isNumeric(num) && codigo!=0 && num >= 0) {
var stockDisponible = compruebaCantidadCarro(codigo, num, stock);
if (!disponible || stockDisponible != 1) {
if(stockDisponible == -1) {
BootstrapDialog.alert("O número de produtos selecionados é maior que o stock disponível.", function(){});
} else if (stockDisponible == 0) {
BootstrapDialog.alert("El stock disponible acaba de ser modificado y es inferior a la cantidad seleccionada", function(){});
}
else if (fechaEntrada == '') {
BootstrapDialog.alert("Atualmente não temos stock suficiente para este artigo.", function(){});
} else {
if(cantidadRepo != null && isNumeric(cantidadRepo) && cantidadRepo>0)
BootstrapDialog.alert("Atualmente não temos stock suficiente para este artigo."+"\nData prevista de entrada: "+fechaEntrada+",\u00a0"+cantidadRepo+"\u00a0Uds", function(){});
else
BootstrapDialog.alert("Atualmente não temos stock suficiente para este artigo."+"\nData prevista de entrada: "+fechaEntrada, function(){});
}
return;
}
else {
addCarroAjax(codigo, num, disponible, rnd, fechaEntrada, cantidadRepo, thiso);
}
}else {
BootstrapDialog.alert("Deve indicar uma quantidade maior que 0 (zero) ", function(){});
var input = document.getElementById("num."+codigo);
if ( input != null) {
input.focus();
}
}
}
//Actualiza el número de productos y el importe en la cabecera de las contenedoras
function actualizaCabeceraCarroAjax(handleData){
var urlAjax = 'PStores?s=1825' + '&o=updtCart_b2c&p=7&t=a';
$.get(urlAjax, function(data){
$.get('PStores?s=1825'+"&o=updtCart_b2c&p=7&t=r");
handleData(data);
});
}
function addCarroAjax(codigo, num1, disponible, rnd, fechaEntrada, cantidadRepo, thiso){
//var num = document.getElementById(num).value;
var num = num1;
if (!isNaN(codigo) && isNumeric(num) && codigo!=0 && num >= 0) {
if (num == 0) {
num = rnd;
$("#num\\."+codigo).val(rnd);
}
var urlAjax = 'PStores?s=1825' + '&o=updtCart_b2c&p=6&t=a&cod.'+codigo+'=A&num.'+codigo+'='+num;
$.get(urlAjax, function(data){
$.get('PStores?s=1825'+"&o=updtCart_b2c&p=6&t=r");
try { // instrucciones a probar
var dataCart = $.parseJSON(data.trim());
$(".numProductosCarro").html(dataCart[0].numProductsCart);
$(".importeCarro").html(dataCart[0].totalCart.toString().replace(".",",") + " €");
$(".cartCantidadCarro"+codigo).html(dataCart[0].quantity);
// Mostrar el mensaje al usaurio
var snackbar = $("#snackbar");
if(snackbar.length > 0) {
var text = "Número de produtos adicionados ao carrinho: " + dataCart[0].quantity + "";
showSnackbar(text);
}
}catch (e) {
return;
}
});
} else {
BootstrapDialog.alert("Deve indicar uma quantidade maior que 0 (zero) ", function(){});
var input = document.getElementById("num."+codigo);
if ( input != null) {
input.focus();
}
}
}
function addCarro(codigo, num, disponible, fechaEntrada, stock, cantidadRepo){
//var num = document.getElementById(num).value;
if (!isNaN(codigo) && isNumeric(num) && codigo!=0 && num > 0) {
var stockDisponible = compruebaCantidadCarro(codigo, num, stock);
var url = 'PStores?s=1825' + '&o=updtCart_b2c&p=1&t=a&cod.'+codigo+'=A&num.'+codigo+'='+num;
if (!disponible || stockDisponible != 1) {
if(stockDisponible == -1) {
BootstrapDialog.alert("O número de produtos selecionados é maior que o stock disponível.", function(){});
} else if (stockDisponible == 0) {
BootstrapDialog.alert("El stock disponible acaba de ser modificado y es inferior a la cantidad seleccionada", function(){});
}
else if (fechaEntrada == '') {
BootstrapDialog.alert("Atualmente não temos stock suficiente para este artigo.", function(){});
} else {
if(cantidadRepo != null && isNumeric(cantidadRepo) && cantidadRepo>0)
BootstrapDialog.alert("Atualmente não temos stock suficiente para este artigo."+"\nData prevista de entrada: "+fechaEntrada+",\u00a0"+cantidadRepo+"\u00a0Uds", function(){});
else
BootstrapDialog.alert("Atualmente não temos stock suficiente para este artigo."+"\nData prevista de entrada: "+fechaEntrada, function(){});
}
return;
} else {
doAddToCart(codigo, num);
//window.location = url;
}
} else {
BootstrapDialog.alert("Deve indicar uma quantidade maior que 0 (zero) ", function(){});
var input = document.getElementById("num."+codigo);
if ( input != null) {
input.focus();
}
}
}
/*
* Añadir un producto al carro via ajax sin recargar la página
*/
function doAddToCart(codigo, cantidad) {
var params = "codigo=" + codigo + "&cantidad=" + cantidad;
$.ajaxSetup({
async: false
});
$.ajax({
url: "jsp/b2c/ajxAddToCart.jsp?"+params,
method: "get",
success: function(result,status,xhr) {
if (result != "ERROR") {
var dataCart = $.parseJSON(result.trim());
$(".numProductosCarro").html(dataCart[0].num_productos);
$(".importeCarro").html(dataCart[0].importe.toString().replace(".",",") + " €");
}
},
error: function(xhr,status,error) {
console.log(error);
}
});
$.ajaxSetup({
async: true
});
// Cerrar la ventana emergente
$.colorbox.close();
}
/**
*
* Funcion replica de aniadirACarro, se diferencia en la no validación a nivel de mensajes Bootstrap
*
*/
function aniadirACarroExcel(codigo, num, update) {
// si el codigo no esta vacio y el valor de num es numerico mayor que cero
if (codigo!='' && !isNaN(num) && num>0) {
// Hacemos una llamada ajax para ver la disponibilidad de el/los producto
$.ajaxSetup({async: false});
$.ajax({
type : "GET",
//async : false,
timeout: 20000,
data: {o : "product_b2c", p : 7, codProduct : codigo, t: "a"},
url : "PStores?s=1825",
success : function(data) {
// parseamos array
var dataProd = $.parseJSON(data);
// si hay un solo producto
if(dataProd.length==1){
var fechaEntrada = "";
var cantidadRepo = 0;
var res = false;
if(dataProd[0].fechaEntrada != ""){
fechaEntrada = dataProd[0].fechaEntrada;
}
if(dataProd[0].cantidadRepo != ""){
cantidadRepo = dataProd[0].cantidadRepo;
}
if(dataProd[0].codProd != ""){
codigo = dataProd[0].codProd;
}
if(dataProd[0].stock != ""){
res = dataProd[0].stock;
}
//Liberamos
//TODO Llamamos al carro con disponibilidad res
checkCarroAjaxCompleteFunctionNoValid(codigo,num,update, res,0,fechaEntrada,cantidadRepo, "PStores?s=1825&o=product_b2c&t=r",__param_o , 'PStores?s=1825&o=viewCart_b2c&p=1');
//Tanto si se cancela como si no, se establece el foco en el código del pedido rápido
//form.cod.focus();
}else if(dataProd.length > 1){
// multiples referencias, construimos modal pasandole el array
constructModal(dataProd, num);
}else{
// msj sin resultados
//BootstrapDialog.alert("Nenhum produto foi encontrado com esse código o essa referência.", function(){});
}
},
error : function(data) {
// error accediendo a los datos
//BootstrapDialog.alert("Produziu-se um erro no acesso aos dados que solicita", function(){});
}
});
} else {
//BootstrapDialog.alert("Por favor, insira valores corretos", function(){});
}
return true;
}
/**
* Funcion que chequea la disponibilidad de los productos
* buscando por cod o referencia. La llamada ajax recibe un
* array json y en caso de haber encontrado varios productos
* se mostrara un modal en el que el usuario debera elegir
* cual añadira al carrito
*/
function aniadirACarro(f) {
var form = document.getElementById(f);
var codigo = form.cod.value.trim();
var num = form.num.value;
// si el codigo no esta vacio y el valor de num es numerico mayor que cero
if (codigo!='' && !isNaN(num) && num>0) {
// Si es un cliente hyperburo se busca la equivalencia del código
// Hacemos una llamada ajax para ver la disponibilidad de el/los producto
$.ajaxSetup({async: false});
$.ajax({
type : "GET",
//async : false,
timeout: 20000,
data: {o : "product_b2c", p : 7, codProduct : codigo, t: "a"},
url : "PStores?s=1825",
success : function(data) {
// parseamos array
var dataProd = $.parseJSON(data);
// si hay un solo producto
if(dataProd.length==1){
var fechaEntrada = "";
var cantidadRepo = 0;
var res = false;
if(dataProd[0].fechaEntrada != ""){
fechaEntrada = dataProd[0].fechaEntrada;
}
if(dataProd[0].cantidadRepo != ""){
cantidadRepo = dataProd[0].cantidadRepo;
}
if(dataProd[0].codProd != ""){
codigo = dataProd[0].codProd;
}
if(dataProd[0].stock != ""){
res = dataProd[0].stock;
}
//Liberamos
//TODO Llamamos al carro con disponibilidad res
checkCarroAjaxCompleteFunction(codigo,num,res,0,fechaEntrada,cantidadRepo, "PStores?s=1825&o=product_b2c&t=r",__param_o , 'PStores?s=1825&o=viewCart_b2c&p=1');
//Tanto si se cancela como si no, se establece el foco en el código del pedido rápido
//form.cod.focus();
}else if(dataProd.length > 1){
// multiples referencias, construimos modal pasandole el array
constructModal(dataProd, num);
}else{
// msj sin resultados
BootstrapDialog.alert("Nenhum produto foi encontrado com esse código o essa referência.", function(){});
}
},
error : function(data) {
// error accediendo a los datos
BootstrapDialog.alert("Produziu-se um erro no acesso aos dados que solicita", function(){});
}
});
} else {
BootstrapDialog.alert("Por favor, insira valores corretos", function(){});
}
//Tanto si se cancela como si no, se establece el foco en el código del pedido rápido
form.cod.focus();
}
/**
* Funcion que construye el modal de seleccion de
* producto del pedido rapido. Los botones del modal
* contendran los datos necesarios para añadir al carrito
* de manera que al hacer click sobre alguno se pueda
* añadir facilmente.
*/
function constructModal(dataProd, num){
var table = $("
"
);
}
$('#pr-modal').find('.modal-body').html(table);
$('#pr-modal').modal('toggle');
}
/**
* Funcion que escucha a los botones del modal de
* pedido rapido, obtiene los datos necesarios para
* procesar el updtcart y llama a la funcion que lo hace
*/
function modalTriggered(button){
$('#pr-modal').modal('toggle');
var code = $(button).data("code");
var num = $(button).data("num");
var res = $(button).data("stock");
var fechaEntrada = $(button).data("fechaentrada");
var cantidadRepo = $(button).data("cantidadrepo");
checkCarroAjaxCompleteFunction(code,num,res,0,fechaEntrada,cantidadRepo, "PStores?s=1825&o=product_b2c&t=r",__param_o , 'PStores?s=1825&o=viewCart_b2c&p=1');
}
function setFocus(){
var inputUsuario = document.getElementById('searchString');
if(inputUsuario){
inputUsuario.focus();
return;
}
var inputSearch = document.getElementById('searchString');
if(inputSearch){
inputSearch.focus();
}
}
//Funcion para afinar la busqueda en la cateogrias indicada
function subResultados(form, codigoCategoria){
var formulario = document.getElementById(form);
formulario.codCategory.value=codigoCategoria;
formulario.submit();
}
//Actualiza el codigo de la categoria con el valor seleccionado en el select.
function updateCodCategory(form, select){
var formulario = document.getElementById(form);
formulario.codCategory.value = select[select.selectedIndex].value;
}
/***
* Función que comprueba el stock y cantidad seleccionada a comprar
*/
function validar(f,favoritos, isResp) {
var avisoSinStock = "";
for (i=0;i < f.elements.length;i++) {
if (f.elements[i].type=='text') {
if (f.elements[i].value.length == 0 || !isNumeric(f.elements[i].value) || f.elements[i].value<0 ) {
f.elements[i].focus();
BootstrapDialog.alert("Deve indicar uma quantidade maior que 0 (zero) ", function(){});
return;
}
else {
if (favoritos != undefined && isResp != true) {
var cod = f.elements[i].name;
cod = cod.substring(cod.indexOf("_")+1);
//Creamos input de num para favoritos con . (en favoritos viene con _ para que no se dupliquen)
var input = document.createElement("input");
input.setAttribute("type", "hidden");
input.setAttribute("name", "num."+cod);
input.setAttribute("id", "num."+cod);
input.setAttribute("value", "0");
f.appendChild(input);
}
}
if (isResp == true && f.elements[i].name != null
&& !isNumeric(f.elements[i].name.substring(f.elements[i].name.indexOf(".")+1))) {
var codigo = f.elements[i].id;
codigo = codigo.substring(codigo.indexOf(".")+1);
var stock = document.getElementById('stock.'+codigo);
if (stock == undefined) {
codigo = codigo.substring(codigo.indexOf("_")+1);
stock = document.getElementById('stock.'+codigo);
}
if(stock.value < 1 && codigo.indexOf("_-") > -1){
avisoSinStock += codigo + ", ";
}
} else if (isResp != true){
if(isNumeric(f.elements[i].value) && f.elements[i].value > 0 ){ //Es numerico y mayor que 0 asi que se añadirá al carro.
var codigo = f.elements[i].name;
if (isNumeric(codigo.substring(codigo.indexOf(".")+1)) || isNumeric(codigo.substring(codigo.indexOf("_")+1)) || codigo.indexOf("_-")!=-1) {
if (favoritos == undefined) {
codigo = codigo.substring(codigo.indexOf(".")+1);
} else {
codigo = codigo.substring(codigo.indexOf("_")+1);
input.setAttribute("value", document.getElementById('num_'+codigo).value);
f.appendChild(input);
}
var stock = document.getElementById('stock.'+codigo);
if(stock.value < 1 && codigo.indexOf("_-") > -1){
avisoSinStock += codigo + ", ";
}
}
}
}
}
}
if(avisoSinStock != ""){
avisoSinStock = avisoSinStock.substring(0, avisoSinStock.length - 2);
BootstrapDialog.alert("Para artigos "+ avisoSinStock +" não temos stock" , function(result) {
f.submit();
});
}else{
f.submit();
}
}
function validarAjax(f,favoritos) {
var productosAgregados = new Array();
var productosAgregadosSinStock = new Array();
var cont = 0;
var contSinStock = 0;
var avisoSinStock = "";
for (i=0;i < f.elements.length;i++) {
if (f.elements[i].type=='text') {
if (f.elements[i].value.length == 0 || !isNumeric(f.elements[i].value) || f.elements[i].value < 0 ) {
f.elements[i].focus();
BootstrapDialog.alert("Deve indicar uma quantidade maior que 0 (zero) ", function(){});
return;
}
else {
if (favoritos != undefined) {
var cod = f.elements[i].name;
cod = cod.substring(cod.indexOf("_")+1);
//Creamos input de num para favoritos con . (en favoritos viene con _ para que no se dupliquen)
var input = document.createElement("input");
input.setAttribute("type", "hidden");
input.setAttribute("name", "num."+cod);
input.setAttribute("id", "num."+cod);
input.setAttribute("value", "0");
f.appendChild(input);
}
}
if(isNumeric(f.elements[i].value) && f.elements[i].value > 0 ){ //Es numerico y mayor que 0 asi que se añadirá al carro.
var codigo = f.elements[i].name;
if (favoritos == undefined) {
codigo = codigo.substring(codigo.indexOf(".")+1);
} else {
codigo = codigo.substring(codigo.indexOf("_")+1);
input.setAttribute("value", document.getElementById('num_'+codigo).value);
f.appendChild(input);
}
var stock = document.getElementById('stock.'+codigo);
if(stock.value < 1){
avisoSinStock += codigo + ", ";
productosAgregadosSinStock[contSinStock] = new productVo(codigo,f.elements[i],true);
contSinStock++;
} else {
productosAgregados[cont] = new productVo(codigo,f.elements[i],true);
cont++;
}
}
}
}
if(avisoSinStock != ""){
avisoSinStock = avisoSinStock.substring(0, avisoSinStock.length - 2);
BootstrapDialog.alert("Para artigos "+ avisoSinStock +" não temos stock", function(){});
return;
} else {
aniadirMultiplesAjax(productosAgregados);
}
}
function validarSincrono(f,favoritos) {
var productosAgregados = new Array();
var productosAgregadosSinStock = new Array();
var cont = 0;
var contSinStock = 0;
var avisoSinStock = "";
for (i=0;i < f.elements.length;i++) {
if (f.elements[i].type=='text') {
if (f.elements[i].value.length == 0 || !isNumeric(f.elements[i].value) || f.elements[i].value<0 ) {
f.elements[i].focus();
BootstrapDialog.alert("Deve indicar uma quantidade maior que 0 (zero) ", function(){});
return;
}
else {
if (favoritos != undefined && favoritos != true) {
var cod = f.elements[i].name;
cod = cod.substring(cod.indexOf("_")+1);
//Creamos input de num para favoritos con . (en favoritos viene con _ para que no se dupliquen)
var input = document.createElement("input");
input.setAttribute("type", "hidden");
input.setAttribute("name", "num."+cod);
input.setAttribute("id", "num."+cod);
input.setAttribute("value", "0");
f.appendChild(input);
}
}
if (favoritos == true && f.elements[i].name != null
&& !isNumeric(f.elements[i].name.substring(f.elements[i].name.indexOf(".")+1))) {
var codigo = f.elements[i].id;
codigo = codigo.substring(codigo.indexOf(".")+1);
var stock = document.getElementById('stock.'+codigo);
if(stock.value < 1){
avisoSinStock += codigo + ", ";
productosAgregadosSinStock[contSinStock] = new productVo(codigo,f.elements[i],true);
contSinStock++;
} else {
productosAgregados[cont] = new productVo(codigo,f.elements[i],true);
cont++;
}
} else if (favoritos != true){
if(isNumeric(f.elements[i].value) && f.elements[i].value > 0 ){ //Es numerico y mayor que 0 asi que se añadirá al carro.
var codigo = f.elements[i].name;
if (isNumeric(codigo.substring(codigo.indexOf(".")+1)) || isNumeric(codigo.substring(codigo.indexOf("_")+1))) {
if (favoritos == undefined) {
codigo = codigo.substring(codigo.indexOf(".")+1);
} else {
codigo = codigo.substring(codigo.indexOf("_")+1);
input.setAttribute("value", document.getElementById('num_'+codigo).value);
f.appendChild(input);
}
var stock = document.getElementById('stock.'+codigo);
if(stock.value < 1){
avisoSinStock += codigo + ", ";
productosAgregadosSinStock[contSinStock] = new productVo(codigo,f.elements[i],true);
contSinStock++;
} else {
productosAgregados[cont] = new productVo(codigo,f.elements[i],true);
cont++;
}
}
}
}
}
}
if(avisoSinStock != ""){
avisoSinStock = avisoSinStock.substring(0, avisoSinStock.length - 2);
BootstrapDialog.alert("Para artigos "+ avisoSinStock +" não temos stock", function(){});
return;
}
aniadirMultiplesAjaxAsincrono(productosAgregados);
document.location = 'PStores?s=1825&o=viewCart_b2c&p=1';
}
function productVo(codigo,numero,disponible) {
this.codigo = codigo;
this.numero = numero;
this.disponible = disponible;
}
function aniadirMultiplesAjaxAsincrono(productosAgregados) {
//alert("codigo:"+codigo+", num:"+num.value+",disponible:"+disponible);
//TODO Hacemos una llamada ajax para ver la disponibilidad del producto
var i = 0;
var paramProductos = "";
var N = productosAgregados.length;
if (N > 0) {
while(i < N) {
codigo = productosAgregados[i].codigo;
num = productosAgregados[i].numero;
paramProductos = paramProductos + "&cod."+codigo+"=A&num."+codigo+"="+num.value;
i++;
cartCheck(num,'#listadoProductos #cart'+codigo);
}
$.ajax({async:false, type:"GET",url:'PStores?s=1825&o=updtCart_b2c&p=6'+ paramProductos +'&t=a',success: function(data) {
var res = true;
var dataCart = $.parseJSON(data);
//if(dataCart.ok != "" && $.trim(dataCart.ok.toLowerCase()) == "false"){
if(dataCart.length > 0){
res = false;
N = dataCart.length;
}
i = 0;
while (i < N) {
/*alert("quantities: (cod:"+dataCart.quantities[0].cod+", quantity:"+dataCart.quantities[0].quantity+")");*/
$(".numProductosCarro").html(dataCart[i].numProductsCart);
$(".importeCarro").html(dataCart[i].totalCart.toString().replace(".",",") + " €");
$(".cartCantidadCarro"+dataCart[i].cod).html(dataCart[i].quantity);
$("#cart"+dataCart[i].cod).addClass("cart-select");
i++;
}
$("#importeCarro").html(dataCart[0].totalCart.toString().replace(".",",") + " €");
$("#numProductosCarro").html(dataCart.numProductsCart);
$.get(__cs+"?o=updtcart&p=1&t=r", function() {});
}});
if (N >= 1) $(".cartMultiples-tooltip-panel-inner").fadeIn(800).fadeOut(2000);
// window.location = 'PStores?s=2&o=viewCart_b2c&p=1';
}
}
function aniadirMultiplesAjax(productosAgregados) {
//alert("codigo:"+codigo+", num:"+num.value+",disponible:"+disponible);
//TODO Hacemos una llamada ajax para ver la disponibilidad del producto
var i = 0;
var paramProductos = "";
var N = productosAgregados.length;
while(i < N) {
codigo = productosAgregados[i].codigo;
num = productosAgregados[i].numero;
paramProductos = paramProductos + "&cod."+codigo+"=A&num."+codigo+"="+num.value;
i++;
cartCheck(num,'#listadoProductos #cart'+codigo);
}
$.get('PStores?s=1825' + "&o=updtCart_b2c&p=6"+paramProductos+"&t=a", function(data) {
$.get(__cs+"?o=updtcart&p=6&t=r");
var res = true;
var dataCart = $.parseJSON(data);
//if(dataCart.ok != "" && $.trim(dataCart.ok.toLowerCase()) == "false"){
if(dataCart.length > 0){
res = false;
}
i = 0;
while (i < N) {
/*alert("quantities: (cod:"+dataCart.quantities[0].cod+", quantity:"+dataCart.quantities[0].quantity+")");*/
$(".numProductosCarro").html(dataCart[i].numProductsCart);
$(".importeCarro").html(dataCart[i].totalCart.toString().replace(".",",") + " €");
$(".cartCantidadCarro"+dataCart[i].cod).html(dataCart[i].quantity);
$("#cart"+dataCart[i].cod).addClass("cart-select");
i++;
}
});
if (N >= 1) $(".cartMultiples-tooltip-panel-inner").fadeIn(800).fadeOut(2000);
}
//PEDIDO RÁPIDO
//Comprobación de la tecla pulsada.
function isEnter(evento){
var key;
if (evento.keyCode){
key = evento.keyCode;
}else if (evento.which){
key = evento.which;
}else{
return false;
}
if (key == 13) {
return true;
}else {
return false;
}
}
function submitEnterCarro(evento,f){
var key;
if (evento.keyCode){
key = evento.keyCode;
}else if (evento.which){
key = evento.which;
}else {
return false;
}
if (key == 13) {aniadirACarro(f);}
return true;
}
function introducirCodigoProducto(event,field) {
if (isEnter(event)) {
field.focus();
}
}
//EFECTOS PARA MOSTRAR EL CARRO
function confirmarBorrado(i) {
BootstrapDialog.confirm("Está certo de que pretende eliminar este produto do carrinho?", function(result) {
if (result){
document.location='PStores?s=1825&o=updtCart_b2c&p=1&t=a&cod.'+i+'=U&num.'+i+'=0';
}
});
}
//Funcion que actualiza el contenido del carro.
function updateCartContent(){
$.get("jsp/b2c/registered/ajxCartB2CDataContent.jsp")
.success(function (data){
$('#carroFlotante').html(data);
});
}
//Funcion que actualiza el contenido del carro.
function updateCartModalContent(){
$.get("jsp/b2c/registered/ajxCartB2CModalDataContent.jsp")
.success(function (data){
$("#modalCarrito .modal-body").html(data);
});
}
$(document).ready(function() {
//Hover sobre el botón para desplegar el carro.
$('.botonDesplegable').hover(
function(e){
//Se borra el time que cierra el carro.
try{clearTimeout(out_intent_carro);}catch(e){};
if ($("#carroFlotante").is(":hidden")){ //Si está oculto hace por recargar los datos y mostrarlo.
hover_intent_carro = setTimeout(
function(){
$('#carroFlotante').html('
');
$('#carroFlotante').slideDown('fast',
function() {
// alert('Desplegando');
updateCartContent();
}
);
} , 300 );
}
},
function(e){
//Se borra el contador que mostraría el carro.
try{clearTimeout(hover_intent_carro);}catch(e){};
//$('#carroFlotante').slideUp('fast');
//Se inicia el cerrado del carro.
out_intent_carro = setTimeout(
function(){
$('#carroFlotante').slideUp('fast');
} ,600 );
}
);
//Hover sobre el botón para desplegar el carro.
$('#carroFlotante').hover(
function(e){
//Se borra el time que cierra el carro.
try{clearTimeout(out_intent_carro);}catch(e){};
},
function(e){
//$('#carroFlotante').slideUp('fast');
//Se inicia el cerrado del carro.
out_intent_carro = setTimeout(
function(){
$('#carroFlotante').slideUp('fast');
} ,100 );
}
);
});
//FIN EFECTOS PARA MOSTRAR EL CARRO
// $(document).ready(parpadear);
// function parpadear(){ $('#ProdHabituales').fadeIn(250).delay(250).fadeOut(250, parpadear); }
/* Solo si el cliente está registrado se crean las funciones javascript
(aunque esté comentado se ejecuta la etiqueta) */
function checkPoliticaPrivacidad(){
if($("#politicaPrivacidad").is(':checked')) {
return true;
}else{
BootstrapDialog.alert("Deve aceitar a política de privacidade assinalando o campo previamente.", function(){});
return false;
}
}
function validarContactoPie() {
// Limpiar la entrada del usuario de caracteres innecesarios
var f = document.getElementById('formContacta');
f.name.value = clearName(f.name.value).trim();
f.body.value = clearComment(f.body.value).trim();
f.fromEmail.value = f.fromEmail.value.trim();
// Ningún campo debe ser vacío
if (!obligatorioExiste(document.forms['formContacta'].name, "O campo nome é obrigatório.") ||
!obligatorioExiste(document.forms['formContacta'].fromEmail, "O campo email é obrigatório.") ||
!obligatorioExiste(document.forms['formContacta'].body, "O campo corpo é obrigatório.")) {
return false;
}
// Se valida el formato de la dirección de correo
if (!emailCheck(document.forms['formContacta'].fromEmail.value)) {
BootstrapDialog.alert("O correio electrónico não é correcto, volte a introduzi-lo.", function(){});
return false;
}
return checkPoliticaPrivacidad();
}
function checkCarroAjaxCompleteFunctionNoValid(codigo, num, update, disponible, rnd, fechaEntrada, cantidadRepo, urlwhenComplete, __param_o, __param_url){
if (!isNaN(codigo) && isNumeric(num) && codigo!=0 && num >= 0) {
if ( !disponible) {
}else{
$.get(urlwhenComplete).complete(function() {
addCarroAjax(codigo, num, disponible, rnd, fechaEntrada, cantidadRepo);
});
}
}
if (update){
window.location.href="PStores?s=1825&o=viewCart_b2c&p=1";
}
}
/**
* Muestra una alerta indicando a los clientes que se deben conectar
*/
function consultarPrix() {
BootstrapDialog.show({
size: BootstrapDialog.INFORMATION,
message: 'Conectese para consultar el precio',
buttons: [{
label: 'Aceitar',
cssClass: 'btn-primary',
action: function(){
window.location.href="PStores?s=1825&o=login_b2c&p=1";
}
}, {
label: 'Cancelar',
action: function(dialogItself){
dialogItself.close();
}
}]
});
}
/**
* Valida los productos de la lista y actualiza
* el carro de compra. Si consigue productos sin
* stock, confirma si quiere que se añadan o
* continuar sin estos.
*
* Ojo!! incidencias con productos propios y config. de mostrar stock en listas escolares.
*/
function validarSincronoAlternate(f,favoritos) { // Ojo!! incidencias con productos propios y config. de mostrar stock en listas escolares
var productosAgregados = new Array();
var productosAgregadosSinStock = new Array();
var cont = 0;
var contSinStock = 0;
var avisoSinStock = "";
for (i=0;i < f.elements.length;i++) {
if (f.elements[i].type=='text') {
if (f.elements[i].value.length == 0 || !isNumeric(f.elements[i].value) || f.elements[i].value<0 ) {
f.elements[i].focus();
BootstrapDialog.alert("Deve indicar uma quantidade maior que 0 (zero) ", function(){});
return;
}
else {
if (favoritos != undefined && favoritos != true) {
var cod = f.elements[i].name;
cod = cod.substring(cod.indexOf("_")+1);
//Creamos input de num para favoritos con . (en favoritos viene con _ para que no se dupliquen)
var input = document.createElement("input");
input.setAttribute("type", "hidden");
input.setAttribute("name", "num."+cod);
input.setAttribute("id", "num."+cod);
input.setAttribute("value", "0");
f.appendChild(input);
}
}
if (favoritos == true && f.elements[i].name != null
&& !isNumeric(f.elements[i].name.substring(f.elements[i].name.indexOf(".")+1))) {
var codigo = f.elements[i].id;
codigo = codigo.substring(codigo.indexOf(".")+1);
var stock = document.getElementById('stock.'+codigo);
if(stock.value < 1){
avisoSinStock += codigo + ", ";
productosAgregadosSinStock[contSinStock] = new productVo(codigo,f.elements[i],true);
contSinStock++;
} else {
productosAgregados[cont] = new productVo(codigo,f.elements[i],true);
cont++;
}
} else if (favoritos != true){
if(isNumeric(f.elements[i].value) && f.elements[i].value > 0 && f.elements[i].disabled==false ){ //Es numerico y mayor que 0 asi que se añadirá al carro.
var codigo = f.elements[i].name;
if (isNumeric(codigo.substring(codigo.indexOf(".")+1)) || isNumeric(codigo.substring(codigo.indexOf("_")+1))) {
if (favoritos == undefined) {
codigo = codigo.substring(codigo.indexOf(".")+1);
} else {
codigo = codigo.substring(codigo.indexOf("_")+1);
input.setAttribute("value", document.getElementById('num_'+codigo).value);
f.appendChild(input);
}
var stock = document.getElementById('stock.'+codigo);
if(stock.value < 1){
avisoSinStock += codigo + ", ";
productosAgregadosSinStock[contSinStock] = new productVo(codigo,f.elements[i],true);
contSinStock++;
} else {
productosAgregados[cont] = new productVo(codigo,f.elements[i],true);
cont++;
}
}
}
}
}
}
if(avisoSinStock != ""){
avisoSinStock = avisoSinStock.substring(0, avisoSinStock.length - 2);
BootstrapDialog.alert("Para artigos "+ avisoSinStock +" não temos stock", function(){});
return;
}else{
aniadirMultiplesAjaxAsincrono(productosAgregados);
document.location = 'PStores?s=1825&o=viewCart_b2c&p=1&sc=true';
}
}
/*
* SAF - Comprueba si un determinado comprador dispone de crédito suficiente para realizar la compra
*/
function compruebaCreditoComprador(){
var res = true;
$.ajaxSetup({async: false});
$.get("jsp/b2c/registered/ajxCompruebaCreditoComprador.jsp?&t=a", function(data) {
var data = $.parseJSON(data);
if (data.ok != "" && $.trim(data.ok.toLowerCase()) == "false") {
res = false;
}
})
$.ajaxSetup({async: true});
return res;
}
/*
* Función que devuelve la cantidad de productos que ya hay añadida en el carro
*/
function compruebaCantidadCarro(codigo, num, stock){
var res = true;
$.ajaxSetup({async: false});
$.ajax({
type : "GET",
//async : false,
timeout: 20000,
data: {producto: codigo, cantidad: num, istock: stock},
url : "jsp/b2c/registered/ajxCompruebaCantidadCarro.jsp",
success : function(data) {
var dataResult = $.parseJSON(data);
if (dataResult.result != "") {
res = dataResult.result;
}
},
error : function(data) {}
});
$.ajaxSetup({async: true});
return res;
}
/* Configura el tamaño del lado izquierdo del div categorias (responsive) */
function openNav() {
document.getElementById("categorias").style.width = "360px";
document.body.style.overflow = 'hidden';
}
/* Configura el tamaño 0 del lado izquierdo del div categorias (responsive) */
function closeNav() {
document.getElementById("categorias").style.width = "0";
document.body.style.overflow = 'scroll';
}
/* Fija la barra de navegación cuando se realiza el scroll */
function fixedNavBar() {
if (window.pageYOffset >= sticky) {
navbar.classList.add("sticky");
if (/Mobi/.test(navigator.userAgent)){
/* Elimina sticky cuando llega a la parte superior de la web */
if (document.body.scrollTop < 20 || document.documentElement.scrollTop < 20) {
navbar.classList.remove("sticky");
}
if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
navbar.classList.add("sticky");
}
}
} else {
navbar.classList.remove("sticky");
}
}
/*
* Comprueba el stock y la cantidad de producto seleccionada.
*
* f: formulario a validar y enviar
*/
function validarCantidadListas(f) {
var avisoSinStock = "";
for (i=0; i < f.elements.length; i++) {
if (f.elements[i].type == 'text') {
if (f.elements[i].value.length == 0 || !isNumeric(f.elements[i].value) || f.elements[i].value < 0 ) {
f.elements[i].focus();
BootstrapDialog.alert("Deve indicar uma quantidade maior que 0 (zero) ", function(){});
return;
} else {
if (f.elements[i].disabled == false) { // entrada habilitada
var cod = f.elements[i].name;
cod = cod.substring(cod.indexOf("_") + 1);
// Creamos input de num con . (viene con _ para que no se dupliquen)
var input = document.createElement("input");
input.setAttribute("type", "hidden");
input.setAttribute("name", "num." + cod);
input.setAttribute("id", "num." + cod);
input.setAttribute("value", "0");
f.appendChild(input);
}
}
if (f.elements[i].disabled == false) {
if(isNumeric(f.elements[i].value) && f.elements[i].value > 0 ){ // Es numérico y mayor que 0, se añadirá al carro
var cod = f.elements[i].name;
if (isNumeric(cod.substring(cod.indexOf(".")+1)) || isNumeric(cod.substring(cod.indexOf("_")+1)) || cod.indexOf("_-") != -1) {
cod = cod.substring(cod.indexOf("_") + 1);
input.setAttribute("value", document.getElementById('num_' + cod).value);
f.appendChild(input);
var stock = document.getElementById('stock.'+cod);
if(stock.value < 1 && cod.indexOf("_-") > -1){
avisoSinStock += cod + ", ";
}
}
}
}
}
}
if (avisoSinStock != "") {
avisoSinStock = avisoSinStock.substring(0, avisoSinStock.length - 2);
BootstrapDialog.alert("Para artigos " + avisoSinStock +
" não temos stock"
, function(){
f.submit();
});
} else {
f.submit();
}
}
/*
* Devuelve el precio que se aplicaría en el carro a un artículo - cantidad
*
* cod: código producto
* valor: cantidad
*/
function calcularPrecioProductoCantidad(cod, valor) {
var precio = 0;
$.ajaxSetup({async: false});
$.get("jsp/b2c/ajxProduct3.jsp?codProduct="+cod+"&cantidad="+valor, function(data) {
if(data != null && data.length > 0){
var dataJSON = $.parseJSON(data);
precio = dataJSON.precio;
}
});
$.ajaxSetup({async: true});
return precio;
}
//Busca la equivalencia de un código en la tabla INTXML_REFERENCIAS para un determinado cliente
function reemplazarCodigoEquivalente(codProduct) {
var finished, dataReplaced, codEquivalente;
$.ajaxSetup({async: false});
finished = $.get("jsp/b2b/ajxProductRef.jsp?codProduct=" + codProduct + "&codCliente=" + 19558, function(data){
dataReplaced = $.parseJSON(data);
if (dataReplaced.codProductoCSP > 0) {
codEquivalente = dataReplaced.codProductoCSP;
} else {
codEquivalente = codProduct;
}
});
$.ajaxSetup({async: true});
return codEquivalente;
}
//Si el cliente es Hyperburo, reemplaza el código determinado de Hyperburo por el código CLD equivalente
function searchFormSend(f){
if( f.searchString.value != '' && !isNaN(f.searchString.value)) {
}
f.submit();
}