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@150fc0a4"; 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> 

Commitments

  • Plan and develop our activities in a rational and organized way. To innovate in our processes.
  • Decrease the impact upon the environment and reduce the consumption of natural resources. Acquire products with ecological criteria and promote sustainable consumption.
  • Train our staff and collaborators. Collaborate with suppliers so that the respect to the environment becomes a principle of action. To meet the contractual requirements with our clients in order to achieve their maximum degree of satisfaction. To communicate in a fluent way with all our stakeholders

Our policy

At Sacyr we believe that quality, environmental protection and energy efficiency are fundamental to our activities. We gather these commitments in the quality, environment and energy management Policy, which provides the necessary resources to prevent and mitigate potential or current environmental problems, and improve our performance

Certifications

We have more than 241 certifications, in accordance with more than 25 of the most recognized international standards and validated by accredited reference certifiers. More than 82% of the activities certified in ISO 14001 and 9001

EMAS Certifications

 

 

 

The European Union's system of environmental management and audit [Eco-Management and Audit Scheme, EMAS] is a management tool for companies and other organizations, of voluntary application, that allows to evaluate, manage, improve and share its environmental behavior. It is regulated by the “Regulation (EC) No 1221/2009 of the European Parliament and of the Council of 25 November 2009 on the voluntary participation by organizations in a Community eco-management and audit scheme” and subsequent modifications.

Currently, the Sacyr group has two certifications under this regulation. You can access the environmental statements for each certified service.

D.A. Cleaning and waste collection services of Lérida (ILNET)

D.A. Road cleaning and waste collection services of Majadahonda

D.A. Cleaning and waste collection services of Lérida (ILNET)

D.A. Road cleaning and waste collection services of Majadahonda

D.A. Cleaning and waste collection services of Lérida (ILNET)

D.A. Road cleaning and waste collection services of Majadahonda

Relationship with suppliers

At Sacyr we assume the management of the supply chain as a part of a business model which seeks the progress and growth of the whole value chain. Our commitment is articulated in the supply chain management policy. In 2022 we have included an additional clause in the contracts with third parties, that reinforces the responsible and sustainable behaviour in the value chain. The suppliers are a fundamental part of our activities, and we expect from them the compliance with the applicable legal regulations and of the corporative policies. In 2022, 68,54% of our suppliers met the environmental and social criteria. We also registered that 97,06% of our suppliers are local.

Client satisfaction

Client satisfaction is a priority for the whole company. We analyze the level of conformity of our clients in all the contracts annually. In the case of the construction activity, it is analyzed after the execution of the construction. In 2022 we obtained an average score of 4.20.

Memberships
and collaborations

Spanish Quality association

SEOPAN’s environment and quality commission

Spanish Road technology platform (PTC)

Spanish green growth group

Publication

Integrated Sustainability Report

Learn more about our management and performance in matters of sustainability.

Read more