301 lines
7.7 KiB
JavaScript
301 lines
7.7 KiB
JavaScript
var adicionais = []
|
|
var sabores_selecionados = []
|
|
var adicionais_id = []
|
|
var valor_adicional = 0
|
|
|
|
$(document).on("click", ".sacola-adicionar", function (e) {
|
|
|
|
let validateMensagem = []
|
|
$(".minimo_escolha_valida").each(function (e, v) {
|
|
if($(this).val() == 0){
|
|
let categoria_nome = $(this).prev().val()
|
|
let minimo = $(this).prev().prev().val()
|
|
validateMensagem.push("Selecione ao menos <strong>" + minimo + "</strong> item para adicional <strong>" + categoria_nome + "</strong>")
|
|
}
|
|
})
|
|
|
|
$(".maximo_escolha").each(function (e, v) {
|
|
if($(this).val() > 0){
|
|
let categoria_nome = $(this).prev().prev().val()
|
|
let conta = $(this).next().val()
|
|
let maximo = $(this).val()
|
|
console.log(maximo)
|
|
console.log(conta)
|
|
if(conta > maximo){
|
|
validateMensagem.push("Selecione no máximo <strong>" + maximo + "</strong> para adicional <strong>" + categoria_nome + "</strong>")
|
|
}
|
|
}
|
|
})
|
|
|
|
setTimeout(() => {
|
|
|
|
if(validateMensagem.length > 0){
|
|
validateMensagem.map((m) => {
|
|
toastr.warning(m)
|
|
})
|
|
}else{
|
|
$(".form-modal-item").submit()
|
|
}
|
|
}, 100)
|
|
|
|
})
|
|
|
|
$(document).on("click", ".opcao", function () {
|
|
$('.opcao').removeClass('active')
|
|
$('.opcoes-input').html('')
|
|
var valor = $(this).attr('adicional-valor');
|
|
var id = $(this).attr('adicional-id');
|
|
var categoria_id = $(this).attr('categoria-adicional-id');
|
|
|
|
if(adicionais_id.includes(id)){
|
|
adicionais_id = adicionais.filter((x) => {
|
|
return x != id
|
|
})
|
|
adicionais = adicionais.filter((x) => {
|
|
return x.id != id
|
|
})
|
|
}else{
|
|
adicionais.push({id: id, valor: valor, categoria_id: categoria_id})
|
|
adicionais_id.push(id)
|
|
}
|
|
|
|
let minimo_escolha = $('.adicional_categoria_'+categoria_id).find('.minimo_escolha').val()
|
|
if(minimo_escolha > 0){
|
|
let minimo_escolha_valida = 0
|
|
adicionais.map((x) => {
|
|
if(x.categoria_id == categoria_id){
|
|
minimo_escolha_valida = 1
|
|
}
|
|
})
|
|
|
|
setTimeout(() => {
|
|
$('.adicional_categoria_'+categoria_id).find('.minimo_escolha_valida').val(minimo_escolha_valida)
|
|
}, 50)
|
|
}
|
|
|
|
let maximo_escolha = $('.adicional_categoria_'+categoria_id).find('.maximo_escolha').val()
|
|
if(maximo_escolha > 0){
|
|
let minimo_escolha_conta = 0
|
|
adicionais.map((x) => {
|
|
if(x.categoria_id == categoria_id){
|
|
minimo_escolha_conta++
|
|
}
|
|
})
|
|
setTimeout(() => {
|
|
$('.adicional_categoria_'+categoria_id).find('.maximo_escolha_contador').val(minimo_escolha_conta)
|
|
}, 50)
|
|
|
|
}
|
|
setTimeout(() => {
|
|
percorreAdicionais(adicionais)
|
|
}, 10)
|
|
});
|
|
|
|
$(".btn-delete").on("click", function (e) {
|
|
e.preventDefault();
|
|
var form = $(this).parents("form").attr("id");
|
|
|
|
swal({
|
|
title: "Você está certo?",
|
|
text: "Uma vez deletado, você não poderá recuperar esse item novamente!",
|
|
icon: "warning",
|
|
buttons: true,
|
|
buttons: ["Cancelar", "Excluir"],
|
|
dangerMode: true,
|
|
}).then((isConfirm) => {
|
|
if (isConfirm) {
|
|
|
|
document.getElementById(form).submit();
|
|
} else {
|
|
swal("", "Este item está salvo!", "info");
|
|
}
|
|
});
|
|
});
|
|
|
|
function percorreAdicionais(adicionais){
|
|
valor_adicional = 0
|
|
adicionais.map((x) => {
|
|
$('.op_'+x.id).addClass('active')
|
|
$('.opcoes-input').append('<input type="hidden" value="'+x.id+'" name="adicional[]"/>')
|
|
valor_adicional += parseFloat(x.valor)
|
|
})
|
|
setTimeout(() => {
|
|
atualizaSubTotal()
|
|
}, 10)
|
|
}
|
|
|
|
$(document).on("click", ".campo-numero .decrementar", function () {
|
|
var valor = parseInt( $(this).siblings('input').val() );
|
|
var newvalor = valor-1;
|
|
if( newvalor >= 1 ) {
|
|
$(this).siblings('input').val(newvalor);
|
|
} else {
|
|
$(this).siblings('input').val(1);
|
|
}
|
|
atualizaSubTotal()
|
|
$(this).siblings('input').trigger("change");
|
|
});
|
|
|
|
$(document).on("click", ".campo-numero .incrementar", function () {
|
|
|
|
var valor = parseInt( $(this).siblings('input').val() );
|
|
var newvalor = valor+1;
|
|
$(this).siblings('input').val(newvalor);
|
|
$(this).siblings('input').trigger("change");
|
|
atualizaSubTotal()
|
|
|
|
});
|
|
|
|
function atualizaSubTotal(){
|
|
|
|
let qtd = $('#quantidade').val()
|
|
let valor_unitario = $('#valor_unitario_produto').val()
|
|
let total = qtd * (parseFloat(valor_unitario) + parseFloat(valor_adicional))
|
|
$('.subtotal').html('<strong>Total:</strong> R$ ' + convertFloatToMoeda(total));
|
|
$('#inp-sub_total').val(total);
|
|
}
|
|
|
|
function convertMoedaToFloat(value) {
|
|
if (!value) {
|
|
return 0;
|
|
}
|
|
|
|
var number_without_mask = value.replaceAll(".", "").replaceAll(",", ".");
|
|
return parseFloat(number_without_mask.replace(/[^0-9\.]+/g, ""));
|
|
}
|
|
|
|
function convertFloatToMoeda(value) {
|
|
value = parseFloat(value)
|
|
return value.toLocaleString("pt-BR", {
|
|
minimumFractionDigits: 2,
|
|
maximumFractionDigits: 2
|
|
});
|
|
}
|
|
|
|
$(document).on("keyup", "#inp-pesquisa_sabor", function () {
|
|
let pesquisa = $(this).val()
|
|
let tamanho_id = $('#tamanho_id').val()
|
|
let produto_id = $('#produto_id').val()
|
|
if(!tamanho_id){
|
|
swal("Atenção", "Selecione o tamanho primeiro", "warning")
|
|
return;
|
|
}
|
|
|
|
if(pesquisa.length > 1){
|
|
$.get(path_url + 'api/delivery-link/pesquisa-pizza', {
|
|
pesquisa: pesquisa,
|
|
tamanho_id: tamanho_id,
|
|
produto_id: produto_id,
|
|
empresa_id: $('#inp-empresa_id').val(),
|
|
|
|
}).done((res) => {
|
|
console.clear()
|
|
$('.div-sabores').html(res)
|
|
}).fail((err) => {
|
|
console.log(err)
|
|
})
|
|
}
|
|
});
|
|
|
|
$(document).on("change", "#tamanho_id", function () {
|
|
let pesquisa = $("#inp-pesquisa_sabor").val()
|
|
let tamanho_id = $('#tamanho_id').val()
|
|
let produto_id = $('#produto_id').val()
|
|
|
|
if(pesquisa.length > 1){
|
|
$.get(path_url + 'api/delivery-link/pesquisa-pizza', {
|
|
pesquisa: pesquisa,
|
|
tamanho_id: tamanho_id,
|
|
produto_id: produto_id,
|
|
empresa_id: $('#inp-empresa_id').val(),
|
|
|
|
}).done((res) => {
|
|
console.clear()
|
|
$('.div-sabores').html(res)
|
|
montaSabores()
|
|
}).fail((err) => {
|
|
console.log(err)
|
|
})
|
|
}else{
|
|
$.get(path_url + 'api/delivery-link/monta-pizza', {
|
|
sabores_selecionados: sabores_selecionados,
|
|
produto_id: produto_id,
|
|
tamanho_id: tamanho_id
|
|
}).done((res) => {
|
|
console.clear()
|
|
$('.total-pizza').text('R$ ' + convertFloatToMoeda(res.valor_pizza))
|
|
}).fail((err) => {
|
|
console.log(err)
|
|
})
|
|
|
|
setTimeout(() => {
|
|
validaValorPizza()
|
|
}, 500)
|
|
}
|
|
|
|
});
|
|
|
|
function seleciona_tamanho(produto_id){
|
|
if(!sabores_selecionados.includes(produto_id)){
|
|
sabores_selecionados.push(produto_id)
|
|
}
|
|
setTimeout(() => {
|
|
console.log(sabores_selecionados)
|
|
montaSabores()
|
|
}, 10)
|
|
}
|
|
|
|
function remove_sabor(produto_id){
|
|
let pizza_princial = $('#produto_id').val()
|
|
if(pizza_princial == produto_id){
|
|
toastr.warning("Não é possível remover o sabor principal!")
|
|
return;
|
|
}
|
|
sabores_selecionados = sabores_selecionados.filter((x) => {
|
|
return x != produto_id
|
|
})
|
|
setTimeout(() => {
|
|
console.log(sabores_selecionados)
|
|
montaSabores()
|
|
}, 10)
|
|
}
|
|
|
|
function validaValorPizza(){
|
|
let total_pizza = convertMoedaToFloat($('.total-pizza').text())
|
|
if(total_pizza > 0){
|
|
$('.sacola-adicionar').removeAttr('disabled')
|
|
}else{
|
|
$('.sacola-adicionar').attr('disabled', 1)
|
|
}
|
|
}
|
|
|
|
function montaSabores(){
|
|
$('.sabores-input').html('')
|
|
let produto_id = $('#produto_id').val()
|
|
let tamanho_id = $('#tamanho_id').val()
|
|
|
|
$.get(path_url + 'api/delivery-link/monta-pizza', {
|
|
sabores_selecionados: sabores_selecionados,
|
|
produto_id: produto_id,
|
|
tamanho_id: tamanho_id
|
|
}).done((res) => {
|
|
console.clear()
|
|
$('.div-sabores-selecionados').html(res.view)
|
|
console.log(res)
|
|
res.sabores.map((x) => {
|
|
$('.sabores-input').append('<input type="hidden" value="'+x.id+'" name="pizza_id[]"/>')
|
|
})
|
|
$('.total-pizza').text('R$ ' + convertFloatToMoeda(res.valor_pizza))
|
|
$('#inp-sub_total').val(res.valor_pizza);
|
|
|
|
}).fail((err) => {
|
|
console.log(err)
|
|
toastr.warning(err.responseText)
|
|
})
|
|
|
|
setTimeout(() => {
|
|
validaValorPizza()
|
|
}, 100)
|
|
}
|
|
|