Huertos familiares y mesones de cocina mejoran la calidad de vida de comunidades en Cotopaxi
Ver más
Más de 10 mil habitantes de Colón, en la provincia de Manabí, ya cuentan con agua potable y alcantarillado
Ver más
La inteligencia artificial llega a Esmeraldas para que pequeños productores de cacao fortalezcan el mercado
Ver más
En Cotacachi, la producción sostenible y el liderazgo de las mujeres fortalecen el territorio
Ver más
Mujeres indígenas y campesinas de Chimborazo fortalecen su empoderamiento
Ver más
Inauguración de la nueva Sala de Estimulación Temprana en el CERI 5 de Cuenca
Ver más
La Oficina de la Cooperación Española en Ecuador, funcionalmente dependiente de la Agencia Española de Cooperación Internacional para el Desarrollo (AECID), fue abierta en la ciudad de Quito en 1987 y desde entonces ha mantenido un profundo compromiso con la mejora de las capacidades de desarrollo del país sirviendo como punto de referencia para la articulación de las actuaciones españolas en materia de cooperación para el desarrollo sostenible, la acción humanitaria y la educación para el desarrollo sostenible y la ciudadanía global.
Apartado del anuncio: OCE Ecuador
Fecha de publicación de la noticia 15/05/2026
Título del anuncio: Contratación para auditoría financiera de programa de agua en San Lorenzo
Órgano convocante o anunciante - GAD Municipal del Cantón San Lorenzo
Fecha límite de presentación - 02/06/2026
El GAD Municipal del Cantón San Lorenzo invita a firmas auditoras a presentar ofertas para ejecutar las auditorías financieras anuales (2022-2025) y la auditoría final del programa “AGUA POTABLE Y SANEAMIENTO EN COMUNIDADES RURALES DEL CANTÓN SAN LORENZO FRENTE A LA CRISIS SANITARIA DEL COVID-19 (ECU-052-B)”, financiado por la AECID a través del Fondo de Cooperación para Agua y Saneamiento (FCAS).
Requisitos mínimos de la firma auditora:
- Experiencia general mínima: 1 consultoría en el sector público en los últimos 20 años.
- Experiencia específica mínima: 1 consultoría en auditorías externas en proyectos de cooperación en los últimos 20 años.
- Personal técnico mínimo: Jefe de equipo, Supervisor de auditoría y Apoyo de auditoría (títulos en contabilidad y auditoría o afines), con experiencia comprobada en auditorías de estados financieros.
- Registro vigente en la Contraloría General del Estado (Art. 47 de la Ley Orgánica de Empresas Públicas).
Presentación de ofertas:
Exclusivamente a través del portal SERCOP.
Fecha límite: 2 de junio de 2026 a las 13h00.
Contacto
SERCOP
Failed to "?eval" string with this error:
---begin-message---
Syntax error in ?eval-ed string in line 1, column 57:
Lexical error: encountered "u" (117), after "\"Beneficiaria del proyecto \\".
---end-message---
The failing expression:
==> imgGSJSON?eval [in template "20096#20122#6710710" at line 47, column 43]
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign imgObj = imgGSJSON?eval [in template "20096#20122#6710710" at line 47, column 25]
----
1<#assign urlCodec = staticUtil["com.liferay.portal.kernel.util.URLCodec"] />
2
3<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
4<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
5<#assign journalArticleResourceLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleResourceLocalService") />
6<#assign publicPath = themeDisplay.getPathFriendlyURLPublic() />
7<#assign siteFriendlyURL = themeDisplay.getSiteGroup().getFriendlyURL() />
8<#assign currentUrlEncoded = urlCodec.encodeURL(themeDisplay.getURLCurrent()) />
9
10
11<#if entries?has_content>
12<div class="contCardsNoticias py-50 py-lg-100">
13 <div class="container aecid-content px-3 px-lg-0">
14 <h2 class="tit-h4 pb-5 pb-lg-6 txt-medi txt-uppercase">${languageUtil.get(locale, "ultimas.noticias")}</h2>
15 <div class="col-12 p-0">
16 <div class="row justify-content-between carouselNoticiasCards" id="carouselNoticiasCards">
17 <#list entries as curEntry>
18 <#assign
19 curEntry = curEntry
20 renderer = curEntry.getAssetRenderer()
21 entryTitle = htmlUtil.escape(renderer.getTitle(locale))
22 viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, renderer, curEntry, !stringUtil.equals(assetLinkBehavior, "showFullContent"))/>
23
24<#-- <#assign renderer=curEntry.getAssetRenderer() article=renderer.getArticle()
25 articleId=article.getId() journalArticle=renderer.getAssetObject() />-->
26
27 <#assign journalArticle = renderer.getArticle()/>
28 <#assign document = saxReaderUtil.read(journalArticle.getContentByLocale(locale.toString())) />
29 <#assign entryTitle = htmlUtil.escape(renderer.getTitle(locale))/>
30 <#assign entryResumen = htmlUtil.escape(renderer.getSummary())/>
31 <#assign articleId = journalArticle.getArticleId() />
32 <#assign sitio = curEntry.getGroupId() />
33
34
35 <#assign imgGS = document.valueOf("//dynamic-element[@field-reference='image']/dynamic-content/text()") />
36 <#assign imgUuidGS = "" />
37
38 <#if imgGS?? && imgGS?trim != "" && imgGS?trim != "{}">
39 <#-- Limpiar el JSON escapado -->
40 <#assign imgGSJSON = imgGS?replace("\\u2019", "") />
41 <#assign imgGSJSON = imgGS?replace("\\u00e7", "") />
42 <#assign imgGSJSON = imgGS?replace("\\u00b7", "") />
43 <#assign imgGSJSON = imgGS?replace("\\u2013", "-") />
44
45
46 <#-- Evaluar el JSON limpio -->
47 <#assign imgObj = imgGSJSON?eval />
48
49 <#assign imgUuidGS = imgObj.uuid!"" />
50
51 <#if imgUuidGS?has_content>
52 <#assign imgNameGS = imgObj.title!"" />
53 <#assign imgGroupIdGS = imgObj.groupId!"" />
54 <#assign imgAltGS = imgObj.alt!"" />
55 </#if>
56 </#if>
57
58 <!-- para obtener la url de la página de detalle con el articulo correspondiente -->
59 <#assign site = siteFriendlyURL?replace("/", "")>
60
61 <#if themeDisplay??>
62 <#assign siteURL = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent() />
63 <#if siteURL?ends_with("/")>
64 <#assign siteURL = siteURL[0..siteURL?length - 2]>
65 </#if>
66 </#if>
67
68 <#assign linkDetalle = "${siteURL}/actualidad/noticias/detalle-noticias?articulo=${articleId}&sitio=${sitio}&redirect=" + currentUrlEncoded />
69
70 <div class="card cardNoticia parentAssetViewUrl">
71
72 <div class="h-100 d-flex flex-column justify-content-between">
73 <div class="p-0">
74 <#if imgUuidGS?has_content>
75 <div class="card-noticia-img-container">
76 <img class="w-100" alt="${imgAltGS}" src="/documents/${imgGroupIdGS}/0/${imgNameGS}/${imgUuidGS}" /> <#--alt="${imgAltGS}"-->
77 </div>
78 <#else>
79 <div class="card-noticia-img-container">
80 <img class="w-100" alt="Logo de Cooperación Española" src="/documents/d/global/noticias-convocatoria" />
81 </div>
82 </#if>
83 </div>
84
85 <div class="d-flex flex-column justify-content-between contText">
86 <div class="p-0">
87 <#--<#if (title.getData())??>-->
88 <div class="card-text-container">
89 <p class="px-2 title elipsis-2" tabindex="0"><span class="sr-only">${entryTitle}: </span>${entryTitle}</p>
90 </div>
91 <#--</#if>-->
92 </div>
93
94 <div class="row p-0 cajaFechaYenlace px-2 w-100">
95 <div class="col-6 p-0">
96 <p class="mb-0" tabindex="0"><span class="sr-only">${languageUtil.get(locale, "fecha.de.la.noticia")}: </span>${dateUtil.getDate(journalArticle.getDisplayDate(), "dd/MM/yyyy", locale)}</p>
97 </div>
98 <div class="col-6 p-0 text-right">
99 <a class="enlaceNoticia" href="${linkDetalle}" title="Ir a la noticia ${entryTitle}">${languageUtil.get(locale, "leer.mas")}</a>
100 </div>
101 </div>
102 </div>
103 </div>
104 </div>
105 </#list>
106 </div>
107 </div>
108 <div class="text-center mt-6">
109 <#--<a class="btn btn-primary" href="${languageUtil.get(locale, "url.sala.de.prensa")}${languageUtil.get(locale, 'url.noticias')}" title="${languageUtil.get(locale, 'ir.a.la.pagina.donde.se.listan.todos.las.noticias')}">Más noticias</a>-->
110 <a class="btn btn-primary" href="/web${siteFriendlyURL}/actualidad/noticias" title="${languageUtil.get(locale, 'ir.a.la.pagina.donde.se.listan.todos.las.noticias')}">${languageUtil.get(locale, "mas.noticias")}</a>
111
112 </div>
113 </div>
114</div>
115</#if>
116
117<script type="text/javascript" data-senna-track="temporary">
118 $(document).ready(function () {
119 $('#carouselNoticiasCards').not('.slick-initialized').slick({
120 arrows: false,
121 dots: false,
122 slidesToShow: 3,
123 slidesToScroll: 2,
124 responsive: [
125 {
126 breakpoint: 991,
127 settings: {
128 slidesToShow: 2,
129 slidesToScroll: 1,
130 infinite: true,
131 dots: true
132 }
133 },
134 {
135 breakpoint: 768,
136 settings: {
137 slidesToShow: 1,
138 slidesToScroll: 1,
139 dots: true
140 }
141 }
142 ]
143 });
144 });
145</script>