TRAVAILLEZ AVEC NOUS
Chez Mecalux, nous recherchons des talents, faisant preuve d'initiative, motivés d'en apprendre davantage et se dépasser. Nous vous offrons la possibilité d'innover et de renforcer votre carrière professionnelle dans l'un des secteurs technologiques les plus exigeants.
Découvrez nos offres d'emploiMecalux : la technologie et l’innovation au service de la logistique
Envie de participer activement à la transformation logistique ? Chez Mecalux, notre mission consiste à développer des solutions avant-gardistes pour optimiser la rentabilité des processus logistiques de nos clients.
+ 55 ans d’expérience
dans le secteur.
+ 5500 experts engagés dans l’innovation et l’excellence.
+ 40 nationalités unies pour transformer le monde de la logistique.
Propulsez vos idées à l’échelle mondiale
Vous êtes visionnaire ? Rejoignez-nous et aidez-nous à concevoir les technologies du futur. Transformez vos idées en solutions innovantes.
Présents dans + 70 pays
11 sites de production
7 centres technologiques
Créons ensemble la logistique de demain
Nos équipes d’experts en ingénierie, développement, robotique et logiciels de Mecalux donnent vie à des concepts novateurs. Relevez le défi en nous rejoignant !
- BIG DATA
- CLOUD COMPUTING
- INTERNET DES OBJETS
- SIMULATION DES PROCESSUS
- INTELLIGENCE ARTIFICIELLE
- MACHINE LEARNING
- ANALYSE PRÉDICTIVE
- REALITÉ VIRTUELLE
Mecalux : participez au changement
Découvrez les opportunités de carrière chez Mecalux et contribuez au changement de la logistique.
- Innovation continue
Chez Mecalux, l’innovation est inscrite dans notre ADN. Rejoignez une équipe d’experts passionnés par le développement de solutions à la pointe de la technologie pour révolutionner le marché de la logistique.
- Un impact réel
Collaborez à des projets stratégiques visant à renforcer l’efficacité des opérations logistiques. Contribuez à l’optimisation des processus et à l’amélioration de la productivité de nos clients.
- Engagement envers l’excellence
Chez Mecalux, nous aspirons à l’excellence dans tout ce que nous entreprenons. Rejoignez une équipe qui participe au changement en développant des technologies pour la chaîne d’approvisionnement.
Java method "com.mecalux.util.service.impl.MlxUrlUtilServiceImpl.getUrlByJournalArticle(com.liferay.journal.model.JournalArticle, String, long)" threw an exception when invoked on com.mecalux.util.service.impl.MlxUrlUtilServiceImpl object "com.mecalux.util.service.impl.MlxUrlUtilServiceImpl@43669969"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign asseturl = mlxUrlUtilService... [in template "20101#20128#3282457" at line 235, column 33] ----
1<style> /* fix estilos liferay 7.4 automaticos para las imagenes en el contenido del final de la página de ofertas de empleo */
2 .corporate--hhrr--values--item picture{width: 100%;}
3</style>
4
5<#if entries?has_content >
6 <!--MEDIABAR-->
7
8 <span id="offers"></span>
9 <div class="corporate--hhrr--mediabar--container" data-js="slider" data-js-type="tiny-slider" data-js-config="{'container': '.corporate--hhrr--mediabar', 'nav': false, 'controlsText':['',''], 'loop': false, 'mouseDrag': 'true', 'autoWidth': true}">
10 <ul class="corporate--hhrr--mediabar">
11 <#assign departmentVocId = 396098 />
12 <#assign jobVacancyStrId = 466198 />
13 <#assign departmentJobVacanciesMap = mlxAssetHelperService.getVocabularyCategorizedArticlesMap(departmentVocId, groupId, [], themeDisplay.getUserId()) />
14
15 <#assign listCategorySorted = [] />
16 <#list departmentJobVacanciesMap as categoryId, articles >
17 <#assign jobList = (mlxAssetHelperService.getJournalArticleListByStructureIdAndCategoryId(groupId, themeDisplay.getUserId(), jobVacancyStrId, categoryId))![] />
18 <#if jobList?has_content>
19 <#assign department = mlxAssetHelperService.fetchAssetCategory(categoryId).getTitle(locale) />
20 <#assign departmentDescription = mlxAssetHelperService.fetchAssetCategory(categoryId).getDescription(locale) />
21 <#assign listCategorySorted = listCategorySorted + [{"id":categoryId ,"name": department, "description": departmentDescription, "articles": jobList}] />
22 </#if>
23 </#list>
24
25 <#list listCategorySorted?sort_by("name") as listCategory >
26 <li class="corporate--hhrr--mediabar--item" data-name="${listCategory.id}">
27 <a href="#${listCategory.id}" data-track-tab-name="${listCategory.name}" data-href="listCategory" title="${listCategory.name}" class="corporate--hhrr--mediabar--item--link">${listCategory.name}</a>
28 </li>
29 </#list>
30 </ul>
31 </div>
32
33 <script>
34 //intersectionObserver para destacar pestaña según el contenedor que envia el evento
35 window.addEventListener("load", function () {
36 var scrollingClickTab = false;
37
38 var mediabar =
39 mecalux.sliders.items[
40 mecalux.sliders.getSliderIndexByClass(
41 "corporate--hhrr--mediabar"
42 )
43 ];
44 if (typeof mediabar !== "undefined") {
45 var sliderMediabar = mediabar.slider;
46 }
47 if ("IntersectionObserver" in window) {
48 var observerOptions = {
49 root: null,
50 rootMargin: "0px",
51 threshold: 0,
52 };
53
54var sections = Array.from(
55 mecalux.cache.$body.find(".corporate--hhrr--offers--container, .corporate--hhrr--software-offers--container")
56 );
57 var navItems = {};
58
59 var items = Array.from(mecalux.cache.$body.find(".corporate--hhrr--mediabar--item"));
60 items.forEach(function (item) {
61 navItems[item.getAttribute("data-name")] = item;
62 });
63
64 function observerCallback(entries, observer) {
65 entries.forEach(function (entry) {
66 // Si item entra en la vista
67 if (entry.isIntersecting && scrollingClickTab == false) {
68 var navItem = navItems[entry.target.children[0].id];
69
70 if (navItems[entry.target.children[0].id]) {
71 navItem.classList.add("active");
72
73 Object.values(navItems).forEach(function (item) {
74 if (item != navItem) {
75 item.classList.remove("active");
76 }
77 });
78
79 if (typeof sliderMediabar !== "undefined") {
80 sliderMediabar.goTo(
81 entry.target.getAttribute("data-navbar")
82 );
83 }
84 }
85 }
86 });
87 }
88
89 function calculateThreshold(obj) {
90 if (obj.offsetHeight < document.body.offsetHeight) {
91 return 0;
92 } else {
93 return Math.min(
94 document.body.offsetHeight / obj.offsetHeight,
95 0.2
96 );
97 }
98 }
99
100 sections.forEach(function (sec) {
101 var calculatedThreshold = calculateThreshold(sec);
102 observerOptions.threshold = calculatedThreshold;
103 var observer = new IntersectionObserver(
104 observerCallback,
105 observerOptions
106 );
107 observer.observe(sec);
108 });
109 } else {
110 var sections = Array.from(
111 mecalux.cache.$body.find(".corporate--hhrr--offers--container, .corporate--hhrr--software-offers--container")
112 );
113 var stickyHeight = mecalux.cache.$body.find("#stickyHeader").offsetHeight + mecalux.cache.$body.find(".corporate--hhrr--mediabar").offsetHeight;
114 var actualNavSelected = null;
115
116 function navMenuScrollControl() {
117 var mediabar =
118 mecalux.sliders.items[
119 mecalux.sliders.getSliderIndexByClass(
120 "corporate--hhrr--mediabar"
121 )
122 ];
123 if (typeof mediabar !== "undefined") {
124 var sliderMediabar = mediabar.slider;
125 }
126 var scroll = window.pageYOffset + stickyHeight;
127 var navSelected = null;
128 sections.forEach(function (section) {
129 if (section.dataset.navbar) {
130 if (scroll > section.offsetTop - stickyHeight) {
131 navSelected = section.children[0].id;
132 }
133 }
134 });
135
136 if (actualNavSelected != navSelected) {
137 var activeNavItem = document.querySelector(
138 "a[href*='#" + actualNavSelected + "']"
139 );
140 var selectedNavItem = document.querySelector(
141 "a[href*='#" + navSelected + "']"
142 );
143 if (activeNavItem) {
144 activeNavItem.parentElement.classList.remove("active");
145 }
146 if (selectedNavItem) {
147 selectedNavItem.parentElement.classList.add("active");
148 }
149 if (typeof sliderMediabar !== "undefined") {
150 sliderMediabar.goTo(
151 mecalux.cache.$body.find("#" + navSelected)
152 .parentElement.getAttribute("data-navbar")
153 );
154}
155 actualNavSelected = navSelected;
156 }
157 }
158 window.addEventListener(
159 "scroll",
160 mecalux.tools.throttle(navMenuScrollControl, 200)
161 );
162 }
163
164 /* init ajuste clic tabs */
165 if (mecalux.cache.$body) {
166 var mediabarItems = Array.from(mecalux.cache.$body.find(".corporate--hhrr--mediabar--item"));
167 mediabarItems.forEach(function (item) {
168 item.addEventListener("click", function (e) {
169 mediabarItems.forEach(function (navItem) {
170 navItem.classList.remove("active");
171 });
172 e.currentTarget.classList.toggle("active");
173
174 scrollingClickTab = true;
175
176 setTimeout(function(){
177 scrollingClickTab = false;
178 }, 1000);
179 });
180 });
181}
182 /* end ajuste clic tabs */
183
184},
185 false
186);
187 </script>
188
189
190
191 <!--OFERTAS-->
192 <div class="corporate--hhrr--offers">
193
194 <#assign dataNavBar = 0 />
195
196 <#list listCategorySorted?sort_by("name") as listCategory >
197 <#if listCategory.articles?has_content >
198 <#assign jobVacancies = listCategory.articles />
199 <#assign department = listCategory.name />
200 <#assign departmentDescription = listCategory.description />
201
202 <#if listCategory.id == 396131>
203 <#assign softwareClass = "-software" />
204 <div class="corporate--hhrr--software-offers">
205 <div class="corporate--hhrr--software-offers--container" data-navBar="${dataNavBar}">
206 <#else>
207 <#assign softwareClass = "" />
208 <div class="corporate--hhrr--offers--container" data-navBar="${dataNavBar}" data-js="slider" data-js-type="tiny-slider" data-js-config='{"container": ".slider-${listCategory.id}", "loop": false, "navPosition": "bottom", "mouseDrag": "true", "items":1,"gutter":20, "controlsText": ["",""], "responsive": {"600": {"items":1},"750": {"items":2},"1280": {"items":3,"gutter": 30}}}'>
209 </#if>
210 <span id="${listCategory.id}" class="corporate--hhrr--offers--nav-anchor"></span>
211 <div class="corporate--hhrr-${softwareClass!}-offers--row">
212
213 <div class="corporate--hhrr-${softwareClass!}-offers-column" style="flex: 1 1 100%;">
214 <h3 class="corporate--hhrr-${softwareClass!}-offers--title">${department}</h3>
215 <span class="corporate--hhrr-${softwareClass!}-offers--pill">${jobVacancies?size}</span>
216 <p class="corporate--hhrr-${softwareClass!}-offers--subtitle">${departmentDescription}</p>
217 </div>
218
219 <#if listCategory.id == 396131>
220 <#assign softwareVideoMasterId = 6013 />
221 <#assign articleVid = mlxMastersHelperService.getJournalArticleByMasterAndGroup(softwareVideoMasterId, groupId)!{} />
222 <#if articleVid?has_content>
223 <#assign article_content = mlxJournalHelperService.getStructureFieldValue(articleVid,"content","${locale}") />
224 ${article_content}
225 </#if>
226 </#if>
227
228 </div>
229
230 <div class="corporate--hhrr-${softwareClass!}-offers--slider slider-${listCategory.id}">
231 <#list jobVacancies as jobVacancy >
232 <#assign articleValues = mlxJournalHelperService.getStructureFieldValues(jobVacancy,"${locale}") />
233 <#assign name = (articleValues["name"])!"" />
234 <#assign description = (articleValues["short_description"])!""/>
235 <#assign asseturl = mlxUrlUtilService.getUrlByJournalArticle(jobVacancy, "${locale}", groupId)?string />
236 <#assign location = (articleValues["location"])!"" />
237 <article class="corporate--hhrr-${softwareClass!}-offers--item">
238 <div class="corporate--hhrr-${softwareClass!}-offers--item-card">
239 <div class="corporate--hhrr-${softwareClass!}-offers--item-wrapper">
240 <a href="${asseturl}" title="${name} - ${location}" class="corporate--hhrr-${softwareClass!}-offers--item-link">
241 <h4 class="corporate--hhrr-${softwareClass!}-offers--item-heading">${name} - ${location}</h4>
242 </a>
243 <p class="corporate--hhrr-${softwareClass!}-offers--item-description">${description}</p>
244 </div>
245 </div>
246 </article>
247 </#list>
248 </div>
249 <#if listCategory.id == 396131>
250 </div>
251 </#if>
252 </div>
253 <#assign dataNavBar = dataNavBar + 1 />
254 </#if>
255 </#list>
256 </div>
257
258<#else>
259
260 <!--SIN OFERTAS-->
261 <div class="corporate--section">
262 <p class="corporate--content--paragraph"><@corporate.mlxlanguage key="mlx.jobvacancy.no-vacancies" /></p>
263 </div>
264
265</#if>
266
267<#assign jsPath="/o/corporate-theme/js/mecalux/mecalux.rrhh.js" />
268<#assign cdn= mlxUrlUtilService.getCdn(groupId)/>
269<#if ("${cdn!}" == "") >
270 <#assign cdn = "" />
271</#if>
272<#assign jsPath = "${cdn}${jsPath}" />
273
274
275<style> /*FIX POSICIÓN ANCHORS NAVBAR*/
276 .corporate--hhrr--offers--container, .corporate--hhrr--software-offers {
277 position:relative;
278 }
279 .corporate--hhrr--offers--nav-anchor {
280 position:absolute;
281 top:-150px;
282 }
283
284 .corporate--hhrr--offers--container, .corporate--hhrr--software-offers--container { /* MKTG-1073: No permitir tamaños tan pequeños de secciones, causa problemas en intersection observer*/
285 min-height: 575px;
286 }
287
288</style>
CHAQUE JOUR MEILLEUR
On innove
Nous travaillons chaque jour pour améliorer les processus qui permettent à nos clients de se développer sereinement.
On dirige
Nous recherchons l'excellence dans tout ce que nous entreprenons.
On s'adapte
Nous transformons les contraintes de nos clients en avantages.
On s'engage
Nos valeurs morales, durables et transparentes nous accompagnent chaque jour dans la recherche de l'excellence.