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'emploi
TRAVAILLEZ AVEC NOUS
La Anónima

Mecalux : 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.

Impacto social

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

realidad virtualLa Anónima

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 BIG DATA
  • CLOUD COMPUTING CLOUD COMPUTING
  • INTERNET DES OBJETS INTERNET DES OBJETS
  • SIMULATION DES PROCESSUS SIMULATION DES PROCESSUS
  • INTELLIGENCE ARTIFICIELLE INTELLIGENCE ARTIFICIELLE
  • MACHINE LEARNING MACHINE LEARNING
  • ANALYSE PRÉDICTIVE ANALYSE PRÉDICTIVE
  • REALITÉ VIRTUELLE REALITÉ VIRTUELLE
La Anónima

Mecalux : participez au changement

Découvrez les opportunités de carrière chez Mecalux et contribuez au changement de la logistique.

  1. 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.

  2. 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.

  3. 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.

Une erreur s'est produite lors du traitement du modèle.
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.