Bringing innovation to tomorrow's climate

At Clivet, the contribution of each member of our team makes a difference. Browse our current job opportunities and find out how you can join the Clivet team.

600+
employees
35
agencies in italy
90
Countries we export to
7
Subsidiaries worldwide
Natural overview from above, our commitment to a sustainable future
Our commitment to a sustainable future

For more than 35 years we have been offering solutions for sustainable comfrot and the well-being of individuals and the environment, using innovative and energy-efficient technologies. Join us on this journey towards a more sustainable future.

Your future starts here

An error occurred while processing the template.
Java method "jdk.proxy3.$Proxy170.getCategory(long)" threw an exception when invoked on jdk.proxy3.$Proxy170 object "com.liferay.portlet.asset.service.impl.AssetCategoryServiceImpl@a8c7ff8"; 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 66, column 57]
----
1<#assign hasCategories = false /> 
2<#assign assetCategoryService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryService") /> 
3<#assign randomNamespace="0.${turnoverstr(.now?long?string)}"?number?string?replace(".", "") /> 
4 
5<style> 
6  .n_${randomNamespace}.categories-filter .dropdown-toggle { 
7	  text-transform: capitalize; 
8	  display: flex; 
9	  flex-direction: row; 
10		justify-content: space-between; 
11		align-items: center; 
12		height: 50px; 
13		min-width: 240px; 
14		border-color: #E7E7E7; 
15    border-radius: 8px; 
16		background-color: #fff; 
17		font-weight: 400; 
18
19	.n_${randomNamespace}.categories-filter .dropdown-toggle::after { 
20    display: block; 
21    /* margin-left: .255em; */ 
22    /* vertical-align: .255em; */ 
23    content: ""; 
24    /* border-top: .3em solid; */ 
25    /* border-right: .3em solid transparent; */ 
26    /* border-bottom: 0; */ 
27    /* border-left: .3em solid transparent; */ 
28    background-image: url(/o/clivet-liferay-nuance-theme/images/icons/chevron.svg); 
29    width: 24px; 
30    height: 24px; 
31    color: #000; 
32    transform: rotate(0deg); 
33
34	.n_${randomNamespace}.categories-filter .dropdown-item { 
35		text-transform: capitalize; 
36  	color: #000 !important; 
37		font-size: 16px; 
38		font-weight: 400; 
39
40	.n_${randomNamespace}.filter-label { 
41		color: #717171; 
42		font-size: 16px; 
43		font-style: normal; 
44		font-weight: 400; 
45
46	@media only screen and (max-width: 991.98px) { 
47		.n_${randomNamespace}.categories-filter .dropdown, 
48		.n_${randomNamespace}.categories-filter .dropdown-toggle { 
49			width: 100%; 
50
51
52</style> 
53<#assign categoryId = paramUtil.getLong(renderRequest, "categoryId") /> 
54<#assign firstButtonId = "" /> 
55<#if entries?has_content> 
56	<div class="n_${randomNamespace} categories-filter container">  
57		    <div class="n_${randomNamespace} filter-label mb-2 mb-lg-0"><@liferay_ui.message key="filter-by" />:</div> 
58		<div class="d-flex flex-column flex-lg-row justify-content-center align-items-center g-3"> 
59			<#assign index = 0/> 
60			<#list entries as entry> 
61				<#assign categories = entry.getCategories() /> 
62				<#if categories?has_content> 
63					<#assign hasCategories = true /> 
64						<#assign categoryTitle = entry.getUnambiguousTitle(entries, themeDisplay.getSiteGroupId(), themeDisplay.getLocale()) /> 
65						<#if validator.isNotNull(categoryId) && containsCategory(categories, categoryId)> 
66							<#assign categoryTitle = assetCategoryService.getCategory(categoryId).getName() /> 
67						</#if> 
68						<div class="dropdown"> 
69							<#if index == 0 > 
70							  <#assign firstButtonId = "n_${randomNamespace}dropdownMenuButton" />	 
71							</#if> 
72							<button class="btn dropdown-toggle" type="button" id="n_${randomNamespace}dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 
73    						${categoryTitle} 
74 							</button> 
75							<div class="dropdown-menu" aria-labelledby="n_${randomNamespace}dropdownMenuButton"> 
76								<@displayCategories categories=categories /> 
77							</div> 
78						</div> 
79				</#if> 
80				<#assign index = index + 1/> 
81			</#list> 
82      <#if hasCategories> 
83				<#assign resetCategoryURL = renderResponse.createRenderURL() /> 
84				${resetCategoryURL.setParameter("resetCur", "true")} 
85				${resetCategoryURL.setParameter("categoryId", "")} 
86				<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> 
87			</#if> 
88			<#if !hasCategories> 
89				${renderRequest.setAttribute("PORTLET_CONFIGURATOR_VISIBILITY", true)} 
90 
91				<div class="alert alert-info w-100"> 
92					<@liferay_ui.message key="there-are-no-categories" /> 
93				</div> 
94			</#if> 
95		</div> 
96	</div> 
97</#if> 
98 
99<#function containsCategory 
100	categories 
101	lookup 
102
103	<#if categories?has_content> 
104		<#list categories as category> 
105				<#if category.getCategoryId() == lookup> 
106					<#return true /> 
107				</#if> 
108			<#assign childCategories = assetCategoryService.getChildCategories(category.getCategoryId()) /> 
109			<#if childCategories?has_content> 
110				<#return containsCategory(childCategories, lookup)/> 
111			</#if> 
112		</#list> 
113	</#if> 
114	<#return false /> 
115</#function> 
116 
117<#macro displayCategories 
118	categories 
119
120	<#if categories?has_content> 
121			<#list categories as category> 
122					<#assign categoryURL = renderResponse.createRenderURL() /> 
123 
124					${categoryURL.setParameter("resetCur", "true")} 
125					${categoryURL.setParameter("categoryId", category.getCategoryId()?string)} 
126					<#assign categoryURLs = categoryURL.toString()?replace("#p_"+themeDisplay.getPortletDisplay().getId(),"") /> 
127					<a href="${categoryURLs}" class="dropdown-item"><span class="text-truncate">${category.getTitle(themeDisplay.getLocale())}</span></a> 
128 
129					<#if serviceLocator??> 
130						<#assign childCategories = assetCategoryService.getChildCategories(category.getCategoryId()) /> 
131						<@displayCategories categories=childCategories /> 
132					</#if> 
133			</#list> 
134	</#if> 
135</#macro> 
136 
137<#function random > 
138	<#local h="0.${turnoverstr(.now?long?string)}" /> 
139	<#local r=h?number + rnd /> 
140	<#if r >= 1> 
141		<#local r=r-1 /> 
142	</#if> 
143	<#assign rnd=r /> 
144	<#return r/> 
145</#function> 
146 
147<#function turnoverstr str > 
148	<#local l = str?length /> 
149	<#local r = ""/> 
150	<#list 1..l as i> 
151		<#local r = r+str?substring(l-i,l-i+1)/> 
152	</#list> 
153	<#return r/> 
154</#function> 
155 
156 
157<#assign selectedOptionName = "default_value"> 
158<#if filterType?? && filterType.getData()?has_content> 
159    <#if filterType.getData() == 'opzione11682098'> 
160        <#assign selectedOptionName = 'product_filter'> 
161    <#elseif filterType.getData() == 'opzione80749396'> 
162        <#assign selectedOptionName = 'use_case_filter'> 
163    <#elseif filterType.getData() == 'opzione61712593'> 
164        <#assign selectedOptionName = 'job_filter'> 
165    <#elseif filterType.getData() == 'opzione71672717'> 
166        <#assign selectedOptionName = 'content_type_filter'> 
167    <#elseif filterType.getData() == 'opzione22125586'> 
168        <#assign selectedOptionName = 'operator_filter'> 
169    </#if> 
170</#if> 
171					 
172<script> 
173 
174	  $(".n_${randomNamespace}.categories-filter .dropdown-item").on('click', function(event) {  
175    if (typeof sendMeasurementEventFilter === 'function') {   
176		   var filterName = $(this).text(); 
177			  var filterType = '${selectedOptionName}';  
178        sendMeasurementEventFilter('Filter', filterType, filterName, 'no_type'); 
179    } else { 
180      console.error('sendMeasurementEventFilter not defined'); 
181
182  }); 
183	 
184	function fn_${randomNamespace}_fixLabel() { 
185	  let leftBtn = $("#${firstButtonId}").offset().left; 
186		let leftLabel = $(".n_${randomNamespace}.filter-label").offset().left; 
187		$(".n_${randomNamespace}.filter-label").css("paddingLeft", (leftBtn - leftLabel)+'px'); 
188		 
189		 
190
191	$(window).on('resize', function(){ 
192	  fn_${randomNamespace}_fixLabel(); 
193	}); 
194  fn_${randomNamespace}_fixLabel(); 
195</script> 
Test room technician for air conditioning, heating and air treatment systems and installations
Quality
Padua

PROFILE SEARCHED

In preparation for a growth phase of our Laboratory Area in Padua, we are selecting a Laboratory Technician to support us in the development of our business.
The selected resource, placed in the Quality area and coordinated by the Test Room Manager, will have the task of supporting the development process of new products, carrying out certification and qualification tests of new components related to systems and units for air conditioning, heating and air treatment systems.

More specifically, within the operations team, the resource will be responsible for:

  • Conducting laboratory tests defined by a test plan with responsibility for their correct execution;
  • Defining and setting up the instrumentation and room set-up for carrying out the tests;
  • Defining the test sequence and the measuring instrumentation to be used;
  • Carrying out laboratory checks on test benches;
  • Drawing up test reports adopting the standards relating to the products tested and verifying their conformity;
  • Record test results in qualification plans for review and update the necessary technical documents and procedures based on the results obtained;
  • Propose improvements in testing techniques and on the product based on experience and knowledge of new measuring instruments;
  • Participate in test campaigns at third-party laboratories in Italy/Europe, if necessary and requested.

Candidates with the following requirements will be considered for selection:

  • Diploma of thermotechnical/electrical/mechanical expert or vocational school;
  • Basic knowledge of electrical, mechanical, thermotechnical and acoustic measurements;
  • Good skills and propensity for manual work;
  • Ability to analyse and interpret results;
  • Problem solving and teamwork;
  • Operational autonomy and result orientation;
  • Good knowledge of Office package (especially Excel);

Additional requirements that will be a preference:

  • Basic knowledge of the refrigeration circuit;
  • Intermediate level knowledge of the English language;
  • Previous experience of at least 1/2 years in the role or in related tasks (e.g.: tester), within medium/large-sized engineering industrial contexts preferably in the HVAC sector.


Duration

Full-time working hours, also on 2/3 shifts.

Salary, level and duration of contract will be commensurate with experience in the role.

 

To apply click here

Didn't find what you were looking for?
We are always interested in receiving new applications