¿Qué supone para los vecinos de San Jerónimo (Colombia) la nueva doble calzada entre el Túnel de Occidente y su municipio?
Habilitamos al tráfico 19 kilómetros la Unidad Funcional 1 dentro del proyecto Autopista al Mar 1.
Lideramos el sector infraestructuras en Colombia
Sacyr se constituyó como una empresa colombiana de origen español, con una inversión cercana a los 3 mil millones de dólares. Estamos firmemente comprometidos con el desarrollo de la infraestructura del país, donde desarrollamos más de diez iniciativas entre concesiones e ingeniería.
Apostamos por el talento local para la ejecución de más de 500 kilómetros de vías y obras civiles, que han permitido mejorar la conectividad y el desarrollo económico en todo el territorio colombiano.

En datos
+520
KILÓMETROS
De vías concesionadas
+370
HECTÁREAS
Hábitats protegidos y/o restaurados
+3.000
MILLONES DE DÓLARES
De inversión directa
Mejoramos la calidad de vida de los colombianos
En 2012, consolidamos nuestra posición con el inicio de los primeros proyectos viarios. Actualmente, contamos con más de diez en todo el territorio nacional y estamos pendientes de nuevas oportunidades de negocio.
Nuestra presencia en Colombia ha generado más de 13.000 empleos en las áreas de influencia, brindando a nuestros empleados la posibilidad de mejorar sus habilidades y crecer profesionalmente.
The following has evaluated to null or missing:
==> JournalArticleLocalService.fetchLatestArticle(groupId, reserved\-article\-id.data, statusApproved) [in template "42020#42061#163037" at line 13, column 27]
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign journalArticle = JournalArtic... [in template "42020#42061#163037" at line 13, column 1]
----
1<#--
2Plantilla de apoyo para pintar los proyectos relacionados en pais en forma de pastilla
3-->
4
5<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
6<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")/>
7<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")/>
8<#assign assetLinkLocalService = serviceLocator.findService("com.liferay.asset.link.service.AssetLinkLocalService") />
9<#assign assetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")>
10
11
12<#assign statusApproved = 0>
13<#assign journalArticle = JournalArticleLocalService.fetchLatestArticle(groupId, reserved\-article\-id.data, statusApproved)>
14<#assign entry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", journalArticle.getResourcePrimKey())/>
15<#assign categories = assetCategoryLocalService.getEntryCategories(entry.getEntryId())>
16
17<#assign VOC_TIPO_PROYECTO = "SACYR_GLOBAL_TIPO_PROYECTO">
18
19
20<#list categories as category>
21 <#assign voc = assetVocabularyLocalService.getAssetVocabulary(category.getVocabularyId())>
22
23 <#if voc.getName()?lower_case == VOC_TIPO_PROYECTO?lower_case>
24 <#assign categoryName = category.getTitle(locale) />
25 <#break>
26 </#if>
27
28</#list>
29
30<#assign currentArticleRelatedLinks = assetLinkLocalService.getDirectLinks(entry.getEntryId()) />
31
32<div class="box-container">
33 <div class="text-media-box">
34 <#if codigoVideo?? && codigoVideo.getData()?? && codigoVideo.getData() != "">
35 <button class="multimedia multimedia-video" data-toggle="modal" data-target="#videoX3_${randomNamespace}">
36 <span class="icon icon-play-b-ig small"></span>
37 <#if imagenDesktop.getData()?? && imagenDesktop.getData() != "">
38 <img class="img-desktop" alt="${imagenDesktop.getAttribute("alt")}" data-fileentryid="${imagenDesktop.getAttribute("fileEntryId")}" src="${imagenDesktop.getData()}" />
39 </#if>
40 </button>
41 <#else>
42 <div class="multimedia">
43 <#if imagenDesktop.getData()?? && imagenDesktop.getData() != "">
44 <img class="img-desktop" alt="${imagenDesktop.getAttribute("alt")}" data-fileentryid="${imagenDesktop.getAttribute("fileEntryId")}" src="${imagenDesktop.getData()}" />
45 </#if>
46 </div>
47 </#if>
48
49 <div class="text">
50 <p class="tagline text-uppercase">${categoryName}</p>
51 <h3 class="title"><a href="${themeDisplay.getScopeGroup().getDisplayURL(themeDisplay,false)}/-/${reserved\-article\-url\-title.get("data")}">${titulo.getData()}</a></h3>
52
53 <#if (currentArticleRelatedLinks?size > 0)>
54 <#list currentArticleRelatedLinks as related_entry>
55 <#assign relatedAssetEntryId = related_entry.getEntryId2() />
56 <#assign relatedAssetEntry = assetEntryLocalService.getEntry(relatedAssetEntryId) />
57 <#assign relatedAssetEntryPrimKey = relatedAssetEntry.getClassPK() />
58 <#assign relatedArticle = JournalArticleLocalService.getLatestArticle(relatedAssetEntryPrimKey) />
59 <#assign relatedArticleId = relatedArticle.getArticleId() />
60 <#assign currentRelatedArticle = JournalArticleLocalService.getArticle(groupId, relatedArticleId) />
61
62 <#assign docXml = saxReaderUtil.read(relatedArticle.getContentByLocale(locale.toString())) />
63 <#assign countryName = docXml.getRootElement().selectSingleNode("//dynamic-element[@name='nombre']") />
64
65 <div class="location">
66 <span class="icon-location"></span>
67 <a href="${themeDisplay.getScopeGroup().getDisplayURL(themeDisplay,false)}/-/${currentRelatedArticle.getUrlTitle()}">${countryName.getStringValue()}</a>
68 </div>
69 </#list>
70 </#if>
71 </div>
72 </div>
73</div>
74
75<#if codigoVideo?? && codigoVideo.getData()?? && codigoVideo.getData() != "">
76 <div class="modal fade modal-video" id="videoX3_${randomNamespace}" role="dialog">
77 <div class="modal-dialog modal-lg modal-dialog-centered">
78 <div class="modal-content">
79 <div class="modal-header">
80 <button type="button" class="close" data-dismiss="modal">×</button>
81 </div>
82 <div class="modal-body">
83 <iframe width="420" height="315" src="${codigoVideo.getData()}"></iframe>
84 </div>
85 </div>
86 </div>
87 </div>
88</#if>
The following has evaluated to null or missing:
==> JournalArticleLocalService.fetchLatestArticle(groupId, reserved\-article\-id.data, statusApproved) [in template "42020#42061#163037" at line 13, column 27]
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign journalArticle = JournalArtic... [in template "42020#42061#163037" at line 13, column 1]
----
1<#--
2Plantilla de apoyo para pintar los proyectos relacionados en pais en forma de pastilla
3-->
4
5<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
6<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")/>
7<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")/>
8<#assign assetLinkLocalService = serviceLocator.findService("com.liferay.asset.link.service.AssetLinkLocalService") />
9<#assign assetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")>
10
11
12<#assign statusApproved = 0>
13<#assign journalArticle = JournalArticleLocalService.fetchLatestArticle(groupId, reserved\-article\-id.data, statusApproved)>
14<#assign entry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", journalArticle.getResourcePrimKey())/>
15<#assign categories = assetCategoryLocalService.getEntryCategories(entry.getEntryId())>
16
17<#assign VOC_TIPO_PROYECTO = "SACYR_GLOBAL_TIPO_PROYECTO">
18
19
20<#list categories as category>
21 <#assign voc = assetVocabularyLocalService.getAssetVocabulary(category.getVocabularyId())>
22
23 <#if voc.getName()?lower_case == VOC_TIPO_PROYECTO?lower_case>
24 <#assign categoryName = category.getTitle(locale) />
25 <#break>
26 </#if>
27
28</#list>
29
30<#assign currentArticleRelatedLinks = assetLinkLocalService.getDirectLinks(entry.getEntryId()) />
31
32<div class="box-container">
33 <div class="text-media-box">
34 <#if codigoVideo?? && codigoVideo.getData()?? && codigoVideo.getData() != "">
35 <button class="multimedia multimedia-video" data-toggle="modal" data-target="#videoX3_${randomNamespace}">
36 <span class="icon icon-play-b-ig small"></span>
37 <#if imagenDesktop.getData()?? && imagenDesktop.getData() != "">
38 <img class="img-desktop" alt="${imagenDesktop.getAttribute("alt")}" data-fileentryid="${imagenDesktop.getAttribute("fileEntryId")}" src="${imagenDesktop.getData()}" />
39 </#if>
40 </button>
41 <#else>
42 <div class="multimedia">
43 <#if imagenDesktop.getData()?? && imagenDesktop.getData() != "">
44 <img class="img-desktop" alt="${imagenDesktop.getAttribute("alt")}" data-fileentryid="${imagenDesktop.getAttribute("fileEntryId")}" src="${imagenDesktop.getData()}" />
45 </#if>
46 </div>
47 </#if>
48
49 <div class="text">
50 <p class="tagline text-uppercase">${categoryName}</p>
51 <h3 class="title"><a href="${themeDisplay.getScopeGroup().getDisplayURL(themeDisplay,false)}/-/${reserved\-article\-url\-title.get("data")}">${titulo.getData()}</a></h3>
52
53 <#if (currentArticleRelatedLinks?size > 0)>
54 <#list currentArticleRelatedLinks as related_entry>
55 <#assign relatedAssetEntryId = related_entry.getEntryId2() />
56 <#assign relatedAssetEntry = assetEntryLocalService.getEntry(relatedAssetEntryId) />
57 <#assign relatedAssetEntryPrimKey = relatedAssetEntry.getClassPK() />
58 <#assign relatedArticle = JournalArticleLocalService.getLatestArticle(relatedAssetEntryPrimKey) />
59 <#assign relatedArticleId = relatedArticle.getArticleId() />
60 <#assign currentRelatedArticle = JournalArticleLocalService.getArticle(groupId, relatedArticleId) />
61
62 <#assign docXml = saxReaderUtil.read(relatedArticle.getContentByLocale(locale.toString())) />
63 <#assign countryName = docXml.getRootElement().selectSingleNode("//dynamic-element[@name='nombre']") />
64
65 <div class="location">
66 <span class="icon-location"></span>
67 <a href="${themeDisplay.getScopeGroup().getDisplayURL(themeDisplay,false)}/-/${currentRelatedArticle.getUrlTitle()}">${countryName.getStringValue()}</a>
68 </div>
69 </#list>
70 </#if>
71 </div>
72 </div>
73</div>
74
75<#if codigoVideo?? && codigoVideo.getData()?? && codigoVideo.getData() != "">
76 <div class="modal fade modal-video" id="videoX3_${randomNamespace}" role="dialog">
77 <div class="modal-dialog modal-lg modal-dialog-centered">
78 <div class="modal-content">
79 <div class="modal-header">
80 <button type="button" class="close" data-dismiss="modal">×</button>
81 </div>
82 <div class="modal-body">
83 <iframe width="420" height="315" src="${codigoVideo.getData()}"></iframe>
84 </div>
85 </div>
86 </div>
87 </div>
88</#if>