En Clivet, la contribución de cada miembro de nuestro equipo marca la diferencia. Consulta nuestras oportunidades de empleo actuales y descubre cómo formar parte del equipo Clivet.
Trabajo con nosotros!
Aporta innovación al clima del mañana

Llevamos más de 35 años ofreciendo soluciones para el confort sostenible y el bienestar de las personas y el medio ambiente, utilizando tecnologías innovadoras y de elevada eficiencia energética. Únete a nosotros en este viaje hacia un futuro más sostenible.
Tu futuro comienza aquí
Java method "jdk.proxy3.$Proxy164.getCategory(long)" threw an exception when invoked on jdk.proxy3.$Proxy164 object "com.liferay.portlet.asset.service.impl.AssetCategoryServiceImpl@64912693"; see cause exception in the Java stack trace.
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign categoryTitle = assetCategory... [in template "10110#2640274#72734807" at line 89, column 57]
----
1<#assign hasCategories = false />
2<#assign assetCategoryService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryService") />
3<#assign assetCategoryPropertyLocalService = serviceLocator.findService("com.liferay.asset.category.property.service.AssetCategoryPropertyLocalService") />
4<#assign randomNamespace="0.${turnoverstr(.now?long?string)}"?number?string?replace(".", "") />
5
6<style>
7 .n_${randomNamespace}.categories-filter .dropdown-toggle {
8 text-transform: capitalize;
9 display: flex;
10 flex-direction: row;
11 justify-content: space-between;
12 align-items: center;
13 height: 50px;
14 min-width: 240px;
15 border-color: #E7E7E7;
16 border-radius: 8px;
17 background-color: #fff;
18 font-weight: 400;
19 }
20 .n_${randomNamespace}.categories-filter .dropdown-toggle::after {
21 display: block;
22 /* margin-left: .255em; */
23 /* vertical-align: .255em; */
24 content: "";
25 /* border-top: .3em solid; */
26 /* border-right: .3em solid transparent; */
27 /* border-bottom: 0; */
28 /* border-left: .3em solid transparent; */
29 background-image: url(/o/clivet-liferay-nuance-theme/images/icons/chevron.svg);
30 width: 24px;
31 height: 24px;
32 color: #000;
33 transform: rotate(0deg);
34 }
35 .n_${randomNamespace}.categories-filter .dropdown-item {
36 text-transform: capitalize;
37 color: #000 !important;
38 font-size: 16px;
39 font-weight: 400;
40 }
41 .n_${randomNamespace}.filter-label {
42 color: #717171;
43 font-size: 16px;
44 font-style: normal;
45 font-weight: 400;
46 }
47 @media only screen and (max-width: 991.98px) {
48 .n_${randomNamespace}.categories-filter .dropdown,
49 .n_${randomNamespace}.categories-filter .dropdown-toggle {
50 width: 100%;
51 }
52 }
53</style>
54
55<#macro displayCategories
56 categories
57>
58 <#if categories?has_content>
59 <#list categories as category>
60 <#assign categoryURL = renderResponse.createRenderURL() />
61
62 ${categoryURL.setParameter("resetCur", "true")}
63 ${categoryURL.setParameter("categoryId", category.getCategoryId()?string)}
64 <#assign categoryURLs = categoryURL.toString()?replace("#p_"+themeDisplay.getPortletDisplay().getId(),"") />
65 <a href="${categoryURLs}" class="dropdown-item"><span class="text-truncate">${category.getTitle(themeDisplay.getLocale())}</span></a>
66
67 <#if serviceLocator??>
68 <#assign childCategories = assetCategoryService.getChildCategories(category.getCategoryId()) />
69 <@displayCategories categories=childCategories />
70 </#if>
71 </#list>
72 </#if>
73</#macro>
74
75<#assign categoryId = paramUtil.getLong(renderRequest, "categoryId") />
76<#assign firstButtonId = "" />
77<#if entries?has_content>
78 <div class="n_${randomNamespace} categories-filter container">
79 <div class="n_${randomNamespace} filter-label mb-2 mb-lg-0"><@liferay_ui.message key="filter-by" />:</div>
80 <div class="d-flex flex-column flex-lg-row justify-content-center align-items-center g-3">
81 <#assign index = 0/>
82 <#list entries as entry>
83 <#assign categories = entry.getCategories() />
84 <#assign categories = filterVisibleCategories(categories) />
85 <#if categories?has_content>
86 <#assign hasCategories = true />
87 <#assign categoryTitle = entry.getUnambiguousTitle(entries, themeDisplay.getSiteGroupId(), themeDisplay.getLocale()) />
88 <#if validator.isNotNull(categoryId) && containsCategory(categories, categoryId)>
89 <#assign categoryTitle = assetCategoryService.getCategory(categoryId).getName() />
90 </#if>
91 <div class="dropdown">
92 <#if index == 0 >
93 <#assign firstButtonId = "n_${randomNamespace}dropdownMenuButton" />
94 </#if>
95 <button class="btn dropdown-toggle" type="button" id="n_${randomNamespace}dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
96 ${categoryTitle}
97 </button>
98 <div class="dropdown-menu" aria-labelledby="n_${randomNamespace}dropdownMenuButton">
99 <@displayCategories categories=categories />
100 </div>
101 </div>
102 </#if>
103 <#assign index = index + 1/>
104 </#list>
105 <#if hasCategories>
106 <#assign resetCategoryURL = renderResponse.createRenderURL() />
107 ${resetCategoryURL.setParameter("resetCur", "true")}
108 ${resetCategoryURL.setParameter("categoryId", "")}
109 <a href="${resetCategoryURL}" class="reset-item btn btn-primary m-auto m-lg-0 justify-content-center"><span class="text-truncate"><@liferay.language key="reset" /></span></a>
110 </#if>
111 <#if !hasCategories>
112 ${renderRequest.setAttribute("PORTLET_CONFIGURATOR_VISIBILITY", true)}
113
114 <div class="alert alert-info w-100">
115 <@liferay_ui.message key="there-are-no-categories" />
116 </div>
117 </#if>
118 </div>
119 </div>
120</#if>
121
122<#function containsCategory
123 categories
124 lookup
125>
126 <#if categories?has_content>
127 <#list categories as category>
128 <#if category.getCategoryId() == lookup>
129 <#return true />
130 </#if>
131 <#assign childCategories = assetCategoryService.getChildCategories(category.getCategoryId()) />
132 <#if childCategories?has_content>
133 <#return containsCategory(childCategories, lookup)/>
134 </#if>
135 </#list>
136 </#if>
137 <#return false />
138</#function>
139
140<#function filterVisibleCategories categories>
141 <#assign result = [] />
142 <#if categories?has_content>
143 <#list categories as category>
144 <#attempt>
145 <#assign visibilityProp = assetCategoryPropertyLocalService.fetchCategoryProperty(category.getCategoryId(), "VISIBILITY_FILTER") />
146 <#if visibilityProp?? && visibilityProp.getValue() == "TRUE">
147 <#assign result = result + [category] />
148 </#if>
149 <#recover>
150 </#recover>
151 </#list>
152 </#if>
153 <#return result />
154</#function>
155
156<#function random >
157 <#local h="0.${turnoverstr(.now?long?string)}" />
158 <#local r=h?number + rnd />
159 <#if r >= 1>
160 <#local r=r-1 />
161 </#if>
162 <#assign rnd=r />
163 <#return r/>
164</#function>
165
166<#function turnoverstr str >
167 <#local l = str?length />
168 <#local r = ""/>
169 <#list 1..l as i>
170 <#local r = r+str?substring(l-i,l-i+1)/>
171 </#list>
172 <#return r/>
173</#function>
174
175
176<#assign selectedOptionName = "default_value">
177<#if filterType?? && filterType.getData()?has_content>
178 <#if filterType.getData() == 'opzione11682098'>
179 <#assign selectedOptionName = 'product_filter'>
180 <#elseif filterType.getData() == 'opzione80749396'>
181 <#assign selectedOptionName = 'use_case_filter'>
182 <#elseif filterType.getData() == 'opzione61712593'>
183 <#assign selectedOptionName = 'job_filter'>
184 <#elseif filterType.getData() == 'opzione71672717'>
185 <#assign selectedOptionName = 'content_type_filter'>
186 <#elseif filterType.getData() == 'opzione22125586'>
187 <#assign selectedOptionName = 'operator_filter'>
188 </#if>
189</#if>
190
191<script>
192
193 $(".n_${randomNamespace}.categories-filter .dropdown-item").on('click', function(event) {
194 if (typeof sendMeasurementEventFilter === 'function') {
195 var filterName = $(this).text();
196 var filterType = '${selectedOptionName}';
197 sendMeasurementEventFilter('Filter', filterType, filterName, 'no_type');
198 } else {
199 console.error('sendMeasurementEventFilter not defined');
200 }
201 });
202
203 function fn_${randomNamespace}_fixLabel() {
204 let leftBtn = $("#${firstButtonId}").offset().left;
205 let leftLabel = $(".n_${randomNamespace}.filter-label").offset().left;
206 $(".n_${randomNamespace}.filter-label").css("paddingLeft", (leftBtn - leftLabel)+'px');
207
208
209 }
210 $(window).on('resize', function(){
211 fn_${randomNamespace}_fixLabel();
212 });
213 fn_${randomNamespace}_fixLabel();
214</script>
PROFILO RICERCATO
In preparazione a una fase di crescita della nostra Area Laboratori a Padova, stiamo selezionando un Tecnico di Laboratorio che ci affianchi nello sviluppo del nostro business.
La risorsa selezionata, inserita nell’area Qualità e coordinata dal Test Room Manager, avrà il compito di supportare il processo di sviluppo dei nuovi prodotti, effettuare test di certificazione e qualificazione di nuovi componenti relativi a sistemi ed unità per impianti di climatizzazione, riscaldamento e trattamento aria.
Più specificatamente, all’interno del team operativo la risorsa si occuperà di:
- Condurre dei test di laboratorio definiti da un piano prove con la responsabilità sulla corretta esecuzione degli stessi;
- Definire e allestire la strumentazione e il set-up di sala per l’esecuzione delle prove;
- Definire la sequenza dei test e la strumentazione di misura da utilizzare;
- Eseguire controlli di laboratorio su banchi prova;
- Redigere i test report adottando gli standard relativi ai prodotti testati e verificarne la conformità;
- Annotare i risultati dei test all’interno dei piani di qualificazione per la review e aggiornare i necessari documenti tecnici e le procedure in base ai risultati ottenuti;
- Proporre miglioramenti nelle tecniche di test e sul prodotto sulla base dell’esperienza e della conoscenza di nuovi strumenti di misura;
- Partecipare a campagne di test presso laboratori terzi in Italia/Europa, se necessari e richiesti.
Ai fini della selezione verranno prese in considerazione le candidature con i seguenti requisiti:
- Diploma di perito termotecnico/elettrico/meccanico o scuola professionale;
- Conoscenze basilari di misure elettriche, meccaniche, termotecniche ed acustiche;
- Buone capacità e propensione al lavoro manuale;
- Capacità di analisi e interpretazione dei risultati;
- Problem solving e teamwork;
- Autonomia operativa e orientamento al risultato;
- Gradita conoscenza del Pacchetto Office (in particolare Excel);
Requisiti aggiuntivi che costituiranno preferenza:
- Conoscenza basilare del circuito frigorifero;
- Conoscenza a livello intermedio della lingua inglese;
- Pregressa esperienza di almeno 1/2 anni nel ruolo o in mansioni affini (ad esempio: collaudatore), all'interno di contesti industriali metalmeccanici di medie/grandi dimensioni preferibilmente nel settore HVAC.
Durata
Orario di lavoro full time, anche su 2/3 turni.
Inquadramento, livello e durata del contratto saranno commisurati all'esperienza maturata nel ruolo.