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

Contacto

Para consultas también puedes escribir a oferta.servicio@kaufmann.cl

Revisa si tu duda esta resuelta

Encuentra lo que necesitas en el Centro de ayuda Kaufmann. Ver más aquí >