An error occurred while processing the template.
Java method "jdk.proxy3.$Proxy100.getLayout(long)" threw an exception when invoked on jdk.proxy3.$Proxy100 object "com.liferay.layout.internal.service.LayoutLocalServiceWrapper@6c808cb0"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign parentLayout = layoutLocalSer...  [in template "42020#42061#231039412" at line 89, column 25]
----
1<#--CONFIGURAR EL NAVIGATION MENU PARA QUE MUESTRE EL MENÚ DE LA PÁGINA PADRE A LA ACTUAL --> 
2<#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")> 
3<#if entries?has_content> 
4	<div class="inner-page__header"> 
5		<div class="row mx-0"> 
6			<div class="col-sm-6 px-0"> 
7				<div class="inner-page__header-subnavigation"> 
8					<#-- Obtengo la página actual y la padre de la actual --> 
9					<#list entries as navigationEntry> 
10						<#if navigationEntry.isSelected()> 
11							<#assign currentEntry = navigationEntry> 
12							<#-- Obtengo toda la lista de ancestros del nodo y la recorro en reverse, la raiz primero --> 
13							<#list currentEntry.getLayout().getAncestors()?reverse as itemLayout> <#-- Tipo Layout --> 
14								<#if itemLayout?index == 0><#-- Este es título superior de la página correspoondiente al nivel 1--> 
15									<p class="inner-page__header-parent">${itemLayout.getName(locale)}</p> 
16								<#elseif itemLayout?index == 1><#-- Este es el título principal de la página nivel 2, correspondiente al segundo nivel, está también más abajo --> 
17									<p class="inner-page__header-title js-toggle-subnavigation">${itemLayout.getName(locale)}</p> 
18								<#elseif itemLayout?index == 2> 
19									<#assign third = itemLayout> 
20								</#if> 
21								<#if itemLayout?index == 1 && itemLayout.getParentPlid()??  || currentEntry.getLayout().getAncestors()?size == 1> 
22									<#if currentEntry.getLayout().getAncestors()?size == 1> 
23										<#assign parentLayout = layoutLocalService.getLayout(currentEntry.getLayout().getParentPlid())> 
24										<#-- Este es el título principal de la página, correspondiente al segundo nivel, está también más abajo --> 
25										<#-- Si el entry seleccionado coincide con este nivel se pintará aquí, en vez de arriba --> 
26										<p class="inner-page__header-title js-toggle-subnavigation">${currentEntry.getLayout().getName(locale)}</p> 
27									<#else> 
28										<#assign parentLayout = layoutLocalService.getLayout(itemLayout.getParentPlid())> 
29									</#if> 
30									<#if parentLayout.hasChildren()> 
31										<#-- Lista de enlaces hermanos del nivel 2 --> 
32										<ul class="subnavigation"> 
33											<#list parentLayout.getChildren() as childrenLayout> 
34												<#if currentEntry.getLayout().getPlid() != childrenLayout.getPlid() && !childrenLayout.isChildSelected(true, currentEntry.getLayout()) && !childrenLayout.isHidden()> 
35													<#if !childrenLayout.getLayoutType().isBrowsable() && childrenLayout.hasChildren() > 
36														<li><a href="${getUrlPageSet(childrenLayout)}" data-senna-off="true">${childrenLayout.getName(locale)}</a></li> 
37													<#else> 
38														<li><a href="${getFriendlyURL(childrenLayout)}" data-senna-off="true">${childrenLayout.getName(locale)}</a></li> 
39													</#if> 
40												</#if> 
41											</#list> 
42										</ul> 
43									</#if> 
44								</#if> 
45							</#list> 
46						</#if> 
47					</#list> 
48				</div> 
49			</div> 
50			<div class="col-sm-6 px-0"> 
51				<div class="inner-page__header-image"> 
52					<#assign hashPreferences = {"displayStyle":"full-content", 
53												"enableRelatedAssets":"false", 
54												"enableRss":"false", 
55												"enableRatings":"false", 
56												"showMetadataDescriptions":"false", 
57												"enableFlags":"false", 
58												"showAddContentButton":"false", 
59												"subtypeFieldsFilterEnabledDLFileEntryAssetRendererFactory":"false", 
60												"showExtraInfo":"false", 
61												"showOnlyLayoutAssets":"false", 
62												"enableSocialBookmarks":"false", 
63												"showContextLink":"false", 
64												"enableCommentRatings":"false", 
65												"enablePrint":"false", 
66												"showAssetTitle":"false", 
67												"delta":1}/> 
68					<#assign preferences = freeMarkerPortletPreferences.getPreferences(hashPreferences) /> 
69					<@liferay_portlet["runtime"] 
70						defaultPreferences="${preferences}" 
71						portletName="com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet" 
72						instanceId="cabecera_imagen_prueba_4_${themeDisplay.getPortletDisplay().getInstanceId()}" 
73					/> 
74 
75				</div> 
76			</div> 
77		</div> 
78 
79		<#-- Cuando hay 4 niveles, se guarda la referencia de ancestro en la variable third para pintarla aquí --> 
80		<#if third??> 
81			<#assign currentLayout = third> 
82			<#assign parentLayout = layoutLocalService.getLayout(currentLayout.getParentPlid())> 
83			<@printChildrens parentLayout, currentLayout > </@printChildrens> 
84		</#if> 
85 
86		<#-- Siempre que haya más de 3 niveles o más, se pinta el elemento actual con sus hermanos.--> 
87		<#if currentEntry??> 
88			<#assign currentLayout = currentEntry.getLayout()> 
89			<#assign parentLayout = layoutLocalService.getLayout(currentLayout.getParentPlid())> 
90			<@printChildrens parentLayout, currentLayout > </@printChildrens> 
91 
92			<#-- Se pinta los hijos porque puede que el padre sea una página en sí --> 
93			<#if currentEntry.hasChildren()> 
94				<#assign currentLayout = currentEntry.getLayout()/> 
95				<#assign parentLayout = currentEntry.getLayout()> 
96				<@printChildrens parentLayout, currentLayout > </@printChildrens> 
97			</#if> 
98		</#if> 
99	</div> 
100 
101</#if> 
102 
103<#macro printChildrens parentLayout, currentLayout> 
104	<#if parentLayout.hasChildren() && currentEntry.getLayout().getAncestors()?size gt 1> 
105		<div class="inner-page__menu"> 
106			<div class="container"> 
107				<div class="col-sm-12 px-0"> 
108					<#assign childSelected = layout.getName(locale) /> 
109					<#list parentLayout.getChildren() as childrenLayout> 
110						<#if currentLayout.getPlid() == childrenLayout.getPlid()> 
111							<#assign childSelected = childrenLayout.getName(locale) /> 
112						</#if> 
113					</#list> 
114 
115					<p class="subnavigation-button js-toggle-subnavigation2">${childSelected}</p> 
116					<div class="inner-page__navigation subnavigation2"> 
117						<#list parentLayout.getChildren() as childrenLayout> 
118							<#if !childrenLayout.isHidden() > 
119								<#-- Pinta uno u otro dependiendo con class active si es el seleccionado o externo si el enlace es a fuera--> 
120								<#if currentLayout.getPlid() != childrenLayout.getPlid()> 
121									<#if childrenLayout.isTypeURL()> 
122										<a href="${getFriendlyURL(childrenLayout)}" class="extern" target="_blank" >${childrenLayout.getName(locale)}</a> 
123									<#elseif childrenLayout.isTypeLinkToLayout() > 
124										<a href="${getFriendlyURL(childrenLayout.getLinkedToLayout())}" class="">${childrenLayout.getName(locale)}</a> 
125									<#elseif !childrenLayout.getLayoutType().isBrowsable() && childrenLayout.hasChildren() > 
126										<a href="${getUrlPageSet(childrenLayout)}" class="">${childrenLayout.getName(locale)}</a> 
127									<#else> 
128										<a href="${getFriendlyURL(childrenLayout)}" class="">${childrenLayout.getName(locale)}</a> 
129									</#if> 
130								<#else><#-- Este es el activo --> 
131									<#if !childrenLayout.getLayoutType().isBrowsable() && childrenLayout.hasChildren() > 
132										<a href="${getUrlPageSet(childrenLayout)}" class="active hidden-xs">${childrenLayout.getName(locale)}</a> 
133									<#else> 
134										<a href="${getFriendlyURL(childrenLayout)}" class="active hidden-xs">${childrenLayout.getName(locale)}</a> 
135									</#if> 
136								</#if> 
137							</#if> 
138						</#list> 
139					</div> 
140				</div> 
141			</div> 
142		</div> 
143	</#if> 
144</#macro> 
145 
146 
147<#function getFriendlyURL layout> 
148	<#if portalUtil.getLayoutFriendlyURL(layout, themeDisplay)?? > 
149		<#return portalUtil.getLayoutFriendlyURL(layout, themeDisplay) /> 
150	<#else> 
151		<#-- Para páginas de tipo agrupador, se genera la URL de forma manual --> 
152		<#return themeDisplay.getScopeGroup().getPathFriendlyURL(false,themeDisplay) + themeDisplay.getSiteGroup().getFriendlyURL() + layout.getFriendlyURL(locale) /> 
153	</#if> 
154</#function> 
155 
156 
157<#function getUrlPageSet layout> 
158	<#-- Se mira 2 niveles --> 
159	<#assign item = layout.getChildren()?first /> 
160 
161	<#if !item.getLayoutType().isBrowsable() && item.hasChildren()> 
162		<#assign item = item.getChildren()?first /> 
163	</#if> 
164 
165	<#return getFriendlyURL(item)> 
166</#function> 

Sustainable and attractive concession portfolio

We are global leaders in the infrastructure sector, operating in over 20 countries, primarily in Latin America and southern Europe, as well as in anglo spoken strategic markets like the United States, Canada, UK and Australia. Approximately 70% of our revenues and more than 80% of our backlog are originated outside Spain, figures that are growing thanks to our international expansion.

With three areas of activity, Concessions is the engine of the Group, focussed in greenfield projects. The concession portfolio contains more than 60 assets, including hospitals, airports, water assets, and a railway line. We create value throughout the lifecycle of a concession, from the initial market studies to commissioning. Engineering and Infrastructure is focussed in infrastructure development of both, proprietary concessions and civil works. Services include environmental and multi-service activities. It operates mainly in Spain, although it is also present in our key markets.

We are firmly committed with a strong and responsible business model that generates value, where sustainability is the cornerstone of the future.

An important milestone was our Investor Day 2021 at Sacyr Concesiones, where we provided great detail and explanations about the business, the assets, how they work , as well as a valuation of the portfolio. Here you can find the presentation, the portfolio excel valuation as well as the replay of the event in video.

Ejes de actuación

Asistencia Sanitaria

Colaboramos con diferentes fundaciones y ONG que trabajan por el bienestar de personas con cáncer, para prevenir y sensibilizar sobre enfermedades cardiovasculares y contribuimos a la investigación de las enfermedades raras.

Discapacidad

Trabajamos con fundaciones especializadas en discapacidad, con las personas usuarias y con sus familias, favoreciendo su integración y el desarrollo profesional.

Emergencia

Contribuimos a paliar situaciones de emergencia en multitud de países, facilitando el agua potable, mejorando la nutrición e higiene en países en vías de desarrollo y bienestar a personas en situación de fragilidad.

VER TODOS