{"id":150,"date":"2026-06-02T20:44:40","date_gmt":"2026-06-02T20:44:40","guid":{"rendered":"https:\/\/citlaltepetl.gob.mx\/portal\/?p=150"},"modified":"2026-06-02T21:00:31","modified_gmt":"2026-06-02T21:00:31","slug":"presupuesto-aprobado-de-egresos","status":"publish","type":"post","link":"https:\/\/citlaltepetl.gob.mx\/portal\/presupuesto-aprobado-de-egresos\/","title":{"rendered":"2.PRESUPUESTO APROBADO DE EGRESOS"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"150\" class=\"elementor elementor-150\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-091d440 e-flex e-con-boxed e-con e-parent\" data-id=\"091d440\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b046b37 elementor-widget elementor-widget-heading\" data-id=\"b046b37\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Informaci\u00f3n financiera que se\u00f1ala la LGCG<\/h3>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4ffc9d8 e-con e-atomic-element e-flexbox-base e-f394923 \" data-id=\"4ffc9d8\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"4ffc9d8\" data-e-type=\"e-flexbox\" data-id=\"4ffc9d8\">\n    \t\t<div class=\"elementor-element elementor-element-22fdc23 elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"22fdc23\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Art\u00edculo 56.- La generaci\u00f3n y publicaci\u00f3n de la informaci\u00f3n financiera de los entes p\u00fablicos a que se refiere este T\u00edtulo, se har\u00e1 conforme a las normas, estructura, formatos y contenido de la informaci\u00f3n, que para tal efecto establezca el consejo y difundirse en la p\u00e1gina de Internet del respectivo ente p\u00fablico. Dicha informaci\u00f3n podr\u00e1 complementar la que otros ordenamientos jur\u00eddicos aplicables ya disponen en este \u00e1mbito para presentarse en informes peri\u00f3dicos y en las cuentas p\u00fablicas. Asimismo, la informaci\u00f3n se difundir\u00e1 en los medios oficiales de difusi\u00f3n en t\u00e9rminos de las disposiciones aplicables.<br \/>Art\u00edculo.76.- Los municipios, las demarcaciones territoriales de la Ciudad de M\u00e9xico y en su caso, las entidades federativas, previo convenio de colaboraci\u00f3n administrativa, difundir\u00e1n en internet la informaci\u00f3n relativa al Fondo de Aportaciones para el fortalecimiento C\u00f3mo se pronuncia de los municipios y de las demarcaciones territoriales de la Ciudad de M\u00e9xico, especificando cada uno de los destinos se\u00f1alados para dicho fondo en la Ley de Coordinaci\u00f3n Fiscal.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-3843236 e-flex e-con-boxed e-con e-parent\" data-id=\"3843236\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d0903cc elementor-widget elementor-widget-shortcode\" data-id=\"d0903cc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><!-- FONT AWESOME -->\r\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.5.0\/css\/all.min.css\">\r\n\r\n<!-- PAPA PARSE -->\r\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/PapaParse\/5.4.1\/papaparse.min.js\"><\/script>\r\n<style>\r\n:root{\r\n  --verde:#1D4947;\r\n  --rojo:#C21A32;\r\n  --dorado:#EFC905;\r\n  --magenta:#B51C58;\r\n\r\n  --fondo:#F8FAFA;\r\n  --texto:#2B2B2B;\r\n  --borde:#DCE4E3;\r\n  --blanco:#FFFFFF;\r\n}\r\n\r\nh2{\r\n  font-size:30px;\r\n  font-weight:700;\r\n  color:var(--verde);\r\n  text-align:center;\r\n  margin:30px 0 25px;\r\n  position:relative;\r\n  letter-spacing:.4px;\r\n}\r\n\r\nh2::after{\r\n  content:\"\";\r\n  display:block;\r\n  width:90px;\r\n  height:4px;\r\n  margin:10px auto 0;\r\n  border-radius:20px;\r\n  background:linear-gradient(\r\n    90deg,\r\n    var(--rojo),\r\n    var(--dorado)\r\n  );\r\n}\r\n\r\n.mes{\r\n  border:1px solid var(--borde);\r\n  border-radius:14px;\r\n  margin-bottom:22px;\r\n  background:#fff;\r\n  padding:8px;\r\n  overflow:hidden;\r\n\r\n  box-shadow:\r\n    0 8px 24px rgba(29,73,71,.08);\r\n\r\n  border-top:5px solid var(--verde);\r\n}\r\n\r\n.accordion{\r\n  background:linear-gradient(\r\n    135deg,\r\n    var(--verde),\r\n    #245b58\r\n  );\r\n\r\n  color:#fff;\r\n  cursor:pointer;\r\n\r\n  padding:15px 22px;\r\n  width:100%;\r\n\r\n  border:none;\r\n  border-radius:10px;\r\n\r\n  font-size:16px;\r\n  font-weight:600;\r\n\r\n  display:flex;\r\n  justify-content:space-between;\r\n  align-items:center;\r\n\r\n  margin-bottom:6px;\r\n\r\n  transition:.25s ease;\r\n}\r\n\r\n.accordion:hover,\r\n.accordion.active{\r\n  background:linear-gradient(\r\n    135deg,\r\n    var(--rojo),\r\n    var(--magenta)\r\n  );\r\n}\r\n\r\n.accordion i{\r\n  transition:transform .3s ease;\r\n}\r\n\r\n.accordion.active i{\r\n  transform:rotate(180deg);\r\n}\r\n\r\n.panel{\r\n  overflow:hidden;\r\n  max-height:0;\r\n\r\n  transition:max-height .4s ease;\r\n\r\n  background:#fff;\r\n  border:1px solid var(--borde);\r\n  border-radius:10px;\r\n\r\n  margin-bottom:12px;\r\n  padding:6px;\r\n}\r\n\r\n.table-wrap{\r\n  overflow-x:auto;\r\n}\r\n\r\ntable{\r\n  width:100%;\r\n  min-width:650px;\r\n  border-collapse:collapse;\r\n  background:#fff;\r\n}\r\n\r\nth,\r\ntd{\r\n  border:1px solid var(--borde);\r\n  padding:11px;\r\n  font-size:14px;\r\n  text-align:center;\r\n}\r\n\r\nth{\r\n  background:linear-gradient(\r\n    135deg,\r\n    var(--verde),\r\n    var(--rojo)\r\n  );\r\n  color:#fff;\r\n  font-weight:600;\r\n}\r\n\r\ntbody tr{\r\n  transition:.2s;\r\n}\r\n\r\ntbody tr:hover{\r\n  background:rgba(29,73,71,.04);\r\n}\r\n\r\n.icon-link{\r\n  display:inline-flex;\r\n  width:38px;\r\n  height:38px;\r\n\r\n  background:var(--rojo) !important;\r\n  color:#fff !important;\r\n\r\n  justify-content:center;\r\n  align-items:center;\r\n\r\n  border-radius:8px;\r\n\r\n  text-decoration:none !important;\r\n\r\n  transition:.25s ease;\r\n\r\n  box-shadow:\r\n    0 4px 10px rgba(194,26,50,.25);\r\n}\r\n\r\n.icon-link:hover,\r\n.icon-link:focus,\r\n.icon-link:active,\r\n.icon-link:visited{\r\n  background:var(--verde) !important;\r\n  color:#fff !important;\r\n  text-decoration:none !important;\r\n  transform:scale(1.08);\r\n}\r\n\r\n#error-msg{\r\n  color:var(--rojo);\r\n  text-align:center;\r\n  font-weight:700;\r\n  margin-top:20px;\r\n}\r\n\r\n@media (max-width:1024px){\r\n\r\n  h2{\r\n    font-size:25px;\r\n  }\r\n\r\n  .accordion{\r\n    font-size:15px;\r\n    padding:13px 18px;\r\n  }\r\n\r\n  th,\r\n  td{\r\n    font-size:13px;\r\n    padding:9px;\r\n  }\r\n}\r\n\r\n@media (max-width:768px){\r\n\r\n  h2{\r\n    font-size:21px;\r\n    margin:20px 0 15px;\r\n  }\r\n\r\n  .mes{\r\n    padding:4px;\r\n  }\r\n\r\n  .accordion{\r\n    font-size:14px;\r\n    padding:11px 14px;\r\n  }\r\n\r\n  .panel{\r\n    padding:4px;\r\n  }\r\n\r\n  table{\r\n    min-width:520px;\r\n  }\r\n\r\n  th,\r\n  td{\r\n    font-size:12px;\r\n    padding:7px;\r\n  }\r\n\r\n  .icon-link{\r\n    width:32px;\r\n    height:32px;\r\n    font-size:13px;\r\n  }\r\n}\r\n\r\n@media (max-width:480px){\r\n\r\n  h2{\r\n    font-size:19px;\r\n  }\r\n\r\n  .accordion{\r\n    font-size:13px;\r\n    padding:10px 12px;\r\n  }\r\n\r\n  th,\r\n  td{\r\n    font-size:11px;\r\n    padding:6px;\r\n  }\r\n\r\n  .icon-link{\r\n    width:28px;\r\n    height:28px;\r\n  }\r\n}\r\n\r\n\/* BLOQUEO TOTAL DE COLORES DE ELEMENTOR *\/\r\n\r\na.icon-link,\r\na.icon-link:visited{\r\n  color:#fff !important;\r\n}\r\n\r\na.icon-link:hover,\r\na.icon-link:focus,\r\na.icon-link:active{\r\n  color:#fff !important;\r\n  background:#1D4947 !important;\r\n}\r\n\r\n.elementor a.icon-link:hover,\r\n.elementor a.icon-link:focus,\r\n.elementor a.icon-link:active,\r\n.elementor-widget-container a.icon-link:hover{\r\n  background:#1D4947 !important;\r\n  color:#fff !important;\r\n}\r\n<\/style>\r\n\r\n\r\n<div id=\"egresos-container\">\r\n  <h2>Presupuesto Aprobado de Egresos<\/h2>\r\n  <div id=\"error-msg\"><\/div>\r\n<\/div>\r\n\r\n<script>\r\n(function(){\r\n\r\n  const containerId = 'egresos-container';\r\n\r\n  const csvUrl = 'https:\/\/docs.google.com\/spreadsheets\/d\/e\/2PACX-1vToifPu9gcA8WjdEk0-wneYsLw71m9GR8qQ96B-rII2SQfQRB0DF_xmhXk-6KIsSg\/pub?output=csv';\r\n\r\n  function obtenerAnio(fecha){\r\n\r\n    if(!fecha) return 'Sin a\u00f1o';\r\n\r\n    fecha = fecha.toString().trim();\r\n\r\n    \/\/ yyyy-mm-dd\r\n    if(fecha.includes('-')){\r\n      return fecha.split('-')[0];\r\n    }\r\n\r\n    \/\/ dd\/mm\/yyyy\r\n    if(fecha.includes('\/')){\r\n      return fecha.split('\/').pop();\r\n    }\r\n\r\n    \/\/ buscar 20xx\r\n    const match = fecha.match(\/20\\d{2}\/);\r\n\r\n    return match ? match[0] : 'Sin a\u00f1o';\r\n  }\r\n\r\n  function createRowHTML(f){\r\n\r\n    const archivoHTML = f.Archivo\r\n      ? `\r\n        <a href=\"${f.Archivo}\" target=\"_blank\" class=\"icon-link\">\r\n          <i class=\"fa-solid fa-cloud-arrow-down\"><\/i>\r\n        <\/a>\r\n      `\r\n      : '';\r\n\r\n    return `\r\n      <tr data-id=\"${f.NombreArchivo}\">\r\n        <td>${f.Fecha}<\/td>\r\n        <td>${f.NombreArchivo}<\/td>\r\n        <td>${f.Tipo}<\/td>\r\n        <td>${archivoHTML}<\/td>\r\n      <\/tr>\r\n    `;\r\n  }\r\n\r\n  function renderAccordion(){\r\n\r\n    document.querySelectorAll('.accordion').forEach(btn=>{\r\n\r\n      btn.removeEventListener('click', btn._clickHandler);\r\n\r\n      btn._clickHandler = function(){\r\n\r\n        const isActive = this.classList.contains('active');\r\n\r\n        document.querySelectorAll('.accordion').forEach(b=>{\r\n\r\n          b.classList.remove('active');\r\n\r\n          b.setAttribute('aria-expanded','false');\r\n\r\n          b.nextElementSibling.style.maxHeight = null;\r\n\r\n        });\r\n\r\n        if(!isActive){\r\n\r\n          this.classList.add('active');\r\n\r\n          this.setAttribute('aria-expanded','true');\r\n\r\n          const panel = this.nextElementSibling;\r\n\r\n          requestAnimationFrame(()=>{\r\n\r\n            panel.style.maxHeight = panel.scrollHeight + 'px';\r\n\r\n          });\r\n\r\n        }\r\n\r\n      };\r\n\r\n      btn.addEventListener('click', btn._clickHandler);\r\n\r\n    });\r\n\r\n  }\r\n\r\n  async function loadData(){\r\n\r\n    const container = document.getElementById(containerId);\r\n\r\n    const errorDiv = document.getElementById('error-msg');\r\n\r\n    try{\r\n\r\n      const res = await fetch(csvUrl);\r\n\r\n      const text = await res.text();\r\n\r\n      const parsed = Papa.parse(text,{\r\n        header:true,\r\n        skipEmptyLines:true\r\n      });\r\n\r\n      const rows = parsed.data\r\n      .filter(r => r.Fecha && r[\"Nombre del documento\"])\r\n      .map(r=>{\r\n\r\n        const fechaStr = r.Fecha?.trim();\r\n\r\n        const nombre = r[\"Nombre del documento\"]?.trim();\r\n\r\n        const tipo = r.Tipo?.trim() || 'Aprobado';\r\n\r\n        const archivo = r.Archivo?.trim();\r\n\r\n        let timestamp = 0;\r\n\r\n        \/\/ convertir fecha\r\n        if(\/^\\d{1,2}\\\/\\d{1,2}\\\/\\d{4}$\/.test(fechaStr)){\r\n\r\n          const parts = fechaStr.split('\/');\r\n\r\n          timestamp = new Date(\r\n            `${parts[2]}-${parts[1]}-${parts[0]}`\r\n          ).getTime();\r\n\r\n        }\r\n\r\n        return {\r\n          Fecha: fechaStr,\r\n          NombreArchivo: nombre,\r\n          Tipo: tipo,\r\n          Archivo: archivo,\r\n          timestamp\r\n        };\r\n\r\n      });\r\n\r\n      if(rows.length === 0){\r\n\r\n        errorDiv.textContent = \"No hay datos v\u00e1lidos.\";\r\n\r\n        return;\r\n\r\n      }else{\r\n\r\n        errorDiv.textContent = '';\r\n\r\n      }\r\n\r\n      \/\/ limpiar anteriores\r\n      document.querySelectorAll('.mes').forEach(el=>el.remove());\r\n\r\n      const dataByYear = {};\r\n\r\n      rows.forEach(f=>{\r\n\r\n        const anio = obtenerAnio(f.Fecha);\r\n\r\n        if(!dataByYear[anio]){\r\n\r\n          dataByYear[anio] = [];\r\n\r\n        }\r\n\r\n        dataByYear[anio].push(f);\r\n\r\n      });\r\n\r\n      Object.keys(dataByYear)\r\n      .sort((a,b)=> b.localeCompare(a))\r\n      .forEach(anio=>{\r\n\r\n        const yearDiv = document.createElement('div');\r\n\r\n        yearDiv.className = 'mes';\r\n\r\n        yearDiv.id = 'anio-' + anio;\r\n\r\n        const btn = document.createElement('button');\r\n\r\n        btn.className = 'accordion';\r\n\r\n        btn.setAttribute('aria-expanded','false');\r\n\r\n        btn.innerHTML = `\r\n          A\u00f1o ${anio}\r\n          <i class=\"fa-solid fa-chevron-down\"><\/i>\r\n        `;\r\n\r\n        yearDiv.appendChild(btn);\r\n\r\n        const panel = document.createElement('div');\r\n\r\n        panel.className = 'panel';\r\n\r\n        const tableWrap = document.createElement('div');\r\n\r\n        tableWrap.className = 'table-wrap';\r\n\r\n        const table = document.createElement('table');\r\n\r\n        const thead = document.createElement('thead');\r\n\r\n        const trHead = document.createElement('tr');\r\n\r\n        ['Fecha','Nombre del documento','Tipo','Archivo']\r\n        .forEach(h=>{\r\n\r\n          const th = document.createElement('th');\r\n\r\n          th.textContent = h;\r\n\r\n          trHead.appendChild(th);\r\n\r\n        });\r\n\r\n        thead.appendChild(trHead);\r\n\r\n        table.appendChild(thead);\r\n\r\n        const tbody = document.createElement('tbody');\r\n\r\n        dataByYear[anio]\r\n        .sort((a,b)=> a.timestamp - b.timestamp)\r\n        .forEach(f=>{\r\n\r\n          tbody.insertAdjacentHTML(\r\n            'beforeend',\r\n            createRowHTML(f)\r\n          );\r\n\r\n        });\r\n\r\n        table.appendChild(tbody);\r\n\r\n        tableWrap.appendChild(table);\r\n\r\n        panel.appendChild(tableWrap);\r\n\r\n        yearDiv.appendChild(panel);\r\n\r\n        container.appendChild(yearDiv);\r\n\r\n      });\r\n\r\n      renderAccordion();\r\n\r\n    }catch(e){\r\n\r\n      errorDiv.textContent = 'Error al cargar CSV.';\r\n\r\n      console.error(e);\r\n\r\n    }\r\n\r\n  }\r\n\r\n  const wait = setInterval(()=>{\r\n\r\n    if(document.getElementById(containerId)){\r\n\r\n      clearInterval(wait);\r\n\r\n      loadData();\r\n\r\n      setInterval(loadData,30000);\r\n\r\n    }\r\n\r\n  },100);\r\n\r\n})();\r\n<\/script><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Informaci\u00f3n financiera que se\u00f1ala la LGCG Art\u00edculo 56.- La generaci\u00f3n y publicaci\u00f3n de la informaci\u00f3n financiera de los entes p\u00fablicos a que se refiere este T\u00edtulo, se har\u00e1 conforme a las normas, estructura, formatos y contenido de la informaci\u00f3n, que para tal efecto establezca el consejo y difundirse en la p\u00e1gina de Internet del respectivo [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"elementor_header_footer","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-150","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/citlaltepetl.gob.mx\/portal\/wp-json\/wp\/v2\/posts\/150","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/citlaltepetl.gob.mx\/portal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/citlaltepetl.gob.mx\/portal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/citlaltepetl.gob.mx\/portal\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/citlaltepetl.gob.mx\/portal\/wp-json\/wp\/v2\/comments?post=150"}],"version-history":[{"count":0,"href":"https:\/\/citlaltepetl.gob.mx\/portal\/wp-json\/wp\/v2\/posts\/150\/revisions"}],"wp:attachment":[{"href":"https:\/\/citlaltepetl.gob.mx\/portal\/wp-json\/wp\/v2\/media?parent=150"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/citlaltepetl.gob.mx\/portal\/wp-json\/wp\/v2\/categories?post=150"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/citlaltepetl.gob.mx\/portal\/wp-json\/wp\/v2\/tags?post=150"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}