Agenda
Se ha producido un error al procesar la plantilla.
Can't convert this string to number: "" The blamed expression: ==> paramUtil.getString(request, "step")?number [in template "68881#68920#6293376" at line 11, column 21] ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign step = paramUtil.getString(re... [in template "68881#68920#6293376" at line 11, column 5] ----
1<#if paramUtil.getString(request, "productId") ??>
2<#assign productId = paramUtil.getString(request, "productId")>
3<div class="container">
4 <@liferay_journal["journal-article"]
5 articleId=productId
6 ddmTemplateKey="40466"
7 groupId=groupId
8 />
9
10
11 <#assign step = paramUtil.getString(request, "step")?number >
12 <div id="progress">
13 <div class="d-flex justify-content-between">
14 <div class="progress-text">SUCURSAL</div>
15 <div class="progress-text">VEHÍCULO</div>
16 <div class="progress-text">CLIENTE</div>
17 </div>
18 <div class="d-flex justify-content-between">
19 <#list 1..3 as dot>
20 <#if dot <= step>
21 <div class="dot active rounded-circle"></div>
22 <#else>
23 <div class="dot rounded-circle"></div>
24 </#if>
25 </#list>
26 </div>
27 <hr>
28 </div>
29</div>
30
31<style>
32 @media (max-width:767px) {
33 #progress .progress-text {
34 font-size: 13px !important;
35 }
36 }
37 #progress .progress-text {
38 color: #00ADEF;
39 font-size: 26px;
40 font-family: 'Corporate S';
41 }
42 #progress hr {
43 border: 1px solid #707070;
44 margin: 0 auto;
45 margin-top: -12px;
46 color: #707070;
47 }
48 #progress .dot {
49 width: 24px;
50 height: 24px;
51 background-color: #B6BFC3;
52 }
53 #progress .dot.active {
54 background-color: #00ACEF;
55 }
56</style>
57<script>
58 $(function() {
59 const urlParams = new URLSearchParams(window.location.search);
60 console.log("step2 " , urlParams.get('step'))
61 if (urlParams.get('step') !== null && urlParams.get('step') == "1") {
62 var dataPush = {
63 event: "catalogo-servicio-id-producto",
64 modelo: urlParams.get('modeloId'), //modeloid
65 marca_tipo_vh: urlParams.get('marcaId'), //marcaid
66 servicio: urlParams.get('servicio'), //servicio
67 id_servicio: urlParams.get('aId'), //aid
68 Id_producto: urlParams.get('productId'),
69 timestamp: String(Date.now()),
70 url: window.location.href
71 }
72 window.dataLayer.push(dataPush);
73 }else if (urlParams.get('step') !== null && urlParams.get('step') == "2") {
74 var dataPush = {
75 event: "catalogo-servicio-sucursal",
76 modelo: urlParams.get('modeloId'), //modeloid
77 marca_tipo_vh: urlParams.get('marcaId'), //marcaid
78 servicio: urlParams.get('servicio'), //servicio
79 id_servicio: urlParams.get('aId'), //aid
80 Id_producto: urlParams.get('productId'),
81 Sucursal: localStorage.getItem("sucursalNombre"), //sucursal seleccionada
82 timestamp: String(Date.now()),
83 url: window.location.href
84 }
85 window.dataLayer.push(dataPush);
86 }else if (urlParams.get('step') !== null && urlParams.get('step') == "3") {
87 var dataPush = {
88 event: "catalogo-servicio-patente",
89 modelo: urlParams.get('modeloId'), //modeloid
90 marca_tipo_vh: urlParams.get('marcaId'), //marcaid
91 servicio: urlParams.get('servicio'), //servicio
92 id_servicio: urlParams.get('aId'), //aid
93 Id_producto: urlParams.get('productId'),
94 Sucursal: localStorage.getItem("sucursalNombre"), //sucursal seleccionada
95 Patente: localStorage.getItem("patente"), //patente seleccionada
96 timestamp: String(Date.now()),
97 url: window.location.href
98 }
99 window.dataLayer.push(dataPush);
100 }
101 });
102</script>
103<#else>
104
105<div class="py-3">Fomulario agenda - detalle de producto</div>
106
107</#if>
Se ha producido un error al procesar la plantilla.
Can't convert this string to number: "" The blamed expression: ==> paramUtil.getString(request, "step")?number [in template "68881#68920#6293379" at line 2, column 17] ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign step = paramUtil.getString(re... [in template "68881#68920#6293379" at line 2, column 1] ----
1<#if paramUtil.getString(request, "step") ??>
2<#assign step = paramUtil.getString(request, "step")?number>
3<#if step == 1>
4 <div class="container">
5 <div class="row pt-3">
6 <div class="col-md-6">
7 <div class="sucursales">
8 <h4 style="font-size: 40px; color: #00ADEF;">Sucursales</h4>
9 <span style="font-size: 18px; color: #707070;">Selecciona tu sucursal</span>
10
11 <div id="sucursal-error"></div>
12
13 <select id="ddl-sucursal" class="sucursal-select form-control my-5">
14 <option selected disabled>Selecciona tu sucursal</option>
15 <#if entries?has_content>
16 <#list entries as curEntry>
17 <#assign
18 assetRenderer = curEntry.getAssetRenderer()
19 journalArticle = assetRenderer.getAssetObject()
20 />
21 <@liferay_journal["journal-article"]
22 articleId=journalArticle.getArticleId()
23 ddmTemplateKey="4203549"
24 groupId=journalArticle.getGroupId()
25 />
26 </#list>
27 </#if>
28 </select>
29
30 <span class="hide" style="font-size: 20px; color: #707070;">Si permites usar la geolocalización, se mostraran
31 las
32 sucursales mas cercanas a tu ubicación.</span>
33 </div>
34 </div>
35 </div>
36 </div>
37
38
39 <script>
40 $("#ddl-sucursal").change(function(){
41 localStorage.setItem("sucursal", this.value.split('|')[0])
42 localStorage.setItem("sucursalNombre", this.value.split('|')[1])
43 })
44 </script>
45</#if>
46<#else>
47<div>Formulario sucursales</div>
48</#if>
Se ha producido un error al procesar la plantilla.
Can't convert this string to number: "" The blamed expression: ==> paramUtil.getString(request, "step")?number [in template "68881#68920#6293382" at line 2, column 21] ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign step = paramUtil.getString(re... [in template "68881#68920#6293382" at line 2, column 5] ----
1<#if paramUtil.getString(request, "step") ??>
2 <#assign step = paramUtil.getString(request, "step")?number>
3 <#if step == 2>
4 <div class="container">
5 <div class="row pt-3">
6 <div class="col-md-6">
7 <div class="datos-vehiculo">
8 <h4 style="font-size: 40px; color: #00ADEF;">Datos del vehículo</h4>
9
10 <div id="vehiculo-error"></div>
11
12 <div class="my-3">
13 <label style="font-size: 18px; color: #707070">Ingresa tu patente</label>
14 <input id="patente-input" maxlength="6" type="text" placeholder="Patente: AABB33" class="form-control">
15 </div>
16 </div>
17 </div>
18 </div>
19 </div>
20 <script>
21 $("#patente-input").on('input', function(){localStorage.setItem("patente", this.value)})
22 </script>
23 </#if>
24
25<#else>
26<div>Formulario sucursales</div>
27</#if>
Se ha producido un error al procesar la plantilla.
Can't convert this string to number: "" The blamed expression: ==> paramUtil.getString(request, "step")?number [in template "68881#68920#6293385" at line 2, column 17] ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign step = paramUtil.getString(re... [in template "68881#68920#6293385" at line 2, column 1] ----
1<#if paramUtil.getString(request, "step")??>
2<#assign step = paramUtil.getString(request, "step")?number>
3<#if step == 3>
4<div class="container">
5 <div class="row pt-3">
6 <div class="col-md-12">
7 <div class="cliente">
8 <h4 style="font-size: 40px; color: #00ADEF;">Datos de contacto</h4>
9
10 <div id="cliente-error"></div>
11 <form id="contacto-form" action="gracias">
12 <div class="row my-3">
13 <div class="col-md-6">
14 <input type="text" required class="form-control my-3" id="nombre" name="nombre" placeholder="Nombre" />
15 </div>
16 <div class="col-md-6">
17 <input type="text" required class="form-control my-3" id="apellido" name="apellido" placeholder="Apellido" />
18 </div>
19 <div class="col-md-4">
20 <input type="text" required class="form-control my-3" id="rut" name="rut" placeholder="Rut (11111111-1)" maxlength="10" />
21 </div>
22 <div class="col-md-4">
23 <input type="mail" required class="form-control my-3" id="email" name="email" placeholder="Email" />
24 </div>
25 <div class="col-md-4">
26 <input type="text" required class="form-control my-3" id="telefono" name="telefono" placeholder="Telefono" />
27 </div>
28 </div>
29 </form>
30 </div>
31 </div>
32 </div>
33</div>
34
35<script>
36 $( "#contacto-form" ).submit(function( event ) {
37 localStorage.setItem("nombre", $("input[name='nombre']").val())
38 localStorage.setItem("apellido", $("input[name='apellido']").val())
39 localStorage.setItem("rut", $("input[name='rut']").val())
40 localStorage.setItem("email", $("input[name='email']").val())
41 localStorage.setItem("telefono", $("input[name='telefono']").val())
42 event.preventDefault();
43 });
44</script>
45</#if>
46
47<#else>
48<div>Datos del cliente</div>
49</#if>
Se ha producido un error al procesar la plantilla.
Can't convert this string to number: "" The blamed expression: ==> paramUtil.getString(request, "step")?number [in template "68881#68920#6293388" at line 2, column 17] ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign step = paramUtil.getString(re... [in template "68881#68920#6293388" at line 2, column 1] ----
1<#if paramUtil.getString(request, "step")??>
2<#assign step = paramUtil.getString(request, "step")?number>
3
4<#assign nextStep = step?number + 1 >
5
6<#assign toURL = themeDisplay.getURLCurrent()?replace("step="+step, "step=" + nextStep) >
7
8<script>
9function validarEmail(valor) {
10 if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3,4})+$/.test(valor)){
11 return true
12 } else {
13 return false
14 }
15}
16var Fn = {
17 // Valida el rut con su cadena completa "XXXXXXXX-X"
18 validaRut : function (rutCompleto) {
19 if (!/^[0-9]+[-|‐]{1}[0-9kK]{1}$/.test( rutCompleto ))
20 return false;
21 var tmp = rutCompleto.split('-');
22 var digv = tmp[1];
23 var rut = tmp[0];
24 if ( digv == 'K' ) digv = 'k' ;
25 return (Fn.dv(rut) == digv );
26 },
27 dv : function(T){
28 var M=0,S=1;
29 for(;T;T=Math.floor(T/10))
30 S=(S+T%10*(9-M++%6))%11;
31 return S?S-1:'k';
32 }
33}
34
35if (${step} == 1){
36 localStorage.removeItem("sucursal")
37 localStorage.removeItem("patente")
38 localStorage.removeItem("nombre")
39 localStorage.removeItem("apellido")
40 localStorage.removeItem("rut")
41 localStorage.removeItem("email")
42 localStorage.removeItem("telefono")
43}
44function redirectNextStep(){
45 if (${step} == 1){
46 if (localStorage.getItem("sucursal"))
47 document.location.href = "${toURL}"
48 else $("#sucursal-error").html('<div class="alert alert-danger" role="alert">Selecciona una sucursal para continuar</div>')
49 }
50 if (${step} == 2){
51 let isValid = true
52 if (!localStorage.getItem("patente")){
53 isValid = false
54 $("#vehiculo-error").html('<div class="alert alert-danger" role="alert">Ingresa tu patente para continuar</div>')
55 }
56 if (localStorage.getItem("patente").length < 6 || localStorage.getItem("patente") >6){
57 isValid = false
58 $("#vehiculo-error").html('<div class="alert alert-danger" role="alert">Ingresa una patente válida</div>')
59 }
60 if (isValid)
61 document.location.href = "${toURL}"
62 }
63 if (${step} == 3){
64
65 if (localStorage.getItem("patente"))
66 $("#contacto-form").submit()
67 //CRM
68 const params = new Proxy(new URLSearchParams(window.location.search), {
69 get: (searchParams, prop) => searchParams.get(prop),
70 });
71 let sucursalNombre = localStorage.getItem('sucursalNombre')
72 let sucursalId = localStorage.getItem('sucursal')
73
74 let queryParams = new URLSearchParams(window.location.search);
75 let tipoCotizador = queryParams.get('marcaId').includes('automoviles') ? 'catalogo-servicio-automoviles' : 'catalogo-servicio-otros'
76
77
78 $.ajax({
79 url: '/o/kaufmann.generico.cotizador.srv/enviar',
80 method: 'POST',
81 contentType:"application/json; charset=utf-8",
82 data: JSON.stringify({
83 "IvNombreCliente": localStorage.getItem('nombre'),
84 "IvApellidoCliente": localStorage.getItem('apellido'),
85 "IvEmail": localStorage.getItem('email'),
86 "IvTelefonoMovil": localStorage.getItem('telefono'),
87 "IvCategorizacion": sucursalId.length < 2 ? "0" + sucursalId : sucursalId,
88 "IvUrl": document.location.href,
89 "IvTimestamp":new Date().getTime(),
90 "tipoCotizador": tipoCotizador,
91 "IvNota": "Mail:" + localStorage.getItem('email') + "||Celular:" + localStorage.getItem('telefono') + "||Patente:" + localStorage.getItem('patente') + "||Modelo:" + params.modeloId + "||Servicio:" + params.servicio + "||Sucursal:" + sucursalNombre,
92 "IvSucursal": sucursalNombre,
93 "IvModelo": params.modeloId,
94 "IvNumClasFiscal": localStorage.getItem('rut'),
95 "json": {
96 "producto": params.productId,
97 "servicio": params.servicio,
98 "marca": params.marcaId,
99 "modelo": params.modeloId,
100 "nombre": localStorage.getItem('nombre'),
101 "apellido": localStorage.getItem('apellido'),
102 "rut": localStorage.getItem('rut'),
103 "patente": localStorage.getItem('patente'),
104 "sucursal": sucursalNombre,
105 "email": localStorage.getItem('email'),
106 "telefono": localStorage.getItem('telefono')
107
108 }
109 }),
110 success: function() {
111 console.log("Enviado a CRM")
112 //datalayer
113 const urlParams = new URLSearchParams(window.location.search);
114
115 var dataPush = {
116 event: "catalogo-servicio-gracias",
117 modelo: urlParams.get('modeloId'), //modeloid
118 marca_tipo_vh: urlParams.get('marcaId'), //marcaid
119 servicio: urlParams.get('servicio'), //servicio
120 id_servicio: urlParams.get('aId'), //aid
121 Id_producto: urlParams.get('productId'),
122 Sucursal: localStorage.getItem("sucursalNombre"), //sucursal seleccionada
123 nombre:localStorage.getItem('nombre'),//nombre ingresado por el usuario
124 apellido:localStorage.getItem('apellido'),//apellido ingresado por el usuario
125 email:localStorage.getItem('email'),//email ingresado por el usuario
126 rut:localStorage.getItem('rut'),////rut ingresado por el usuario
127 telefono:localStorage.getItem('telefono'),//teléfono ingresado por el usuario
128 timestamp: String(Date.now()),
129 url: window.location.origin +"/catalogo-servicios/gracias"
130 }
131 window.dataLayer.push(dataPush);
132
133 document.location.href = "gracias"
134 }
135 })
136 }
137}
138
139function agendar(){
140 if ( $("#nombre").val() === '' || $("#apellido").val() === '' || $("#rut").val() === '' || $("#email").val() === '' || $("#telefono").val() === '' ){
141 $("#cliente-error").html('<div class="alert alert-danger" role="alert">Llena todos los campos para continuar</div>')
142 }else{
143 //validar rut
144 if (!Fn.validaRut($("#rut").val())) {
145 $("#cliente-error").html('<div class="alert alert-danger" role="alert">Rut no válido</div>')
146 }else if (validarEmail($("#email").val())){
147 $("#cliente-error").html('<div class="alert alert-danger" role="alert">Email no válido</div>')
148 } else redirectNextStep()
149 }
150
151}
152
153</script>
154
155<div class="container">
156 <div class="d-flex justify-content-end flex-column-reverse flex-md-row">
157 <a href="#" onclick="window.history.back()" class="btn btn-lg btn-dark m-1 d-flex justify-content-between" style="font-size: 20px; background-color: #3C3C3C;font-family: 'Corporate S';font-weight: 300;"><i class="icon-angle-left mr-2"></i> ANTERIOR</a>
158 <#if step == 3>
159 <button onclick="agendar()" class="btn btn-lg btn-primary m-1 d-flex justify-content-between" style="font-size: 20px">FINALIZAR AGENDAMIENTO <i class="icon-angle-right ml-2 "></i></button>
160 <#else>
161 <button onclick="redirectNextStep()" class="btn btn-lg btn-primary m-1 d-flex justify-content-between" style="font-size: 20px">SIGUIENTE <i class="icon-angle-right ml-2 "></i></button>
162 </#if>
163 </div>
164</div>
165
166
167
168<#else>
169<div>Botonera</div>
170</#if>
¿No encuentras lo que buscas?
Si no encuentras lo que buscas, puedes contactarnos a través de correo

Revisa si tu duda esta resuelta
Encuentra lo que necesitas en el Centro de ayuda Kaufmann. Ver más aquí >