Help
RSS
API
Feed
Maltego
Contact
Domain > imperialsalgadosc.com.br
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2023-07-26
54.233.249.65
(
ClassC
)
2025-12-03
52.44.111.183
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyServer: awselb/2.0Date: Wed, 03 Dec 2025 22:42:22 GMTContent-Type: text/htmlContent-Length: 134Connection: keep-aliveLocation: https://imperialsalgadosc.com.br:443/ html>head>title>301 Moved Permanently/title>/head>body>center>h1>301 Moved Permanently/h1>/center>/body>/html>
Port 443
HTTP/1.1 200 OKDate: Wed, 03 Dec 2025 22:42:22 GMTContent-Type: text/html; charsetUTF-8Transfer-Encoding: chunkedConnection: keep-aliveServer: Apache/2.4.29 (Ubuntu)X-XSS-Protection: 1; modeblockCache-Control: no-cache, privateSet-Cookie: XSRF-TOKENeyJpdiI6IkZwTzQzNGZSNnV2aUxqdWRmNEYxSGc9PSIsInZhbHVlIjoib0FBUFNUeGtZb01aMUxnRWhYSWFkUXRrdzQxajByMlBnRUl4RGxjMnExZnV6WkZcL0IwXC96YmIyWjNrNWNHR1MrIiwibWFjIjoiYzFjMmNlMjZlN2YyY2FhY2IyZTNkZjk3MDc2MmY2Yzk1NTIxN2U1ZjRlODhiODA2NmJkMzBkOWE1YjgzNWNkMyJ9; expiresThu, 03-Dec-2026 22:42:22 GMT; Max-Age31536000; path/Set-Cookie: laravel_sessioneyJpdiI6ImU5b3h0ZzV3Q05mblJYWGN3XC9rZStRPT0iLCJ2YWx1ZSI6InRBZHI2VXRFYkh1TmxwWEhSc1dLYnl2ejNLVDZTMFUyNDltNk5VUFp6aGt1VmZxY2p1TUc4cHJRUUg3b2twRnoiLCJtYWMiOiI0YmEwYTNjOGVlZWJjYzg0OWExZTIzM2QyZTcwNjczNjUxMjYxODRhMDIxYWE3OGNjNmU5N2E4YjhmY2Q0OTZlIn0%3D; expiresThu, 03-Dec-2026 22:42:22 GMT; Max-Age31536000; path/; httponlyVary: Accept-Encoding !DOCTYPE html>html langpt-br ng-appapp>head> meta charsetutf-8> meta nameviewport contentwidthdevice-width, initial-scale1.0, maximum-scale1.0, user-scalableno> meta http-equivX-UA-Compatible contentIEedge> meta namedescription contentSite de pedidos oficial do Imperial Salgados em Florianópolis, SC. Confira nossos pratos no cardápio on-line com preços e promoções exclusivas para entrega e retirada em balcão.> meta nameauthor contentHubzy> title>Imperial Salgados - Peça online!/title> link relshortcut icon hrefhttps://files.deliveryturbo.com.br/stores/empresa_130/1d586f6d044b327e02db3ac105c7b09b.png> link hrefhttps://fonts.googleapis.com/css?familyLato:400,700,900 relpreload asstyle onloadthis.relstylesheet> link href../assets/common/lib/fontawesome-free-6.4.2-web/css/all.css relpreload asstyle onloadthis.relstylesheet> link relpreload asstyle onloadthis.relstylesheet typetext/css href../assets/common/lib/bootstrap/dist/css/bootstrap.min.css/> link relpreload asstyle onloadthis.relstylesheet typetext/css href../assets/common/lib/select2/css/select2.min.css/> link relpreload asstyle onloadthis.relstylesheet typetext/css href../assets/common/lib/jquery.gritter/css/jquery.gritter.css/> link relpreload asstyle onloadthis.relstylesheet typetext/css hrefhttps://imperialsalgadosc.com.br/loja/assets/theme/default/custom/css/custom.min.css?v0.105.0/> link relpreload asstyle onloadthis.relstylesheet typetext/css href../assets/common/lib/mprogress/css/mprogress.min.css/> link relpreload asstyle onloadthis.relstylesheet typetext/css href../assets/common/lib/swiper/css/swiper-bundle.min.css/> meta http-equivContent-Security-Policy contentframe-src https://hubzy.pro; /> !-- WebApp Mobile tags --> meta namefull-screen contentyes> meta nameapple-mobile-web-app-capable contentyes> meta namemobile-web-app-capable contentyes> meta nameapple-mobile-web-app-status-bar-style contentblack> meta nameapple-mobile-web-app-title contentImperial Salgados> link relapple-touch-icon sizes72x72 hrefhttps://files.deliveryturbo.com.br/stores/empresa_130/1d586f6d044b327e02db3ac105c7b09b.png> link relapple-touch-icon sizes114x114 hrefhttps://files.deliveryturbo.com.br/stores/empresa_130/1d586f6d044b327e02db3ac105c7b09b.png> link relapple-touch-icon hrefhttps://files.deliveryturbo.com.br/stores/empresa_130/1d586f6d044b327e02db3ac105c7b09b.png> link relapple-touch-startup-image hrefhttps://files.deliveryturbo.com.br/stores/empresa_130/1d586f6d044b327e02db3ac105c7b09b.png> meta nameHandheldFriendly contenttrue> meta nameMobileOptimized contentwidth> meta nametheme-color contentblack/> !-- / WebApp Mobile tags --> !-- OG Tags (Facebook) --> meta propertyog:locale contentpt_br> meta propertyog:url contenthttps://imperialsalgadosc.com.br> meta propertyog:title contentImperial Salgados - Peça online! /> meta propertyog:site_name contentImperial Salgados - Peça online!> meta propertyog:description contentSite de pedidos oficial do Imperial Salgados em Florianópolis, SC. Confira nossos pratos no cardápio on-line com preços e promoções exclusivas para entrega e retirada em balcão. /> !-- meta propertyfb:app_id content441505656611277/ --> meta propertyfb:app_id content299434561230354/> meta propertyog:type contentwebsite> meta propertyog:image contenthttps://files.deliveryturbo.com.br/stores/empresa_130/1d586f6d044b327e02db3ac105c7b09b_min.png /> meta propertyog:image:secure_url contenthttps://files.deliveryturbo.com.br/stores/empresa_130/1d586f6d044b327e02db3ac105c7b09b_min.png /> meta propertyog:image:alt contentImperial Salgados - Peça online! /> meta propertyog:image:type contentimage/png/> !-- / OG Tags (Facebook) --> !-- Google Tag Manager --> !-- End Google Tag Manager --> !-- Global site tag (gtag.js) - Google Analytics --> script async srchttps://www.googletagmanager.com/gtag/js?idG-2DV12F601E>/script> script> window.dataLayer window.dataLayer || ; function gtag(){dataLayer.push(arguments);} gtag(js, new Date()); /* Id do analytics da Loja */ /* Id do analytics do DT */ gtag(config, G-2DV12F601E); /script> !-- Facebook Pixel Code --> script> !function(f,b,e,v,n,t,s) {if(f.fbq)return;nf.fbqfunction(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)}; if(!f._fbq)f._fbqn;n.pushn;n.loaded!0;n.version2.0; n.queue;tb.createElement(e);t.async!0; t.srcv;sb.getElementsByTagName(e)0; s.parentNode.insertBefore(t,s)}(window, document,script, https://connect.facebook.net/en_US/fbevents.js); /* Pixel DT */ fbq(init, 1645274142288281); fbq(track, PageView); /script> noscript> img height1 width1 styledisplay:none srchttps://www.facebook.com/tr?id1645274142288281&evPageView&noscript1/> /noscript> !-- End Facebook Pixel Code --> !-- para ocultar as tags do angular --> style> ng\:cloak, ng-cloak, data-ng-cloak, x-ng-cloak, .ng-cloak, .x-ng-cloak { display: none !important; } /style>/head>body ng-cloak ng-controllerProfileCtrl idprofile_ctrl classng-cloak> !-- Google Tag Manager (noscript) --> !-- End Google Tag Manager (noscript) --> script src../assets/common/lib/mprogress/js/mprogress.min.js typetext/javascript>/script> div idcarrinho-home ng-controllerCarrinhoCtrl classd-none> div idfb-root>/div> script async defer crossoriginanonymous srchttps://connect.facebook.net/pt_BR/sdk.js#xfbml1&versionv7.0&appId299434561230354&autoLogAppEvents1>/script> !-- wrap_content BEGIN --> div classwrap_content> header idheader-site> div idfixedHeader class header_fix_home d-none d-lg-block> nav classnavbar-light bg-light> div classcontainer> div classrow align-items-center> div classcol-auto> div classlogo bg-dark-blur> a hrefhttps://imperialsalgadosc.com.br> img srchttps://files.deliveryturbo.com.br/stores/empresa_130/1d586f6d044b327e02db3ac105c7b09b.png> /a> /div> /div> div classcol> div classform-group row mb-0> div classcol-6> select classselect2 select2-sm select2_hidden_search select-grupo ng-ifitens_site.length > 0> option value% grupo.id_grupo % ng-repeatgrupo in itens_site data-grupo% grupo.id_grupo % data-ds_grupo% grupo.ds_grupo %>% grupo.ds_grupo_titulo_web %/option> /select> /div> /div> /div> div classcol-auto > div classcol d-none d-sm-block> div classdropdown float-right ng-ifcliente.id > 0> button classbtn btn-light dropdown-toggle typebutton iddropdownMenuButton data-toggledropdown aria-haspopuptrue aria-expandedfalse>Olá % cliente.ds_nome %,/button> div classdropdown-menu aria-labelledbydropdownMenuButton> a classdropdown-item link_header_fixed hrefhttps://imperialsalgadosc.com.br/account#v-dados-pessoais>Dados Pessoais/a> a classdropdown-item link_header_fixed hrefhttps://imperialsalgadosc.com.br/account#v-ultimos-pedidos>Últimos Pedidos/a> a classdropdown-item btn-cancelar-modo-presencial href# ng-ifinfo_pedido.tp_pedido presencial>Sair do pedido presencial/a> a classdropdown-item btn-logout-cliente href#>Sair da Conta/a> /div> /div> div classfloat-right ng-ifcliente.id 0> button classbtn btn-light typebutton data-togglemodal data-target#modal-signup>Faça o Login ou Cadastre-se!/button> /div> div classfloat-right ng-ifcliente.id -999 && cliente.ds_nome> button classbtn btn-light typebutton>Olá % cliente.ds_nome %,/button> button typebutton classbtn btn-light btn-cancelar-modo-presencial ng-if!is_mobile> Sair i classfa-solid fa-close ml-1 data-toggletooltip data-placementtop titleCancelar Consumo Local>/i> /button> /div> /div> /div> /div> /div> /nav> /div> div idcontainer_fix_min_nav classd-block d-lg-none> div classnavbar header_fix_min_nav> div classtop_header_fix> a href# styleheight: 56px;width: 60px;display: block;> i>b>/b>/i> /a> /div> div classloginButton> button classbtn btn-dark fw-700 btn-login-cadastro href# data-togglemodal data-target#modal-signup ng-ifcliente.id 0 disabled>Entrar/button> a hrefhttps://imperialsalgadosc.com.br/account#v-dados-pessoais classbtn btn-dark fw-700 ng-ifcliente.id > 0>Olá % (cliente.ds_nome).split( , 1)0 %,/a> a href# classbtn btn-dark fw-700 a-prevent-default ng-ifcliente.id -999 && cliente.ds_nome>Olá % (cliente.ds_nome).split( , 1)0 %,/a> /div> div classcontainer_min_nav> div classmin_menu_nav_pseudo_background>/div> ul classmenu> li classpy-2 btn-burger-login ng-ifcliente.id 0>a href# classpy-2 data-togglemodal data-target#modal-signup>Entre ou Cadastre-se!/a>/li> li> a classpy-2 hrefhttps://imperialsalgadosc.com.br classlink_mobile>Início/a> /li> li> a classpy-2 hrefhttps://imperialsalgadosc.com.br classlink_mobile>Cardápio/a> ul classsubmenu-1 ng-ifitens_site.length > 0> li ng-repeatgrupo in itens_site> a href# classpy-2 itens-grupo-link data-grupo% grupo.id_grupo % data-ds_grupo% grupo.ds_grupo %> div classrow m-0 no-gutters> div classcol-auto px-2> i classfas fa-arrow-right mt-1>/i>/i> /div> div classcol> span>% grupo.ds_grupo_titulo_web %/span> /div> /div> /a> /li> /ul> /li> li ng-ifcliente.id > 0>a hrefhttps://imperialsalgadosc.com.br/account#v-dados-pessoais classpy-2 link_mobile>Meu Cadastro/a>/li> li ng-ifcliente.id > 0>a hrefhttps://imperialsalgadosc.com.br/account#v-ultimos-pedidos classpy-2 link_mobile>Últimos Pedidos/a>/li> li ng-ifcliente.id > 0 && info_pedido.tp_pedido presencial>a href# classpy-2 btn-cancelar-modo-presencial>Sair do pedido presencial/a>/li> li ng-ifcliente.id > 0>a href# classpy-2 btn-logout-cliente>Sair/a>/li> li ng-ifcliente.id -999>a href# classpy-2 btn-cancelar-modo-presencial>Sair/a>/li> li classnav-dt-brand py-3 mt-4>h6 classm-0 text-center font-10>Desenvolvido por:br>a hrefhttps://hubzy.com.br/ target_blank>img classmt-1 srchttps://files.deliveryturbo.com.br/assets/common/images/default/hubzy-dark.svg altLogo Hubzy>/a>/h6>/li> /ul> /div> /div> /div> div classpseudo-header-mobile d-block d-lg-none>/div> div classcontainer-fluid position-relative px-0> div classimg-bg stylebackground-image: url(https://files.deliveryturbo.com.br/stores/empresa_130/b1f3bf62b336b36f67d8a12ef57777c9.jpg);> div classrow m-0> div classcol-auto m-auto> div classlogo bg-dark-blur> img srchttps://files.deliveryturbo.com.br/stores/empresa_130/1d586f6d044b327e02db3ac105c7b09b.png> /div> /div> div classcol d-none d-lg-block> div classdropdown float-right mr-4 mt-4 ng-ifcliente.id > 0> button classbtn btn-light bg-dark-blur border-0 color-white dropdown-toggle font-15 typebutton iddropdownMenuButton data-toggledropdown aria-haspopuptrue aria-expandedfalse>Olá % cliente.ds_nome %,/button> div classdropdown-menu aria-labelledbydropdownMenuButton> a classdropdown-item hrefhttps://imperialsalgadosc.com.br/account#v-dados-pessoais>Dados Pessoais/a> a classdropdown-item hrefhttps://imperialsalgadosc.com.br/account#v-ultimos-pedidos>Últimos Pedidos/a> !-- a classdropdown-item href./account#v-fidelidade>Programa de Fidelidade/a> --> a classdropdown-item btn-cancelar-modo-presencial href# ng-ifinfo_pedido.tp_pedido presencial>Sair do pedido presencial/a> a classdropdown-item btn-logout-cliente href#>Sair da Conta/a> /div> /div> div classfloat-right mr-4 mt-4 ng-ifcliente.id 0> button classbtn btn-light bg-dark-blur border-0 color-white btn-login-cadastro styleborder-radius: 10px; typebutton data-togglemodal data-target#modal-signup disabled>Faça o Login ou Cadastre-se!/button> /div> div classdropdown float-right mr-4 mt-4 ng-ifcliente.id -999 && cliente.ds_nome> button classbtn btn-light bg-dark-blur border-0 color-white font-15 typebutton>Olá % cliente.ds_nome %,/button> button typebutto classbtn btn-light border-0 font-15 btn-cancelar-modo-presencial ng-if!is_mobile> Sair i classfa-solid fa-close ml-1 data-toggletooltip data-placementtop titleCancelar Consumo Local>/i> /button> /div> /div> div classw-100>/div> div classcol-auto mx-auto d-lg-none> div classbg-dark-blur px-3 py-1 color-white styleborder-radius: 10px;> p classmy-0 fw-700>i classfa-solid fa-circle fa-2xs pr-2 color-light-green>/i>Aberto até às 20:00/p> /div> /div> /div> /div> div classbox-infos bg-dark-blur> div classrow m-0 no-gutters align-items-center justify-content-center d-none d-lg-flex> div classcol-auto text-center px-2 px-md-3 px-lg-4 mx-2 py-2 ng-ifinfo_pedido.tp_pedido normal> h3 classmy-0 header-info>Tempo de Entrega:/h3> p classmy-0 fw-700 info-temp-entrega>A partir de 45 min/p> /div> div classcol-auto v-divider p-0 ng-ifinfo_pedido.tp_pedido normal>/div> div classcol-auto text-center px-2 px-md-3 px-lg-4 mx-2 py-2 ng-ifinfo_pedido.tp_pedido normal> h3 classmy-0 header-info>Taxa de Entrega:/h3> p classmy-0 fw-700 info-taxa-entrega>A partir de R$ 0,00/p> /div> div classcol-auto v-divider p-0 d-none d-sm-block ng-ifinfo_pedido.tp_pedido normal>/div> div classcol-auto text-center px-2 px-md-2 px-lg-4 mx-2 py-2 d-none d-sm-block> p classmy-0 fw-700>i classfa-solid fa-circle fa-2xs pr-2 color-light-green>/i>Aberto até às 20:00/p> /div> /div> /div> /div> div classbottom_header_home>/div> /header>div classhome container p-0> div classrow m-0 no-gutters> div classcol-12 col-lg-3 order-lg-2 p-0 d-none ng-class!(empresa_aberta) ? d-lg-block : > div classcontainer-fluid carrinho p-0 p-lg-2 mt-lg-2 d-none> !-- Aparecer quando o restaurante estiver fechado --> div classrow m-0 no-gutters box-white> div classcol-12 closed-store bg-white d-none d-lg-block br-5 rounded p-4> strong>Estamos fechados.../strong> div classw-100>/div> i classfar fa-clock mt-2>/i> div classw-100>/div> /div> /div> /div>/div>div classcol-12 col-lg-3 order-lg-2 p-0 bg-light-carrinho ng-class!(empresa_aberta) ? d-none : > div classcontainer-fluid p-0 p-lg-2 mt-lg-2> !-- cashback --> a href classopen-modal-info-cashback ng-ifcashback.in_ativo S && info_pedido.tp_pedido normal> div classrow m-0 no-gutters align-items-center mb-lg-2 box-campaign p-2> div classcol-auto px-1> i classfa-solid fa-piggy-bank fa-xl>/i> /div> div classcol px-2> h5 classfont-14 fw-700 mb-0>Programa de Cashback:/h5> p classmb-0 font-13 text-muted ng-ifcliente.vl_saldo_carteira_cashback 0 || !cliente.vl_saldo_carteira_cashback>Receba strong classfont-15>% cashback.vl_percentual %%/strong> de volta em suas compras!/p> p classmb-0 font-12 text-muted ng-ifcliente.vl_saldo_carteira_cashback > 0>Você possui strong classfont-14>R$ % (cliente.vl_saldo_carteira_cashback).toFixed(2).replace(.,,) %/strong> de cashback!/p> /div> div classcol-auto px-1> i classfa-solid fa-circle-question color-red>/i> /div> /div> /a> div classrow m-0 no-gutters box-white carrinho d-none> div classcol-12> div classrow m-0 no-gutters align-items-center p-10px> div classcol-12> button classbtn btn-block btn-success text-left font-14 px-3 py-2 btn-modal-tipo ng-classendereco.length > 0 ? possui-endereco : nao-possui-endereco ng-ifinfo_pedido.tp_pedido normal> div classrow m-0 no-gutters align-items-center> div classcol-auto> i classfa-solid fa-motorcycle stylewidth: 25px;>/i> /div> div classcol> span classfw-700>% (cart.tp_entrega E) ? Entrega : (cart.tp_entrega B) ? Retirada : Indisponível %/span> span classfont-12 fw-700 opacity-75 ng-if!cart.agendamento.dt_agendamento && vl_temp_entrega_pedido > 0 && ((cart.tp_entrega B && !in_agendamento_retirada) || (cart.tp_entrega E && !in_agendamento_delivery))>span classopacity-75 stylepadding: 0 .375rem;>|/span>% vl_temp_entrega_pedido+-+ ((cart.tp_entrega E) ? vl_temp_entrega_pedido + 15 : vl_temp_entrega_pedido + 10) % min/span> span classfont-12 ng-if!cart.agendamento.dt_agendamento && vl_temp_entrega_pedido 0 && ((cart.tp_entrega B && !in_agendamento_retirada) || (cart.tp_entrega E && !in_agendamento_delivery))>span classopacity-75 stylepadding: 0 .375rem;>|/span>A partir de 45 min/span> /div> div classcol-auto pl-2 pr-1> i classfa-solid fa-angle-right ml-2>/i> /div> /div> /button> button classbtn btn-block btn-success text-left font-14 px-3 py-2 ng-ifinfo_pedido.tp_pedido presencial> div classrow m-0 no-gutters align-items-center> div classcol-auto> i classfa-solid fa-motorcycle stylewidth: 25px;>/i> /div> div classcol> span classfw-700>Consumo Local/span> span classfw-700 ng-ifinfo_pedido.dados.id_mesa>| Mesa % info_pedido.dados.id_mesa %/span> span classfw-700 ng-ifinfo_pedido.dados.id_comanda>| Comanda % info_pedido.dados.id_comanda %/span> /div> div classcol-auto> a href# classbtn-cancelar-modo-presencial p-1 ng-ifis_mobile> i classfa-solid fa-close font-18>/i> /a> /div> /div> /button> /div> div classcol-12 pt-2 ng-if(cart.tp_entrega E && in_agendamento_delivery) || (cart.tp_entrega B && in_agendamento_retirada) && (info_pedido.tp_pedido normal)> button classbtn btn-block btn-secondary text-left font-14 px-3 py-2 btn-modal-agendamento> div classrow m-0 no-gutters align-items-center> div classcol-auto> i classfa-solid fa-clock stylewidth: 25px;>/i> /div> div classcol ng-ifcart.agendamento.dt_agendamento> span ng-ifcart.agendamento.ds_dia_semana Hoje && cart.agendamento.dt_agendamento classfw-700>Hoje/span> span ng-ifcart.agendamento.ds_dia_semana ! Hoje && cart.agendamento.dt_agendamento classfw-700>% cart.agendamento.dt_agendamento.substring(8,10) % de % cart.agendamento.ds_mes %/span> span ng-ifcart.agendamento.dt_agendamento>, % cart.agendamento.hr_inicial.substring(0,5) %-% cart.agendamento.hr_final.substring(0,5) %/span> /div> div classcol ng-if!cart.agendamento.dt_agendamento && ((cart.tp_entrega B && in_agendamento_retirada) || (cart.tp_entrega E && in_agendamento_delivery))> div ng-ifcart.tp_entrega E && cart.in_entrega_imediata> span classfw-700>Hoje/span>, span classopacity-75 ng-ifvl_temp_entrega_pedido > 0>% vl_temp_entrega_pedido+ - +(vl_temp_entrega_pedido + 15) % min/span> span classopacity-75 ng-ifvl_temp_entrega_pedido 0>A partir de 45 min/span> /div> div ng-ifcart.tp_entrega B && cart.in_entrega_imediata> span classfw-700>Hoje/span>, span classopacity-75 ng-ifvl_temp_entrega_pedido > 0>% vl_temp_entrega_pedido+ - +(vl_temp_entrega_pedido + 10) % min/span> span classopacity-75 ng-ifvl_temp_entrega_pedido 0>A partir de 45 min/span> /div> div ng-if(in_agendamento_retirada) && (cart.tp_entrega B) && (!cart.in_entrega_imediata)> span classfw-700>Escolha o horário/span> /div> div ng-if(in_agendamento_delivery) && (cart.tp_entrega E) && (!cart.in_entrega_imediata)> span classfw-700>Escolha o horário/span> /div> /div> div classcol-auto pl-2 pr-1> i classfa-solid fa-angle-right ml-2>/i> /div> /div> /button> /div> div classcol-12 pt-2 ng-if((cart.tp_entrega E || !cart.tp_entrega) && (in_delivery S || (horarios_agendamento.disponibilidade_entrega && horarios_agendamento.disponibilidade_entrega.length > 0))) && (info_pedido.tp_pedido normal)> div ng-ifendereco.length > 0> button classbtn btn-block btn-danger text-left font-14 px-3 py-2 btn-endereco possui-endereco> div classaddressTruncate> div classicon> i classfa-solid fa-location-arrow stylewidth: 25px;>/i> /div> p classmb-0 address>% ((endereco0.tp_logradouro ! null) && (endereco0.tp_logradouro ! ) ? endereco0.tp_logradouro+ : ) %% endereco0.ds_logradouro %/p> p classmb-0 number>, % endereco0.nr_logradouro %/p> /div> /button> /div> div ng-ifendereco.length 0> button classbtn btn-block btn-danger text-left font-14 px-3 py-2 btn-endereco possui-endereco> div classrow m-0 no-gutters align-items-center> div classcol-auto> i classfa-solid fa-location-arrow stylewidth: 25px;>/i> /div> div classcol> span classfw-700>Escolha o endereço/span> /div> div classcol-auto pl-2 pr-1> i classfa-solid fa-angle-right ml-2>/i> /div> /div> /button> /div> /div> /div> /div> div classcol-12 d-none d-lg-block> !-- Aparecer somente quando o carrinho está vazio --> div classempty-cart ng-ifcart.itens.length 0> hr classm-0 divider-c> div classp-4> i classfas fa-shopping-bag mb-3>/i> p classmy-0 fw-500>Sua sacola está vazia/p> /div> /div> !-- Aparece somente quando tiver algum item no carrinho --> div classd-none d-lg-block ng-ifcart.itens.length > 0> hr classm-0 divider-c> h2 classpy-3 mb-0>MEU PEDIDO/h2> /div> div classitens-carrinho ng-ifcart.itens.length > 0> table classtable-striped table-hover> tbody> tr classcursor-pointer ng-repeatitem in cart.itens> td classcol-auto align-top p-10px> p classmy-0 font-15 qnt>% item.qtd_produto %/p> /td> td classcol p-0 align-top py-10px> p classmy-0 font-15 item-name>% item.ds_titulo_item % span ng-ifitem.in_produto_cupom ! S> span ng-ifitem.vl_total_desconto > 0 classbadge badge-danger bg-red fw-700 stylepadding: 4px 6px;bottom: 2px;position: relative; margin-left:.15rem;opacity:.75;> - % ((item.vl_total_desconto * 100) / (item.vl_produto + item.vl_total_desconto)) 99 ? ((item.vl_total_desconto * 100) / (item.vl_produto + item.vl_total_desconto)).toFixed(0) : 99; %%/span> span ng-iftamanho.vl_desconto_venda > 0 ng-repeattamanho in item.tamanho classbadge badge-danger bg-red fw-700 stylepadding: 4px 6px;bottom: 2px;position: relative; margin-left:.15rem;opacity:.75;> - % ((tamanho.vl_desconto_venda * 100) / (item.vl_produto + tamanho.vl_acrescimo_venda)) 99 ? ((tamanho.vl_desconto_venda * 100) / (item.vl_produto + tamanho.vl_acrescimo_venda)).toFixed(0) : 99; %%/span> /span> span ng-ifitem.in_produto_cupom S> span classbadge badge-success fw-700 stylepadding: 4px 6px;bottom: 2px;position: relative; margin-left:.15rem;opacity:.75;>Cupom/span> /span> /p> p classmt-1 mb-0 font-13 size ng-repeattamanho in item.tamanho>% tamanho.ds_tamanho %/p> p classmt-1 mb-0 font-13 remove ng-repeatremocao in item.remocao>% remocao.ds_titulo_item %/p> p classmt-1 mb-0 font-13 adicional ng-repeatadicional in item.todos_adicionais ng-ifadicional.ds_sigla C> span ng-ifadicional.tp_grupo multiselecao>% adicional.qtd > 0 ? adicional.qtd : %/span> % adicional.ds_titulo_item % /p> p classmt-1 mb-0 font-13 vinculado ng-repeatadicional in item.todos_adicionais ng-ifadicional.ds_sigla V> span classvinculado-qnt>% adicional.qtd * item.qtd_produto %/span> % adicional.ds_titulo_item %% (adicional.ds_tamanho && adicional.ds_tamanho ! Padrão) ? (+adicional.ds_tamanho+) : % /p> p classmt-1 mb-0 font-13 obs ng-ifitem.ds_obs ! >(% item.ds_obs %)/p> /td> td classcol-auto align-top p-10px text-right> p classmy-0 font-15 item-price price-value price-hide ng-if((item.vl_produto * item.qtd_produto) + item.vl_total_acrescimo) > 0>% ((item.vl_produto * item.qtd_produto) + item.vl_total_acrescimo).toFixed(2).replace(.,,) %/p> p classmy-0 font-15 taxa-free ng-if((item.vl_produto * item.qtd_produto) + item.vl_total_acrescimo) 0>Grátis/p> span classaction-cart icon-hide ng-ifitem.in_produto_cupom ! S> a href# classrm-prod-cart data-toggletooltip data-p-key% item.key % data-placementbottom titleExcluir produto>i classfar fa-trash-alt>/i>/a> /span> /td> /tr> /tbody> /table> /div> !-- Aparece somente quando tiver algum item no carrinho --> hr classm-0 divider-c> div classrow m-0 pr-10px pt-10px pb-10px ng-ifcart.itens.length > 0> div classcol px-0 text-right> span> p classmy-0 subtotal>Subtotal: /p> p classmy-0 taxa-free ng-ifcart.vl_entrega 0 && endereco.length > 0 && cart.tp_entrega E>Taxa de Entrega:/p> p classmy-0 taxa-price ng-ifcart.vl_entrega > 0 && endereco.length > 0 && cart.tp_entrega E>Taxa de Entrega:/p> p classmy-0 discount ng-ifcart.vl_desconto > 0>Desconto:/p> /span> span> p classmy-0 font-20 price-total>Total:/p> /span> /div> div classcol-auto p-0 pl-3 text-right> span ng-ifcart.itens.length > 0> p classmy-0 subtotal price-value>% cart.vl_subtotal > 0 ? cart.vl_subtotal.toFixed(2).replace(.,,) : 0,00 %/p> p classmy-0 taxa-free ng-ifcart.vl_entrega 0 && endereco.length > 0 && cart.tp_entrega E>Grátis!/p> p classmy-0 taxa-price price-value ng-ifcart.vl_entrega > 0 && endereco.length > 0 && cart.tp_entrega E>% (cart.vl_entrega).toFixed(2).replace(.,,)%/p> p classmy-0 discount price-value ng-ifcart.vl_desconto > 0>% (cart.vl_desconto).toFixed(2).replace(.,,)%/p> /span> span> p classmy-0 font-20 price-total price-value ng-ifcart.itens.length > 0>% (((cart.vl_subtotal + cart.vl_acrescimo) - (cart.vl_desconto)) + (cart.vl_entrega)) > 0 ? (((cart.vl_subtotal + cart.vl_acrescimo) - (cart.vl_desconto)) + (cart.vl_entrega)).toFixed(2).replace(.,,) : 0,00 %/p> p classmy-0 font-20 price-total price-value ng-ifcart.itens.length 0>0,00/p> /span> /div> /div> !-- botão de finalizar pedido ou informação de pedido mínimo --> hr classm-0 divider-c> div classp-10px ng-ifcart.itens.length > 0> button classbtn btn-block btn-finalizar-pedido ng-class(cart.vl_subtotal > vl_pedido_min) && (cart.itens.length > 0) ? btn-success : btn-danger title% (cart.vl_subtotal > vl_pedido_min) && (cart.itens.length > 0) ? : Pedido mínimo para o estabelecimento é R$ +vl_pedido_min % ng-disabled(cart.vl_subtotal > vl_pedido_min) && (cart.itens.length > 0) ? false : true> span ng-if(cart.vl_subtotal vl_pedido_min) && (vl_pedido_min > 0)> Pedido mínimo: span classfont-13>R$ /span>% (vl_pedido_min.length > 2) ? (vl_pedido_min).toString().replace(.,,) : (vl_pedido_min).toFixed(2).replace(.,,) % /span> span ng-if(cart.vl_subtotal > vl_pedido_min) && (cart.itens.length > 0)> Finalizar Pedido /span> /button> /div> /div> /div> div classcontainer-fluid d-lg-none ng-ifcart.itens.length > 0> div classfixed-bottom d-lg-none> div classbtn-cart> button typebutton classbtn btn-block pr-0 font-18 btn-finalizar-pedido ng-class(cart.vl_subtotal > vl_pedido_min) && (cart.itens.length > 0) ? btn-success : btn-danger ng-disabled(cart.vl_subtotal > vl_pedido_min) && (cart.itens.length > 0) ? false : true> div classrow m-0 no-gutters align-items-center justify-content-between ng-if(cart.vl_subtotal vl_pedido_min) && (vl_pedido_min > 0)> div classcol-auto pl-2>Pedido mínimo: span classfont-13>R$ /span>% (vl_pedido_min.length > 2) ? (vl_pedido_min).toString().replace(.,,) : (vl_pedido_min).toFixed(2).replace(.,,) %/div> div classcol-auto price-badge> span classd-block price-value font-15 fw-700>span classfont-13>R$ /span>% (((cart.vl_subtotal + cart.vl_acrescimo) - (cart.vl_desconto)) + (cart.vl_entrega)) > 0 ? ((((cart.vl_subtotal + cart.vl_acrescimo) - (cart.vl_desconto)) + (cart.vl_entrega))).toFixed(2).replace(.,,) : %/span> /div> /div> div classrow m-0 no-gutters align-items-center justify-content-between ng-if(cart.vl_subtotal > vl_pedido_min) && (cart.itens.length > 0)> div classcol-auto pl-2>Finalizar Pedido/div> div classcol-auto price-badge> span classd-block price-value font-15 fw-700>span classfont-13>R$ /span>% (((cart.vl_subtotal + cart.vl_acrescimo) - (cart.vl_desconto)) + (cart.vl_entrega)) > 0 ? ((((cart.vl_subtotal + cart.vl_acrescimo) - (cart.vl_desconto)) + (cart.vl_entrega))).toFixed(2).replace(.,,) : 0,00 %/span> /div> /div> /button> /div> /div> /div> /div>/div> div classcol-12 col-lg-9 p-0> div idpseudo-scrollfixed classcontainer-fluid px-0 mb-2 ng-ifitens_site.length > 0> div idscrollfixed classrow m-0 no-gutters align-items-center justify-content-center bg-white mx-0 mx-lg-2 mt-lg-3 search-off> div classcol-2 col-md-1 text-center icon-search> a href# classlink-active-search-items> i classfa-solid fa-magnifying-glass font-18 px-3 py-2>/i> /a> /div> div classcol search-input> input typetext classform-control-plaintext form-search font-18 fw-700 pl-4 input-search-items placeholderBuscar...> /div> div classcol-auto icon-clear> a href# classlink-cancel-search-items> i classfa-solid fa-circle-xmark font-24 py-2 px-3>/i> /a> /div> div classcol-10 col-md-11 p-0 col-nav> ul classnav nav-slide nav-pills nav-fill list-grupo-home> li classnav-item ng-ifgrupo.produtos.length > 0 || grupo.categorias.length > 0 ng-repeatgrupo in itens_site> a classnav-link link-grupo-home ripple href# data-grupo% grupo.id_grupo % data-ds_grupo% grupo.ds_grupo %>% grupo.ds_grupo_titulo_web %/a> /li> /ul> /div> /div> /div> !-- Banners container -->div classcontainer-fluid px-0 pt-0 pt-lg-2> div classbanners-container> div classswiper-container> !-- Additional required wrapper --> div classswiper-wrapper> a href# data-produto13168 data-grupo classswiper-slide banner-home w-100 stylebackground: url(https://files.deliveryturbo.com.br/stores/banners_130/de334fdcbdc72cc87d00149c84277afd.jpg);>/a> a href# data-produto23336 data-grupo classswiper-slide banner-home w-100 stylebackground: url(https://files.deliveryturbo.com.br/stores/banners_130/b0b9fdbc7252da60076f14b50b202290.jpg);>/a> a href# data-produto14839 data-grupo classswiper-slide banner-home w-100 stylebackground: url(https://files.deliveryturbo.com.br/stores/banners_130/2fe02136b8c29ba08e48d9b9696dc3a2.jpg);>/a> a href# data-produto16781 data-grupo classswiper-slide banner-home w-100 stylebackground: url(https://files.deliveryturbo.com.br/stores/banners_130/7240305a07cb6d0fb59ba975e9b7bbec.jpg);>/a> /div> !-- If we need navigation buttons --> div classswiper-button-prev text-white>/div> div classswiper-button-next text-white>/div> /div> !-- If we need pagination --> div classswiper-pagination>/div> /div>/div> div classrow search-not-found d-none p-2 mt-3 text-center> div classcol-12> p classmy-0>Nenhum produto com o termo strong classtext-search-not-found font-18>/strong> encontrado.../p> /div> /div> div classloading-produtos-home ng-if!list_loaded> div classcontainer-fluid g-p> div classgroup-title pl-10px pr-10px pb-2 ph-loading ph-loading-title> h1 classmt-0 mb-0 pt-3>/h1> p classmy-0 pb-0>/p> /div> /div> div classcontainer-fluid> div classrow> div classcol-12 col-md-6 p-0 p-md-2 mb-1 mb-md-0 col-product> div classbox-white product ph-loading ph-loading-box h-100 styleheight: 80px;> /div> /div> div classcol-12 col-md-6 p-0 p-md-2 mb-1 mb-md-0 col-product> div classbox-white product ph-loading ph-loading-box h-100 styleheight: 80px;> /div> /div> div classcol-12 col-md-6 p-0 p-md-2 mb-1 mb-md-0 col-product> div classbox-white product ph-loading ph-loading-box h-100 styleheight: 80px;> /div> /div> div classcol-12 col-md-6 p-0 p-md-2 mb-1 mb-md-0 col-product> div classbox-white product ph-loading ph-loading-box h-100 styleheight: 80px;> /div> /div> div classcol-12 col-md-6 p-0 p-md-2 mb-1 mb-md-0 col-product> div classbox-white product ph-loading ph-loading-box h-100 styleheight: 80px;> /div> /div> div classcol-12 col-md-6 p-0 p-md-2 mb-1 mb-md-0 col-product> div classbox-white product ph-loading ph-loading-box h-100 styleheight: 80px;> /div> /div> /div> /div> /div> div classcontainer-produtos ng-ifitens_site.length > 0> div classcontent-gp ng-repeatitem in itens_site> div ng-ifitem.produtos && item.produtos.length > 0> div classcontainer-fluid g-p> a classanchor-group namegrupo-% item.id_grupo % data-anchorgrupo-% item.id_grupo %-% item.ds_grupo % data-id% item.id_grupo %>/a> div classgroup-title pl-10px pr-10px pb-2> h1 classmt-0 mb-0 pt-3>% item.ds_grupo_titulo_web %/h1> p classmy-0 pb-0 ng-ifitem.ds_grupo_texto_web>% item.ds_grupo_texto_web %/p> /div> /div> div classcontainer-fluid> div classrow> div classcol-12 col-md-6 p-0 p-md-2 mb-1 mb-md-0 col-product ng-repeatprod in item.produtos> div classbox-white product ripple h-100 ng-classprod.in_ativo N ? disabled-product : stylemin-height: 80px;> a href# ng-ifprod.in_ativo S classex-md-p ng-classprod.in_desconto_ativo S && prod.vl_desconto > 0 ? with-discount : data-id_p% prod.id_produto % data-in_obs% prod.in_obs % data-has_compS> div classrow p-0 m-0 h-100> div classcol p-0> h2 classpl-10px pr-10px pt-10px title-produto>% prod.ds_titulo_item %/h2> p classpl-10px pr-10px text-produto after-discount ng-ifprod.ds_item_completa>% prod.ds_item_completa %/p> h4 classpl-10px pb-10px mb-0 before-discount d-none before-desconto-padrao-item>DE:small classpl-1>R$ % (prod.vl_venda).toFixed(2).replace(.,,) %/small>/h4> h4 classpl-10px pb-10px mb-0 before-discount ng-ifprod.vl_tamanhos.count_tamanhos 1 && prod.in_desconto_ativo S && prod.vl_desconto > 0 && prod.vl_complementos.count_complementos 0> DE:small classpl-1>R$ % (prod.vl_venda + prod.vl_tamanhos.vl_venda_tamanhos).toFixed(2).replace(.,,) %/small> /h4> h4 classpl-10px pr-10px pb-10px mb-0 after-discount> span classtipo_valor_venda> % ((prod.vl_tamanhos.vl_venda_tamanhos + prod.vl_complementos.vl_venda_complementos) > 0) ? A PARTIR DE: : (prod.in_desconto_ativo N || prod.vl_desconto 0) ? POR: : % /span> small classpl-1 vl-venda-exibicao ng-ifprod.vl_tamanhos.count_tamanhos 1 && prod.in_desconto_ativo S && prod.vl_desconto > 0> R$ % ((prod.vl_venda + prod.vl_tamanhos.vl_venda_tamanhos) - prod.vl_desconto).toFixed(2).replace(.,,) % /small> small classpl-1 vl-venda-exibicao ng-ifprod.vl_tamanhos.count_tamanhos 1 && (prod.in_desconto_ativo ! S || prod.vl_desconto 0)> R$ % (prod.vl_venda + prod.vl_tamanhos.vl_venda_tamanhos).toFixed(2).replace(.,,) % /small> small classpl-1 vl-venda-exibicao ng-ifprod.vl_tamanhos.count_tamanhos ! 1 || !((prod.in_desconto_ativo ! S || prod.vl_desconto 0) || (prod.in_desconto_ativo S && prod.vl_desconto > 0))> R$ % (prod.vl_venda).toFixed(2).replace(.,,) % /small> small classpl-1 vl-percentual-desc-produto d-none ng-if(prod.vl_tamanhos.vl_venda_tamanhos + prod.vl_complementos.vl_venda_complementos) 0 && prod.in_desconto_ativo S && prod.vl_desconto > 0> R$ % (prod.vl_desconto).toFixed(2).replace(.,,) % /small> /h4> /div> div classcol-auto p-0> div classribbon-horizontal p-percent-desc ng-ifprod.in_desconto_ativo S && prod.vl_percentual_desconto > 0> div classribbon ribbon-red> span> % prod.vl_tamanhos.count_tamanhos > 1 ? até : % span classvl-percent-desc>-% prod.vl_percentual_desconto %%/span> /span> /div> /div> img classimg-produto ng-ifprod.im_item srchttps://files.deliveryturbo.com.br/% prod.im_item %> /div> /div> /a> div classrow p-0 m-0 h-100 product-inativo ng-ifprod.in_ativo ! S> div classcol p-0> h4 classpl-10px pr-10px pb-10px mb-0>ESGOTADO/h4> h2 classpl-10px pr-10px pt-10px>% prod.ds_titulo_item %/h2> p classpl-10px pr-10px ng-ifprod.ds_item_completa>% prod.ds_item_completa %/p> /div> div classcol-auto p-0> img ng-ifprod.im_item srchttps://files.deliveryturbo.com.br/% prod.im_item %> /div> /div> /div> /div> /div> /div> /div> div ng-ifitem.categorias && item.categorias.length > 0> div classcontainer-fluid g-p> a classanchor-group namegrupo-% item.id_grupo % data-anchorgrupo-% item.id_grupo %-% item.ds_grupo % data-id% item.id_grupo %>/a> div classgroup-title pl-10px pr-10px pb-2> h1 classmt-0 mb-0 pt-3>% item.ds_grupo_titulo_web %/h1> p classmy-0 pb-0 ng-ifitem.ds_grupo_texto_web>% item.ds_grupo_texto_web %/p> /div> /div> div classcontainer-fluid> div classrow> div classcol-12 col-md-6 p-0 p-md-2 mb-1 mb-md-0 col-product ng-repeatcategoria in item.categorias> div classbox-white product h-100 ng-classcategoria.in_ativo N || !categoria.has_produto_ativo ? disabled-product : stylemin-height: 80px;> a href# classex-md-agrupador data-id% categoria.id_grupo % ng-ifcategoria.in_ativo S && categoria.has_produto_ativo> div classrow p-0 m-0 h-100> div classcol p-0> h4 classpl-10px pr-10px pb-10px mb-0 ng-ifcategoria.min_vl_venda > 0> A PARTIR DE: small classpl-1 vl-venda-produto>R$ % categoria.min_vl_venda.toFixed(2).replace(.,,) %/small> /h4> h2 classpl-10px pr-10px pt-10px title-produto>% categoria.ds_grupo_titulo_web %/h2> p classpl-10px pr-10px text-produto ng-ifcategoria.ds_grupo_texto_web>% categoria.ds_grupo_texto_web %/p> /div> div classcol-auto p-0 ng-ifcategoria.im_grupo> img classimg-grupo srchttps://files.deliveryturbo.com.br/% categoria.im_grupo %> /div> /div> /a> div classrow p-0 m-0 h-100 ng-ifcategoria.in_ativo ! S || !categoria.has_produto_ativo> div classcol p-0> h4 classpl-10px pr-10px pb-10px mb-0>ESGOTADO/h4> h2 classpl-10px pr-10px pt-10px>% categoria.ds_grupo_titulo_web %/h2> p classpl-10px pr-10px ng-ifcategoria.ds_grupo_texto_web>% categoria.ds_grupo_texto_web %/p> /div> div classcol-auto p-0 ng-ifcategoria.im_grupo> img srchttps://files.deliveryturbo.com.br/% categoria.im_grupo %> /div> /div> /div> /div> /div> /div> /div> /div> /div> /div> div idmodal-combo classmodal fade tabindex-1 roledialog aria-labelledbymyLargeModalLabel aria-hiddentrue> div classmodal-dialog modal-dialog-centered modal-lg> div classmodal-content> div classpseudo-header-mobile d-lg-none>/div> div classrow m-0> div classcol-12 col-md-5 p-0 modal-grey> img src> h2 classmodal-price text-right d-none d-md-block>small>Preço:/small> R$ 27,00/h2> div classmodal-body h-auto> h2>Combo Família/h2> p classmb-2>Você compra 3 hambúrgueres e 1 acompanhamento com desconto e ainda ganha 1 refrigerante grande na faixa!/p> /div> /div> div classcol-12 col-md-7 p-0> div classmodal-header> h1 classcol-12 col-md-11 modal-title text-center mt-0>MONTE O SEU COMBO/h1> button typebutton classclose d-none d-md-block data-dismissmodal aria-labelClose> span aria-hiddentrue>×/span> /button> /div> div classmodal-body p-0> div classaccordion idaccordion> div classcard> div classcard-header p-0 idheadingOne> button classbtn btn-modal-accordion data-togglecollapse data-target#collapseOne aria-expandedtrue aria-controlscollapseOne>i classicon mdi mdi-chevron-right>/i>1º Burger/button> /div> div classcollapse idcollapseOne aria-labelledbyheadingOne data-parent#accordion> div classcard-body p-0> div classcomp-title p-3 mb-1> h3 classmb-0>Burger simples ou duplo?/h3> p classmb-0>Transformando o hambúrguer em duplo, ele vai com duas carnes e queijo em dobro! Yuuupi!/p> div classobs-grupo> span>Obrigatório/span> /div> /div> div classcomp-content py-1> div classform-check pt-2 pb-3> input classform-check-input typeradio value1 iddefaultRadio1> label classmb-0> span>Simples/span> input typeradio nametamanho> span classradiomark>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typeradio value2 iddefaultRadio2> label classmb-0> span>Duplospan classcomp-price> + R$ 7,00/span>/span> input typeradio nametamanho> span classradiomark>/span> /label> /div> /div> div classcomp-title p-3 mb-1> h3 classmb-0>Qual o pão do seu burger?/h3> p classmb-0>Selecione o seu pão favorito. Já deixamos pré-selecionada a sugestão do Chef pra esse burger./p> div classobs-grupo> span>Obrigatório/span> /div> /div> div classcomp-content py-1> div classform-check pt-2 pb-3> input classform-check-input typeradio value1 iddefaultRadio1> label classmb-0> span>Roseta Temperado/span> input typeradio namepaes> span classradiomark>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typeradio value2 iddefaultRadio2> label classmb-0> span>Roseta com Gergelim/span> input typeradio namepaes> span classradiomark>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typeradio value2 iddefaultRadio2> label classmb-0> span>Australianospan classcomp-price> + R$ 1,00/span>/span> input typeradio namepaes> span classradiomark>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typeradio value2 iddefaultRadio2> label classmb-0> span>Multrigrãos (Integral)span classcomp-price> + R$ 1,00/span>/span> input typeradio namepaes> span classradiomark>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typeradio value2 iddefaultRadio2> label classmb-0> span>Sem Glútenspan classcomp-price> + R$ 2,00/span>/span> input typeradio namepaes> span classradiomark>/span> /label> /div> /div> div classcomp-title p-3 mb-1> h3 classmb-0>Que tal turbinar seu burger?/h3> p classmb-0>Selecione os itens para acrescentar no seu burger./p> div classobs-grupo> span>Selecione até 3 itens/span> /div> /div> div classcomp-content py-1> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value1 iddefaultCheck1> label classmb-0> span>Bacon Crocantespan classcomp-price> + R$ 4,00/span>/span> input typecheckbox> span classcheckmark check-green>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value2 iddefaultCheck2> label classmb-0> span>Cheddar Cremosospan classcomp-price> + R$ 4,00/span>/span> input typecheckbox> span classcheckmark check-green>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value2 iddefaultCheck2> label classmb-0> span>Cebola Caramelizadaspan classcomp-price> + R$ 3,00/span>/span> input typecheckbox> span classcheckmark check-green>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value2 iddefaultCheck2> label classmb-0> span>Cream Cheese Philadelphiaspan classcomp-price> + R$ 4,00/span>/span> input typecheckbox> span classcheckmark check-green>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value2 iddefaultCheck2> label classmb-0> span>Cebola Crispyspan classcomp-price> + R$ 3,00/span>/span> input typecheckbox> span classcheckmark check-green>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value2 iddefaultCheck2> label classmb-0> span>Hambúrguer Extra (160g)span classcomp-price> + R$ 6,00/span>/span> input typecheckbox> span classcheckmark check-green>/span> /label> /div> /div> div classcomp-title p-3 mb-1> h3 classmb-0>Deseja remover algo?/h3> p classmb-0>Selecione os itens que você NÃO quer no seu burger./p> div classobs-grupo> span>Obrigatório/span> /div> /div> div classcomp-content py-1> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value1 iddefaultCheck1> label classmb-0> span>Alface Americana/span> input typecheckbox> span classcheckmark check-red>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value2 iddefaultCheck2> label classmb-0> span>Tomate/span> input typecheckbox> span classcheckmark check-red>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value2 iddefaultCheck2> label classmb-0> span>Cebola Roxa/span> input typecheckbox> span classcheckmark check-red>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value2 iddefaultCheck2> label classmb-0> span>Queijo Mussarela/span> input typecheckbox> span classcheckmark check-red>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value2 iddefaultCheck2> label classmb-0> span>Maionese da Casa/span> input typecheckbox> span classcheckmark check-red>/span> /label> /div> /div> div classcol ml-0> button typebutton classbtn btn-success btn-block>Confirmar Item/button> /div> /div> /div> /div> div classcard> div classcard-header p-0 idheadingTwo> button classbtn btn-modal-accordion data-togglecollapse data-target#collapseTwo aria-expandedfalse aria-controlscollapsetwo>i classicon mdi mdi-chevron-right>/i>2º Burger/button> /div> div classcollapse idcollapseTwo aria-labelledbyheadingTwo data-parent#accordion> div classcard-body p-0> div classcomp-title p-3 mb-1> h3 classmb-0>Burger simples ou duplo?/h3> p classmb-0>Transformando o hambúrguer em duplo, ele vai com duas carnes e queijo em dobro! Yuuupi!/p> div classobs-grupo> span>Obrigatório/span> /div> /div> div classcomp-content py-1> div classform-check pt-2 pb-3> input classform-check-input typeradio value1 iddefaultRadio1> label classmb-0> span>Simples/span> input typeradio nametamanho> span classradiomark>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typeradio value2 iddefaultRadio2> label classmb-0> span>Duplospan classcomp-price> + R$ 7,00/span>/span> input typeradio nametamanho> span classradiomark>/span> /label> /div> /div> div classcomp-title p-3 mb-1> h3 classmb-0>Qual o pão do seu burger?/h3> p classmb-0>Selecione o seu pão favorito. Já deixamos pré-selecionada a sugestão do Chef pra esse burger./p> div classobs-grupo> span>Obrigatório/span> /div> /div> div classcomp-content py-1> div classform-check pt-2 pb-3> input classform-check-input typeradio value1 iddefaultRadio1> label classmb-0> span>Roseta Temperado/span> input typeradio namepaes> span classradiomark>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typeradio value2 iddefaultRadio2> label classmb-0> span>Roseta com Gergelim/span> input typeradio namepaes> span classradiomark>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typeradio value2 iddefaultRadio2> label classmb-0> span>Australianospan classcomp-price> + R$ 1,00/span>/span> input typeradio namepaes> span classradiomark>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typeradio value2 iddefaultRadio2> label classmb-0> span>Multrigrãos (Integral)span classcomp-price> + R$ 1,00/span>/span> input typeradio namepaes> span classradiomark>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typeradio value2 iddefaultRadio2> label classmb-0> span>Sem Glútenspan classcomp-price> + R$ 2,00/span>/span> input typeradio namepaes> span classradiomark>/span> /label> /div> /div> div classcomp-title p-3 mb-1> h3 classmb-0>Que tal turbinar seu burger?/h3> p classmb-0>Selecione os itens para acrescentar no seu burger./p> div classobs-grupo> span>Selecione até 3 itens/span> /div> /div> div classcomp-content py-1> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value1 iddefaultCheck1> label classmb-0> span>Bacon Crocantespan classcomp-price> + R$ 4,00/span>/span> input typecheckbox> span classcheckmark check-green>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value2 iddefaultCheck2> label classmb-0> span>Cheddar Cremosospan classcomp-price> + R$ 4,00/span>/span> input typecheckbox> span classcheckmark check-green>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value2 iddefaultCheck2> label classmb-0> span>Cebola Caramelizadaspan classcomp-price> + R$ 3,00/span>/span> input typecheckbox> span classcheckmark check-green>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value2 iddefaultCheck2> label classmb-0> span>Cream Cheese Philadelphiaspan classcomp-price> + R$ 4,00/span>/span> input typecheckbox> span classcheckmark check-green>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value2 iddefaultCheck2> label classmb-0> span>Cebola Crispyspan classcomp-price> + R$ 3,00/span>/span> input typecheckbox> span classcheckmark check-green>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value2 iddefaultCheck2> label classmb-0> span>Hambúrguer Extra (160g)span classcomp-price> + R$ 6,00/span>/span> input typecheckbox> span classcheckmark check-green>/span> /label> /div> /div> div classcomp-title p-3 mb-1> h3 classmb-0>Deseja remover algo?/h3> p classmb-0>Selecione os itens que você NÃO quer no seu burger./p> div classobs-grupo> span>Obrigatório/span> /div> /div> div classcomp-content py-1> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value1 iddefaultCheck1> label classmb-0> span>Alface Americana/span> input typecheckbox> span classcheckmark check-red>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value2 iddefaultCheck2> label classmb-0> span>Tomate/span> input typecheckbox> span classcheckmark check-red>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value2 iddefaultCheck2> label classmb-0> span>Cebola Roxa/span> input typecheckbox> span classcheckmark check-red>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value2 iddefaultCheck2> label classmb-0> span>Queijo Mussarela/span> input typecheckbox> span classcheckmark check-red>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value2 iddefaultCheck2> label classmb-0> span>Maionese da Casa/span> input typecheckbox> span classcheckmark check-red>/span> /label> /div> /div> /div> /div> /div> div classcard> div classcard-header p-0 idheading3> button classbtn btn-modal-accordion data-togglecollapse data-target#collapse3 aria-expandedfalse aria-controlscollapse3>i classicon mdi mdi-chevron-right>/i>3º Burger/button> /div> div classcollapse idcollapse3 aria-labelledbyheading3 data-parent#accordion> div classcard-body p-0> div classcomp-title p-3 mb-1> h3 classmb-0>Burger simples ou duplo?/h3> p classmb-0>Transformando o hambúrguer em duplo, ele vai com duas carnes e queijo em dobro! Yuuupi!/p> div classobs-grupo> span>Obrigatório/span> /div> /div> div classcomp-content py-1> div classform-check pt-2 pb-3> input classform-check-input typeradio value1 iddefaultRadio1> label classmb-0> span>Simples/span> input typeradio nametamanho> span classradiomark>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typeradio value2 iddefaultRadio2> label classmb-0> span>Duplospan classcomp-price> + R$ 7,00/span>/span> input typeradio nametamanho> span classradiomark>/span> /label> /div> /div> div classcomp-title p-3 mb-1> h3 classmb-0>Qual o pão do seu burger?/h3> p classmb-0>Selecione o seu pão favorito. Já deixamos pré-selecionada a sugestão do Chef pra esse burger./p> div classobs-grupo> span>Obrigatório/span> /div> /div> div classcomp-content py-1> div classform-check pt-2 pb-3> input classform-check-input typeradio value1 iddefaultRadio1> label classmb-0> span>Roseta Temperado/span> input typeradio namepaes> span classradiomark>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typeradio value2 iddefaultRadio2> label classmb-0> span>Roseta com Gergelim/span> input typeradio namepaes> span classradiomark>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typeradio value2 iddefaultRadio2> label classmb-0> span>Australianospan classcomp-price> + R$ 1,00/span>/span> input typeradio namepaes> span classradiomark>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typeradio value2 iddefaultRadio2> label classmb-0> span>Multrigrãos (Integral)span classcomp-price> + R$ 1,00/span>/span> input typeradio namepaes> span classradiomark>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typeradio value2 iddefaultRadio2> label classmb-0> span>Sem Glútenspan classcomp-price> + R$ 2,00/span>/span> input typeradio namepaes> span classradiomark>/span> /label> /div> /div> div classcomp-title p-3 mb-1> h3 classmb-0>Que tal turbinar seu burger?/h3> p classmb-0>Selecione os itens para acrescentar no seu burger./p> div classobs-grupo> span>Selecione até 3 itens/span> /div> /div> div classcomp-content py-1> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value1 iddefaultCheck1> label classmb-0> span>Bacon Crocantespan classcomp-price> + R$ 4,00/span>/span> input typecheckbox> span classcheckmark check-green>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value2 iddefaultCheck2> label classmb-0> span>Cheddar Cremosospan classcomp-price> + R$ 4,00/span>/span> input typecheckbox> span classcheckmark check-green>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value2 iddefaultCheck2> label classmb-0> span>Cebola Caramelizadaspan classcomp-price> + R$ 3,00/span>/span> input typecheckbox> span classcheckmark check-green>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value2 iddefaultCheck2> label classmb-0> span>Cream Cheese Philadelphiaspan classcomp-price> + R$ 4,00/span>/span> input typecheckbox> span classcheckmark check-green>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value2 iddefaultCheck2> label classmb-0> span>Cebola Crispyspan classcomp-price> + R$ 3,00/span>/span> input typecheckbox> span classcheckmark check-green>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value2 iddefaultCheck2> label classmb-0> span>Hambúrguer Extra (160g)span classcomp-price> + R$ 6,00/span>/span> input typecheckbox> span classcheckmark check-green>/span> /label> /div> /div> div classcomp-title p-3 mb-1> h3 classmb-0>Deseja remover algo?/h3> p classmb-0>Selecione os itens que você NÃO quer no seu burger./p> div classobs-grupo> span>Obrigatório/span> /div> /div> div classcomp-content py-1> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value1 iddefaultCheck1> label classmb-0> span>Alface Americana/span> input typecheckbox> span classcheckmark check-red>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value2 iddefaultCheck2> label classmb-0> span>Tomate/span> input typecheckbox> span classcheckmark check-red>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value2 iddefaultCheck2> label classmb-0> span>Cebola Roxa/span> input typecheckbox> span classcheckmark check-red>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value2 iddefaultCheck2> label classmb-0> span>Queijo Mussarela/span> input typecheckbox> span classcheckmark check-red>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typecheckbox value2 iddefaultCheck2> label classmb-0> span>Maionese da Casa/span> input typecheckbox> span classcheckmark check-red>/span> /label> /div> /div> /div> /div> /div> div classcard> div classcard-header p-0 idheading4> button classbtn btn-modal-accordion data-togglecollapse data-target#collapse4 aria-expandedfalse aria-controlscollapse4>i classicon mdi mdi-chevron-right>/i>Acompanhamento/button> /div> div classcollapse idcollapse4 aria-labelledbyheading4 data-parent#accordion> div classcard-body p-0> div classcomp-content py-1> div classform-check pt-2 pb-3> input classform-check-input typeradio value1 iddefaultRadio1> label classmb-0> span>Batata-Frita/span> input typeradio nametamanho> span classradiomark>/span> /label> /div> div classform-check pt-2 pb-3> input classform-check-input typeradio value2 iddefaultRadio2> label classmb-0> span>Onion Rings/span> input typeradio nametamanho> span classradiomark>/span> /label> /div> /div> /div> /div> /div> div classcard> div classcard-header p-0 idheading5> button classbtn btn-modal-accordion data-togglecollapse data-target#collapse5 aria-expandedfalse aria-controlscollapse5>i classicon mdi mdi-chevron-right>/i>Bebida/button> /div> div classcollapse idcollapse5 aria-labelledbyheading5 data-parent#accordion> div classcard-body p-0> div classcomp-content px-4 py-2> a href#> div classproduct-select>Johns Classic/div> p classmb-0>Hambúrguer de frango de 140g, queijo mussarela, molho teriyaki artesanal, alface americana, cebola crispy e maionese especial em um pão roseta com gergelim./p> /a> /div> div classcomp-content px-4 py-2> a href#> div classproduct-select>Johns Classic/div> p classmb-0>Hambúrguer de frango de 140g, queijo mussarela, molho teriyaki artesanal, alface americana, cebola crispy e maionese especial em um pão roseta com gergelim./p> /a> /div> div classcomp-content px-4 py-2> a href#> div classproduct-select>Johns Classic/div> p classmb-0>Hambúrguer de frango de 140g, queijo mussarela, molho teriyaki artesanal, alface americana, cebola crispy e maionese especial em um pão roseta com gergelim./p> /a> /div> /div> /div> /div> /div> /div> !-- div classmodal-footer> div classcol ml-0> button typebutton classbtn btn-success btn-block>Adicionar Combo ao Carrinho/button> /div> /div> --> /div> /div> /div> /div>/div> /div>/div>!-- Esse footer deve permanecer no arquivo home para não aparecer em outras páginas -->div classfooter-home> div classfooter-bg container-fluid my-4 py-3> div classrow no-gutters align-items-center mx-auto stylemax-width: 1440px !important;> div classcol-12 col-md order-md-3 px-0 px-md-4> h2 classtext-center mb-0>Pagamento/h2> p classfont-14 text-center>Confira as formas de pagamento que aceitamos:/p> ul classhome_payments_list> li classml-1>img src../assets/common/images/payment/svg/pix.svg>PIX /li> li classml-1>img src../assets/common/images/payment/svg/others-money.svg>Dinheiro /li> li classml-1>img src../assets/common/images/payment/svg/credit-mastercard.svg>Mastercard (crédito)/li> li classml-1>img src../assets/common/images/payment/svg/credit-visa.svg>Visa (crédito)/li> li classml-1>img src../assets/common/images/payment/svg/credit-elo.svg>Elo (crédito)/li> li classml-1>img src../assets/common/images/payment/svg/credit-hipercard.svg>Hipercard (crédito)/li> li classml-1>img src../assets/common/images/payment/svg/credit-amex.svg>American Express (crédito)/li> li classml-1>img src../assets/common/images/payment/svg/debit-electron.svg>Visa Electron (débito)/li> li classml-1>img src../assets/common/images/payment/svg/debit-elo.svg>Elo (débito)/li> /ul> hr classd-md-none> /div> div classcol-12 col-md-6 col-lg-5 pr-0 pr-md-3> h2 classtext-center mb-0>Contato/h2> p classfont-14 text-center mb-0>Está com alguma dúvida ou precisa de ajuda?/p> div classrow m-0 justify-content-center mb-3> div classcol-12 col-md-auto px-1 mt-2 d-md-none> a target_blank hrefhttps://wa.me/5548999999114> div classcontact-button whatsapp> i classfab fa-whatsapp>/i> p classmb-0 fw-400 text-uppercase text-center text-md-left>Clique aqui para chamar/p> p classmb-0 fw-400 text-uppercase text-center text-md-left>a gente no strong>WhatsApp/strong>/p> /div> /a> /div> div classcol-12 col-md-auto px-1 mt-2 d-none d-md-block> a target_blank hrefhttps://wa.me/5548999999114> div classcontact-button whatsapp> i classfab fa-whatsapp>/i> p classmb-0 fw-400 text-uppercase text-center text-md-left>Chame no WhatsApp/p> p classmb-0 fw-700 text-center text-md-left>(48) 9 9999-9114/p> /div> /a> /div> div classcol-12 col-md-auto px-1 mt-2 d-md-none> a hreftel:+5548999999114> div classcontact-button phone> i classfas fa-phone>/i> p classmb-0 fw-400 text-uppercase text-center text-md-left>Ou se preferir, nos ligue:/p> p classmb-0 fw-700 text-uppercase text-center text-md-left>(48) 99999-9114/p> /div> /a> /div> div classcol-12 col-md-auto px-1 mt-2 d-none d-md-block> a hreftel:+5548999999114> div classcontact-button phone> i classfas fa-phone>/i> p classmb-0 fw-400 text-uppercase text-center text-md-left>Nosso Telefone/p> p classmb-0 fw-700 text-center text-md-left>(48) 99999-9114/p> /div> /a> /div> /div> hr classd-md-none> h2 classtext-center mb-0>Nossas Redes Sociais/h2> p classfont-14 text-center mb-0>Fique por dentro de nossas novidades e promoções./p> div classrow my-2 no-gutters justify-content-center> div classcol-auto px-2> a classsocial-link target_blank hrefhttps://www.facebook.com/imperial22salgados>img srchttps://files.deliveryturbo.com.br/assets/common/images/default/social_facebook.png altFacebook>/a> /div> div classcol-auto px-2> a classsocial-link target_blank hrefhttps://instagram.com/imperial22salgados>img srchttps://files.deliveryturbo.com.br/assets/common/images/default/social_instagram.png altInstagram>/a> /div> /div> /div> /div> /div>/div> footer> div classcontainer > div classrow no-gutters justify-content-center align-items-center mb-4 mx-5 mx-xl-auto stylemax-width: 1080px !important;> div classcol-auto my-2> h6 classm-0 text-center font-12>©2025 Imperial Salgados/h6> /div> div classcol-auto px-4 my-2> a hrefhttps://hubzy.com.br/legal/termos-de-servico/ target_blank>h6 classm-0 text-center font-12>Termos de Uso/h6>/a> /div> div classcol-auto my-2> a hrefhttps://hubzy.com.br/legal/politica-de-privacidade/ target_blank>h6 classm-0 text-center font-12>Política de Privacidade/h6>/a> /div> div classcol d-none d-md-block>/div> div classcol-12 col-md-auto mt-4 mt-md-0 dt-brand> h6 classm-0 text-center font-12>Desenvolvido por:br classd-md-none>a hrefhttps://hubzy.com.br/ target_blank>img srchttps://files.deliveryturbo.com.br/assets/common/images/default/hubzy-light.svg altLogo Hubzy classmx-2>/a>/h6> /div> /div> /div> iframe idauth__profile_iframe styledisplay: none !important>/iframe>/footer> div classd-none w-100 pseudo-div-footer>/div>/div>!-- /wrap_content END -->nav classnavbar fixed-top navbar-expand-lg navbar-dark bg-dark d-lg-none> button classnavbar-toggler pl-1 btn-voltar-mobile-modal typebutton data-dismissmodal#modal-produto aria-labelClose> span>VOLTAR/span> /button>/nav> div classmodal fade idmd-alerta-horario tabindex-1 roledialog aria-hiddentrue styledisplay: none;> div classmodal-dialog> div classmodal-content> div classmodal-header> button classclose typebutton data-dismissmodal aria-hiddentrue>span classmdi mdi-close>/span>/button> /div> div classmodal-body styleheight: 200px !important> div classtext-center> div classtext-primary>span classmodal-main-icon mdi mdi-check>/span>/div> h3>ATENÇÃO!/h3> p>Infelizmente estamos fora do nosso horário de atendimento.br> /p> div classmt-8> button classbtn btn-space btn-primary typebutton data-dismissmodal>Ok, entendi/button> /div> /div> /div> div classmodal-footer>/div> /div> /div>/div>div idmodal-signup classmodal fade tabindex-1 roledialog aria-labelledbymodal signup aria-hiddentrue> div classmodal-dialog modal-dialog-centered modal-md> div classmodal-content> div classpseudo-header-mobile d-lg-none>/div> button typebutton classclose d-none d-lg-block data-dismissmodal aria-labelClose> span aria-hiddentrue>×/span> /button> div classmodal-body p-0 p-lg-0 h-100> div classform-modal-signup> div classrow no-gutters p-4 m-0 form-inicial-signup> div classcol stylemax-width: 400px; margin: auto;> div ng-classlogin.tp_fluxo normal ? : d-none> h2 classtext-center mb-0>FAÇA LOGIN/h2> p classtext-center mb-3>Cadastre-se e aproveite a melhor experiência./p> a href# classbtn btn-block fw-700 font-18 btn-manual-login-fb hide-on-only-auth-fone>i classfab fa-facebook mr-2>/i>Entrar com o Facebook/a> p classtext-center text-muted mb-0 hide-on-only-auth-fone>small>Fique tranquilo, nunca vamos publicar nada em seu nome./small>/p> div classrow m-0 no-gutters align-items-center py-4 hide-on-only-auth-fone> div classcol>hr>/div> div classcol-auto px-3>div classtext-center text-uppercase>Ou se preferir/div>/div> div classcol>hr>/div> /div> /div> div ng-classlogin.tp_fluxo facebook || login.tp_fluxo alteracao_fone ? : d-none> h2 classtext-center mb-0>CONFIRME SEU TELEFONE/h2> p classtext-center mb-3 ng-iflogin.tp_fluxo facebook>Para aproveitar a melhor experiência na nossa plataforma, iremos confirmar algumas informações./p> p classtext-center mb-3 ng-iflogin.tp_fluxo alteracao_fone>Para realizar a alteração do seu telefone, vamos fazer uma verificação de segurança./p> /div> div classform-group> input typetext classform-control form-control-lg nr_fone_code_auth mask_fone nameinputnr_fone placeholderDigite seu telefone required> /div> div classrow px-2 buttons-send-auth-code d-none> div classcol-12> p classtext-center text-muted mb-2 mt-0>small>Escolha a melhor forma para você receber o código de autenticação./small>/p> /div> div classcol-3 px-1> button typebutton classbtn btn-secondary btn-block btn-send-auth-code data-authsms> SMS /button> /div> div classcol-9 px-1> button typebutton classbtn btn-success btn-block btn-send-auth-code data-authwhatsapp> i classfab fa-whatsapp mr-1>/i>Whatsapp /button> /div> div classcol-12 text-center p-0 m-0> p classmsg-login text-danger mb-0 mt-3 d-none>/p> /div> div classcol-12 text-center m-0 p-0> button classbtn btn-dark font-13 btn-return-login-inicial mt-2 d-none data-auth>Login usando este telefone/button> /div> /div> /div> /div> div classrow no-gutters p-4 m-0 form-codigo-signup d-none> div classcol-12> h2 classtext-center mb-0>CÓDIGO DE ACESSO/h2> p classtext-center mb-3>Digite o código que enviamos para o seu número./p> div classbox-inputs-codes-auth text-center> input classcode-input-auth mask-only-number maxlength1 data-seq1 inputmodenumeric pattern0-9* typetext/> input classcode-input-auth mask-only-number maxlength1 data-seq2 inputmodenumeric pattern0-9* typetext/> input classcode-input-auth mask-only-number maxlength1 data-seq3 inputmodenumeric pattern0-9* typetext/> input classcode-input-auth mask-only-number maxlength1 data-seq4 inputmodenumeric pattern0-9* typetext/> input classcode-input-auth mask-only-number maxlength1 data-seq5 inputmodenumeric pattern0-9* typetext/> input classcode-input-auth mask-only-number maxlength1 data-seq6 inputmodenumeric pattern0-9* typetext/> /div> /div> div classcol-12 text-center px-2> button typebutton classbtn btn-primary btn-valid-auth-code d-none w-100 mt-3>Validar Código/button> /div> div classcol-12 text-center mt-3> a href# classtext-muted font-13 btn-code-auth-not-received>u>Receber um novo código/u>/a> /div> /div> /div> div classrow no-gutters p-4 m-0 form-modal-signup d-none> div classcol-12 mb-4> h2 classtext-center mb-0>Confirme suas informações/h2> p classtext-center mb-0>Simples, prático e rápido!/p> /div> div classcol> form idform-cad-cliente data-parsley-namespacedata-parsley- data-parsley-validate novalidate> div classform-group> label>Nome:/label> input typehidden classid_cliente nameinputid_cliente value% login.id_cliente %> input typehidden classdt_fone_validado nameinputdt_fone_validado value2025-12-03 19:42:22> input typehidden classid_facebook nameinputid_facebook value% login.id_facebook %> input typetext classform-control form-control-lg ds_nome ds_nome_validate nameinputds_nome value% login.ds_nome % placeholderNome Completo data-parsley-error-messageInforme o seu nome completo. required> /div> div classform-group> label>Telefone:/label> input typetext classform-control form-control-lg nr_fone mask_fone nameinputnr_fone value% login.nr_fone % placeholder(99) 99999-9999 readonlyreadonly> /div> div classform-group> label>E-mail: (Opcional)/label> input typeemail classform-control form-control-lg ds_email nameinputds_email value% login.ds_email % placeholderSeu email ng-readonlylogin.tp_fluxo facebook && login.ds_email ? true : false> input typehidden nameinputdt_email_validado value2025-12-03 19:42:22 ng-iflogin.tp_fluxo facebook && login.ds_email ? true : false> /div> div classform-group ng-iflogin.dt_nascimento> label>Data de nascimento: (Opcional)/label> input typedate classform-control form-control-lg dt_nascimento nameinputdt_nascimento value% login.dt_nascimento %> /div> div classform-group ng-iflogin.nr_cpf_cnpj> label>CPF/CNPJ: (Opcional)/label> input typetext classform-control form-control-lg nr_cpf_cnpj data-mask-for-cpf-cnpj placeholder000.000.000-00 nameinputnr_cpf_cnpj value% login.nr_cpf_cnpj %> /div> p classtext-muted>Ao clicar em Confirmar, confirmo que li e concordo com os a hrefhttps://deliveryturbo.com.br/site/termos/ target_blank titleTermos de Uso>strong>Termos de Uso/strong>/a> e a a hrefhttps://deliveryturbo.com.br/site/privacidade/ target_blank titlePolítica de Privacidade>strong>Política de Privacidade/strong>/a>./p> div classmsg text-center color-red mb-2>/div> button typebutton classbtn btn-success btn-lg btn-block btn-env-cad-cliente btn-cliente>Confirmar/button> /form> /div> /div> div classrow no-gutters p-4 m-0 form-modal-signup-facebook d-none form-modal-signup> div classcol-12 text-center> img classfb-img-login stylewidth: 50px; border-radius: 50%;> h3 classtext-center mb-0 mt-3>img srchttps://files.deliveryturbo.com.br/assets/common/images/default/social_facebook.png altFacebook stylewidth: 30px; border-radius: 0px; classmr-3>Acesso com o Facebook/h3> div classfb-loading text-center> p classtext-center mb-2 mt-2>Verificando informações, aguarde.../p> i classfa fa-spinner fa-spin fa-1x ml-2 mt-3 stylefont-size: 30px;>/i> /div> /div> /div> /div> /div> /div>/div>div idmodal-confirm-cliente-vinculo-empresa classmodal fade tabindex-1 roledialog aria-labelledbymodal signup confirm aria-hiddentrue stylepointer-events: none> div classmodal-dialog modal-dialog-centered modal-md> div classmodal-content> div classpseudo-header-mobile d-lg-none>/div> div classmodal-body p-0 p-lg-0 h-100> div classrow no-gutters p-4 m-0> div classcol-12> form idform-confirm-cliente-vinculo-empresa> h3 classtext-center mb-2 mt-2>Confirme suas informações/h3> p classtext-center mb-0>Está loja pode ter atualizado seus dados em um pedido manual./p> div classform-group ng-ifcliente_alteracoes0.ds_nome> label>Nome:/label> input typetext classform-control ds_nome value% cliente_alteracoes0.ds_nome %> /div> div classform-group ng-ifcliente_alteracoes0.ds_email> label>E-mail: small classml-1>(Opcional)/small>/label> input typetext classform-control ds_email value% cliente_alteracoes0.ds_email %> /div> div classform-group ng-ifcliente_alteracoes0.dt_nascimento> label>Data de nascimento: small classml-1>(Opcional)/small>/label> input typedate classform-control dt_nascimento value% cliente_alteracoes0.dt_nascimento %> /div> div classform-group ng-ifcliente_alteracoes0.nr_cpf_cnpj> label>CPF/CNPJ: small classml-1>(Opcional)/small>/label> input typetext classform-control nr_cpf_cnpj data-mask-for-cpf-cnpj placeholder000.000.000-00 value% cliente_alteracoes0.nr_cpf_cnpj %> /div> div classrow no-gutters> div classcol-12 px-0> button typebutton classbtn btn-success btn-lg btn-block btn-confirm-dados-vinculo-empresa>Confirmar/button> /div> /div> /form> /div> /div> /div> /div> /div>/div>div idmodal-cupom classmodal `fade tabindex-1 roledialog aria-labelledbymodal cupom de desconto aria-hiddentrue> div classmodal-dialog modal-dialog-centered modal-md> div classmodal-content> div classpseudo-header-mobile d-lg-none>/div> button typebutton classclose d-none d-lg-block data-dismissmodal aria-labelClose> span aria-hiddentrue>×/span> /button> div classmodal-body box-cupom p-0> h5 classmy-3 mx-4 text-center fw-700 ng-ifcupons_sugeridos.length > 0>Escolha um dos cupons disponíveis:/h5> hr classdivider-c mx-4 ng-ifcupons_sugeridos.length > 0> div classlistOptions listOptionsCoupons ng-ifcupons_sugeridos.length > 0> div classoption row m-0 no-gutters align-items-center p-3 btn-cupom-sugerido ng-repeatcupom in cupons_sugeridos ng-class(cart.cupom.id_cupom ! 0 && cart.cupom.id_cupom cupom.id_cupom_desconto) ? active : (cupom.in_ativo N) ? box-disabled : data-codigo% cupom.ds_cod_cupom %> div classcol px-2 ng-initview_regras false> p classmy-0 fw-700 font-16> % (cupom.tp_desconto vl_fixo) ? Desconto de R$ + cupom.vl_desconto : % % (cupom.tp_desconto percentual) ? Desconto de + cupom.vl_desconto + % : % % (cupom.tp_desconto frete_gratis) ? Taxa de entrega grátis : % % (cupom.tp_desconto item_gratis) ? Item grátis : % % (cupom.tp_desconto item_gratis) ? - + cupom.produto0.ds_titulo_item : % /p> p classmy-1 badge badge-success px-2 styleborder-radius: 50px; ng-if(cupom.tp_automacao aniversariantes)>Feliz Aniversário/p> p classmy-1 badge badge-dark px-2 styleborder-radius: 50px; ng-if(cupom.in_ativo N) && (cupom.msg_ativo)>% cupom.msg_ativo %/p> div ng-ifcupom.regras> p classmy-0 opacity-75 ng-repeatregra in cupom.regras ng-class($index > 0) ? hide-regra-cupom d-none : > % regra % /p> /div> div classfw-700 btn-view-regras ng-clickview_regras true ng-ifcupom.regras && cupom.regras.length > 1> p classmy-0 font-14 opacity-75 p-view-regras-cupom>Ver regras do cupom/p> /div> /div> div classcol-auto> i classfa-regular fa-circle font-28 opacity-75>/i> i classfa-regular fa-circle-dot font-28 stylecolor: #1b9d44;>/i> /div> /div> /div> div classbtnBottom> h5 classm-3 text-center fw-700 ng-ifcupons_sugeridos.length 0>Informe o código do seu cupom/h5> hr classdivider-c mx-4 ng-ifcupons_sugeridos.length 0> h5 classm-3 text-center fw-700 ng-ifcupons_sugeridos.length > 0>Ou informe o código do seu cupom:/h5> div classinput-group px-4 pb-2> input classform-control form-control-lg ds_cod_cupom text-monospace text-uppercase placeholderSEUCUPOM styleborder-radius: 20px 0 0 20px;> div classinput-group-append>button classbtn btn-success btn-lg btn-block px-4 btn-validar-cupom typebutton styleborder-radius: 0 20px 20px 0;>Aplicar/button>/div> /div> div classrow m-0 no-gutters px-4 py-2> div classcol> div classmsg-cupom red-700>/div> /div> div classcol-auto> a href classfw-700 color-red rem-cupom-desconto ng-if(cart.cupom.id_cupom ! 0) && (cart.cupom.ds_cupom ! )>Remover Cupom/a> /div> /div> /div> /div> /div> /div>/div>div idmodal-pagamento classmodal fade scope_checkout tabindex-1 roledialog aria-labelledbymodal forma de pagamento aria-hiddentrue> div classmodal-dialog modal-dialog-centered modal-md> div classmodal-content> div classpseudo-header-mobile d-lg-none>/div> button typebutton classclose d-none d-lg-block data-dismissmodal aria-labelClose> span aria-hiddentrue>×/span> /button> div classmodal-body p-0> div classbox-white box-pagamentos> div classitens-carrinho> div classnav-tp-pagamento> h5 classmy-3 mx-4 text-center fw-700>Qual a forma de pagamento?/h5> hr classdivider-c mx-4> ul classnav nav-pills nav-fill my-3 mx-4 idnavFormaPagamento roletablist> li classnav-item rolepagarOnline ng-classformas_pagamento_online.length > 0 ? : d-none> a classnav-link font-14 text-uppercase px-0 btn-type-pagamento online styleborder-radius: 50px; data-toggletab href#pagarOnline roletab aria-controlspagarOnline aria-selectedtrue>Pague Online/a> /li> li classnav-item rolepagarEntrega> a classnav-link font-14 text-uppercase px-0 btn-type-pagamento offline styleborder-radius: 50px; data-toggletab href#pagarEntrega roletab aria-controlspagarEntrega aria-selectedfalse>Pague Na Entrega/a> /li> /ul> /div> div classtab-content> input typehidden idSessionIdAntifraude value/> div classtab-pane active idpagarOnline roletabpanel aria-labelledbypagarOnline-tab ng-ifformas_pagamento_online.length > 0> div classlistOptions listOptionsPayments> div classoption row m-0 no-gutters align-items-center ng-if(formas_pagamento_online0.dados | filter: { id_forma_pagamento: 12}).length > 0 ng-clickcheckPagamento(recebimento_online, pix) ng-classcart.forma_pagamento.id_forma_pagamento 12 ? active : > div classcol-auto pl-3> img classpayment-logo src../assets/common/images/payment/svg/pix.svg> /div> div classcol px-3 py-4> h4 classmy-0 font-16 fw-700>PIX/h4> /div> /div> div classoption row m-0 no-gutters align-items-center ng-repeatforma_online in formas_pagamento_online ng-ifforma_online.in_especie pix_manual ng-clickcheckPagamento(pix_manual, forma_online) ng-classcart.forma_pagamento.id_forma_pagamento forma_online.dados0.id_forma_pagamento ? active : > div classcol-auto pl-3> img classpayment-logo src../assets/common/images/payment/svg/pix.svg> /div> div classcol px-3 py-4> h4 classmy-0 font-16 fw-700>PIX/h4> p classmt-1 mb-0 text-muted>Você fará o Pix para a chave da loja, que será mostrada após enviar o pedido./p> /div> /div> div classoption row m-0 no-gutters align-items-center select-cartao-pagamento-online ng-if((formas_pagamento_online0.dados | filter: { id_forma_pagamento: 11}).length > 0) && (carteira_cartoes.length > 0) ng-repeatcartao in carteira_cartoes data-id11 data-card% cartao.id_cartao_integracao % ng-classcart.forma_pagamento.id_cartao cartao.id_cartao_integracao ? active : > div classcol-auto pl-3 ng-ifcartao.ds_bandeira.length > 0> input typehidden classcard_brand ng-valuecartao.ds_bandeira/> input typehidden classcard_last_four_digits ng-valuecartao.nr_digitos_fim/> img classpayment-logo src../assets/common/images/payment/svg/credit-% (cartao.ds_bandeira).toLowerCase() %.svg> /div> div classcol p-3> h4 classmt-0 mb-2 font-16 fw-700>% cartao.ds_bandeira %/h4> p classmy-0 font-14 opacity-75>**** **** **** % cartao.nr_digitos_fim %/p> /div> div classcol-auto pr-3> span classfa-solid fa-ellipsis-vertical font-24 opacity-75 px-3 py-2 btn-open-dropdown-cartao ng-clickaddClassFromPaymentDropdownOpen() data-toggledropdown aria-haspopuptrue aria-expandedfalse>/span> div classdropdown-menu aria-labelledbydropdownMenuButton> a classdropdown-item px-3 btn-excluir-cartao-cliente-pagarme href> i classfa-solid fa-trash stylewidth: 25px;>/i> i classfa-solid fa-spinner fa-spin mr-3 styledisplay: none>/i> Excluir /a> /div> /div> /div> div classoption row m-0 no-gutters align-items-center btn-novo-cartao-carteira ng-if((formas_pagamento_online0.dados | filter: { id_forma_pagamento: 11}).length > 0) && (carteira_cartoes.length 0)> div classcol-auto pl-3> img classpayment-logo styleborder-radius: 6px; src../assets/common/images/payment/svg/others-default-card.svg> /div> div classcol px-3 py-4> h4 classmy-0 font-16 fw-700>Cartão de Crédito/h4> /div> div classcol-auto px-3> i classfa-regular fa-circle font-28 opacity-75>/i> i classfa-regular fa-circle-dot font-28 stylecolor: #1b9d44;>/i> /div> /div> /div> div classp-3 border-top btnBottom ng-if((formas_pagamento_online0.dados | filter: { id_forma_pagamento: 11}).length > 0) && (carteira_cartoes.length > 0)> button typebutton classbtn btn-xl btn-block btn-success py-2 btn-novo-cartao-carteira styleborder-radius: 10px;> i classfa-solid fa-circle-plus mr-2>/i>Adicionar Novo Cartão /button> /div> /div> div iddadosCartaoOnline classp-4 d-none> div classrow m-0 no-gutters align-items-center mb-4> div classcol-auto pr-3> button classbtn btn-dark btn-return-carteira-cartoes>i classfa-solid fa-chevron-left>/i>/button> /div> div classcol> h5 classmy-0>i classfa-solid fa-lock mr-2>/i>Ambiente Seguro/h5> p classmy-0 text-muted>Preencha os dados do seu cartão de crédito abaixo./p> /div> /div> form action methodPOST data-pagarmecheckout-form idform-cad-cartao-pagarme> div classform-row> div classcol-12 d-flex> div classform-group styleflex: 1> label forinput-card-number>Número do cartão/label> input typetext placeholder0000 0000 0000 0000 maxlength16 idinput-card-number namecard-number data-pagarmecheckout-elementnumber classform-control form-control-lg mask_number_card input-cartao mask-force-end mask-only-number aria-describedbyemailHelp requiredrequired stylepadding-right: 50px !important> /div> span data-pagarmecheckout-elementbrand styledisplay: none; max-width: 30px; align-items:center; justify-content: center; margin-left: 10px; margin_top: 10px classimg-cartao-brand>/span> /div> div classcol-6> div classform-group> label forinput-mask-card-exp-date>Data de validade/label> input typetext placeholderMM/AA idinput-mask-card-exp-date classform-control form-control-lg mask_exp_card input-cartao mask-force-end mask-only-number maxlength5 requiredrequired> input typehidden idinput-card-exp-date namecard-exp-date data-pagarmecheckout-separator- data-pagarmecheckout-elementexp_date classform-control form-control-lg mask_exp_card input-cartao maxlength5 requiredrequired> /div> /div> div classcol-6> div classform-group> label forinput-cvv>CVVsmall classtext-muted pl-1>(Código de Verificação)/small>/label> input typetext placeholder*** idinput-cvv classform-control form-control-lg mask_cvv_card input-cartao mask-only-number namecvv data-pagarmecheckout-elementcvv requiredrequired> /div> /div> div classcol-12> div classform-group> label forinput-holder-name>Nome do titular/label> input typetext placeholderNome completo classform-control form-control-lg text-uppercase input-cartao idinput-holder-name nameholder-name data-pagarmecheckout-elementholder_name requiredrequired> small idemailHelp classform-text text-muted>Preencha o nome como consta no cartão./small> /div> /div> div classcol-12 d-none msg-feedback-cartao> p classalert alert-danger p-2>/p> /div> /div> button typesubmit classbtn btn-lg btn-block btn-success mt-2 btn-send-cartao-pagarme>Continuar/button> p classmb-0 mt-2 font-13 text-center text-muted>i classfa-solid fa-lock mr-2>/i>Os seus dados estão protegidos pela img srchttps://files.deliveryturbo.com.br/assets/common/images/default/logo_stone.svg styleheight: 10px;width: auto;border-radius: 0;bottom: 1px;position: relative;margin: 0 1px; altLogo Stone>./p> /form> /div> div classtab-pane idpagarEntrega roletabpanel aria-labelledbypagarEntrega-tab> div ng-ifformas_pagamento_offline.length > 0> div classlistOptions listOptionsPayments box-formas-list stylemax-height: calc(100vh - 182px) !important;> div classoption row m-0 no-gutters align-items-center ng-repeatforma in formas_pagamento_offline ng-ifforma.in_especie ! pix_maquina || (forma.in_especie pix_maquina && (formas_pagamento_online.length 0 || (formas_pagamento_online0.dados | filter: { id_forma_pagamento: 12}).length 0)) ng-classcart.forma_pagamento.in_especie forma.in_especie ? active : ng-clickcheckPagamento(forma.in_especie, forma)> div classcol-auto pl-3> img classpayment-logo src../assets/common/images/payment/svg/others-money.svg ng-ifforma.in_especie dinheiro> img classpayment-logo src../assets/common/images/payment/svg/others-default-card.svg ng-ifforma.in_especie cartao_credito> img classpayment-logo src../assets/common/images/payment/svg/others-default-card.svg ng-ifforma.in_especie cartao_debito> img classpayment-logo src../assets/common/images/payment/svg/others-default-card.svg ng-ifforma.in_especie cartao_voucher> img classpayment-logo src../assets/common/images/payment/svg/pix.svg ng-ifforma.in_especie pix_maquina> /div> div classcol px-3 py-4> h4 classmy-0 font-16 fw-700 ng-ifforma.in_especie dinheiro ng-classforma.in_especie>Dinheiro/h4> h4 classmy-0 font-16 fw-700 ng-ifforma.in_especie cartao_credito ng-classforma.in_especie>Cartão de Crédito/h4> h4 classmy-0 font-16 fw-700 ng-ifforma.in_especie cartao_debito ng-classforma.in_especie>Cartão de Débito/h4> h4 classmy-0 font-16 fw-700 ng-ifforma.in_especie cartao_voucher ng-classforma.in_especie>Voucher/h4> h4 classmy-0 font-16 fw-700 ng-ifforma.in_especie pix_maquina ng-classforma.in_especie>PIX/h4> p classmt-1 mb-0 text-muted ng-ifforma.in_especie pix_maquina>O entregador levará a maquininha para você fazer o pix./p> h4 classmy-0 font-16 fw-700 ng-ifforma.in_especie outros ng-classforma.in_especie>Outros Meios de Pagamento/h4> /div> div classcol-auto px-3> i classfa-regular fa-circle font-28 opacity-75>/i> i classfa-regular fa-circle-dot font-28 stylecolor: #1b9d44;>/i> /div> /div> /div> div classbox-formas d-none data-especiedinheiro> div classbox-troco-question> div classrow no-gutters m-0> div classcol-12> h5 classmy-3 mx-4 text-center fw-700>O valor é R$ % (((cart.vl_total) > 0) ? (cart.vl_total) : 0).toFixed(2).replace(.,,) %. Precisa de troco?/h5> hr classdivider-c mx-4> /div> div classcol-6 pl-4 pr-2 pb-4> button typebutton classbtn btn-secondary btn-lg btn-block has-troco>Sim/button> /div> div classcol-6 pl-2 pr-4 pb-4> button typebutton classbtn btn-secondary btn-lg btn-block not-troco>Não/button> /div> /div> /div> div classd-none box-troco> div classrow no-gutters m-0> div classcol-12> h5 classmy-3 mx-4 text-center fw-700>Precisa de troco para quanto?/h5> hr classdivider-c mx-4> /div> div classcol-6 pl-4 pr-2 preset-troco ng-class(cart.vl_total > 100) ? d-none : > button typebutton classbtn btn-secondary btn-lg btn-block ng-clickchangeTroco(50) ng-disabled(cart.vl_total) > 50 ? true : false>R$ 50,00/button> /div> div classcol-6 pl-2 pr-4 preset-troco ng-class(cart.vl_total) > 100 ? d-none : > button typebutton classbtn btn-secondary btn-lg btn-block ng-clickchangeTroco(100) ng-disabled(cart.vl_total) > 100 ? true : false>R$ 100,00/button> /div> div classcol-12 px-4 pt-3 preset-troco> div classinput-group mb-3> input classtw-100 form-control mask_money valor-troco ng-modelvl_troco placeholderR$ 0,00 maxlength6 styleheight: 48px; font-size: 1.25rem;> div classinput-group-append>button classbtn btn-success btn-lg btn-block px-4 typebutton ng-clickchangeTroco((vl_troco).replace(,,.))>Aplicar/button>/div> /div> /div> /div> div classrow no-gutters m-0 px-4 pb-4> div classcol-auto> button typebutton classbtn btn-dark return-payments>Voltar/button> /div> div classcol> div classmsg-troco red-700 text-right>/div> /div> /div> /div> /div> div classbox-formas d-none data-especiecartao> div classrow m-0 no-gutters align-items-center px-4 pt-4> div classcol-auto pr-3> button typebutton classbtn btn-dark return-payments>i classfa-solid fa-chevron-left>/i>/button> /div> div classcol> h5 classmy-2 fw-700>Qual a bandeira do seu cartão?/h5> /div> /div> hr classdivider-c mx-4> div classlistOptions listOptionsPayments ng-ifforma_pagamento_selected.length > 0 stylemax-height: calc(100vh - 153px) !important;> div classoption row m-0 no-gutters align-items-center ng-repeatbandeira in forma_pagamento_selected0.bandeiras ng-clickconfirmCartao(bandeira, forma_pagamento_selected0.in_especie) ng-classcart.forma_pagamento.id_forma_pagamento bandeira.id_forma_pagamento ? active : > div classcol-auto pl-3> img classpayment-logo src../assets/common/images/% bandeira.im_bandeira % > /div> div classcol px-3 py-4> h4 classmy-0 font-16 fw-700>% bandeira.ds_bandeira_operadora %/h4> /div> div classcol-auto px-3> i classfa-regular fa-circle font-28 opacity-75>/i> i classfa-regular fa-circle-dot font-28 stylecolor: #1b9d44;>/i> /div> /div> /div> /div> /div> div classlistOptions listOptionsPayments ng-ifformas_pagamento_offline.length 0> div classoption optionDisabled row m-0 no-gutters align-items-center px-3 py-3 m-3> div classcol-auto pr-3> i classfa-solid fa-triangle-exclamation text-muted font-24>/i> /div> div classcol> p classmy-0 font-16 opacity-75>No momento estamos aceitando apenas pagamentos online./p> /div> /div> /div> /div> div classaviso-pix d-none data-especie> div classp-4> div classrow no-gutters m-0> div classcol> h5 classmy-3 mx-4 text-center fw-700>Pagamento via PIX/h5> hr classdivider-c mx-4> /div> div classw-100 mt-3>/div> div classcol> input typehidden classid_forma_pagamento_pix value/> div classform-group mb-0 aviso_pix_manual d-none> p classfont-16>Você deve realizar o pagamento e encaminhar o comprovante para o estabelecimento./p> p classfont-16 mb-0>strong>Atenção: /strong>A chave para pagamento aparecerá após você confirmar o envio do pedido./p> /div> div classform-group mb-0 aviso_pix_maquina d-none> p classfont-16 mb-0>strong>Atenção: /strong>Você deve realizar o pagamento diretamente na máquina de cartão no momento da entrega do seu pedido./p> /div> /div> /div> div classrow no-gutters m-0 mt-3> div classcol pr-2> button typebutton classbtn btn-secondary btn-lg btn-block return-payments>Voltar/button> /div> div classcol pl-2> button typebutton classbtn btn-success btn-lg btn-block btn-confirm-pix>Confirmar/button> /div> /div> /div> /div> /div> /div> /div> /div> /div> /div>/div> div idmodal-agendamento classmodal fade tabindex-1 roledialog aria-labelledbymodal de agendamento aria-hiddentrue> div classmodal-dialog modal-dialog-centered modal-md> div classmodal-content> div classpseudo-header-mobile d-lg-none>/div> button typebutton classclose d-none d-lg-block data-dismissmodal aria-labelClose> span aria-hiddentrue>×/span> /button> div classmodal-body p-0 ng-initdt_hoje_selected S> h5 classmy-3 text-center fw-700>Quando quer receber?/h5> hr classdivider-c mx-4> div ng-ifdisponibilidade_agendamento.length > 0> div classnav listOptions listOptionsDates nav-slide> div classnav-item option ng-repeatdisponivel in disponibilidade_agendamento ng-class(agendamento_selected0.dt_periodo disponivel.dt_periodo) ? active : > a classnav-link box-date href ng-clicksetHorarioAgendamentoSelected(disponivel)> p classdayname ng-ifdisponivel.tp_exibicao day>% disponivel.ds_dia_semana.replace(-feira, ) %/p> p classdate>% disponivel.dt_periodo.substring(8,10) %/p> p classmonth ng-ifdisponivel.tp_exibicao month>% disponivel.ds_mes %/p> /a> /div> div classnav-item option d-flex align-items-center justify-content-center> a classnav-link show-more-agendamentos href> p classm-0> i classfa-regular fa-plus font-28 opacity-75>/i> /p> /a> /div> /div> hr classdivider-c mx-4> div classlistOptions listOptionsAvailability> h5 classmx-4 mb-3 font-16 fw-700 ng-ifagendamento_selected.length > 0 && agendamento_selected0.ds_dia_semana Hoje>Para agora:/h5> div classbtn-agendamento-imediato option row m-0 no-gutters align-items-center px-3 py-3 set-periodo-agendamento-cart ng-ifagendamento_selected.length > 0 && agendamento_selected0.ds_dia_semana Hoje && ((cart.tp_entrega B && in_retirada_balcao S) || (cart.tp_entrega E && in_delivery S)) ng-class!cart.agendamento.dt_agendamento ? active : > div classcol> p classmy-0 font-16 ng-ifvl_temp_entrega_pedido > 0>% (cart.tp_entrega E) ? Receber : Retirar % em aprox. strong>% (cart.tp_entrega E) ? vl_temp_entrega_pedido+ - +(vl_temp_entrega_pedido + 15) : vl_temp_entrega_pedido+ - +(vl_temp_entrega_pedido + 10) % min/strong>/p> p classmy-0 font-16 ng-ifvl_temp_entrega_pedido 0>A partir de strong>45 min/strong>/p> /div> div classcol-auto d-none> p classmy-0 font-16>R$ 0,00/p> /div> div classcol-auto pl-3> i classfa-regular fa-circle font-28 opacity-75>/i> i classfa-regular fa-circle-dot font-28 stylecolor: #1b9d44;>/i> /div> /div> div classoption optionBlocked row m-0 no-gutters align-items-center px-3 py-3 ng-ifagendamento_selected.length > 0 && agendamento_selected0.ds_dia_semana Hoje && ((cart.tp_entrega B && in_retirada_balcao ! S) || (cart.tp_entrega E && in_delivery ! S))> div classcol-auto pr-3> i classfa-solid fa-triangle-exclamation text-muted font-24>/i> /div> div classcol> p classmy-0 font-16 opacity-75>No momento não estamos aceitando pedidos para % (cart.tp_entrega E) ? entregar : retirar na loja % agora./p> /div> /div> h5 classmx-4 mb-3 font-16 fw-700 ng-ifagendamento_selected.length > 0 && agendamento_selected0.periodos_disponiveis.length > 0>Para agendar:/h5> div classoption row m-0 no-gutters align-items-center px-3 py-3 set-periodo-agendamento-cart ng-ifagendamento_selected.length > 0 && agendamento_selected0.periodos_disponiveis ng-repeatperiodo in agendamento_selected0.periodos_disponiveis ng-class(!agendamento_selected0.esgotado_validado || periodo.in_esgotado) ? a-disabled : (periodo.hr_inicial cart.agendamento.hr_inicial && periodo.hr_final cart.agendamento.hr_final && cart.agendamento.dt_agendamento agendamento_selected0.dt_periodo) ? active : ng-clicksetHorarioAgendamentoCart(agendamento_selected0, periodo)> div classcol> p classmy-0 font-16>% (cart.tp_entrega E) ? Receber : Retirar % entre strong>% periodo.hr_inicial.substring(0,5) %/strong> e strong>% periodo.hr_final.substring(0,5) %/strong>/p> p classmy-0 font-16 fw-700 text-danger ng-ifperiodo.in_esgotado>Esgotado/p> /div> div classcol-auto d-none> p classmy-0 font-16>R$ 0,00/p> /div> div classcol-auto pl-3> i classfa-regular fa-circle font-28 opacity-75>/i> i classfa-regular fa-circle-dot font-28 stylecolor: #1b9d44;>/i> /div> /div> div classoption optionBlocked row m-0 no-gutters align-items-center px-3 py-3 ng-ifagendamento_selected.length > 0 && !agendamento_selected0.periodos_disponiveis> div classcol-auto pr-3> i classfa-solid fa-triangle-exclamation text-muted font-24>/i> /div> div classcol> p classmy-0 font-16 opacity-75> % (agendamento_selected0.ds_dia_semana Hoje) ? Nenhum horário disponível para : % % (agendamento_selected0.ds_dia_semana ! Hoje) ? No momento não estamos aceitando pedidos para : % % (cart.tp_entrega E) ? entrega : retirar na loja % hoje./p> /div> /div> /div> /div> /div> /div> /div>/div>style> .a-disabled { pointer-events: none; opacity: 0.7; }/style>div classmodal fade edit-address roledialog aria-hiddentrue> div classmodal-dialog modal-dialog-centered> div classmodal-content> div classpseudo-header-mobile d-lg-none>/div> button typebutton classclose d-none d-lg-block data-dismissmodal aria-labelClose> span aria-hiddentrue>×/span> /button> div classmodal-body p-0> div classform-mode-select> h5 classmy-3 mx-4 text-center fw-700>Como quer receber seu pedido?/h5> hr classdivider-c mx-4> div classlistOptions listOptionsType> a href# classoption row m-0 no-gutters align-items-center btn-exibir-list-enderecos p-3 ng-class((in_delivery N) && (!in_agendamento_delivery)) ? a-disabled : cart.tp_entrega E ? active : > div classcol-auto pr-3> div classtext-center> i classfa-solid fa-motorcycle font-22>/i> /div> /div> div classcol> p classmy-0 fw-700 font-16>Entregar no meu endereço span classbadge badge-secondary ml-1 ng-if((in_delivery N) && (!in_agendamento_delivery))>Indisponível/span>/p> p classmy-0 font-14 opacity-75>A gente leva até você/p> /div> div classcol-auto pl-3> i classfa-regular fa-circle font-28 opacity-75>/i> i classfa-regular fa-circle-dot font-28 stylecolor: #1b9d44;>/i> /div> /a> a href# classoption row m-0 no-gutters align-items-center btn-set-retirada-checkout p-3 ng-class(((in_retirada_balcao ! S) || (endereco_retirada.length 0)) && (!in_agendamento_retirada)) ? a-disabled : (cart.tp_entrega B) ? active : > div classcol-auto pr-3> div classtext-center> i classfa-solid fa-map-location-dot font-22>/i> /div> /div> div classcol> p classmy-0 fw-700 font-16>Retirar na loja span classbadge badge-secondary ml-1 ng-if(((in_retirada_balcao ! S) || (endereco_retirada.length 0)) && (!in_agendamento_retirada))>Indisponível/span>/p> p classmy-0 font-14 opacity-75>% endereco_retirada0.ds_logradouro %, % endereco_retirada0.nr_logradouro %/p> p classmy-0 font-14 opacity-75>% endereco_retirada0.ds_bairro % - % endereco_retirada0.ds_cidade %/p> /div> div classcol-auto pl-3> i classfa-regular fa-circle font-28 opacity-75>/i> i classfa-regular fa-circle-dot font-28 stylecolor: #1b9d44;>/i> /div> /a> /div> /div> div classform-address-select d-none> h5 classmy-3 mx-4 text-center fw-700>Selecione o endereço de entrega/h5> hr classdivider-c mx-4> div classlistOptions listOptionsAddresses ng-ifcliente.enderecos.length 0 || !cliente.enderecos> div classoption optionDisabled row m-0 no-gutters align-items-center px-3 py-3 m-3> div classcol-auto pr-3> i classfa-solid fa-triangle-exclamation text-muted font-24>/i> /div> div classcol> p classmy-0 font-16 opacity-75>Você ainda não possui nenhum endereço cadastrado.../p> /div> /div> /div> div classlistOptions listOptionsAddresses ng-ifcliente.enderecos.length > 0> div classoption line-endereco position-relative endereco-% endereco.id_endereco % ng-repeatendereco in cliente.enderecos ng-ifendereco.in_cadastro S ng-classendereco.id_endereco cart.id_endereco_entrega ? active : > div classrow m-0 no-gutters align-items-center> div classcol p-3 check-confirm-endereco data-id% endereco.id_endereco %> h4 classmt-0 mb-1 font-16 fw-700> % endereco.ds_apelido_endereco % i classfa-solid fa-star color-gold ng-ifendereco.in_favorito S>/i> /h4> p classmy-0 opacity-75>% endereco.tp_logradouro % % endereco.ds_logradouro %, % endereco.nr_logradouro %/p> p classmy-0 opacity-75 ng-ifendereco.ds_complemento ! >% endereco.ds_complemento %/p> p classmy-0 opacity-75>% ((endereco.ds_bairro ! ) && (endereco.ds_bairro ! null) ? endereco.ds_bairro+ - : ) %% endereco.ds_cidade %, % endereco.ds_uf %/p> /div> div classcol-auto pr-3 col-dropdown-options> i classfa-solid fa-ellipsis-vertical font-24 opacity-75 px-3 py-2 ng-clickaddClassFromAddressDropdownOpen() data-toggledropdown aria-haspopuptrue aria-expandedfalse>/i> div classdropdown-menu dropdown-options aria-labelledbydropdownMenuButton> a classdropdown-item px-3 btn-edit-endereco-cliente href data-toggletooltip data-placementbottom data-id_end% endereco.id_endereco % titleEditar endereço> i classfa-solid fa-pen stylewidth: 25px;>/i> Editar /a> a classdropdown-item px-3 icon-delete-endereco href data-toggletooltip data-placementbottom titleExcluir endereço> i classfa-solid fa-trash stylewidth: 25px;>/i> Excluir /a> a classdropdown-item px-3 btn-favoritar-endereco href data-toggletooltip data-placementbottom data-id_end% endereco.id_endereco % titleMarcar como favorito ng-ifendereco.in_favorito ! S> i classfa-solid fa-star stylewidth: 25px;>/i> Marcar como favorito /a> /div> /div> div classcol-12 text-danger d-none endereco-confirm-del text-right pb-2 pr-2 position-relative> span classd-none d-sm-inline>Confirma exclusão?/span> span classd-inline d-sm-none>Excluir?/span> a href# classbadge badge-danger p-2 ml-2 btn-delete-endereco text-white data-id_end% endereco.id_endereco %>SIM/a> a href# classbadge badge-secondary p-2 ml-1 btn-cancel-delete-endereco text-white>CANCELAR/a> /div> div classcol-12> div classalert alert-danger msg-line-endereco mt-3 mb-0 d-none>/div> /div> /div> /div> /div> div classbg-red text-center font-14 px-2 py-1 ng-ifcliente.enderecos_indisponiveis.length > 0>Alguns de seus endereços estão indisponíveis no momento./div> div classalert alert-danger msg-endereco-select mx-3 mb-0 d-none>/div> div classp-3 border-top btnBottom> button typebutton classbtn btn-xl btn-block btn-success py-2 btn-add-address styleborder-radius: 10px;> i classfa-solid fa-circle-plus mr-2>/i>Adicionar Novo Endereço /button> /div> /div> form idform-address-cep-unico classd-none> div classcontent-cep-unico> h5 classmy-3 mx-4 text-center fw-700>Cadastrar endereço/h5> hr classdivider-c mx-4> div classrow m-0 no-gutters px-3 pb-3> label>strong classtext-uppercase>Buscar endereço e número/strong>/label> div classcol-12 input-group> span classinput-group-append append-left-fix> div classinput-group-text bg-transparent border-right-0 pr-0 styleborder: 1px solid #dee2e6; border-radius: 8px 0 0 8px;> i classfa-solid fa-magnifying-glass>/i> /div> /span> input classform-control border-left-0 border unico_ds_logradouro pb-2 styleheight: 42px; border-radius: 0 8px 8px 0; typetext placeholderEx: Rua Sete de Setembro, 332, Centro idunico_ds_logradouro requiredrequired> div classw-100 text-center loading-place-endereco mt-3 h2 d-none>i classfa fa-spinner fa-spin fa-1x ml-2>/i>/div> /div> div classcol-12 mt-3 text-center ng-ifis_mobile> button classbtn btn-success btn-usar-localizacao-atual typebutton>i classfa-solid fa-location-crosshairs mr-2>/i>Usar minha localização/button> p classalert alert-danger msg-localizacao-atual w-100 mt-3 font-16 d-none>Mensagem para quando não tiver permissão/p> /div> p classmt-2 mb-1 text-muted>strong>Dica: /strong>Busque o endereço já com o número junto para obter um resultado mais preciso./p> /div> /div> div classd-none content-cep-unico content-complete-address> h5 classmy-3 mx-4 text-center fw-700>Complete o seu endereço:/h5> hr classdivider-c mx-4> div classrow m-0 no-gutters px-3> div classcol-12 pb-2> div classrow m-0 no-gutters align-items-center> div classcol> p classmy-0 info-rua-cep-unico font-20 fw-700 opacity-75>/p> p classmy-0 info-bairro-cep-unico font-16 text-muted>/p> p classmy-0 info-cep-unico font-16 text-muted>/p> /div> div classcol-auto pl-3> button classbtn btn-sm btn-rounded btn-danger box-return-to-autocomplete typebutton>Alterar/button> /div> /div> div> input typehidden classunico_cep> input typehidden classunico_uf> input typehidden classunico_cidade> input typehidden classunico_bairro> input typehidden classunico_rua> input typehidden classunico_latitude> input typehidden classunico_longitude> /div> /div> div classcol-12 pb-2 box-insert-cep d-none> label classmt-2>CEP:/label> input classform-control mask_nr_cep info-cep-unico-input styleheight: 42px; typetext nameinputnr_cep placeholder00000-000 requiredrequired maxlength9> /div> div classcol-12 pb-2 box-insert-bairro d-none> label classmt-2>Bairro:/label> input classform-control info-bairro-cep-unico-input styleheight: 42px; typetext nameinputds_bairro placeholderEx: Centro requiredrequired maxlength100> /div> div classcol-12 pb-2> label classmt-2>Número:/label> input classform-control unico_nr_logradouro styleheight: 42px; typetext placeholderEx: 123 maxlength20> /div> div classcol-12 pb-3> button typebutton classbtn btn-block btn-success mt-3 py-2 px-4 btn-verify-endereco-unico>Continuar/button> /div> /div> /div> div classd-none content-map-endereco> h5 classmy-3 mx-4 text-center fw-700>Confirma sua localização:/h5> hr classdivider-c mx-4> div classrow m-0 no-gutters px-3> div classcol-12> div idmap_center_endereco classinvisible>/div> p classmt-2 mb-4 font-13 text-center text-muted>Marque no mapa onde você encontrará o entregador.br>Ex: Portão ou entrada do condomínio./p> /div> div classcol-12 pb-3> div classrow m-0 no-gutters> div classcol-auto pr-3> button typebutton classbtn btn-block btn-secondary py-2 px-4 btn-return-modal-address>Voltar/button> /div> div classcol> button typebutton classbtn btn-block btn-success py-2 px-4 btn-confirm-verify-endereco>Confirmar Localização/button> /div> /div> /div> /div> /div> div classrow> div classcol-12> div classmsg alert-danger p-3 d-none mb-2 mx-2 stylepadding: .75rem 1rem !important;border-radius: 10px;>/div> /div> /div> /form> form idform-edit-address data-id_end0> h5 classmy-3 mx-4 text-center fw-700>Complete o seu endereço:/h5> hr classdivider-c mx-4> div classinfo-endereco-cep d-none> div classrow m-0 no-gutters px-3> div classcol-12 form-group> label>Apelido/label> input classform-control styleheight: 42px; typetext nameinputds_apelido_endereco placeholderEx: Minha casa requiredrequired maxlength100> /div> div classcol-12 pr-2 form-group> label>Endereço/label> input classform-control ds_logradouro styleheight: 42px; typetext placeholderEndereço requiredrequired> div> input typehidden nameinputtp_logradouro> input typehidden nameinputds_latitude> input typehidden nameinputds_longitude> input typehidden nameinputnr_distancia> input typehidden nameinputid_regiao_entrega_area> input typehidden nameinputds_logradouro requiredrequired> input typehidden nameinputds_cidade_uf requiredrequired> /div> /div> div classcol-6 pr-2 form-group> label>Bairro/label> input classform-control styleheight: 42px; typetext nameinputds_bairro placeholderEx: Centro requiredrequired maxlength100d> /div> div classcol-6 pl-2 form-group> label>CEP/label> input classform-control mask_nr_cep styleheight: 42px; typetext nameinputnr_cep placeholder00000-000 requiredrequired maxlength9> /div> div classcol-4 form-group> label> Número a href# classbtn-edit-nr-logradouro> i classfas fa-edit ml-2>/i> /a> /label> input classform-control styleheight: 42px; typetext nameinputnr_logradouro placeholderEx: 123 requiredrequired maxlength20> /div> div classcol pl-3 form-group> label>Complemento/label> input classform-control styleheight: 42px; typetext nameinputds_complemento placeholderEx: Bloco 1, AP 321 maxlength200> /div> div classcol-12 form-group> label>Referência/label> textarea classform-control ds_obs maxlength200 rows2 nameinputds_obs placeholderEx: Ao lado da Mercearia do Chico>/textarea> /div> /div> div classrow> div classcol-12> div classmsg alert-danger p-3 d-none mb-2 mx-2 stylepadding: .75rem 1rem !important;border-radius: 10px;>/div> /div> /div> /div> /form> /div> div classmodal-footer d-none> div classrow m-0 no-gutters w-100> div classcol-12> div classmsg>/div> /div> div classcol-auto pr-3> button typebutton classbtn btn-block btn-secondary btn-return-search-cep py-2 px-4>Voltar/button> /div> div classcol> button typebutton classbtn btn-block btn-success btn-save-endereco py-2>Confirmar/button> /div> /div> /div> /div> /div>/div> style> .check-disabled { opacity: 0.5; pointer-events: none; background: #dddddd !important; border: 1px solid #999; }/style>div idmodal-produto-wrap classmodal-wrap ng-controllerModalProdutoCtrl> div idmodal-produto classmodal fade tabindex-1 roledialog aria-labelledbymodal produto aria-hiddentrue> div classmodal-dialog modal-dialog-centered modal-lg> div classmodal-content> div classpseudo-header-mobile d-lg-none>/div> button typebutton classclose d-none d-lg-block data-dismissmodal aria-labelClose> span aria-hiddentrue>×/span> /button> div classrow m-0 overflow-hidden> div classcol-5 p-0 modal-grey d-none d-md-block> img ng-src% produto_img % ng-ifproduto_img ! > img classno-image-product d-none d-md-block ng-src../assets/common/images/default/produto_sem_foto.svg ng-ifproduto_img > div classpy-3 pl-3 h-auto> h2 classmb-1 font-22>% produto_title %/h2> p classmb-5 font-14 pr-3 stylewhite-space: pre-line;word-break: break-word;word-wrap: break-word;max-height: 290px;overflow-y: auto;>% produto_text %/p> div ng-ifproduto.classificacoes.length > 0> span ng-repeatclassificacao in produto.classificacoes> span classbadge badge-secondary ng-ifclassificacao Vegetariano>i classfa-solid fa-leaf mr-1>/i>% classificacao %/span> span classbadge badge-secondary ng-ifclassificacao Vegano>i classfa-solid fa-feather-pointed mr-1>/i>% classificacao %/span> span classbadge badge-secondary ng-ifclassificacao Orgânico>i classfa-solid fa-seedling mr-1>/i>% classificacao %/span> span classbadge badge-secondary ng-ifclassificacao Sem açúcar>i classfa-solid fa-cubes-stacked mr-1>/i>% classificacao %/span> span classbadge badge-secondary ng-ifclassificacao Zero lactose>i classfa-solid fa-cow mr-1>/i>% classificacao %/span> span classbadge badge-secondary ng-ifclassificacao Sem glúten>i classfa-solid fa-wheat-awn mr-1>/i>% classificacao %/span> span classbadge badge-secondary ng-ifclassificacao Bebida gelada>i classfa-solid fa-snowflake mr-1>/i>% classificacao %/span> span classbadge badge-secondary ng-ifclassificacao Bebida alcoólica>i classfa-solid fa-martini-glass-citrus mr-1>/i>% classificacao %/span> span classbadge badge-secondary ng-ifclassificacao Bebida natural>i classfa-solid fa-lemon mr-1>/i>% classificacao %/span> /span> /div> div ng-ifproduto.classificacoes.length > 0> span classsmall ng-repeatclassificacao in produto.classificacoes> span ng-ifclassificacao.includes(Serve)>% classificacao %/span> span ng-ifclassificacao.includes(Aprox)>(% classificacao %)/span> /span> /div> /div> /div> div classcol-12 p-0 d-md-none> div classp-3 h-auto> div classrow no-gutters m-0> div classcol> h2 classmb-1 font-18>% produto_title %/h2> p classmb-0 font-14 stylewhite-space: pre-line;word-break: break-word;word-wrap: break-word;>% produto_text %/p> div ng-ifproduto.classificacoes.length > 0> span ng-repeatclassificacao in produto.classificacoes> span classbadge badge-secondary ng-ifclassificacao Vegetariano>i classfa-solid fa-leaf mr-1>/i>% classificacao %/span> span classbadge badge-secondary ng-ifclassificacao Vegano>i classfa-solid fa-feather-pointed mr-1>/i>% classificacao %/span> span classbadge badge-secondary ng-ifclassificacao Orgânico>i classfa-solid fa-seedling mr-1>/i>% classificacao %/span> span classbadge badge-secondary ng-ifclassificacao Sem açúcar>i classfa-solid fa-cubes-stacked mr-1>/i>% classificacao %/span> span classbadge badge-secondary ng-ifclassificacao Zero lactose>i classfa-solid fa-cow mr-1>/i>% classificacao %/span> span classbadge badge-secondary ng-ifclassificacao Sem glúten>i classfa-solid fa-wheat-awn mr-1>/i>% classificacao %/span> span classbadge badge-secondary ng-ifclassificacao Bebida gelada>i classfa-solid fa-snowflake mr-1>/i>% classificacao %/span> span classbadge badge-secondary ng-ifclassificacao Bebida alcoólica>i classfa-solid fa-martini-glass-citrus mr-1>/i>% classificacao %/span> span classbadge badge-secondary ng-ifclassificacao Bebida natural>i classfa-solid fa-lemon mr-1>/i>% classificacao %/span> span ng-ifclassificacao.includes(Serve)>% classificacao %/span> span ng-ifclassificacao.includes(Aprox)>% classificacao %/span> /span> /div> /div> div classcol-auto> img classimg-mobile ng-src% produto_img % ng-ifproduto_img ! > /div> /div> /div> /div> div classcol-12 col-md-7 p-0 text-center idcontent-opcoes-item-loading> i classfa fa-spinner fa-spin fa-1x mt-5 stylefont-size: 48px;>/i> /div> !-- div classcol-12 col-md-7 p-0 d-none idcontent-opcoes-item> div classmodal-header d-none d-md-block> h1 classmodal-title text-center mt-0>MONTE DO SEU JEITO/h1> /div> div classmodal-body p-0> h4 classfw-900 font-18 text-muted text-uppercase mt-4 px-3>1º item: Burger 1/h4> a href#> div classrow m-0 no-gutters align-items-center p-3 stylebackground-color: whitesmoke;> div classcol px-3 py-3> h4 classtext-uppercase text-center text-muted mb-1 fw-900 font-18>Escolher item do combo/h4> /div> /div> /a> h4 classfw-900 font-18 text-muted text-uppercase mt-4 px-3>2º item: Burger 2/h4> div classrow m-0 no-gutters p-3 stylebackground-color: whitesmoke;> div classcol-auto> img classimg-combo styleobject-fit: cover;width: 80px !important;height: 80px !important;border-radius: 10px !important; ng-src% produto_img % ng-ifproduto_img ! > /div> div classcol px-3> h4 classtext-uppercase mb-1 fw-900 font-18>Johns Classicsmall classpl-1 fw-700>(Simples)/small>/h4> p classmb-0 font-13>Hambúrguer de 160g, queijo mussarela, bacon crocante, alface americana, molho barbecue e maionese da casa em um pão roseta com parmesão e orégano./p> /div> div classcol-12 px-3 pt-3> h4 classtext-uppercase my-0 fw-900 font-16 text-center>Personalizar/h4> /div> /div> h4 classfw-900 font-18 text-muted text-uppercase mt-4 px-3>3º item: Acompanhamento/h4> div classrow m-0 no-gutters align-items-center p-3 stylebackground-color: whitesmoke;> div classcol-auto> img classimg-combo styleobject-fit: cover;width: 100px !important;height: 100px !important;border-radius: 10px !important; ng-src% produto_img % ng-ifproduto_img ! > /div> div classcol px-3> h4 classtext-uppercase mb-1 fw-900 font-18>Johns Classic (Simples)/h4> p classmb-0>Hambúrguer de 160g, queijo mussarela, bacon crocante, alface americana, molho barbecue e maionese da casa em um pão roseta com parmesão e orégano./p> /div> /div> h4 classfw-900 font-18 text-muted text-uppercase mt-4 px-3>4º item: Bebida/h4> div classrow m-0 no-gutters align-items-center p-3 stylebackground-color: whitesmoke;> div classcol-auto > img classimg-combo styleobject-fit: cover;width: 100px !important;height: 100px !important;border-radius: 10px !important; ng-src% produto_img % ng-ifproduto_img ! > /div> div classcol px-3> h4 classtext-uppercase mb-1 fw-900 font-18>Johns Classic (Simples)/h4> p classmb-0>Hambúrguer de 160g, queijo mussarela, bacon crocante, alface americana, molho barbecue e maionese da casa em um pão roseta com parmesão e orégano./p> /div> /div> /div> div classpseudo-footer-mobile d-lg-none>/div> div classmodal-footer d-none d-lg-block> div classrow m-0 no-gutters align-items-center> div classcol-auto qnt-total pr-3 ng-class!(empresa_aberta) ? d-none : > button typebutton classbtn btn-dark btn-minus ng-clickqtd_prod (qtd_prod 1 ? 1 : qtd_prod - 1); callTotalProduto(qtd_prod)>/button> input typehidden classqtd_total_produto value% qtd_prod %> span classqnt-num>% qtd_prod %/span> button typebutton classbtn btn-dark btn-plus float-right ng-clickqtd_prod qtd_prod + 1; callTotalProduto(qtd_prod)>/button> /div> div classcol ng-if(empresa_aberta)> button typebutton classbtn btn-lg btn-success btn-block btn-include-pedido>Incluir no pedido/button> /div> div classcol ng-if!(empresa_aberta)> button typebutton classbtn btn-lg btn-danger btn-block disabled>Estamos fechados no momento/button> /div> /div> /div> /div> --> div classcol-12 col-md-7 p-0 d-none idcontent-opcoes-item> div classmodal-header d-none d-md-block> h1 classmodal-title text-center mt-0>FAÇA SEU PEDIDO/h1> /div> div classmodal-body p-0> form idmodal-produto-form> div ng-classproduto.in_produto_cupom S ? d-none : (tamanhos.length > 0) ? : d-none> div classcomp-title p-3 mb-1 ng-class(tamanhos.length 1) && (tamanhos0.in_padrao S) ? d-none : > h3 classmb-0>% grupo_tamanho %/h3> p classmb-0>% grupo_tamanho_desc %/p> /div> div classcomp-content py-1 ng-class(tamanhos.length 1) && (tamanhos0.in_padrao S) ? d-none : > div classform-check pt-2 pb-3 ng-repeattamanho in tamanhos> input classform-check-input ng-modelproduto.tamanho typeradio value% tamanho.id_tamanho % idcheck_tam_% tamanho.id_tamanho %> label classlabel-fix mb-0 pr-4> span>% tamanho.ds_tamanho % span classcomp-price ng-if(tamanho.vl_diff_anterior > 0)>% tamanho.vl_exibicao %/span> span classbadge badge-danger bg-red stylepadding: 4px 6px;bottom: 2px;position: relative; margin-left:.15rem;opacity:.75; ng-if(in_desconto_ativo S) && (tamanho.vl_desconto_venda > 0)> - % ((tamanho.vl_desconto_venda * 100) / (tamanho.vl_acrescimo_venda + vl_venda)) 99 ? ((tamanho.vl_desconto_venda * 100) / (tamanho.vl_acrescimo_venda + vl_venda) | number:0) : 99 %%/span> /span> input typeradio nametamanho% tamanho.id_tamanho % classcheck-tamanho-modal ng-modelproduto.tamanho ng-valuetamanho.id_tamanho data-valor_adicional% tamanho.vl_acrescimo_venda | number:2 % data-valor_adicional_anterior% tamanho.vl_acrescimo_anterior | number:2 % data-valor_desconto% in_desconto_ativo S ? (tamanho.vl_desconto_venda | number:2) : 0 % ng-changesetTamanhoProduto(% tamanho.id_tamanho %); ng-checked(tamanho.in_padrao S || tamanhos.length 1) ? true : false> span classradiomark>/span> /label> /div> /div> /div> div classgroup_remocao nf-ifgrupo_remocao.length > 0 ng-repeatremocao in grupo_remocao> div classcomp-title p-3 mb-1> h3 classmb-0>% remocao.ds_grupo_remocao %/h3> p classmb-0>% remocao.ds_texto_remocao %/p> /div> div classcomp-content py-1> div classform-check pt-2 pb-3 ng-repeatrem in remocao.itens_remocao> input classform-check-input typecheckbox ng-valuerem.fk_id_produto_insumo iddefaultCheck_rem% rem.fk_id_produto_insumo % ng-checkedrem.in_ativo ! S ? true : false ng-disabledrem.in_ativo ! S ? true : false> label classlabel-fix mb-0 pr-4> span>Remover % rem.ds_titulo_item %/span> span classbadge bg-red ml-2 p-1 styleposition:absolute;bottom:1px!important; ng-ifrem.in_ativo ! S>Esgotado/span> input typecheckbox ng-clickselection($event,remocao,rem) nameremocao% rem.fk_id_produto_insumo % value1 ng-checkedrem.in_ativo ! S ? true : false ng-disabledrem.in_ativo ! S ? true : false> span classcheckmark check-red>/span> /label> /div> /div> /div> div ng-ifgrupos_ordem.length > 0 ng-repeatordem in grupos_ordem> div classgroup_complemento ng-repeatgrupo in grupos_comp.grupos ng-ifgrupo.id_grupo ordem.id_grupo data-grupo% grupo.id_grupo % data-min-valor-adicional% grupo.vl_min_comp %> div classcomp-title p-3 mb-1> h3 classmb-0>% grupo.ds_grupo_titulo_web %/h3> p classmb-0>% grupo.ds_grupo_texto_web %/p> div classobs-grupo ng-ifgrupo.in_grupo_obrigatorio S && grupo.in_qt_max 1> span> Obrigatório /span> /div> div classobs-grupo ng-ifgrupo.in_permite_multi_selecao S> span ng-ifgrupo.in_qt_min 0> Selecione até % grupo.in_qt_max % itens /span> span ng-ifgrupo.in_qt_min > 0> Selecione entre % grupo.in_qt_min % e % grupo.in_qt_max % itens /span> /div> div classobs-grupo ng-ifgrupo.in_permite_multi_selecao N && (grupo.in_qt_max > 1 || grupo.in_qt_max > grupo.in_qt_min)> span ng-ifgrupo.in_qt_min > 0 && grupo.in_qt_min grupo.complementos.length && grupo.in_qt_min grupo.in_qt_max> Selecione entre % grupo.in_qt_min % e % grupo.in_qt_max > grupo.complementos.length ? grupo.complementos.length : grupo.in_qt_max % itens /span> span ng-ifgrupo.in_qt_min 0> Selecione até % grupo.in_qt_max > grupo.complementos.length ? grupo.complementos.length : grupo.in_qt_max % itens /span> span ng-if(grupo.in_qt_min > grupo.complementos.length) || (grupo.in_qt_min grupo.in_qt_max)> Selecione % (grupo.in_qt_min > grupo.complementos.length) ? grupo.complementos.length : grupo.in_qt_min % itens /span> /div> /div> div classcomp-content py-1 ng-ifgrupo.in_qt_max 1 && grupo.in_grupo_obrigatorio S data-count_checked0 data-grupo_qt_min% (grupo.in_qt_min > grupo.complementos.length) ? grupo.complementos.length : grupo.in_qt_min; % data-grupo_qt_max% grupo.in_qt_max %> div classform-check pt-2 pb-3 ng-repeatcomplemento in grupo.complementos ng-classcomplemento.in_ativo N ? box-disabled : > input classform-check-input typeradio iddefaultRadio% complemento.id_grupo_por_produto %> label classlabel-fix mb-0 pr-4> span>% complemento.ds_titulo_item % span classcomp-price ng-if(complemento.vl_exibicao > 0) && (complemento.in_ativo S)> + R$ % (complemento.vl_exibicao | number:2).replace(.,,) %/span> span classbadge badge-secondary ml-2 p-1 styleposition:absolute;bottom:1px!important; ng-ifcomplemento.in_ativo ! S>Esgotado/span> br ng-ifcomplemento.ds_item_completa> i classtext-muted font-14 fw-400 ng-ifcomplemento.ds_item_completa>% complemento.ds_item_completa %/i> /span> input typeradio classcheck-complemento namecomplemento% complemento.id_grupo % value1 ng-clickcallTotalProduto(qtd_prod); selection($event,radio,complemento) data-valor_adicional% complemento.vl_acrescimo_venda | number:2 % ng-disabledcomplemento.in_ativo ! S ? true : false ng-classcomplemento.in_ativo ! S ? inactive : > span classradiomark ng-classcomplemento.in_ativo ! S ? check-disabled : >/span> /label> /div> /div> div classcomp-content py-1 ng-ifgrupo.in_permite_multi_selecao N && (grupo.in_qt_max > 1 || grupo.in_qt_max > grupo.in_qt_min) data-count_checked0 data-grupo_qt_min% (grupo.in_qt_min > grupo.complementos.length) ? grupo.complementos.length : grupo.in_qt_min; % data-grupo_qt_max% grupo.in_qt_max %> div classform-check pt-2 pb-3 ng-repeatcomplemento in grupo.complementos ng-classcomplemento.in_ativo N ? box-disabled : > input classform-check-input typecheckbox iddefaultCheck% complemento.id_grupo_por_produto % ng-disabledcomplemento.in_ativo ! S ? true : false> label classlabel-fix mb-0 pr-4> span>% complemento.ds_titulo_item % span classcomp-price ng-if(complemento.vl_exibicao > 0) && (complemento.in_ativo S)> + R$ % (complemento.vl_exibicao | number:2).replace(.,,) %/span> span classbadge badge-secondary ml-2 p-1 styleposition:absolute;bottom:1px!important; ng-ifcomplemento.in_ativo ! S>Esgotado/span> br ng-ifcomplemento.ds_item_completa> i classtext-muted font-14 fw-400 ng-ifcomplemento.ds_item_completa>% complemento.ds_item_completa %/i> /span> input classcheck-complemento typecheckbox ng-clickcallTotalProduto(qtd_prod); selection($event,multicomp,complemento) namecomplemento% complemento.id_grupo_por_produto % value1 data-valor_adicional% complemento.vl_acrescimo_venda | number:2 % value% complemento.id_grupo_por_produto % ng-disabledcomplemento.in_ativo ! S ? true : false ng-classcomplemento.in_ativo ! S ? inactive : > span classcheckmark check-green ng-classcomplemento.in_ativo ! S ? check-disabled : >/span> /label> /div> /div> div classcomp-content py-1 content-multi-sele selector-qnt ng-ifgrupo.in_permite_multi_selecao S data-count_checked0 data-grupo_qt_min% grupo.in_qt_min % data-grupo_qt_max% grupo.in_qt_max %> div classform-check pt-2 pb-3 ng-repeatcomplemento in grupo.complementos ng-classcomplemento.in_ativo N ? box-disabled : > div> button typebutton classbtn btn-dark btn-minus ng-modelqtd_ms ng-clickqtd_ms (qtd_ms > 0 ? qtd_ms - 1 : 0); callTotalProduto(qtd_prod); selection($event,multiselecao,complemento, qtd_ms) ng-disabledcomplemento.in_ativo ! S ? true : false ng-classcomplemento.in_ativo ! S ? ms-disabled : >/button> input typehidden classvalue_grupo_ms namecomplemento% complemento.id_grupo_por_produto % ng-valueqtd_ms data-valor_adicional% complemento.vl_acrescimo_venda | number:2 %> span classqnt-num>% qtd_ms %/span> button typebutton classbtn btn-dark btn-plus ng-modelqtd_ms ng-clickqtd_ms (qtd_ms grupo.in_qt_max ? qtd_ms + 1 : grupo.in_qt_max); callTotalProduto(qtd_prod); selection($event,multiselecao,complemento, qtd_ms) ng-disabledcomplemento.in_ativo ! S ? true : false ng-classcomplemento.in_ativo ! S ? ms-disabled : >/button> /div> label classlabel-fix mb-0 pr-4> span>% complemento.ds_titulo_item % span classcomp-price ng-if(complemento.vl_exibicao > 0) && (complemento.in_ativo S)> + R$ % (complemento.vl_exibicao|number:2).replace(.,,) %/span> span classbadge badge-secondary ml-2 p-1 ng-ifcomplemento.in_ativo ! S>Esgotado/span> br ng-ifcomplemento.ds_item_completa> i classtext-muted font-14 fw-400 ng-ifcomplemento.ds_item_completa>% complemento.ds_item_completa %/i> /span> /label> /div> /div> /div> div classgroup_venda_vinculada group_complemento ng-repeatvenda in venda_vinculada ng-if(venda_vinculada.length > 0) && (venda.id_grupo ordem.id_grupo) data-grupo% venda.id_grupo % data-min-valor-adicional% venda.vl_min_item %> div classcomp-title p-3 mb-1 ng-if(venda.itens.length > 0) && (venda.itens ! )> h3 classmb-0>% venda.ds_grupo_titulo_web %/h3> p classmb-0>% venda.ds_grupo_texto_web %/p> div classobs-grupo ng-ifvenda.in_qt_min 0> span>Selecione até % venda.in_qt_max % itens/span> /div> div classobs-grupo ng-ifvenda.in_qt_min > 0 && venda.in_qt_max > venda.in_qt_min> span>Selecione entre % venda.in_qt_min % e % venda.in_qt_max % itens/span> /div> div classobs-grupo ng-if(venda.in_qt_min venda.in_qt_max && venda.in_qt_max > 1)> Selecione % venda.in_qt_min % itens /div> div classobs-grupo ng-ifvenda.in_grupo_obrigatorio S && venda.in_qt_max 1> span>Obrigatório/span> /div> /div> div classcomp-content py-1 content-multi-sele selector-qnt ng-if(venda.in_permite_multi_selecao S) && (venda.itens.length > 0) && (venda.itens ! ) && (venda.in_qt_max ! 1 || venda.in_qt_min ! 1) data-count_checked0 data-grupo_qt_min% venda.in_qt_min % data-grupo_qt_max% venda.in_qt_max %> div classform-check pt-2 pb-2 ng-repeatitem in venda.itens ng-classitem.in_ativo N ? box-disabled : > div> button typebutton classbtn btn-dark btn-minus ng-modelitem.qtd_ms ng-clickitem.qtd_ms (item.qtd_ms > 0 ? item.qtd_ms - 1 : 0); callTotalProduto(qtd_prod); selection($event,venda_vinculada,item, item.qtd_ms) ng-disableditem.in_ativo N ? true : false>/button> input typehidden classvalue_grupo_ms namevendavinc% item.id_produto % ng-valueitem.qtd_ms data-valor_adicional% item.vl_acrescimo_venda | number:2 %> span classqnt-num>% item.qtd_ms %/span> button typebutton classbtn btn-dark btn-plus ng-modelitem.qtd_ms ng-clickitem.qtd_ms (item.qtd_ms venda.in_qt_max ? item.qtd_ms + 1 : venda.in_qt_max); callTotalProduto(qtd_prod); selection($event,venda_vinculada,item, item.qtd_ms) ng-disableditem.in_ativo N ? true : false ng-classitem.in_ativo N ? vv-disabled : (item.in_movimenta_estoque S && item.qt_estoque item.qtd) ? disabled : >/button> /div> label classlabel-fix mb-0 pr-3> div classrow m-0 no-gutters> div classcol> % item.ds_titulo_item %% (item.ds_tamanho_vv && item.ds_tamanho_vv ! Padrão) ? (+item.ds_tamanho_vv+) : % span classcomp-price ng-ifitem.vl_exibicao > 0 && item.in_ativo S> + R$ % (item.vl_exibicao|number:2).replace(.,,) % /span> span classbadge badge-secondary ml-2 p-1 ng-ifitem.in_ativo N>Esgotado/span> br ng-ifitem.ds_item_completa> i classtext-muted font-14 fw-400 ds_item_completa_vv_modal ng-ifitem.ds_item_completa>% item.ds_item_completa %/i> span classcolor-blue fw-700 show_ds_item_completa_vv_modal d-none ng-ifitem.ds_item_completa>Ver mais.../span> /div> div classcol-auto pl-2 ng-ifitem.im_item> img classimg-comp m-0 ng-srchttps://files.deliveryturbo.com.br/% item.im_item % ng-ifitem.im_item> /div> /div> /label> /div> /div> div classcomp-content py-1 ng-if(venda.in_permite_multi_selecao S) && (venda.itens.length > 0) && (venda.itens ! ) && (venda.in_qt_max 1 && venda.in_qt_min 1 && venda.in_grupo_obrigatorio S) data-count_checked0 data-grupo_qt_min% venda.in_qt_min % data-grupo_qt_max% venda.in_qt_max %> div classform-check pt-2 pb-2 ng-repeatitem in venda.itens ng-classitem.in_ativo N ? box-disabled : > input classform-check-input typeradio iddefaultRadio% item.id_grupo_por_produto %> label classlabel-fix mb-0 pr-4> div classrow m-0 no-gutters> div classcol> % item.ds_titulo_item %% (item.ds_tamanho_vv && item.ds_tamanho_vv ! Padrão) ? (+item.ds_tamanho_vv+) : % span classcomp-price ng-if(item.vl_exibicao > 0) && (item.in_ativo S)> + R$ % (item.vl_exibicao | number:2).replace(.,,) %/span> input typeradio classcheck-complemento namevendavinc% venda.id_grupo % value1 ng-clickcallTotalProduto(qtd_prod); selection($event,venda_vinculada_radio,item) data-valor_adicional% item.vl_acrescimo_venda | number:2 % ng-disableditem.in_ativo ! S ? true : false ng-classitem.in_ativo ! S ? inactive : > span classradiomark ng-classitem.in_ativo ! S ? check-disabled : stylemargin-left: -37px !important;>/span> span classbadge badge-secondary ml-2 p-1 ng-ifitem.in_ativo ! S>Esgotado/span> br ng-ifitem.ds_item_completa> i classtext-muted font-14 fw-400 ds_item_completa_vv_modal ng-ifitem.ds_item_completa>% item.ds_item_completa %/i> span classcolor-blue fw-700 show_ds_item_completa_vv_modal d-none ng-ifitem.ds_item_completa>Ver mais.../span> /div> div classcol-auto pl-2 ng-ifitem.im_item> img classimg-comp m-0 ng-srchttps://files.deliveryturbo.com.br/% item.im_item % ng-ifitem.im_item> /div> /div> /label> /div> /div> /div> /div> div classinput-obs-prod d-none> div classcomp-title p-3 mb-1> h3 classmb-0>Observação/h3> p classmb-0>Utilize somente para observações./p> /div> div classcomp-content pl-3 pr-3 pt-2> div classform-group> textarea classform-control obs-produto-modal text-muted rows1 placeholderObservação para o produto maxlength140 styleborder: 0; border-bottom: 1px solid #ddd; border-radius: 0; outline: 0 !important; box-shadow: none !important;>/textarea> /div> /div> /div> /form> /div> div classpseudo-footer-mobile d-lg-none>/div> div classmodal-footer d-none d-lg-block> div classrow m-0 no-gutters align-items-center> div classcol-auto qnt-total pr-3 ng-class!(empresa_aberta) ? d-none : > button typebutton classbtn btn-dark btn-minus ng-clickqtd_prod (qtd_prod 1 ? 1 : qtd_prod - 1); callTotalProduto(qtd_prod)>/button> input typehidden classqtd_total_produto value% qtd_prod %> span classqnt-num>% qtd_prod %/span> button typebutton classbtn btn-dark btn-plus float-right ng-clickqtd_prod qtd_prod + 1; callTotalProduto(qtd_prod) ng-class(produto.in_movimenta_estoque S && produto.qt_estoque > 0 && produto.qt_estoque qtd_prod) ? disabled : >/button> /div> div classcol ng-if(empresa_aberta)> button typebutton classbtn btn-lg btn-success pr-1 btn-block btn-include-pedido> div classrow m-0 no-gutters align-items-center justify-content-between> div classcol-auto pl-2>Adicionar ao pedido/div> div classcol-auto price-badge> span classd-block price-value font-15 fw-700 ng-binding ng-ifproduto_value>% produto_value %/span> /div> /div> /button> /div> div classcol ng-if!(empresa_aberta)> button typebutton classbtn btn-lg btn-danger btn-block disabled>Estamos fechados no momento/button> /div> /div> /div> /div> /div> /div> /div> /div> div classmodal-action-buttons d-lg-none styledisplay: none> div classrow m-0 no-gutters align-items-center> div classcol-auto qnt-total pr-3 ng-class!(empresa_aberta) ? d-none : > button typebutton classbtn btn-dark btn-minus ng-clickqtd_prod (qtd_prod 1 ? 1 : qtd_prod - 1); callTotalProduto(qtd_prod)>/button> input typehidden classqtd_total_produto value% qtd_prod %> span classqnt-num>% qtd_prod %/span> button typebutton classbtn btn-dark btn-plus float-right ng-clickqtd_prod qtd_prod + 1; callTotalProduto(qtd_prod)>/button> /div> div classcol ng-if(empresa_aberta)> button typebutton classbtn btn-lg btn-success btn-block pr-0 btn-include-pedido disabled> div classrow m-0 no-gutters align-items-center justify-content-between> div classcol-auto pl-2>Adicionar/div> div classcol-auto price-badge> span classd-block price-value font-15 fw-700 ng-binding ng-ifproduto_value>% produto_value %/span> /div> /div> /button> /div> div classcol ng-if!(empresa_aberta)> button typebutton classbtn btn-lg btn-danger btn-block disabled>Estamos fechados no momento/button> /div> /div> /div>/div> div idmodal-presencial-signup classmodal h100dvh fade tabindex-1 roledialog aria-labelledbymodal signup presencial aria-hiddentrue stylepointer-events: none> div classmodal-dialog modal-dialog-centered modal-md h100dvh> div classmodal-content> div classpseudo-header-mobile d-lg-none>/div> div classmodal-body p-0 p-lg-0 h-100> div classrow no-gutters p-4 m-0> div classcol> form idform-modal-signup-presencial data-parsley-namespacedata-parsley- data-parsley-validate novalidate> h5 classmy-3 mx-4 text-center fw-700>Confirme sua identidade/h5> p classtext-center mb-2 mt-2>Algumas informações são necessárias para a identificação do seu pedido./p> div classform-group fb-input-email> label>Nome:/label> input typetext classform-control ds_nome placeholderNome required> /div> div classform-group> label>Telefone:/label> input typetext classform-control mask_fone nr_fone placeholder(99) 99999-9999 required> /div> button typebutton classbtn btn-success btn-lg btn-block mt-4 btn-cliente-presencial>Confirmar/button> div classtext-center w-100 mt-2> a href classbtn-cancelar-modo-presencial> Não quero continuar i classfa-solid fa-close ml-1 data-toggletooltip data-placementtop titleCancelar Consumo Local>/i> /a> /div> /form> /div> /div> /div> /div> /div>/div>div idmodal-presencial-qrcode-confirm classmodal h100dvh fade data-validacao tabindex-1 roledialog aria-labelledbymodal qrcode presencial aria-hiddentrue> div classmodal-dialog modal-dialog-centered modal-md h100dvh> div classmodal-content> div classpseudo-header-mobile d-lg-none>/div> button typebutton classclose d-none d-lg-block data-dismissmodal aria-labelClose> span aria-hiddentrue>×/span> /button> div classmodal-body p-0 p-lg-0 h-100> div classrow no-gutters m-0> div classcol> form class> div classheader-form-qrcode-scan d-none pt-4> h5 classmt-5 mb-1 mx-4 text-center font-22 fw-900>Confirme sua span classtext-tp-presencial>/span>/h5> p classmy-1 mx-5 text-center p-text-qrcode-header data-tpcomanda>Escaneie o QR Code da sua comanda para selecioná-la./p> p classmy-1 mx-5 text-center p-text-qrcode-header data-tpmesa>Escaneie o QR Code presente na mesa onde você está para selecioná-la./p> /div> div idqr-reader-modal stylewidth:100%; classborder-0>/div> div classscan-presencial-loading text-center d-none> p classtext-center mb-2 mt-2>Confirmando informações, aguarde.../p> i classfa fa-spinner fa-spin fa-1x ml-2 mt-3 stylefont-size: 30px;>/i> /div> div classscan-presencial-not-permission text-center d-none p-2> div> h4 classtext-center mb-2 mt-2>Permissão da câmera recusada./h4> p classtext-center mb-2 mt-2>Para enviar seu pedido, precisamos usar sua câmera para ler o QR Code./p> button classbtn btn-lg btn-success>Permitir acesso/button> p classtext-center mb-2 mt-2>Se você não deseja permitir o uso da câmera, você precisará realizar o pedido de outra forma./p> a href classbtn-cancelar-modo-presencial> Recusar e cancelar pedido /a> /div> /div> div classscan-presencial-error text-center d-none p-2> div> h4 classtext-center mb-2 mt-2>Erro ao iniciar a câmera./h4> p classtext-center mb-2 mt-2>Recarregue a página e tente novamente./p> div classtext-center w-100 mt-2> a href classbtn mt-2 btn-dark color-white btn-cancelar-modo-presencial> Não quero continuar i classfa-solid fa-close ml-1 data-toggletooltip data-placementtop titleCancelar Consumo Local>/i> /a> /div> /div> /div> div classscan-presencial-await-permission text-center p-2> div> h4 classtext-center mb-2 mt-2>Aguardando permissão./h4> p classtext-center mb-2 mt-2>Permita o uso da câmera para conseguir ler o QR Code e finalizar o seu pedido./p> /div> /div> button typebutton classbtn-trocar-camera-qrcode p-0 d-none> i classfa fa-rotate fa-lg>/i> /button> /form> /div> /div> /div> /div> /div>/div> !-- Modal -->div classmodal fade idmodalCashback tabindex-1 aria-labelledbyexampleModalLabel aria-hiddentrue> div classmodal-dialog modal-dialog-centered> div classmodal-content> div classpseudo-header-mobile d-lg-none>/div> div classmodal-header> h5 classmodal-title>Programa de Cashback/h5> button typebutton classclose data-dismissmodal aria-labelClose> span aria-hiddentrue>×/span> /button> /div> div classmodal-body ng-ifcashback.in_ativo S> h5 classfw-700>Regras:/h5> p classmb-1 ng-ifcashback.vl_percentual > 0>Você receberá strong>% cashback.vl_percentual %%/strong> de volta em compras realizadas na strong>Imperial Salgados/strong>./p> p classmb-1 ng-ifcashback.nr_meses_validade > 0>O crédito recebido terá validade de strong>% cashback.nr_meses_validade % meses/strong>./p> p classmb-1 ng-ifcashback.in_origem_site S && cashback.in_origem_manual ! S> O cashback será oferecido apenas em pedidos realizados através do strong>cardápio digital./strong> /p> p classmb-1 ng-ifcashback.in_origem_site ! S && cashback.in_origem_manual S> O cashback será oferecido apenas em pedidos realizados strong>manualmente na loja./strong> /p> p classmb-1 ng-ifcashback.in_delivery S && cashback.in_retirada ! S> O cashback será válido apenas em pedidos para strong>entrega./strong> /p> p classmb-1 ng-ifcashback.in_delivery ! S && cashback.in_retirada S> O cashback será válido apenas em pedidos para strong>retirada na loja./strong> /p> p classmb-1>O valor do cashback será creditado em até 24 horas após a finalização do pedido./p> p classmb-1 ng-ifcashback.in_pagar_taxa_entrega ! S>O valor de cashback não poderá ser utilizado para pagamento da taxa de entrega./p> p classmb-1 ng-ifcashback.in_permite_cupom_desconto ! S>Você não poderá utilizar cupons de desconto no mesmo pedido em que realizar o resgate do cashback./p> /div> div classmodal-body ng-ifcashback.in_ativo N || !cashback.in_ativo> h5 classfw-700>Indisponível no momento :(/h5> /div> /div> /div>/div> div idmodal-agrupador-wrap classd-none modal-wrap ng-controllerModalAgrupadorCtrl> div idmodal-bebida classmodal fade tabindex-1 roledialog aria-labelledbymodal bebida aria-hiddentrue> div classmodal-dialog modal-dialog-centered modal-lg> div classmodal-content> div classpseudo-header-mobile d-lg-none>/div> button typebutton classclose d-none d-lg-block data-dismissmodal aria-labelClose> span aria-hiddentrue>×/span> /button> div classrow m-0 overflow-hidden> div classcol-12 p-0 idcontent-opcoes-item> div classmodal-header d-none d-lg-block> h1 classmodal-title text-center mt-0>ESCOLHA A SUA BEBIDA/h1> /div> div classmodal-body p-10px> div classrow m-0 no-gutters> div classcard-categoria-itens col-6 col-md-4 p-10px ng-repeatproduto in modal.categoria0.produtos> div classbebida card-categoria data-id% produto.id_produto % ng-ifproduto.in_ativo S> label classw-100 mb-0> input typeradio classcheck-produto-categoria nameproduto-radio ng-valueproduto.id_produto ng-clicksetProdutoCategoria(produto.id_produto)> span classselected>/span> div classbox-white h-100> div classrow p-0 m-0 h-100> div classcol-12 p-0 ng-ifproduto.im_item.length > 0> img srchttps://files.deliveryturbo.com.br/% produto.im_item % alt> /div> div classcol-auto p-0 ng-if(produto.in_desconto_ativo S) && (produto.vl_desconto > 0)> div classribbon-horizontal p-percent-desc> div classribbon ribbon-red>span>span classvl-percent-desc> -% produto.vl_percentual_desconto %%/span>/span>/div> /div> /div> div classcol-12 p-0> h2 classpl-10px pt-10px mb-0>% produto.ds_titulo_item%/h2> div classrow m-0 no-gutters align-items-end> p classdesc col pl-10px pb-10px mb-0>% produto.ds_item_completa %/p> p classprice col-auto pr-10px pb-10px mb-0 ng-if(produto.in_desconto_ativo N) || (produto.vl_desconto 0)>R$ % (produto.vl_venda|number:2).replace(.,,) %/p> p classprice col-auto pr-10px pb-10px mb-0 ng-if(produto.in_desconto_ativo S) && (produto.vl_desconto > 0)>DE R$ strike stylecolor: #999>% (produto.vl_venda|number:2).replace(.,,) %/strike> POR R$ % ((produto.vl_venda - produto.vl_desconto)|number:2).replace(.,,) %/p> /div> /div> /div> /div> /label> /div> div classbebida disabled-product ng-ifproduto.in_ativo ! S> div classbox-white h-100> div classrow p-0 m-0 h-100> div classcol-12 p-0 ng-ifproduto.im_item.length > 0> img srchttps://files.deliveryturbo.com.br/% produto.im_item % alt> /div> div classcol-12 p-0> h2 classpl-10px pt-10px mb-0>% produto.ds_titulo_item%/h2> div classrow m-0 no-gutters align-items-end> span classbadge badge-secondary m-2>ESGOTADO/span> /div> /div> /div> /div> /div> /div> /div> /div> div classpseudo-footer-mobile d-lg-none>/div> div classmodal-footer d-none d-lg-block> div classrow m-0> div classcol-auto mr-0 pr-2 pl-0 qnt-total ng-class!(empresa_aberta) ? d-none : > button typebutton classbtn btn-dark btn-minus ng-clickmodal.qtd (modal.qtd 1 ? 1 : modal.qtd - 1); callTotalProduto(modal.qtd)>/button> input typehidden classqtd_total_produto value% modal.qtd %> span classqnt-num>% modal.qtd %/span> button typebutton classbtn btn-dark btn-plus float-right ng-clickmodal.qtd modal.qtd + 1; callTotalProduto(modal.qtd) ng-class(produto.in_movimenta_estoque S && produto.qt_estoque > 0 && produto.qt_estoque modal.qtd) ? disabled : >/button> /div> div classcol ml-0 pr-0 pl-2 ng-if(empresa_aberta)> button typebutton classbtn btn-lg btn-success btn-block btn-include-produto-pedido ng-disabled((produto.id ! ) && (produto.id > 0)) ? false : true;>Incluir no Pedido/button> /div> div classcol ml-0 px-0 ng-if!(empresa_aberta)> button typebutton classbtn btn-lg btn-danger btn-block disabled>Estamos fechados no momento/button> /div> /div> /div> /div> /div> /div> /div> /div> div classmodal-action-buttons d-lg-none styledisplay:none;> div classrow m-0> div classcol-auto mr-0 pr-2 pl-0 qnt-total ng-class!(empresa_aberta) ? d-none : > button typebutton classbtn btn-dark btn-minus ng-clickmodal.qtd (modal.qtd 1 ? 1 : modal.qtd - 1); callTotalProduto(modal.qtd)>/button> input typehidden classqtd_total_produto value% modal.qtd %> span classqnt-num>% modal.qtd %/span> button typebutton classbtn btn-dark btn-plus float-right ng-clickmodal.qtd modal.qtd + 1; callTotalProduto(modal.qtd) ng-class(produto.in_movimenta_estoque S && produto.qt_estoque > 0 && produto.qt_estoque modal.qtd) ? disabled : >/button> /div> div classcol ml-0 pr-0 pl-2 ng-if(empresa_aberta)> button typebutton classbtn btn-lg btn-success btn-block btn-include-produto-pedido ng-disabled((produto.id ! ) && (produto.id > 0)) ? false : true;>Incluir no Pedido/button> /div> div classcol ml-0 px-0 ng-if!(empresa_aberta)> button typebutton classbtn btn-lg btn-danger btn-block disabled>Estamos fechados no momento/button> /div> /div> /div>/div> !-- Modal -->div classmodal fade idmodalSugestiva tabindex-1 roledialog aria-labelledbymodal signup aria-hiddentrue> div classmodal-dialog modal-dialog-centered> div classmodal-content> div classpseudo-header-mobile d-lg-none>/div> button typebutton classclose d-none d-lg-block data-dismissmodal aria-labelClose> span aria-hiddentrue>×/span> /button> div classmodal-body modal-sugestiva pb-2 stylemax-height: calc(100vh - 56px - 81px); overflow-y: auto;> h4 classfw-700 mb-1 text-center>% venda_sugestiva.titulo %/h4> p classtext-center>% venda_sugestiva.descricao %/p> div classbox-white product ripple h-100 border mb-2 stylemin-height: 80px; ng-ifvenda_sugestiva.produtos.length > 0 ng-repeatproduto in venda_sugestiva.produtos> a href# classproduto-sugerido data-id_p% produto.id_produto %> div classrow p-0 m-0 h-100 stylemin-height: 80px;> div classcol p-0> h2 classpl-10px pr-10px pt-10px title-produto>% produto.ds_titulo_item %/h2> p classpl-10px pr-10px text-produto ng-ifproduto.ds_item_completa>% produto.ds_item_completa %/p> h4 classpl-10px pr-10px pb-10px mb-0> span classtipo_valor_venda> A PARTIR DE: /span> small classpl-1 vl-venda-exibicao>R$ % (produto.vl_venda).toFixed(2).replace(.,,) %/small> /h4> /div> div classcol-auto p-0 ng-ifproduto.im_item> img classimg-produto srchttps://files.deliveryturbo.com.br/% produto.im_item %> /div> div classcol-auto p-0 ng-ifproduto.in_desconto_ativo S && produto.vl_percentual_desconto > 0> div classribbon-horizontal p-percent-desc> div classribbon ribbon-red>span> % produto.vl_tamanhos.count_tamanhos > 1 ? até : % span classvl-percent-desc>-% produto.vl_percentual_desconto %%/span>/span>/div> /div> /div> /div> /a> /div> /div> div classmodal-footer> button typebutton classbtn btn-lg btn-block btn-secondary btn-cancel-venda-sugestiva>Não, obrigado.../button> /div> /div> /div>/div>script> /* Váriaveis Globais utilizadas no Site */ /* Utilizado para indicar se o botao de finaização do pedido foi clicado para redirecionar após o login */ var finish_changed false; /* Dados armazenados pelo login com o Facebook no site */ var dados_facebook null; var fb_go_checkout false;/script>script src../assets/common/lib/jquery/jquery.min.js typetext/javascript>/script>script src../assets/common/lib/jquery.maskedinput/jquery.mask.min.js typetext/javascript>/script>!-- angularJS -->script src../assets/common/lib/angularjs/angular.min.js typetext/javascript>/script>script defer src../assets/common/lib/bootstrap/dist/js/bootstrap.bundle.min.js typetext/javascript>/script>script defer src../assets/common/lib/parsley/parsley.min.js typetext/javascript>/script>script defer src../assets/common/lib/parsley/parsley.cpf-validator.js typetext/javascript>/script>script defer src../assets/common/lib/parsley/i18n/pt-br.js typetext/javascript>/script>script defer src../assets/common/lib/select2/js/select2.min.js typetext/javascript>/script>script defer src../assets/common/lib/select2/js/i18n/pt-BR.js typetext/javascript>/script>script defer src../assets/common/lib/select2/js/select2.full.min.js typetext/javascript>/script>script defer src../assets/common/lib/jquery.gritter/js/jquery.gritter.min.js typetext/javascript>/script>script defer srchttps://imperialsalgadosc.com.br/loja/assets/theme/default/custom/lib/js/main.js?v0.105.0 typetext/javascript>/script>!-- VueJS -->!-- Datepicker -->script defer src../assets/common/lib/swiper/js/swiper-bundle.min.js typetext/javascript>/script>script typetext/javascript> var app angular.module(app, ); angular.module(app).config(function($interpolateProvider) { $interpolateProvider.startSymbol(%); $interpolateProvider.endSymbol(%); });/script>script typetext/javascript> jQuery(document).ready(function($) { $(.header_fix_min_nav a).click(function(){ if ($(#container_fix_min_nav).hasClass(menu-on)){ $(#container_fix_min_nav).removeClass(menu-on) } else { $(#container_fix_min_nav).addClass(menu-on) } }); $(.min_menu_nav_pseudo_background).click(function(event) { $(#container_fix_min_nav).removeClass(menu-on); }); if ($(.header_fix_home).length > 0) { $(window).scroll(function(event) { var header $(.header_fix_home); var sticky $(.bottom_header_home)0.offsetTop; if (window.pageYOffset > sticky) { header.addClass(sticky); } else { header.removeClass(sticky); } }); } /* Utilizado para o calendário no modal nos campos data */ /* Mask monetária */ $(.mask_money).mask(#.##0,00, { reverse: true }); /* Mask CEP*/ window.makeMaskCEP function(){ $(.mask_nr_cep).mask(99999-999); }; makeMaskCEP(); /* Mask Fone */ $(input.mask_fone).attr(minlength, 14); $(input.mask_fone).attr(data-parsley-error-message, Este campo parece estar inválido.); $(input.mask_fone) .mask((99) 9999-99999) .focusout(function (event) { var target, phone, element; target (event.currentTarget) ? event.currentTarget : event.srcElement; phone target.value.replace(/\D/g, ); element $(target); element.unmask(); if(phone.length > 10) { element.mask((99) 99999-9999); } else { element.mask((99) 9999-99999); } }); /* Validar fone */ window.validateFone function(fone) { var is_valid false; var digit9 false; var ddds 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 24, 27, 28, 31, 32, 33, 34, 35, 37, 38, 41, 42, 43, 44, 45, 46, 47, 48, 49, 51, 53, 54, 55, 61, 62, 63, 64, 65, 66, 67, 68, 69, 71, 73, 74, 75, 77, 79, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99; var invalidos 12345678, 99999999, 88888888, 77777777, 66666666, 55555555, 44444444, 33333333, 22222222, 11111111, 00000000; if (fone ! null && fone ! ){ var fone (fone).replace(/^a-z0-9/gi,); var ddd (fone).substr(0, 2); if (ddds.includes(ddd)) { var ret_fone (fone).substring(2); var first_digit ret_fone.substr(0,1); if (!invalidos.includes(ret_fone)) { if (ret_fone.length 9) { if (first_digit 4) { is_valid true; } else { digit9 true; } } else if (ret_fone.length 9) { if (first_digit 9) { is_valid true; } else { digit9 true; } } } } } return { is_valid : is_valid, digit9: digit9 }; } /* Mask para cartão de credito */ $(.mask_number_card).mask(9999 9999 9999 9999); $(.mask_exp_card).mask(99/99); $(.mask_cvv_card).mask(9999); /* Validador CPF CPNJ */ /* Função obtida em: https://irias.com.br/blog/como-validar-cpf-cnpj-em-node-js/ (Anderson Irias contato@irias.com.br>)*/ window.validaCpfCnpj function(val) { var cpfcnpj val.trim(); cpfcnpj cpfcnpj.replace(/\./g, ); cpfcnpj cpfcnpj.replace(-, ); cpfcnpj cpfcnpj.replace(/, ); cpfcnpj cpfcnpj.split(); if (cpfcnpj.length 11) { var cpf cpfcnpj; var v1 0; var v2 0; var aux false; for (var i 1; cpf.length > i; i++) { if (cpfi - 1 ! cpfi) { aux true; } } if (aux false) { return false; } for (var i 0, p 10; (cpf.length - 2) > i; i++, p--) { v1 + cpfi * p; } v1 ((v1 * 10) % 11); if (v1 10) { v1 0; } if (v1 ! cpf9) { return false; } for (var i 0, p 11; (cpf.length - 1) > i; i++, p--) { v2 + cpfi * p; } v2 ((v2 * 10) % 11); if (v2 10) { v2 0; } if (v2 ! cpf10) { return false; } else { return true; } } else if (cpfcnpj.length 14) { var cnpj cpfcnpj; var v1 0; var v2 0; var aux false; for (var i 1; cnpj.length > i; i++) { if (cnpji - 1 ! cnpji) { aux true; } } if (aux false) { return false; } for (var i 0, p1 5, p2 13; (cnpj.length - 2) > i; i++, p1--, p2--) { if (p1 > 2) { v1 + cnpji * p1; } else { v1 + cnpji * p2; } } v1 (v1 % 11); if (v1 2) { v1 0; } else { v1 (11 - v1); } if (v1 ! cnpj12) { return false; } for (var i 0, p1 6, p2 14; (cnpj.length - 1) > i; i++, p1--, p2--) { if (p1 > 2) { v2 + cnpji * p1; } else { v2 + cnpji * p2; } } v2 (v2 % 11); if (v2 2) { v2 0; } else { v2 (11 - v2); } if (v2 ! cnpj13) { return false; } else { return true; } } else { return false; } } /* Na alteração do valor, valida se é CPF ou CNPJ */ $(document).delegate(.nr_cpf, change blur, function(e){ var cpfcnpj $(this).val(); cpfcnpj cpfcnpj.trim(); cpfcnpj cpfcnpj.replace(/\./g, ); cpfcnpj cpfcnpj.replace(-, ); cpfcnpj cpfcnpj.replace(/, ); var tamanho cpfcnpj.length; if (tamanho > 0) { var res window.validaCpfCnpj(cpfcnpj); if (!res) { $(.gritter-item-wrapper.warning-cpfcnpj).remove(); var text_alert CPF informado é inválido.; if (cpfcnpj.length > 11) { text_alert CNPJ informado é inválido.; } window.alertMessage(warning warning-cpfcnpj, Atenção, text_alert); $(this).addClass(bg-red); } else { $(this).removeClass(bg-red); } } }); /* Mask CNPJ*/ //$(.nr_cpf).mask(999.999.999-99); /* Validação da mask do CPF/CNPJ no keydown do campo */ $(document).on(keydown, data-mask-for-cpf-cnpj, function (e) { var digit ; if (e.key) { digit e.key.replace(/\D/g, ); } var value $(this).val().replace(/\D/g, ); var size value.concat(digit).length; $(this).mask((size 11) ? 000.000.000-00 : 00.000.000/0000-00); }); /* Remover fundo vermelhor do input */ $(document).delegate(.nr_cpf, keydown, function () { $(this).removeClass(bg-red); }); /* Caso tenha a ação de colar no campo, desfaz o mask */ $(document).delegate(.nr_cpf, paste, function () { $(this).val(); $(this).unmask(); setTimeout(() > { /* Forçar foco no final do texto */ var input $(this); this_val input.val(); if (this_val) { input.focus().val().blur().focus().val(this_val); } input.trigger(keydown); }, 100); }); /* Mask Date */ $(.mask_date).mask(99/99/9999); /* Realiza a validação se é um Base 64 */ window.isEncode function(str) { if (str || str.trim() ){ return false; } try { return btoa(atob(str)) str; } catch (err) { return false; } } /* Montar Hash compartilhavel do produto/bebida */ window.makeHashProduto function(id_produto) { var hash_produto ; /* Caso o id do produto seja válido, monta a Hash válida */ if (id_produto > 0) { var format_id (000000 + id_produto).slice(-6); hash_produto #item+btoa(format_id); } var url_open_produto location.origin+location.pathname+location.search; window.history.pushState(null, null, url_open_produto+hash_produto); } /* Valida a Hsh da URL para ver se é para abrir o modal do produto/bebida na Home */ window.validHashProduto function($hash ) { if((location.hash ! ) || ($hash ! )) { var hash (window.location.hash).replace(#item,); if ($hash ! ) { hash $hash; } if (isEncode(hash)) { var hash_decrypt_produto atob(hash); if (hash_decrypt_produto ! ) { var encontrou false; var decode_id parseInt(hash_decrypt_produto); if (decode_id > 0 && $.isNumeric(decode_id)) { if ($(.ex-md-pdata-id_p+decode_id+).length > 0) { encontrou true; $(.ex-md-pdata-id_p+decode_id+).trigger(click); } else { var categorias_agrupador window.getCategoriasAgrupador(); if (categorias_agrupador.length > 0) { var id_grupo 0; categorias_agrupador.map((c) > { var produto c.produtos.filter(p > p.id_produto decode_id); if (produto.length > 0) { id_grupo parseInt(c.id_grupo); return; } }); if ($.isNumeric(id_grupo) && id_grupo > 0) { if ($(.ex-md-agrupadordata-id+id_grupo+).length > 0) { $(.ex-md-agrupadordata-id+id_grupo+).trigger(click); setTimeout(function() { if ($.isNumeric(decode_id) && decode_id > 0) { if ($(#modal-bebida .check-produto-categoriavalue+decode_id+).length > 0) { encontrou true; $(#modal-bebida .check-produto-categoriavalue+decode_id+).trigger(click); } } }, 500); } } } } } /* Caso não encontrar o item, avisa o cliente */ setTimeout(function() { if (!encontrou) { $.gritter.add({ title: Ops!, text: O item selecionado não está disponível no momento., class_name: gritter-danger }); } }, 1000); } } } } /* Validação se está ou não na versão mobile */ window.isMobile function() { if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) { return true; } return false; } /* Função genérica para exibição da mensagem do gritter */ window.alertMessage function(type, title, msg) { $.gritter.add({ title: title, text: msg, class_name: color +type }); } /* Função genérica para exibição da mensagem do catch */ window.alertMessageCatch function(title, error) { var msg error.statusText; if (error.responseJSON) { if (error.responseJSON.message) { msg error.responseJSON.message; } } window.alertMessage(danger, title, Erro na requisição. +msg+ (+error.status +)); } /* Função para gerar um atraso na execução */ window.sleep function(ms) { return new Promise(resolve > setTimeout(resolve, ms)) } /* Obter coordenada do circulo com o Turf com base no raio, longitude e latitude */ window.getCircleTurf function(radius,longitude, latitude) { var center turf.point(longitude, latitude); var options { steps: 64, units: kilometers, properties: {range: radius} }; var circle turf.circle(center, radius, options); var bbox turf.bbox(circle); return { circle: circle, bounds: bbox }; } /* Obter data atual */ window.getDatetimeNow function() { var months 01,02,03,04,05,06,07,08,09,10,11,12; var new_date new Date(); var ano new_date.getFullYear(); var mes monthsnew_date.getMonth(); var dia (00 + new_date.getDate()).slice(-2) var hora (00 + new_date.getHours()).slice(-2) var min (00 + new_date.getMinutes()).slice(-2) var seg (00 + new_date.getSeconds()).slice(-2) var str_datetime `${ano}-${mes}-${dia} ${hora}:${min}:${seg}`; return str_datetime; } /* Função para copiar informações para clipboard (ctrl + c basicamente)*/ window.copyToClipboard function(el, i html) { /* Campo temporario */ var $temp $(textarea>); var html el.html(); var text ; if (i html) { text el.html(); } else if (i innerText) { text el0.innerText; } $temp.html(text.split( ).join()); $(body).append($temp); $temp.select(); $temp.focus(); /* Comando para efetuar copia */ document.execCommand(copy); /* Exclusao do elemento temporario */ $temp.remove(); el.html(span styleopacity: 0.5>Copiado/span>); setTimeout(function(){ el.html(html); }, 300); }; /* Adicionar (add) ou Remover (remove) loading de botões */ window.loadingInButtons function(button, status) { if (status add) { button.append(i classfa-solid fa-spinner fa-spin fa-1x ml-2>/i>); button.attr(disabled, disabled); } else if (status remove) { button.find(.fa-spinner).remove(); button.removeAttr(disabled); } } var isCtrlPressed false; /* Forçar cursor no final do texto do campo da MASK */ $(document).delegate(.mask-force-end, keyup, function(e) { var end this; var len end.value.length * 2; if (!isCtrlPressed) { if (end.setSelectionRange) { end.focus(); end.setSelectionRange(len, len); } } }); /* Interromper ação do click em um a.href */ $(document).delegate(.a-prevent-default, click, function(e) { e.preventDefault(); }); /* Permitir somente numeros */ $(document).delegate(.mask-only-number, keydown, function(e) { var k e.which; isCtrlPressed e.ctrlKey || e.metaKey; if (!isCtrlPressed) { if ( (k 48 || k > 57) && (k 96 || k > 105) && (k ! 8) && (k ! 9)) { e.preventDefault(); return false; } } }); /* Tratamentos no valor do campo ao apagar dados (backspace) */ $(document).delegate(.mask-only-number, keyup, function(e) { var k e.which; var val $(this).val(); val val.trim(); if (k 8) { var val_len val.length; if (val_len > 0) { var last_digit valval_len - 1; if (last_digit /) { val val.substr(0, val_len - 1); } } } else { if (val /) { val ; } } $(this).val(val); setTimeout(() > { isCtrlPressed e.ctrlKey || e.metaKey; }, 100) }); /* Remoção de caracteres especiais */ window.removeSpecialCharSimple function(o){ var defaultDiacriticsRemovalMap {base:A, letters:/\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F/g}, {base:AA,letters:/\uA732/g}, {base:AE,letters:/\u00C6\u01FC\u01E2/g}, {base:AO,letters:/\uA734/g}, {base:AU,letters:/\uA736/g}, {base:AV,letters:/\uA738\uA73A/g}, {base:AY,letters:/\uA73C/g}, {base:B, letters:/\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181/g}, {base:C, letters:/\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E/g}, {base:D, letters:/\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779/g}, {base:DZ,letters:/\u01F1\u01C4/g}, {base:Dz,letters:/\u01F2\u01C5/g}, {base:E, letters:/\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E/g}, {base:F, letters:/\u0046\u24BB\uFF26\u1E1E\u0191\uA77B/g}, {base:G, letters:/\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E/g}, {base:H, letters:/\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D/g}, {base:I, letters:/\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197/g}, {base:J, letters:/\u004A\u24BF\uFF2A\u0134\u0248/g}, {base:K, letters:/\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2/g}, {base:L, letters:/\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780/g}, {base:LJ,letters:/\u01C7/g}, {base:Lj,letters:/\u01C8/g}, {base:M, letters:/\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C/g}, {base:N, letters:/\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4/g}, {base:NJ,letters:/\u01CA/g}, {base:Nj,letters:/\u01CB/g}, {base:O, letters:/\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C/g}, {base:OI,letters:/\u01A2/g}, {base:OO,letters:/\uA74E/g}, {base:OU,letters:/\u0222/g}, {base:P, letters:/\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754/g}, {base:Q, letters:/\u0051\u24C6\uFF31\uA756\uA758\u024A/g}, {base:R, letters:/\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782/g}, {base:S, letters:/\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784/g}, {base:T, letters:/\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786/g}, {base:TZ,letters:/\uA728/g}, {base:U, letters:/\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244/g}, {base:V, letters:/\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245/g}, {base:VY,letters:/\uA760/g}, {base:W, letters:/\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72/g}, {base:X, letters:/\u0058\u24CD\uFF38\u1E8A\u1E8C/g}, {base:Y, letters:/\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE/g}, {base:Z, letters:/\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762/g}, {base:a, letters:/\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250/g}, {base:aa,letters:/\uA733/g}, {base:ae,letters:/\u00E6\u01FD\u01E3/g}, {base:ao,letters:/\uA735/g}, {base:au,letters:/\uA737/g}, {base:av,letters:/\uA739\uA73B/g}, {base:ay,letters:/\uA73D/g}, {base:b, letters:/\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253/g}, {base:c, letters:/\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184/g}, {base:d, letters:/\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A/g}, {base:dz,letters:/\u01F3\u01C6/g}, {base:e, letters:/\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD/g}, {base:f, letters:/\u0066\u24D5\uFF46\u1E1F\u0192\uA77C/g}, {base:g, letters:/\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F/g}, {base:h, letters:/\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265/g}, {base:hv,letters:/\u0195/g}, {base:i, letters:/\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131/g}, {base:j, letters:/\u006A\u24D9\uFF4A\u0135\u01F0\u0249/g}, {base:k, letters:/\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3/g}, {base:l, letters:/\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747/g}, {base:lj,letters:/\u01C9/g}, {base:m, letters:/\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F/g}, {base:n, letters:/\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5/g}, {base:nj,letters:/\u01CC/g}, {base:o, letters:/\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275/g}, {base:oi,letters:/\u01A3/g}, {base:ou,letters:/\u0223/g}, {base:oo,letters:/\uA74F/g}, {base:p,letters:/\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755/g}, {base:q,letters:/\u0071\u24E0\uFF51\u024B\uA757\uA759/g}, {base:r,letters:/\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783/g}, {base:s,letters:/\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B/g}, {base:t,letters:/\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787/g}, {base:tz,letters:/\uA729/g}, {base:u,letters:/\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289/g}, {base:v,letters:/\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C/g}, {base:vy,letters:/\uA761/g}, {base:w,letters:/\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73/g}, {base:x,letters:/\u0078\u24E7\uFF58\u1E8B\u1E8D/g}, {base:y,letters:/\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF/g}, {base:z,letters:/\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763/g} ; var str o; for(var i0; idefaultDiacriticsRemovalMap.length; i++) { str str.replace(defaultDiacriticsRemovalMapi.letters, defaultDiacriticsRemovalMapi.base); } return str; } /* Validação dos campos de aniversario */ $(document).delegate(.input-birthday, change, function(e) { var dt_atual window.getDatetimeNow(); var dt_input $(this).val(); dt_atual dt_atual.substring(0,10); if (dt_input) { dt_input dt_input.split(/).reverse().join(-); if (dt_input > dt_atual) { $(this).val(); window.alertMessage(danger, Atenção, Use o campo de Aniversário para preencher a sua data de nascimento.); } } }); // Obter IP do dispositivo window.getRemoteIp async function() { var remote_ip_func ; await fetch(https://jsonip.com,{ mode: cors}) .then((resp) > resp.json()).then((data) > { remote_ip_func data.ip; }) .catch((err) > { // erro no IP console.log(Não foi possível obter o IP do cliente., err); }); if (!remote_ip_func) { // Tentar outro serviço obter IP try { await $.getJSON(https://ipinfo.io?tokend4bea00bbd0710, function (data) { remote_ip_func data.ip; }); } catch(err) { console.log(Não foi possível obter o IP do cliente (2)., err); } } return remote_ip_func; } /* Setar scroll horizontal centralizado de um elemento */ window.scrollCenterElementList function(list, element_list, speed) { var elementWidth element_list.width() / 2; var elementPos element_list.position().left + elementWidth; var listScrollLeft list.scrollLeft(); var listWidth list.width() - 64; // 64 é o width da lupa elementPos elementPos + listScrollLeft - listWidth / 2; list.animate({ scrollLeft: elementPos }, speed); } /* Arredondar valor com casas decimais */ window.roundNumber function(valor, decimais) { valor parseFloat(valor); if (isNaN(valor)) { return 0; } valor valor.toFixed(decimais); valor parseFloat(valor); return valor; } });/script>script> $(document).ready(function () { /*Select2*/ $(.select2).select2({ width: 100% }); $(.select2_hidden_search).select2({ width: 100%, minimumResultsForSearch: Infinity }); /*Select2 tags*/ $(.tags).select2({tags: true, width: 100%, tokenSeparators: ,, }); });/script>script> /* Utilizado para passar como Header nos AJAX do site */ var URL_REFER 130; var scope_cliente null; var ds_email_cliente ; var ds_empresa Imperial Salgados; var is_page_loaded false; app.controller(ProfileCtrl, function($scope,$window,$timeout) { $scope.info_pedido {}; $scope.cliente { id: 0, ds_nome: , dados: , enderecos: , pedidos: , enderecos_indisponiveis: , vl_saldo_carteira_cashback: 0, vl_saldo_carteira_credito: 0 }; /* Controlar para verificação do CEP, coordenadas das areas do cep */ $scope.array_areas_coordenadas ; $scope.faixas_entrega ; $scope.endereco_retirada ; $scope.in_retirada_balcao N; $scope.in_delivery S; $scope.in_coordenadas_mobile false; $scope.horarios_agendamento { disponibilidade_entrega: , disponibilidade_retirada: }; $scope.in_agendamento_delivery false; $scope.in_agendamento_retirada false; /* Indicador para verificação se a empresa está aberta ou não */ $scope.empresa_aberta false; $scope.pedido_pendente_home ; $scope.cashback {}; $scope.venda_sugestiva {}; $scope.initVendaSugestiva function() { const venda_sugestiva { id: 0, titulo: , descricao: , produtos: }; $scope.venda_sugestiva venda_sugestiva; }; /* Indicador se está na versão mobile */ $scope.is_mobile false; $scope.$watch(ready, function(){ if($scope.ready true) { /* para não aparecer as tags do angular */ /*setTimeout(() > { $(#profile_ctrl).removeClass(d-none); }, 200);*/ } }); /* Possibilidade a ser avaliada -> redirecionar listagem do pedido no click pros detalhes do pedido */ $scope.redirectOrder function(id) { window.location.href https://imperialsalgadosc.com.br+/account/orders/+id; }; $scope.formatData function(datatime) { var data datatime.substr(0, 10).split(-).reverse().join(/); return data; }; $scope.formatTime function(datatime) { var hora datatime.substr(10).split(:); return hora0+:+hora1; }; $scope.initLogin function() { const loginconst { id_cliente: 0, ds_nome: , nr_fone: , ds_email: , dt_nascimento: , tp_fluxo: normal, id_facebook: }; $scope.login loginconst; }; $scope.initLogin(); }); $(document).ready(function () { scope_cliente angular.element(document.querySelector(#profile_ctrl)).scope(); scope_cliente.info_pedido JSON.parse({\tp_pedido\:\normal\}); scope_cliente.is_mobile window.isMobile(); scope_cliente.$apply(); scope_cliente.ready true; /* Verficiação sobre o funcionamento da empresa */ scope_cliente.empresa_aberta true; if(scope_cliente.ready true) { $(#profile_ctrl).removeClass(d-none); } /* Retorno da validação do vinculo do endereço na sessão com o cliente */ window.returnVerifyVinculoEnderecoSessionLogin function(data) { if (data.msg ) { if (data.enderecos_cliente.length > 0) { setEnderecosCliente(data.enderecos_cliente) } if (data.endereco_vinculo.length > 0) { if (typeof setEnderecoCEP function) { setEnderecoCEP(data.endereco_vinculo, true); } } } else { alert(data.msg); } } /* Validação do vinculo do endereço na sessão com o cliente */ window.verifyVinculoEnderecoSessionLogin async function(in_login) { return new Promise((resolve, reject) > { if (in_login) { var session $(#carrinho-home).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Account\\ProfileController, ajax_function: setVinculoEnderecoSessionCliente}); session.getDados(returnVerifyVinculoEnderecoSessionLogin); } resolve(ok); }); } /* Ocultar/ Fechar menu ao clicar em alguma opção no mobile */ $(.container_min_nav).find(a).click(function(){ $(#container_fix_min_nav).removeClass(menu-on); }); async function clearAlteracoesClienteAppEmpresa() { var result false; var dados_clear { id: 0 } var resClear $(#profile_ctrl).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Account\\ProfileController, ajax_function: requestClearDadosClienteAppEmpresa}); await resClear.sendDadosPromise(JSON.stringify(dados_clear)) .then((data) > { if (data.msg) { window.alertMessage(danger, Atenção!, data.msg); } else { result true; } }) .catch((error) > { window.alertMessageCatch(Erro na requisição de atualização do vinculo com a loja!, error); }); return result; } window.validAlteracoesClienteEmpresa async function() { if (scope_cliente.cliente.id > 0) { var alteracoes await window.getAlteracoesClienteEmpresa(); if (alteracoes.length > 0) { scope_cliente.cliente_alteracoes alteracoes; scope_cliente.$apply(); var modal_ $(#modal-confirm-cliente-vinculo-empresa); $(.btn-voltar-mobile-modal).closest(nav).addClass(d-none); modal_.find(.pseudo-header-mobile).addClass(d-none); modal_.modal(show); } } } window.getAlteracoesClienteEmpresa async function() { var alteracoes ; var info { id: 0 } var resAlteracoes $(#profile_ctrl).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Account\\ProfileController, ajax_function: getAlteracoesClienteVinculoEmpresa}); await resAlteracoes.getDadosPromise(JSON.stringify(info)) .then((data) > { if (data.cliente_alteracoes.length > 0) { alteracoes data.cliente_alteracoes; } }) .catch((error) > { console.log(error) }); return alteracoes; } $(#modal-confirm-cliente-vinculo-empresa).on(hidden.bs.modal, function(e) { scope_cliente.cliente_alteracoes ; scope_cliente.$apply(); $(.btn-voltar-mobile-modal).closest(nav).removeClass(d-none); $(this).find(.pseudo-header-mobile).removeClass(d-none); }); $(document).delegate(.btn-confirm-dados-vinculo-empresa, click, async function(e) { var modal_ $(#modal-confirm-cliente-vinculo-empresa); if (scope_cliente.cliente.id > 0) { var form modal_.find(#form-confirm-cliente-vinculo-empresa); var dados_update {}; if (form.find(.ds_nome).length > 0) { var nome form.find(.ds_nome).val(); if (nome) { dados_update.ds_nome nome; } else { window.alertMessage(danger, Atenção, Informe seu nome para continuar.); return; } } if (form.find(.ds_email).length > 0) { dados_update.ds_email form.find(.ds_email).val(); } if (form.find(.dt_nascimento).length > 0) { dados_update.dt_nascimento form.find(.dt_nascimento).val(); } if (form.find(.nr_cpf_cnpj).length > 0) { dados_update.nr_cpf_cnpj form.find(.nr_cpf_cnpj).val(); } if (dados_update) { window.loadingInButtons($(this), add); var is_updated await window.requestUpdateProfile(dados_update); if (is_updated) { await clearAlteracoesClienteAppEmpresa(); modal_.modal(hide); } window.loadingInButtons($(this), remove); } } else { window.alertMessage(danger, Atenção, Ocorreu lago de errado, recarregue a página e tente novamente.); } }); /** Informações sobre o Cliente */ window.requestUpdateProfile async function(dados) { var success false; var resUpdateProfile $(#profile_ctrl).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Account\\ProfileController, ajax_function: requestUpdateProfile}); await resUpdateProfile.sendDadosPromise(JSON.stringify(dados)) .then(async (data) > { if (data.msg) { window.alertMessage(danger, Atenção!, data.msg); } else { if (data.dados_cliente) { window.alertMessage(msg-boas-vindas, Sucesso!, Seu cadastro foi atualizado.); if(typeof setClienteScopeOnly function) { window.setClienteScopeOnly(data.dados_cliente); } success true; } } }) .catch((error) > { window.alertMessageCatch(Erro na atualização do cadastro!, error); }); return success; } window.setCliente function(dados, in_login true) { var arr JSON.parse(dados); var redirect false; var pedido_minimo 0; scope_cliente.cliente arr; scope_cliente.$apply(); scope_cliente.ready true; if ((finish_changed)) { if (((scope_cliente.cliente.id ! 0) && (scope_cliente.cliente.dados.nr_fone ! ) && (scope_cliente.cliente.dados.nr_fone ! null))) { redirect true; } if (scope_carrinho ! null) { if (scope_carrinho.endereco.length > 0) { pedido_minimo scope_carrinho.endereco0.vl_pedido_minimo; } if (pedido_minimo > scope_carrinho.cart.vl_subtotal) { redirect false; } } } /* Validação do vinculo da sessão do endereço */ window.verifyVinculoEnderecoSessionLogin(in_login) .then(function(value) { if (redirect) { setTimeout(() > { /* Evento Facebook Pixel */ fbq(track, InitiateCheckout); /* Evento Google Analytics */ gtag(event, begin_checkout); window.location.href https://imperialsalgadosc.com.br+/checkout; }, 500); } else { /* Redirecionamento após o login */ } }); if (!scope_cliente.cliente.dados.in_web || scope_cliente.cliente.dados N) { window.validAlteracoesClienteEmpresa(); } if (scope_cliente.cashback.in_ativo S) { if (typeof getSaldoCarteiraClienteEmpresa function) { window.getSaldoCarteiraClienteEmpresa(); } } }; // Atualizar dados do cliente no escopo window.setClienteScopeOnly function(dados) { var arr JSON.parse(dados); scope_cliente.cliente arr; scope_cliente.$apply(); } window.validateConfirmacaoMesaHome function() { if ($(.home).length > 0) { if (scope_cliente.info_pedido.tp_pedido presencial) { if (scope_cliente.info_pedido.dados.tp_presencial mesa_comanda) { if (scope_cliente.info_pedido.dados.id_mesa 0) { if (typeof openModalConfirmQRCode function) { window.openModalConfirmQRCode(mesa); return; } } var newURL location.href.split(?)0; window.history.pushState(object, document.title, newURL); } } } } window.validateTipoPedido function() { if (scope_cliente.info_pedido.tp_pedido presencial) { if (!scope_cliente.cliente.ds_nome) { $(.btn-voltar-mobile-modal).attr(disabled, disabled) $(.btn-voltar-mobile-modal).css(opacity, 0) $(#modal-presencial-signup).modal(show); return; } else { setTimeout(() > { validateConfirmacaoMesaHome(); }, 500); } if (scope_cliente.tp_pedido presencial) { scope_carrinho.cart.tp_entrega L; scope_carrinho.endereco_confirmed true; scope_carrinho.payment_confirmed true; scope_carrinho.$apply(); } } } /* Botão para Sair da conta do cliente */ $(document).delegate(.btn-logout-cliente, click, function(e) { e.preventDefault(); var a $(this).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Account\\ProfileController, ajax_function: logoutCliente}); a.logoutCliente(); }); $(document).delegate(.link_mobile, click, function(e){ e.preventDefault(); var this_href $(this).attr(href); window.location.href this_href; }); /* Botão sanduiche mobile link */ $(.top_header_fix).find(a).click(function(e){ e.preventDefault(); }); /* Link do menu fixo no header */ $(#fixedHeader).find(.link_header_fixed).click(function(e){ e.preventDefault(); var this_href $(this).attr(href); /* Setando history do browser */ window.history.pushState({url: + this_href + }, , this_href); //window.location this_href; location.reload(); }); /** Informações sobre os Endereços do Cliente */ window.setEnderecosCliente function(dados) { var arr dados; var last_cadastro 0; /*Zerar os valores e seleção do endereço de entrega no checkout */ if (scope_cliente.info_pedido.tp_pedido normal) { scope_cliente.cliente.enderecos arr; } scope_cliente.$apply(); scope_cliente.ready true; /* if (last_cadastro > 0) { $(#endereco-+last_cadastro).closest(.line-endereco).find(inputnameendereco).trigger(click); } */ /* Toda vez que carrega os endereços, verifica se o endereço do carrinho ainda é válido. */ if ($(.home).length > 0) { if (scope_carrinho.endereco.length > 0) { setEnderecoCEP(scope_carrinho.endereco, true); } } }; /* Pedidos do cliente na empresa */ window.setPedidosCliente function(dados) { scope_cliente.cliente.pedidos JSON.parse(dados); scope_cliente.$apply(); scope_cliente.ready true; } /* Redirect utilizado nas funções AJAX */ window.callRedirect function(local ) { var path ; if (local #login) { if(path.replace(/,) account) { window.location.href https://imperialsalgadosc.com.br+/+local; } } window.location.href https://imperialsalgadosc.com.br+path+/+local; } /* Navegação no browser e no mobile, para caso voltar fechar o modal caso esteja aberto */ if($(window).width() 992) { $(window).on(popstate, function (event) { event.preventDefault(); var local window.location; if ($(.modal.show).length > 0) { $(.modal).modal(hide); window.history.pushState( {}, , local.href); } else { window.history.back(1); } }); } else { if (window.history && window.history.pushState) { var url https://imperialsalgadosc.com.br+/; var local window.location.href; if (local ! url) { window.history.pushState(url, , ); } $(window).on(popstate, function(event) { /*console.log(url++local); console.log(window.location); console.log(document.referrer); console.log(document.referrer.split(account)0); console.log((url document.referrer));*/ if (((local.indexOf(/account) > -1) || (local.indexOf(/checkout) > -1)) && (document.referrer ! )) { event.preventDefault(); if (url document.referrer) { window.location.href url; } else { window.location.href document.referrer.split(account)0; } } else { window.history.back(1); } }); } } /* Reload do site ao trocar de tamanho da tela, para carregar os scripts para cada tamanho (mobile e desktop). */ var width_load $(window).width(); $(window).resize(function() { if ((width_load > 991) && ($(window).width() 992)) { location.reload(); } else if ((width_load 992) && ($(window).width() > 991)){ location.reload(); } }); window.validateRedirectToCheckout function() { var go_checkout false; /* Caso no login com o facebook clicar em Finalizar pedido, valida o localStorage e direciona para o checkout */ var redirect_to_storage localStorage.getItem(@delivery-turbo-redirect-to); if ((redirect_to_storage ! null) && (redirect_to_storage checkout)) { go_checkout true; if (scope_carrinho ! null) { var pedido_minimo_to_loginfb 0; if (scope_carrinho.endereco.length > 0) { pedido_minimo_to_loginfb scope_carrinho.endereco0.vl_pedido_minimo; } if (pedido_minimo_to_loginfb > scope_carrinho.cart.vl_subtotal) { go_checkout false; } } localStorage.removeItem(@delivery-turbo-redirect-to) } return go_checkout; } window.getSaldoCarteiraClienteEmpresa async function() { if (scope_cliente.cliente.id > 0) { var info { id_empresa: 0 } var get_saldo $(body).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Account\\ProfileController, ajax_function: requestSaldoClienteEmpresa}); await get_saldo.getDadosPromise(JSON.stringify(info)) .then((data) > { if (data.msg) { window.alertMessage(danger, Atenção!, data.msg); } else { scope_cliente.cliente.vl_saldo_carteira_cashback data.saldo_cashback; scope_cliente.cliente.vl_saldo_carteira_credito data.saldo_credito; scope_cliente.$apply(); } }) .catch((error) > { window.alertMessage(danger, Erro na consulta do saldo!, error); }); } } window.getParametrosCashback async function(saldo_cliente true) { var get_cash $(body).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Common\\HomeController, ajax_function: requestParametrosCashback}); await get_cash.getDadosPromise() .then((data) > { if (data.msg) { window.alertMessage(danger, Atenção!, data.msg); } else { if (data.parametros.length > 0) { scope_cliente.cashback data.parametros0; scope_cliente.$apply(); if (saldo_cliente) { if (data.parametros0.in_ativo S) { window.getSaldoCarteiraClienteEmpresa(); } } } else { scope_cliente.cashback {}; scope_cliente.$apply(); } } }) .catch((error) > { window.alertMessage(danger, Erro na consulta do saldo!, error); }); } $(document).delegate(.open-modal-info-cashback, click, async function(e) { e.preventDefault(); $(this).addClass(a-disabled); await window.getParametrosCashback(false); $(#modalCashback).modal(show); $(this).removeClass(a-disabled); }); });/script> script> $(document).ready(function () { var mp new Mprogress({template:3}); window.getItensSite async function() { var getItens $(body).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Common\\HomeController, ajax_function: getItens}); mp.start(); await getItens.getDadosPromise(JSON.stringify({pg: all})) .then((data) > { scope_cliente.itens_site data.itens; scope_cliente.$apply(); if (data.itens.length > 0) { window.getPrecosItens(data.itens); var idx_categorias_agrup data.itens.findIndex(i > i.categorias ! undefined); if (idx_categorias_agrup > -1) { window.setCategoriasAgrupador(data.itensidx_categorias_agrup.categorias); } } else { $(.loading-produtos-home).addClass(d-none); setTimeout(() > { window.validHashProduto(); }, 500); } setTimeout(() > { $(.select-grupo).select2({width: 100%}); window.onloadItensSite(); }, 200); }) .catch((error) > { window.alertMessage(danger, Erro na consulta do saldo!, error); }) .finally(() > { mp.end(); }); } /* Busca AJAX dos preços dos itens de venda da empresa (na Home do site) */ /* Retorno da busca ajax dos preços dos itens com complementos, e remoção do loading na tela. */ window.returnGetPrecos function(data) { if (datadados.length > 0) { $.each(datadados, function(i,e) { $(.home).find(.ex-md-pdata-id_p+e.id+).find(.vl-venda-exibicao).html(R$ +(e.valor_menor_item).toFixed(2).replace(.,,)); /* Caso possuir desconto no tamanho padrão */ if (e.vl_desconto_padrao > 0) { $(.home).find(.ex-md-pdata-id_p+e.id+).find(.before-desconto-padrao-item).find(small).html(R$ +(e.valor_menor_item + e.vl_desconto_padrao).toFixed(2).replace(.,,)); $(.home).find(.ex-md-pdata-id_p+e.id+).find(.before-desconto-padrao-item).removeClass(d-none); } }); } $(.loading-produtos-home).addClass(d-none); /* Caso for desktop verifica o top do carrinho */ if ($(.home).length > 0) { if(($(window).width() > 991) && ($(.banners-container).length 0)) { /* Teste se a function existe */ if (typeof marginTopCarrinho ! undefined) { // Comentado 06/05/2022 //marginTopCarrinho(); } } } mp.end(); /* Valida se está vindo de um login do facebook */ $(.btn-login-cadastro).removeAttr(disabled); window.validHashFacebookToken(); /* Valida a hash para abrir o produto */ setTimeout(() > { window.validHashProduto(); }, 500); } /* Função para buscar o minimo valor de complementos de grupos obrigatórios ao carregar a página. */ window.getPrecosItens function(itens) { var array_ids ; /* Verificar ids para consulta dos preços */ if (itens.length > 0) { itens.map(item > { if (item.produtos) { if (item.produtos.length > 0) { item.produtos.map(prod > { if (prod.vl_tamanhos.count_tamanhos > 0 && prod.vl_complementos.count_complementos > 0) { array_ids.push(prod.id_produto); } }); } } }); } /* Caso tenha tamanhos e complementos, busca o preço dos itens de acordo com a obrigatoriedade dos grupos */ if (array_ids.length > 0) { mp.start(); var info JSON.stringify(array_ids); var cliente $(.home).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Common\\HomeController, ajax_function: getPrecosProdutos}); cliente.getDados(returnGetPrecos, info); } else { $(.loading-produtos-home).addClass(d-none); /* Valida se está vindo de um login do facebook */ $(.btn-login-cadastro).removeAttr(disabled); window.validHashFacebookToken(); /* Valida a hash para abrir o produto */ setTimeout(() > { window.validHashProduto(); }, 500); } } var group_select ; /* Link/Ancora para os Grupos de Produtos */ window.setAncoraGrupo function(id, desc) { var array_url location.pathname.split(/); var path_site (); /* Caso for vazio, compara somente /, motivo: $path_site vem com / na frente. */ if (path_site ) { path_site /; } /* if(location.pathname ! ) { */ if ((/+array_url.slice(-1)0) ! path_site) { window.location.href https://imperialsalgadosc.com.br+/#grupo-+id+-+desc; } else { var remove_top 75; if($(window).width() 991) { remove_top 100; } var objRefTop $(adata-anchorgrupo-+id+-+desc+).offset().top; $(html, body).stop().animate({scrollTop: objRefTop - remove_top}, 1500, swing); window.location.hash ; /* Menu horizontal dos grupos na home */ window.scrollCenterElementList($(.list-grupo-home), $(.link-grupo-homedata-grupo+id+), 50); } } /* Ancora para os grupos com efeito animate */ $(document).delegate(.itens-grupo-link, click, function(e) { e.preventDefault(); $(#container_fix_min_nav).removeClass(menu-on); setAncoraGrupo($(this).attr(data-grupo), $(this).attr(data-ds_grupo)); }); /* Select2 dos Grupos para animate scroll */ $(document).delegate(.select-grupo, change, function(e) { e.preventDefault(); $(#container_fix_min_nav).removeClass(menu-on); setAncoraGrupo($(this).find(:selected).attr(data-grupo), $(this).find(:selected).attr(data-ds_grupo)); }); /* Link do menu na home */ $(document).delegate(.link-grupo-home, click, function(e) { e.preventDefault(); $(.link-grupo-home).removeClass(active); $(this).addClass(active); setAncoraGrupo($(this).attr(data-grupo), $(this).attr(data-ds_grupo)); }); /* Validar seleção do grupo conforme o scroll */ function validateScrollGroups(type, grupos) { var screenTop $(document).scrollTop(); var header_height 127; if (type desktop) { header_height 90; } if (grupos.length > 0) { var grupo_focus grupos.filter(g > (g.top - header_height) screenTop); if (grupo_focus.length > 0) { var grupo_selected grupo_focusgrupo_focus.length - 1; if (group_select ! grupo_selected.name) { var id_grupo grupo_selected.id; group_select grupo_selected.name; if ($(.select-grupo).length > 0) { $(.select-grupo).val(id_grupo); $(.select-grupo).select2({val:id_grupo, width: 100%, minimumResultsForSearch: Infinity}); } $(.link-grupo-home).removeClass(active); $(.link-grupo-homedata-grupo+id_grupo+).addClass(active); window.scrollCenterElementList($(.list-grupo-home), $(.link-grupo-homedata-grupo+id_grupo+), 50); } } } } window.onloadItensSite function() { /* Grupos de produtos/bebidas presentes na home */ var arr_grupos ; $(.anchor-group).each(function(i,e) { var id_grupo $(e).attr(data-id); var group_pass $(e).attr(name); var elementOffset $(e).offset().top; var grupo { top: elementOffset, id: id_grupo, name: group_pass } arr_grupos.push(grupo); }); /* Ao scroll na página Home do site, altera a opção selecionada no select2 no header caso for desktop, mobile não faz */ if($(window).width() > 991) { $(window).scroll(function(){ validateScrollGroups(desktop, arr_grupos) }); } else { $(window).scroll(function(){ if (arr_grupos0.top 0) { var arr_grupos_updated ; $(.anchor-group).each(function(i,e) { var id_grupo $(e).attr(data-id); var group_pass $(e).attr(name); var elementOffset $(e).offset().top; var grupo { top: elementOffset, id: id_grupo, name: group_pass } arr_grupos_updated.push(grupo); }); arr_grupos arr_grupos_updated; } validateScrollGroups(mobile, arr_grupos); }); validateScrollGroups(mobile, arr_grupos); } } /* Direcionamento para o grupo de itens */ if($(.home).length > 0) { /* Click da lupa de busca de produtos na Home */ $(document).delegate(.link-active-search-items, click, function(e) { e.preventDefault(); $(this).closest(#scrollfixed).addClass(search-on); $(this).closest(#scrollfixed).removeClass(search-off); $(.input-search-items).focus(); }); /* Click (X) para cancelar busca de produtos na Home */ $(document).delegate(.link-cancel-search-items, click, function(e) { e.preventDefault(); $(this).closest(#scrollfixed).addClass(search-off); $(this).closest(#scrollfixed).removeClass(search-on); $(.input-search-items).val(); $(.input-search-items).trigger(keyup); }); /* Validação sobre a exibição dos elementos dos produtos e grupos conforme digitado no campo de busca */ $(document).delegate(.input-search-items, keyup, function(e) { var makeScroll true; if (e.keyCode 8) { makeScroll false; } $(.text-search-not-found).html(); $(.search-not-found).addClass(d-none); var tr $(.col-product); var inputVal $(this).val(); if (inputVal.length > 2) { var inputdata $.trim(inputVal); var val inputdata.toLowerCase(); val window.removeSpecialCharSimple(val); var noElem true; el tr.filter(function() { return window.removeSpecialCharSimple($(this).find(.title-produto).text()).toLowerCase().match(val) || window.removeSpecialCharSimple($(this).find(.text-produto).text()).toLowerCase().match(val); }); tr.not(el).hide(); tr.not(el).closest(.container-fluid).prev().hide(); if (el.length > 1) { noElem false; el.show(); el.closest(.container-fluid).prev().show(); } /* Validar categorias de bebidas */ var categorias_bebidas window.getCategoriasAgrupador(); if (categorias_bebidas.length > 0) { categorias_bebidas.map((b) > { if (b.produtos.length > 0) { var find_prod b.produtos.filter(p > window.removeSpecialCharSimple(p.ds_titulo_item).toLowerCase().includes(val) || window.removeSpecialCharSimple(p.ds_item_completa).toLowerCase().includes(val)) if (find_prod.length > 0) { noElem false; $(.ex-md-agrupadordata-id+b.id_grupo+).closest(.col-product).show(); $(.ex-md-agrupadordata-id+b.id_grupo+).closest(.col-product).closest(.container-fluid).prev().show(); } } }); } if (noElem) { $(.text-search-not-found).html( + inputVal + ); $(.search-not-found).removeClass(d-none); } } else { tr.closest(.container-fluid).prev().show(); tr.show(); } if (inputVal) { if (makeScroll) { var removeTopSearch 56; if ($(window).width() > 991) { removeTopSearch 80 } var objRefTop $(#pseudo-scrollfixed).offset().top; if ($(.banners-container).length > 0) { var bannerH $(.banners-container).height(); objRefTop objRefTop + bannerH; } $(html, body).stop().animate({scrollTop: objRefTop - removeTopSearch}, 1500, swing); } } }); if((location.hash ! ) ) { var clear_hash false; var hash window.location.hash.replace(#,); if (hash login) { if (scope_cliente.cliente.id 0) { $(#modal-signup).modal(show); } clear_hash true; } else { var hash_init hash.substr(0,12); if (hash_init fberror) { /* Erro do facebook */ $.gritter.add({ title: Ocorreu um erro no Login com o Facebook, text: Tente novamente mais tarde., class_name: color danger }); history.pushState(, , location.origin+location.pathname); } else if ((!hash_init.includes(fblogin)) && (!hash_init.includes(__))) { if ($(aid+hash+).length > 0) { var objRefTop $(aid+hash+).offset().top; $(html, body).stop().animate({scrollTop: objRefTop - 75}, 0, swing); clear_hash true; } } } if (clear_hash) { /* Limpar url, feito dessa forma pois ao tirar o hash tava redire*/ const url new URL(window.location); url.hash ; history.replaceState(null, document.title, url); /* Modo anterior: */ /* window.location.hash ; */ } } } /* Botão outros na listagem da forma de pagamento na Home */ $(.btn_payment_outros).click(function(e){ e.preventDefault(); $(this).closest(.home_payments_list).find(li).removeClass(d-none); $(this).addClass(d-none); }); /* Verificação sobre a altura do carrinho/aviso de fechado em relação a primeira div com itens na home (segundo container-fluid da tela)*/ window.marginTopCarrinho function() { var h_p 0; var h_h1 $(.g-p:eq(0)).find(.group-title h1).outerHeight(true); if ($(.g-p:eq(0)).find(.group-title p).length > 0) { h_p $(.g-p:eq(0)).find(.group-title p).outerHeight(true); } var top (h_h1 + h_p); if ($(#carrinho-home).length > 0) { $(#carrinho-home).css(margin-top, top); } } if ($(.home).length > 0) { if(($(window).width() > 991) && ($(.banners-container).length 0)) { // Comentado 06/05/2022 //marginTopCarrinho(); } } $(body).delegate(data-dismissmodal,click,function(){ $(.modal.show).modal(hide); }); /* Função para obter o pedido por AJAX para atualização do status do pedido */ });/script> script> /* Scripts relacionados ao Login e Cadastro do cliente/ Verificação se o email já esta cadastrado para a empresa, ou alguma empresa da plataforma */ $(document).ready(function () { var modal_login $(#modal-signup); var form_login $(.form-modal-signup); var timeout_new_code 0; function resetEtapaInicialLogin() { $(.form-modal-signup).addClass(d-none); $(.form-inicial-signup).removeClass(d-none); $(.form-inicial-signup).find(.nr_fone_code_auth).val(); $(.form-inicial-signup).find(.nr_fone_code_auth).removeAttr(disabled); $(.form-inicial-signup).find(.nr_fone_code_auth).trigger(keyup); $(.form-codigo-signup).addClass(d-none); $(.form-inicial-signup).closest(.form-modal-signup).removeClass(d-none); $(.form-modal-signup).find(.code-input-auth).val(); $(.btn-return-login-inicial).attr(data-auth, ); $(.btn-return-login-inicial).addClass(d-none); $(.msg-login).addClass(d-none); $(.msg-login).html(); clearTimeout(timeout_new_code); $(.btn-code-auth-not-received).html(u>Receber um novo código/u>) $(.btn-code-auth-not-received).removeClass(a-disabled); document.getElementById(form-cad-cliente).reset(); $(#form-cad-cliente).parsley().reset(); $(#form-cad-cliente).find(.msg).removeClass(red-700); $(#form-cad-cliente).find(.msg).html(); scope_cliente.initLogin(); scope_cliente.$apply(); } /* Ao fechar o Modal de Login/Cadastro limpar as informações. */ $(#modal-signup).on(hidden.bs.modal, function(e) { resetEtapaInicialLogin(); fb_go_checkout false; finish_changed false; /* Caso for a partir do login do facebook com o access_token, limpa a url*/ if (localStorage.getItem(@delivery-turbo-login-fb)) { localStorage.removeItem(@delivery-turbo-login-fb); history.pushState(, , location.origin+location.pathname); } }); /* Retorno da validação caso o cliente informar email para cadastro/login no modal de signup */ window.returnValidateCliente async function(cliente) { var etapa_cadastro false; if (cliente.length > 0) { if (!cliente0.dt_fone_validado || cliente0.id_cliente 0) { etapa_cadastro true; } } else { etapa_cadastro true; } if (etapa_cadastro) { scope_cliente.login.id_cliente cliente0.id_cliente; scope_cliente.login.nr_fone cliente0.nr_fone; scope_cliente.login.ds_nome cliente0.ds_nome; scope_cliente.login.ds_email cliente0.ds_email; var cliente_alteracoes await window.getAlteracoesClienteEmpresa(); if (cliente_alteracoes.length > 0) { var alt cliente_alteracoes0; if (alt.ds_nome) { scope_cliente.login.ds_nome alt.ds_nome; } if (alt.ds_email) { scope_cliente.login.ds_email alt.ds_email; } if (alt.dt_nascimento) { scope_cliente.login.dt_nascimento alt.dt_nascimento; } if (alt.nr_cpf_cnpj) { scope_cliente.login.nr_cpf_cnpj alt.nr_cpf_cnpj; } } if (!cliente0.nr_fone) { var form_inicial modal_login.find(.form-inicial-signup); var nr_fone form_inicial.find(.nr_fone_code_auth).val(); if (nr_fone) { scope_cliente.login.nr_fone cliente0.nr_fone; } } scope_cliente.$apply(); $(.form-modal-signup).addClass(d-none); var form_cadastro $(#form-cad-cliente); form_cadastro.closest(.form-modal-signup).removeClass(d-none); } else { if (cliente.length > 0) { if (cliente0.id_cliente > 0) { await window.makeLoginClienteById(); } } } } window.getClienteByFoneNumber async function(nr_fone) { var cliente ; var info { in_verificador: fone, vl_verificador: nr_fone } var resCliente modal_login.ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Account\\ProfileController, ajax_function: getClienteByVerificador}); await resCliente.getDadosPromise(JSON.stringify(info)) .then((data) > { if (data.msg) { window.alertMessage(danger, Atenção!, data.msg); } else { if (data.cliente.length > 0) { cliente data.cliente; } } }) .catch((error) > { console.log(error); }); return cliente; } /* Retorno sobre o login do cliente */ window.returnLoginCliente function(data) { if (data.dados_cliente) { window.setCliente(data.dados_cliente); /* Para indicar no login, caso não tenha endereço na sessão, exibir o endereço favorito */ if (data.endereco_favorito.length > 0) { setEnderecoCEP(JSON.parse(data.endereco_favorito), true); } /* Listar endereços do cliente */ if (data.enderecos_cliente.length > 0) { window.setEnderecosCliente(data.enderecos_cliente); } // Definir sessão AUTH if(typeof sendEventAuthProfile function) { var parse_cliente JSON.parse(data.dados_cliente); window.sendEventAuthProfile(parse_cliente.token, setProfileAuth) } if ($(#modal-signup).hasClass(show)) { $(#modal-signup).modal(hide); } if (!(finish_changed)) { window.alertMessage(msg-boas-vindas, Seja bem-vindo!, Estamos felizes em te ver por aqui.); } else { setTimeout(function(){ /* Evento Facebook Pixel */ fbq(track, InitiateCheckout); /* Evento Google Analytics */ gtag(event, begin_checkout); callRedirect(checkout); }, 500); } } else { if (data.msg) { window.alertMessage(danger, Algo deu errado!, data.msg); } } } window.makeLoginClienteById async function(token_cliente 0) { var info { id: token_cliente } var resLogin $(#home).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Account\\ProfileController, ajax_function: requestLoginClienteById}); await resLogin.getDadosPromise(JSON.stringify(info)) .then((data) > { returnLoginCliente(data); }) .catch((error) > { console.log(error) window.alertMessage(danger, Erro ao realizar o login!, Erro na requisição.); }); } $(.nr_fone_code_auth).keyup(function(e) { var fone $(this).val(); if (fone.length > 14) { $(.buttons-send-auth-code).removeClass(d-none) } else { $(.buttons-send-auth-code).addClass(d-none); $(.msg-login).html(); $(.msg-login).addClass(d-none); } }); function validCodeAuthInputs() { var preenchidos true; $(.code-input-auth).each(function(i,e) { var this_val $(e).val(); if (!this_val) { preenchidos false; } }); if (preenchidos) { $(.btn-valid-auth-code).removeClass(d-none); } else { $(.btn-valid-auth-code).addClass(d-none); } var codigo getCodeAuthInputs(); if (codigo.length 6) { setTimeout(() > { $(.btn-valid-auth-code).focus(); $(.btn-valid-auth-code).trigger(click); }, 200); } } function getCodeAuthInputs() { var codigo ; $(.code-input-auth).each(function(i,e) { var this_val $(e).val(); if (this_val) { codigo + +this_val; } }); return codigo; } $(.code-input-auth).on(paste, function(e) { var pasteData e.originalEvent.clipboardData.getData(text) if (pasteData) { if (pasteData.length 6) { for (var pos 0; pos 6; pos++) { $(.code-input-authdata-seq+ (pos + 1) +).val(pasteDatapos); } validCodeAuthInputs(); } } }); $(.code-input-auth).keyup(function(e) { var this_val $(this).val(); var seq parseInt($(this).attr(data-seq)); if (this_val) { if(e.keyCode 13) { $(.btn-valid-auth-code).trigger(click); } if (seq 6) { $(.code-input-authdata-seq+ (seq + 1) +).focus(); } } else { if (e.keyCode 8) { if (seq > 1) { $(.code-input-authdata-seq+ (seq - 1) +).focus(); } } } validCodeAuthInputs(); }); $(document).delegate(.btn-return-login-inicial, click, function(e) { var nr_fone modal_login.find(.nr_fone_code_auth).val(); var auth_type $(this).attr(data-auth); resetEtapaInicialLogin(); modal_login.find(.nr_fone_code_auth).val(nr_fone); modal_login.find(.nr_fone_code_auth).trigger(keyup); if (auth_type) { $(.btn-send-auth-codedata-auth + auth_type + ).trigger(click); } }); $(document).delegate(.btn-code-auth-not-received, click, function(e) { e.preventDefault(); modal_login.find(.form-inicial-signup).removeClass(d-none); modal_login.find(.form-codigo-signup).addClass(d-none); modal_login.find(.form-codigo-signup).find(.code-input-auth).val(); }); function timerToNewCode(date_expires) { var time_expires date_expires.getTime(); var date_atual new Date(); var time_atual date_atual.getTime(); if (time_atual time_expires) { var seconds_diff Math.round((time_expires - time_atual) / 1000); if (seconds_diff > 0) { $(.btn-code-auth-not-received).html(Você poderá solicitar um novo código em +seconds_diff+ segundos) $(.btn-code-auth-not-received).addClass(a-disabled); } } else { $(.btn-code-auth-not-received).html(u>Receber um novo código/u>) $(.btn-code-auth-not-received).removeClass(a-disabled); } if (time_atual time_expires) { timeout_new_code setTimeout(() > { timerToNewCode(date_expires); }, 1000); } } $(document).delegate(.btn-send-auth-code, click, async function() { var auth $(this).attr(data-auth); var form modal_login.find(.form-inicial-signup); var nr_fone form.find(.nr_fone_code_auth).val(); // Limpar mensagem e botão $(.btn-return-login-inicial).attr(data-auth, ); $(.btn-return-login-inicial).addClass(d-none); $(.msg-login).html(); $(.msg-login).addClass(d-none); if (nr_fone) { var fone_valid window.validateFone(nr_fone); if (!fone_valid.is_valid) { var msg_fone_valid Ops, parece que esse telefone é inválido.; if (fone_valid.digit9) { msg_fone_valid Ops, parece que você está esquecendo o 9° digito no seu telefone.; } $(.msg-login).html(msg_fone_valid); $(.msg-login).removeClass(d-none); return; } if (auth) { var dados { nr_fone_envio: nr_fone, tp_envio: auth }; clearTimeout(timeout_new_code); window.loadingInButtons($(this), add); var resCodeAuth $(this).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Account\\ProfileAuthController, ajax_function: sendCodigoAuth}); await resCodeAuth.sendDadosPromise(JSON.stringify(dados)) .then((data) > { if (data.msg) { window.alertMessage(danger, Atenção!, data.msg); } else { if (data.in_codigo_enviado) { // Contador para exibir botão de novo código var dt_envio_codigo new Date(); var new_dt_envio_codigo new Date(dt_envio_codigo.setSeconds(dt_envio_codigo.getSeconds() + 60)) localStorage.setItem(@hubzy-new-date-code-login, new_dt_envio_codigo); timerToNewCode(new_dt_envio_codigo) modal_login.find(.form-inicial-signup).addClass(d-none); modal_login.find(.form-codigo-signup).removeClass(d-none); modal_login.find(.form-codigo-signup).find(.code-input-auth).first().focus(); } else { window.alertMessage(danger, Ops, Não conseguimos realizar o envio do código, tente novamente.); } } }) .catch((error) > { window.alertMessageCatch(Erro na geração do código de autenticação!, error); }); window.loadingInButtons($(this), remove); } } else { form.find(.nr_fone_code_auth).focus(); } }); $(document).delegate(.btn-valid-auth-code, click, async function() { var codigo getCodeAuthInputs(); if (codigo && codigo.length 6) { var dados { ds_codigo: codigo }; window.loadingInButtons($(this), add); var resCodeValid $(this).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Account\\ProfileAuthController, ajax_function: validCodigoAuth}); await resCodeValid.sendDadosPromise(JSON.stringify(dados)) .then(async (data) > { if (data.msg) { window.alertMessage(danger, Atenção!, data.msg); $(.code-input-auth).val(); $(.code-input-authdata-seq1).focus(); validCodeAuthInputs(); } else { if (data.is_valid) { var form_inicial modal_login.find(.form-inicial-signup); var nr_fone form_inicial.find(.nr_fone_code_auth).val(); if (nr_fone) { scope_cliente.login.nr_fone nr_fone; scope_cliente.$apply(); if (scope_cliente.login.tp_fluxo normal) { var dados_cliente await getClienteByFoneNumber(nr_fone); if (dados_cliente.length 0) { var cliente { id_cliente: 0, nr_fone: nr_fone, dt_fone_validado: null, ds_nome: , ds_email: }; dados_cliente.push(cliente); } returnValidateCliente(dados_cliente); } else if (scope_cliente.login.tp_fluxo facebook) { var permite_cadastro true; var dados_cliente await getClienteByFoneNumber(nr_fone); if (dados_cliente.length > 0) { if (scope_cliente.login.id_cliente > 0) { if (scope_cliente.login.id_cliente ! dados_cliente0.id_cliente) { permite_cadastro false; } } else { scope_cliente.login.id_cliente dados_cliente0.id_cliente; scope_cliente.$apply(); } } if (!permite_cadastro) { resetEtapaInicialLogin(); fb_go_checkout false; finish_changed false; /* Caso for a partir do login do facebook com o access_token, limpa a url*/ if (localStorage.getItem(@delivery-turbo-login-fb)) { localStorage.removeItem(@delivery-turbo-login-fb); history.pushState(, , location.origin+location.pathname); } window.alertMessage(danger, Atenção!, Ops, parece que esse telefone já tem cadastro na plataforma. br> Altere o número ou faça o login usando este telefone.) return; } else { $(.form-modal-signup).addClass(d-none); var form_cadastro $(#form-cad-cliente); form_cadastro.closest(.form-modal-signup).removeClass(d-none); } } else if (scope_cliente.login.tp_fluxo alteracao_fone) { if(typeof requestUpdateProfile function) { var dados_update { nr_fone: nr_fone } var is_updated window.requestUpdateProfile(dados_update); if (is_updated) { $(#v-dados-pessoais).find(.btn-confirm-fone-edicao).addClass(d-none) $(#v-dados-pessoais).find(.btn-edit-input-fone-edicao).removeClass(d-none) $(#v-dados-pessoais).find(.nr_fone).attr(readonly, readonly); } } if ($(#modal-signup).hasClass(show)) { $(#modal-signup).modal(hide); } } } } } }) .catch((error) > { window.alertMessageCatch(Erro na validação do código de autenticação!, error); }); window.loadingInButtons($(this), remove); } else { window.alertMessage(danger, Atenção!, Informe o código de autenticação completo.); } }); /* Enviar informações para o cadastro */ $(.btn-env-cad-cliente).click(function(e){ e.preventDefault(); var is_valid true; var dados; var form $(#form-cad-cliente); form.parsley().validate(); if (form.parsley().isValid()){ $(#form-cad-cliente).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Account\\ProfileController, ajax_function: setCliente}).setCliente(); } else { return; } }); /* Validar o nome do cliente para não permitir somente numeros */ $(.ds_nome_validate).blur(function(e) { var ds_nome $(this).val(); if (ds_nome) { if (/^0-9.,+$/.test(ds_nome)) { $(this).val(); window.alertMessage(danger, Atenção, O campo Nome deve conter letras.); } } }); /* ----------- SCRIPTS LOGIN COM FACEBOOK ------------ */ /* Retorno sobre a validação do login com o Facebook. */ window.returnSetLoginFacebook async function(data) { if (!data.msg) { var in_autenticacao_telefone false; /* Cadastro localizado pelo Id do Facebook? */ if (data.in_found) { if (data.dados_cliente) { var cliente JSON.parse(data.dados_cliente) if (cliente.dados.dt_fone_validado) { /* Para indicar no login, caso não tenha endereço na sessão, exibir o endereço favorito */ if (data.endereco_favorito ! ) { setEnderecoCEP(JSON.parse(data.endereco_favorito), true); } /* Setando cliente logado */ setCliente(data.dados_cliente); $(#modal-signup).modal(hide); fb_go_checkout window.validateRedirectToCheckout(); if (fb_go_checkout) { setTimeout(function(){ /* Evento Facebook Pixel */ fbq(track, InitiateCheckout); /* Evento Google Analytics */ gtag(event, begin_checkout); callRedirect(checkout); }, 500); } else { window.alertMessage(msg-boas-vindas, Seja bem-vindo!, Estamos felizes em te ver por aqui.); } } else { in_autenticacao_telefone true; } } else { window.alertMessage(danger, Atenção, Algo de errado ocorreu ao validar os dados.); } } else { in_autenticacao_telefone true; } if (in_autenticacao_telefone) { document.getElementById(form-cad-cliente).reset(); $(#form-cad-cliente).parsley().reset(); if (data.dados_cliente) { var cliente JSON.parse(data.dados_cliente) scope_cliente.login.id_cliente cliente.dados.id_cliente; scope_cliente.login.tp_fluxo facebook; var cliente_alteracoes await window.getAlteracoesClienteEmpresa(); if (cliente_alteracoes.length > 0) { var alt cliente_alteracoes0; if (alt.ds_nome) { scope_cliente.login.ds_nome alt.ds_nome; } if (alt.ds_email) { scope_cliente.login.ds_email alt.ds_email; } if (alt.dt_nascimento) { scope_cliente.login.dt_nascimento alt.dt_nascimento; } if (alt.nr_cpf_cnpj) { scope_cliente.login.nr_cpf_cnpj alt.nr_cpf_cnpj; } } if (cliente.dados.ds_email) { scope_cliente.login.ds_email cliente.dados.ds_email; } if (cliente.dados.dt_nascimento ! null) { scope_cliente.login.dt_nascimento cliente.dados.dt_nascimento; } scope_cliente.$apply(); } $(.form-modal-signup-facebook).find(.fb-loading).addClass(d-none); $(.form-modal-signup-facebook).addClass(d-none); $(.form-modal-signup).addClass(d-none); $(.form-inicial-signup).removeClass(d-none); $(.form-inicial-signup).find(.nr_fone_code_auth).val(); $(.form-inicial-signup).find(.nr_fone_code_auth).trigger(keyup); $(.form-codigo-signup).addClass(d-none); $(.form-inicial-signup).closest(.form-modal-signup).removeClass(d-none); } } else { window.alertMessage(danger, Atenção, data.msg); } } window.setLoginFacebook function(dados, timeout 0) { $(#modal-signup).find(.form-modal-signup).addClass(d-none); fb_go_checkout false; var modal_face $(#modal-signup).find(.form-modal-signup-facebook); modal_face.find(#form-cad-cliente-facebook).addClass(d-none); /* Imagem do Login com o facebook no modal */ var src https://graph.facebook.com/+dados.id+/picture?typelarge; modal_face.find(.fb-img-login).attr(src, src); modal_face.removeClass(d-none); /* Caso email não for autorizado no login com facebook, exibe o campo para que o cliente informe */ if (dados.email) { scope_cliente.login.ds_email dados.email; } scope_cliente.login.ds_nome dados.name; scope_cliente.login.tp_fluxo facebook; scope_cliente.login.id_facebook dados.id; scope_cliente.$apply(); /* Verificar se o Cliente já está logado no site através do Id. */ setTimeout(function(){ var valid_facebook modal_face.ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Account\\ProfileController, ajax_function: getClienteFacebook}); valid_facebook.getDados(returnSetLoginFacebook, JSON.stringify(dados)); }, timeout); } /* Teste sobre a url do facebook */ $(.btn-manual-login-fb).click(function(e) { e.preventDefault(); var app_id 299434561230354; var url_loja btoa(location.origin + location.pathname); if (finish_changed) { localStorage.setItem(@delivery-turbo-redirect-to, checkout); } var url_connect https://www.facebook.com/v7.0/dialog/oauth?client_id+app_id+&displaypopup&response_typecode&redirect_urihttps://deliveryturbo.com.br/fblogin&scopeemail&state+url_loja; /* window.open(url_connect, _blank); */ location.href url_connect; }); }); /* Login com o Facebook */ var url new URL(location.href); var params new URLSearchParams(url.search); /* Retorno sobre a consulta dos dados do Facebook com o token */ window.returnLoginFacebook function(data) { if (datamsg ! ) { window.alertMessage(danger, Ocorreu algo de errado!, Tente novamente mais tarde. Erro: +datamsg+); } else { if (datadados.length > 0) { if (!$(#modal-signup).hasClass(show)) { $(#modal-signup).modal(show); localStorage.setItem(@delivery-turbo-login-fb, true); } dados_facebook datadados0; window.setLoginFacebook(dados_facebook, 1500); } } } /* Consulta dos dados do Facebook com o token */ window.getLoginFacebookManual function(token) { var info {}; infotoken token; info JSON.stringify(info); var login_facebook $(.home).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Common\\HomeController, ajax_function: getIntegrationLoginFB}); login_facebook.getDados(returnLoginFacebook, info); } /* #fblogin é um hash que deve ser validado para obter o token sobre o login com o Facebook */ window.validHashFacebookToken function() { var hash_token (location.hash).split(); if (hash_token0.replace(#,) fblogin) { var token hash_token1; getLoginFacebookManual(token); } else { if($(.home).length > 0) { /* Login para redirecionamento de url */ } } } /script> script> app.controller(ModalProdutoCtrl, function($scope,$window,$timeout) { $scope.produto {}; $scope.initModal function() { /* Sempre que o modal ser iniciado (aberto), zera as informações para evitar que haja duplicidade ou alguma informação armazenada*/ const produtoconst { id: , qtd: 0, vl_produto_padrao: 0, produto_title: , produto_obs: , in_produto_cupom: N, tamanho: null, remocao: , compunico: , vendavinculada: , multicomp: , multiselecao: , todos_adicionais: , qt_estoque: 0, in_movimenta_estoque: N, classificacoes: , ds_tamanho: }; $scope.produto produtoconst; }; /* Informações para exibição no modal do produto*/ $scope.produto_title ; $scope.produto_text ; $scope.produto_img ; $scope.produto_value ; $scope.vl_venda 0; $scope.produto_id ; $scope.qtd_prod 1; $scope.qtd_ms 0; $scope.grupo_tamanho ; $scope.grupo_tamanho_desc ; $scope.tamanhos ; $scope.venda_vinculada ; $scope.grupos_comp ; $scope.grupo_remocao ; $scope.grupos_ordem ; $scope.in_desconto_ativo N; $scope.in_produto_cupom N; $scope.vl_desconto_tamanhos 0; $scope.clearInfoModal function() { $scope.produto_title ; $scope.produto_text ; $scope.produto_img ; $scope.produto_value ; $scope.vl_venda 0; $scope.produto_id ; $scope.qtd_prod 1; $scope.qtd_ms 0; $scope.grupo_tamanho ; $scope.grupo_tamanho_desc ; $scope.tamanhos ; $scope.venda_vinculada ; $scope.grupos_comp ; $scope.grupo_remocao ; $scope.grupos_ordem ; $scope.in_desconto_ativo N; $scope.in_produto_cupom N; $scope.vl_desconto_tamanhos 0; } /* Função definir o produto ($scope.produto) as informações necessárias para o carrinho * Jonatan Kroenke jonatan@datamais.com.br> * Carlos Rodolfo rodolfo@datamais.com.br> */ $scope.selection function($event,type,valor, qtd_ms 0) { var element $event.target; var is_checked element.checked; /* Função para ordenações dos complementos*/ function orderItens(a, b) { if (a.nr_seq_grupo > b.nr_seq_grupo) { return 1; } if (a.nr_seq_grupo b.nr_seq_grupo) { return -1; } else { var a_titulo a.ds_titulo_item.toLowerCase(); var b_titulo b.ds_titulo_item.toLowerCase(); if (a_titulo > b_titulo) { return 1; } if (a_titulo b_titulo) { return -1; } } return 0; } function orderItensByNrOrdem(a, b) { if (a.nr_ordem b.nr_ordem) { return -1; } return 1; } /* Tipo do grupo */ valor.tp_grupo type; if (type remocao) { var item $scope.produto.remocao.findIndex(a > a.fk_id_produto_insumo valor.fk_id_produto_insumo); if ((item -1) && (is_checked)) { /* Adicionar item na lista de remocao */ $scope.produto.remocao.push(valor); $scope.produto.remocao.sort(orderItens); } else if (item > 0 && (!is_checked)) { /* Remover item da lista de remocao */ $scope.produto.remocao.splice(item,1); } } else if (type radio) { var item $scope.produto.compunico.findIndex(a > (a.id_grupo valor.id_grupo)); if (item > 0) { /* Definir valor checkado caso for radio button*/ $scope.produto.compunico.splice(item,1); } valor.ds_sigla C; $scope.produto.compunico.push(valor); $scope.produto.compunico.sort(orderItens); } else if (type venda_vinculada) { var item $scope.produto.vendavinculada.findIndex(a > (a.id_produto valor.id_produto) && (a.fk_id_grupo valor.fk_id_grupo)); if ((qtd_ms > 0) && (item 0)) { valor.ds_sigla V; /* Venda vinculada - add */ valor.qtd qtd_ms; $scope.produto.vendavinculada.push(valor); $scope.produto.vendavinculada.sort(orderItens); } else if ((qtd_ms > 0) && (item > 0)) { /* Venda vinculada - edit (alteracao da quantidade) */ if ($scope.produto.vendavinculadaitem.in_movimenta_estoque S) { var qt_estoque $scope.produto.vendavinculadaitem.qt_estoque; if (qt_estoque > qtd_ms) { $scope.produto.vendavinculadaitem.qtd qtd_ms; } else { window.alertMessage(danger, Estoque indisponível, O item + $scope.produto.vendavinculadaitem.ds_titulo_item + possui apenas + $scope.produto.vendavinculadaitem.qt_estoque + unidades em estoque.) $scope.produto.vendavinculadaitem.qtd_ms $scope.produto.vendavinculadaitem.qtd; } } else { $scope.produto.vendavinculadaitem.qtd qtd_ms; } } else if ((qtd_ms 0) && (item > 0)) { /* Venda vinculada - remover da listagem caso a quantidade seja 0*/ $scope.produto.vendavinculada.splice(item,1); } } else if (type venda_vinculada_radio) { var item $scope.produto.vendavinculada.findIndex(a > (a.fk_id_grupo valor.fk_id_grupo)); if (item > 0) { /* Definir valor checkado caso for radio button*/ $scope.produto.vendavinculada.splice(item,1); } valor.ds_sigla V; valor.qtd 1; $scope.produto.vendavinculada.push(valor); } else if (type multicomp) { var item $scope.produto.multicomp.findIndex(a > a.id_grupo_por_produto valor.id_grupo_por_produto); if ((item -1) && (is_checked)) { valor.ds_sigla C; /* Checkbox - caso seja selecionado */ $scope.produto.multicomp.push(valor); $scope.produto.multicomp.sort(orderItens); } else if (item > 0 && (!is_checked)) { /* Checkbox - caso seja desmarcado */ $scope.produto.multicomp.splice(item,1); } } else if (type multiselecao) { var item $scope.produto.multiselecao.findIndex(a > (a.id_grupo_por_produto valor.id_grupo_por_produto) && (a.id_grupo valor.id_grupo)); if ((qtd_ms > 0) && (item 0)) { valor.ds_sigla C; /* Multi seleção de quantidade (+ -) complementos - add*/ valor.qtd qtd_ms; $scope.produto.multiselecao.push(valor); $scope.produto.multiselecao.sort(orderItens); } else if ((qtd_ms > 0) && (item > 0)) { /* Multi seleção de quantidade (+ -) complementos - edição de qtd */ $scope.produto.multiselecaoitem.qtd qtd_ms; } else if ((qtd_ms 0) && (item > 0)) { /* Multi seleção de quantidade (+ -) complementos - caso seja zerado, remove da lista*/ $scope.produto.multiselecao.splice(item,1); } } /* Armazenar todos os adicionais */ if (type ! remocao) { var todos ...$scope.produto.compunico, ...$scope.produto.vendavinculada,...$scope.produto.multicomp, ...$scope.produto.multiselecao; $scope.produto.todos_adicionais todos; if (todos.length > 0) { if (todos0.nr_ordem) { $scope.produto.todos_adicionais.sort(orderItensByNrOrdem); } else { $scope.produto.todos_adicionais.sort(orderItens); } } } }; $scope.check { tamanho: }; $scope.setTamanhoProduto function (id_tamanho) { var dados_d ; dados_d $scope.tamanhos.filter(a > a.id_tamanho id_tamanho); $scope.grupos_comp dados_d0; /* Verificação do desconto dos tamanhos anteriores a este. */ var valor_desc 0; if (dados_d0.in_padrao ! S) { var tamanhos_anteriores $scope.tamanhos.filter(a > (a.in_padrao S) && (a.vl_desconto_venda > 0)); if (tamanhos_anteriores.length > 0) { $.each(tamanhos_anteriores, function(index, value) { if(value.vl_desconto_venda > 0) { valor_desc + value.vl_desconto_venda; } }); } } $scope.vl_desconto_tamanhos valor_desc; /* Setar desconto do tamanho no produto apenas para mudar o identificador do carrinho para agrupamento ou não. */ if ($scope.in_desconto_ativo S) { $scope.produto.vl_desconto dados_d0.vl_desconto_venda; } else { $scope.produto.vl_desconto 0; } // Quantidade de estoque do tamanho para o produto $scope.produto.qt_estoque dados_d0.qt_estoque; $scope.produto.ds_tamanho dados_d0.ds_tamanho; /* Verificar complementos ativos */ $scope.grupos_comp.grupos.map(function(item, index) { var min item.in_qt_min; var ativos item.complementos.filter(c > (c.in_ativo S)); if (min > ativos.length) { $scope.grupos_comp.gruposindex.in_qt_min ativos.length; if (ativos.length 0) { $scope.grupos_comp.gruposindex.in_grupo_obrigatorio N; } } }); /* Desmarcar todos os complementos selecionados anteriormente, mas não venda vinculada e remoção */ $(#modal-produto).find(.group_complemento:not(.group_venda_vinculada) :input).prop(checked , false); $scope.produto.compunico ; $scope.produto.multiselecao ; $scope.produto.multicomp ; $scope.produto.todos_adicionais $scope.produto.todos_adicionais.filter(ta > ta.ds_sigla V); /* Caso trocar de tamanho, impar a questão da validação dos grupos */ $(.group_complemento).removeClass(not-v); $window.getMinComplementosObrigatoriosGrupoProduto(); $window.getMinVendaVinculadaObrigatoriaGrupoProduto(); $timeout(function(){ /* Verificar grupos de complementos que tenham só um complemento ativo e com valor zerado para já serem selecionados */ $scope.grupos_comp.grupos.map(function(item, index) { var comp_ativos item.complementos.filter(c > (c.in_ativo S)); if ((comp_ativos.length 1) && (comp_ativos0.vl_acrescimo_venda 0)) { if ($(.group_complementodata-grupo+item.id_grupo+).find(.content-multi-sele).length > 0) { $(.group_complementodata-grupo+item.id_grupo+).find(.btn-plus:not(:disabled)).trigger(click); } else { $(.group_complementodata-grupo+item.id_grupo+).find(.check-complemento:not(:disabled)).trigger(click); } } }); /* Verificar grupos de venda vinculada que tenham só um item ativo e com valor zerado */ if ($scope.venda_vinculada.length > 0) { $scope.venda_vinculada.map(function(venda, index) { var venda_ativos venda.itens.filter(v > (v.in_ativo S)); if ((venda_ativos.length 1) && (venda_ativos0.vl_acrescimo_venda 0)) { if (venda.in_qt_min > 0 && venda.in_grupo_obrigatorio S) { if ($(.group_venda_vinculadadata-grupo+venda.id_grupo+).find(.content-multi-sele).length > 0) { $(.group_venda_vinculadadata-grupo+venda.id_grupo+).find(.btn-plus:not(:disabled)).trigger(click); } else { $(.group_venda_vinculadadata-grupo+venda.id_grupo+).find(.check-complemento:not(:disabled)).trigger(click); } } } }); } $window.getTotalProduto($scope.qtd_prod); }); }; /* Chamar função Jquery para calculo dos totais do produto.*/ $scope.callTotalProduto function(qtd_prod) { if ($scope.produto.in_movimenta_estoque S) { if ($scope.produto.qt_estoque > qtd_prod) { $scope.produto.qtd qtd_prod; } else { var ds_tamanho ; if (($scope.produto.ds_tamanho) && ($scope.produto.ds_tamanho ! Padrão)) { ds_tamanho (+$scope.produto.ds_tamanho+); } window.alertMessage(danger, Estoque indisponível, O item + $scope.produto_title + ds_tamanho + possui apenas + $scope.produto.qt_estoque + unidades em estoque.) if ($scope.produto.qtd 0) { $scope.produto.qtd 1; } $scope.qtd_prod $scope.produto.qtd; } } else { $scope.produto.qtd qtd_prod; } $timeout(function(){ $window.getTotalProduto($scope.produto.qtd); }); }; }); var produto_open false; $(document).ready(function () { /* Caso houver o modal de produto na tela */ if($(#modal-produto).length > 0) { var scope_modalproduto angular.element(document.querySelector(#modal-produto-wrap)).scope(); var item_inf $(#modal-produto).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Common\\HomeController, ajax_function: getItem}); var isMobile $(window).width(); if ($(#checkout).length > 0) { item_inf $(#modal-produto).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Common\\HomeController, ajax_function: getItemCupom}); } /* Função pra chamada do Modal do Produto */ window.openModalProduto function(element, id_cupom 0) { if (produto_open) { return false; } produto_open true; scope_modalproduto.initModal(); var has_comp false; /* Verificado o offset no momento do click no item, pra fazer o scroll no mobile caso o modal seja fechado*/ var offset_mobile 0; if (isMobile 992) { offset_mobile element.offset().top; } $(#content-opcoes-item-loading).removeClass(d-none); $(#content-opcoes-item).addClass(d-none); $(#modal-produto).closest(.modal-wrap).find(.modal-action-buttons).find(.btn-include-pedido).attr(disabled, disabled); if(element.find(.img-produto).attr(src) ! undefined) { scope_modalproduto.produto_img element.find(.img-produto).attr(src); } else { scope_modalproduto.produto_img ; } /* Caso for cupom, não permitir alterar a quantidade */ if (id_cupom > 0) { $(#modal-produto).find(.qnt-total).addClass(d-none); $(#modal-produto).find(.qnt-total .btn-minus).attr(disabled, disabled); $(#modal-produto).find(.qnt-total .btn-plus).attr(disabled, disabled); scope_modalproduto.produto.in_produto_cupom S; } scope_modalproduto.produto_title element.find(.title-produto).html(); scope_modalproduto.produto_text element.find(.text-produto).html(); scope_modalproduto.produto_id element.attr(data-id_p); scope_modalproduto.qtd_prod 1; if (scope_modalproduto.produto.in_produto_cupom S) { scope_modalproduto.produto_value element.find(.vl-venda-produto).html(); } if(element.attr(data-has_comp) S) { $(#content-opcoes-item).find(.modal-header).find(h1).html(FAÇA SEU PEDIDO); /* $(#content-opcoes-item).find(.modal-body).show(); */ /* $(#content-opcoes-item).find(.modal-footer).removeClass(position-absolute); */ /* $(#content-opcoes-item).removeClass(position-absolute); */ $(#content-opcoes-item).attr(data-has_comp, S); item_inf.getInfoProduto(scope_modalproduto.produto_id, id_cupom); has_comp true; } else { $(#content-opcoes-item).find(.modal-header).find(h1).html(ADICIONE AO PEDIDO); /* $(#content-opcoes-item).find(.modal-body).hide(); */ $(#content-opcoes-item).attr(data-has_comp, N); /* Caso não possuir complementos e não for mobile, mantem os botões de quantidade e de incluir no pedido no footer do modal */ // if (isMobile > 768) { // $(#content-opcoes-item).find(.modal-footer).addClass(position-absolute); // } else { // $(#content-opcoes-item).addClass(position-absolute); // } /* Obter valor de desconto caso não possua complementos e apenas um tamanho */ var vl_desconto (element.find(.vl-percentual-desc-produto).html() ! undefined ? parseFloat(element.find(.vl-percentual-desc-produto).html()).toFixed(2) : 0); var vl_venda parseFloat(scope_modalproduto.produto_value.replace(R$,).replace(,,.)).toFixed(2); if (vl_desconto > 0) { vl_venda vl_venda - vl_desconto; vl_venda (vl_venda).toFixed(2); } scope_modalproduto.produto_value R$ +(vl_venda).replace(.,,); scope_modalproduto.vl_venda vl_venda; } /* Campo de Observação no Produto*/ if(element.attr(data-in_obs) S) { $(#modal-produto).find(.input-obs-prod).removeClass(d-none); } else { $(#modal-produto).find(.input-obs-prod).addClass(d-none); } scope_modalproduto.$apply(); scope_modalproduto.ready true; setTimeout(function(){ if (!(has_comp)) { $(#content-opcoes-item-loading).addClass(d-none); $(#content-opcoes-item).removeClass(d-none); if (isMobile 992) { $(#modal-produto).closest(.modal-wrap).find(.modal-action-buttons).find(.btn-include-pedido).removeAttr(disabled); } } /* Caso for item de cupom e não possuir complementos e remoção, ja adicionar ao carrinho. */ if (id_cupom > 0) { $(#modal-produto).find(.btn-include-pedido).removeAttr(disabled); var tam element.attr(data-tam); var rem element.attr(data-rem); var comp element.attr(data-comp); var id_tamanho element.attr(data-id_tamanho); var in_padrao element.attr(data-in_tamanho_padrao); if ((tam > 0) && (id_tamanho > 0)) { if ((rem 0) && (comp 0)) { has_comp false; } if ((in_padrao ! S) || (tam > 1)) { scope_modalproduto.produto.tamanho id_tamanho; scope_modalproduto.$apply(); scope_modalproduto.ready true; } } } /* Se for produto de cupom e não possui complementos, já adiciona no carrinho */ if ((id_cupom > 0) && !(has_comp)) { $(#modal-produto).find(.btn-include-pedido:not(:disabled)).trigger(click); produto_open false; } else { $(#modal-produto).modal(show); if (id_cupom > 0) { $(#modal-produto).css(pointer-events, none); $(#modal-produto).find(.close).removeClass(d-lg-block); if (isMobile 992) { $(.modal-open).find(.fixed-top button).attr(disabled, disabled); $(.modal-open).find(.fixed-top button span).html(PRODUTO DO CUPOM); $(#modal-produto).closest(.modal-wrap).find(.modal-action-buttons).find(.btn-minus).attr(disabled, disabled); $(#modal-produto).closest(.modal-wrap).find(.modal-action-buttons).find(.btn-plus).attr(disabled, disabled); $(#modal-produto).closest(.modal-wrap).find(.modal-action-buttons).find(.qnt-total).addClass(d-none); } } } /* Indicar offset caso seja mobile */ $(#modal-produto).attr(offset, offset_mobile); /* Referente ao histórico para quando voltar no mobile */ //window.history.pushState(null, null, this.href); window.makeHashProduto(scope_modalproduto.produto_id); /* Evento Facebook Pixel */ fbq(track, ViewContent, { value: scope_modalproduto.vl_venda, currency: BRL, contents: { id: scope_modalproduto.produto_id, quantity: 1 }, content_name: scope_modalproduto.produto_title, content_type: product }); /* Evento Google Analytics */ gtag(event, view_item, { currency: BRL, value: scope_modalproduto.vl_venda, items: {item_id: scope_modalproduto.produto_id, item_name: scope_modalproduto.produto_title, quantity: 1} }); },100); } /* Exibição do modal do produto conforme item clicado */ $(document).delegate(.ex-md-p, click, function(e){ e.preventDefault(); openModalProduto($(this)); }); $(document).delegate(.ex-md-p-cupom, click, function(e){ e.preventDefault(); var id_cupom $(this).attr(data-cupom); openModalProduto($(this), id_cupom); }); $(#modal-produto).on(shown.bs.modal, function () { if($(window).width() 992) { $(this).closest(.modal-wrap).find(.modal-action-buttons).slideDown(fast); $(body).addClass(modal-open); $(html, body).animate({scrollTop: $(this).offset().top - 20}); } else { $(this).closest(.modal-wrap).find(.modal-action-buttons).slideUp(fast); } }); /* Scroll da div que possui os complementos ao fechar o modal */ $(#modal-produto).on(hide.bs.modal, function () { $(#content-opcoes-item).find(.modal-body).scrollTop(0); $(this).closest(.modal-wrap).find(.modal-action-buttons).slideUp(fast); $(.modal-open).find(.fixed-top button).removeAttr(disabled); $(.modal-open).find(.fixed-top button span).html(VOLTAR); var offset 0; /* Caso for a partir do Banner */ var from_banner $(this).attr(from_banner); if (from_banner undefined) { offset $(#modal-produto).attr(offset); } else { offset from_banner; } $(this).removeAttr(from_banner); /* / Caso for a partir do Banner */ if (parseInt(offset) > 0) { $(html, body).animate({scrollTop: parseInt(offset) - 200}); } var url_close_modal location.origin+location.pathname+location.search; /* Limpa o Hash da URL */ window.history.pushState(null, null, url_close_modal); }); /* Quando o modal for fechado e não estiver mais visivel, zerar informações do mesmo através do InitModal e ClearModal */ $(#modal-produto).on(hidden.bs.modal, function () { /* Remover disabled do botão de incluir o produto no carrinho */ $(.btn-include-pedido).removeAttr(disabled); /* Limpar o campo de Observação do modal */ $(.input-obs-prod).find(.obs-produto-modal).val(); produto_open false; scope_modalproduto.initModal(); scope_modalproduto.clearInfoModal(); scope_modalproduto.$apply(); scope_modalproduto.ready true; scope_cliente.id_cardapio_venda_sugerida 0; scope_cliente.$apply(); }); /* Função para ordenações dos grupos de complementos*/ function orderGruposComp(a, b) { if (a.nr_ordem > b.nr_ordem) { return 1; } if (a.nr_ordem b.nr_ordem) { return -1; } else { if (a.id_grupo > b.id_grupo) { return 1; } if (a.id_grupo b.id_grupo) { return -1; } } return 0; } // Obter o valor minimo do complemento obrigatorio window.getMinComplementosObrigatoriosGrupoProduto function(apply false) { var vl_min_comp_obrigatorio 0; scope_modalproduto.grupos_comp.grupos.map(function(item, index) { var vl_min_comp 0; if (item.complementos.length > 0) { if (item.in_grupo_obrigatorio S && (item.in_qt_min 1 && item.in_qt_max 1)) { vl_min_comp item.complementos.reduce((min, obj) > { return objvl_acrescimo_venda min ? objvl_acrescimo_venda : min; }, Infinity); vl_min_comp_obrigatorio + vl_min_comp; } item.complementos.map(ic > { var vl_exibicao (ic.vl_acrescimo_venda - vl_min_comp); vl_exibicao window.roundNumber(vl_exibicao,2); ic.vl_exibicao vl_exibicao; }); } scope_modalproduto.grupos_comp.gruposindex.vl_min_comp vl_min_comp; }); if (apply) { scope_modalproduto.$apply(); } return vl_min_comp_obrigatorio; } // Obter o valor minimo das vendas vinculadas obrigatorio window.getMinVendaVinculadaObrigatoriaGrupoProduto function(apply false) { var vl_min_vv_obrigatoria 0; if (scope_modalproduto.venda_vinculada.length > 0) { scope_modalproduto.venda_vinculada.map(function(venda, index) { var vl_min_item 0; if (venda.itens.length > 0) { if (venda.in_grupo_obrigatorio S && (venda.in_permite_multi_selecao ! S || (venda.in_qt_min 1 && venda.in_qt_max 1))) { vl_min_item venda.itens.reduce((min, obj) > { return objvl_acrescimo_venda min ? objvl_acrescimo_venda : min; }, Infinity); vl_min_vv_obrigatoria + vl_min_item; } venda.itens.map(i > { var vl_exibicao (i.vl_acrescimo_venda - vl_min_item); vl_exibicao window.roundNumber(vl_exibicao,2); i.vl_exibicao vl_exibicao; }); } venda.vl_min_item vl_min_item; }); } if (apply) { scope_modalproduto.$apply(); } return vl_min_vv_obrigatoria; } /** Informações sobre o produto (Tamanhos, Grupos e Complementos) * dados informações obtidas; */ window.setInfoProduto function(dados) { if (dadostamanhos.length 0) { window.alertMessage(danger, Atenção, Produto indisponível neste momento.); setTimeout(() > { $(#modal-produto).modal(hide); }, 500); return; } scope_modalproduto.tamanhos dadostamanhos; scope_modalproduto.venda_vinculada dadosvenda_vinculada; scope_modalproduto.vl_venda dadosvl_venda; scope_modalproduto.grupo_tamanho dadosds_grupo_tamanho; scope_modalproduto.grupo_tamanho_desc dadosds_texto_tamanho; scope_modalproduto.grupo_remocao dadosremocao; scope_modalproduto.in_desconto_ativo dadosin_desconto_ativo; scope_modalproduto.produto.in_produto_cupom dadosin_produto_cupom; scope_modalproduto.produto.in_movimenta_estoque dadosin_movimenta_estoque; scope_modalproduto.produto.classificacoes dadosclassificacoes; var tamanho_padrao scope_modalproduto.tamanhos.filter(a > a.in_padrao S); /* Caso o tamanho padrão não esteja disponivel pega o primeiro disponivel (07-10-2019 - Jonatan) */ var in_padrao true; if (tamanho_padrao.length 0) { in_padrao false; tamanho_padrao.push(scope_modalproduto.tamanhos0); } scope_modalproduto.grupos_comp tamanho_padrao0; //scope_modalproduto.check.tamanho tamanho_padrao0.id_tamanho; if ((scope_modalproduto.tamanhos.length > 1) || (!in_padrao)) { scope_modalproduto.produto.tamanho tamanho_padrao0.id_tamanho; } // Quantidade de estoque do primeiro tamanho scope_modalproduto.produto.qt_estoque tamanho_padrao0.qt_estoque; scope_modalproduto.produto.ds_tamanho tamanho_padrao0.ds_tamanho; /* Verificar complementos ativos */ scope_modalproduto.grupos_comp.grupos.map(function(item, index) { var ordem { id_grupo: item.id_grupo, nr_ordem: item.nr_ordem } scope_modalproduto.grupos_ordem.push(ordem); if (item.complementos.length > 0) { item.complementos.map(ic > { ic.nr_ordem item.nr_ordem; }); } var min item.in_qt_min; var ativos item.complementos.filter(c > (c.in_ativo S)); if (min > ativos.length && item.in_permite_multi_selecao ! S) { scope_modalproduto.grupos_comp.gruposindex.in_qt_min ativos.length; if (ativos.length 0) { scope_modalproduto.grupos_comp.gruposindex.in_grupo_obrigatorio N; } } }); /* Verificar itens de remoção que não estão ativos no sistema para já aparecerem checkados (feito na tela) e adiconados ao item para remover (Feito aqui) */ if (scope_modalproduto.grupo_remocao.length > 0) { if (scope_modalproduto.grupo_remocao0.itens_remocao.length > 0) { var remocao_inativos scope_modalproduto.grupo_remocao0.itens_remocao.filter(r > r.in_ativo ! S); $.each(remocao_inativos, function(index, value) { scope_modalproduto.produto.remocao.push(value); }); } } // Iniciar var sobre quantidade da seleção if (scope_modalproduto.venda_vinculada.length > 0) { scope_modalproduto.venda_vinculada.map(function(venda, index) { if (venda.itens.length > 0) { var ordem { id_grupo: venda.id_grupo, nr_ordem: venda.nr_ordem } scope_modalproduto.grupos_ordem.push(ordem); venda.itens.map(i > { i.qtd_ms 0; i.nr_ordem venda.nr_ordem; }); } }); } var vl_min_vv_obrigatoria window.getMinVendaVinculadaObrigatoriaGrupoProduto(false); if (vl_min_vv_obrigatoria > 0) { vl_min_vv_obrigatoria window.roundNumber(vl_min_vv_obrigatoria,2); } var vl_min_comp_obrigatorio window.getMinComplementosObrigatoriosGrupoProduto(false); if (vl_min_comp_obrigatorio > 0) { vl_min_comp_obrigatorio window.roundNumber(vl_min_comp_obrigatorio, 2); } var valor_produto parseFloat(scope_modalproduto.vl_venda) + vl_min_vv_obrigatoria + vl_min_comp_obrigatorio; scope_modalproduto.produto_value R$ +(valor_produto).toFixed(2).replace(.,,); /* Verificação do desconto no tamanho padrão */ if (scope_modalproduto.in_desconto_ativo S) { if (tamanho_padrao0.vl_desconto_venda > 0) { /* Utilizado somente valor de venda retornado da requisição (13/04/2021). */ /* var valor_produto parseFloat(scope_modalproduto.produto_value.replace(R$,).replace(,,.)).toFixed(2);*/ scope_modalproduto.produto_value R$ +(valor_produto - tamanho_padrao0.vl_desconto_venda).toFixed(2).replace(.,,); } } else { tamanho_padrao0.vl_desconto_venda 0; } scope_modalproduto.grupos_ordem.sort(orderGruposComp); scope_modalproduto.$apply(); scope_modalproduto.ready true; if(scope_modalproduto.ready) { /* Caso não seja tamanho padrão o primeiro selecionado, seta o tamanho para obter os totais podendo ter valor adicional */ if (!in_padrao) { $(#modal-produto).find(inputnametamanho+tamanho_padrao0.id_tamanho+).prop(checked, true); scope_modalproduto.setTamanhoProduto(tamanho_padrao0.id_tamanho); } /* Verificar grupos de complementos que tenham só um complemento ativo e com valor zerado */ scope_modalproduto.grupos_comp.grupos.map(function(item, index) { var comp_ativos item.complementos.filter(c > (c.in_ativo S)); if ((comp_ativos.length 1) && (comp_ativos0.vl_acrescimo_venda 0)) { if (item.in_qt_min > 0 && item.in_grupo_obrigatorio S) { if ($(.group_complementodata-grupo+item.id_grupo+).find(.content-multi-sele).length > 0) { $(.group_complementodata-grupo+item.id_grupo+).find(.btn-plus:not(:disabled)).trigger(click); } else { $(.group_complementodata-grupo+item.id_grupo+).find(.check-complemento:not(:disabled)).trigger(click); } } } }); /* Verificar grupos de venda vinculada que tenham só um item ativo e com valor zerado */ scope_modalproduto.venda_vinculada.map(function(venda, index) { var venda_ativos venda.itens.filter(v > (v.in_ativo S)); if ((venda_ativos.length 1) && (venda_ativos0.vl_acrescimo_venda 0)) { if (venda.in_qt_min > 0 && venda.in_grupo_obrigatorio S) { if ($(.group_venda_vinculadadata-grupo+venda.id_grupo+).find(.content-multi-sele).length > 0) { $(.group_venda_vinculadadata-grupo+venda.id_grupo+).find(.btn-plus:not(:disabled)).trigger(click); } else { $(.group_venda_vinculadadata-grupo+venda.id_grupo+).find(.check-complemento:not(:disabled)).trigger(click); } } } }); // Validar exibição da descrição completa das vendas vinculadas setTimeout(() > { if ($(.ds_item_completa_vv_modal).length > 0) { $(.ds_item_completa_vv_modal).each(function() { $(this).css(opacity, 0); var textLineCount $(this)0.getClientRects().length; if (textLineCount > 2) { $(this).addClass(comp-desc-ellipsis) $(this).parent().find(.show_ds_item_completa_vv_modal).removeClass(d-none); } $(this).css(opacity, 1); }); } }, 100); $(#content-opcoes-item-loading).addClass(d-none); $(#content-opcoes-item).removeClass(d-none); if ($(window).width() 992) { $(#modal-produto).closest(.modal-wrap).find(.modal-action-buttons).find(.btn-include-pedido).removeAttr(disabled); } } }; $(document).delegate(.ds_item_completa_vv_modal, click, function(e) { e.preventDefault(); e.stopPropagation(); if ($(this).hasClass(comp-desc-ellipsis)) { $(this).parent().find(.show_ds_item_completa_vv_modal).trigger(click); } }); $(document).delegate(.show_ds_item_completa_vv_modal, click, function(e) { e.preventDefault(); $(this).parent().find(.ds_item_completa_vv_modal).removeClass(comp-desc-ellipsis); $(this).parent().find(.ds_item_completa_vv_modal).addClass(comp-desc); $(this).addClass(d-none); }); /** Informações sobre os grupos de Complementos */ window.setGruposProduto function(grupos) { scope_modalproduto.grupos_comp grupos; scope_modalproduto.$apply(); scope_modalproduto.ready true; }; /* Realização dos calculos do produto final no modal */ window.getTotalProduto function(qtd_prod 1) { var valor_total scope_modalproduto.vl_venda; var valor_multi_selecao 0; var has_comp $(#content-opcoes-item).attr(data-has_comp); var has_desc false; // Verificar os menores valores dos complementos do grupo var valor_min_adicionais 0; if (scope_modalproduto.grupos_comp.grupos ! undefined && scope_modalproduto.grupos_comp.grupos.length > 0) { scope_modalproduto.grupos_comp.grupos.map(function(item, index) { if (item.vl_min_comp > 0) { valor_min_adicionais + item.vl_min_comp; } }); } if (scope_modalproduto.venda_vinculada.length > 0) { scope_modalproduto.venda_vinculada.map(function(venda, index) { if (venda.vl_min_item > 0) { valor_min_adicionais + venda.vl_min_item; } }); } if (valor_min_adicionais > 0) { valor_min_adicionais window.roundNumber(valor_min_adicionais, 2); } var valor_adicionais valor_min_adicionais; if (has_comp S) { $(#modal-produto :input).each(function(index, el) { if($(el).is(:checked) && ($(el).attr(data-valor_adicional) ! undefined)) { var vl parseFloat($(el).attr(data-valor_adicional)); var box_grupo $(el).closest(.group_complemento); var vl_adicional 0; if (box_grupo.length > 0) { var vl_min_grupo box_grupo.attr(data-min-valor-adicional); if (vl_min_grupo) { vl_min_grupo parseFloat(vl_min_grupo); if (vl > vl_min_grupo) { vl_adicional vl - vl_min_grupo; vl_adicional window.roundNumber(vl_adicional,2); } } else { vl_adicional vl; } } else { vl_adicional vl; } valor_adicionais (valor_adicionais + vl_adicional); } /* Valor adciional de acrescimo correspondente ao valor do desconto do tamanho anterior */ if($(el).is(:checked) && ($(el).attr(data-valor_adicional_anterior) ! undefined)) { var vl_anterior parseFloat($(el).attr(data-valor_adicional_anterior)); valor_total (valor_total + vl_anterior); } if($(el).is(:checked) && ($(el).attr(data-valor_desconto) ! undefined)) { var vl_desconto parseFloat($(el).attr(data-valor_desconto)); valor_total (valor_total - vl_desconto); has_desc true; } }); if (!has_desc) { if (scope_modalproduto.grupos_comp.vl_desconto_venda > 0) { valor_total (valor_total - scope_modalproduto.grupos_comp.vl_desconto_venda); scope_modalproduto.produto.vl_desconto scope_modalproduto.grupos_comp.vl_desconto_venda; } } /* Calculo relacionado aos itens da Multi seleção (+ e -) ao produto */ if($(.content-multi-sele).length > 0) { $(.content-multi-sele).each(function(i_ms, e_ms) { var qtd_total_ms 0; var qtd_changed $(e_ms).attr(data-count_checked); var qtd_max_ms parseInt($(e_ms).attr(data-grupo_qt_max)); var qtd_min_ms parseInt($(e_ms).attr(data-grupo_qt_min)); var box_grupo $(e_ms).closest(.group_complemento); var vl_total_vv 0; var vl_min_grupo 0; if (box_grupo.length > 0) { vl_min_grupo box_grupo.attr(data-min-valor-adicional); } $(e_ms).find(.value_grupo_ms).each(function(i, e) { var qtd_ms $(e).val(); var valor_ms $(e).attr(data-valor_adicional); if((qtd_ms > 0) && (qtd_changed qtd_max_ms)) { qtd_total_ms + parseInt(qtd_ms); vl_total_vv + parseFloat(valor_ms * qtd_ms) * qtd_prod; } }); if (vl_total_vv > vl_min_grupo) { valor_multi_selecao + window.roundNumber((vl_total_vv - vl_min_grupo),2); } $(e_ms).attr(data-count_checked, qtd_total_ms); if (qtd_total_ms > qtd_min_ms) { $(e_ms).closest(.not-v).find(.campo-error).removeClass(campo-error); $(e_ms).closest(.not-v).removeClass(not-v); } if(qtd_total_ms qtd_max_ms) { /* Atingiu o limite da quantidade máxima na multi seleção */ $(e_ms).find(.btn-plus:not(.vv-disabled, .ms-disabled)).attr(disabled,disabled); } else { $(e_ms).find(.btn-plus:not(.vv-disabled, .ms-disabled)).removeAttr(disabled); } /*Exemplo de validação que pode ser utilziada ao tentar se burlada a quantidade */ if(qtd_total_ms > qtd_max_ms) { alert(Quantidade total do campo é maior que o permitido.); $(#modal-produto).modal(hide); } }); } } valor_total (valor_total + valor_adicionais); /* Desconto dos tamanhos anteriores ao selecionado */ if (scope_modalproduto.vl_desconto_tamanhos > 0) { valor_total valor_total - scope_modalproduto.vl_desconto_tamanhos; } /* Somatória dos totais */ valor_total (valor_total * qtd_prod) + (valor_multi_selecao); scope_modalproduto.produto_value R$ +valor_total.toFixed(2).toString().replace(.,,); } /* Validação das obrigatoriedades do grupos de complementos */ window.verifyGroupComplemento function(this_) { var qtd_min this_.closest(.comp-content).attr(data-grupo_qt_min); var qtd_max this_.closest(.comp-content).attr(data-grupo_qt_max); var count_checked 0; this_.closest(.comp-content).find(.check-complemento:checked:not(:disabled)).each(function(i,e){ count_checked++; }); if((count_checked qtd_max) && (this_.closest(.comp-content).find(typecheckbox).length > 0)) { this_.closest(.comp-content).find(.check-complemento:not(:checked)).attr(disabled, disabled); /* Adicionar class para aparencia de disabled */ this_.closest(.comp-content).find(.check-complemento:not(:checked)).closest(label).find(.checkmark).addClass(check-grey); } else if(count_checked qtd_max) { this_.closest(.comp-content).find(.check-complemento:not(.inactive)).removeAttr(disabled); /* Remover class para aparencia de disabled */ this_.closest(.comp-content).find(.check-complemento:not(.inactive)).closest(label).find(.checkmark).removeClass(check-grey); } this_.closest(.comp-content).attr(data-count_checked, count_checked); var valid validGroupComplementos(qtd_min, qtd_max, count_checked); if (valid){ this_.closest(.group_complemento).find(.obs-grupo).removeClass(campo-error); } else { this_.closest(.group_complemento).find(.obs-grupo).addClass(campo-error); } } $(document).delegate(.check-complemento, change, function(){ verifyGroupComplemento($(this)); }); /** * Função para validar se o grupo de complementos é valido ou não referente a obrigatoriedade * qtd_min quantidade minima permita para o grupo * qtd_max quantidade maxima permitida para o grupo * qtd_check quantidade de complementos checkados no grupo * * return true ou false Caso for valido ou não */ window.validGroupComplementos function(qtd_min, qtd_max, qtd_check){ var valid false; if(qtd_check > qtd_min && qtd_check qtd_max) { valid true; } return valid; } /* Ações do botão para incluir o produto no carrinho (Modal)*/ $(document).delegate(.btn-include-pedido, click, function(event){ event.preventDefault(); $(this).attr(disabled, disabled); var has_comp $(#content-opcoes-item).attr(data-has_comp); $(.group_complemento).removeClass(not-v); if (has_comp S) { $(.group_complemento).find(.comp-content).each(function(i,e){ var qtd_check $(e).attr(data-count_checked); var qtd_min $(e).data(grupo_qt_min); var qtd_max $(e).data(grupo_qt_max); var valid validGroupComplementos(qtd_min, qtd_max, qtd_check); if(!valid){ $(e).closest(.group_complemento).find(.obs-grupo).addClass(campo-error); $(e).closest(.group_complemento).addClass(not-v); } else { $(e).closest(.group_complemento).find(.obs-grupo).removeClass(campo-error); } }); } if($(.group_complemento.not-v).length > 0) { $(this).removeAttr(disabled); var div_scroll $(#content-opcoes-item).find(.modal-body); var isMobile $(window).width(); var scroll_mobile 0; /* Caso for Mobile */ if (isMobile 768) { div_scroll $(#modal-produto); scroll_mobile 55; /* Script para scroll no modal mobile */ var scrollOffset $(.not-v).first().offset().top - div_scroll.offset().top + div_scroll.scrollTop() - scroll_mobile; function customScrollTo(to, duration) { var start $(window).scrollTop(), change to - start, currentTime 500, increment 10; var animateScroll function(){ currentTime + increment; var val Math.easeInOutQuad(currentTime, start, change, duration); window.scrollTo(to,val); if(currentTime duration) { setTimeout(animateScroll, increment); } }; animateScroll(); } Math.easeInOutQuad function (t, b, c, d) { t / d/2; if (t 1) return c/2*t*t + b; t--; return -c/2 * (t*(t-2) - 1) + b; }; customScrollTo(scrollOffset, 1000); } else { div_scroll.animate({ scrollTop: $(.not-v).first().offset().top - div_scroll.offset().top + div_scroll.scrollTop() - scroll_mobile }); } } else { includeProdutoCarrinho(); } }); /** * Função para inclusão do produto no carrinho, fazendo o envio das informações por AJAX para criação ou edição da sessão * e retorno das informações necessárias para o carrinho. * Jonatan Kroenke jonatan@datamais.com.br> */ window.includeProdutoCarrinho function() { /* Ajuste para recalcular o produto Motivo: caso não seja selecioando nenhum adicional no item e o mesmo possua desconto. */ getTotalProduto(); var dados ; /* Validação para não permitir pedidos acima de do pedido maximo permitido */ var total_produto parseFloat(scope_modalproduto.produto_value.replace(R$,).replace(,,.)).toFixed(2); var total_carrinho (scope_carrinho.cart.vl_total).toFixed(2); scope_modalproduto.produto.id scope_modalproduto.produto_id; scope_modalproduto.produto.vl_produto_padrao Number.parseFloat(scope_modalproduto.vl_venda); scope_modalproduto.produto.produto_title scope_modalproduto.produto_title; scope_modalproduto.produto.qtd scope_modalproduto.qtd_prod; if (scope_cliente.id_cardapio_venda_sugerida) { if (scope_cliente.id_cardapio_venda_sugerida > 0) { scope_modalproduto.produto.id_cardapio_venda_sugerida scope_cliente.id_cardapio_venda_sugerida; } } /* Campo de Observação do produto*/ var obs_prod $(.input-obs-prod).find(.obs-produto-modal).val(); if ((obs_prod ! ) && (obs_prod ! undefined)) { scope_modalproduto.produto.produto_obs obs_prod; } if(scope_modalproduto.produto.id.length > 0) { if ((parseFloat(total_produto) + parseFloat(total_carrinho)) scope_carrinho.vl_pedido_max) { /* Evento Facebook Pixel */ fbq(track, AddToCart, { value: parseFloat(total_produto), currency: BRL, contents: { id: scope_modalproduto.produto.id, quantity: scope_modalproduto.produto.qtd }, content_name: scope_modalproduto.produto.produto_title, content_type: product }); /* Evento Google Analytics */ gtag(event, add_to_cart, { currency: BRL, value: parseFloat(total_produto), items: {item_id: scope_modalproduto.produto.id, item_name: scope_modalproduto.produto.produto_title, quantity: scope_modalproduto.produto.qtd} }); dados JSON.stringify(scope_modalproduto.produto, function( key, value ) { if( key $$hashKey ) { return undefined; } return value; }); /* Aplicar o cupom qu está em temp no carrinho de forma principal */ if (scope_modalproduto.produto.in_produto_cupom S) { if (scope_carrinho.cart.cupom_temp) { const cupom_temp scope_carrinho.cart.cupom_temp; if (cupom_temp.id_cupom > 0 && cupom_temp.tp_desconto item_gratis) { scope_carrinho.cart.cupom cupom_temp; scope_carrinho.cart.cupom_temp {}; } } } var send_prod $(#modal-produto).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Common\\HomeController, ajax_function: setProdutoCarrinho}).setProdutoCarrinho(dados); } else { alert(Valor total do pedido não deve ultrapassar R$ +(scope_carrinho.vl_pedido_max).toFixed(2).replace(.,,)+. Em caso de dúvidas, por favor entre em contato conosco.); $(.btn-include-pedido).removeAttr(disabled); } } else { alert(Ocorreu algo de errado ao adicionar o produto ao carrinho. Tente novamente mais tarde.); $(.btn-include-pedido).removeAttr(disabled); } } } }); /script> script> app.controller(ModalAgrupadorCtrl, function($scope,$window,$timeout) { $scope.modal {}; $scope.produto {}; $scope.categorias ; $scope.initModal function() { /* Sempre que o modal ser iniciado (aberto), zera as informações para evitar que haja duplicidade ou alguma informação armazenada*/ const infoconst { categoria: , qtd: 1 }; const produtoconst { id: , qtd: 0, vl_produto_padrao: 0, in_produto_cupom: N, produto_title: , in_movimenta_estoque: N, qt_estoque: 0 }; $scope.modal infoconst; $scope.produto produtoconst; }; /* Chamar função Jquery para calculo dos totais no modal do produto.*/ $scope.callTotalProduto function(qtd) { if ($scope.produto.in_movimenta_estoque S) { if ($scope.produto.qt_estoque > qtd) { $scope.produto.qtd qtd; $scope.modal.qtd qtd; } else { var ds_tamanho ; if (($scope.produto.ds_tamanho) && ($scope.produto.ds_tamanho ! Padrão)) { ds_tamanho (+$scope.produto.ds_tamanho+); } window.alertMessage(danger, Estoque indisponível, O item + $scope.produto.produto_title + ds_tamanho + possui apenas + $scope.produto.qt_estoque + unidades em estoque.) if ($scope.produto.qtd 0) { $scope.produto.qtd 1; } $scope.modal.qtd $scope.produto.qtd; } } else { $scope.modal.qtd qtd; } }; /* Setar o produto selecionado no modal e disabilitar os demais produtos */ $scope.setProdutoCategoria function(id) { var produto $scope.modal.categoria0.produtos.filter(a > a.id_produto id); if ($scope.produto.id id) { $scope.produto.id ; $scope.produto.vl_produto_padrao 0; $scope.produto.produto_title ; $scope.produto.in_movimenta_estoque N; $scope.produto.qt_estoque 0; } else { $scope.produto.id produto0.id_produto; if (produto0.in_desconto_ativo S) { $scope.produto.vl_produto_padrao produto0.vl_venda - produto0.vl_desconto; } else { $scope.produto.vl_produto_padrao produto0.vl_venda; } $scope.produto.produto_title produto0.ds_titulo_item; $scope.produto.in_movimenta_estoque produto0.in_movimenta_estoque; $scope.produto.qt_estoque produto0.qt_estoque; $scope.callTotalProduto($scope.modal.qtd); } $window.changeProdutosDisabled($scope.produto.id); $window.makeHashProduto($scope.produto.id); if ($scope.produto.id) { /* Evento Facebook Pixel */ fbq(track, ViewContent, { value: $scope.produto.vl_produto_padrao, currency: BRL, contents: { id: $scope.produto.id, quantity: 1 }, content_name: $scope.produto.produto_title, content_type: product }); /* Evento Google Analytics */ gtag(event, view_item, { currency: BRL, value: $scope.produto.produto_title, items: {item_id: $scope.produto.id, item_name: $scope.produto.produto_title, quantity: 1} }); } }; $scope.$watch(ready, function(){ if($scope.ready true) { /* para não aparecer as tags do angular */ $(#modal-agrupador-wrap).removeClass(d-none); } }); }); $(document).ready(function () { if ($(#modal-agrupador-wrap).length > 0) { /* Scope do Modal de Agrupadores */ var scope_modalagrupador angular.element(document.querySelector(#modal-agrupador-wrap)).scope(); window.setCategoriasAgrupador function(categorias) { scope_modalagrupador.categorias categorias; scope_modalagrupador.$apply(); scope_modalagrupador.ready true; } /* Usado em common_scripts, para obter as categorias e conseguir validar a hash das babidas */ window.getCategoriasAgrupador function() { return scope_modalagrupador.categorias; } /* Categoria da Home ao ser clicada */ $(document).delegate(.ex-md-agrupador, click, function(e){ e.preventDefault(); scope_modalagrupador.initModal(); changeProdutosDisabled(); /* Verificado o offset no momento do click no item, pra fazer o scroll no mobile caso o modal seja fechado*/ var offset_mobile 0; if ($(document).width() 992) { offset_mobile $(this).offset().top; } var id $(this).attr(data-id); var categoria scope_modalagrupador.categorias.filter(a > a.id_grupo id); scope_modalagrupador.modal.categoria categoria; scope_modalagrupador.$apply(); scope_modalagrupador.ready true; if ((scope_modalagrupador.ready) && (scope_modalagrupador.modal.categoria.length > 0)) { $(#modal-agrupador-wrap).find(.modal).modal(show); $(#modal-agrupador-wrap).attr(offset, offset_mobile); } }); /* Desabilitar produtos conforme seleção ou parametro */ window.changeProdutosDisabled function(id) { if ((id ! ) && (id > 0)) { $(#modal-agrupador-wrap).find(.modal).find(.card-categoria).css(opacity,0.3); $(#modal-agrupador-wrap).find(.modal).find(.card-categoriadata-id+id+).css(opacity,1); } else { $(#modal-agrupador-wrap).find(.modal).find(.card-categoria).css(opacity,1); $(#modal-agrupador-wrap).find(.modal).find(.check-produto-categoria).prop(checked, false); } } /** * Função para inclusão do produto da categoria no carrinho, fazendo o envio das informações por AJAX para criação ou edição da sessão * e retorno das informações necessárias para o carrinho. * Jonatan Kroenke jonatan@datamais.com.br> */ window.includeProdutoCategoriaCarrinho function() { var dados ; /* Validação para não permitir pedidos acima de do pedido maximo permitido */ var total_produto parseFloat(scope_modalagrupador.produto.vl_produto_padrao); var total_carrinho (scope_carrinho.cart.vl_total).toFixed(2); if((scope_modalagrupador.produto.id > 0) && (scope_modalagrupador.produto.id ! )) { if ((parseFloat(total_produto) + parseFloat(total_carrinho)) scope_carrinho.vl_pedido_max) { if (scope_cliente.id_cardapio_venda_sugerida) { if (scope_cliente.id_cardapio_venda_sugerida > 0) { scope_modalagrupador.produto.id_cardapio_venda_sugerida scope_cliente.id_cardapio_venda_sugerida; } } /* Evento Facebook Pixel */ fbq(track, AddToCart, { value: parseFloat(total_produto), currency: BRL, contents: { id: scope_modalagrupador.produto.id, quantity: scope_modalagrupador.produto.qtd }, content_name: scope_modalagrupador.produto.produto_title, content_type: product }); /* Evento Google Analytics */ gtag(event, add_to_cart, { currency: BRL, value: parseFloat(total_produto), items: {item_id: scope_modalagrupador.produto.id, item_name: scope_modalagrupador.produto.produto_title, quantity: scope_modalagrupador.produto.qtd} }); dados JSON.stringify(scope_modalagrupador.produto, function( key, value ) { if( key $$hashKey ) { return undefined; } return value; }); var send_prod $(#modal-agrupador-wrap).find(.modal).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Common\\HomeController, ajax_function: setProdutoCarrinho}).setProdutoCarrinho(dados); } else { alert(Valor total do pedido não deve ultrapassar R$ +(scope_carrinho.vl_pedido_max).toFixed(2).replace(.,,)+. Em caso de dúvidas, por favor entre em contato conosco.); } } else { alert(Ocorreu algo de errado ao adicionar o produto ao carrinho. Tente novamente mais tarde.); } } /* Inclusão do produto da categoria do modal ao carrinho */ $(document).delegate(.btn-include-produto-pedido, click, function(e) { e.preventDefault(); /* Pegar a quantidade do modal para o produto selecionado */ scope_modalagrupador.produto.qtd scope_modalagrupador.modal.qtd; if((scope_modalagrupador.produto.id > 0) && (scope_modalagrupador.produto.id ! ) && (scope_modalagrupador.produto.qtd > 0)) { includeProdutoCategoriaCarrinho(); } else { alert(Você deve selecinar o item desejado antes de continuar); $(this).attr(disabled, disabled); changeProdutosDisabled(); } }); /* Ao fechar o modal */ $(#modal-agrupador-wrap).find(.modal).on(hide.bs.modal, function () { scope_modalagrupador.initModal(); $(#modal-agrupador-wrap).find(.modal-action-buttons).slideUp(fast); var offset 0; /* Caso for a partir do Banner */ var from_banner $(this).attr(from_banner); if (from_banner undefined) { offset $(this).closest(#modal-agrupador-wrap).attr(offset); } else { offset from_banner; } $(this).removeAttr(from_banner); /* / Caso for a partir do Banner */ if (parseInt(offset) > 0) { $(html, body).animate({scrollTop: parseInt(offset) - 200}); } var url_close_modal location.origin+location.pathname+location.search; /* Limpa o Hash da URL */ window.history.pushState(null, null, url_close_modal); scope_cliente.id_cardapio_venda_sugerida 0; scope_cliente.$apply(); }); /* Ao Abrir o modal */ $(#modal-agrupador-wrap).find(.modal).on(shown.bs.modal, function () { if($(window).width() 992) { $(#modal-agrupador-wrap).find(.modal-action-buttons).slideDown(fast); } else { $(#modal-agrupador-wrap).find(.modal-action-buttons).slideUp(fast); } }); } });/script> script> app.controller(CarrinhoCtrl, function($scope,$window,$timeout) { $scope.endereco ; $scope.vl_taxa_entrega 0; $scope.vl_temp_entrega_padrao 0; $scope.vl_temp_retirada_padrao 0; $scope.vl_temp_entrega_pedido 0; $scope.tempo_adicional_entrega 0; $scope.tempo_adicional_retirada 0; $scope.vl_pedido_min 0; $scope.itens_carrinho ; $scope.endereco_checkout ; $scope.cupons_sugeridos ; $scope.carteira_cartoes ; $scope.disponibilidade_agendamento ; $scope.agendamento_selected ; /* Valor do pedido máximo estipulado em 1999*/ $scope.vl_pedido_max 1999; $scope.cart { itens: , id_forma_pagamento: 0, forma_pagamento: { id_forma_pagamento: 0, in_especie: , tp_pagamento: , id_cartao: }, agendamento: { tp_agendamento: , dt_agendamento: , hr_inicial: , hr_final: , ds_dia_semana: , ds_mes: , in_exigir_pagamento: N }, id_endereco_entrega: 0, id_regiao_entrega_area: 0, tp_entrega: , in_entrega_imediata: true, vl_subtotal: 0, cupom: { id_cupom: 0, ds_cupom: , tp_desconto: , vl_desconto: 0, vl_desconto_produto: 0, ds_produto_cupom: , vl_beneficio_cupom: 0 }, vl_desconto: 0, vl_acrescimo: 0, vl_entrega: 0, vl_troco: 0, vl_total: 0, vl_cashback_receber: 0, vl_cashback: 0, vl_credito_loja: 0 }; /* Limpar informações do cep informado pelo cliente na home */ $scope.editCEPEndereco function() { $scope.endereco ; $scope.cart.vl_entrega 0; }; /* UTILIZAÇÃO : Checkout */ $scope.endereco_confirmed false; $scope.payment_confirmed false; $scope.horario_confirmed false; $scope.formas_pagamento ; $scope.formas_pagamento_online ; $scope.formas_pagamento_offline ; /* Confirmar endereço no checkout (Não utilizado no momento) */ $scope.confirm_endereco function(id_endereco, vl_taxa_entrega, vl_pedido_min, nr_tempo_adicional) { $scope.endereco_checkout ; $window.setEnderecoEntregaCarrinho(id_endereco, vl_taxa_entrega, vl_pedido_min, nr_tempo_adicional); $scope.clearHorarioAgendamentoCarrinho(true); }; /* Confirmar pagamento no checkout */ $scope.checkPagamento function(in_especie, formas_pagamento) { $window.checkPagamento(in_especie, formas_pagamento); }; /* Usado somente para adicionar classe ao modal de endereços na abertura do dropdown da lista */ $scope.addClassFromAddressDropdownOpen function() { $(.listOptionsAddresses).addClass(dropdownOpen); } /* Usado somente para adicionar classe ao modal de pagamentos na abertura do dropdown da lista */ $scope.addClassFromPaymentDropdownOpen function() { $(.listOptionsPayments).addClass(dropdownOpen); } /* Caso a forma de pagamento for cartão, seta o id para o carrinho */ $scope.confirmCartao function(forma, in_especie) { var dados $window.confirmCartao(forma, in_especie); if ((dados.id_forma_pagamento ! ) && (dados.id_forma_pagamento ! 0)) { $scope.cart.id_forma_pagamento parseInt(dados.id_forma_pagamento); $scope.cart.forma_pagamento.id_forma_pagamento parseInt(dados.id_forma_pagamento); $scope.cart.forma_pagamento.in_especie dados.in_especie; $scope.cart.forma_pagamento.tp_pagamento dados.tp_pagamento; $scope.payment_confirmed true; $scope.cart.vl_troco 0; } } /* Caso for dinheiro, verificar o valor do troco */ $scope.changeTroco function(valor) { var vl_troco parseFloat(valor); $window.changeTroco(vl_troco); } /* Exbir código do cupom ou texto de aniversariante para ficar mais amigavel */ $scope.exibirCupomCodigo function(id) { let cupom_find $scope.cupons_sugeridos.filter(c > c.id_cupom_desconto id); if (cupom_find.length > 0) { if (cupom_find0.tp_automacao aniversariantes) { return Presente de Aniversário!; } } return #+$scope.cart.cupom.ds_cupom; } /* Limpar informações do agendamento no carrinho do cliente */ $scope.clearHorarioAgendamentoCarrinho function(valid_tpentrega false) { if (valid_tpentrega) { if ($scope.cart.agendamento.tp_agendamento $scope.cart.tp_entrega) { return false; } } $scope.cart.agendamento.dt_agendamento ; $scope.cart.agendamento.ds_dia_semana ; $scope.cart.agendamento.ds_mes ; $scope.cart.agendamento.tp_agendamento ; $scope.cart.agendamento.hr_inicial ; $scope.cart.agendamento.hr_final ; $scope.cart.agendamento.in_exigir_pagamento N; $scope.horario_confirmed false; $scope.agendamento_selected ; if (is_page_loaded) { if(typeof setAgendamentoSession function) { window.setAgendamentoSession(); } } } /* Setar data de agendamento para exibir periodos */ $scope.setHorarioAgendamentoSelected function(disponivel) { $scope.agendamento_selected ; if (disponivel) { $scope.agendamento_selected.push(disponivel); setTimeout(() > { $window.getPedidosByPeriodoAgendamento(); }, 0); } } /* Aplicar agendamento ao carrinho do cliente */ $scope.setHorarioAgendamentoCart function(agendamento, periodo) { $scope.cart.agendamento.dt_agendamento agendamento.dt_periodo; $scope.cart.agendamento.ds_dia_semana agendamento.ds_dia_semana; $scope.cart.agendamento.ds_mes agendamento.ds_mes; $scope.cart.agendamento.tp_agendamento periodo.tp_agendamento; $scope.cart.agendamento.hr_inicial periodo.hr_inicial; $scope.cart.agendamento.hr_final periodo.hr_final; $scope.cart.agendamento.in_exigir_pagamento agendamento.in_exigir_pagamento; $scope.cart.in_entrega_imediata false; $scope.horario_confirmed true; // Caso exigir pagamento online, verifica se a forma seleciona é diferente do crédito e pix e limpa if (agendamento.in_exigir_pagamento S) { if ($scope.cart.forma_pagamento.id_forma_pagamento > 0) { if ($scope.cart.forma_pagamento.id_forma_pagamento ! 11 && $scope.cart.forma_pagamento.id_forma_pagamento ! 12) { $scope.cart.forma_pagamento.id_forma_pagamento 0; $scope.cart.forma_pagamento.in_especie ; $scope.cart.forma_pagamento.tp_pagamento ; $scope.cart.forma_pagamento.id_cartao ; $scope.cart.vl_troco 0; $scope.payment_confirmed false; if ($(#checkout).length > 0) { setTimeout(() > { $window.setFormaPagamentoSession(); }, 200); } } } } $window.setAgendamentoSession(); $(#modal-agendamento).modal(hide); setTimeout(() > { $scope.agendamento_selected ; }, 100); } $scope.calcValorCashbackReceber function(vl_base) { if ($scope.parametros_cashback.in_ativo S) { var in_permite_tipo false; // Origem site if ($scope.parametros_cashback.in_origem_site S) { // Pedido delivery if ($scope.cart.tp_entrega E) { if ($scope.parametros_cashback.in_delivery S) { in_permite_tipo true; } // Pedido retirada } else if ($scope.cart.tp_entrega B) { if ($scope.parametros_cashback.in_retirada S) { in_permite_tipo true; } // Pedido consumo local } else if ($scope.cart.tp_entrega L) { if ($scope.cliente.id > 0) { if ($scope.parametros_cashback.in_consumo_local S) { in_permite_tipo true; } } } } if (in_permite_tipo) { if ($scope.parametros_cashback.vl_percentual > 0) { var vl_percentual $scope.parametros_cashback.vl_percentual var vl_receber (vl_base / 100) * vl_percentual; vl_receber parseFloat(vl_receber); $scope.cart.vl_cashback_receber vl_receber; return vl_receber; } } } $scope.cart.vl_cashback_receber 0; return 0; } $scope.calcTotalPedido function() { var total (($scope.cart.vl_subtotal) - ($scope.cart.cupom.vl_desconto)) + ($scope.cart.vl_entrega) + ($scope.cart.vl_acrescimo) - ($scope.cart.vl_desconto); total (total - ($scope.cart.vl_cashback + $scope.cart.vl_credito_loja)); if (total > 0) { $scope.cart.vl_total total; } else { $scope.cart.vl_total 0; } return $scope.cart.vl_total.toFixed(2).replace(.,,); } $scope.$watch(ready, function() { if($scope.ready true) { setTimeout(() > { /* para não aparecer as tags do angular */ $(.carrinho).removeClass(d-none); if($(#checkout).length > 0) { $(#checkout).removeClass(d-none); } if($(#carrinho-home).length > 0) { $(#carrinho-home).removeClass(d-none); } }, 10); } }); }); var scope_carrinho null; $(document).ready(function () { /* Variavel de escopo do carrinho */ scope_carrinho angular.element(document.querySelector(.carrinho)).scope(); $(document).delegate(.possui-endereco, click, function(e){ e.preventDefault(); window.openModalEnderecos(); if ($(this).hasClass(btn-endereco)) { $(.btn-exibir-list-enderecos).trigger(click) } }); /* Caso for retirada balcão */ window.setRetirada function(dados) { if (scope_cliente.in_retirada_balcao S || (scope_cliente.horarios_agendamento && scope_cliente.horarios_agendamento.disponibilidade_retirada.length > 0)) { scope_carrinho.endereco dados; if(scope_carrinho.endereco.length > 0) { /* Setar informações no Header do site referente a taxa e tempo de entrega */ scope_carrinho.vl_pedido_min 0; scope_carrinho.cart.vl_entrega 0; scope_carrinho.cart.tp_entrega B; scope_carrinho.cart.id_endereco_entrega 0; scope_carrinho.cart.id_regiao_entrega_rua 0; scope_carrinho.vl_temp_entrega_pedido scope_carrinho.vl_temp_retirada_padrao; $(.info-taxa-entrega).html(Retirada no Balcão); $(.info-temp-entrega).html(scope_carrinho.vl_temp_retirada_padrao + a + (parseInt(scope_carrinho.vl_temp_retirada_padrao) + 10) + min); $(.info-temp-entrega).closest(div).find(.header-info).find(span).html(TEMPO DE RETIRADA); } } else { scope_carrinho.endereco ; } scope_carrinho.clearHorarioAgendamentoCarrinho(true); scope_carrinho.$apply(); scope_carrinho.ready true; if (scope_carrinho.ready) { if (scope_cliente.in_retirada_balcao S) { $(.carrinho-cep-endereco).removeClass(d-none); } else { $(.entry-cep-carrinho).removeClass(d-none); } } } /* Retorno de setar como retirada na sessão */ window.returnRetirada function(data) { if (dataendereco.length > 0) { if ($(.modal.edit-address).hasClass(show)) { $(.modal.edit-address).modal(hide); } setRetirada(dataendereco); } } /* Retirada balcão no carrinho da hoje */ window.setRetiradaHome function() { var retirada $(#carrinho-home).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Checkout\\CheckoutController, ajax_function: setRetiradaBalcao}); retirada.getDados(returnRetirada); } $(document).delegate(.entry-retirada-carrinho, click, function(e){ e.preventDefault(); setRetiradaHome(); }); /* Alertar cliente sobre os itens sem estoque no carrinho */ window.alertItensSemEstoqueCarrinho function(itens) { var msg Itens do carrinho não possuem estoque disponível para finalização do pedido. Verifique!; if (itens.length > 0) { scope_carrinho.cart.itens.map(i > { i.msg_estoque ; i.in_produto_sem_estoque false; }); itens.map(i > { var itens_cart scope_carrinho.cart.itens.filter(item > i.key.includes(item.key)); if (itens_cart.length > 0) { itens_cart.map(ic > { if (i.qt_estoque_disponivel > 0) { ic.msg_estoque `${i.ds_titulo_item} possui apenas ${i.qt_estoque_disponivel} unidade disponível em estoque.`; } else { ic.msg_estoque `Este item está indisponível no estoque.`; } ic.in_produto_sem_estoque true; }) } }); scope_carrinho.$apply(); } if ($(.finalizar-pedido).length > 0) { $(.msg-checkout).html(msg); $(.msg-checkout).removeClass(d-none); } } $(document).delegate(.produto-sugerido, click, function(e) { e.preventDefault(); var id_p $(this).attr(data-id_p); if (id_p) { window.makeHashProduto(id_p); scope_cliente.id_cardapio_venda_sugerida scope_cliente.venda_sugestiva.id; $(#modalSugestiva).modal(hide); setTimeout(() > { window.validHashProduto(); }, 500); } }); $(document).delegate(.btn-cancel-venda-sugestiva, click, function() { $(#modalSugestiva).modal(hide); }); $(#modalSugestiva).on(hidden.bs.modal, function () { scope_cliente.initVendaSugestiva(); }); window.getVendaSugestiva async function(cardapio_sugestivo, produto_sugestao) { if (cardapio_sugestivo > 0) { var info { cardapio_sugestivo: cardapio_sugestivo } var resVendaSugestiva $(#profile_ctrl).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Common\\HomeController, ajax_function: getProdutosVendaSugestiva}); await resVendaSugestiva.getDadosPromise(JSON.stringify(info)) .then((data) > { if (data.cardapio.id) { if (data.lista_produtos.length > 0) { scope_cliente.id_cardapio_venda_sugerida 0; scope_cliente.venda_sugestiva data.cardapio; scope_cliente.venda_sugestiva.produtos data.lista_produtos.filter(p > p.id_produto ! produto_sugestao); scope_cliente.$apply(); setTimeout(() > { $(#modalSugestiva).modal(show); }, 500); } } }) .catch((error) > { console.log(error) }); } } /** * Função JS para passar informações ao carrinho e calculo dos totais do mesmo. * Jonatan Kroenke jonatan@datamais.com.br> */ window.makeCarrinho function(dados) { /* Mensagem de aviso sobre o carrinho */ if (dados.msg) { window.alertMessage(danger, Atenção!, dados.msg); } var arr ; var itens_to_cart ; var total_carrinho 0; var in_produto_cupom false; if (dados.cart) { var cart dados.cart; if (((cart ) || (cart undefined) || (cart.length 0)) && ($(#checkout).length > 0)) { window.location.href https://imperialsalgadosc.com.br; } else { arr cart; // Total dos itens calculado no backend var in_calcular_subtotal true; if (dados.vl_subtotal && dados.vl_subtotal > 0) { in_calcular_subtotal false; total_carrinho dados.vl_subtotal; } $.each(arr, function( index, itens ){ var total_produto 0; var total_vendavinculada 0; var itens_cart JSON.parse(itens); itens_to_cart.push(itens_cart); /* Verificar se o produto é de cupom */ if (itens_cart.in_produto_cupom S) { in_produto_cupom true; } if (in_calcular_subtotal) { if (itens_cart ! && itens_cart ! undefined) { total_produto (parseFloat(itens_cart.vl_produto) * parseInt(itens_cart.qtd_produto)) + parseFloat(itens_cart.vl_total_acrescimo); /* Preparado para venda vinculada tratada como Item */ /* $.each(itens_cart.vendavinculada, function(i,v){ total_vendavinculada + (v.vl_acrescimo_venda * v.qtd) * itens_cart.qtd_produto; }); */ } total_carrinho + (total_produto + total_vendavinculada); } }); /* Caso o pedido maximo no checkout seja atingido por algum motivo, redireciona para a tela inicial */ if (total_carrinho > scope_carrinho.vl_pedido_max) { if($(#checkout).length > 0) { alert(Pedido máximo permitido é de R$ +(scope_carrinho.vl_pedido_max).toFixed(2).replace(.,,)+. Em caso de dúvidas, por favor entre em contato conosco.); window.location.hrefhttps://imperialsalgadosc.com.br; } } /* Caso não tenha tipo de entrega definido no checkout, força E para ter um padrão nas infos */ if ($(#checkout).length > 0) { if (!scope_carrinho.cart.tp_entrega) { scope_carrinho.cart.tp_entrega E; } } scope_carrinho.cart.itens itens_to_cart; scope_carrinho.cart.vl_subtotal total_carrinho; scope_carrinho.cart.vl_total total_carrinho; scope_carrinho.$apply(); scope_carrinho.ready true; /* Validar se o produto do cupom está sozinho no carrinho, e remover o cupom */ if (in_produto_cupom && ($(#checkout).length > 0)) { var filter_cupons scope_carrinho.cart.itens.filter(p > p.in_produto_cupom S); if ((filter_cupons.length > 0) && (filter_cupons.length itens_to_cart.length)) { setTimeout(() > { window.sendRemocaoCupomCarrinho(); }, 100); return; } } setTimeout(() > { if (scope_carrinho.cart.cupom.id_cupom > 0) { if (scope_carrinho.cart.cupom.vl_desconto > scope_carrinho.cart.vl_total) { scope_carrinho.cart.cupom.vl_desconto scope_carrinho.cart.vl_total; scope_carrinho.$apply(); } } }, 100); } } /*Caso for mobile, mostrará a pseudo-div para não interferir na exibição das informações do rodapé da página. */ if((scope_carrinho.cart.itens.length > 0) && ($(window).width() 992)) { $(.pseudo-div-footer).removeClass(d-none); } else { $(.pseudo-div-footer).addClass(d-none); } /* Validação do Cupom de desconto caso seja alterado o carrinho no checkout */ if ($(#checkout).length > 0) { if ((scope_carrinho.cart.cupom.id_cupom > 0) && (scope_carrinho.cart.cupom.ds_cupom ! )) { $(.btn-validar-cupom).trigger(click); } else { if (typeof checkSaldoClienteCheckout function) { window.checkSaldoClienteCheckout($(#check-utilizar-saldo-carteira).is(:checked)); } if (typeof checkFormaPagamentoCarrinhoByTotal function) { window.checkFormaPagamentoCarrinhoByTotal(); } } } else { if (dados.cardapio_sugestivo) { if (dados.cardapio_sugestivo > 0) { window.getVendaSugestiva(dados.cardapio_sugestivo, dados.produto_adicionado); } } } /* Manter botão de acompanhamento do pedido acima do botão de finalizar pedido no mobile */ if((scope_carrinho.cart.itens.length > 0) && ($(window).width() 992)) { $(.link_acompanhamento_pedido).attr(style,bottom :90px !important); } else { $(.link_acompanhamento_pedido).removeAttr(style); } }; /* Obter parametros da empresa para informações no header (tempo de entrega) */ /* A partir de 18/03/2021 utilizar somente o tempo do raio de entrega, e não usar mais o padrão */ /**/ /* Obter parametros da empresa para informações no header (tempo de entrega) */ scope_carrinho.vl_temp_retirada_padrao 30; /* Tempos adicionais para entrega e retirada */ scope_carrinho.tempo_adicional_entrega 0; scope_carrinho.vl_temp_entrega_padrao parseInt(scope_carrinho.vl_temp_entrega_padrao) + parseInt(scope_carrinho.tempo_adicional_entrega); scope_carrinho.tempo_adicional_retirada 0; scope_carrinho.vl_temp_retirada_padrao parseInt(scope_carrinho.vl_temp_retirada_padrao) + parseInt(scope_carrinho.tempo_adicional_retirada); /* Obter parametros da empresa para Retirada na Loja (S ou N) */ scope_cliente.in_retirada_balcao S; var endereco_empresa {tp_entrega:B,nr_cep:88058-045,ds_logradouro:Rua In\u00eas Monteiro da Silva,nr_logradouro:40,ds_bairro:Vargem do Bom Jesus,ds_cidade:Florian\u00f3polis,ds_complemento:,nr_tempo_adicional:0,vl_pedido_min:0,vl_taxa_entrega:0}; scope_cliente.endereco_retirada JSON.parse(endereco_empresa); /* Obter parametros da empresa para Delivery na Loja (S ou N) */ scope_cliente.in_delivery S; /* Obter valor do pedido minimo da loja para validação no carrinho */ if (scope_cliente.info_pedido) { if (scope_cliente.info_pedido.tp_pedido presencial) { scope_carrinho.cart.tp_entrega L; scope_carrinho.endereco_confirmed true; scope_carrinho.horario_confirmed true; if (scope_cliente.info_pedido.dados) { var dados_pedido_info scope_cliente.info_pedido.dados; if (!dados_pedido_info.in_obrigar_pagamento_online) { scope_carrinho.payment_confirmed true; } } } } scope_carrinho.$apply(); scope_carrinho.ready true; /* Validar o tpo de entrega do carrinho */ window.getTpEntregaCarrinho function() { if (scope_carrinho.cart.tp_entrega) { if (scope_carrinho.cart.tp_entrega E) { if (scope_cliente.in_agendamento_delivery || scope_cliente.in_agendamento_retirada) { if (scope_cliente.in_delivery S || scope_cliente.in_agendamento_delivery) { return; } if (scope_cliente.in_retirada_balcao S || scope_cliente.in_agendamento_retirada) { scope_carrinho.cart.tp_entrega B; } } else { if (scope_cliente.in_delivery S) { return; } else if (scope_cliente.in_retirada_balcao S) { scope_carrinho.cart.tp_entrega B; } } } else if (scope_carrinho.cart.tp_entrega B) { if (scope_cliente.in_agendamento_delivery || scope_cliente.in_agendamento_retirada) { if (scope_cliente.in_retirada_balcao S || scope_cliente.in_agendamento_retirada) { return; } if (scope_cliente.in_delivery S || scope_cliente.in_agendamento_delivery) { scope_carrinho.cart.tp_entrega E; } } else { if (scope_cliente.in_retirada_balcao S) { return; } else if (scope_cliente.in_delivery S) { scope_carrinho.cart.tp_entrega E; } } } } else { if (scope_cliente.in_agendamento_delivery || scope_cliente.in_agendamento_retirada) { if (scope_cliente.in_delivery S || scope_cliente.in_agendamento_delivery) { scope_carrinho.cart.tp_entrega E; if (scope_cliente.in_delivery ! S && scope_cliente.in_agendamento_delivery) { scope_carrinho.cart.in_entrega_imediata false; } } else if (scope_cliente.in_retirada_balcao S || scope_cliente.in_agendamento_retirada) { scope_carrinho.cart.tp_entrega B; } } else { if (scope_cliente.in_delivery S) { scope_carrinho.cart.tp_entrega E; } else if (scope_cliente.in_retirada_balcao S) { scope_carrinho.cart.tp_entrega B; } } } scope_carrinho.$apply(); } /** Informações sobre o de CEP consultado pelo Cliente */ window.setEnderecoCEP function(dados, in_unico false) { if (scope_cliente.info_pedido.tp_pedido presencial) { return; } if (dados.length > 0) { if (dados0.tp_entrega ! B) { if (scope_cliente.in_delivery ! S && ((!scope_cliente.horarios_agendamento) || (scope_cliente.horarios_agendamento.disponibilidade_entrega.length 0))) { return; } if (in_unico) { scope_carrinho.endereco dados; var vl_taxa_entrega 0; var vl_temp_entrega 0; if(scope_carrinho.endereco.length > 0) { var next false; /* Validação sobre se o endereço está correto para ser atendido */ if (scope_carrinho.endereco0.in_cadastro N) { next true; } else { if ((scope_cliente.cliente.enderecos) && (scope_cliente.cliente.enderecos.length > 0)) { var endereco_session scope_cliente.cliente.enderecos.filter(e > e.id_endereco scope_carrinho.endereco0.id_endereco); if (endereco_session.length > 0) { if (endereco_session0.in_ativo S) { if (endereco_session0.fk_id_regiao_entrega_area) { if (endereco_session0.ds_latitude && endereco_session0.ds_longitude) { next true; } } } } } else { next true; } } if (next) { /* Setar informações no Header do site referente a taxa e tempo de entrega */ vl_taxa_entrega scope_carrinho.endereco0.vl_taxa_entrega.toFixed(2).replace(.,,); vl_temp_entrega parseInt(scope_carrinho.vl_temp_entrega_padrao) + parseInt(scope_carrinho.endereco0.nr_tempo_adicional); scope_carrinho.vl_pedido_min (scope_carrinho.endereco0.vl_pedido_minimo).toFixed(2); scope_carrinho.cart.vl_entrega scope_carrinho.endereco0.vl_taxa_entrega; scope_carrinho.cart.tp_entrega E; scope_carrinho.cart.id_endereco_entrega scope_carrinho.endereco0.id_endereco; scope_carrinho.vl_temp_entrega_pedido vl_temp_entrega; if (scope_carrinho.endereco0.vl_taxa_entrega > 0) { $(.info-taxa-entrega).html(R$ +vl_taxa_entrega); $(.info-taxa-entrega).removeClass(color-green); } else { $(.info-taxa-entrega).html(Grátis); $(.info-taxa-entrega).addClass(color-green); } $(.info-temp-entrega).html(vl_temp_entrega + a + ( vl_temp_entrega + 15) + min); $(.info-temp-entrega).closest(div).find(.header-info).find(span).html(TEMPO DE ENTREGA); } else { scope_carrinho.endereco ; } } scope_carrinho.$apply(); scope_carrinho.ready true; if (scope_carrinho.ready) { $(.carrinho-cep-endereco).removeClass(d-none); } } } else { /* Setar retirada balcão */ setRetirada(dados); } } if(dados ) { $(.regiao-not-empresa).find(.title).html(Oops, no momento não estamos atendendo essa região... :(); $(.regiao-not-empresa).slideDown(170); } /*if ($(.edit-address).hasClass(show)) { $(.edit-address).modal(hide); }*/ }; /* Caso possuir sessão do carrinho, monta o mesmo.*/ /* Caso estiver em sessão o endereço, faz a exibição.*/ /* Endereços do cliente */ $(.entry-cep-carrinho).removeClass(d-none); /* Remover produto do carrinho */ $(document).delegate(.rm-prod-cart, click, function(e){ e.preventDefault(); var key $(this).attr(data-p-key); var id_vv $(this).attr(data-vv-id); var id_gp_vv $(this).attr(data-vv-gp); /* caso for produto enão venda vinculada passa 0 para id e grupo*/ if((id_vv undefined) && (id_gp_vv undefined)) { id_vv 0; id_gp_vv 0; } $(this).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Common\\HomeController, ajax_function: remProdutoCarrinho}).remProdutoCarrinho(key, id_vv, id_gp_vv); }); /* Botão para finalização do pedido (redirecionar ao checkout)*/ $(document).delegate(.btn-finalizar-pedido, click, function(e){ e.preventDefault(); finish_changed true; if ((scope_cliente.cliente.id 0) && (scope_cliente.cliente.ds_nome )) { $(#modal-signup).modal(show); } else if ((scope_cliente.cliente.id ! 0) && (scope_cliente.cliente.ds_nome ! )){ /* Evento Facebook Pixel */ fbq(track, InitiateCheckout); /* Evento Google Analytics */ gtag(event, begin_checkout); $(this).html(Aguarde.. i classfa fa-spinner fa-spin ml-1>/i>); var url_checkout https://imperialsalgadosc.com.br+/checkout; window.location url_checkout; setTimeout(() > { $(this).html(Finalizar Pedido); }, 2000); } }); /* Definir endereço de entrega no pedido (cart) */ window.defineEnderecoEntregaCarrinho function(endereco_selecao) { if (endereco_selecao.length > 0) { $(.edit-address).find(.msg-endereco-select).html(); $(.edit-address).find(.msg-endereco-select).addClass(d-none); $(.edit-address).find(.msg-line-endereco).addClass(d-none); $(.edit-address).find(.msg-line-endereco).html(); /* Tempo de entrega estimado do pedido */ scope_carrinho.endereco_confirmed true; scope_carrinho.vl_pedido_min endereco_selecao0.vl_pedido_minimo; scope_carrinho.cart.id_endereco_entrega endereco_selecao0.id_endereco; scope_carrinho.cart.id_regiao_entrega_area endereco_selecao0.id_regiao_entrega_area; scope_carrinho.cart.vl_entrega endereco_selecao0.vl_taxa_entrega; scope_carrinho.vl_temp_entrega_pedido (parseInt(scope_carrinho.vl_temp_entrega_padrao) + parseInt(endereco_selecao0.nr_tempo_adicional)); scope_carrinho.endereco_checkout endereco_selecao; if (endereco_selecao0.id_endereco ! 0) { scope_carrinho.cart.tp_entrega E; } /* Caso possuir cupom de frete gratis, o valor de entrega é zerado */ if ((scope_carrinho.cart.cupom.ds_cupom ! ) && (scope_carrinho.cart.cupom.tp_desconto frete_gratis)) { scope_carrinho.cart.vl_entrega 0; } if((scope_carrinho.cart.vl_troco > 0) && ((((scope_carrinho.cart.vl_subtotal - scope_carrinho.cart.cupom.vl_desconto) + scope_carrinho.cart.vl_entrega) - (scope_carrinho.cart.vl_desconto) + scope_carrinho.cart.vl_acrescimo) > scope_carrinho.cart.vl_troco)) { /* Caso troco for maior que 0 o endereço seja setado e o total do pedido com a taxa de entrega, ser maior que o troco, zera a forma de pagamento (reseta).*/ scope_carrinho.cart.id_forma_pagamento 0; scope_carrinho.payment_confirmed false; scope_carrinho.cart.vl_troco 0; /* Uncheck em todos os radio button de pagamento */ $(.box-formas-list).find(inputtyperadio:checked).each(function(){ $(this).prop(checked, false); }); $(.info_payment).html(); } else { $(.title-endereco-checkout).removeClass(red-700); } setTimeout(function(){ if (scope_cliente.in_delivery S) { scope_carrinho.horario_confirmed true; } else { if (!scope_carrinho.cart.agendamento.dt_agendamento) { scope_carrinho.horario_confirmed false; } } scope_carrinho.$apply(); scope_carrinho.ready true; if (typeof checkFormaPagamentoCarrinhoByTotal function) { window.checkFormaPagamentoCarrinhoByTotal(); } },100); if ($(.edit-address).hasClass(show)) { $(.edit-address).modal(hide); } } } /* Revalidação do endereço do cliente, caso não tenha latitude, longitude ou id da area de entrega no cadastro. */ window.revalidateAddressArea function(endereco_selecao) { var address_info { ds_rua: endereco_selecao0.ds_logradouro, ds_bairro: endereco_selecao0.ds_bairro, ds_uf: endereco_selecao0.ds_uf, ds_cidade: endereco_selecao0.ds_cidade, nr_logradouro: endereco_selecao0.nr_logradouro, nr_cep: endereco_selecao0.nr_cep } setAddressInfo(address_info, edicao); $(.box-return-to-autocomplete).addClass(d-none); $(.content-map-endereco).addClass(d-none); $(#form-edit-address).attr(in-reset, N); $(.edit-address).find(.modal-footer).addClass(d-none); $(#form-edit-address).addClass(d-none); $(.form-address-select).addClass(d-none); $(#form-address-cep-unico).removeClass(d-none); /* Passar valores para campos */ $(#form-edit-address).attr(data-id_end, endereco_selecao0.id_endereco) $(#form-edit-address).find(inputnameinputds_apelido_endereco).val(endereco_selecao0.ds_apelido_endereco) $(#form-edit-address).find(inputnameinputds_complemento).val(endereco_selecao0.ds_complemento) $(#form-edit-address).find(inputnameinputds_obs).val(endereco_selecao0.ds_obs) } /* Retorno do vinculo do fk_id_regiao_entrega_area com o endereço do cliente */ window.returnConfirmIdArea function(data) { if (data.msg ) { if (data.enderecos_cliente.length > 0) { scope_cliente.cliente.enderecos data.enderecos_cliente; scope_cliente.$apply(); scope_cliente.ready true; } } else { window.alertMessage(danger,Ocorreu algo de errado!, data.msg); } } /* Função utilizada no checkout no momento da seleção do endereço para passar a escolha ao carrinho*/ window.setEnderecoEntregaCarrinho function(id_endereco, vl_taxa_entrega, vl_pedido_min, nr_tempo_adicional) { var msg ; var set_endereco false; var endereco_selecao scope_cliente.cliente.enderecos.filter(a > a.id_endereco id_endereco); if ((!endereco_selecao0.ds_latitude) && (!endereco_selecao0.ds_longitude)) { /* Script funcional para revalidação do endereço do cliente caso não possuir coordenadas. Comentado e colocada mensagem para fácil identificação do problema. 14/04/2021 */ revalidateAddressArea(endereco_selecao); //msg Falha no endereço. ERRO 1108.; } else { if (!endereco_selecao0.fk_id_regiao_entrega_area) { /* Caso possuir latitude e longitude e não possuir o vinculo, valida as coordenadas. Se encontrar, atualiza o vinculo na base de dados. Caso contrario, o endereço não é atendido. */ var contain_area verifyLatLngContains(endereco_selecao0.ds_latitude, endereco_selecao0.ds_longitude); if (contain_area ! null) { endereco_selecao0.in_ativo contain_area.in_ativo; endereco_selecao0.fk_id_regiao_entrega_area contain_area.id_regiao_entrega_area; var tp_calculo_taxa raio; if (tp_calculo_taxa raio) { vl_taxa_entrega contain_area.vl_taxa_entrega; vl_pedido_min contain_area.vl_pedido_minimo; nr_tempo_adicional contain_area.nr_tempo_adicional; } var dados {}; dados.ds_latitude endereco_selecao0.ds_latitude; dados.ds_longitude endereco_selecao0.ds_longitude; dados.nr_distancia contain_area.nr_distancia; dados.id_regiao_entrega_area contain_area.id_regiao_entrega_area; var arr_dados ; arr_dados.push(dados); var info ; info.push({ id_endereco: parseInt(id_endereco), dados: arr_dados}); var end $(.edit-address).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Account\\ProfileController, ajax_function: setAtualizacaoEnderecoCliente}); end.getDados(returnConfirmIdArea, JSON.stringify(info)); } } if (endereco_selecao0.fk_id_regiao_entrega_area ! null) { if (endereco_selecao0.in_ativo S) { var valid_area_exclusao validLatLngContainsExclusao(endereco_selecao0.ds_latitude, endereco_selecao0.ds_longitude); if (valid_area_exclusao) { endereco_selecao0.vl_taxa_entrega vl_taxa_entrega; endereco_selecao0.vl_pedido_minimo vl_pedido_min; endereco_selecao0.nr_tempo_adicional nr_tempo_adicional; set_endereco true; } else { msg Endereço indisponível e/ou não atendido pela loja.; } } else { msg Endereço indisponível e/ou não atendido pela loja.; } } else { msg Endereço indisponível e/ou não atendido pela loja.; } } if (set_endereco) { /* Setar o endereço na sessão. */ var end $(.edit-address).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Checkout\\CheckoutController, ajax_function: setEnderecoCepUnico}); endereco_selecao0.id_regiao_entrega_area endereco_selecao0.fk_id_regiao_entrega_area; /* Definir informações da entrega */ if ($(.line-endereco.endereco- + endereco_selecao0.id_endereco).length > 0) { $(.line-endereco.endereco- + endereco_selecao0.id_endereco).addClass(a-disabled); } end.getDados(returnEnderecoSessionCheckout, JSON.stringify(endereco_selecao)); if ($(#checkout).length > 0) { defineEnderecoEntregaCarrinho(endereco_selecao); } else { setEnderecoCEP(endereco_selecao, true); } } else { /* Limpar informações do endereço */ if ($(#checkout).length > 0) { scope_carrinho.endereco_confirmed false; scope_carrinho.vl_pedido_min 0; scope_carrinho.cart.id_endereco_entrega 0; scope_carrinho.cart.tp_entrega E; scope_carrinho.cart.id_regiao_entrega_area 0; scope_carrinho.cart.vl_entrega 0; scope_carrinho.vl_temp_entrega_pedido (parseInt(scope_carrinho.vl_temp_entrega_padrao)); scope_carrinho.endereco_checkout ; } if (msg ! ) { if (id_endereco > 0) { $(.endereco-+id_endereco).find(.msg-line-endereco).removeClass(d-none); $(.endereco-+id_endereco).find(.msg-line-endereco).html(msg); } else { $(.edit-address).find(.msg-endereco-select).html(msg); $(.edit-address).find(.msg-endereco-select).removeClass(d-none); } } } /* Validação do Cupom de desconto caso seja alterado o carrinho no checkout */ if ($(#checkout).length > 0) { if ((scope_carrinho.cart.cupom.id_cupom > 0) && (scope_carrinho.cart.cupom.ds_cupom ! )) { $(.btn-validar-cupom).trigger(click); } else { if (typeof checkSaldoClienteCheckout function) { window.checkSaldoClienteCheckout($(#check-utilizar-saldo-carteira).is(:checked)); } } } } /* para não aparecer as tags do angular - Manter sempre no final do final deste arquivo. Adicionar scripts acima. */ if(scope_carrinho.ready true) { if($(#carrinho).length > 0) { $(#carrinho).removeClass(d-none); } } /* Botão para agendamento imediato (agora) do modal */ $(document).delegate(.btn-agendamento-imediato, click, function(e) { e.preventDefault(); scope_carrinho.clearHorarioAgendamentoCarrinho(); scope_carrinho.horario_confirmed true; scope_carrinho.cart.in_entrega_imediata true; scope_carrinho.$apply(); $(#modal-agendamento).modal(hide); }); /* Validações para a abertura do modal */ var page_agendamentos 1; $(document).delegate(.btn-modal-agendamento, click, async function(e) { e.preventDefault(); var isEmptyAgendamento false; if(typeof getPeriodosAgendamento function) { if (page_agendamentos 1) { await window.getPeriodosAgendamento(); } } else { return; } if (!scope_carrinho.cart.tp_entrega) { if (scope_cliente.in_delivery S || (scope_cliente.in_agendamento_delivery)) { scope_carrinho.cart.tp_entrega E; } else if (scope_cliente.in_retirada_balcao S || (scope_cliente.in_agendamento_retirada)) { scope_carrinho.cart.tp_entrega B; } else { window.alertMessage(danger, ATENÇÃO, A loja não possui entrega e retirada disponivel no momento.); } } else { if (scope_carrinho.cart.tp_entrega E) { if (!scope_cliente.in_agendamento_delivery) { return; } } else if (scope_carrinho.cart.tp_entrega B) { if (!scope_cliente.in_agendamento_retirada) { return; } } } if (scope_cliente.horarios_agendamento) { if (scope_carrinho.cart.tp_entrega E) { if (scope_cliente.horarios_agendamento.disponibilidade_entrega.length > 0) { scope_carrinho.disponibilidade_agendamento scope_cliente.horarios_agendamento.disponibilidade_entrega; if (scope_carrinho.cart.agendamento.dt_agendamento) { var selected scope_carrinho.disponibilidade_agendamento.filter(a > a.dt_periodo scope_carrinho.cart.agendamento.dt_agendamento); if (selected.length > 0) { scope_carrinho.agendamento_selected selected; } } var hoje 2025-12-03; var selected_hoje scope_carrinho.disponibilidade_agendamento.filter(a > a.dt_periodo hoje) if (selected_hoje.length > 0) { if (scope_carrinho.agendamento_selected.length 0) { scope_carrinho.agendamento_selected.push(selected_hoje0); } } else { var obj_hoje { ds_dia_semana: Hoje, ds_mes: , dt_periodo: hoje, in_exigir_pagamento: scope_carrinho.disponibilidade_agendamento0.in_exigir_pagamento, periodos_disponiveis: , tp_exibicao: day } if (scope_cliente.in_delivery S) { scope_carrinho.cart.in_entrega_imediata true; } if (scope_carrinho.agendamento_selected.length 0) { scope_carrinho.agendamento_selected ; scope_carrinho.agendamento_selected.push(obj_hoje); } scope_carrinho.disponibilidade_agendamento.unshift(obj_hoje); } scope_carrinho.$apply(); $(#modal-agendamento).modal(show); setTimeout(() > { window.scrollCenterElementList($(.listOptionsDates), $(.listOptionsDates).find(.active), 300) }, 500); } else { isEmptyAgendamento true; } } else if (scope_carrinho.cart.tp_entrega B) { if (scope_cliente.horarios_agendamento.disponibilidade_retirada.length > 0) { scope_carrinho.disponibilidade_agendamento scope_cliente.horarios_agendamento.disponibilidade_retirada; if (scope_carrinho.cart.agendamento.dt_agendamento) { var selected scope_carrinho.disponibilidade_agendamento.filter(a > a.dt_periodo scope_carrinho.cart.agendamento.dt_agendamento); if (selected.length > 0) { scope_carrinho.agendamento_selected selected; } } var hoje 2025-12-03; var selected_hoje scope_carrinho.disponibilidade_agendamento.filter(a > a.dt_periodo hoje) if (selected_hoje.length > 0) { if (scope_carrinho.agendamento_selected.length 0) { scope_carrinho.agendamento_selected.push(selected_hoje0); } } else { var obj_hoje { ds_dia_semana: Hoje, ds_mes: , dt_periodo: hoje, in_exigir_pagamento: scope_carrinho.disponibilidade_agendamento0.in_exigir_pagamento, periodos_disponiveis: , tp_exibicao: day } if (scope_cliente.in_retirada_balcao S) { scope_carrinho.cart.in_entrega_imediata true; } if (scope_carrinho.agendamento_selected.length 0) { scope_carrinho.agendamento_selected ; scope_carrinho.agendamento_selected.push(obj_hoje); } scope_carrinho.disponibilidade_agendamento.unshift(obj_hoje); } scope_carrinho.$apply(); $(#modal-agendamento).modal(show); } else { isEmptyAgendamento true; } } } if (scope_carrinho.agendamento_selected.length > 0) { window.getPedidosByPeriodoAgendamento(); } /* Sem agendamentos disponiveis */ if (isEmptyAgendamento) { var hoje 2025-12-03; var obj_hoje { ds_dia_semana: Hoje, ds_mes: , dt_periodo: hoje, in_exigir_pagamento: N, periodos_disponiveis: , tp_exibicao: day } scope_carrinho.agendamento_selected ; scope_carrinho.agendamento_selected.push(obj_hoje); scope_carrinho.disponibilidade_agendamento ; scope_carrinho.disponibilidade_agendamento.push(obj_hoje); scope_carrinho.$apply(); $(#modal-agendamento).modal(show); } setTimeout(() > { window.scrollCenterElementList($(#modal-agendamento).find(.listOptionsDates), $(#modal-agendamento).find(.listOptionsDates).find(.active), 300); }, 1000); $(.show-more-agendamentos).parent(div).removeClass(d-none).addClass(d-flex); }); /* Atualizar agendamento na sessão */ window.setAgendamentoSession async function() { var dados { agendamento: scope_carrinho.cart.agendamento } var resSession $(#modal-agendamento).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Checkout\\CheckoutController, ajax_function: setAgendamentoSession}); await resSession.sendDadosPromise(JSON.stringify(dados)) .then((data) > { console.log(Atualizou sessão do agendamento) }) .catch((error) > { console.log(Erro na requisição da sessão do agendamento.); }); } /* Agendamento da SESSÃO */ if ($(#checkout).length > 0) { window.onload function() { setTimeout(() > { if (scope_cliente.info_pedido) { if (scope_cliente.info_pedido.tp_pedido normal) { if (scope_cliente.in_delivery N && scope_cliente.in_retirada_balcao S) { if (!scope_carrinho.cart.tp_entrega || scope_carrinho.cart.tp_entrega B) { window.setRetiradaCheckout() setTimeout(() > { scope_carrinho.horario_confirmed true; scope_carrinho.$apply(); }, 1000); } } else if (scope_cliente.in_delivery S && scope_cliente.in_retirada_balcao S) { scope_carrinho.clearHorarioAgendamentoCarrinho(); scope_carrinho.horario_confirmed true; scope_carrinho.$apply(); } else if (scope_cliente.in_delivery S) { if (scope_carrinho.endereco_checkout.length > 0) { if (scope_carrinho.endereco_checkout0.tp_entrega ! E) { scope_carrinho.endereco_checkout ; scope_carrinho.vl_temp_entrega_pedido 0; scope_carrinho.endereco_confirmed false; scope_carrinho.cart.id_endereco_entrega 0; scope_carrinho.cart.id_regiao_entrega_area 0; scope_carrinho.cart.vl_entrega 0; } } scope_carrinho.cart.tp_entrega E; scope_carrinho.clearHorarioAgendamentoCarrinho(); scope_carrinho.horario_confirmed true; scope_carrinho.$apply(); } } } }, 500); } } else { if($(.home).length > 0) { window.getTpEntregaCarrinho(); } } });/script> script> var is_checkout_load false; $(document).ready(function () { if($(#checkout).length > 0) { var checkout_element $(#checkout); checkout_element.css(pointer-events, none); setTimeout(() > { checkout_element.css(pointer-events, all); }, 1000); /* Variavel de escopo do checkout (CarrinhoCtrl) */ var scope_checkout angular.element(document.querySelector(#checkout)).scope(); /* Formas de pagamento no checkout */ /* Cupons Sugeridos no checkout (JSON já vem do controller) */ scope_checkout.parametros_cashback {}; scope_checkout.$apply(); scope_checkout.ready true; /* Endereços do cliente */ /* Cadastro de endereço novo que está na sessão */ // $(document).delegate(.btn-new-end-session, click, function(e) { // e.preventDefault(); // /* id_regiao_entrega_rua */ // var id_endereco $(this).data(id); // /* Ocultar campo cep no momento da edição do endereço */ // $(.form-address-select).addClass(d-none); // $(#form-address-cep-unico).addClass(d-none); // $(#form-edit-address).removeClass(d-none); // $(#form-edit-address).find(.group-cep-form).removeClass(d-none); // $(#form-edit-address).find(.info-endereco-cep).addClass(d-none); // $(.edit-address).find(.modal-footer).addClass(d-none); // /* Filtro para obter dados conforme id da area selecionado */ // var endereco_selecao scope_cliente.cliente.enderecos.filter(a > a.id_regiao_entrega_area id_endereco); // if ((endereco_selecao0.in_cadastro N)) { // setEnderecoCadastro(endereco_selecao); // } else { // $(.edit-address).find(form).attr(data-id_end, 0); // } // if (!$(.edit-address).hasClass(show)) { // $(.edit-address).modal(show); // } // }); /* Focar destaque para o cliente no box de endereco */ $(document).delegate(.btn-select-endereco, click, function(e){ e.preventDefault(); var is_mobile $(window).width(); $(.title-endereco-checkout).addClass(red-700); if(is_mobile 992) { var scroll_mobile 55; var div_scroll $(.finalizar-pedido); /* Script para scroll no modal mobile */ var scrollOffset $(.form-address-select).first().offset().top - div_scroll.offset().top + div_scroll.scrollTop() - scroll_mobile; function customScrollTo(to, duration) { var start $(window).scrollTop(), change to - start, currentTime 500, increment 10; var animateScroll function(){ currentTime + increment; var val Math.easeInOutQuad(currentTime, start, change, duration); window.scrollTo(to,val); if(currentTime duration) { setTimeout(animateScroll, increment); } }; animateScroll(); } Math.easeInOutQuad function (t, b, c, d) { t / d/2; if (t 1) return c/2*t*t + b; t--; return -c/2 * (t*(t-2) - 1) + b; }; customScrollTo(scrollOffset, 1000); } }); /* ----------- BEGIN FORMAS DE PAGAMENTO CHECKOUT ------- */ /* Função da ação ao checkar alguma forma de pagamento */ window.checkPagamento function(in_especie, formas_pagamento) { if (in_especie ! recebimento_online) { $(.box-formas-list).find(.info_payment).html(); $(.nav-tp-pagamento).addClass(d-none); $(.box-formas-list).addClass(d-none); $(.box-formas).addClass(d-none); $(.aviso-pix).addClass(d-none); if (in_especie pix_manual) { $(#pagarOnline).addClass(d-none); } if((in_especie dinheiro) || (in_especie outros)) { $(.box-formasdata-especie+in_especie+).removeClass(d-none); if (in_especie dinheiro) { if (scope_checkout.cart.vl_troco > 0) { $(.box-troco).removeClass(d-none); $(.box-troco-question).addClass(d-none); } else { $(.box-troco-question).removeClass(d-none); } $(.mask_money).mask(#.##0,00, { reverse: true }); } setValoresFormaPagamentoCarrinho(formas_pagamento.dados0.id_forma_pagamento, formas_pagamento.in_especie, offline, true, , false) setTimeout(function() { setTextPagamentoCheckout(formas_pagamento.dados0.id_forma_pagamento, formas_pagamento.in_especie) }, 100); } else if (in_especie pix_maquina || in_especie pix_manual) { /* Caso for pix manual e máquina */ $(.aviso-pix).removeClass(d-none); $(.aviso-pix).find(.aviso_pix_manual).addClass(d-none); $(.aviso-pix).find(.aviso_pix_maquina).addClass(d-none); $(.aviso-pix).find(.aviso_ + in_especie).removeClass(d-none); $(.aviso-pix).attr(data-especie, in_especie); $(.aviso-pix).find(.id_forma_pagamento_pix).val(formas_pagamento.dados0.id_forma_pagamento); setValoresFormaPagamentoCarrinho(0, , , false, , false) } else { /* Caso for algum tipo de cartão, lista as bandeiras equivalentes */ $(.box-formasdata-especiecartao).removeClass(d-none); var dados { bandeiras : formas_pagamento.dados, in_especie : in_especie } scope_carrinho.forma_pagamento_selected ; scope_carrinho.forma_pagamento_selected.push(dados); } } else { if (scope_carrinho.formas_pagamento_online.length > 0) { if (formas_pagamento pix) { var pix scope_carrinho.formas_pagamento_online0.dados.filter(f > f.id_forma_pagamento 12); if (pix.length > 0) { setValoresFormaPagamentoCarrinho(parseInt(pix0.id_forma_pagamento), scope_carrinho.formas_pagamento_online0.in_especie, online, true, , false) setTimeout(function() { setTextPagamentoCheckout(pix0.id_forma_pagamento, scope_carrinho.formas_pagamento_online0.in_especie); }, 100); if ($(#modal-pagamento).hasClass(show)) { $(#modal-pagamento).modal(hide); } } } } } } /* Função para setar o valor do troco no carrinho */ window.changeTroco function(vl_troco) { if (vl_troco > scope_checkout.cart.vl_total) { scope_checkout.cart.vl_troco vl_troco; scope_checkout.payment_confirmed true; $(.msg-troco).html(); $(.valor-troco).removeClass(input-error); var msg_payment_info $(.carrinho).find(.info_payment_checkout).find(.msg_info_payment); if (msg_payment_info.find(.text-append-troco).length 0) { msg_payment_info.append( span classtext-append-troco>(Troco para R$+(vl_troco).toFixed(2).replace(.,,)+)/span>); } else { msg_payment_info.find(.text-append-troco).html((Troco para R$+(vl_troco).toFixed(2).replace(.,,)+)); } $(.box-troco).addClass(d-none); if ($(#modal-pagamento).hasClass(show)) { $(#modal-pagamento).modal(hide); } setFormaPagamentoSession(); } else { scope_checkout.cart.vl_troco 0; $(.valor-troco).addClass(input-error); $(.valor-troco).focus(); $(.msg-troco).html(O troco deve ser maior que o valor do pedido); } } /* Função para confirmação de utilização de cartão */ window.confirmCartao function(forma, in_especie) { var id_bandeira forma.id_forma_pagamento; var in_especie in_especie; var ds_bandeira forma.ds_bandeira_operadora; var img_bandeira forma.im_bandeira; if ((id_bandeira ! ) && (id_bandeira ! 0)) { setValoresFormaPagamentoCarrinho(id_bandeira, in_especie, offline, true, , false); /* Mensagem no checkout na opção de forma de pagamento */ setTimeout(function(){ setTextPagamentoCheckout(id_bandeira, in_especie) }, 100); if ($(#modal-pagamento).hasClass(show)) { $(#modal-pagamento).modal(hide); } } else { $(.msg-cartao).html(Selecione a bandeira que deseja utilizar!); } return {id_forma_pagamento: id_bandeira, in_especie: in_especie, tp_pagamento: offline}; } /* Confirmação da seleção do cartão de crédito */ window.confirmCartaoOnline function(id_forma_pagamento, dados_cartao) { if (id_forma_pagamento > 0) { if (dados_cartao.length > 0) { setValoresFormaPagamentoCarrinho(parseInt(id_forma_pagamento), recebimento_online, online, true, dados_cartao0.id_cartao_integracao) setTimeout(function(){ setTextPagamentoCheckout(parseInt(id_forma_pagamento), recebimento_online) }, 100); if ($(#modal-pagamento).hasClass(show)) { $(#modal-pagamento).modal(hide); } } } } /* Ação de seleção do cartão online */ $(document).delegate(.select-cartao-pagamento-online, click, function() { var id $(this).attr(data-id); var card $(this).attr(data-card); if (id && card) { var dados_cartao scope_carrinho.carteira_cartoes.filter(c > c.id_cartao_integracao card); if (dados_cartao.length > 0) { confirmCartaoOnline(id, dados_cartao); } } }); /* Novo cartão para o formulário */ $(document).delegate(.btn-novo-cartao-carteira, click, function() { $(#dadosCartaoOnline).removeClass(d-none) $(#pagarOnline).addClass(d-none); $(.nav-tp-pagamento).addClass(d-none); $(#dadosCartaoOnline).find(.input-cartao).val(); $(#dadosCartaoOnline).find(.img-cartao-brand).html(); $(#dadosCartaoOnline).find(#check-titular-card).prop(checked, false); $(#dadosCartaoOnline).find(#check-titular-card).trigger(change); setValoresFormaPagamentoCarrinho(0, , , false, ); window.loadingInButtons($(.btn-send-cartao-pagarme), remove); // pagar.me if ($(#dadosCartaoOnline).find(#input-email-card-titular).length > 0) { var cliente scope_cliente.cliente; if (cliente.dados.id_cliente) { if (cliente.dados.ds_email) { $(#dadosCartaoOnline).find(#input-email-card-titular).val(cliente.dados.ds_email); $(#dadosCartaoOnline).find(#input-email-card-titular).closest(.content-info-titular-card).addClass(d-none); } else { $(#dadosCartaoOnline).find(#input-email-card-titular).val(); $(#dadosCartaoOnline).find(#input-email-card-titular).closest(.content-info-titular-card).removeClass(d-none); } } } }); /* Retornar para carteira de cartões do cliente */ $(document).delegate(.btn-return-carteira-cartoes, click, function() { $(#dadosCartaoOnline).addClass(d-none) $(#pagarOnline).removeClass(d-none); $(.nav-tp-pagamento).removeClass(d-none); $(#dadosCartaoOnline).find(.msg-feedback-cartao).addClass(d-none); $(#dadosCartaoOnline).find(.msg-feedback-cartao p).html(); $(#dadosCartaoOnline).find(input.alert-danger).removeClass(alert-danger); }); /* Confirmação do pix Manual */ $(document).delegate(.btn-confirm-pix, click, function() { var id_pix $(this).closest(.aviso-pix).find(.id_forma_pagamento_pix).val(); if (id_pix) { var in_especie $(this).closest(.aviso-pix).attr(data-especie); setValoresFormaPagamentoCarrinho(parseInt(id_pix), in_especie, offline, true, ); setTimeout(function() { var ds_chave_pix 47936048000170; setTextPagamentoCheckout(parseInt(id_pix), in_especie); if ($(#modal-pagamento).hasClass(show)) { $(#modal-pagamento).modal(hide); } }, 100); } else { alert(Algo de errado ao selecionar a opção do Pix.) } }); /* Função para resetar as formas de pagamento */ window.resetPagamentosSelected function() { $(.box-formas).addClass(d-none); $(.box-troco).addClass(d-none); $(.nav-tp-pagamento).removeClass(d-none); $(.box-formas-list).removeClass(d-none); $(#pagarOnline).removeClass(d-none); $(.aviso-pix).addClass(d-none); $(.aviso-pix).attr(data-especie, ); $(.aviso-pix).find(.id_forma_pagamento_pix).val(); } /* Quando seleciona algum cartão, a ação do botão voltar */ $(document).delegate(.return-payments, click, function(){ resetPagamentosSelected(); }); /* Voltar a listagem das formas de pagamento */ $(document).delegate(.not-troco, click, function(e){ e.preventDefault(); /* Fechar o modal caso seja dinheiro e não possui troco */ if ($(#modal-pagamento).hasClass(show)) { $(#modal-pagamento).modal(hide); } }); $(#modal-pagamento).on(show.bs.modal, function () { $(.box-formas).addClass(d-none); $(.box-formas-list).removeClass(d-none); $(.nav-tp-pagamento).removeClass(d-none); $(#dadosCartaoOnline).addClass(d-none) $(#pagarOnline).removeClass(d-none) $(#pagarEntrega).removeClass(d-none) $(.listOptionsPayments).removeClass(d-none); $(.listOptionsPayments).removeClass(dropdownOpen); $(.aviso-pix).addClass(d-none); $(.aviso-pix).attr(data-especie, ); $(.aviso-pix).find(.id_forma_pagamento_pix).val(); }); /* Click em alguma area do modal, remove a classe do dropdown */ $(document).delegate(#modal-pagamento, click, function(e){ //e.preventDefault(); $(this).find(.listOptions).removeClass(dropdownOpen); }); /* Ação antes de abrir o modal do pagamento */ $(document).delegate(.btn-select-pagamento-modal, click, function(e) { e.preventDefault(); var tp_pedido_ativo in_delivery; if (scope_carrinho.cart.tp_entrega E) { tp_pedido_ativo in_delivery; } else if (scope_carrinho.cart.tp_entrega B) { tp_pedido_ativo in_retirada; } else if (scope_carrinho.cart.tp_entrega L) { tp_pedido_ativo in_consumo_local; } if (scope_carrinho.formas_pagamento.length > 0) { var pagamentos_online scope_carrinho.formas_pagamento.filter(e > e.in_especie recebimento_online || e.in_especie pix_manual); if (pagamentos_online.length > 0) { var arr_pagamentos_online ; pagamentos_online.map(go > { var bandeiras_permitidas go.dados.filter(d > dtp_pedido_ativo S); if (bandeiras_permitidas.length > 0) { go.dados bandeiras_permitidas; arr_pagamentos_online.push(go); } }) scope_carrinho.formas_pagamento_online arr_pagamentos_online; } /* Caso o agendamento exigir pagamento online, não mostra as offline no modal */ if (scope_carrinho.cart.agendamento.in_exigir_pagamento ! S) { var pagamentos_offline scope_carrinho.formas_pagamento.filter(e > dinheiro, cartao_credito, cartao_debito, cartao_voucher, pix_maquina.includes(e.in_especie)); if (pagamentos_offline.length > 0) { var arr_pagamentos_offline ; pagamentos_offline.map(g > { var bandeiras_permitidas g.dados.filter(d > dtp_pedido_ativo S); if (bandeiras_permitidas.length > 0) { arr_pagamentos_offline.push(g); } }) scope_carrinho.formas_pagamento_offline arr_pagamentos_offline; } } else { if (scope_carrinho.formas_pagamento_online.length > 0) { scope_carrinho.formas_pagamento_offline ; } } scope_carrinho.$apply(); $(#modal-pagamento).modal(show); $(#modal-pagamento).find(.btn-type-pagamento).removeClass(active show); $(#modal-pagamento).find(.tab-content).find(.tab-pane).removeClass(active show); if (scope_checkout.cart.id_forma_pagamento > 0) { if (scope_checkout.cart.id_forma_pagamento 7 || scope_checkout.cart.id_forma_pagamento 11 || scope_checkout.cart.id_forma_pagamento 12 || scope_carrinho.cart.agendamento.in_exigir_pagamento S) { $(.btn-type-pagamento.online).trigger(click); } else { $(.btn-type-pagamento.offline).trigger(click); } return; } if (scope_carrinho.formas_pagamento_online.length > 0) { $(.btn-type-pagamento.online).trigger(click); } else { $(.btn-type-pagamento.offline).trigger(click); } } else { window.alertMessage(danger, Atenção!, A Loja não possui formas de pagamento habilitadas no site. Entre em contato com a Loja pelos canais de atendimento.) } }); // Validar a forma de pagamento ativa no carrinho se permite pro tipo de pedido window.checkFormaPagamentoPermitidoByTpEntrega function() { var tp_pedido_ativo in_delivery; var text_msg Delivery; if (scope_carrinho.cart.tp_entrega E) { tp_pedido_ativo in_delivery; text_msg Delivery; } else if (scope_carrinho.cart.tp_entrega B) { tp_pedido_ativo in_retirada; text_msg Retirada na Loja; } else if (scope_carrinho.cart.tp_entrega L) { tp_pedido_ativo in_consumo_local; text_msg Consumo Local; } if (tp_pedido_ativo) { if (scope_checkout.cart.forma_pagamento.id_forma_pagamento > 0) { var pagamento_grupo scope_carrinho.formas_pagamento.filter(e > e.in_especie scope_checkout.cart.forma_pagamento.in_especie); if (pagamento_grupo.length > 0) { var forma_in_list pagamento_grupo0.dados.filter(d > d.id_forma_pagamento scope_checkout.cart.forma_pagamento.id_forma_pagamento); if (forma_in_list.length > 0) { if (forma_in_list0tp_pedido_ativo S) { return; } } } } } window.alertMessage(danger, Ops, confirme a forma de pagamento., A forma de pagamento selecionada anteriormente não está disponível para + text_msg) setValoresFormaPagamentoCarrinho(0, , , false, , true) } window.checkFormaPagamentoCarrinhoByTotal function() { if (scope_checkout.cart.vl_total 0) { if (scope_checkout.cart.forma_pagamento.id_forma_pagamento > 0) { setValoresFormaPagamentoCarrinho(0, , , true, , true) } else { scope_checkout.payment_confirmed true; scope_checkout.$apply(); } } else { if (scope_checkout.cart.forma_pagamento.id_forma_pagamento 0) { if (scope_cliente.info_pedido.tp_pedido presencial) { if (scope_cliente.info_pedido.dados) { var dados_pedido_info scope_cliente.info_pedido.dados; if (!dados_pedido_info.in_obrigar_pagamento_online) { scope_checkout.payment_confirmed true; } else { scope_checkout.payment_confirmed false; } } else { scope_checkout.payment_confirmed false; } } else { scope_checkout.payment_confirmed false; } scope_checkout.$apply(); } else { checkFormaPagamentoPermitidoByTpEntrega(); } } } /* Alimentar variaveis de escopo da forma de pagamento */ window.setValoresFormaPagamentoCarrinho function(id, especie, tp_pagamento, confirmed, id_cartao, in_apply true) { scope_checkout.cart.id_forma_pagamento id; scope_checkout.cart.forma_pagamento.id_forma_pagamento id; scope_checkout.cart.forma_pagamento.in_especie especie; scope_checkout.cart.forma_pagamento.tp_pagamento tp_pagamento; scope_checkout.cart.forma_pagamento.id_cartao id_cartao; scope_checkout.payment_confirmed confirmed; if (especie ! dinheiro) { scope_checkout.cart.vl_troco 0; } if (in_apply) { scope_checkout.$apply(); } if (is_checkout_load) { setFormaPagamentoSession(); } /* Id de sessão da clear sale para identificar antifraude */ if (id 11 && (especie recebimento_online)) { } } /* Atualizar forma de pagamento na sessão */ window.setFormaPagamentoSession async function() { var dados { forma_pagamento: { ...scope_checkout.cart.forma_pagamento, vl_troco: scope_checkout.cart.vl_troco } } var resSession checkout_element.ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Checkout\\CheckoutController, ajax_function: setFormaPagamentoSession}); await resSession.sendDadosPromise(JSON.stringify(dados)) .then((data) > { console.log(Atualizou sessão da forma de pagamento) }) .catch((error) > { console.log(Erro na requisição da sessão da forma de pagamento.); }); } /* Definir mensagem da forma de pagamento selecionada no checkout */ window.setTextPagamentoCheckout function(id_forma, in_especie) { var text_forma_pagamento ; var img_forma_pagamento ; if (id_forma > 0) { var formas_especie scope_carrinho.formas_pagamento.filter(f > f.in_especie in_especie); if (formas_especie.length > 0) { id_forma parseInt(id_forma); var forma_pagamento formas_especie0.dados.filter(f > f.id_forma_pagamento id_forma); if (forma_pagamento.length > 0) { if (in_especie recebimento_online) { if (forma_pagamento0.ds_bandeira_operadora ! PIX) { if (scope_checkout.cart.forma_pagamento.id_cartao) { var dados_cartao scope_carrinho.carteira_cartoes.filter(c > c.id_cartao_integracao scope_checkout.cart.forma_pagamento.id_cartao); if (dados_cartao.length > 0) { img_forma_pagamento payment/svg/credit-+(dados_cartao0.ds_bandeira).toLowerCase()+.svg; text_forma_pagamento `Crédito (**** **** **** ${dados_cartao0.nr_digitos_fim})`; } } } else { text_forma_pagamento Pix; img_forma_pagamento forma_pagamento0.im_bandeira; } } else if (in_especie pix) { text_forma_pagamento Pix; img_forma_pagamento forma_pagamento0.im_bandeira; } else { text_forma_pagamento forma_pagamento0.ds_bandeira_operadora; img_forma_pagamento forma_pagamento0.im_bandeira; if (in_especie cartao_credito) { text_forma_pagamento + (Cartão de Crédito); } else if (in_especie cartao_debito) { text_forma_pagamento + (Cartão de Débito); } else if (in_especie cartao_voucher) { text_forma_pagamento + (Voucher); } if ((id_forma 1) && (scope_checkout.cart.vl_troco > 0)) { text_forma_pagamento + span classtext-append-troco>(Troco para R$+(scope_checkout.cart.vl_troco).toFixed(2).replace(.,,)+)/span>; } } } } if (!text_forma_pagamento) { text_forma_pagamento Forma de pagamento não reconhecida.; } } if (img_forma_pagamento) { $(.carrinho).find(.info_payment_checkout).find(.img_payment).html(img classcard-flag ml-2 styleheight: 20px; width: auto; src../assets/common/images/+img_forma_pagamento+>); } else { $(.carrinho).find(.info_payment_checkout).find(.img_payment).html(); } $(.carrinho).find(.info_payment_checkout).find(.msg_info_payment).html(text_forma_pagamento); } /* Box referente a confirmação de possuir troco */ $(document).delegate(.has-troco, click, function(e){ e.preventDefault(); $(.box-troco-question).addClass(d-none); $(.box-troco).removeClass(d-none); }); /* Exibição das formas de pagamento no Select 2 da página checkout caso uma opção de cartão seja selecionada */ window.makePagamentoCartoes function(formas_pagamento) { $(#select_cartoes).html(); $(#select_cartoes).append(option>/option>); /* Inclusão dos options apenas */ $.each(formas_pagamento.dados, function (index, value) { var newOption new Option(value.ds_bandeira_operadora, value.id_forma_pagamento, false, false); $(newOption).attr(data-img, value.im_bandeira); $(#select_cartoes).append(newOption); }); /* Inclusão dos options com a imagem da bandeira */ function format (option) { if (option.id 0) { return option.text; } if($(option.element).attr(data-img) ! undefined) { var opt_img ../assets/common/images/+$(option.element).attr(data-img); var $option $( span>img src+ opt_img + classimg-flag mr-3/>+option.text+/span> ); return $option; } else { var $option $( span>+option.text+/span> ); return $option; } }; $(#select_cartoes).select2({ width: 100%, placeholder: Selecione uma opção.., templateResult: format, templateSelection: format, minimumResultsForSearch: Infinity, escapeMarkup: function (m) { return m; } }); /* Após selecionar a bandeira do cartao, dá o focus no botão confirmar */ $(document).delegate(#select_cartoes, change, function(e){ setTimeout(function(){ $(.btn-confirm-cartao).focus(); }, 50); }); }; /* Formas de pagamento DA SESSÃO para montagem na tela checkout */ setTimeout(() > { window.checkFormaPagamentoCarrinhoByTotal(); }, 1000); $(document).delegate(#input-cpf-cliente-checkout, keypress, function() { $(this).removeClass(alert-danger); }); /* Verficiar campo da bandeira oculto no formulário e jogar imagem no input*/ $(document).delegate(#input-card-number, keyup, function() { var html_brand $(.img-cartao-brand).html(); if (html_brand) { var src_img $(.img-cartao-brand).find(img).attr(src); if (src_img) { $(this).css(background, url(+src_img+) calc(100% - 6px) center no-repeat) return; } } $(this).css(background, transparent) }); /* ----------- END FORMAS DE PAGAMENTO CHECKOUT ------- */ /* ----------- -------------------------------- ------- */ /* Botão de finalização de pedido */ $(document).delegate(#btn-enviar-pedido, click, async function(){ $(.msg-checkout).html(); $(.msg-checkout).addClass(d-none); if (scope_cliente.info_pedido.tp_pedido normal) { if (!(scope_checkout.endereco_confirmed) || (scope_checkout.cart.tp_entrega )) { $(.msg-checkout).html(Endereço de entrega não selecionado. Verifique!); $(.msg-checkout).removeClass(d-none); return; } if (((scope_checkout.cart.forma_pagamento.id_forma_pagamento 0) || !(scope_checkout.payment_confirmed)) && (scope_checkout.cart.vl_total > 0)) { $(.msg-checkout).html(Forma de pagamento não selecionada. Verifique!); $(.msg-checkout).removeClass(d-none); return; } /* Validação pedido minimo da empresa */ if (scope_checkout.cart.vl_subtotal scope_checkout.vl_pedido_min) { $(.msg-checkout).html(O pedido mínimo para a empresa é R$ +scope_checkout.vl_pedido_min.replace(.,,)+. Verifique seu carrinho!); $(.msg-checkout).removeClass(d-none); return; } /* Validação pedido minimo do endereço selecionado pelo cliente */ if ((scope_checkout.cart.tp_entrega E) && (scope_checkout.cart.id_endereco_entrega > 0)) { endereco scope_cliente.cliente.enderecos.filter(a > ((a.id_endereco scope_checkout.cart.id_endereco_entrega))); if (scope_checkout.cart.vl_subtotal endereco0.vl_pedido_minimo) { $(.msg-checkout).html(Seu pedido deve ser de no mínimo R$ +(endereco0.vl_pedido_minimo).toFixed(2).replace(.,,)+ para este endereço. br> Verifique seu carrinho!); $(.msg-checkout).removeClass(d-none); return; } } if ((scope_checkout.cart.vl_troco > 0) && ((scope_checkout.cart.vl_total) > scope_checkout.cart.vl_troco)) { $(.msg-checkout).html(O valor do troco deve ser maior que o valor do seu pedido. Verifique seu carrinho!); $(.msg-checkout).removeClass(d-none); return; } } /* Confirmar leitura do QR Code da mesa ou comanda */ if (scope_cliente.info_pedido.tp_pedido presencial) { if (!scope_cliente.info_pedido.dados.is_confirmed) { window.openModalConfirmQRCode(); return; } else { scope_cliente.info_pedido.dados.is_confirmed false; } } var valid_cliente false; if (((scope_cliente.cliente.id > 0) && (scope_cliente.cliente.id ! )) || (scope_cliente.info_pedido.tp_pedido presencial && scope_cliente.cliente.id -999)) { if (scope_cliente.cliente.ds_nome ! ) { valid_cliente true; } } if (valid_cliente) { if (scope_checkout.cart.itens.length > 0) { var dados scope_checkout.cart; if (scope_checkout.cart.forma_pagamento.tp_pagamento online) { if (scope_checkout.cart.forma_pagamento.id_forma_pagamento 11 || scope_checkout.cart.forma_pagamento.id_forma_pagamento 12) { var stop_function false; if (!scope_cliente.cliente.dados.nr_cpf_cnpj) { /* Abrir box para preenchimento do cpf */ var new_cpf $(#input-cpf-cliente-checkout).val(); if (new_cpf) { if (new_cpf.length 14) { $(#input-cpf-cliente-checkout).addClass(alert-danger); $(#input-cpf-cliente-checkout).focus(); stop_function true; } else { var res_new_cpf window.validaCpfCnpj(new_cpf); if (!res_new_cpf) { $(#input-cpf-cliente-checkout).trigger(blur); stop_function true; } else { dados.new_nr_cpf_cnpj_cliente new_cpf; $(#box-cpf-cliente-checkout).slideUp(); } } } else { $(#box-cpf-cliente-checkout).slideDown(); $(#input-cpf-cliente-checkout).focus(); stop_function true; } } if (!scope_cliente.cliente.dados.ds_email && scope_cliente.cliente.id > 0) { if ($(#box-email-cliente-checkout).length > 0) { /* Abrir box para preenchimento do email */ var new_email $(#input-email-cliente-checkout).val(); if (new_email) { var dados_update { ds_email: new_email }; var is_updated await window.requestUpdateProfile(dados_update); if (!is_updated) { $(.msg-checkout).html(Não conseguimos atualizar o seu e-mail, tente novamente.); $(.msg-checkout).removeClass(d-none); stop_function true; } else { $(#box-email-cliente-checkout).slideUp(); } } else { $(#box-email-cliente-checkout).slideDown(); if (!stop_function) { $(#input-email-cliente-checkout).focus(); } stop_function true; } } } if (stop_function) { $(#box-ambiente-seguro-cliente-checkout).removeClass(d-none); return; } else { $(#box-ambiente-seguro-cliente-checkout).addClass(d-none); } } } else { $(#box-ambiente-seguro-cliente-checkout).addClass(d-none); if ($(#box-cpf-cliente-checkout).length > 0) { $(#box-cpf-cliente-checkout).slideUp(); } if ($(#box-email-cliente-checkout).length > 0) { $(#box-email-cliente-checkout).slideUp(); } } var ped checkout_element.ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Checkout\\CheckoutController, ajax_function: setPedidoCliente}); ped.setPedidoCliente(dados); } else { window.location.href https://imperialsalgadosc.com.br; } } else { /* Caso o cliente não esteja logado, */ $(#modal-signup).modal(show); } }); /* Função para calculo do valor de desconto do cupom no carrinho */ window.setCupomCarrinho function(ds_cupom, data) { var total (scope_checkout.cart.vl_subtotal); var total_desconto 0; var msg datamsg; var tp_desconto datatp_desconto; var id_cupom dataid_cupom; var vl_desconto datavl_desconto; var alert true; var vl_desconto_produto 0; var ds_produto_cupom ; scope_checkout.cart.cupom_temp {}; var cupom {}; var in_novo_produto_cupom false; if (msg ! ) { if ($(#modal-cupom).hasClass(show)) { $(.msg-cupom).html(msg); } else { $(.msg-cupom-checkout).html(msg); $(.msg-cupom).html(msg); } window.loadingInButtons($(.btn-validar-cupom), remove); removeCupomCarrinho(false); return; } if (tp_desconto frete_gratis) { scope_checkout.cart.vl_entrega 0; } else if (tp_desconto percentual) { total_desconto total * (vl_desconto / 100); total_desconto total_desconto.toFixed(2); total_desconto parseFloat(total_desconto); } else if (tp_desconto vl_fixo) { total_desconto vl_desconto; } else if (tp_desconto item_gratis) { if (dataproduto.length > 0) { var produto dataproduto0; var produto_carrinho scope_checkout.cart.itens.filter(p > (p.id produto.id_produto && p.in_produto_cupom S)); if (produto_carrinho.length 0) { var img_item ; if (produto.im_item) { img_item `img classimg-produto srchttps://files.deliveryturbo.com.br/${produto.im_item}>`; } checkout_element.append(`a href# classex-md-p-cupom data-cupom${dataid_cupom} data-id_p${produto.id_produto} data-in_obs${produto.in_obs} data-has_comp${((produto.vl_complementos.count_complementos > 0) || (produto.remocao_itens.count_remocao > 0) || (produto.vl_tamanhos.count_tamanhos > 1)) ? S : N} data-rem${produto.remocao_itens.count_remocao} data-comp${produto.vl_complementos.count_complementos} data-tam${produto.vl_tamanhos.count_tamanhos} data-id_tamanho${produto.id_tamanho} data-in_tamanho_padrao${produto.in_tamanho_padrao}> p classpl-10px pr-10px pt-10px title-produto>${produto.ds_titulo_item}/p> p classpl-10px pr-10px text-produto after-discount>${produto.ds_item_completa}/p> small classpl-1 vl-venda-exibicao>R$ 0,00/small> small classpl-1 vl-venda-produto d-none>R$ 0,00/small> ${img_item} /a>`); checkout_element.find(.ex-md-p-cupom).trigger(click); setTimeout(() > { checkout_element.find(.ex-md-p-cupom).remove(); }, 500); alert false; in_novo_produto_cupom true; } /* Armazenar na base o valor de desconto que equivale ao adcionar este cupom */ vl_desconto_produto produto.vl_venda + produto.vl_acrescimo; ds_produto_cupom produto.ds_titulo_item; } } cupom.id_cupom id_cupom; cupom.ds_cupom ds_cupom; cupom.tp_desconto tp_desconto; /* Alerta para feedback ao cliente sbre a utilização do cupom no pedido */ if($(window).width() > 991) { if (alert) { $.gritter.add({ title: #+cupom.ds_cupom, text: Cupom de desconto aplicado ao seu pedido!, class_name: msg-boas-vindas, fade_out_speed: 2000, time: 3000, }); } } if (total_desconto > scope_checkout.cart.vl_total) { total_desconto scope_checkout.cart.vl_total; } cupom.vl_desconto total_desconto; cupom.vl_desconto_produto vl_desconto_produto; cupom.ds_produto_cupom ds_produto_cupom; cupom.vl_beneficio_cupom vl_desconto; if (in_novo_produto_cupom) { scope_checkout.cart.cupom_temp cupom; } else { scope_checkout.cart.cupom cupom; } scope_checkout.$apply(); scope_checkout.ready true; if (cupom.id_cupom > 0) { $(#modal-cupom).modal(hide); $(#modal-cupom).find(.ds_cod_cupom).val(ds_cupom); } /* Remoção do loading do botão de validação */ setTimeout(() > { window.loadingInButtons($(.btn-validar-cupom), remove); window.checkFormaPagamentoCarrinhoByTotal(); }, 500); } /* Função para remover o cupom do carrinho */ window.removeCupomCarrinho function(view_msg true) { /* Remover itens de cupom do carrinho */ var item_cupom scope_checkout.cart.itens.filter(p > (p.in_produto_cupom S)); if (item_cupom.length > 0) { $.each(item_cupom, function (index, cupom) { $(.rm-prod-cart.it-cpdata-p+cupom.id+).trigger(click); }); } scope_checkout.cart.cupom.id_cupom 0; scope_checkout.cart.cupom.ds_cupom ; scope_checkout.cart.cupom.tp_desconto ; scope_checkout.cart.cupom.vl_desconto 0; scope_checkout.cart.cupom.vl_desconto_produto 0; scope_checkout.cart.cupom.ds_produto_cupom ; scope_checkout.cart.cupom.vl_beneficio_cupom 0; scope_checkout.cart.cupom_temp {}; scope_checkout.$apply(); scope_checkout.ready true; /* Simular click no endereço para passar valor do frete. */ $(.form-address-select).find(.line-endereco.active).find(.check-confirm-endereco).trigger(click); if (view_msg) { if ($(#modal-cupom).hasClass(show)) { $(#modal-cupom).modal(hide); } $(.box-cupom).find(.ds_cod_cupom).val(); $(.carrinho).find(.msg-cupom-checkout).html(O cupom de desconto foi removido do seu pedido!); } setTimeout(() > { if (typeof checkSaldoClienteCheckout function) { window.checkSaldoClienteCheckout($(#check-utilizar-saldo-carteira).is(:checked)); } }, 100); } /* Função com requisição para enviar a remoção do cupom */ window.sendRemocaoCupomCarrinho async function(view_msg true) { if((scope_checkout.cart.cupom.id_cupom ! 0) && (scope_checkout.cart.cupom.ds_cupom ! )) { var rem $(#modal-cupom).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Checkout\\CheckoutController, ajax_function: remCupomDesconto}); await rem.sendDadosPromise() .then((data) > { if(data ok){ if(checkout_element.length > 0) { removeCupomCarrinho(view_msg); } } else { $(.msg-cupom).html(data); } }) .catch((error) > { console.log(Erro na requisição da remoção do cupom de desconto.); console.log(error); }); await window.sleep(100); } } /* Botão de remoção de desconto */ $(document).delegate(.rem-cupom-desconto, click, async function(e){ e.preventDefault(); window.loadingInButtons($(this), add); await sendRemocaoCupomCarrinho(); }); /* Utilizado ao abrir o modal do cupom */ $(#modal-cupom).on(show.bs.modal, function () { $(.msg-cupom-checkout).html(); $(.msg-cupom).html(); if (scope_checkout.cupons_sugeridos.length > 0) { const cart_cupom scope_checkout.cart; scope_checkout.cupons_sugeridos.map(cupom > { /* Validações dos cupons */ let regras_cupom ; /* Data de validade final do cupom */ if (cupom.dt_validade_ate) { let dt_ate_arr (cupom.dt_validade_ate).split(-); let dt_ate_convert dt_ate_arr2+/+dt_ate_arr1; let ds_regra Válido até o dia +dt_ate_convert; regras_cupom.push(ds_regra); } /* Dias da semana permitidos */ if (cupom.ds_dias_permitidos) { let dias_permitidos_arr JSON.parse(cupom.ds_dias_permitidos); let dias_semana_arr dom, seg, ter, qua, qui, sex, sáb; if (dias_permitidos_arr.length > 0) { let ds_regra ; if (dias_permitidos_arr.length 7) { ds_regra Válido todos os dias da semana; } else { ds_regra Válido nos dias: ; dias_permitidos_arr.map((dia, idx_dia) > { if (idx_dia (dias_permitidos_arr.length - 1)) { ds_regra + e ; } else { if (idx_dia > 0) { ds_regra + , ; } } ds_regra + dias_semana_arrdia; }); } regras_cupom.push(ds_regra); } } /* Pedido minimo para o cupom */ if (cupom.vl_pedido_minimo > 0) { regras_cupom.push(Válido para pedidos acima de R$ + (cupom.vl_pedido_minimo).toFixed(2).replace(., ,)); } /* Hora de validade */ if (cupom.hr_validade_de && cupom.hr_validade_ate) { regras_cupom.push(Válido entre + cupom.hr_validade_de.substr(0, 5) + e + cupom.hr_validade_ate.substr(0, 5)); } else if (cupom.hr_validade_de) { regras_cupom.push(Válido a partir das + cupom.hr_validade_de.substr(0, 5)); } else if (cupom.hr_validade_ate) { regras_cupom.push(Válido até as + cupom.hr_validade_ate.substr(0, 5)); } /* Tipo de entrega do pedido */ if (cupom.in_cupom_entrega S && cupom.in_cupom_retirada S) { regras_cupom.push(Válido para pedidos de delivery e retirada); } else if (cupom.in_cupom_entrega S) { regras_cupom.push(Válido somente para pedidos de delivery); } else if (cupom.in_cupom_retirada S) { regras_cupom.push(Válido somente para pedidos de retirada); } if (cupom.in_cupom_consumo_local S) { /* regras_cupom.push(Válido para pedidos de consumo no local); */ } /* Somente pro primeiro pedido? */ if (cupom.in_cupom_primeiro_pedido S) { regras_cupom.push(Válido apenas para o seu primeiro pedido); } /* Uso unico por cliente? */ if (cupom.in_cupom_unico_cliente S) { regras_cupom.push(Você só pode usar esse cupom 1 vez); } /* Uso exclusivo para aniversariantes */ if (cupom.tp_automacao aniversariantes) { regras_cupom.push(Seu presente de aniversário); } /* Verificar se cupom é ativo ou não */ let in_ativo S; let msg_ativo ; if ((cupom.in_cupom_entrega ! S) && (cart_cupom.tp_entrega E)) { in_ativo N; msg_ativo Indisponível para entrega; } if ((cupom.in_cupom_retirada ! S) && (cart_cupom.tp_entrega B)) { in_ativo N; msg_ativo Indisponível para retirada; } if ((cupom.vl_pedido_minimo > 0) && (cart_cupom.vl_subtotal cupom.vl_pedido_minimo)) { in_ativo N; msg_ativo Pedido mínimo de R$ +cupom.vl_pedido_minimo; } if ((cupom.tp_desconto frete_gratis) && (cart_cupom.tp_entrega ! E)) { in_ativo N; msg_ativo Disponível somente para entrega; } cupom.regras regras_cupom; cupom.in_ativo in_ativo; cupom.msg_ativo msg_ativo; }); scope_checkout.$apply(); } }); /* Visualiação das regras do cupom */ $(document).delegate(.btn-view-regras, click, function(e) { e.preventDefault(); let line_cupom $(this).closest(.btn-cupom-sugerido); line_cupom.find(.hide-regra-cupom).removeClass(d-none); $(this).addClass(d-none); }); /* Utilizado ao estar aberto o modal do cupom */ $(#modal-cupom).on(shown.bs.modal, function () { $(.ds_cod_cupom).focus(); }); /* Exibição do box do cupom no checkout */ $(.link-box-cupom).click(function(e){ e.preventDefault(); $(this).closest(div).find(.box-cupom).removeClass(d-none); $(this).closest(div).find(.box-cupom).find(.ds_cod_cupom).focus(); $(this).addClass(d-none); }); /* Ao pressionar Enter, simular click botão de validar cupom */ $(.ds_cod_cupom).keypress(function(e){ if (e.keyCode 13) { $(.btn-validar-cupom).trigger(click); } }); /* Ação de clique no cupom sugerido */ $(document).delegate(.btn-cupom-sugerido, click, function(e) { if (e.target.className.includes(p-view-regras-cupom)) { return false; } var codigo_sugerido $(this).attr(data-codigo); if (codigo_sugerido) { if (scope_checkout.cart.cupom.ds_cupom codigo_sugerido) { return; } $(.box-cupom).find(.ds_cod_cupom).val(codigo_sugerido); $(.btn-validar-cupom).trigger(click); } }); /* Ação do click do botão validar do cupom */ $(document).delegate(.btn-validar-cupom, click, async function(){ var dados ; var cupom $(.box-cupom).find(.ds_cod_cupom).val(); var total_pedido scope_checkout.cart.vl_subtotal; var tp_entrega scope_checkout.cart.tp_entrega; if (scope_checkout.cart.cupom.ds_cupom cupom) { // return; } window.loadingInButtons($(this), add); /* Remover cupom caso já possuir aplicado no carrinho */ if (scope_checkout.cart.cupom.id_cupom > 0) { if ($(#modal-cupom).hasClass(show)) { await sendRemocaoCupomCarrinho(); } else { if (scope_checkout.cart.cupom.tp_desconto ! item_gratis) { await sendRemocaoCupomCarrinho(false); } } } $(.box-cupom).find(.msg-cupom).html(); $(.carrinho).find(.msg-cupom-checkout).html(); // Validar cashback if ($(#check-utilizar-saldo-carteira).is(:checked)) { var msg_cashback ; if (scope_checkout.cart.vl_cashback > 0) { if (scope_checkout.parametros_cashback.in_permite_cupom_desconto) { if (scope_checkout.parametros_cashback.in_permite_cupom_desconto ! S) { msg_cashback Não é possível utilizar o cashback com cupom de desconto aplicado no pedido.; } } } if (!msg_cashback) { window.aplicarCashbackSaldoCliente(); } else { if ($(#modal-cupom).hasClass(show)) { $(.box-cupom).find(.msg-cupom).html(msg_cashback); window.loadingInButtons($(this), remove); return; } } } await window.sleep(100); if (scope_checkout.cart.vl_total 0) { if ($(#modal-cupom).hasClass(show)) { $(.box-cupom).find(.msg-cupom).html(Cupom não pode ser aplicado pois o total do pedido já está zerado.); window.loadingInButtons($(this), remove); return; } } if (cupom ! ) { dados.push({cupom: cupom.toUpperCase(), total_pedido : total_pedido, tp_entrega: tp_entrega}); var cp $(this).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Checkout\\CheckoutController, ajax_function: getCupomDesconto}); cp.getCupomDesconto(dados); } else { $(.box-cupom).find(.msg-cupom).html(Informe o cupom desejado!); $(.box-cupom).find(.ds_cod_cupom).focus(); window.loadingInButtons($(this), remove); } }); /* Caso seja recarregada a página do checkout, validação do cupom */ /* --------------------- FUNÇÕES SOBRE SALDO E CASHBACK ------------ */ if (typeof getSaldoCarteiraClienteEmpresa function) { window.getSaldoCarteiraClienteEmpresa(); } window.aplicarCashbackSaldoCliente async function() { $(.msg-carteira-cliente).html(); $(.msg-carteira-cliente).removeClass(d-inline-block).addClass(d-none); scope_checkout.cart.vl_cashback 0; scope_checkout.cart.vl_credito_loja 0; scope_checkout.calcTotalPedido(); await window.sleep(50); if (scope_checkout.cart.vl_total 0) { $(.msg-carteira-cliente).html(Saldo não utilizado pois o pedido já está zerado.); $(.msg-carteira-cliente).removeClass(d-none).addClass(d-inline-block); $(#check-utilizar-saldo-carteira).prop(checked, false); return; } var vl_cashback 0; var vl_credito_loja 0; var vl_pedido_restante parseFloat(scope_checkout.cart.vl_total.toFixed(2)); if (scope_cliente.cliente.vl_saldo_carteira_cashback > 0) { var msg_cashback ; if (scope_checkout.parametros_cashback.in_ativo) { if (scope_checkout.cart.cupom.id_cupom > 0) { if (scope_checkout.parametros_cashback.in_permite_cupom_desconto ! S) { msg_cashback Não é possível utilizar o cashback com cupom de desconto no pedido.; } } if (msg_cashback) { $(.msg-carteira-cliente).html(msg_cashback); $(.msg-carteira-cliente).removeClass(d-none).addClass(d-inline-block); } else { var vl_base vl_pedido_restante; vl_cashback scope_cliente.cliente.vl_saldo_carteira_cashback; if (scope_checkout.cart.vl_entrega > 0) { if (scope_checkout.parametros_cashback.in_pagar_taxa_entrega ! S) { vl_base vl_base - scope_checkout.cart.vl_entrega; if (vl_cashback > vl_base) { $(.msg-carteira-cliente).html(Não é possível utilizar o cashback para pagar valor de entrega dos pedidos.); $(.msg-carteira-cliente).removeClass(d-none).addClass(d-inline-block); } } } if (vl_cashback > vl_base) { vl_cashback vl_base; vl_pedido_restante 0; } else { vl_pedido_restante vl_base - vl_cashback; } } } } if (vl_pedido_restante > 0) { if (scope_cliente.cliente.vl_saldo_carteira_credito > 0) { vl_credito_loja scope_cliente.cliente.vl_saldo_carteira_credito; if (vl_credito_loja > vl_pedido_restante) { vl_credito_loja vl_pedido_restante; vl_pedido_restante 0; } else { vl_pedido_restante vl_pedido_restante - vl_credito_loja; } } } if (vl_cashback 0 && vl_credito_loja 0) { $(#check-utilizar-saldo-carteira).prop(checked, false); } scope_checkout.cart.vl_cashback vl_cashback; scope_checkout.cart.vl_credito_loja vl_credito_loja; scope_checkout.calcTotalPedido(); scope_checkout.$apply(); setTimeout(() > { window.checkFormaPagamentoCarrinhoByTotal(); scope_checkout.$apply(); }, 50); } window.checkSaldoClienteCheckout function(is_check) { if (scope_checkout.cart.forma_pagamento.id_forma_pagamento 0) { scope_checkout.payment_confirmed false; } if (is_check) { window.aplicarCashbackSaldoCliente(); } else { scope_checkout.cart.vl_cashback 0; scope_checkout.cart.vl_credito_loja 0; scope_checkout.$apply(); $(.msg-carteira-cliente).html(); $(.msg-carteira-cliente).removeClass(d-inline-block).addClass(d-none); } } $(document).delegate(#check-utilizar-saldo-carteira, change, function(e) { var is_check $(this).is(:checked); window.checkSaldoClienteCheckout(is_check); }); // Regras do cashback $(document).delegate(.open-modal-info-cashback-checkout, click, async function(e) { e.preventDefault(); $(this).addClass(a-disabled); scope_cliente.cashback scope_checkout.parametros_cashback; scope_cliente.$apply(); $(#modalCashback).modal(show); $(this).removeClass(a-disabled); }); } }); is_checkout_load true;/script>script defer srchttps://maps.googleapis.com/maps/api/js?keyAIzaSyAhwZiAmiZhwm_Ai1rRC8NyDjI8mo3M0lc&librariesgeometry,places&callbackFunction.prototype>/script>script defer srchttps://api.mapbox.com/mapbox-gl-js/v2.1.1/mapbox-gl.js>/script>script defer src../assets/common/lib/turf/turf.min.js>/script>link relpreload asstyle onloadthis.relstylesheet hrefhttps://api.mapbox.com/mapbox-gl-js/v2.1.1/mapbox-gl.css/>script> $(document).ready(function () { var map null; /* Função para exibição das informações no modal do cadastro de endereco */ window.setEnderecoCadastro function(dados){ var form $(#form-edit-address); var ds_cidade ; var ds_uf ; var attr form.attr(in-reset); /* Reset formulario de cadstro para preenchimento das informações consultadas */ if (attr ! N) { document.getElementById(form-edit-address).reset(); } $(.form-address-select).addClass(d-none); $(#form-address-cep-unico).addClass(d-none); form.removeClass(d-none); form.find(.info-endereco-cep).removeClass(d-none); form.find(.group-cep-form).addClass(d-none); form.closest(.edit-address).find(.modal-footer).removeClass(d-none); $.each(dados0, function(index, val) { if(index ds_cidade) { ds_cidade val; } else if(index ds_uf) { ds_uf val; } else if(index ds_bairro) { if (val) { form.find(inputnameinput+index+).val(val); form.find(inputnameinput+index+).attr(readonly, readonly); } else { form.find(inputnameinput+index+).val(); form.find(inputnameinput+index+).removeAttr(readonly); } } else if(index nr_cep) { var valid_cep false; if (val) { if (val.length 8 || val.length 9) { valid_cep true; } } if (valid_cep) { form.find(inputnameinput+index+).val(val); form.find(inputnameinput+index+).attr(readonly, readonly); } else { form.find(inputnameinput+index+).val(); form.find(inputnameinput+index+).removeAttr(readonly); } } else if (index ds_obs) { form.find(textareanameinput+index+).html(val); } else if (index nr_logradouro) { form.find(inputnameinput+index+).attr(readonly, readonly); form.find(inputnameinput+index+).val(val); } else if (index ds_logradouro) { form.find(inputnameinput+index+).val(val); form.find(.+index).val(val).attr(disabled, disabled); } else { form.find(inputnameinput+index+).val(val); } form.find(data-address+index+).removeClass(d-none); if ((val ! ) && (val ! null)) { form.find(data-address+index+).html(val+(index ds_bairro ? br> : )); } else { form.find(data-address+index+).addClass(d-none); } }); form.find(data-addressds_cidade_uf).html(ds_cidade+, +ds_uf); form.find(inputnameinputds_cidade_uf).val(ds_cidade+, +ds_uf); form.removeAttr(in-reset); } /* Função para resetar o estado do modal */ /* Step passo a enviar o cliente no modal, padrão 1 */ window.clearAddressModalCheckout function(step 1) { var passo step; $(.ds_obs).html(); document.getElementById(form-edit-address).reset(); $(#form-edit-addres).find(.msg_cep).html(); /* Seleção do endereço no checkout */ $(.form-address-select).addClass(d-none); $(.form-mode-select).addClass(d-none); $(#form-edit-address).removeAttr(in-reset); $(#form-edit-address).attr(data-id_end, 0); $(#form-edit-address).find(inputtypehidden).val(); $(.btn-add-address).find(.fa-spinner).remove(); $(.btn-add-address).removeClass(box-disabled); /* Validações cep unico reset */ document.getElementById(form-address-cep-unico).reset(); $(#form-address-cep-unico).find(.content-cep-unico).addClass(d-none); $(#form-address-cep-unico).find(.unico_ds_logradouro).closest(.content-cep-unico).removeClass(d-none); $(#form-address-cep-unico).find(.msg).addClass(d-none); $(#form-address-cep-unico).find(.msg).html(); $(#form-address-cep-unico).find(.content-map-endereco).addClass(d-none); $(#form-address-cep-unico).find(.unico_rua).removeAttr(id-autocomplete); $(.loading-place-endereco).addClass(d-none); $(#form-edit-address).addClass(d-none); $(.edit-address).find(.modal-footer).addClass(d-none); $(#form-address-cep-unico).addClass(d-none); $(.btn-return-search-cep).parent(div).removeClass(d-none) $(.edit-address).find(.msg-line-endereco).addClass(d-none); $(.edit-address).find(.msg-line-endereco).html(); $(.edit-address).find(.listOptions).removeClass(dropdownOpen); $(.msg-endereco-select).addClass(d-none); $(.msg-endereco-select).html(); if (step 1){ if (scope_cliente.in_retirada_balcao S) { passo 1; } } /* Etapas do modal */ if (passo 1) { $(.form-address-select).addClass(d-none); $(.form-mode-select).removeClass(d-none); $(#form-address-cep-unico).find(.unico_latitude).val(); $(#form-address-cep-unico).find(.unico_longitude).val(); } else if (passo 2) { $(.form-address-select).removeClass(d-none); $(.form-mode-select).addClass(d-none); } else if (passo 3) { exibeEnderecoManual(); } else if (passo 4) { /* Box de completar o endereço, numero, bairro e cep */ $(.form-address-select).addClass(d-none); $(.form-mode-select).addClass(d-none); $(#form-address-cep-unico).removeClass(d-none); $(#form-address-cep-unico).find(.content-cep-unico).addClass(d-none); $(#form-address-cep-unico).find(.content-complete-address).removeClass(d-none); } } /* Fechamento do modal de endereco reset cadastro */ $(.edit-address).on(hidden.bs.modal, function(e) { clearAddressModalCheckout(); }); /* Botão voltar no mapa */ $(.btn-return-modal-address).click(function(e) { if (scope_cliente.in_coordenadas_mobile) { clearAddressModalCheckout(3); } else { clearAddressModalCheckout(4); } }); /* Botão de novo endereço */ $(document).delegate(.btn-add-address, click, function(e){ e.preventDefault(); if (!$(this).hasClass(box-disabled)) { window.loadingInButtons($(this), add); exibeEnderecoManual(); } }); /* Botão de novo endereço na tela account */ $(document).delegate(.btn-add-address-in-list-account, click, function(e){ e.preventDefault(); window.openModalEnderecos(); $(.btn-exibir-list-enderecos).trigger(click); $(.btn-add-address).trigger(click); $(.btn-return-search-cep).parent(div).addClass(d-none); }); /* Ação de editar endereços na lista do account */ $(document).delegate(.btn-edit-address-in-list-account, click, function(e){ e.preventDefault(); var id $(this).attr(data-id_end); window.openModalEnderecos(); $(.btn-exibir-list-enderecos).trigger(click); $(.btn-edit-endereco-clientedata-id_end+id+).trigger(click); $(.btn-return-search-cep).parent(div).addClass(d-none); }); /* Botão voltar após seleção do cep, para nova consulta */ $(document).delegate(.btn-return-search-cep, click, function(e){ e.preventDefault(); clearAddressModalCheckout(2); }); /* Função para salvar o endereço através do formulário */ window.saveEndereco function() { var form $(#form-edit-address); var rua form.find(.info-endereco-cep).find(inputnameinputds_logradouro).val(); var id form.attr(data-id_end); var valid false; form.find(.msg).html(); form.find(.msg).addClass(d-none); if(rua ! ) { valid true; } else { setMsgEndereco(form.find(.info-endereco-cep).find(inputnameinputds_logradouro), Endereço inválido para realização do pedido.); return false; } /* Validação do apelido do endereço */ var ds_apelido_endereco form.find(inputnameinputds_apelido_endereco).val(); if(!ds_apelido_endereco) { setMsgEndereco(form.find(inputnameinputds_apelido_endereco), Informe um apelido para o endereço.) return false; } /* Validação do CEP do endereço */ var nr_cep form.find(inputnameinputnr_cep).val(); nr_cep nr_cep.replace(-, ); if((!nr_cep) || (nr_cep && nr_cep.length 8)) { setMsgEndereco(form.find(inputnameinputnr_cep), Informe o CEP do seu endereço corretamente.); return false; } /* Validação do Bairro do endereço */ var ds_bairro form.find(inputnameinputds_bairro).val(); if (!ds_bairro) { setMsgEndereco(form.find(inputnameinputds_bairro), Informe o Bairro do seu endereço.); return false; } if (valid) { if (scope_cliente.cliente.id > 0) { /* Disabled no botão de salvar/confirmar no modal-footer */ $(.btn-save-endereco).attr(disabled, disabled); var i form.ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Account\\ProfileController, ajax_function: setEnderecoCliente}); i.sendInfo(id); } else { if (scope_carrinho.endereco.length 0) { var endereco_form getDadosEndereco(); if (endereco_form.ds_logradouro) { scope_carrinho.endereco scope_carrinho.endereco.push(endereco_form); } } /* Setar o endereço na sessão. */ if (scope_carrinho.endereco.length > 0) { var ds_complemento $(#form-edit-address).find(inputnameinputds_complemento).val(); var ds_obs $(#form-edit-address).find(.ds_obs).val(); scope_carrinho.endereco0.ds_apelido_endereco ds_apelido_endereco; scope_carrinho.endereco0.ds_complemento ds_complemento; scope_carrinho.endereco0.ds_obs ds_obs; scope_carrinho.$apply(); /* Definir informações da entrega */ if ($(.line-endereco.endereco- + scope_carrinho.endereco0.id_endereco).length > 0) { $(.line-endereco.endereco- + scope_carrinho.endereco0.id_endereco).addClass(a-disabled); } var end $(#form-address-cep-unico).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Checkout\\CheckoutController, ajax_function: setEnderecoCepUnico}); end.getDados(returnEnderecoSessionCheckout, JSON.stringify(scope_carrinho.endereco)); } else { if ($(.edit-address).hasClass(show)) { $(.edit-address).modal(hide); } } } } } /* Cadastro do endereço para o cliente/empresa*/ $(document).delegate(.btn-save-endereco, click, function(e){ e.preventDefault(); saveEndereco(); }); /* Click em alguma area do modal, remove a classe do dropdown */ $(document).delegate(.edit-address, click, function(e){ e.preventDefault(); $(this).find(.listOptions).removeClass(dropdownOpen); }); /* Edição das informações do endereco através do modal com listagem a partir do objeto de cliente.enderecos */ $(document).delegate(.btn-edit-endereco-cliente, click, function(e){ e.preventDefault(); var id_endereco $(this).data(id_end); $(.form-address-select).addClass(d-none); $(#form-address-cep-unico).addClass(d-none); $(#form-edit-address).removeClass(d-none); /* Ocultar campo cep no momento da edção do endereço */ $(#form-edit-address).find(.group-cep-form).addClass(d-none); /* Filtro para obter dados conforme id selecionado */ var endereco_selecao scope_cliente.cliente.enderecos.filter(a > a.id_endereco id_endereco); $(.edit-address).find(#form-edit-address).attr(data-id_end, id_endereco); setEnderecoCadastro(endereco_selecao); if (!$(.edit-address).hasClass(show)) { $(.edit-address).modal(show); } /* Fechar dropdown do elemento */ var drop $(this).closest(.line-endereco).find(.dropdown-options); if (drop.hasClass(show)) { $(this).closest(.listOptions).removeClass(dropdownOpen) } }); /* Favoritar o endereço na listagem dos endereços no account */ $(document).delegate(.btn-favoritar-endereco, click, function(e){ e.preventDefault(); var id_endereco $(this).data(id_end); var f $(this).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Account\\ProfileController, ajax_function: favoritarEnderecoCliente}); f.alterInfo(id_endereco); }); /* Icone de excluão para apresentar a confirmação de exclusão */ $(document).delegate(.icon-delete-endereco, click, function(e){ e.preventDefault(); $(.line-endereco).find(.endereco-options).removeClass(d-none); $(.line-endereco).find(.endereco-confirm-del).addClass(d-none); var item_exclusao $(this).closest(.line-endereco); item_exclusao.find(.endereco-options).addClass(d-none); item_exclusao.find(.endereco-confirm-del).removeClass(d-none); /* Fechar dropdown do elemento */ var drop $(this).closest(.line-endereco).find(.dropdown-options); if (drop.hasClass(show)) { $(this).closest(.listOptions).removeClass(dropdownOpen) } }); /* Cancelar exclusão do endereço do cadastro do cliente */ $(document).delegate(.btn-cancel-delete-endereco, click, function(e){ e.preventDefault(); var item_exclusao $(this).closest(.line-endereco); item_exclusao.find(.endereco-options).removeClass(d-none); item_exclusao.find(.endereco-confirm-del).addClass(d-none); }); /* Confirmção de exclusão do endereço do cliente */ $(document).delegate(.btn-delete-endereco, click, function(e){ e.preventDefault(); var id_endereco $(this).data(id_end); var d $(this).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Account\\ProfileController, ajax_function: destroyEndereco}); d.alterInfo(id_endereco); }); /* Informações sobre as validações do Endereço */ window.setAddressInfo function(dados_address, in_action cadastro) { var permite_seguir true; $(#form-address-cep-unico).removeClass(d-none); $(.form-address-select).addClass(d-none); $(.info-rua-cep-unico).html(dados_address.ds_rua); $(.content-cep-unico).addClass(d-none); $(#form-address-cep-unico).find(.msg).addClass(d-none) $(#form-address-cep-unico).find(.msg).html(); if (!dados_address.ds_bairro) { $(.box-insert-bairro).removeClass(d-none); $(.info-bairro-cep-unico).html(); permite_seguir false; } else { $(.box-insert-bairro).addClass(d-none); $(.info-bairro-cep-unico).html(dados_address.ds_bairro+br>); } var nr_cep_clear dados_address.nr_cep.replace(-, ); if (!nr_cep_clear || (nr_cep_clear && nr_cep_clear.length 8)) { $(.box-insert-cep).removeClass(d-none); $(.info-cep-unico).html(); permite_seguir false; } else { $(.box-insert-cep).addClass(d-none); $(.info-cep-unico).html(dados_address.nr_cep+br>); } $(.loading-place-endereco).addClass(d-none); if (dados_address.nr_logradouro) { $(.unico_nr_logradouro).val(dados_address.nr_logradouro); } else { permite_seguir false; } // Place id do auto complete para ajudar no resultado do geocode $(.unico_rua).removeAttr(id-autocomplete); if (dados_address.id_endereco_autocomplete) { $(.unico_rua).attr(id-autocomplete, dados_address.id_endereco_autocomplete) } /* Campos para auxiliar na busca do endereço na API do Maps */ $(.unico_rua).val(dados_address.ds_rua); $(.unico_uf).val(dados_address.ds_uf); $(.unico_cidade).val(dados_address.ds_cidade); $(.unico_bairro).val(dados_address.ds_bairro); $(.unico_cep).val(dados_address.nr_cep); if (permite_seguir) { if (in_action cadastro) { $(.btn-verify-endereco-unico).trigger(click); $(.content-map-endereco).removeClass(d-none); $(#map_center_endereco).addClass(invisible); } else { $(.unico_nr_logradouro).closest(.content-cep-unico).removeClass(d-none); } } else { $(.unico_nr_logradouro).closest(.content-cep-unico).removeClass(d-none); } } /* Verificação se Latlng (Localização atual) está dentro da area de entrega (NOVO) */ window.verifyContainsArea function(area_entrega, point_latlng, lat, lng) { if ((area_entrega.ds_coordenadas ! ) && (area_entrega.ds_coordenadas ! null) && (area_entrega.ds_coordenadas ! undefined)) { var coordenadas JSON.parse(area_entrega.ds_coordenadas); var areas_format ; var faixa_found false; if (coordenadas.length > 0) { coordenadas.map(c > { areas_format.push({ lat: c1, lng: c0 }) }); } if (areas_format.length > 0) { var area new google.maps.Polygon({paths: areas_format}); var resultAddress google.maps.geometry.poly.containsLocation(point_latlng, area) ? area_entrega : null; if (resultAddress ! null) { // Coordenadas dentro de uma area de exclusão de entrega if (area_entrega.tp_area R) { return {invalid: true}; } /* Verificação da taxa, pedido minimo e tempo na faixa que cooresponde a área */ var distance_km distance_in_km_endereco(lat, lng); var faixa scope_cliente.faixas_entrega.filter(f > f.nr_faixa distance_km); if (faixa.length) { faixa_found true; resultAddress.vl_taxa_entrega faixa0.vl_taxa_entrega; resultAddress.vl_pedido_minimo faixa0.vl_pedido_minimo; resultAddress.nr_tempo_adicional faixa0.nr_tempo_adicional; resultAddress.nr_distancia distance_in_km_endereco(lat, lng, false); } } /* Caso não achar a faixa correspondente, não atende a localização do cliente */ if (!faixa_found) { resultAddress null; } return resultAddress; } } } /* Obter distancia em KM entre o ponto da loja e o endereço selecionado pelo cliente */ window.distance_in_km_endereco function(lat, lng, ceil true) { var lat_center -27.44903269; var lng_center -48.42723698; var R 6371; var rlat1 lat_center * (Math.PI/180); var rlat2 lat * (Math.PI/180); var difflat rlat2-rlat1; var difflon (lng-lng_center) * (Math.PI/180); var d 2 * R * Math.asin(Math.sqrt(Math.sin(difflat/2)*Math.sin(difflat/2)+Math.cos(rlat1)*Math.cos(rlat2)*Math.sin(difflon/2)*Math.sin(difflon/2))); var distance 0; if (ceil) { distance Math.ceil(d); } else { distance parseFloat(d.toFixed(3)); } if (!distance) { if (ceil) { distance 1; } else { distance 0.001; } } return distance; } /* Formatar a string para ser usada na URL do Maps */ window.clearInfoAddressMaps function(str) { var cleared_str ((str).split( ).join(+)).normalize(NFD).replace(/\u0300-\u036f/g, ); return cleared_str; } /* Iniciar mapa para o cliente confirmar sua posição geográfica */ window.enableMapEndereco async function(lat, lng) { map null; $(#map_center_endereco).html(); var bounds ; var nr_raio_limit 0.750; var get_circle_limit window.getCircleTurf(nr_raio_limit, lng, lat); if (get_circle_limit.bounds.length > 0) { bounds get_circle_limit.bounds0, get_circle_limit.bounds1, get_circle_limit.bounds2, get_circle_limit.bounds3 ; } mapboxgl.accessToken pk.eyJ1IjoiZGVsaXZlcnl0dXJibyIsImEiOiJja2t6d3o4bXMwbDU1MnJwNTg4b3U1dDhkIn0.6cDWlDdSz2dfiZ0lyXJQQw; map await new mapboxgl.Map({ container: map_center_endereco, style: mapbox://styles/mapbox/outdoors-v11, zoom: 16, maxZoom: 16, minZoom: 16, maxBounds: bounds }); await map.setCenter(lng, lat); var pin_html div classmap-marker-pin>/div>div classmap-marker-pulse>/div>; var marker_pin document.createElement(div); marker_pin.className map-marker; marker_pin.innerHTML pin_html; var marker await new mapboxgl.Marker(marker_pin) .setLngLat(lng, lat) .addTo(map); window.loadingInButtons($(.btn-verify-endereco-unico), remove); window.loadingInButtons($(.btn-usar-localizacao-atual), remove); map.on(load, function () { $(.content-cep-unico).addClass(d-none) $(.content-map-endereco).removeClass(d-none) $(#map_center_endereco).removeClass(invisible); $(.form-address-select).addClass(d-none); $(#form-address-cep-unico).removeClass(d-none); map.resize(); var center map.getCenter(); $(.edit-address).find(#form-address-cep-unico).find(.unico_latitude).val((center.lat).toFixed(8)); $(.edit-address).find(#form-address-cep-unico).find(.unico_longitude).val((center.lng).toFixed(8)); function mapMove() { var center map.getCenter(); marker.setLngLat(center); $(.edit-address).find(#form-address-cep-unico).find(.unico_latitude).val((center.lat).toFixed(8)); $(.edit-address).find(#form-address-cep-unico).find(.unico_longitude).val((center.lng).toFixed(8)); $(#map_center_endereco).find(.map-marker-pin).removeClass(pinDown) $(#map_center_endereco).find(.map-marker-pin).addClass(pinUp); } function mapMoveend() { $(#map_center_endereco).find(.map-marker-pin).removeClass(pinUp) $(#map_center_endereco).find(.map-marker-pin).addClass(pinDown) } if (scope_cliente.is_mobile) { map.on(touchmove, function (e) { mapMove() }); map.on(touchend, function(e) { mapMoveend() }); } else { map.on(move, function (e) { mapMove() }); map.on(moveend, function(e) { mapMoveend() }); } }); } /* Transformar a primeira letra do bairro em maiuscula */ $(document).delegate(.info-bairro-cep-unico-input, keypress, function(e) { var text $(this).val(); if (text.length 1) { $(this).val(text.toUpperCase()); } }); /* Obter dados do Endereço Unico. */ window.getDadosEndereco function() { var uf $(.edit-address).find(#form-address-cep-unico).find(.unico_uf).val(); var cidade $(.edit-address).find(#form-address-cep-unico).find(.unico_cidade).val(); var bairro $(.edit-address).find(#form-address-cep-unico).find(.unico_bairro).val(); var rua $(.edit-address).find(#form-address-cep-unico).find(.unico_rua).val(); var numero $(.edit-address).find(#form-address-cep-unico).find(.unico_nr_logradouro).val(); var cep $(.edit-address).find(#form-address-cep-unico).find(.unico_cep).val(); return { ds_uf : uf, ds_cidade : cidade, ds_bairro : bairro, ds_logradouro : rua, nr_logradouro : numero, nr_cep : cep } } window.verifyLatLngContains function(lat, lng) { var contain_area null; var point new google.maps.LatLng(lat, lng); var areas scope_cliente.array_areas_coordenadas; $.each(areas, function(index, value) { if (contain_area null) { try { contain_area verifyContainsArea(value, point, lat, lng); } catch (error) { console.log(Idx área com erro, index); // Nada } } }); if (contain_area ! null) { if (contain_area.invalid) { return null; } } return contain_area; } // Validar areas de exclusão (recortadas) window.validLatLngContainsExclusao function(lat, lng) { var contain_area null; var point new google.maps.LatLng(lat, lng); var areas scope_cliente.array_areas_coordenadas.filter(a > a.tp_area R); if (areas.length > 0) { $.each(areas, function(index, value) { if (contain_area null) { try { contain_area verifyContainsArea(value, point, lat, lng); } catch (error) { console.log(Idx área com erro, index); // Nada } } }); } if (contain_area ! null) { if (contain_area.invalid) { return false; } } return true; } /* Retorno sobre somente atualização dos endereços */ window.returnUpdateEnderecos function(data) { if (data.msg ) { if (data.enderecos_cliente.length > 0) { scope_cliente.cliente.enderecos data.enderecos_cliente; scope_cliente.$apply(); scope_cliente.ready true; } } else { window.alertMessage(danger,Ocorreu algo de errado!, data.msg); } } /* Latitude e Longitude do Endereço do cliente */ window.validateLatLngAreas async function(lat, lng) { var dados getDadosEndereco(); /* Verificação se contains */ var contain_area await verifyLatLngContains(lat, lng); var id_endereco $(#form-edit-address).attr(data-id_end); if (contain_area ! null) { var info contain_area.ds_logradouro dados.ds_logradouro; contain_area.nr_logradouro dados.nr_logradouro; contain_area.ds_cidade dados.ds_cidade; contain_area.ds_uf dados.ds_uf; contain_area.ds_latitude lat; contain_area.ds_longitude lng; contain_area.ds_bairro dados.ds_bairro; contain_area.nr_cep dados.nr_cep; contain_area.in_cadastro N; info.push(contain_area); /* Após confirmação do endereço, atualiza o vinculo do endereço com a empresa*/ if (id_endereco > 0) { var dados {}; dados.ds_latitude lat; dados.ds_longitude lng; dados.id_regiao_entrega_area contain_area.id_regiao_entrega_area dados.nr_distancia contain_area.nr_distancia var arr_dados ; arr_dados.push(dados); var info_update ; info_update.push({ id_endereco: parseInt(id_endereco), dados: arr_dados}); var end $(#form-address-cep-unico).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Account\\ProfileController, ajax_function: setAtualizacaoEnderecoCliente}); await end.getDados(returnUpdateEnderecos, JSON.stringify(info_update)); } /* Setar o endereço na sessão. */ var end $(#form-address-cep-unico).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Checkout\\CheckoutController, ajax_function: setEnderecoCepUnico}); await end.getDados(returnEnderecoSessao, JSON.stringify(info)); } else { $(.line-endereco).find(inputnameendereco:checked).prop(checked, false); clearAddressModalCheckout(2); if (id_endereco > 0) { $(#endereco-+id_endereco).closest(li).find(.msg-line-endereco).removeClass(d-none); $(#endereco-+id_endereco).closest(li).find(.msg-line-endereco).html(Infelizmente não atendemos o seu endereço :(); } else { $(.edit-address).find(.msg-endereco-select).removeClass(d-none); $(.edit-address).find(.msg-endereco-select).html(Infelizmente não atendemos o seu endereço :(); } window.loadingInButtons($(.btn-confirm-verify-endereco), remove); } window.loadingInButtons($(.btn-verify-endereco-unico), remove); } /* Confirmar posição do endereço no mapa e atualizar as informações do endereço na requisição. */ window.confirmPosicaoEndereco function(id_endereco, lat, lng, update_dados true) { if (id_endereco > 0) { var endereco scope_cliente.cliente.enderecos.filter(e > e.id_endereco id_endereco); if (endereco.length > 0) { if (update_dados) { var dados getDadosEndereco(); } else { var dados {}; } dados.ds_latitude lat; dados.ds_longitude lng; var arr_dados ; arr_dados.push(dados); var info ; info.push({ id_endereco: parseInt(id_endereco), dados: arr_dados}); var end $(#form-address-cep-unico).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Account\\ProfileController, ajax_function: setAtualizacaoEnderecoCliente}); end.getDados(returnSetLatLngEndereco, JSON.stringify(info)); } } } /* Retorno sobre o update no endereço, onde é setada a latitude e longitude */ window.returnSetLatLngEndereco function(data) { if (data.msg ) { if (data.enderecos_cliente.length > 0) { scope_cliente.cliente.enderecos data.enderecos_cliente; scope_cliente.$apply(); scope_cliente.ready true; var endereco scope_cliente.cliente.enderecos.filter(e > e.id_endereco data.id_endereco); if (endereco.length > 0) { $(.edit-address).find(#form-address-cep-unico).find(.unico_bairro).val(endereco0.ds_bairro); $(.edit-address).find(#form-address-cep-unico).find(.unico_rua).val(endereco0.ds_logradouro); $(.edit-address).find(#form-address-cep-unico).find(.unico_nr_logradouro).val(endereco0.nr_logradouro); $(.edit-address).find(#form-address-cep-unico).find(.unico_cidade).val(endereco0.ds_cidade); $(.edit-address).find(#form-address-cep-unico).find(.unico_uf).val(endereco0.ds_uf); $(.edit-address).find(#form-address-cep-unico).find(.unico_cep).val(endereco0.nr_cep); } validateLatLngAreas(data.ds_latitude, data.ds_longitude); } } else { window.alertMessage(danger,Ocorreu algo de errado!, data.msg); } } /* Confirmação da verificação das coordenadas do endereço */ $(.btn-confirm-verify-endereco).click(function(event){ var lat $(.edit-address).find(#form-address-cep-unico).find(.unico_latitude).val(); var lng $(.edit-address).find(#form-address-cep-unico).find(.unico_longitude).val(); if (lat ! && lng ! ) { window.loadingInButtons($(this), add); if (scope_cliente.in_coordenadas_mobile) { getEnderecoByCoords(lat, lng); } else { var id_endereco $(#form-edit-address).attr(data-id_end); if (id_endereco > 0) { confirmPosicaoEndereco(id_endereco, lat, lng) } else { validateLatLngAreas(lat, lng); } } } }); /* Formatar o numero e retornar o primeiro inteiro encontrado */ window.clearNrLogradouro function(numero) { if (numero) { var nr numero.replace(/^0-9+/g,-); var explode_nr nr.split(-); if (explode_nr.length > 0) { if ($.isNumeric(explode_nr0)) { return parseInt(explode_nr0); } else { if (explode_nr.length > 1) { if ($.isNumeric(explode_nr1)) { return parseInt(explode_nr1); } } } } } return 0; } /* Exibir mensagem de erro no modal do endereço */ function setMsgEndereco(input, msg) { var form input.closest(form); if (msg) { form.find(.msg).removeClass(d-none); form.find(.msg).html(msg); input.focus(); } else { form.find(.msg).addClass(d-none); form.find(.msg).html(); } } /* Verificar resultado das validações do endereço */ $(.btn-verify-endereco-unico).click(async function(event) { var dados getDadosEndereco(); $(.edit-address).find(#form-address-cep-unico).find(.msg).addClass(d-none); $(.edit-address).find(#form-address-cep-unico).find(.msg).html(); /* Validação do CEP */ var nr_cep_clear dados.nr_cep.replace(-, ); if (!nr_cep_clear || (nr_cep_clear && nr_cep_clear.length 8)) { var input_cep $(.edit-address).find(#form-address-cep-unico).find(.info-cep-unico-input).val(); if ((input_cep) && (input_cep.length > 8)) { $(.edit-address).find(#form-address-cep-unico).find(.unico_cep).val(input_cep) dados.nr_cep input_cep; } else { setMsgEndereco($(.edit-address).find(#form-address-cep-unico).find(.info-cep-unico-input), Informe o CEP corretamente para continuar.); return; } } /* Validação do Bairro */ if (!dados.ds_bairro) { var input_bairro $(.edit-address).find(#form-address-cep-unico).find(.info-bairro-cep-unico-input).val(); if (input_bairro.trim()) { input_bairro input_bairro.trim(); $(.edit-address).find(#form-address-cep-unico).find(.unico_bairro).val(input_bairro) dados.ds_bairro input_bairro; } else { setMsgEndereco($(.edit-address).find(#form-address-cep-unico).find(.info-bairro-cep-unico-input), Informe o Bairro para continuar.); return; } } /* Validação do Número */ if (!(dados.nr_logradouro).trim()) { setMsgEndereco($(.edit-address).find(#form-address-cep-unico).find(.unico_nr_logradouro), Informe o Número para continuar.); return; } else { dados.nr_logradouro dados.nr_logradouro.trim(); } /* Caso for mobile, valida pelas coordenadas se o endereço é atendido ou não */ if (scope_cliente.in_coordenadas_mobile) { var lat $(.edit-address).find(#form-address-cep-unico).find(.unico_latitude).val(); var lng $(.edit-address).find(#form-address-cep-unico).find(.unico_longitude).val(); if (lat ! && lng ! ) { window.loadingInButtons($(this), add); validateLatLngAreas(lat, lng); } } else { window.loadingInButtons($(this), add); if ((dados.ds_cidade ! ) && (dados.ds_logradouro ! ) && (dados.nr_logradouro ! ) && (dados.ds_bairro ! )) { /* Remover Custom Header do Ajax para não possuir erro de privacidade */ var customHeaders {}; $.each($.ajaxSettings.headers, function(index, value) { customHeadersindex value; }); if ($.ajaxSettings.headers ! undefined) { delete $.ajaxSettings.headersRefererCustom; } /* Limpar numero, caso for 0, não usa ele para a requisição.*/ var format_nr_logradouro ; var clear_nr_logradouro clearNrLogradouro(dados.nr_logradouro); if (clear_nr_logradouro > 0) { //format_nr_logradouro clear_nr_logradouro+,; format_nr_logradouro , +clear_nr_logradouro; } var in_erro_request_maps true; var query_address ; // Se tiver o id do endereço do autocomplete, é porque digitou e achou rua com o numero direto no autocomplete var id_endereco_autocomplete $(.edit-address).find(#form-address-cep-unico).find(.unico_rua).attr(id-autocomplete); if (id_endereco_autocomplete) { query_address ?place_id + id_endereco_autocomplete; } else { // Será descontinuado em breve query_address (dados.ds_logradouro).split( ).join(+)+,+format_nr_logradouro+dados.ds_bairro+,+dados.ds_cidade+,+dados.ds_uf; var str_query_address dados.ds_logradouro + - + dados.ds_bairro + , + dados.ds_cidade + - + dados.ds_uf + , Brasil + format_nr_logradouro; query_address ?address+(str_query_address).split( ).join(+); } for (var tentativas 0; tentativas 2; tentativas++) { var in_fail false; try { await $.ajax({ url: https://maps.googleapis.com/maps/api/geocode/json+query_address+&keyAIzaSyAhwZiAmiZhwm_Ai1rRC8NyDjI8mo3M0lc, type: GET, dataType: json }) .done(function(data) { var not_found false; in_erro_request_maps false; if (data.status OK) { if (data.results.length > 0) { var lat data.results0.geometry.location.lat; var lng data.results0.geometry.location.lng; enableMapEndereco(lat, lng); } else { not_found true; } } else { not_found true; } if (not_found) { $(.edit-address).find(#form-address-cep-unico).find(.msg).removeClass(d-none); $(.edit-address).find(#form-address-cep-unico).find(.msg).html(Por favor, confirme o seu endereço acima.); exibeEnderecoManual(); } }); } catch (error) { console.log(error); in_fail true; in_erro_request_maps true; } if (!in_fail) { break; } else { if (tentativas 0) { await window.sleep(2000); } } } // Em caso de erro na requisição. if (in_erro_request_maps) { $(.edit-address).find(#form-address-cep-unico).find(.msg).removeClass(d-none); $(.edit-address).find(#form-address-cep-unico).find(.msg).html(Ops, não conseguimos validar o seu endereço.br>Por favor, tente novamente.); } window.loadingInButtons($(.btn-verify-endereco-unico), remove) $.ajaxSettings.headers customHeaders; } else { window.loadingInButtons($(.btn-verify-endereco-unico), remove); window.alertMessage(danger,Ocorreu algo de errado!, Informações inválidas para verificação do Endereço); } } }); /* Função de retorno vazio sobre setar endereço na sessão pelo checkout */ window.returnEnderecoSessionCheckout function(data) { if ($(.edit-address).hasClass(show)) { $(.edit-address).modal(hide); } if ($(.line-endereco.a-disabled).length > 0) { $(.line-endereco.a-disabled).removeClass(a-disabled); } } /* Retorno sobre setar informações do endereco na sessão */ window.returnEnderecoSessao function(data) { if (datainfo ! ) { $(.btn-confirm-verify-endereco).find(.fa-spinner).remove(); $(.btn-confirm-verify-endereco).removeAttr(disabled); if (($(#checkout).length > 0) || ($(#v-enderecos).length > 0)) { setEnderecoCadastro(JSON.parse(datainfo)); } else { if (scope_cliente.cliente.id 0) { setEnderecoCEP(JSON.parse(datainfo), true); } setEnderecoCadastro(JSON.parse(datainfo)); } } } /* Botão de seleção do endereço no checkout */ $(document).delegate(.btn-select-endereco-checkout, click, function (e) { e.preventDefault(); openModalEnderecos(); }); /* Seleção do endereço na Home */ $(document).delegate(.check-confirm-endereco, click, function(){ if ($(#profile).length > 0) { return; } var id_endereco $(this).attr(data-id); if (parseInt(id_endereco) > 0) { if ((scope_cliente.cliente.enderecos ! undefined) && (scope_cliente.cliente.enderecos.length > 0)) { var endereco scope_cliente.cliente.enderecos.filter(a > a.id_endereco id_endereco); if (endereco.length > 0) { var info_pending false; if (!endereco0.nr_cep) { info_pending true; } else if (!endereco0.ds_bairro) { info_pending true; } /* Se possuir informação pendente, manda para edição */ if (info_pending) { var line $(this).closest(.line-endereco); line.find(.btn-edit-endereco-cliente).trigger(click); } else { window.setEnderecoEntregaCarrinho(parseInt(id_endereco), endereco0.vl_taxa_entrega, endereco0.vl_pedido_minimo, endereco0.nr_tempo_adicional); scope_carrinho.clearHorarioAgendamentoCarrinho(true); scope_carrinho.$apply(); } } } } }); /* Ao pressionar Enter no campo de seleção de rua, pega o primeiro endereço. */ /* Migrado para a function autocompleteMapsSelectFirst() */ /*$(.unico_ds_logradouro).on(keydown, function (e) { if (e.which 13) { var firstResult ; if ($(.pac-container .pac-item-selected).length 0) { firstResult $(.pac-container .pac-item:first).text(); $(.pac-container .pac-item:first).trigger(click); } console.log(firstResult) if (firstResult ! ) { var geocoder new google.maps.Geocoder(); geocoder.geocode({address:firstResult }, function(results, status) { if (status google.maps.GeocoderStatus.OK) { if (results0.address_components ! undefined) { if (results0.address_components.length > 0) { var ds_rua ; var ds_bairro ; var ds_uf ; var ds_cidade ; var nr_cep ; var nr_logradouro ; $.each(results0.address_components, function(index, value) { if (value.types.includes(route)) { ds_rua value.long_name; } else if (value.types.includes(sublocality_level_1)) { ds_bairro value.long_name; } else if (value.types.includes(administrative_area_level_1)) { ds_uf value.short_name; } else if (value.types.includes(administrative_area_level_2)) { ds_cidade value.long_name; } else if (value.types.includes(postal_code)) { nr_cep value.long_name; } else if (value.types.includes(street_number)) { nr_logradouro value.long_name; } }); if (ds_rua ! ) { setAddressInfo({ds_rua, ds_bairro, ds_uf, ds_cidade, nr_logradouro, nr_cep}); } } } } }); } } else { $(.pac-container).css(visibility,visible); } });*/ /* Retorno sobre a Retirada na sessão */ window.returnRetiradaCheckout function(data) { if (scope_carrinho.endereco_retirada.length > 0) { scope_carrinho.endereco_checkout scope_carrinho.endereco_retirada; scope_carrinho.vl_temp_entrega_pedido parseInt(scope_carrinho.vl_temp_retirada_padrao); scope_carrinho.cart.tp_entrega B; scope_carrinho.cart.id_endereco_entrega 0; scope_carrinho.cart.id_regiao_entrega_area 0; scope_carrinho.cart.vl_entrega 0; scope_carrinho.endereco_confirmed true; scope_carrinho.vl_pedido_min 0; $(.msg-cupom-checkout).html(); $(.msg-cupom).html(); $(.line-endereco).find(inputnameendereco:checked).prop(checked, false); $(.edit-address).find(.msg-endereco-select).html(); $(.edit-address).find(.msg-endereco-select).addClass(d-none); $(.edit-address).find(.msg-line-endereco).addClass(d-none); $(.edit-address).find(.msg-line-endereco).html(); /* Validação do Cupom de desconto caso seja alterado o carrinho no checkout */ if ($(#checkout).length > 0) { if ((scope_carrinho.cart.cupom.id_cupom > 0) && (scope_carrinho.cart.cupom.ds_cupom ! )) { $(.btn-validar-cupom).trigger(click); } else { if (typeof checkSaldoClienteCheckout function) { window.checkSaldoClienteCheckout($(#check-utilizar-saldo-carteira).is(:checked)); } if (typeof checkFormaPagamentoCarrinhoByTotal function) { window.checkFormaPagamentoCarrinhoByTotal(); } } } } else { scope_carrinho.endereco_checkout ; scope_carrinho.vl_temp_entrega_pedido 0; scope_carrinho.endereco_confirmed false; scope_carrinho.cart.id_endereco_entrega 0; scope_carrinho.cart.id_regiao_entrega_area 0; scope_carrinho.cart.vl_entrega 0; } /* Ao trocar para retirada, valida o agendamento do carrinho */ scope_carrinho.clearHorarioAgendamentoCarrinho(true); /* Validação sobre agendamento de retirada */ if (!scope_cliente.in_agendamento_retirada) { scope_carrinho.cart.in_entrega_imediata true; } scope_carrinho.horario_confirmed true; scope_carrinho.$apply(); scope_carrinho.ready true; if (scope_carrinho.ready) { $(.edit-address).modal(hide); } } /* Setar retirada na sessão do checkout */ window.setRetiradaCheckout function() { var retirada $(#checkout).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Checkout\\CheckoutController, ajax_function: setRetiradaBalcao}); retirada.getDados(returnRetiradaCheckout); } /* Setar retirada no Checkout */ $(document).delegate(.btn-set-retirada-checkout, click, function(e) { e.preventDefault(); if ($(#checkout).length > 0) { window.setRetiradaCheckout(); } else { /* Caso for na Home do site */ window.setRetiradaHome(); } }); /* Exibir lista dos endereços no modal caso seja clicado no botão Entregar em meu endereço */ $(document).delegate(.btn-exibir-list-enderecos, click, function(e){ e.preventDefault(); if ((scope_cliente.cliente.enderecos ! undefined) && (scope_cliente.cliente.enderecos.length > 0)) { $(.form-address-select).removeClass(d-none); } else { exibeEnderecoManual(); } $(.form-mode-select).addClass(d-none); }); /* Seleção do primeiro elemento do Autocomplete das Ruas */ function autocompleteMapsSelectFirst(input) { var _addEventListener (input.addEventListener) ? input.addEventListener : input.attachEvent; function addEventListenerWrapper(type, listener) { if (type keydown) { var orig_listener listener; listener function(event) { var suggestion_selected $(.pac-item-selected).length > 0; if ((event.which 13 || event.which 9) && !suggestion_selected) { if ($(.pac-item).length > 0) { var simulated_downarrow $.Event(keydown, { keyCode: 40, which: 40 }) orig_listener.apply(input, simulated_downarrow); } else { setTimeout(() > { var simulated_downarrow $.Event(keydown, { keyCode: 40, which: 40 }) orig_listener.apply(input, simulated_downarrow); if ($(.pac-item-selected).length > 0) { var simulated_enter $.Event(keydown, { keyCode: 13, which: 13 }) orig_listener.apply(input, simulated_enter); } else { $(#unico_ds_logradouro).val(); $(#unico_ds_logradouro).focus(); $(.loading-place-endereco).addClass(d-none); } }, 500); } } orig_listener.apply(input, event); }; } _addEventListener.apply(input, type, listener); } if (input.addEventListener) { input.addEventListener addEventListenerWrapper; } else if (input.attachEvent) { input.attachEvent addEventListenerWrapper; } } /* Montar auto complete conforme opções e input passado. */ var optiosnAutocomplete {}; var autocompleteMaps null; window.makePlacesAutocompleteMaps function(options) { var input document.getElementById(unico_ds_logradouro); if (!(autocompleteMaps) || (JSON.stringify(optiosnAutocomplete) ! JSON.stringify(options))) { optiosnAutocomplete options; autocompleteMaps new google.maps.places.Autocomplete(input, optiosnAutocomplete); // Bind the maps bounds (viewport) property to the autocomplete object, // so that the autocomplete requests use the current map bounds for the // bounds option in the request. //autocomplete.bindTo(bounds, map); // Opções de informações retornados pelo autocomplete autocompleteMaps.setFields( address_components, geometry, name, place_id); /* Ação ao selecionar a Rua no Autocomplete */ autocompleteMaps.addListener(place_changed, function() { /* Loading seleção Rua */ $(.loading-place-endereco).removeClass(d-none); var place autocompleteMaps.getPlace(); if (place.address_components ! undefined) { if (place.address_components.length > 0) { var ds_rua ; var ds_bairro ; var ds_uf ; var ds_cidade ; var nr_cep ; var nr_logradouro ; $.each(place.address_components, function(index, value) { if (value.types.includes(route)) { ds_rua value.long_name; } else if (value.types.includes(sublocality_level_1)) { ds_bairro value.long_name; } else if (value.types.includes(administrative_area_level_1)) { ds_uf value.short_name; } else if (value.types.includes(administrative_area_level_2)) { ds_cidade value.long_name; } else if (value.types.includes(postal_code)) { nr_cep value.long_name; } else if (value.types.includes(street_number)) { nr_logradouro value.long_name; } }); if (!ds_cidade) { $.each(place.address_components, function(index, value) { if (value.types.includes(administrative_area_level_4)) { ds_cidade value.long_name; } }); } if (ds_rua ! ) { var id_endereco_autocomplete ; if (nr_logradouro) { id_endereco_autocomplete place.place_id } setAddressInfo({ds_rua, ds_bairro, ds_uf, ds_cidade, nr_logradouro, nr_cep, id_endereco_autocomplete}); } } } }); autocompleteMapsSelectFirst(input); } } /* Autocomplete das Ruas (API Google Maps) */ window.makeAutoComplete function() { if (autocompleteMaps) { return; } var options { types: address, componentRestrictions: {country: br} }; var ds_latitude -27.44903269; var ds_longitude -48.42723698; if (ds_latitude ! && ds_longitude ! ) { var get_circle window.getCircleTurf((scope_cliente.faixas_entrega.length + 1), ds_longitude, ds_latitude); if (get_circle.bounds.length > 0) { var southWest new google.maps.LatLng(get_circle.bounds1, get_circle.bounds0); var northEast new google.maps.LatLng(get_circle.bounds3, get_circle.bounds2); var boundbox new google.maps.LatLngBounds(southWest,northEast); /* Restringir os endereços as coordenadas */ options.strictBounds true; options.bounds boundbox; } makePlacesAutocompleteMaps(options); } else { var ds_cidade_loja Florianópolis; var ds_uf_loja SC; /* Remover Custom Header do Ajax para não possuir erro de privacidade */ var customHeaders {}; $.each($.ajaxSettings.headers, function(index, value) { customHeadersindex value; }); delete $.ajaxSettings.headersRefererCustom; $.ajax({ url: https://maps.googleapis.com/maps/api/geocode/json?address+ds_cidade_loja+,+ds_uf_loja+&keyAIzaSyAhwZiAmiZhwm_Ai1rRC8NyDjI8mo3M0lc, type: GET, dataType: json, }) .done(function(data) { if (data.status OK) { var coordenadas ; var southWest new google.maps.LatLng(data.results0.geometry.bounds.southwest.lat, data.results0.geometry.bounds.southwest.lng); var northEast new google.maps.LatLng(data.results0.geometry.bounds.northeast.lat, data.results0.geometry.bounds.northeast.lng); var boundbox new google.maps.LatLngBounds(southWest,northEast); /* Restringir os endereços as coordenadas */ options.strictBounds true; options.bounds boundbox; } makePlacesAutocompleteMaps(options); }) .fail(function() { makePlacesAutocompleteMaps(options); }) .always(function() { }); } } /* ------------------------------------------------------ */ /* Retorno apenas para alimentar informações das Áreas de Entrega */ window.returnAreasEntrega function(data) { if (data.msg ! ) { window.alertMessage(danger,Ocorreu algo de errado!, data.msg) } else { if (data.areas.length > 0) { if (data.faixas.length > 0) { scope_cliente.faixas_entrega data.faixas; } scope_cliente.array_areas_coordenadas data.areas; scope_cliente.$apply(); scope_cliente.ready true; } } } /* Setar modal para estado do endereço manual */ function exibeEnderecoManual() { /* Refazer o autocomplete das ruas para setar as coordenadas do endereco */ window.makeAutoComplete(); scope_cliente.in_coordenadas_mobile false; scope_cliente.$apply(); $(.form-address-select).addClass(d-none); $(#form-address-cep-unico).removeClass(d-none); $(#form-address-cep-unico).find(.info-endereco-mobile).addClass(d-none); $(#form-address-cep-unico).find(.content-cep-unico).addClass(d-none); $(#form-address-cep-unico).find(.unico_ds_logradouro).closest(.content-cep-unico).removeClass(d-none); window.loadingInButtons($(.btn-usar-localizacao-atual), remove); window.loadingInButtons($(.btn-add-address), remove); } function getEnderecoByCoords(latitude, longitude) { /* Remover Custom Header do Ajax para não possuir erro de privacidade */ var customHeaders {}; $.each($.ajaxSettings.headers, function(index, value) { customHeadersindex value; }); delete $.ajaxSettings.headersRefererCustom; $.ajax({ url: https://maps.googleapis.com/maps/api/geocode/json?address+latitude+,+longitude+&keyAIzaSyAhwZiAmiZhwm_Ai1rRC8NyDjI8mo3M0lc, type: GET, dataType: json, }) .done(function(data) { var erro false; if (data.status OK) { var result data.results0; if (result ! undefined) { if (result.address_components.length > 0) { var ds_rua ; var ds_bairro ; var ds_uf ; var ds_cidade ; var nr_cep ; var nr_logradouro ; $.each(result.address_components, function(index, value) { if (value.types.includes(route)) { ds_rua value.long_name; } else if (value.types.includes(sublocality_level_1)) { ds_bairro value.long_name; } else if (value.types.includes(administrative_area_level_1)) { ds_uf value.short_name; } else if (value.types.includes(administrative_area_level_2)) { ds_cidade value.long_name; } else if (value.types.includes(postal_code)) { nr_cep value.long_name; } else if (value.types.includes(street_number)) { // Quando for mobile, sempre perguntar o numero. //nr_logradouro value.long_name; } }); if (!ds_cidade) { $.each(result.address_components, function(index, value) { if (value.types.includes(administrative_area_level_4)) { ds_cidade value.long_name; } }); } if (ds_rua ! ) { $(.content-map-endereco).addClass(d-none) setAddressInfo({ds_rua, ds_bairro, ds_uf, ds_cidade, nr_logradouro, nr_cep}); } else { erro true; } } } } else { erro true; } if (erro) { exibeEnderecoManual(); } window.loadingInButtons($(.btn-confirm-verify-endereco), remove); }) .fail(function() { }) .always(function() { }); } /* Setar coordenadas do cliente no mobile */ function setCoordinatesMobile(position) { if (position.coords.accuracy > 100) { alert(Sua localização está imprecisa. No iPhone, ative Localização precisa nas permissões de localização do Safari.); errCoordinatesMobile(Erro na localização); } else { var latitude position.coords.latitude; var longitude position.coords.longitude; scope_cliente.in_coordenadas_mobile true; scope_cliente.$apply(); $(.msg-localizacao-atual).html(); $(.msg-localizacao-atual).addClass(d-none); enableMapEndereco(latitude, longitude); } } /* Retorno de erro sobre permissão da localização */ function errCoordinatesMobile(error) { window.loadingInButtons($(.btn-usar-localizacao-atual), remove); var msg_error Não conseguimos obter a sua localização atual.; if (error.code error.PERMISSION_DENIED) { msg_error Você não permitiu o uso da localização.; } else if (error.code error.POSITION_UNAVAILABLE) { msg_error Não conseguimos obter a sua posição atual.; } else if (error.code error.TIMEOUT) { msg_error O tempo permitido para adquirir a localização foi atingido.; } if (msg_error) { $(.msg-localizacao-atual).html(msg_error); $(.msg-localizacao-atual).removeClass(d-none); } } /* Buscar áreas de entrega da empresa */ window.initEnderecoAreas async function() { var areas $(#carrinho-home).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Checkout\\CheckoutController, ajax_function: getAreasEntrega}); await areas.getDados(returnAreasEntrega); } /* Abertura do modal de endereços */ window.openModalEnderecos function(in_modal false) { scope_cliente.is_mobile isMobile(); clearAddressModalCheckout(); $(.edit-address).modal(show); } /* Botão para usar a localização atual do dispositivo */ $(document).delegate(.btn-usar-localizacao-atual, click, function(){ window.loadingInButtons($(this), add); if (scope_cliente.is_mobile) { if (navigator.geolocation) { $(.msg-localizacao-atual).html(); $(.msg-localizacao-atual).addClass(d-none); navigator.geolocation.getCurrentPosition( setCoordinatesMobile, errCoordinatesMobile, { enableHighAccuracy: true , maximumAge: 0 , timeout: 10000 } ); } else { exibeEnderecoManual(); } } else { exibeEnderecoManual(); } }); /* Botão na Home para seleção do endereço de entrega. */ $(document).delegate(.nao-possui-endereco, click, function() { openModalEnderecos(); }); /* Botão de edição do Número do Endereço no modal */ $(.btn-edit-nr-logradouro).click(function(e) { e.preventDefault(); var cidade_uf $(#form-edit-address).find(inputnameinputds_cidade_uf).val(); var arr_cidade_uf cidade_uf.split(, ); var bairro $(#form-edit-address).find(inputnameinputds_bairro).val(); var rua $(#form-edit-address).find(inputnameinputds_logradouro).val(); var numero $(#form-edit-address).find(inputnameinputnr_logradouro).val(); var cep $(#form-edit-address).find(inputnameinputnr_cep).val(); var address_info { ds_rua: rua, ds_bairro: bairro, ds_uf: arr_cidade_uf1, ds_cidade: arr_cidade_uf0, nr_logradouro: numero, nr_cep: cep } setAddressInfo(address_info, edicao); $(.box-return-to-autocomplete).addClass(d-none); $(.content-map-endereco).addClass(d-none); $(#form-edit-address).attr(in-reset, N); $(.edit-address).find(.modal-footer).addClass(d-none); $(#form-edit-address).addClass(d-none); $(.form-address-select).addClass(d-none); $(#form-address-cep-unico).removeClass(d-none); }); /* Link para busca manual do endereço (Mobile) */ $(.box-return-to-autocomplete).click(function(e) { e.preventDefault(); clearAddressModalCheckout(2); exibeEnderecoManual(); }); });/script>style> .pac-container { z-index: 1051 !important; border-radius: 0px 0px 10px 10px } .pac-container:after { margin-right: 15px; height: 14px; background-size: 90px 10px !important;} .pac-container .pac-item { padding-left: 10px !important; font-size: 16px; line-height: 40px; } .pac-container .pac-item-query { font-size: 16px; } .pac-container .pac-icon { display: none !important; }/style> script> $(document).ready(function () { /* Biblioteca Swiper para os Banners */ var mySwiper new Swiper(.swiper-container, { // Optional parameters direction: horizontal, spaceBetween: 16, cssMode: true, watchOverflow: true, roundLengths: true, // Forçar o scroll do mouse a apenas rodar o slider quando rolar no horizontal mousewheel: { forceToAxis: true, }, // Tempo para iniciar o autoplay e tempo entre slides autoplay: { delay: 4000, }, // Configurações na paginação abaixo do slide pagination: { el: .swiper-pagination, type: bullets, clickable: true, }, // Configurações das setas de navegação navigation: { nextEl: .swiper-button-next, prevEl: .swiper-button-prev, }, // Classe para ocultar as setas de navegação quando estiverem no estado disabled disabledClass: disabled_swiper_button, }); /* Identificar o produto no site. */ $(.banner-home).click(async function(e){ e.preventDefault(); var id_produto parseInt($(this).attr(data-produto)); if (id_produto > 0) { var offset $(.banners-container).offset().top; await window.validHashProduto(btoa(id_produto)); if($(window).width() 992) { setTimeout(() > { if ($(.modal.show).length > 0) { $(.modal.show).attr(from_banner, offset); } }, 500) } } else { var id_grupo parseInt($(this).attr(data-grupo)); if (id_grupo > 0) { if ($(.link-grupo-homedata-grupo+id_grupo+).length > 0) { $(.link-grupo-homedata-grupo+id_grupo+).trigger(click); } } } }) // Pausar slide no hover $(.swiper-container).each(function(elem, target){ var swp target.swiper; $(this).hover(function() { swp.autoplay.stop(); }, function() { swp.autoplay.start(); }); }); // Ao carregar o site, banners não ficam rotativos, no resize sim if ($(.banners-container).length > 0) { setTimeout(() > { window.dispatchEvent(new Event(resize)); }, 100); } });/script> script typetext/javascript defer src../assets/common/lib/html5qrcode/html5-qrcode.min.js>/script>script> $(document).ready(function () { /* Ao clicar em concluir o cadastro no modal do login presencial */ $(document).delegate(.btn-cliente-presencial, click, async function(e){ e.preventDefault(); var form $(#form-modal-signup-presencial); form.parsley().validate(); form.find(.msg).html(); if (form.parsley().isValid()) { var dados {}; dados.ds_nome form.find(.ds_nome).val(); dados.nr_fone form.find(.nr_fone).val(); window.loadingInButtons($(this), add); var resCliente form.ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Common\\PresencialController, ajax_function: confirmDadosCliente}); await resCliente.sendDadosPromise(JSON.stringify(dados)) .then((data) > { if (data.msg) { window.alertMessage(danger, Atenção!, data.msg); } else { if (data.dados_cliente) { window.setClienteScopeOnly(data.dados_cliente); $(#modal-presencial-signup).modal(hide); setTimeout(() > { // Atualizar para validar exibição dos itens presenciais location.reload(); }, 500); } } }) .catch((error) > { window.alertMessageCatch(Erro ao na identificação do pedido!, error); }); window.loadingInButtons($(this), remove); } else { return; } }); /* Ao fechar o Modal de Login Presencial limpar as informações. */ $(#modal-presencial-signup).on(hidden.bs.modal, function(e) { document.getElementById(form-modal-signup-presencial).reset(); $(#form-modal-signup-presencial).parsley().reset(); $(#form-modal-signup-presencial).find(.ds_nome).val(); $(#form-modal-signup-presencial).find(.nr_fone).val(); $(.btn-voltar-mobile-modal).removeAttr(disabled) $(.btn-voltar-mobile-modal).css(opacity, 1) window.validateTipoPedido(); setTimeout(() > { var fixedTopOffset $(#scrollfixed).offset().top; if (scope_cliente.is_mobile) { if (scope_cliente.headerScrollFixedHeight 56) { if (fixedTopOffset 56) { $(#scrollfixed).removeClass(scrollfixed-active) fixedTopOffset + $(#header-site).height(); } } } scope_cliente.headerScrollFixedHeight fixedTopOffset; scope_cliente.$apply(); $(html, body).animate({scrollTop: 0}); }, 100); }); /* Remove sessão do cliente -999 e pedido presencial */ $(document).delegate(.btn-cancelar-modo-presencial, click, function(e) { e.preventDefault(); var dados { in_sair_modo: S, referencia: URL_REFER } var resSairModo $(this).ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Common\\PresencialController, ajax_function: cancelarModoPresencial}); resSairModo.sendDadosPromise(JSON.stringify(dados)) .then((data) > { if (data.msg) { window.alertMessage(danger, Atenção!, data.msg); } else { if (data.in_sair_modo S) { var newURL location.href.split(?)0; window.history.pushState(object, document.title, newURL); location.reload(); } } }) .catch((error) > { window.alertMessageCatch(Erro ao sair do modo presencial!, error); }); }); let html5QrCode null; let html5QrcodeScanner null; var is_started_camera false; var lastScanText ; var facingModeScan environment; var configQrCode { fps: 10, qrbox: 200, rememberLastUsedCamera: true }; window.openModalConfirmQRCode async function(tp_validacao) { await window.sleep(700); if (await window.isMobile()) { var windowWidth $(window).width(); var windowHeight $(window).height(); const minWidth Math.min(windowHeight, windowWidth) configQrCode { fps: 10, qrbox: { width: minWidth * 0.667, height: minWidth * 0.667 }, rememberLastUsedCamera: true, aspectRatio: (windowHeight / windowWidth) }; } var modal $(#modal-presencial-qrcode-confirm); if (scope_cliente.info_pedido.tp_pedido presencial) { if (!tp_validacao) { tp_validacao comanda; var info scope_cliente.info_pedido.dados; if (info.tp_presencial mesa_comanda) { if ($(.home).length > 0) { if (info.id_mesa 0) { tp_validacao mesa; } } else { tp_validacao comanda; } } else { tp_validacao info.tp_presencial; } } $(.p-text-qrcode-header).addClass(d-none); $(.p-text-qrcode-headerdata-tp+ tp_validacao +).removeClass(d-none); if ($(.home).length > 0) { modal.css(pointer-events, none) modal.find(.close).remove(); } else { modal.find(.close).removeClass(d-none); modal.find(.close).addClass(modal-presencial-close-show); } $(.btn-voltar-mobile-modal).closest(nav).addClass(d-none); modal.find(.pseudo-header-mobile).addClass(d-none); modal.attr(data-validacao, tp_validacao); modal.find(.text-tp-presencial).html(tp_validacao); if (html5QrCode ! null) { var status_scan html5QrCode.getState(); if (status_scan 2) { $(#qr-reader-modal__dashboard).addClass(d-none); } else { if (html5QrCode.getState() ! Html5QrcodeScannerState.NOT_STARTED) { html5QrCode.resume(); } } setTimeout(() > { lastScanText ; }, 200) modal.find(.btn-trocar-camera-qrcode).removeClass(d-none); modal.find(.scan-presencial-await-permission).addClass(d-none); modal.find(.header-form-qrcode-scan).removeClass(d-none) modal.modal(show); } else { modal.modal(show); html5QrCode new Html5Qrcode(qr-reader-modal); var is_scan_started false; var erro_scan_started ; // Pede aprovação de acesso as cameras await Html5Qrcode.getCameras().then( async (cameras) > { await html5QrCode.start({facingMode: facingModeScan}, configQrCode, onScanQRCodePresencialSuccess) .then((success) > { is_scan_started true; }); }) .catch(err > { erro_scan_started err; }); // Contenção caso não seja iniciada if (html5QrCode.getState() Html5QrcodeScannerState.NOT_STARTED) { await window.sleep(1000); // assuming at least one camera exists await html5QrCode.start({facingMode: facingModeScan}, configQrCode, onScanQRCodePresencialSuccess) .then((success) > { is_scan_started true; }) .catch(err > { erro_scan_started err; }); } if (is_scan_started) { if ($(#qr-reader-modal).height() $(#qr-reader-modal).width()) { $(#qr-reader-modal).css(marginTop, 100.11px) $(.header-form-qrcode-scan).addClass(position-relative) } else { if ($(#qr-reader-modal).css(marginTop) 100.11px) { $(#qr-reader-modal).css(marginTop, 0px) } } if (window.isMobile()) { modal.find(.modal-body).css(background, #171717); } modal.find(.btn-trocar-camera-qrcode).removeClass(d-none); modal.find(.scan-presencial-await-permission).addClass(d-none); modal.find(.header-form-qrcode-scan).removeClass(d-none) } else { if (!erro_scan_started) { erro_scan_started Não foi possível iniciar o leitor de QR Code.; } console.log(erro_scan_started); modal.find(.scan-presencial-await-permission).addClass(d-none); if (erro_scan_started.includes(denied)) { modal.find(.scan-presencial-not-permission).removeClass(d-none); } else { modal.find(.scan-presencial-error).removeClass(d-none); modal.find(.scan-presencial-error).find(p).html(erro_scan_started); } } } } } // Troca de camera ntre frontal e traseira $(document).delegate(.btn-trocar-camera-qrcode, click, async function() { var modal $(#modal-presencial-qrcode-confirm); if (html5QrCode ! null) { if (facingModeScan user) { facingModeScan environment; } else { facingModeScan user; } if (html5QrCode.getState() ! Html5QrcodeScannerState.NOT_STARTED) { await html5QrCode.stop().then((ignore) > { // Pausou }).catch((err) > { window.alertMessage(danger, Atenção, Não foi possível pausar a leitura do QR Code para troca da câmera.) }); } await window.sleep(700); html5QrCode.start({facingMode: facingModeScan}, configQrCode, onScanQRCodePresencialSuccess) .then((success) > { // Deu boa a troca if (window.isMobile()) { modal.find(.modal-body).css(background, #171717); } }) .catch((err) > { modal.find(.header-form-qrcode-scan).addClass(d-none) modal.find(#qr-reader-modal).addClass(d-none) modal.find(.scan-presencial-error).removeClass(d-none); modal.find(.scan-presencial-error).find(p).html(Não foi possível iniciar a câmera frontal.); }); } }); // Limpar ultimo texto lido no scan function clearLastTextScan(scanText) { setTimeout(() > { if (scanText lastScanText) { lastScanText ; } }, 4000); } // Função chamada assim que ler o QR Code async function onScanQRCodePresencialSuccess(scanText) { var modal $(#modal-presencial-qrcode-confirm); if (scanText) { if (scanText ! lastScanText) { lastScanText scanText; var tp_validacao modal.attr(data-validacao); if (tp_validacao) { var ds_local_validacao checkout; if ($(.home).length > 0) { ds_local_validacao home; } var dados { tp_validacao: tp_validacao, ds_local_validacao: ds_local_validacao, referencia: URL_REFER, url_validacao: scanText } var resValidacao modal.ajaxform({url:https://imperialsalgadosc.com.br/ajax-modulo-site, token: 1lWPq3W30u3QkGmkKqyxaB8CvcWEnyKJCPclbeqs , ajax_controller: Common\\PresencialController, ajax_function: confirmMesaComandaModoPresencial}); await resValidacao.sendDadosPromise(JSON.stringify(dados)) .then((data) > { if (data.msg) { window.alertMessage(danger, Atenção!, data.msg); } else { if (data.id_mesa_comanda > 0) { if (data.tp_validacao mesa) { scope_cliente.info_pedido.dados.id_mesa data.id_mesa_comanda; } else if (data.tp_validacao comanda) { scope_cliente.info_pedido.dados.id_comanda data.id_mesa_comanda; } scope_cliente.info_pedido.dados.is_confirmed true; scope_cliente.$apply(); if (data.ds_local_validacao checkout) { $(#btn-enviar-pedido).trigger(click); } else if (data.ds_local_validacao home) { var newURL location.href.split(?)0; window.history.pushState(object, document.title, newURL); } modal.modal(hide); } } }) .catch((error) > { window.alertMessageCatch(Erro ao na identificação do QR Code!, error); }) .finally(() > { clearLastTextScan(scanText); }); } } } } // Ao fechar modal, revalida a confirmação da mesa na home $(#modal-presencial-qrcode-confirm).on(hidden.bs.modal, function(e) { $(this).attr(data-validacao, ); $(this).find(.text-tp-presencial).html(); $(this).find(.close).removeClass(modal-presencial-close-show); $(this).find(.close).addClass(d-none); $(this).find(.pseudo-header-mobile).addClass(d-none); $(.btn-voltar-mobile-modal).closest(nav).removeClass(d-none); $(this).find(.scan-presencial-loading).addClass(d-none); $(this).find(.header-form-qrcode-scan).addClass(d-none) $(this).find(.header-form-qrcode-scan).removeClass(position-relative) $(this).find(#qr-reader-modal).removeClass(d-none) $(this).find(.scan-presencial-not-permission).addClass(d-none) $(this).find(.scan-presencial-error).addClass(d-none) $(this).find(.scan-presencial-await-permission).removeClass(d-none) $(this).find(.btn-trocar-camera-qrcode).addClass(d-none) if (html5QrCode ! null) { var state_qrcode html5QrCode.getState(); if (state_qrcode ! Html5QrcodeScannerState.NOT_STARTED) { html5QrCode.stop().then((ignore) > { html5QrCode null; }).catch((err) > { html5QrCode.pause(); }); } else { html5QrCode null; } if (typeof validateConfirmacaoMesaHome function) { window.validateConfirmacaoMesaHome(); } } setTimeout(() > { if ($(#scrollfixed).length > 0) { var fixedTopOffset $(#scrollfixed).offset().top; if (scope_cliente.is_mobile) { if (scope_cliente.headerScrollFixedHeight 56) { if (fixedTopOffset 56) { $(#scrollfixed).removeClass(scrollfixed-active) fixedTopOffset + $(#header-site).height(); } } } } scope_cliente.headerScrollFixedHeight fixedTopOffset; scope_cliente.$apply(); $(html, body).animate({scrollTop: 0}); }, 100); }); });/script> /div>script> is_page_loaded true;/script>script> $(document).ready(function () { $(document).delegate(.close-pedido-andamento, click, function(e) { e.preventDefault(); $(this).closest(.float-andamento).addClass(d-none); }); /* No mobile, manter box do endereço fixo abaixo do menu */ if ($(#carrinho-home).length > 0) { if ($(#scrollfixed).length > 0) { if ($(window).width() 992) { setTimeout(() > { scope_cliente.headerScrollFixedHeight $(#scrollfixed).offset().top; scope_cliente.$apply(); $(window).scroll(function() { var fixmeTop scope_cliente.headerScrollFixedHeight - 56; var currentScroll $(window).scrollTop(); if (currentScroll > fixmeTop) { $(#scrollfixed).addClass(scrollfixed-active) } else { $(#scrollfixed).removeClass(scrollfixed-active) } }); }, 1000); } } } if (typeof validateTipoPedido function) { window.validateTipoPedido(); } if (typeof initEnderecoAreas function) { window.initEnderecoAreas(); } if (typeof getItensSite function) { window.getItensSite(); } if (typeof getParametrosCashback function) { setTimeout(() > { window.getParametrosCashback(); }, 1000); } const domains_auth_permission https://myserver, https://sandbox.deliveryturbo.com.br, https://deliveryturbo.com.br, https://hubzy.pro $(#auth__profile_iframe).attr(src,https://hubzy.pro/external/storage/auth/profile); const iframe_auth document.getElementById(auth__profile_iframe) window.addEventListener(message, messageHandlerAuthProfile, false); function messageHandlerAuthProfile(event) { if (event.data.data undefined) { return; } if (!domains_auth_permission.includes(event.origin)) { return; } const { action, data } event.data; if (action responseProfileAuth && data.event get) { window.setAuthProfileSession(data); } window.removeEventListener(message, messageHandlerAuthProfile, false); } window.sendEventAuthProfile async function(id, action) { var win_iframe; try { win_iframe iframe_auth.contentWindow; } catch(e) { win_iframe iframe_auth.contentWindow; } var is_debug false; var res await win_iframe.postMessage({ action: action, debug: is_debug, data: { id: id } }, https://hubzy.pro); } setTimeout(() > { $(.btn-login-cadastro).attr(disabled, disabled); window.sendEventAuthProfile(0, getProfileAuth); }, 2000); setTimeout(() > { $(.btn-login-cadastro).removeAttr(disabled); }, 3000); window.setAuthProfileSession async function(auth) { if (auth.id) { await window.makeLoginClienteById(auth.id) } $(.btn-login-cadastro).removeAttr(disabled); } });/script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]