Horário de Atendimento:
Dias úteis, das 8h00 às 17h30
Redes Sociais
Serviços
Convênio Farmácia
Farmácia Popular
Encarte
Minha conta
Acessar
Cadastrar
Meus pedidos
Editar endereços
Compra Online
Política de preços
Política de entrega
Polítitca de privacidade
Copyright ©? 2021 Farmácias Permanente - Todos os direitos reservados. RAZÃO SOCIAL | COMERCIAL DRUGSTORE|CNPJ: 05.230.009/0009-60 | End: Av. Tomas Espindola nº 630 - Farol - Maceió - AL| CEP:57.051-000 Farmacêutica Responsável: Maria Cristiene de Oliveira Alves, CRF/AL Nº 2558 OBS: Preços exclusivos para produtos comercializados na Loja Virtual da Farmácias Permanente | Horário de Atendimento: De Segunda à Sexta das 8h00 às 17h30 Email: [emailprotected] . As informações presentes neste site não devem ser utilizadas para automedicação e, de forma alguma, substituem as orientações de um profissional da área médica. Apenas o médico está capacitado para diagnosticar problemas de saúde e prescrever o tratamento adequado. Se os sintomas persistirem, um médico deve ser consultado. A Farmácia Permanente trabalha com as tecnologias mais avançadas de proteção de dados, para que você possa realizar suas compras com tranquilidade. A privacidade e a segurança dos clientes são compromissos da Farmácias Permanente. Todos os pedidos efetuados estão sujeitos à confirmação da disponibilidade de produto em nosso estoque.
Rede associada a:
Desenvolvido Por
${this.nome}
${ this.is_controlado ? `
` : `` }
${(this._produto.valor_ini * this._produto.quantidade) != this._valor_multiplicado ? `` : ``} R$ ${this.valor_multiplicado}
${passoAtual !== 'pacotes' ? ` ${this._produto.quantidade} unidade${this._produto.quantidade && this._produto.quantidade > 1 ? `s` : ``} ` : ``}
${passoAtual === 'pacotes' ? `
${this._produto.quantidade ? this._produto.quantidade : ""}
` : ` `}
`; } } Produto.prototype.remover = function() { load("on", $(".asidebar")); $.ajax({ type: "POST", url: "/carrinho/remover/todos", data: { "csrfmiddlewaretoken": '2IciJSAJkf9nhPjQpmUaWQyeMfKIibI7hGvpITiZVBE4CbpW4QWY8LsHY7YV5sKn', "hash_produto": this.hash, "token_nsu": this.token_nsu }, success: (data) => { load("off", $(".asidebar")); filtroParaDadosAnaliticos('RemoveFromCart', { items: [ { id: this._produto.produto_id, price: this._produto.valor_ini, discount: this._produto.valor_desc, item_name: this._produto.produto__nm_url_ecommerce, promotion_name: this._produto.descontoprodutopreco__desconto__tipo_id, currency: "BRL", quantidade: this._produto.quantidade, index: this._produto.origem_posicao, item_list_name: this._produto.origem_descricao, item_list_id: this._produto.origem_descricao ? this._produto.origem_descricao.toLowerCase().replace(/\s/g, "_") : '', }, ] }) carrinho.instance._atualizarCarrinho(); }, error: (data) => { load("off", $(".asidebar")); toastr.error("Ocorreu um erro inesperado ao remover o produto do carrinho.", "Erro ao enviar"); } }); } function FaixaHorario(id, faixa, _faixas) { this.id = id; this.faixa = faixa; this._selecionado = false; this._faixas = _faixas; } FaixaHorario.prototype = { get selecionado() { return this._selecionado; }, set selecionado(value) { this._selecionado = value; this._faixas._carregarTemplate(); }, get template() { return `
`; } } function FaixaHorarioComponent(id, _entrega) { this.id = id; this._entrega = _entrega; this._faixas = null; this._carregarFaixas(); } FaixaHorarioComponent.prototype = { get valid() { return this.value ? true : false; }, get value() { const faixa = this._faixas ? this._faixas.filter((faixa) => { return faixa.selecionado }) : []; return faixa.length > 0 ? faixa[0] : null; }, set value(value) { if (!this.value || this.value.id !== value) { this._faixas.map((faixa) => { faixa.id === value ? faixa.selecionado = true : faixa.selecionado ? faixa.selecionado = false : ''; if (faixa.id === value) { this._entrega.faixa_entrega = faixa.faixa; onToggleCarrinhoPopUp('', '#popupAgendada'); } }); } }, get faixas() { return this._faixas; }, set faixas(value) { const faixas = []; let i = 0; for (const faixa of value) { i++; faixas.push(new FaixaHorario(i, faixa, this)); } this._faixas = faixas; this._carregarTemplate(); }, get template() { return $.map(this._faixas, (elem) => { return elem.template; }).join(''); } } FaixaHorarioComponent.prototype._carregarFaixas = function() { toastr.options.target = null; const _pacote = $.extend(true, {}, this._entrega._entrega_component._pacote); toastr.options.target = 'body'; delete _pacote._carrinho; delete _pacote.filial; delete _pacote.entregas; delete _pacote.entrega; delete _pacote.produtos; const _produtos = []; for (const produto of _pacote._produtos) { const _produto = $.extend(true, {}, produto); delete _produto._pacote; _produtos.push(_produto); } _pacote._produtos = _produtos; load("on", $("#popupEntrega")); $.ajax({ type: "POST", url: "/entrega/agendada", data: { "csrfmiddlewaretoken": "2IciJSAJkf9nhPjQpmUaWQyeMfKIibI7hGvpITiZVBE4CbpW4QWY8LsHY7YV5sKn", carrinho_completo: _pacote.carrinho_completo, cd_filial: this._entrega.filial.cd_filial, tempo: this._entrega.dadosComplemento.tempo, }, success: (data) => { load("off", $("#popupEntrega")); this.faixas = data.value; onToggleCarrinhoPopUp('open', '#popupAgendada'); }, error: (data) => { load("off", $("#popupEntrega")); } }); } FaixaHorarioComponent.prototype._carregarTemplate = function() { $('#carrinho-horarios-agendada').html(this.template); } function Agendada(id, tipo_codigo, _entrega) { this.id = id; this.tipo_codigo = tipo_codigo; this._entrega = _entrega; } Agendada.prototype = { get template() { let html_template; if (this._entrega.faixa_entrega) { html_template = `
${this._entrega.faixa_entrega.descricao_combobox.split('%quebralinha%')[0]}
${this._entrega.faixa_entrega.descricao_combobox.split('%quebralinha%')[1]}
`; } else { html_template = `
Disponibilidades
Selecione o horário que deseja receber seu pacote
`; } return `
Selecione o horário que deseja receber
${html_template}
`; } } Agendada.prototype._selecionar_faixa = function() { /*if (!this._faixa_componente) { this._faixa_componente = new FaixaHorarioComponent(this.id, this._entrega); } else { onToggleCarrinhoPopUp('open', '#popupAgendada'); }*/ this._faixa_componente = new FaixaHorarioComponent(this.id, this._entrega); } function Loja(id, filial, _lojas) { this.id = id; this.filial = filial; this._selecionado = false; this._lojas = _lojas; } Loja.prototype = { get selecionado() { return this._selecionado; }, set selecionado(value) { this._selecionado = value; this._lojas._carregarTemplate(); }, get horarios() { let html_horarios = ``; if(this.filial.is_24h){ html_horarios += `Seg a sex: 24h | `; } else if (this.filial.hr_abertura_util && this.filial.hr_fechamento_util) { html_horarios += `Seg a sex: ${this.filial.hr_abertura_util && this.filial.hr_fechamento_util ? this.filial.hr_abertura_util + ` às ` + this.filial.hr_fechamento_util : 'Fechado'} | `; } if(this.filial.is_24h){ html_horarios += `Sáb: 24h | `; } else if (this.filial.hr_abertura_util && this.filial.hr_fechamento_util) { html_horarios += `Sáb: ${this.filial.hr_abertura_sab && this.filial.hr_fechamento_sab ? this.filial.hr_abertura_sab + ` às ` + this.filial.hr_fechamento_sab : 'Fechado'} | `; } if(this.filial.is_24h){ html_horarios += `Dom: 24h | `; }else if (this.filial.hr_abertura_util && this.filial.hr_fechamento_util) { html_horarios += `Dom: ${this.filial.hr_abertura_dom && this.filial.hr_fechamento_dom ? this.filial.hr_abertura_dom + ` às ` + this.filial.hr_fechamento_dom : 'Fechado'}`; } return html_horarios; }, get template() { return `
`; } } function LojasComponent(id, _entrega) { this.id = id; this._entrega = _entrega; this._lojas = null; this._carregarLojas(); } LojasComponent.prototype = { get valid() { return this.value ? true : false; }, get value() { const loja = this._lojas ? this._lojas.filter((loja) => { return loja.selecionado }) : []; return loja.length > 0 ? loja[0] : null; }, set value(value) { if (!this.value || this.value.id !== value) { this._lojas.map((loja) => { loja.id === value ? loja.selecionado = true : loja.selecionado ? loja.selecionado = false : ''; if (loja.id === value) { this._entrega.filial = loja.filial; onToggleCarrinhoPopUp('', '#popupLojas'); } }); } }, get lojas() { return this._lojas; }, set lojas(value) { const filiais = []; let i = 0; for (const filial of value) { i++ filiais.push(new Loja(filial.cd_localentrega, filial, this)); } this._lojas = filiais; this._carregarTemplate(); }, get template() { let html_template = ``; html_template += `
`; let lojas = this.lojas.filter((loja) => { let texto = `${loja.filial.nm_filial} ${loja.filial.endereco}, ${loja.filial.numero} - ${title(loja.filial.bairro)}, ${loja.filial.cidade} - ${loja.filial.uf}`.toLowerCase(); return texto.indexOf(this._entrega.retirada_filtro.toLowerCase()) > -1; }) html_template += $.map(lojas, (elem) => { return elem.template; }).join(''); html_template += `
`; return html_template; } } LojasComponent.prototype._carregarFiltros = function() { let html_template = `
`; $('#carrinho-lojas-pesquisa').html(html_template); } LojasComponent.prototype._carregarLojas = function() { toastr.options.target = null; const _pacote = $.extend(true, {}, this._entrega._entrega_component._pacote); let filail_empresa_id = $('#carrinho-continuar-entrega').val(); toastr.options.target = 'body'; delete _pacote._carrinho; delete _pacote.filial; delete _pacote.entregas; delete _pacote.entrega; delete _pacote.produtos; const _produtos = []; for (const produto of _pacote._produtos) { const _produto = $.extend(true, {}, produto); delete _produto._pacote; _produtos.push(_produto); } _pacote._produtos = _produtos; load("on", $("#popupEntrega")); load("on", $("#popupLojas")); load("on", $('.asidebar')) let is_proximas_mim = this._entrega.coordenadas ? true : false; $.ajax({ type: "POST", url: "/entrega/buscar/retiradas", data: { "csrfmiddlewaretoken": "2IciJSAJkf9nhPjQpmUaWQyeMfKIibI7hGvpITiZVBE4CbpW4QWY8LsHY7YV5sKn", coordenadas: this._entrega.coordenadas, proximas_mim: is_proximas_mim, endereco_id: carrinho.instance.endereco.value.id, cep: carrinho.instance.endereco.value.cep, filial_id: filail_empresa_id, pacote: JSON.stringify(_pacote), tipo_entrega: this.id }, success: (data) => { load('off', $('.asidebar')) load("off", $("#popupEntrega")); load("off", $("#popupLojas")); this._carregarFiltros(); this.lojas = data.lista_filiais; onToggleCarrinhoPopUp('open', '#popupLojas'); }, error: (data) => { load('off', $('.asidebar')) load("off", $("#popupLojas")); load("off", $("#popupEntrega")); } }); } LojasComponent.prototype._carregarTemplate = function() { $('#carrinho-lojas').html(this.template); } function Retirada(id, tipo_codigo, _entrega) { this.id = id; this.tipo_codigo = tipo_codigo; this._entrega = _entrega; } Retirada.prototype = { get horarios() { let html_horarios = ``; if(this._entrega.filial.is_24h){ html_horarios += `Seg a sex: 24h | `; } else if (this._entrega.filial.hr_abertura_util && this._entrega.filial.hr_fechamento_util) { html_horarios += `Seg a sex: ${this._entrega.filial.hr_abertura_util && this._entrega.filial.hr_fechamento_util ? this._entrega.filial.hr_abertura_util + ` às ` + this._entrega.filial.hr_fechamento_util : 'Fechado'} | `; } if(this._entrega.filial.is_24h){ html_horarios += `Sáb: 24h | `; } else if (this._entrega.filial.hr_abertura_util && this._entrega.filial.hr_fechamento_util) { html_horarios += `Sáb: ${this._entrega.filial.hr_abertura_sab && this._entrega.filial.hr_fechamento_sab ? this._entrega.filial.hr_abertura_sab + ` às ` + this._entrega.filial.hr_fechamento_sab : 'Fechado'} | `; } if(this._entrega.filial.is_24h){ html_horarios += `Dom: 24h | `; }else if (this._entrega.filial.hr_abertura_util && this._entrega.filial.hr_fechamento_util) { html_horarios += `Dom: ${this._entrega.filial.hr_abertura_dom && this._entrega.filial.hr_fechamento_dom ? this._entrega.filial.hr_abertura_dom + ` às ` + this._entrega.filial.hr_fechamento_dom : 'Fechado'}`; } return html_horarios; }, get template() { let html_template; let html_retirada; let titulo_retirada; let descricao_retirada; let nm_loja_retirada; if(this._entrega.nome === 'retirada'){ titulo_retirada = 'Selecione a loja para retirar'; nm_loja_retirada = 'Loja' descricao_retirada = 'Selecione a loja para retirar seu pacote'; } else { titulo_retirada = 'Selecione o local para retirar'; nm_loja_retirada = 'Local' descricao_retirada = 'Selecione o local para retirar seu pacote'; } if (this._entrega.filial) { html_template = `
${title(this._entrega.filial.nm_filial)} (${this._entrega.filial.cd_filial})
${title(this._entrega.filial.endereco)}, ${this._entrega.filial.numero} - ${title(this._entrega.filial.bairro)} - ${this._entrega.filial.cidade}/${this._entrega.filial.uf}
${this.horarios}
Ver mapa
`; } else { html_template = `
${nm_loja_retirada}
${descricao_retirada}
`; } if (this._entrega.retirada_terceiro) { let nm_completo = this._entrega.retirada_terceiro_nome; let cpf = this._entrega.retirada_terceiro_cpf; let telefone = this._entrega.retirada_terceiro_telefone; html_retirada = `
`; } else { html_retirada = ``; } return `
${html_retirada} `; /*
Autorizar outra pessoa a retirar
Sim
Não
*/ } } Retirada.prototype._selecionar_loja = function() { /*if (!this._loja_componente) { this._loja_componente = new LojasComponent(this.id, this._entrega); } else { onToggleCarrinhoPopUp('open', '#popupLojas'); }*/ this._loja_componente = new LojasComponent(this.id, this._entrega); } function Entrega(index, nome, _filial, nome_descritivo, vlr_frete, descricao, imagem, tipo_codigo, dadosComplemento, _entrega_component) { this._entrega_component = _entrega_component; this.index = index; this.nome = nome; this.dadosComplemento = dadosComplemento; this._valid = true; this.filial = _filial; this.nome_descritivo = nome_descritivo; this._vlr_frete = vlr_frete; this.descricao = descricao; this.imagem = imagem; this.tipo_codigo = tipo_codigo; this._selecionado = false; if (_entrega_component && _entrega_component.value && _entrega_component.value.nome == nome) { this._selecionado = true; } } Entrega.prototype = { get filial() { return this._filial; }, set filial(value) { if (!this.filial || this.filial.cd_localentrega != value.cd_localentrega) { this._filial = value; this._entrega_component._carregarTemplate(); } }, get valid() { return this._valid; }, set valid(value) { this._valid = value; }, get faixa_entrega() { return this._faixa_entrega; }, set faixa_entrega(value) { this._faixa_entrega = value; this._entrega_component._carregarTemplate(); }, get retirada_filtro() { return this._retirada_filtro ? this._retirada_filtro : ''; }, set retirada_filtro(value) { this._retirada_filtro = value; if(this.entrega_complemento && this.entrega_complemento._loja_componente) this.entrega_complemento._loja_componente._carregarTemplate(); }, get proximas_mim() { return this._proximas_mim; }, set proximas_mim(value) { this._pegarLocalizacao(value); }, get coordenadas() { return this._coordenadas ? this._coordenadas : ''; }, set coordenadas(value) { this._coordenadas = value; }, get retirada_terceiro() { return this._retirada_terceiro; }, set retirada_terceiro(value) { if (value) { this._retirada_terceiro = true; } else { this._retirada_terceiro = false; } this._entrega_component._carregarTemplate(); }, get retirada_terceiro_nome() { return this._retirada_terceiro_nome; }, set retirada_terceiro_nome(value) { this._retirada_terceiro_nome = value; this.retirada_terceiro = 'on'; }, get retirada_terceiro_telefone() { return this._retirada_terceiro_telefone; }, set retirada_terceiro_telefone(value) { this._retirada_terceiro_telefone = value; this.retirada_terceiro = 'on'; }, get retirada_terceiro_cpf() { return this._retirada_terceiro_cpf; }, set retirada_terceiro_cpf(value) { this._retirada_terceiro_cpf = value; this.retirada_terceiro = 'on'; }, get vlr_frete() { return this._vlr_frete > 0 ? 'R$ ' + parseFloat(this._vlr_frete).toLocaleFixed(2) : 'Grátis'; }, set vlr_frete(value) { this._vlr_frete = value; }, get selecionado() { return this._selecionado; }, set selecionado(value) { this._selecionado = value; }, get entregaComplemento() { if (this._entrega_component.value && this.selecionado) { if (this.tipo_codigo == 'retirada') { this.entrega_complemento = new Retirada(this.nome, this.tipo_codigo, this); return this.entrega_complemento.template; } else if (this._entrega_component.value.nome === 'entrega_agendada') { this.entrega_complemento = new Agendada(this.nome, this.tipo_codigo, this); return this.entrega_complemento.template; } } return ''; }, get template_mobile() { return `
`; }, get template() { return `
`; } } var empresaId = null; Entrega.prototype._atualizarEmpresaId = function (cd_filial) { if(cd_filial){ $('#carrinho-continuar-entrega').val(cd_filial) $.ajax({ url: "/pagamento/buscar/chave", type: "POST", data: { cd_filial: cd_filial, csrfmiddlewaretoken: '2IciJSAJkf9nhPjQpmUaWQyeMfKIibI7hGvpITiZVBE4CbpW4QWY8LsHY7YV5sKn', }, success: function (data) { if (data.status) { empresaId = data.empresa_id; } else { toastr.error(data.descricao, 'Erro'); } }, error: function (data) { if (data.statusText !== 'error') { toastr.error('Ocorreu um erro inesperado.', 'Erro'); } } }); } } Entrega.prototype._pegarLocalizacao = function (value) { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition( (position) => { this._proximas_mim = value; if(value){ this.coordenadas = `${position.coords.latitude}, ${position.coords.longitude}`; } else { this.coordenadas = ''; } this.entrega_complemento._loja_componente._carregarLojas(); }, (error) => { $('#modal_localizacao_nao_permitida').modal('show'); this._proximas_mim = ''; this.coordenadas = ''; this.entrega_complemento._loja_componente._carregarLojas(); } ); } else { $('#modal_localizacao_bloqueada').modal('show'); this._proximas_mim = ''; this.coordenadas = ''; this.entrega_complemento._loja_componente._carregarLojas(); } } function EntregaComponent(entregas, _pacote) { this.entregas = entregas; this._pacote = _pacote; this._carregarTodasEntregas() } EntregaComponent.prototype = { get valid() { if (!this.value) { return false; } else { if (this.value.nome == 'entrega_agendada') { if (!this.value.faixa_entrega) { toastr.error('Selecione o horário para receber o pacote', 'Erro'); this.value.valid = false; return false; } } else { if (!this.value.filial) { this.value.valid = false; toastr.error('Selecione a Loja para retirar seu pacote.', 'Erro'); return false; } if(false){ if(this.value.retirada_terceiro && (!this.value.retirada_terceiro_nome || !this.value.retirada_terceiro_cpf || !this.value.retirada_terceiro_telefone)){ this.value.valid = false toastr.error('Preencha os campos obrigatórios de retirada por terceiro para prosseguir.', 'Erro'); return false; } } } } return true; }, get validRetiradaTerceiro() { if (!this.value) { return false; } if(false){ if (!this.value || (!this.value._retirada_terceiro_nome || !this.value._retirada_terceiro_cpf || !this.value._retirada_terceiro_telefone)) { this.value.valid = false; toastr.error('Preencha os campos obrigatórios de retirada por terceiro para prosseguir.', 'Erro'); return false; } } return true; }, get nome() { if (this.value && this.value.nome_descritivo) { return this.value.nome_descritivo + ' - ' + (this.value.vlr_frete === 'Grátis' ? this.value.vlr_frete : this.value.vlr_frete); } else { return null; } }, get value() { return this._value; }, set value(value) { if (carrinho.instance.cupom && (carrinho.instance.cupom.cupom_id || carrinho.instance.cupom.codigo)) { carrinho.instance.cupom = ''; toastr.warning('Cupom removido, pois a entrega foi alterada, aplique o cupom novamente!!'); } if (value != this.value) { //this.entregasDoTipo.filter((entrega) => { entrega.nome === value ? entrega.selecionado = true : entrega.selecionado = false; }); // const entrega = this.entregasDoTipo.filter((entrega) => { return entrega.selecionado }); //this._value = entrega.length > 0 ? entrega[0] : null; if(this.todasEntregas){ this.todasEntregas.filter((entrega) => { entrega.nome === value ? entrega.selecionado = true : entrega.selecionado = false; }); const entrega = this.todasEntregas.filter((entrega) => { return entrega.selecionado }); this._value = entrega.length > 0 ? entrega[0] : null; } //this._pacote._carrinho.cupom = ''; carrinho.instance.entrega_alterada = true; } this._logicaFrete(); this._carregarTemplate(); this._pacote._carregarTemplate(); if($('#ancora') && $('#ancora').offset()){ $('#carrinho-tipo-entregas').animate({ scrollTop: $('#ancora').offset().top / 3 }, 100); } if(this._value && this._value.entrega_complemento){ if(this._value.entrega_complemento._selecionar_loja){ this._value.entrega_complemento._selecionar_loja(); } else if (this._value.entrega_complemento._selecionar_faixa) { this._value.entrega_complemento._selecionar_faixa(); } } }, get todasEntregas() { return this._todasEntregas; }, set todasEntregas(value) { this._todasEntregas = value; this._carregarTemplate(); }, get tipo_entrega() { return this._tipo_entrega; }, set tipo_entrega(value) { this._tipo_entrega = value; this._carregarEntregas(); }, get entregasDoTipo() { return this._entregasDoTipo; }, set entregasDoTipo(value) { this._entregasDoTipo = value; this._carregarTemplate(); }, get template() { let html_template = `` if(this.todasEntregas && this.todasEntregas.length){ html_template += `
${this.todasEntregas.map(elem => { return elem.template_mobile; }).join('')}
? Saiba mais sobre os pacotes
` } return html_template; } } EntregaComponent.prototype._carregarTodasEntregas = function () { let _entregas = [] for (const entrega of this.entregas) { _entregas.push(entrega); } let i = 0; _entregas = _entregas.map((entrega) => { let filial = entrega.filial, nome = entrega.nome, nm_descritivo = entrega.nm_descritivo, valor = entrega.valor, descricao = entrega.descricao, imagem = entrega.imagem, tipo_codigo = entrega.tipo_codigo; i++; return new Entrega(i, nome, filial, nm_descritivo, valor, descricao, imagem, tipo_codigo, entrega, this); }) this.todasEntregas = _entregas; } EntregaComponent.prototype._logicaFrete = function () { let maior_frete = 0; let maior_entrega_nome = ''; let entregas = []; for (const index in this._pacote._carrinho.pacotes) { const pac = this._pacote._carrinho.pacotes[index]; if (pac.entrega && pac.entrega.value && (pac.entrega.value.tipo_codigo === 'entrega' && pac.entrega.value.nome !== 'correios')) { entregas.push(1); } // atualiza valores das entregas do front com a do back for (const entrega of pac.entrega.entregas) { if (pac.entrega.value && entrega.nome === pac.entrega.value.nome) { pac.entrega.value._vlr_frete = entrega.valor; } } // faz logica para pegar o frete mais caro das entregas que n sao correios for (const pacote of this._pacote._carrinho.pacotes) { let entrega = pacote.entrega.value; if ( entrega && (entrega.tipo_codigo === 'entrega' && entrega.nome !== 'correios') ) { if( ( pac.entrega && pac.entrega.value ) && pac.entrega.value.tipo_codigo === 'entrega' && pac.entrega.value.nome !== 'correios' ){ if (pac.entrega.value._vlr_frete > entrega._vlr_frete) { maior_frete = pac.entrega.value._vlr_frete; maior_entrega_nome = pac.entrega.value.nome; } } } } } /*let esseEoPrimeiroFreteGratisDaEntrega = 0; for (const index in this._pacote._carrinho.pacotes) { const pac = this._pacote._carrinho.pacotes[index]; // logica para cupom frete gratis if (this._pacote._carrinho.cupom.cupom_id && this._pacote._carrinho.cupom.is_frete_gratis && this._pacote._carrinho.cupom.pacotes.indexOf(+index + 1) > - 1) { pac.entrega.value._vlr_frete = 0; } // faz logica para o frete gratis e deixar corbar apenas o mais caro das entregas que n sao correios else if (entregas.length > 1 && pac.entrega.value.tipo_codigo === 'entrega' && pac.entrega.value.nome !== 'correios') { let isFretegratis = 0; if (pac.entrega.value.nome === maior_entrega_nome && esseEoPrimeiroFreteGratisDaEntrega == 0) { isFretegratis = 1; esseEoPrimeiroFreteGratisDaEntrega = 1; } if (isFretegratis == 0) { pac.entrega.value._vlr_frete = 0; } } }*/ } EntregaComponent.prototype._carregarEntregas = function () { let _entregas = [] for (const entrega of this.entregas) { if (this.tipo_entrega == entrega.tipo_codigo) { _entregas.push(entrega); } } var i = 0; _entregas = _entregas.map((entrega) => { let filial = entrega.filial, nome = entrega.nome, nm_descritivo = entrega.nm_descritivo, valor = entrega.valor, descricao = entrega.descricao, imagem = entrega.imagem, tipo_codigo = entrega.tipo_codigo; i++; return new Entrega(i, nome, filial, nm_descritivo, valor, descricao, imagem, tipo_codigo, entrega, this); }) this.entregasDoTipo = _entregas; } EntregaComponent.prototype._carregarTemplate = function () { // Com divião de pacotes $('#carrinho-entrega-pacote').html(`
? Pacote ${this._pacote.index}:
${ this.nome ? this.nome : 'Escolher entrega' } `); // Sem divisão de pacotes pq ele ainda não tem /*$('#carrinho-entrega-pacote').html(`
Pacote ${this._pacote.index}:${ this.nome ? this.nome : 'Escolha a Entrega' }
`);*/ $('#carrinho-tipo-entregas').html(this.template); $('#carrinho-tipo-entregas').attr('data-pacote-ativo', this._pacote.index) $(".cpf").mask("000.000.000-00"), $(".telefone").mask("(00) 0 0000-0000"); } function Pacote(index, id, produtos, tipos_entrega, carrinho_completo, pacote, _carrinho) { this.index = index; this.id = id; this.produtos = produtos; this.carrinho_completo = carrinho_completo; this.entrega = new EntregaComponent(tipos_entrega, this); this._carrinho = _carrinho; this.is_entrega_disponivel = true this.pacote = pacote this.tipos_entrega = tipos_entrega if(!this.pacote.entregas || !this.pacote.entregas.length) this.is_entrega_disponivel = false if(typeof(this.pacote.mensagem) === 'string' && this.pacote.mensagem){ carrinho.instance._mensagem[this.index - 1] = this.pacote.mensagem } else { carrinho.instance._mensagem[this.index - 1] = '' } } Pacote.prototype = { get valid() { /*if(this.entrega && this.entrega.value && (this.entrega.value && this.entrega.value.retirada_terceiro)){ carrinho.instance.submit_retirada_por_terceiro = true; } return this.entrega && this.entrega.valid ? true : false*/ if(this.entrega && this.entrega.value && (this.entrega.value && this.entrega.value.retirada_terceiro)){ carrinho.instance.submit_retirada_por_terceiro = true; } let isValid = true if(!this.produtos || !this.produtos.length){ toastr.warning('Adicione um produto para prosseguir') isValid = false } if(!this.tipos_entrega || !this.tipos_entrega.length){ toastr.warning(`O pacote ${this.index} não possui nenhum tipo de entrega disponível. Remova o(s) produto(s) para prosseguir`) isValid = false } return isValid }, get is_entrega_disponivel() { return this._is_entrega_disponivel; }, set is_entrega_disponivel(value){ this._is_entrega_disponivel = value }, get produtos() { return this._produtos; }, set produtos(value) { const products = []; var i = 0; for (const produto of value) { let hash = produto.hash, id = produto.id, produto__nm_ecommerce = produto.produto__nm_ecommerce, quantidade = produto.quantidade, valor = produto.valor, valor_mult = produto.valor_mult, produto__imagem_pequena = produto.produto__imagem_pequena, produto__nm_url_ecommerce = produto.produto__nm_url_ecommerce, token_nsu = produto.token_nsu; products.push(new Produto(i + 1, hash, id, produto__nm_ecommerce, quantidade, valor, valor_mult, produto__imagem_pequena, produto__nm_url_ecommerce, produto, this, value.length - 1 === i)); i++; } this._produtos = products; }, get template() { const template_produtos = $.map(this.produtos, (elem) => { return elem.template; }).join(''); return `
${this.pacote.nm_pacote ? `
Pacote ${this.index} - Entregue por ${this.pacote.nm_pacote}
${this._carrinho && this._carrinho.passoAtual === 'pacotes' && !this.pacote.is_marketplace ? `
` : ``} ${this._carrinho && this._carrinho.passoAtual === 'entregas' && this.mensagemStorage && this.mensagemStorage.length && this.mensagemStorage[this.index - 1] ? `
${this.mensagemStorage[this.index - 1]}
` : ``}
` : ``}
${template_produtos}
`; } } Pacote.prototype._carregarTemplate = function () { this._carrinho._carregarTemplate(); } function Endereco(id, apelido, cep, logradouro, numero, bairro, cidade, estado, complemento, _enderecos, is_principal) { this.id = id; this.apelido = apelido; this.logradouro = logradouro; this.cep = cep; this.numero = numero; this.bairro = bairro; this.cidade = cidade; this.estado = estado; this.complemento = complemento; this._selecionado = false; this._enderecos = _enderecos; } Endereco.prototype = { get selecionado() { return this._selecionado; }, set selecionado(value) { this._selecionado = value; this._enderecos._carregarTemplate(); }, get endereco() { return this.logradouro + ', ' + this.numero + ', ' + this.bairro; }, get municipio() { return this.cidade + '/' + this.estado; }, get endereco_completo() { return this.endereco + ' - ' + this.municipio; }, get editar() { return ` event.stopPropagation(); carrinho.instance.endereco.id = '${this.id}'; carrinho.instance.endereco.cep = '${this.cep}'; carrinho.instance.endereco.estado = '${this.estado}'; carrinho.instance.endereco.numero = '${this.numero}'; carrinho.instance.endereco.rua = '${this.logradouro}'; carrinho.instance.endereco.complemento = '${this.complemento}'; carrinho.instance.endereco.bairro = '${this.bairro}'; carrinho.instance.endereco.apelido = '${this.apelido}'; carrinho.instance.endereco.is_principal = '${this.is_principal}'; carrinho.instance.endereco._carregarEdicaoEndereco(); `; }, get template() { return `
`; } }; function EnderecoComponent() { this._enderecos = null; this._carregarEnderecos(); } EnderecoComponent.prototype = { get valid() { return this.value ? true : false; }, get value() { const endereco = this._enderecos ? this._enderecos.filter((endereco) => { return endereco.selecionado }) : []; return endereco.length > 0 ? endereco[0] : null; }, set value(value) { this._enderecos.map((endereco) => { if(endereco.id === value){ endereco.selecionado = true } else { endereco.selecionado = false; } }); if (value) { localStorage.setItem('carrinho_endereco_id', value); } carrinho.instance._atualizarCarrinho(); }, get ultimo_editado_criado() { return this._ultimo_editado_criado; }, set ultimo_editado_criado(value) { this._ultimo_editado_criado = value; }, get enderecos() { return this._enderecos; }, set enderecos(value) { const end = []; let principal = null; let primeiro = null; let ultimo_salvo = localStorage.getItem('carrinho_endereco_id'); let ultimo_salvo_id = null; for (const { id, apelido, cep__cep_form, endereco, numero, bairro, cep__bairro_cep, cep__municipio__nome, cep__municipio__uf__nm_abrev, complemento, is_principal } of value) { if (!principal) { if (this.ultimo_editado_criado) { principal = this.ultimo_editado_criado; this.ultimo_editado_criado = null; } else { if (ultimo_salvo == id) { ultimo_salvo_id = id; } else { if (!primeiro) { primeiro = id; } if (is_principal) { principal = id; } } } } end.push(new Endereco(id, apelido, cep__cep_form, endereco, numero, cep__bairro_cep ? cep__bairro_cep : bairro, cep__municipio__nome, cep__municipio__uf__nm_abrev, complemento, this, is_principal)); } this._enderecos = end; this._carregarTemplate(); this.value = ultimo_salvo_id ? ultimo_salvo_id : principal ? principal : primeiro; }, get template() { return $.map(this._enderecos, (elem) => { return elem.template; }).join(''); }, get cep() { return this._cep ? this._cep : ''; }, set cep(value) { this._cep = value; let cep = value.replace(/-/g, '').replace(/\./g, '').trim(); let urlStr = `https://viacep.com.br/ws/${cep}/json/`; $.ajax({ url: urlStr, type: "GET", dataType: "json", success: (response_endereco) => { if (response_endereco.logradouro) this.rua = response_endereco.logradouro; if (response_endereco.uf) this.estado = response_endereco.uf; if (response_endereco.localidade) this.cidade = response_endereco.localidade; if (response_endereco.bairro) this.bairro = response_endereco.bairro; this._carregarEdicaoEndereco(); $("#carrinho-endereco-numero").focus(); }, error: (erro) => { toastr.error('Não foi possível localizar automaticamente, por favor, tente novamente ou preencha manualmente.', 'Erro CEP'); } }); }, get id() { return this._id; }, set id(value) { this._id = value; }, get rua() { return this._rua ? this._rua : ''; }, set rua(value) { this._rua = value; }, get estado() { return this._estado ? this._estado : ''; }, set estado(value) { this._estado = value; }, get cidade() { return this._cidade ? this._cidade : ''; }, set cidade(value) { this._cidade = value; }, get numero() { return this._numero ? this._numero : ''; }, set numero(value) { this._numero = value; }, get complemento() { return this._complemento ? this._complemento : ''; }, set complemento(value) { this._complemento = value; }, get bairro() { return this._bairro ? this._bairro : ''; }, set bairro(value) { this._bairro = value; }, get apelido() { return this._apelido ? this._apelido : ''; }, set apelido(value) { this._apelido = value; }, get is_principal() { return this._is_principal; }, set is_principal(value) { this._is_principal = value; }, get template_novo_endereco() { return `
`; }, } EnderecoComponent.prototype._carregarEnderecos = function () { load("on", $(".asidebar")); $.ajax({ type: "POST", url: "/cliente/endereco/atualizar", data: { "csrfmiddlewaretoken": "2IciJSAJkf9nhPjQpmUaWQyeMfKIibI7hGvpITiZVBE4CbpW4QWY8LsHY7YV5sKn", }, success: (data) => { load("off", $(".asidebar")); this.enderecos = data.enderecos; if (data.enderecos.length === 0) { this._limparCamposEndereco(); this._carregarEdicaoEndereco(); $('#carrinho-voltar-endereco').addClass('hidden') } }, error: (data) => { load("off", $(".asidebar")); toastr.error("Ocorreu um erro inesperado ao atualizar os endereços.", "Erro ao enviar"); } }); }, EnderecoComponent.prototype._limparCamposEndereco = function () { this.id = ''; this._cep = ''; this.rua = ''; this.estado = ''; this.cidade = ''; this.numero = ''; this.complemento = ''; this.bairro = ''; this.apelido = ''; this.is_principal = false; }, EnderecoComponent.prototype._salvarEndereco = function () { // form.addClass('was-validated'); load('on', $('#popupEndereco')); // if (this.checkValidity()) { $.ajax({ url: "/cliente/endereco/cadastrar", type: "POST", data: { csrfmiddlewaretoken: '2IciJSAJkf9nhPjQpmUaWQyeMfKIibI7hGvpITiZVBE4CbpW4QWY8LsHY7YV5sKn', endereco_id: this.id, cep: this.cep, rua: this.rua, numero: this.numero, complemento: this.complemento, bairro: this.bairro, nome: this.apelido, is_principal: this.is_principal }, success: (data) => { load("off", $("#popupEndereco")); this._carregarEnderecos(); this.ultimo_editado_criado = data.endereco_id; }, error: function (data) { load("off", $("#popupEndereco")); } }); // } }, EnderecoComponent.prototype._carregarEdicaoEndereco = function () { $('#carrinho-voltar-endereco').removeClass('hidden'); $('#carrinho-enderecos').html(this.template_novo_endereco); $('#carrinho-novo-endereco').addClass('d-none'); }, EnderecoComponent.prototype._carregarTemplate = function () { $('#carrinho-enderecos').html(this.template); $('[data-target="carrinho-endereco-resumo"]').html(this.value && this.value.endereco_completo ? this.value.endereco_completo : ''); $('#carrinho-voltar-endereco').addClass('hidden'); let template_endereco_mobile = `
${this.value && this.value.apelido ? this.value.apelido + ' - ' : ''} ${this.value && this.value.endereco_completo ? this.value.endereco_completo : ''} `; $('[data-target="carrinho-endereco-resumo-mobile"]').html(template_endereco_mobile); $('#carrinho-novo-endereco').removeClass('d-none').on('click', () => { this._limparCamposEndereco(); this._carregarEdicaoEndereco(); }); } function Convenio(tipo, _pagamento) { this.tipo = tipo; this._pagamento = _pagamento; this._getConvenios(); this.id = null; } Convenio.prototype = { get template() { return `
Seus convênios
`; } } Convenio.prototype._getConvenios = function() { return load('on', $('.asidebar')); $.ajax({ type: "POST", url: "", data: { 'csrfmiddlewaretoken': '2IciJSAJkf9nhPjQpmUaWQyeMfKIibI7hGvpITiZVBE4CbpW4QWY8LsHY7YV5sKn', }, success: (response) => { if(response.status){ this.html_convenios = ``; this.id = response.convenios.length > 0 ? response.convenios[0].id : null const convenios = response.convenios.length > 0 ? response.convenios : [] if(response.convenios.length > 0){ $(convenios).each((chave, convenio) => { this.html_convenios += `
${convenio.clube_nome} - (${convenio.saldo ? 'R$' + convenio.saldo.toString().replace(".", ",") : ``}) ` }); } else { this.html_convenios += `
Nenhum convênio disponível ` } this._pagamento._pagamentos._carregarTemplate(); } else { toast.error(response.descricao ? response.descricao : 'Ocorreu um erro interno ao exibir seus convênios.') } load('off', $('.asidebar')); }, error: (response) => { load('off', $('.asidebar')); toastr.error('Ocorreu um erro interno ao exibir seus convênios.') }, }) } function Cartao(tipo, _pagamento) { this.tipo = tipo; this._pagamento = _pagamento; this._submit = false; this.doPay = this.doPay.bind(this); this.sdkResponseHandler = this.sdkResponseHandler.bind(this); this._status = false; } Cartao.prototype = { get cartao_id() { return this._cartao_id; }, set cartao_id(valor) { this._cartao_id = valor; }, get submit() { return this._submit; }, set submit(value) { if (value !== this._submit) { if (value) { load('on', $('.asidebar')); } else { load('off', $('.asidebar')); } this._submit = value; } }, get template() { let html = ``; let html_parcelas = ``; const vlr_total = carrinho.instance.pagamento.cashback_selecionado ? (carrinho.instance.pagamento._carrinho._calculaVlrTotalFloat() - carrinho.instance.pagamento._carrinho._saldo_cashback) : carrinho.instance.pagamento._carrinho._calculaVlrTotalFloat(); if("credito" === carrinho.instance.pagamento.valueNotCashback.id){ html_parcelas += `
Parcelas
`; } if("pix" === carrinho.instance.pagamento.valueNotCashback.id){ } html = ` `; return html; } } Cartao.prototype.guessPaymentMethod = function() { let cardnumber = $("#cardNumber").val().split(' ').join(''); if (cardnumber.length >= 6) { let bin = cardnumber.substring(0, 6); // window.Mercadopago.getPaymentMethod({ // "bin": bin // }, setPaymentMethod); } } Cartao.prototype.doPay = function(event) { if (event) { event.preventDefault(); } let valor = $("#carrinho-cartao-cpf_titular").val().replace(/\./g, '').replace(/-/g, '').replace('\/', ''); $("#docNumber").val(valor); if (!this.submit) { this.submit = true; // window.Mercadopago.createToken(document.querySelector('#pay'), carrinho.instance.pagamento.valueNotCashback.cartao.sdkResponseHandler); this.adicionarCartao(); return false; } } Cartao.prototype.sdkResponseHandler = function(status, response) { let numero_cartao = document.getElementById('cardNumber'); let nome_titular = document.getElementById('cardholderName'); let data_vencimento = document.getElementById('carrinho-cartao-validade'); let codigo_seguranca = document.getElementById('securityCode'); let cpf_titular = document.getElementById('carrinho-cartao-cpf_titular'); setarInputInvalid(numero_cartao, ''); setarInputInvalid(nome_titular, ''); setarInputInvalid(data_vencimento, ''); setarInputInvalid(codigo_seguranca, ''); setarInputInvalid(cpf_titular, ''); if (status !== 200 && status !== 201) { this.submit = false; for (let i = 0; i < response['cause'].length; i++) { errosNoCartao(response['cause'][i].code); } } else { this.token = response.id; this.adicionarCartao(); } } Cartao.prototype.adicionarCartao = function() { load('on', $('.asidebar')); $.ajax({ type: "POST", url: "/pagamento/mercadopago/salvar/cartao", data: { 'csrfmiddlewaretoken': '2IciJSAJkf9nhPjQpmUaWQyeMfKIibI7hGvpITiZVBE4CbpW4QWY8LsHY7YV5sKn', 'token_cartao': this.token ?? '', 'is_salvar': $('#is-salvar-cartao').is(':checked'), 'password': $('#securityCode').val(), 'tipo_id': this.tipo, 'empresa_id': empresaId, 'numero_cartao': $('#cardNumber').val(), 'validade': $("#cardExpirationMonth").val() + '/' + $("#cardExpirationYear").val(), 'nm_impresso': $("#cardholderName").val(), 'cliente_id': $('#carrinho-cartao-cpf_titular').val() }, success: (data) => { this.submit = false; if (data.status) { carrinho.instance.pagamento.cartao_adicionado = data.cartao_id; carrinho.instance.pagamento.valueNotCashback.cartao.cartao_id = data.cartao_id; //carrinho.instance.popupConfirmacao = new CarrinhoConfirmacao(carrinho.instance.qtd_itens, carrinho.instance.pacotes, carrinho.instance.vlr_subtotal, carrinho.instance.vlr_frete, null, carrinho.instance.endereco.value, carrinho.instance.pagamento.value, carrinho.instance.cupom, carrinho.instance.informacoes_pbm, carrinho.instance._calculaVlrTotalFloat()); if(!$('#is-salvar-cartao').is(':checked')) carrinho.instance.pagamento.tokens_temporarios = data.cartao_id; } else { toastr.error(data.descricao ? data.descricao : 'Ocorreu um erro com os dados do cartão', 'Erro'); } carrinho.instance.pagamento._carregarPagamentos(); load('off', $('.asidebar')); }, error: (data) => { toastr.error('Ocorreu um erro com os dados do cartão', 'Erro'); this.submit = false; load('off', $('.asidebar')); } }); } function Pagamento(index, id, nome_descritivo, imagem, is_validar_antifraude, dadosComplemento, _pagamentos) { this.index = index; this.id = id; this.nome_descritivo = nome_descritivo; this.imagem = imagem; this._selecionado = false; this._pagamentos = _pagamentos; this.dadosComplemento = dadosComplemento; this.is_validar_antifraude = is_validar_antifraude ? is_validar_antifraude : false } Pagamento.prototype = {get selecionado() { return this._selecionado; }, set selecionado(value) { this._selecionado = value; this._pagamentos._carregarTemplate(); }, get qtd_parcelas() { return this._qtd_parcelas ? this._qtd_parcelas : 1; }, set qtd_parcelas(value) { this._qtd_parcelas = value; }, get pagamentoComplemento() { var template = ``; if (this._pagamentos.value && this.selecionado) { this._pagamentos.qtd_parcelas = null; // Criacao de cartão if (!this.dadosComplemento && (this.id == 'credito' || this.id == 'debito' || this.id == 'auxilio')) { this.cartao = new Cartao(this.id, this) template = this._pagamentos._pagamento_dividido_selecionado === 'on' ? this.cartao.template_pagamento_dividido : this.cartao.template } // Pagamento convênio else if (this.id === 'convenio') { if(!this.convenio) this.convenio = new Convenio(this.id, this); template = this.convenio.template; } // Cartão já salvo else if (this.dadosComplemento && this.dadosComplemento.tipo_codigo && (this.dadosComplemento.tipo_codigo == 'credito' || this.dadosComplemento.tipo_codigo == 'auxilio')) { if (!this.cartao) { if(this.passwordEndpoint){ load('off', $('.asidebar')) this.passwordEndpoint.abort(); } load('on', $('.asidebar')) this.passwordEndpoint = $.ajax({ type: "POST", url: "/pagamento/pegar/password", data: { 'csrfmiddlewaretoken': '2IciJSAJkf9nhPjQpmUaWQyeMfKIibI7hGvpITiZVBE4CbpW4QWY8LsHY7YV5sKn', 'cartao_id': this.dadosComplemento.cartao_id }, success: (data) => { if (data.status) { load('off', $('.asidebar')) this.cartao = {}; this.dadosComplemento.cvv = data.password; } }, error: (err) => { load('off', $('.asidebar')) } }); if(this._pagamentos.valueNotCashback.id == 'credito' || this._pagamentos.valueNotCashback.id == 'auxilio' || this._pagamentos.valueNotCashback.id == 'debito'){ const vlr_total = this._pagamentos.cashback_selecionado ? (this._pagamentos._carrinho._calculaVlrTotalFloat() - this._pagamentos._carrinho._saldo_cashback) : this._pagamentos._carrinho._calculaVlrTotalFloat(); if("credito" === this._pagamentos.valueNotCashback.id){ template += `
Parcelas
`; } if("pix" === this._pagamentos.valueNotCashback.id){ } } } } } return template; }, get template() { return `
${this.pagamentoComplemento} `; } } Pagamento.prototype._pagamentoMeuCartao = function() { if (this.dadosComplemento) { this.cartao = { id: this.dadosComplemento.cartao_id, token: this.dadosComplemento.token, cvv: this.dadosComplemento.cvv, bandeira_id: this.dadosComplemento.bandeira_id, }; } } function PagamentoComponent(_carrinho) { this._carrinho = _carrinho; this._carregarPagamentos(); this._cartao_adicionado = null; this._tokens_temporarios = []; } PagamentoComponent.prototype = { get valid() { return this._validacaoPagamento(); }, get value() { const pagamentos = this.meus_pagamentos.concat(this.tipos_pagamento); const pagamento = pagamentos.filter((pagamento) => { return pagamento.selecionado }); if (this.cashback_selecionado && this._carrinho._saldo_cashback > 0) { let retorno = []; retorno.push({ "index": -1, "id": "cashback", "nome_descritivo": "Cashback", "imagem": "pagamentos/cashback.png", "qtd_parcelas": 1, "_selecionado": true, "_pagamentos": this, "_vlr_total": this._carrinho._saldo_cashback >= this._carrinho._calculaVlrTotalFloat() ? this._carrinho._calculaVlrTotalFloat() : this._carrinho._saldo_cashback }); if (pagamento.length > 0 && this._carrinho._saldo_cashback < this._carrinho._calculaVlrTotalFloat()) { pagamento[0]._vlr_total = this._carrinho._calculaVlrTotalFloat() - this._carrinho._saldo_cashback; retorno.push(pagamento[0]); } return retorno.length > 0 ? retorno : null; } if (pagamento.length > 0) { pagamento[0]._vlr_total = this._carrinho._calculaVlrTotalFloat(); return pagamento; } return null; }, set value(value) { if (!this.value || this.value.index !== value) { let pagamentoSelecionado; this.meus_pagamentos.map((pagamento) => { if (pagamento.index == value) { pagamento.selecionado = true; pagamentoSelecionado = pagamento; } else { pagamento.selecionado = false; } }); this.tipos_pagamento.map((pagamento) => { if (pagamento.index == value) { pagamento.selecionado = true; pagamentoSelecionado = pagamento; } else { pagamento.selecionado = false; } }); filtroParaDadosAnaliticos('AddPaymentInfo', { currency: 'BRL', payment_type: pagamentoSelecionado.id, coupon: this._carrinho.cupom?.codigo, value: this._carrinho._calculaVlrTotalFloat(), }); } }, get valueNotCashback() { const pagamentos = this.meus_pagamentos.concat(this.tipos_pagamento); const pagamento = pagamentos.filter((pagamento) => { return pagamento.selecionado }); if (this.cashback_selecionado && this._carrinho._saldo_cashback > 0) { if (pagamento.length > 0 && this._carrinho._saldo_cashback < this._carrinho._calculaVlrTotalFloat()) { pagamento[0]._vlr_total = this._carrinho._calculaVlrTotalFloat() - this._carrinho._saldo_cashback; } return pagamento.length > 0 ? pagamento[0] : null; } if (pagamento.length > 0) { pagamento[0]._vlr_total = this._carrinho._calculaVlrTotalFloat(); return pagamento[0]; } return null; }, get cashback_selecionado() { return this._cashback_selecionado; }, set cashback_selecionado(value) { this._cashback_selecionado = value; this._carregarTemplate(); }, get cartao_adicionado() { return this._cartao_adicionado; }, set cartao_adicionado(value) { this._cartao_adicionado = value; }, get meus_pagamentos() { return this._meus_pagamentos; }, set meus_pagamentos(value) { this._meus_pagamentos = value; }, get tipos_pagamento() { return this._tipos_pagamento; }, set tipos_pagamento(value) { this._tipos_pagamento = value; }, get tokens_temporarios(){ return this._tokens_temporarios; }, set tokens_temporarios(value){ this._tokens_temporarios.push(value); }, get template() { const meus_pagamentos_template = this.meus_pagamentos.length > 0 ? `
Seus pagamentos
` + $.map(this.meus_pagamentos, (elem) => { return elem.template; }).join('') + `
` : ''; const tipo_pagamentos_template = this.tipos_pagamento.length > 0 ? `
Forma de pagamento
` + $.map(this.tipos_pagamento, (elem) => { return elem.template; }).join('') + `
` : ''; let html_template = ``; /*html_template += `
Adicionar cupom de desconto
`; if (!this._carrinho || !this._carrinho.cupom || !this._carrinho.cupom.codigo) { html_template += `
Aplicar
`; } else if (this._carrinho && this._carrinho.cupom && this._carrinho.cupom.codigo) { html_template += `
Remover
`; }*/ /* html_template += `
`; if(!this.cashback_selecionado) { html_template += `
Usar Saldo
`; } if(this.cashback_selecionado) { html_template += `
Remover
`; } */ //html_template += "
"; html_template += meus_pagamentos_template; html_template += tipo_pagamentos_template; html_template += "
"; return html_template; }, get template_mobile() { const meus_pagamentos_template = this.meus_pagamentos.length > 0 ? `
Seus pagamentos
` + $.map(this.meus_pagamentos, (elem) => { return elem.template; }).join('') + `
` : ''; /*const tipo_pagamentos_template = this.tipos_pagamento.length > 0 ? `
Forma de pagamento
` + $.map(this.tipos_pagamento, (elem) => { return elem.template; }).join('') + `
` : '';*/ const tipo_pagamentos_template = this.tipos_pagamento.length > 0 ? `
Métodos de pagamento
${$.map(this.tipos_pagamento, (elem) => { return elem.template; }).join('')}
` : ``; let html_template = ``; /*html_template += `
Adicionar cupom de desconto
`; if (!this._carrinho || !this._carrinho.cupom || !this._carrinho.cupom.codigo) { html_template += `
Aplicar
`; } else if (this._carrinho && this._carrinho.cupom && this._carrinho.cupom.codigo) { html_template += `
Remover
`; }*/ /* html_template += `
`; if(!this.cashback_selecionado) { html_template += `
Usar Saldo
`; } if(this.cashback_selecionado) { html_template += `
Remover
`; } */ let resumo_compra; if(this._carrinho){ resumo_compra = new CarrinhoConfirmacao(this._carrinho.qtd_itens, this._carrinho.pacotes, this._carrinho.vlr_subtotal, this._carrinho.vlr_desconto_pbm, this._carrinho.vlr_frete, null, this._carrinho.endereco.value, this._carrinho.pagamento.value, this._carrinho.cupom, this._carrinho.informacoes_pbm, this._carrinho._calculaVlrTotalFloat()); } //html_template += "
"; html_template += meus_pagamentos_template; html_template += tipo_pagamentos_template; html_template += resumo_compra ? resumo_compra.template_mobile : ``; html_template += "
"; return html_template; } } PagamentoComponent.prototype._carregarPagamentos = function() { this.meus_pagamentos = []; this.tipos_pagamento = []; let i = 1; this.tipos_pagamento.push(new Pagamento(i, 'credito', 'Cartão de crédito', 'ecommerce/pagamento/cartao.svg', false , null, this)); i++; this.tipos_pagamento.push(new Pagamento(i, 'pix', 'Pix', 'ecommerce/pagamento/pix.svg', false , null, this)); i++; load('on', $('.asidebar')) $.ajax({ type: "POST", url: "/pagamento/atualizar/cartoes", data: { 'csrfmiddlewaretoken': '2IciJSAJkf9nhPjQpmUaWQyeMfKIibI7hGvpITiZVBE4CbpW4QWY8LsHY7YV5sKn', 'tokens': this.tokens_temporarios }, success: (data) => { load('off', $('.asidebar')) if (data.status) { let selecionado = null; for (let count = 1; count <= data.cartoes?.length; count++) { const cartao = data.cartoes[count - 1]; this.meus_pagamentos.push(new Pagamento(i, cartao.tipo_codigo, cartao.bandeira__nm_descritivo + ' ***** ' + cartao.ultimos_4, cartao.bandeira__imagem, true, cartao, this)); if (cartao.cartao_id === this.cartao_adicionado) { selecionado = i.toString(); } i++; } this._carregarTemplate(); if (selecionado != null) { this.value = selecionado; } this.cartao_adicionado = null; } }, error: (data) => { load('off', $('.asidebar')) } }); } PagamentoComponent.prototype._carregarTemplate = function() { this._carrinho._carregarTemplate(); } PagamentoComponent.prototype._validacaoPagamento = function() { if (this.cashback_selecionado && this._carrinho._saldo_cashback >= this._carrinho._calculaVlrTotalFloat()) { return true; } else { if (!this.value) { toastr.error('Selecione uma forma de pagamento', 'Erro'); return false; } else if ((this.valueNotCashback.id == 'credito' || this.valueNotCashback.id == 'debito' || this.valueNotCashback.id == 'auxilio') && (!this.valueNotCashback.cartao || !this.valueNotCashback.dadosComplemento)) { if($('#pay') && $('#pay')[0] && $('#pay')[0].checkValidity()){ carrinho.instance.pagamento.valueNotCashback.cartao.doPay(); } else { $('#pay').addClass('was-validated') toastr.warning('Preencha os dados do cartão para prosseguir') } return false; } else if (this.valueNotCashback.id === 'convenio' && (!this.valueNotCashback.convenio || !this.valueNotCashback.convenio.id)) { toastr.error('Selecione um convênio', 'Erro'); return false; } else if (this.value) { return true; } } } function CarrinhoConfirmacao(qtd_produtos, pacotes, vlr_subtotal, vlr_desconto_pbm, vlr_frete, entrega, endereco, pagamento, cupom, informacoes_pbm, vlr_total) { this.qtd_produtos = qtd_produtos; this.pacotes = pacotes; this._vlr_subtotal = vlr_subtotal; this._vlr_desconto_pbm = vlr_desconto_pbm; this._vlr_frete = vlr_frete; this.endereco = endereco; this.pagamento = pagamento; this.informacoes_pbm = informacoes_pbm; this.cupom = cupom; this._vlr_total = vlr_total; /*$('#carrinho-confirmacao').html(this.template); onToggleCarrinhoPopUp('open', '#popupConfirmacao');*/ let produtos = []; for (const pacote of this.pacotes) { for (const { _produto } of pacote._produtos) { produtos.push({ id: _produto.produto_id, price: _produto.valor_ini, discount: _produto.valor_desc, item_name: _produto.produto__nm_ecommerce, promotion_name: _produto.descontoprodutopreco__desconto__tipo_id, quantidade: _produto.quantidade, currency: 'BRL', index: _produto.origem_posicao, item_list_name: _produto.origem_descricao, item_list_id: _produto.origem_descricao ? _produto.origem_descricao.toLowerCase().replace(/\s/g, '_') : '', }); } } filtroParaDadosAnaliticos('InitiateCheckout', { currency: 'BRL', value: this._vlr_total, coupon: this.cupom?.codigo || 0, items: produtos }); } CarrinhoConfirmacao.prototype = { get qtd_pacotes() { return this.pacotes.length; }, get vlr_subtotal() { return parseFloat(this._vlr_subtotal).toLocaleFixed(2); }, get vlr_desconto_pbm() { return parseFloat(this._vlr_desconto_pbm).toLocaleFixed(2); }, get vlr_total() { return parseFloat(this._vlr_total).toLocaleFixed(2); }, get vlr_frete() { return parseFloat(this._vlr_frete).toLocaleFixed(2); }, get template() { let html_template = ``; for (const pacote of this.pacotes) { html_template += `
`; if (pacote.entrega._value.tipo_codigo === 'retirada') { if(pacote.entrega._value.nome === 'retirada'){ html_template += ` Pacote ${pacote.index} (${pacote.produtos.length} ite${pacote.produtos.length > 1 ? 'ns' : 'm'}) - ${pacote.entrega._value.nome_descritivo} em ${title(pacote.entrega._value.filial.nm_filial)} `; } else { html_template += ` Pacote ${pacote.index} (${pacote.produtos.length} ite${pacote.produtos.length > 1 ? 'ns' : 'm'}) - ${pacote.entrega._value.nome_descritivo} em ${title(pacote.entrega._value.filial.endereco)}, ${pacote.entrega._value.filial.numero} - ${pacote.entrega._value.filial.bairro} `; } } else if (pacote.entrega._value.nome === 'entrega_agendada') { html_template += ` Pacote ${pacote.index} (${pacote.produtos.length} ite${pacote.produtos.length > 1 ? 'ns' : 'm'}) - ${pacote.entrega._value.nome_descritivo} - ${pacote.entrega._value._faixa_entrega.descricao_combobox.split('%quebralinha%')[0] + ' ' + pacote.entrega._value._faixa_entrega.descricao_combobox.split('%quebralinha%')[1]} `; } else { html_template += ` Pacote ${pacote.index} (${pacote.produtos.length} ite${pacote.produtos.length > 1 ? 'ns' : 'm'}) - ${pacote.entrega._value.nome_descritivo} `; } html_template += `
`; if(carrinho.instance._mensagem[pacote.index - 1]){ html_template += `
${carrinho.instance._mensagem[pacote.index - 1]}
` } else { html_template += `` } } let html_pagamento = ``; for(const pay of this.pagamento){ html_pagamento += `
${pay.imagem ? ` ` : ``}
${pay.nome_descritivo}
${pay.qtd_parcelas}x R$${(pay._vlr_total / parseFloat(pay.qtd_parcelas)).toLocaleFixed(2)}
`; } let html_cashback = ``; if (this.pagamento[0]._pagamentos._carrinho._vlr_cashback > 0){ html_cashback += `
Você receberá R$${this.pagamento[0]._pagamentos._carrinho.vlr_cashback} de dinheiro de volta por essa compra
`; } let template_retorno = `
${this.qtd_produtos} Produto${this.qtd_produtos == 1 ? '' : 's'}
Dividido${this.qtd_pacotes == 1 ? '' : 's'} em ${this.qtd_pacotes} pacote${this.qtd_pacotes == 1 ? '' : 's'}
${html_template}
Endereço
${this.endereco.apelido}
${this.endereco.endereco}
${this.endereco.municipio}
Forma de Pagamento
${html_pagamento} ${html_cashback}
Quantidade: ${this.qtd_produtos} Ite${this.qtd_produtos == 1 ? 'm' : 'ns'}
Subtotal: R$ ${this.vlr_subtotal}
Desconto do Programa R$ ${this.vlr_desconto_pbm}
Frete: R$ ${this.vlr_frete}
`; if (this.cupom.vlr_cupom) { template_retorno += `
Desconto: R$ ${parseFloat(this.cupom.vlr_cupom).toLocaleFixed(2)}
`; } template_retorno += `
Total: R$${this.vlr_total}
`; return template_retorno; }, get template_mobile() { let html_resumo_compra = ``; if(this.pacotes && this.pacotes.length){ for(let pacote of this.pacotes){ let html_info = ``; let html_tipo_entrega = ``; let html_info_entrega = ``; html_info += `
${pacote && pacote.pacote && pacote.pacote.nm_pacote ? ` Entregue por ${pacote.pacote.nm_pacote} ` : ``} - ${pacote && pacote.produtos && pacote.produtos.length ? ` ${pacote.produtos.length} ite${pacote.produtos.length === 1 ? `m` : `ns`} ` : ``}
`; if(pacote && pacote.entrega && pacote.entrega.value){ html_tipo_entrega += `
${pacote.entrega.value.nome_descritivo} ${pacote.entrega.value.tipo_codigo === 'retirada' && pacote.entrega.value.retirada_terceiro ? `por:` : ``} ${pacote.entrega.value.tipo_codigo === 'retirada' && pacote.entrega.value.retirada_terceiro ? `
${pacote.entrega.value.retirada_terceiro_nome ? `
Nome: ${pacote.entrega.value.retirada_terceiro_nome}
` : ``} ${pacote.entrega.value.retirada_terceiro_cpf ? `
CPF: ${pacote.entrega.value.retirada_terceiro_cpf}
` : ``}
` : ``} ${pacote.entrega.value.is_programada && pacote.entrega.value._faixa_entrega ? ` - ${pacote.entrega.value._faixa_entrega.descricao_combobox.split('%quebralinha%')[0] + ' - ' + pacote.entrega.value._faixa_entrega.descricao_combobox.split('%quebralinha%')[1]} ` : ``} `; if(pacote.entrega.value.tipo_codigo === 'retirada'){ if(pacote.entrega.value.filial){ html_info_entrega += `
Loja para retirada
${pacote.entrega.value.filial.endereco}, ${pacote.entrega.value.filial.numero}
${pacote.entrega.value.filial.bairro} - ${pacote.entrega.value.filial.cidade} - ${pacote.entrega.value.filial.uf}
`; } } else { html_info_entrega += `
Endereço de entrega
${this.endereco ? `
${this.endereco.endereco}
${this.endereco.municipio}
` : ``} `; } } html_resumo_compra += ` ${html_info} ${html_tipo_entrega} ${html_info_entrega} `; } } let html_template = ``; html_template += `
`; return html_template; } } CarrinhoConfirmacao.prototype._confirmar = function() { let deviceIdGetNet = gerarDeviceId() toastr.options.target = null; const pacotes = []; var endereco = $.extend(true, {}, this.endereco); delete endereco._enderecos; endereco = removeTemplates(endereco); for (const pacote of this.pacotes) { const _pacote = $.extend(true, {}, pacote); delete _pacote._carrinho; delete _pacote.filial; delete _pacote.entregas; delete _pacote.produtos; const entrega = $.extend(true, {}, _pacote.entrega); delete entrega._pacote; delete entrega.value; delete entrega.entregasDoTipo; delete entrega._entregasDoTipo; delete entrega.entregas; delete entrega._tipo_entrega; delete entrega.todasEntregas; delete entrega._todasEntregas; delete entrega.filial; _pacote.entrega = entrega; const entregaValor = $.extend(true, {}, _pacote.entrega._value); delete entregaValor._entrega_component; _pacote.entrega._value = entregaValor; if (_pacote.entrega._value.entrega_complemento) { const entregaComplemento = $.extend(true, {}, _pacote.entrega._value.entrega_complemento); delete entregaComplemento._entrega; _pacote.entrega._value.entrega_complemento = entregaComplemento; } const _produtos = []; for (const produto of pacote._produtos) { const _produto = $.extend(true, {}, produto); delete _produto._pacote; _produtos.push(_produto); } _pacote._produtos = _produtos; pacotes.push(removeTemplates(_pacote)); } const pagamentos = []; for (const pay of this.pagamento) { const payment = $.extend(true, {}, pay); delete payment._pagamentos; delete payment._carrinho; delete payment._meus_pagamentos; delete payment._tipos_pagamento; if(payment.convenio){ delete payment.convenio._pagamento } if (payment.cartao) { delete payment.cartao._pagamento; } pagamentos.push(removeTemplates(payment)); } //pagamentos[0].device_id = deviceIdGetNet toastr.options.target = 'body'; load('on', $('.asidebar')); $.ajax({ type: "POST", url: "/pedido/fazer", data: { csrfmiddlewaretoken: '2IciJSAJkf9nhPjQpmUaWQyeMfKIibI7hGvpITiZVBE4CbpW4QWY8LsHY7YV5sKn', lista_pacotes: JSON.stringify(pacotes), endereco: JSON.stringify(endereco), pagamento: JSON.stringify(pagamentos), cupom: JSON.stringify(this.cupom), informacoes_pbm: JSON.stringify(this.informacoes_pbm), origin: originCarrinho ? originCarrinho : '', device_id:deviceIdGetNet }, success: (data) => { if (data) { if (data.status === true) { if (data.ultimo_status_pagamento === 'pedido_pendente' || data.ultimo_status_pagamento === 'pagamento_pendente') { let produtos = []; for (const pacote of this.pacotes) { for (const { _produto } of pacote._produtos) { produtos.push({ id: _produto.produto_id, price: _produto.valor_ini, discount: _produto.valor_desc, item_name: _produto.produto__nm_ecommerce, promotion_name: _produto.descontoprodutopreco__desconto__tipo_id, quantidade: _produto.quantidade, currency: 'BRL', index: _produto.origem_posicao, item_list_name: _produto.origem_descricao, item_list_id: _produto.origem_descricao ? _produto.origem_descricao.toLowerCase().replace(/\s/g, '_') : '', }); } } filtroParaDadosAnaliticos('Purchase', { currency: 'BRL', value: this._vlr_total, items: produtos, shipping: this._vlr_frete, affiliation: 'Online Store', coupon: this.cupom && this.cupom.codigo ? this.cupom.codigo : '', transaction_id: data.pedido_id }); } document.location.href = "/cliente/pedido/0".replace(0, data.pedido_hash); } else { load('off', $('.asidebar')); toastr.error(data.descricao, 'Erro'); // if(pagamentos && pagamentos.length > 0 && pagamentos[0].id === 'credito'){ // Mercadopago.clearSession() // let $form = document.querySelector('#pay_fast'); // Mercadopago.createToken($form, pegarTokenSeForCartao); // } } } }, error: (data) => { load('off', $('.asidebar')); } }); } function gerarDeviceId() { //Ambiente para colocar no org_id //Teste = 1snn5n9w //Prod = k8vif92e let dateDeviceId = new Date() var cpfUsuarioDeviceId = ''; if($('#carrinho-cartao-cpf_titular').val() === undefined || $('#carrinho-cartao-cpf_titular').val() == null){ cpfUsuarioDeviceId = '00000000000'; } else{ cpfUsuarioDeviceId = $('#carrinho-cartao-cpf_titular').val().replaceAll(/[\.\-\/]/g,''); } let hashAnoMesDiaHoraMinutoSegundo = `${cpfUsuarioDeviceId}${dateDeviceId.getFullYear()}${dateDeviceId.getMonth()}${dateDeviceId.getDate()}${dateDeviceId.getHours()}${dateDeviceId.getMinutes()}${dateDeviceId.getSeconds()}` $('#ifram_device_id_getnet').html(` `) return hashAnoMesDiaHoraMinutoSegundo && hashAnoMesDiaHoraMinutoSegundo != '' ? hashAnoMesDiaHoraMinutoSegundo : false } function CarrinhoComponent() { this.id = null; this.passoAtual = 'entregas'; this.endereco = new EnderecoComponent(); this.pagamento = new PagamentoComponent(this); this._atualizarCarrinho(); this._index = null; this._mensagem = []; } CarrinhoComponent.prototype = { get valid() { return this._validacaoEndereco() && this._validacaoPacotes() && this.pagamento.valid; }, get passos() { /*return [ { nome: 'entregas', valid: () => { return this._validacaoEndereco() && this._validacaoPacotes() }, progresso: () => { return this._validacaoPacotes() ? 75 : 25 }, texto: () => { if("False" === "True"){ return this._validacaoPacotes() ? 'Continuar' : 'Escolher Entrega'; } else { return 'Entrar ou Cadastrar'; } } }, { nome: 'pagamentos', valid: () => { return this.pagamento.valid; }, texto: () => { return 'Finalizar Compra'; }, progresso: () => { return 100 } } ];*/ let fluxo_passos; fluxo_passos = [ { nome: 'pacotes', valid: () => { return this.pacotes && this.pacotes.length && this._validacaoPacotes(); }, progresso: () => { return 25 }, texto: () => { if("False" === "True"){ return 'Escolher Entrega'; } else { return 'Entre ou cadastre-se'; } }, voltar: () => { return 'Continuar comprando' }, acaoVoltar: () => { return () => { if(is_app){ document.location = '/' } else { onToggleCarrinho(); $('#carrinho-body').animate({'scrollTop': 0}, 500); } } } }, { nome: 'entregas', valid: () => { return this._validacaoEndereco() && this._validacaoPacotes() && this._validacaoEntregas(); }, progresso: () => { return 50 }, texto: () => { if("False" === "True"){ return 'Escolher Pagamento' } else { return 'Entrar ou Cadastrar'; } }, voltar: () => { return 'Voltar' }, acaoVoltar: () => { return () => { this.passoAtual = 'pacotes'; $('#carrinho-body').animate({'scrollTop': 0}, 500); } } }, { nome: 'pagamentos', valid: () => { return this.pagamento.valid; }, texto: () => { return 'Ver resumo'; }, progresso: () => { return 75 }, voltar: () => { return 'Voltar' }, acaoVoltar: () => { return () => { this.passoAtual = 'entregas'; $('#carrinho-body').animate({'scrollTop': 0}, 500); } } }, { nome: 'resumo', valid: () => { //return true pois todas as validações do carrinho já foram efetuadas nos passos anterior. Este passo extra é apenas para o cliente conferir todos os dados novamente return true; }, texto: () => { return 'Finalizar pedido'; }, progresso: () => { return 100 }, voltar: () => { return 'Voltar' }, acaoVoltar: () => { return () => { this.passoAtual = 'pagamentos'; $('#carrinho-body').animate({'scrollTop': 0}, 500); } } } ]; return fluxo_passos }, get saldo_cashback() { return this._saldo_cashback ? this._saldo_cashback.toLocaleFixed(2) : (0).toLocaleFixed(2); }, set saldo_cashback(value) { this._saldo_cashback = +value > 0 ? +value : 0; }, get vlr_cashback() { return this._vlr_cashback && this._vlr_cashback.toLocaleFixed(2) ? this._vlr_cashback.toLocaleFixed(2) : (0).toLocaleFixed(2); }, set vlr_cashback(value) { this._vlr_cashback = +value; }, get cupom() { return this._cupom; }, set cupom(value) { if (value) { const pacotes = []; var endereco = $.extend(true, {}, this.endereco.value); delete endereco._enderecos; endereco = removeTemplates(endereco); for (const pacote of this.pacotes) { const _pacote = $.extend(true, {}, pacote); delete _pacote._carrinho; delete _pacote.filial; delete _pacote.entregas; delete _pacote.produtos; const entrega = $.extend(true, {}, _pacote.entrega); delete entrega.value; delete entrega._pacote; delete entrega.entregasDoTipo; delete entrega._entregasDoTipo; delete entrega.entregas; delete entrega._tipo_entrega; delete entrega.todasEntregas; delete entrega._todasEntregas; delete entrega.filial; _pacote.entrega = entrega; const entregaValor = $.extend(true, {}, _pacote.entrega._value); delete entregaValor._entrega_component; _pacote.entrega._value = entregaValor; if (_pacote.entrega._value.entrega_complemento) { const entregaComplemento = $.extend(true, {}, _pacote.entrega._value.entrega_complemento); delete entregaComplemento._entrega; _pacote.entrega._value.entrega_complemento = entregaComplemento; } const _produtos = []; for (const produto of pacote._produtos) { const _produto = $.extend(true, {}, produto); delete _produto._pacote; _produtos.push(_produto); } _pacote._produtos = _produtos; pacotes.push(removeTemplates(_pacote)); } const pagamentos = []; if(this.pagamento && this.pagamento.value && this.pagamento.value.length > 0){ for (const pay of this.pagamento.value) { const payment = $.extend(true, {}, pay); delete payment._pagamentos; delete payment._carrinho; delete payment._meus_pagamentos; delete payment._tipos_pagamento; if (payment.cartao) { delete payment.cartao._pagamento; } pagamentos.push(removeTemplates(payment)); } } load('on', $('.asidebar')); $.ajax({ type: "POST", url: "/cupom/validar", data: { csrfmiddlewaretoken: '2IciJSAJkf9nhPjQpmUaWQyeMfKIibI7hGvpITiZVBE4CbpW4QWY8LsHY7YV5sKn', lista_pacotes: JSON.stringify(pacotes), endereco: JSON.stringify(endereco), pagamento: JSON.stringify(pagamentos), cupom: JSON.stringify(value) }, success: (data) => { load('off', $('.asidebar')); if (data.status) { this._cupom = { codigo: data.codigo, cupom_id: data.cupom_id, vlr_cupom: data.vlr_cupom || data.vlr_desconto_frete || 0, is_frete_gratis: data.is_frete_gratis, pacotes: data.pacotes }; } else { if(window.location.hostname != 'app.farmaciapermanente.com.br'){ toastr.error(data.descricao ? data.descricao : 'Ocorreu um erro ao adicionar o cupom', 'Erro'); } } for (const pacote of carrinho.instance.pacotes) { pacote.entrega._logicaFrete() } this._carregarTemplate(); }, error: (data) => { if(window.location.hostname != 'app.farmaciapermanente.com.br'){ toastr.error(data.descricao ? data.descricao : 'Ocorreu um erro ao adicionar o cupom', 'Erro'); } load('off', $('.asidebar')); } }); } else { this._cupom = { cupom_id: '', codigo: '', vlr_cupom: 0, is_frete_gratis: false, pacotes: [], }; for (const pacote of carrinho.instance.pacotes) { pacote.entrega._logicaFrete() } this._carregarTemplate(); } }, get passoAtual() { return this._passoAtual; }, set passoAtual(value) { this._passoAtual = value; this._atualizarProgressoCarrinho(); }, get pacotes() { return this._pacotes; }, set pacotes(value) { const packages = []; for (const index in value) { const pac = value[index]; let i = parseFloat(index) + 1; packages.push(new Pacote(i, i, pac.produtos, pac.entregas, pac.completo, pac, this)); } this._pacotes = packages; this._carregarTemplate(); }, get qtd_itens() { return this._qtd_itens; }, set qtd_itens(value) { this._qtd_itens = value; this._carregarTemplate(); }, get vlr_subtotal() { return this._vlr_subtotal; }, set vlr_subtotal(value) { if (value) { if (value != this.value) { this._vlr_subtotal = parseFloat(value); } } else { this._vlr_subtotal = 0; } this._carregarTemplate(); }, get entrega_alterada() { return this._entrega_alterada; }, set entrega_alterada(value) { this._entrega_alterada = value; }, get vlr_frete() { let f = 0; let entregas = []; this.pacotes ? this.pacotes.map(({ entrega }) => { if(entrega && entrega.value){ if (entrega.value._vlr_frete) { f += +entrega.value._vlr_frete; } entregas.push({ price: entrega.value._vlr_frete ? entrega.value._vlr_frete : 0, item_id: entrega.value.nome ? entrega.value.nome : '', item_name: entrega.value.nome_descritivo ? entrega.value.nome_descritivo : '', currency: 'BRL', }); } }) : ''; if (entregas.length > 0 && this.entrega_alterada) { this.entrega_alterada = false; filtroParaDadosAnaliticos('AddShippingInfo', { value: f, currency: 'BRL', coupon: this.cupom && this.cupom.codigo ? this.cupom.codigo : '' , items: entregas, }); } return f; }, get vlr_frete_gratis() { return this._vlr_frete_gratis; }, set vlr_frete_gratis(value) { this._vlr_frete_gratis = value; this._carregarTemplate(); }, get vlr_restante_frete_gratis() { return this._calculaRestanteFreteGratis(); }, get perc_restante_frete_gratis() { return this._calculaPercentualFreteGratis(); }, get texto_frete_gratis() { if (this.vlr_restante_frete_gratis > 0) { return `Faltam apenas
R$ ${parseFloat(this.vlr_restante_frete_gratis).toLocaleFixed(2)} para
Frete Grátis na Entrega`; } else { return `Parabéns seu Frete é
GRÁTIS `; } }, get vlr_total_calculado() { return this._calculaVlrTotal(); }, get informacoes_pbm() { return this._informacoes_pbm; }, set informacoes_pbm(value) { this._informacoes_pbm = value; }, get pacotes_juntos() { return this._pacotes_juntos; }, set pacotes_juntos(value) { this._pacotes_juntos = value; this._atualizarCarrinho(); }, get index() { return this._index }, set index(value) { this._index = value }, get mensagem() { return this._mensagem }, set mensagem(value) { this._mensagem[this._index] = value }, get popupConfirmacao() { return this._popupConfirmacao; }, set popupConfirmacao(value) { this._popupConfirmacao = value; }, get vlr_desconto() { return this._vlr_desconto; }, set vlr_desconto(value) { this._vlr_desconto = value; }, get texto_frete_gratis() { // if (this.vlr_restante_frete_gratis > 0) { // return `Faltam apenas
R$ ${parseFloat(this.vlr_restante_frete_gratis).toLocaleFixed(2)} para
Frete Grátis na Entrega`; // } // else { // return `Parabéns seu Frete é
GRÁTIS * `; // } return `Frete Grátis nas compras acima de
R$ ${parseFloat(this.vlr_frete_gratis ? this.vlr_frete_gratis : 'R$ 200,00').toLocaleFixed(2)} `; }, get texto_frete_gratis_mobile() { if(this.vlr_restante_frete_gratis > 0){ return ` Faltam apenas
R$ ${parseFloat(this.vlr_restante_frete_gratis).toLocaleFixed(2)} para
Frete Grátis . `; // return ` // Faltam apenas
R$ ${parseFloat(this.vlr_restante_frete_gratis).toLocaleFixed(2)} para
Frete Grátis em pedidos agendados. Consulte regras. //
// `; } else { return ` Você possui
Frete Grátis . `; // return ` // Você possui
Frete Grátis em pedidos agendados. Consulte regras. //
// `; } }, set submit_retirada_por_terceiro(value) { this._submit_retirada_por_terceiro = value ? value : false }, get template_forma_pagamento() { let html_template = `
Forma(s) de pagamento
`; if(this.pagamento && this.pagamento.value && this.pagamento.value.length){ this.pagamento.value.map((pag) => { let qtd_parcelas = pag.qtd_parcelas ? +pag.qtd_parcelas : 1; let vlr_parcela = +pag._vlr_total / qtd_parcelas; html_template += `
${pag.nome_descritivo}
${qtd_parcelas}x R$ ${parseFloat(vlr_parcela).toLocaleFixed(2)}
` }) } return html_template; }, get template_sub_cabecalho() { let html = ``; html += `
${!this.pagamento || !this.pagamento.cashback_selecionado ? ` Aplicar ` : ` Remover `}
${!this.cupom || !this.cupom.codigo ? ` Aplicar ` : ` Remover `}
${this.cupom && this.cupom.codigo ? `
Cupom aplicado
` : ``} ${ this.is_pagamento_incompleto && this.vlr_restante_pagamento && (this.pagamento._getPagamentoFromId('convenio') && this.pagamento._getPagamentoFromId('convenio').selecionado || this.pagamento._getPagamentoFromId('cartao_presente') && this.pagamento._getPagamentoFromId('cartao_presente').selecionado ) ? `
Restam R$ ${this.vlr_restante_pagamento ? parseFloat(this.vlr_restante_pagamento).toLocaleFixed(2) : parseFloat(0).toLocaleFixed(2)} na cesta. Para finalizar o pagamento do pedido, selecione uma nova forma de pagamento.
` : ``}
`; return html; }, get template_resumo_cesta() { let html_resumo = ``; let html_frete_limite = ``; // se tiver cupom, o frete é o frete do cupom let frete = parseFloat(this.vlr_frete).toLocaleFixed(2) if (this.cupom && (this.cupom.frete || this.cupom.frete == 0)) { frete = parseFloat(this.cupom.frete).toLocaleFixed(2) } // exibe texto de limite de frete // if (this.cupom && this.cupom.vlr_frete_limite && this.cupom.vlr_frete_final > 0) { // html_frete_limite = ` //
// O frete grátis não será aplicado em fretes acima de R$${parseFloat(this.cupom.vlr_frete_limite).toLocaleFixed(2)}. mas com o // cupom vocé continua economizando até R$${parseFloat(this.cupom.vlr_cupom).toLocaleFixed(2)} no valor do frete e só // paga a diferença. //
// ` // } html_resumo += `
${html_frete_limite}
Quantidade:
${this.qtd_itens ? ` ${this.qtd_itens} ${this.qtd_itens > 1 ? 'produtos' : 'produto'} ` : ` 0 produtos `}
${this.passoAtual != this.passos[0].nome ? `
` : ``}
Cupom de desconto:
R$ ${this.cupom && this.cupom.vlr_cupom ? '-' + parseFloat(this.cupom.vlr_cupom).toLocaleFixed(2) : parseFloat(0).toLocaleFixed(2)}
Desconto do programa:
R$ ${this.vlr_desconto_pbm && this.vlr_desconto_pbm ? parseFloat(this.vlr_desconto_pbm).toLocaleFixed(2) : parseFloat(0).toLocaleFixed(2)}
Dinheiro de volta:
R$ ${this.vlr_cashback}
${!isNaN(this._vlr_total_convenio) && this._vlr_total_convenio ? `
Convênio:
R$ ${parseFloat(this._vlr_total_convenio).toLocaleFixed(2)}
` : ``} ${!isNaN(this.vlr_desconto) && this.vlr_desconto ? `
Descontos totais:
R$ ${parseFloat(this.vlr_desconto).toLocaleFixed(2)}
` : ``}
Total:
R$ ${this.vlr_total_calculado}
` return html_resumo }, get template() { if (this.passoAtual === this.passos[0].nome) { let height_resumo = $('#carrinho-footer-mobile').height() + 20 $('.resumo_da_cesta').css('height', `${height_resumo}px !important;`) let html_template = this.template_sub_cabecalho; if(this.pacotes){ html_template += $.map(this.pacotes, (elem) => { return elem.template; }).join(''); } if (this.pacotes && this.pacotes.length) { if (this.pacotes.length > 1 || this.pacotes_juntos) { html_template += `
`; } // Permanente ainda não tem divisão de pacotes /* html_template += `
? Saiba mais sobre divisão em pacotes
`; */ }else { html_template += `
Sua cesta está vazia
Adicione produtos à sua cesta e eles aparecerão aqui.
`; } if(html_template) html_template += this.template_resumo_cesta // Pacotes return html_template; } else if (this.passoAtual === this.passos[1].nome) { // Entregas let html_template = this.template_sub_cabecalho; if(this.pacotes && this.pacotes.length){ let qtd_pacotes_nao_marketplace = 0 html_template += $.map(this.pacotes, (elem) => { if(elem.pacote && !elem.pacote.is_marketplace) qtd_pacotes_nao_marketplace++; let html_pacote = ``; html_pacote += elem.template; html_pacote += elem.entrega.template; return html_pacote; }).join(''); if (this.pacotes_juntos == 'on' || qtd_pacotes_nao_marketplace > 1) { html_template += this.template_juntar_pacotes; } } html_template += this.template_resumo_cesta; return html_template; } else if (this.passoAtual === this.passos[2].nome) { // Pagamento let html_template = this.template_sub_cabecalho; html_template += this.pagamento.template_mobile; html_template += this.template_resumo_cesta; return html_template; } else if (this.passoAtual === this.passos[3].nome) { let resumo_compra; resumo_compra = new CarrinhoConfirmacao(this.qtd_itens, this.pacotes, this.vlr_subtotal, this.vlr_desconto_pbm, this.vlr_frete, null, this.endereco.value, this.pagamento.value, this.cupom, this.informacoes_pbm, this._calculaVlrTotalFloat()); let html_template = ``; html_template += resumo_compra.template_mobile; html_template += this.template_forma_pagamento; html_template += this.template_resumo_cesta; return html_template; } } }; CarrinhoComponent.prototype._calculaVlrTotalFloat = function () { const vlrSubTotal = +this.vlr_subtotal ? +this.vlr_subtotal : 0; const vlrFrete = +this.vlr_frete ? +this.vlr_frete : 0; const vlrCupom = this.cupom && this.cupom.vlr_cupom ? this.cupom.vlr_cupom : 0; const calculo1 = vlrSubTotal + vlrFrete; const calculo2 = calculo1 - vlrCupom; return calculo2; }, CarrinhoComponent.prototype._calculaVlrTotal = function () { return this._calculaVlrTotalFloat().toLocaleFixed(2) ? this._calculaVlrTotalFloat().toLocaleFixed(2) : (0).toLocaleFixed(2); }, CarrinhoComponent.prototype._calculaRestanteFreteGratis = function () { const calculo = +this.vlr_frete_gratis - +this.vlr_subtotal return calculo > 0 ? calculo : 0 }, CarrinhoComponent.prototype._calculaPercentualFreteGratis = function () { return (this.vlr_frete_gratis * +this.vlr_subtotal) / 100 > 100 ? 100 : (this.vlr_frete_gratis * +this.vlr_subtotal) / 100; }, CarrinhoComponent.prototype._atualizarCashback = function () { return load('on', $('.asidebar')); $.ajax({ type: "POST", url: "", data: { 'csrfmiddlewaretoken': '2IciJSAJkf9nhPjQpmUaWQyeMfKIibI7hGvpITiZVBE4CbpW4QWY8LsHY7YV5sKn' }, success: (data) => { load('off', $('.asidebar')); this.saldo_cashback = data.valor; }, error: (data) => { load('off', $('.asidebar')); } }); const pacotes = []; const pagamentos = []; if (this.pacotes.length > 0) { var endereco = $.extend(true, {}, this.endereco.value); delete endereco._enderecos; endereco = removeTemplates(endereco); for (const pacote of this.pacotes) { const _pacote = $.extend(true, {}, pacote); delete _pacote._carrinho; delete _pacote.filial; delete _pacote.entregas; delete _pacote.produtos; const entrega = $.extend(true, {}, _pacote.entrega); delete entrega.value; delete entrega._pacote; delete entrega.entregasDoTipo; delete entrega._entregasDoTipo; delete entrega.entregas; delete entrega._tipo_entrega; delete entrega.todasEntregas; delete entrega._todasEntregas; delete entrega.filial; _pacote.entrega = entrega; const entregaValor = $.extend(true, {}, _pacote.entrega._value); delete entregaValor._entrega_component; _pacote.entrega._value = entregaValor; if (_pacote.entrega._value.entrega_complemento) { const entregaComplemento = $.extend(true, {}, _pacote.entrega._value.entrega_complemento); delete entregaComplemento._entrega; _pacote.entrega._value.entrega_complemento = entregaComplemento; } const _produtos = []; for (const produto of pacote._produtos) { const _produto = $.extend(true, {}, produto); delete _produto._pacote; _produtos.push(_produto); } _pacote._produtos = _produtos; pacotes.push(removeTemplates(_pacote)); } if (this.pagamento && this.pagamento.value && this.pagamento.value.length > 0) { for (const pay of this.pagamento.value) { const payment = $.extend(true, {}, pay); delete payment._pagamentos; delete payment._carrinho; delete payment._meus_pagamentos; delete payment._tipos_pagamento; if (payment.cartao) { delete payment.cartao._pagamento; } pagamentos.push(removeTemplates(payment)); } } } $.ajax({ type: "POST", url: "", data: { csrfmiddlewaretoken: '2IciJSAJkf9nhPjQpmUaWQyeMfKIibI7hGvpITiZVBE4CbpW4QWY8LsHY7YV5sKn', lista_pacotes: JSON.stringify(pacotes), endereco: JSON.stringify(endereco), pagamento: JSON.stringify(pagamentos), cupom: JSON.stringify(this.cupom) }, success: (data) => { load('off', $('.asidebar')); this.vlr_cashback = data.valor; this._carregarTemplate(); }, error: (data) => { load('off', $('.asidebar')); } }); }, CarrinhoComponent.prototype._atualizarCarrinho = function () { load('on', $('.asidebar')); if (this.endpointPacotes) { this.endpointPacotes.abort(); } this.endpointPacotes = $.ajax({ type: "POST", url: "/entrega/buscar/pacotes", data: { 'csrfmiddlewaretoken': '2IciJSAJkf9nhPjQpmUaWQyeMfKIibI7hGvpITiZVBE4CbpW4QWY8LsHY7YV5sKn', 'cep': this.endereco.value && this.endereco.value.cep ? this.endereco.value.cep : '', 'endereco_id': this.endereco.value && this.endereco.value.id ? this.endereco.value.id : '', 'is_pacote_unico': this.pacotes_juntos }, success: (response_pacotes) => { let is_exibir_modal = ''; let estadoSelecionado = localStorage.getItem("estado"); if(!estadoSelecionado){ showModalInicial(); } this.endpointPacotes = null; load('off', $('.asidebar')); this.id = response_pacotes.carrinho_id; this.qtd_itens = response_pacotes.qtd_itens; this.vlr_subtotal = +response_pacotes.subtotal_valor; this.vlr_frete_gratis = response_pacotes.valor_frete_gratis; this.vlr_desconto_pbm = response_pacotes.vlr_desconto_pbm; this.vlr_desconto_pbm = this.vlr_desconto_pbm != 0 ? this.vlr_desconto_pbm : '0,00' this.vlr_desconto = response_pacotes.desconto_valor this.informacoes_pbm = response_pacotes.informacoes_pbm; this.pacotes = response_pacotes.pacotes; /* if (this.passoAtual === 'pagamentos') { this._passoAtual = 'entregas'; this._carregarTemplate(); }*/ this._passoAtual = 'pacotes'; this._carregarTemplate(); this._atualizarCashback(); carrinho.instance.mensagem = []; }, error: (data) => { load('off', $('.asidebar')); } }); }, CarrinhoComponent.prototype._validacaoDosPassos = async function () { if (this.passoAtual === 'resumo' && this.valid) { const button = $('#carrinho-botao-finalizar'); button.addClass('disabled') setTimeout(() => { button.removeClass('disabled') }, 30000); this.popupConfirmacao = new CarrinhoConfirmacao(this.qtd_itens, this.pacotes, this.vlr_subtotal, this.vlr_desconto_pbm, this.vlr_frete, null, this.endereco.value, this.pagamento.value, this.cupom, this.informacoes_pbm, this._calculaVlrTotalFloat()); this.popupConfirmacao._confirmar(); } else { for (const index in this.passos) { if (this.passoAtual === this.passos[index].nome) { if (await this.passos[index].valid()) { if (this.passos[parseFloat(index) + 1].nome) { this.passoAtual = this.passos[parseFloat(index) + 1].nome; this._setCarrinho() break; } } else { return } } } this._carregarTemplate(); this._atualizarProgressoCarrinho(); } }, CarrinhoComponent.prototype._setCarrinho = function (){ //Local storage removido temporariamente para que seja adequado a nova versão do carrinho this._deleteCarrinho() return let _carrinho = this._getCarrinho() let carrinhoStorage = { 'passoAtual': _.cloneDeep(carrinho.instance._passoAtual), 'pacotes': _.cloneDeep(carrinho.instance.pacotes), 'pagamento': _.cloneDeep(carrinho.instance.pagamento), 'cupom': _.cloneDeep(!carrinho.instance._cupom && this._getCarrinho() && this._getCarrinho().cupom ? this._getCarrinho().cupom : carrinho.instance._cupom), 'mensagem': _.cloneDeep(carrinho.instance.mensagem), //'mensagem': _.cloneDeep(this._getCarrinho() && this._getCarrinho().mensagem ? this._getCarrinho().mensagem : ''), } try { carrinhoStorage && carrinhoStorage.endereco ? delete carrinhoStorage.endereco._enderecos : '' const pacotes = []; if(carrinhoStorage.pacotes && carrinhoStorage.pacotes.length){ for (const pacote of carrinhoStorage.pacotes) { const _pacote = _.cloneDeep(pacote); delete _pacote._carrinho; delete _pacote.filial; delete _pacote.entregas; delete _pacote.produtos; const entrega = _.cloneDeep(_pacote.entrega); delete entrega._pacote; delete entrega.value; delete entrega.entregasDoTipo; delete entrega._entregasDoTipo; delete entrega.todasEntregas; delete entrega._todasEntregas; delete entrega._tipo_entrega; _pacote.entrega = entrega; const entregaValor = _.cloneDeep(_pacote.entrega._value); entregaValor ? delete entregaValor._entrega_component : '' entregaValor ? delete entregaValor._valid : '' _pacote.entrega._value = entregaValor; if (_pacote && _pacote.entrega && _pacote.entrega._value && _pacote.entrega._value.entrega_complemento) { const entregaComplemento = _.cloneDeep(_pacote.entrega._value.entrega_complemento); entregaComplemento ? delete entregaComplemento._entrega : '' entregaComplemento && entregaComplemento._faixa_componente ? delete entregaComplemento._faixa_componente : '' entregaComplemento && entregaComplemento._loja_componente ? delete entregaComplemento._loja_componente : '' _pacote.entrega._value.entrega_complemento = entregaComplemento; } const _produtos = []; for (const produto of pacote._produtos) { const _produto = _.cloneDeep(produto); _produto ? delete _produto._pacote : '' _produtos.push(_produto); } _pacote._produtos = _produtos; pacotes.push(_pacote) } } carrinhoStorage.pacotes = pacotes delete carrinhoStorage.pagamento._pagamentos; delete carrinhoStorage.pagamento._carrinho; delete carrinhoStorage.pagamento._meus_pagamentos; delete carrinhoStorage.pagamento._tipos_pagamento; delete carrinhoStorage.pagamento.qtd_parcelas; delete carrinhoStorage.pagamento._cartao_adicionado; if(carrinhoStorage.pagamento.convenio){ delete carrinhoStorage.pagamento.convenio._pagamento } if(carrinhoStorage.pagamento.folha_pagamento){ delete carrinhoStorage.pagamento.folha_pagamento._pagamento } if (carrinhoStorage.pagamento.cartao) { delete carrinhoStorage.pagamento.cartao._pagamento; } if(carrinhoStorage.pagamento._infoPagamento){ delete carrinhoStorage.pagamento._infoPagamento._pagamentos; if(carrinhoStorage.pagamento._infoPagamento.cartao){ delete carrinhoStorage.pagamento._infoPagamento.cartao._pagamento } if(carrinhoStorage.pagamento._infoPagamento.convenio){ delete carrinhoStorage.pagamento._infoPagamento.convenio._pagamento } if(carrinhoStorage.pagamento._infoPagamento.folha_pagamento){ delete carrinhoStorage.pagamento._infoPagamento.folha_pagamento._pagamento } } localStorage.setItem('carrinho', JSON.stringify(carrinhoStorage)); } catch (error) { this._deleteCarrinho() } }, CarrinhoComponent.prototype._validacaoPacotes = function () { let packValid = true; let isValid = (this.pacotes && this.pacotes.length > 0) ? $.map(this.pacotes, (pacote) => { if (packValid) { packValid = pacote.valid; if (!packValid) { /*if(carrinho.instance.pacotes[pacote.index - 1].is_entrega_disponivel){ carrinho.instance.pacotes[pacote.index - 1].entrega._carregarTemplate(); onToggleCarrinhoPopUp('open', '#popupEntrega'); } else { toastr.warning(`O pacote ${pacote.index} não possui entregas disponíveis. Remova os produtos para prosseguir.`) }*/ if(!this.pacotes[pacote.index - 1].is_entrega_disponivel){ toastr.warning(`O pacote ${pacote.index} não possui entregas disponíveis. Remova os produtos para prosseguir.`) } return pacote.valid; } } }) : [false]; if (this.pacotes && this.pacotes.length > 0) { isValid = [packValid]; } else { isValid = [false]; } return isValid[0]; }, CarrinhoComponent.prototype._deleteCarrinho = function(){ localStorage.removeItem('carrinho') //this._carregarTemplate() }, CarrinhoComponent.prototype._validacaoEndereco = function () { if (this.endereco.valid) { return true; } else { onToggleCarrinhoPopUp('open', '#popupEndereco'); return false; } }, CarrinhoComponent.prototype._validacaoEntregas = function () { let entregaValid = true if(this.pacotes && this.pacotes.length){ this.pacotes.map(pacote => { if(!pacote.entrega || !pacote.entrega.valid){ if(!pacote.entrega.value){ toastr.error(`Selecione uma forma de entrega para o pacote ${pacote.index}`) } entregaValid = false } }) } return entregaValid }, CarrinhoComponent.prototype._carregarTemplate = function () { $('#carrinho-itens').html(this.qtd_itens > 0 ? '(' + this.qtd_itens + (this.qtd_itens > 1 ? ' itens)' : ' item)') : '(Vazio)'); $('[data-target="carrinho-vlr_cashback"]').html('R$ ' + this.vlr_cashback); $('[data-target="carrinho-vlr_total"]').html('R$ ' + this.vlr_total_calculado); if (this.vlr_subtotal) { $('[data-target="carrinho-sub_total"]').html('R$ ' + this.vlr_subtotal.toLocaleString('pt',{minimumFractionDigits: 2, maximumFractionDigits: 2})).closest('.col-12').removeClass('d-none'); } if(this.vlr_frete > 0){ $('[data-target="carrinho-vlr_frete"]').html('R$ ' + this.vlr_frete.toLocaleString('pt',{minimumFractionDigits: 2, maximumFractionDigits: 2})).closest('.col-12').removeClass('d-none'); } $('#carrinho-texto-frete-gratis').html(this.texto_frete_gratis); $('[data-target="carrinho-vlr_desconto_pbm"]').html('R$ ' + parseFloat(this.vlr_desconto_pbm).toLocaleFixed(2)); $('#carrinho-restante_frete_bar').css('width', this.perc_restante_frete_gratis + '%'); $('#carrinho-body').html(this.template); $('[data-target="carrinho-texto-frete-gratis-mobile"]').html(this.texto_frete_gratis_mobile); $(".asidebar").find("select").each(function (e, a) { var r = $(".asidebar"); a && $(a).select2({ theme: "bootstrap", dropdownParent: r, minimumResultsForSearch: -1 }) }); if (this.qtd_itens > 0) { $('.btn-market').addClass('contain_item').attr('data-content', this.qtd_itens); if (is_app) { $('.app-body').attr('data-qtd_app', this.qtd_itens); //Qtd que aparecerá na cesta do app. } } if (this.pagamento && this.pagamento.valueNotCashback && this.pagamento.valueNotCashback.cartao && this.pagamento.valueNotCashback.cartao.tipo) { eventosCartao(); } $('.steps-carrinho').find('.active').removeClass('active') switch(this.passoAtual){ case this.passos[0].nome: $('.steps-carrinho').find('[data-target="pacotes"]').addClass('active') break; case this.passos[1].nome: $('.steps-carrinho').find('[data-target="entregas"]').addClass('active') break; case this.passos[2].nome: $('.steps-carrinho').find('[data-target="pagamento"]').addClass('active') break; case this.passos[3].nome: $('.steps-carrinho').find('[data-target="pagamento"]').addClass('active') break; } let textoBotao = 'Escolher Entrega'; this.passos.map(passo => { if (this.passoAtual === passo.nome) { textoBotao = passo.texto(); } }) $('[data-target="texto-btn-avancar"]').html(textoBotao) $('#carrinho-botao-finalizar').off('click.cart').on('click.cart', () => { window.location.href = "/cliente/login"; resizeCarrinhoBody() }); $('#carrinho-continuar-entrega').off('click.cart').on('click.cart', () => { const isValid = this._validacaoPacotes(); if (isValid) { this._atualizarProgressoCarrinho(); blackPanel(document.getElementById('carrinho_desfoco')); } }); if($('.div-body-pacote').children().eq(1).children().length <=2){ }else{ $(".div-resumo-carrinho").css({ "padding-bottom": `calc(${$('#carrinho-footer-desktop').outerHeight(true)}px + 15px) !important;` }) } }, CarrinhoComponent.prototype._atualizarProgressoCarrinho = function () { let acaoVoltar; let pas = $.map(this.passos, (passo) => { if (this.passoAtual === passo.nome) { acaoVoltar = passo.acaoVoltar(); } return passo.nome; }) const perc = this.passos[pas.indexOf(this.passoAtual)].progresso(); $('#carrinho-botao-voltar').off('click').on('click', () => { acaoVoltar(); this._carregarTemplate(); }) if(this.passoAtual === this.passos[0].nome || this.passoAtual === this.passos[1].nome){ $('[data-target="carrinho-resumo-endereco"]').off('click').on('click', function(){ onToggleCarrinhoPopUp('open', '#popupEndereco') }) $('[data-target="icon-editar-endereco"]').show() $('[data-target="carrinho-resumo-endereco"]').addClass('cursor-pointer') } else { $('[data-target="carrinho-resumo-endereco"]').off('click') $('[data-target="carrinho-resumo-endereco"]').removeClass('cursor-pointer') $('[data-target="icon-editar-endereco"]').hide() } if(this.passoAtual === this.passos[1].nome){ if(document.getElementById('carrinho-entrega-1-1')){ document.getElementById('carrinho-entrega-1-1').scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'center' }); } } else if(this.passoAtual === this.passos[2].nome) { $('#carrinho-body').animate({'scrollTop': 0}, 500); } $('[data-target="carrinho-progresso"]').css('width', perc + '%'); }, CarrinhoComponent.prototype._mensagemTempoDeEntrega = function (pacote_entrega) { if(pacote_entrega.entrega && pacote_entrega.entrega._value){ //const index_pct = $('#carrinho-tipo-entregas').attr('data-pacote-ativo') - 1; //const _entregas = pacote_entrega[index_pct].entrega._value.dadosComplemento; //let carrinho = pacote_entrega[index_pct]._carrinho; const _entregas = pacote_entrega.entrega._value.dadosComplemento; let carrinho = pacote_entrega._carrinho; let _this = this //pacote_entrega[index_pct]._carrinho.index = index_pct; $.ajax({ type: 'POST', url: '/alerta/horarios', data: { 'csrfmiddlewaretoken': '2IciJSAJkf9nhPjQpmUaWQyeMfKIibI7hGvpITiZVBE4CbpW4QWY8LsHY7YV5sKn', 'cd_filial': _entregas && _entregas.filial && _entregas.filial.cd_filial ? _entregas.filial.cd_filial : '', 'tempo_entrega': _entregas.tempo, 'tipo': _entregas.tipo_codigo, 'tempo_limite': _entregas.hora_limite, 'hr_inicio': _entregas.hr_inicio, 'entrega_id': _entregas.nome, 'is_mensagem_horario': _entregas.is_mensagem_horario, }, success: function (response) { let pacote_index = +pacote_entrega.index - 1 if(response.status){ _this.mensagem[pacote_index] = response.mensagem; $('#msg-tempo-entrega-' + pacote_index).html(response.mensagem); $('#msg-tempo-entrega-' + pacote_index).parent().show(300); } else { _this.mensagem[pacote_index] = ''; $('#msg-tempo-entrega-' + pacote_index).parent().hide(300); } }, error: function (response) { pacote_entrega[pacote_index]._carrinho.mensagem[pacote_index] = ''; } }); } }, CarrinhoComponent.prototype._alterarEstoqueProdutoRetirada = function(pacote){ let tipo_retirada = carrinho.instance.pacotes[pacote].entrega && carrinho.instance.pacotes[pacote].entrega._value && carrinho.instance.pacotes[pacote].entrega._value.tipo_codigo ? carrinho.instance.pacotes[pacote].entrega._value.tipo_codigo : '' if(tipo_retirada === 'retirada') { let estoque_filial = carrinho.instance.pacotes[pacote].entrega._value && carrinho.instance.pacotes[pacote].entrega._value._filial && carrinho.instance.pacotes[pacote].entrega._value._filial.produtos ? carrinho.instance.pacotes[pacote].entrega._value._filial.produtos : [] carrinho.instance.pacotes[pacote]._produtos.forEach(produto => { let item = estoque_filial.findIndex(estoque => estoque.produto_id === produto.produto_id) produto._produto.qtd_estoque = item > -1 ? estoque_filial[item].qtd_estoque : produto.estoque_original }) } else { carrinho.instance.pacotes[pacote]._produtos.forEach(produto => { produto._produto.qtd_estoque = produto.estoque_original }) } }, carrinho.instance = new CarrinhoComponent(); $(document).ready(()=>{ /*$("img").each((index, el) => { $(el).attr("src", "https://farmaciapermanente.com.br/" + ( $(el).attr("data-src") || $(el).attr("src") )) })*/ if (modalInicialMostrado === false) { showModalInicial(); } }) function removeTemplates(obj) { for(prop in obj) { if (prop === 'template' || prop === 'pagamentoComplemento' || prop === 'template_novo_endereco' || prop === 'editar' || prop === 'html_convenios') delete obj[prop]; else if (typeof obj[prop] === 'object') obj[prop] = removeTemplates(obj[prop]); } return obj; } atualizarCarrinho = () => { carrinho.instance._atualizarCarrinho(); } let json_hashs = {}; /** * função especifica para o carrinho, adicionar ou remover itens do carrinho de 1 em 1 armazenando qtd de clicks e enviando a qtd de clicks em um intervalo após 700 milisegundos sem click do usuário * @param __this DOM botao + ou - * @param acao mais ou menos string * @param hash hash_produto */ function adicionar_remover(__this, acao, hash, token_nsu) { let _this = __this.parent().find(`[data-toggle='number_plus_minus']`); if (!hash) { hash = null; } if (acao) { if (acao === "menos") { if (_this.attr('data-valor') > parseInt(_this.attr('data-limite-min')) || _this.attr('data-limite-min') === "") { $(__this).parent().find('a').removeClass('isDisabled'); if (_this.attr('data-valor') <= parseInt(_this.attr('data-limite-min')) || _this.attr('data-valor') <= 1) { $(__this).addClass('isDisabled'); } else { $(__this).removeClass('isDisabled'); _this.html( parseInt(_this.attr('data-valor')) - 1 ).attr('data-valor', parseInt(_this.attr('data-valor')) - 1); if (hash) { if (!json_hashs[hash + acao]) { json_hashs[hash + acao] = 0; } json_hashs[hash + acao]++; let click = json_hashs[hash + acao]; setTimeout(() => { if (click === json_hashs[hash + acao]) { load('on', $('.asidebar')); $.ajax({ type: "POST", url: "/carrinho/remover", data: { 'csrfmiddlewaretoken': '2IciJSAJkf9nhPjQpmUaWQyeMfKIibI7hGvpITiZVBE4CbpW4QWY8LsHY7YV5sKn', 'hash_produto': hash, 'quantidade': json_hashs[hash + acao], 'token_nsu': token_nsu }, success: (data) => { load('off', $('.asidebar')); if (data.status === true) { atualizarCarrinho(); } else { toastr.error(data.descricao, 'Erro ao enviar'); } }, error: (data) => { load('off', $('.asidebar')); } }); json_hashs[hash + acao] = 0; } }, 700); } } } else { $(__this).addClass('isDisabled'); } } else if (acao === "mais") { if (_this.attr('data-valor') < parseInt(_this.attr('data-limite-max')) || _this.attr('data-limite-max') === "") { $(__this).parent().find('a').removeClass('isDisabled'); _this.html( parseInt(_this.attr('data-valor')) + 1 ).attr('data-valor', parseInt(_this.attr('data-valor')) + 1); _this.attr('data-valor') === parseInt(_this.attr('data-limite-max')) ? $(__this).addClass('isDisabled') : $(__this).removeClass('isDisabled'); if (hash) { if (!json_hashs[hash + acao]) { json_hashs[hash + acao] = 0; } json_hashs[hash + acao]++; let click = json_hashs[hash + acao]; setTimeout(function () { if (click === json_hashs[hash + acao]) { adicionarProdutoCarrinho(hash, json_hashs[hash + acao], _this); json_hashs[hash + acao] = 0; } }, 700) } } else { $(__this).addClass('isDisabled'); } } } } function adicionar_remover_carrossel_produtos(__this, acao, hash, token_nsu) { let _this = __this.parent().find(`[data-toggle='number_plus_minus']`); if (!hash) { hash = null; } if (acao) { if (acao === "menos") { if (_this.attr('data-valor') > parseInt(_this.attr('data-limite-min')) || _this.attr('data-limite-min') === "") { $(__this).parent().find('a').removeClass('isDisabled'); if (_this.attr('data-valor') <= parseInt(_this.attr('data-limite-min')) || _this.attr('data-valor') <= 1) { $(__this).addClass('isDisabled'); } else { $(__this).removeClass('isDisabled'); _this.html( parseInt(_this.attr('data-valor')) - 1 ).attr('data-valor', parseInt(_this.attr('data-valor')) - 1); if (hash) { if (!json_hashs[hash + acao]) { json_hashs[hash + acao] = 0; } json_hashs[hash + acao]++; let click = json_hashs[hash + acao]; setTimeout(() => { if (click === json_hashs[hash + acao]) { $(__this).parent().find('select[data-toggle="select_number_plus_minus"]').html(`
${parseInt(_this.attr('data-valor'))} `) json_hashs[hash + acao] = 0; } }, 700); } } } else { $(__this).addClass('isDisabled'); } } else if (acao === "mais") { if (_this.attr('data-valor') < parseInt(_this.attr('data-limite-max')) || _this.attr('data-limite-max') === "") { $(__this).parent().parent().find('a').removeClass('isDisabled'); _this.html( parseInt(_this.attr('data-valor')) + 1 ).attr('data-valor', parseInt(_this.attr('data-valor')) + 1); _this.attr('data-valor') === parseInt(_this.attr('data-limite-max')) ? $(__this).addClass('isDisabled') : $(__this).removeClass('isDisabled'); if (hash) { if (!json_hashs[hash + acao]) { json_hashs[hash + acao] = 0; } json_hashs[hash + acao]++; let click = json_hashs[hash + acao]; setTimeout(function () { if (click === json_hashs[hash + acao]) { $(__this).parent().parent().find('[data-toggle="select_number_plus_minus"]').html(`
${parseInt(_this.attr('data-valor'))} `) json_hashs[hash + acao] = 0; } }, 700) } } else { $(__this).addClass('isDisabled'); } } } }
Produtos
'), $("#search-suggestion").html(""), data.indices.forEach(function (a) { let e = a._source.indice; a = document.createElement("a"); a.classList.add("text-search", "font-sm"), a.setAttribute("href", "/pesquisa/" + e.replace(/\s/g, "-")), a.classList.add("my-1"), a.innerHTML = e, $("#search-suggestion").append(a) }), $("#search-suggestion").append(""); let todas_categorias = []; data.dados.categorias ? data.dados.categorias.forEach(function (a) { todas_categorias.includes(a._source.categoria_principal_url) || void 0 === a._source.categoria_principal_url || $("#search-suggestion").append("
" + termo + ' em ' + a._source.categoria_principal_nome + "
"), todas_categorias.push(a._source.categoria_principal_url) }) : '', $("#search-suggestion").append(''), $("#search-product").html(""); data.dados.produtos.forEach(function (value) { var img_produto = 'produtos/default.jpg'; if (value._source.imagem_produto) { img_produto = value._source.imagem_produto; } $("#search-product").append(`
${value._source.nm_produto} `); }); $('.dropdown-search').append(``); $('.dropdown-search').append(`
Ver todos os resultados > `); pegarPrecosAtribuirDescontos(true); monitorarDiv("[data-target='preco-produto'] .preco-ini-produto", () => $("[data-target='preco-produto'] .preco-ini-produto").removeClass("d-flex").addClass("d-none")) }, error: function (data) { load('off', $('.asidebar')); if (data.statusText !== 'error') { doSubmit = false; } } }); } function monitorarDiv(target, callbackExecutar){ var targetNode = document.querySelector(target); var config = { attributes: true, childList: true, subtree: true }; var callback = function(mutationsList, observer) { if(!mutationsList || !Array.isArray(mutationsList)) return for(let mutation of mutationsList) { if (mutation.type === 'childList') { callbackExecutar() } else if (mutation.type === 'attributes') { } } }; var observer = new MutationObserver(callback); observer.observe(targetNode, config); } function pesquisar_get() { let valor = $('#barra-pesquisa').val(); if ( valor === ""){ return }else{ valor = valor.replace(/\s/g, '-').trim().toLowerCase(); window.location.replace("/pesquisa/" + valor); } } function pesquisar_get_sugestao(termo) { let valor = termo; valor = valor.replace(/\s/g, '-').trim(); window.location.replace("/pesquisa/" + valor); } var typingTimer; //timer identifier var doneTypingInterval = 500; //time in ms, 1 second for example //quando digita inicia o contador $('#barra-pesquisa').on('keyup', function (e) { timer = 0; if (e.key === 'Enter' || e.keyCode === 13) { pesquisar_get(); } clearTimeout(typingTimer); if ($('#barra-pesquisa').val()) { typingTimer = setTimeout(doneTyping, doneTypingInterval); } }); var timer = 0; setInterval(function () { timer += 1 }, 1); //quando o usuario para de digitar function doneTyping() { var $search = $('#barra-pesquisa'); if ($search.val().length >= 3) { pesquisar_post($search.val()); $search.css({ borderRadius: '7px 7px 0px 0px', borderBottom: 'none' }); } }