Update index.html

This commit is contained in:
oliver committed 2026-10-24 06:23:17 -03:00
1 parent 3b426835c7
commit ac86c34ec1
1 file changed
+126 -52
+126 -52
View File
@@ -221,6 +221,9 @@
.event-info p { font-size: .88rem; color: var(--muted); } .event-info p { font-size: .88rem; color: var(--muted); }
.event-info .loc { display: inline-flex; align-items: center; gap: 6px; margin-top: 8px; font-size: .78rem; font-weight: 600; color: var(--plum); } .event-info .loc { display: inline-flex; align-items: center; gap: 6px; margin-top: 8px; font-size: .78rem; font-weight: 600; color: var(--plum); }
.event-info .loc svg { width: 14px; height: 14px; } .event-info .loc svg { width: 14px; height: 14px; }
.event-info .event-cta { display: inline-flex; align-items: center; gap: 6px; margin-top: 10px; font-size: .8rem; font-weight: 600; color: var(--violet); }
.event-info .event-cta svg { width: 14px; height: 14px; transition: transform .25s; }
.event:hover .event-cta svg { transform: translate(3px, -3px); }
.badge { .badge {
font-size: .72rem; font-weight: 700; padding: 5px 12px; border-radius: 999px; text-transform: uppercase; letter-spacing: .05em; font-size: .72rem; font-weight: 700; padding: 5px 12px; border-radius: 999px; text-transform: uppercase; letter-spacing: .05em;
background: rgba(108,76,224,.1); color: var(--violet); background: rgba(108,76,224,.1); color: var(--violet);
@@ -240,17 +243,16 @@
.flag-strip { height: 4px; width: 100%; background: linear-gradient(90deg, var(--py-red) 33.3%, #fff 33.3% 66.6%, var(--py-blue) 66.6%); border-radius: 4px; } .flag-strip { height: 4px; width: 100%; background: linear-gradient(90deg, var(--py-red) 33.3%, #fff 33.3% 66.6%, var(--py-blue) 66.6%); border-radius: 4px; }
/* ---------- Estado Odoo CE ---------- */ /* ---------- Estado Odoo CE ---------- */
.state-grid { display: grid; grid-template-columns: 1fr 1.12fr; gap: 40px; align-items: start; } .state-features { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; margin-bottom: 42px; }
.state-facts { display: flex; flex-direction: column; gap: 14px; }
.fact { .fact {
display: flex; gap: 14px; align-items: flex-start; background: var(--card); display: flex; flex-direction: column; gap: 12px; background: var(--card);
border: 1px solid var(--line); border-radius: 16px; padding: 16px 18px; box-shadow: var(--shadow-sm); border: 1px solid var(--line); border-radius: 18px; padding: 24px; box-shadow: var(--shadow-sm);
transition: transform .25s, border-color .25s, box-shadow .25s; transition: transform .25s, border-color .25s, box-shadow .25s;
} }
.fact:hover { transform: translateY(-3px); border-color: var(--violet-soft); box-shadow: var(--shadow); } .fact:hover { transform: translateY(-5px); border-color: var(--violet-soft); box-shadow: var(--shadow); }
.fact .fi { width: 38px; height: 38px; flex: 0 0 38px; border-radius: 11px; display: grid; place-items: center; color: #fff; } .fact .fi { width: 44px; height: 44px; flex: 0 0 44px; border-radius: 13px; display: grid; place-items: center; color: #fff; }
.fact h4 { font-size: .98rem; margin-bottom: 3px; } .fact h4 { font-size: 1rem; margin-bottom: 4px; }
.fact p { font-size: .84rem; color: var(--muted); } .fact p { font-size: .85rem; color: var(--muted); }
.fact code { background: #f3effa; color: var(--plum); padding: 1px 6px; border-radius: 6px; font-size: .8rem; font-family: ui-monospace, 'SF Mono', Menlo, monospace; } .fact code { background: #f3effa; color: var(--plum); padding: 1px 6px; border-radius: 6px; font-size: .8rem; font-family: ui-monospace, 'SF Mono', Menlo, monospace; }
.mod-panel { background: var(--card); border: 1px solid var(--line); border-radius: 20px; box-shadow: var(--shadow); overflow: hidden; } .mod-panel { background: var(--card); border: 1px solid var(--line); border-radius: 20px; box-shadow: var(--shadow); overflow: hidden; }
.mod-head { .mod-head {
@@ -263,9 +265,10 @@
background: rgba(255,255,255,.18); border: 1px solid rgba(255,255,255,.3); padding: 5px 12px; border-radius: 999px; background: rgba(255,255,255,.18); border: 1px solid rgba(255,255,255,.3); padding: 5px 12px; border-radius: 999px;
} }
.branch-pill .dot { background: var(--mint); } .branch-pill .dot { background: var(--mint); }
.mod-list { list-style: none; } .mod-list { list-style: none; display: grid; grid-template-columns: 1fr 1fr; }
.mod-list li { display: grid; grid-template-columns: 1fr auto; gap: 10px; padding: 15px 24px; border-bottom: 1px solid var(--line); align-items: center; transition: background .2s; } .mod-list li { display: grid; grid-template-columns: 1fr auto; gap: 10px; padding: 14px 22px; border-bottom: 1px solid var(--line); align-items: center; transition: background .2s; }
.mod-list li:last-child { border-bottom: none; } .mod-list li:nth-child(odd) { border-right: 1px solid var(--line); }
.mod-list li:nth-last-child(-n+2) { border-bottom: none; }
.mod-list li:hover { background: #faf8ff; } .mod-list li:hover { background: #faf8ff; }
.mod-list .name { font-family: ui-monospace, 'SF Mono', Menlo, monospace; font-size: .86rem; font-weight: 600; color: var(--plum); } .mod-list .name { font-family: ui-monospace, 'SF Mono', Menlo, monospace; font-size: .86rem; font-weight: 600; color: var(--plum); }
.mod-list .desc { font-size: .8rem; color: var(--muted); } .mod-list .desc { font-size: .8rem; color: var(--muted); }
@@ -352,7 +355,11 @@
.hero-grid { grid-template-columns: 1fr; gap: 40px; } .hero-grid { grid-template-columns: 1fr; gap: 40px; }
.hero-visual { height: 400px; max-width: 460px; margin: 0 auto; width: 100%; } .hero-visual { height: 400px; max-width: 460px; margin: 0 auto; width: 100%; }
.news-grid { grid-template-columns: repeat(2, 1fr); } .news-grid { grid-template-columns: repeat(2, 1fr); }
.state-grid { grid-template-columns: 1fr; } .state-features { grid-template-columns: repeat(2, 1fr); }
.mod-list { grid-template-columns: 1fr; }
.mod-list li:nth-child(odd) { border-right: none; }
.mod-list li:nth-last-child(-n+2) { border-bottom: 1px solid var(--line); }
.mod-list li:last-child { border-bottom: none; }
.hack-grid { grid-template-columns: 1fr; } .hack-grid { grid-template-columns: 1fr; }
.hack-targets { grid-template-columns: 1fr; } .hack-targets { grid-template-columns: 1fr; }
.foot-grid { grid-template-columns: 1fr 1fr; } .foot-grid { grid-template-columns: 1fr 1fr; }
@@ -369,6 +376,7 @@
.burger.open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); } .burger.open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
.nav-cta { display: none; } .nav-cta { display: none; }
.news-grid { grid-template-columns: 1fr; } .news-grid { grid-template-columns: 1fr; }
.state-features { grid-template-columns: 1fr; }
.event { grid-template-columns: 70px 1fr; gap: 16px; padding: 18px; } .event { grid-template-columns: 70px 1fr; gap: 16px; padding: 18px; }
.event-date { padding-right: 14px; } .event-date { padding-right: 14px; }
.event-date .d { font-size: 1.5rem; } .event-date .d { font-size: 1.5rem; }
@@ -481,8 +489,7 @@
<p>Un panorama del repositorio oficial <strong>OCA/l10n-paraguay</strong>, la localización de Odoo Community mantenida por la comunidad para el país.</p> <p>Un panorama del repositorio oficial <strong>OCA/l10n-paraguay</strong>, la localización de Odoo Community mantenida por la comunidad para el país.</p>
</div> </div>
<div class="state-grid"> <div class="state-features reveal">
<div class="state-facts reveal">
<div class="fact"> <div class="fact">
<span class="fi ico-violet"><svg viewBox="0 0 24 24" width="19" height="19" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.9a3.4 3.4 0 0 0-.9-2.6c3-.3 6.2-1.5 6.2-6.7A5.2 5.2 0 0 0 20 5.8a4.9 4.9 0 0 0-.1-3.5s-1.1-.3-3.6 1.4a12.3 12.3 0 0 0-6.6 0C7.2 2 6.1 2.3 6.1 2.3A4.9 4.9 0 0 0 6 5.8a5.2 5.2 0 0 0-1.4 3.6c0 5.2 3.2 6.4 6.2 6.7A3.4 3.4 0 0 0 10 18.7V22"/></svg></span> <span class="fi ico-violet"><svg viewBox="0 0 24 24" width="19" height="19" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.9a3.4 3.4 0 0 0-.9-2.6c3-.3 6.2-1.5 6.2-6.7A5.2 5.2 0 0 0 20 5.8a4.9 4.9 0 0 0-.1-3.5s-1.1-.3-3.6 1.4a12.3 12.3 0 0 0-6.6 0C7.2 2 6.1 2.3 6.1 2.3A4.9 4.9 0 0 0 6 5.8a5.2 5.2 0 0 0-1.4 3.6c0 5.2 3.2 6.4 6.2 6.7A3.4 3.4 0 0 0 10 18.7V22"/></svg></span>
<div> <div>
@@ -494,8 +501,8 @@
<div class="fact"> <div class="fact">
<span class="fi ico-plum"><svg viewBox="0 0 24 24" width="19" height="19" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 3v12"/><circle cx="18" cy="6" r="3"/><circle cx="6" cy="18" r="3"/><path d="M18 9a9 9 0 0 1-9 9"/></svg></span> <span class="fi ico-plum"><svg viewBox="0 0 24 24" width="19" height="19" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 3v12"/><circle cx="18" cy="6" r="3"/><circle cx="6" cy="18" r="3"/><path d="M18 9a9 9 0 0 1-9 9"/></svg></span>
<div> <div>
<h4>Una sola rama activa: <code>16.0</code></h4> <h4>Rama activa: <code>19.0</code></h4>
<p>Hoy la localización cubre <strong>Odoo 16</strong>. Migrar a <code>17.0</code> y <code>18.0</code> es el gran trabajo pendiente de la comunidad.</p> <p>La localización ya cubre <strong>Odoo 19</strong>. Avanzar hacia <code>20.0</code> es el próximo gran desafío de la comunidad.</p>
</div> </div>
</div> </div>
@@ -519,33 +526,52 @@
<div class="mod-panel reveal" style="transition-delay:.1s"> <div class="mod-panel reveal" style="transition-delay:.1s">
<div class="mod-head"> <div class="mod-head">
<h3>Módulos disponibles</h3> <h3>Módulos disponibles</h3>
<span class="branch-pill"><span class="dot"></span> Rama activa: 16.0</span> <span class="branch-pill"><span class="dot"></span> Rama activa: 19.0</span>
</div> </div>
<ul class="mod-list"> <ul class="mod-list">
<li> <li>
<div><span class="name">l10n_py</span><div class="desc">Localización contable para Paraguay</div></div> <div><span class="name">l10n_py</span><div class="desc">Localización contable para Paraguay</div></div>
<span class="ver">16.0.1.1.0</span> <span class="ver">19.0.1.0.1</span>
</li> </li>
<li> <li>
<div><span class="name">l10n_py_account</span><div class="desc">Extensiones contables para Paraguay</div></div> <div><span class="name">l10n_py_account</span><div class="desc">Extensiones contables para la localización de Paraguay</div></div>
<span class="ver">16.0.2.0.0</span> <span class="ver">19.0.1.1.0</span>
</li> </li>
<li> <li>
<div><span class="name">l10n_py_base</span><div class="desc">Datos base de localización</div></div> <div><span class="name">l10n_py_base</span><div class="desc">Datos base de localización para Paraguay</div></div>
<span class="ver">16.0.1.2.0</span> <span class="ver">19.0.1.0.0</span>
</li> </li>
<li> <li>
<div><span class="name">l10n_py_edi_base</span><div class="desc">Base para facturación electrónica</div></div> <div><span class="name">l10n_py_edi_base</span><div class="desc">Módulo base para facturación electrónica en Paraguay</div></div>
<span class="ver">16.0.9.0.0</span> <span class="ver">19.0.1.0.0</span>
</li> </li>
<li> <li>
<div><span class="name">l10n_py_edi_sifen</span><div class="desc">Transmisión directa al SIFEN (pysifen)</div></div> <div><span class="name">l10n_py_edi_sifen</span><div class="desc">Transmisión directa al SIFEN vía librería pysifen</div></div>
<span class="ver">16.0.13.0.0</span> <span class="ver">19.0.1.0.0</span>
</li>
<li>
<div><span class="name">l10n_py_libros</span><div class="desc">Registro de comprobantes Ventas/Compras/Ingresos/Egresos (DNIT)</div></div>
<span class="ver">19.0.1.0.0</span>
</li>
<li>
<div><span class="name">l10n_py_maquila_base</span><div class="desc">Módulo base para el régimen de maquila (Ley 7547/2025)</div></div>
<span class="ver">19.0.1.0.0</span>
</li>
<li>
<div><span class="name">l10n_py_maquila_mrp</span><div class="desc">Coeficientes de lista de materiales (BOM), cálculo de VAN y gestión de desperdicios</div></div>
<span class="ver">19.0.1.0.0</span>
</li>
<li>
<div><span class="name">l10n_py_maquila_ops</span><div class="desc">Admisión temporaria, exportación, garantías y operaciones fiscales para maquila</div></div>
<span class="ver">19.0.1.0.0</span>
</li>
<li>
<div><span class="name">l10n_py_maquila_report</span><div class="desc">Reportes CNIME, dashboard, extensión SIFEN y SIMEX para maquila</div></div>
<span class="ver">19.0.1.0.0</span>
</li> </li>
</ul> </ul>
<div class="mod-foot"><strong>Help wanted:</strong> todavía no existe rama para <code>17.0</code> ni <code>18.0</code> — contribuir a la migración es una de las tareas más valiosas para la comunidad. <a href="https://github.com/OCA/l10n-paraguay" target="_blank" rel="noopener">Colaborá en GitHub →</a><br /><br />Un agradecimiento especial a <a href="https://kmee.com.br/" target="_blank" rel="noopener">KMEE</a> y su equipo por mantener la localización paraguaya.</div> <div class="mod-foot"><strong>Help wanted:</strong> la rama <code>19.0</code> ya está activa — sumate a mantener los módulos y a preparar la migración a <code>20.0</code>. <a href="https://github.com/OCA/l10n-paraguay" target="_blank" rel="noopener">Colaborá en GitHub →</a><br /><br />Un agradecimiento especial a <a href="https://kmee.com.br/" target="_blank" rel="noopener">KMEE</a> y su equipo por mantener la localización paraguaya.</div>
</div> </div>
</div>
</div> </div>
</section> </section>
@@ -629,7 +655,7 @@
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 2v6h-6"/><path d="M3 12a9 9 0 0 1 15-6.7L21 8"/><path d="M3 22v-6h6"/><path d="M21 12a9 9 0 0 1-15 6.7L3 16"/></svg> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 2v6h-6"/><path d="M3 12a9 9 0 0 1 15-6.7L21 8"/><path d="M3 22v-6h6"/><path d="M21 12a9 9 0 0 1-15 6.7L3 16"/></svg>
<div> <div>
<h4>Actualización de módulos a Odoo 19 y 20</h4> <h4>Actualización de módulos a Odoo 19 y 20</h4>
<p>Migrar la localización actual (rama 16.0) a las versiones más recientes del ERP.</p> <p>Consolidar la rama 19.0 y avanzar hacia las versiones más recientes del ERP.</p>
</div> </div>
</div> </div>
<div class="hack-target"> <div class="hack-target">
@@ -750,49 +776,97 @@
<div class="sec-head reveal"> <div class="sec-head reveal">
<span class="kicker">Eventos</span> <span class="kicker">Eventos</span>
<h2>Próximos encuentros</h2> <h2>Próximos encuentros</h2>
<p>Webinars globales, sesiones de soporte y encuentros presenciales en Paraguay.</p> <p>Webinars globales, sesiones de soporte y encuentros presenciales de la comunidad OCA.</p>
</div> </div>
<div class="event-list"> <div class="event-list">
<article class="event reveal"> <a class="event reveal" href="https://odoo-community.org/event/oca-ai-psc-oca-ai-modules-alignment-meeting-273" target="_blank" rel="noopener">
<div class="event-date"><div class="d">21</div><div class="m">SEP</div></div> <div class="event-date"><div class="d">26</div><div class="m">OCT</div></div>
<div class="event-info"> <div class="event-info">
<h3>OCA Days 2026 — Liège, Bélgica</h3> <h3>OCA AI PSC — Reunión de alineación de módulos de IA</h3>
<p>El evento anual de la comunidad: charlas, sprints de código y networking con miembros de todo el mundo.</p> <p>Encuentro del grupo de trabajo de IA de la OCA para alinear el desarrollo de los módulos de inteligencia artificial.</p>
<span class="loc"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 10c0 6-8 12-8 12S4 16 4 10a8 8 0 0 1 16 0Z"/><circle cx="12" cy="10" r="3"/></svg> Palais des Congrès · 21–23 de septiembre</span> <span class="loc"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M2 12h20M12 2a15 15 0 0 1 0 20"/></svg> Online · Evento OCA</span>
<span class="event-cta">Ver evento en la OCA <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M7 17 17 7M9 7h8v8"/></svg></span>
</div> </div>
<span class="badge presencial">Presencial</span> <span class="badge">OCA</span>
</article> </a>
<article class="event reveal" style="transition-delay:.06s"> <a class="event reveal" style="transition-delay:.06s" href="https://odoo-community.org/event/webinar-how-to-search-for-an-oca-module-271" target="_blank" rel="noopener">
<div class="event-date"><div class="d">01</div><div class="m">OCT</div></div> <div class="event-date"><div class="d">05</div><div class="m">NOV</div></div>
<div class="event-info"> <div class="event-info">
<h3>Webinar | Módulos OCA "Must Have" para Inventario</h3> <h3>Webinar | Cómo buscar un módulo de la OCA</h3>
<p>Recorrido práctico por los módulos de Stock y Productos que toda implementación debería conocer.</p> <p>Aprendé a encontrar el módulo adecuado entre los miles disponibles en la nueva Apps Store de la OCA.</p>
<span class="loc"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M2 12h20M12 2a15 15 0 0 1 0 20"/></svg> Online · Sesión en vivo</span> <span class="loc"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M2 12h20M12 2a15 15 0 0 1 0 20"/></svg> Online · Sesión en vivo</span>
<span class="event-cta">Ver evento en la OCA <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M7 17 17 7M9 7h8v8"/></svg></span>
</div> </div>
<span class="badge">Webinar</span> <span class="badge">Webinar</span>
</article> </a>
<article class="event reveal" style="transition-delay:.12s"> <a class="event reveal" style="transition-delay:.12s" href="https://odoo-community.org/event/oca-support-group-session-consultants-265" target="_blank" rel="noopener">
<div class="event-date"><div class="d">08</div><div class="m">OCT</div></div> <div class="event-date"><div class="d">12</div><div class="m">NOV</div></div>
<div class="event-info"> <div class="event-info">
<h3>Sesión de Soporte OCA | Consultores</h3> <h3>Sesión de Soporte OCA | Consultores</h3>
<p>Espacio abierto para llevar tus dudas técnicas y funcionales ante la comunidad internacional.</p> <p>Espacio abierto para llevar tus dudas técnicas y funcionales ante la comunidad internacional.</p>
<span class="loc"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M2 12h20M12 2a15 15 0 0 1 0 20"/></svg> Online · Grupo de consultores</span> <span class="loc"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M2 12h20M12 2a15 15 0 0 1 0 20"/></svg> Online · Grupo de consultores</span>
<span class="event-cta">Ver evento en la OCA <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M7 17 17 7M9 7h8v8"/></svg></span>
</div> </div>
<span class="badge">Soporte</span> <span class="badge">Soporte</span>
</article> </a>
<article class="event reveal" style="transition-delay:.18s"> <a class="event reveal" style="transition-delay:.18s" href="https://odoo-community.org/event/oca-netherlands-code-sprint-local-meetup-274" target="_blank" rel="noopener">
<div class="event-date"><div class="d">15</div><div class="m">NOV</div></div> <div class="event-date"><div class="d">13</div><div class="m">NOV</div></div>
<div class="event-info"> <div class="event-info">
<h3>Sprint OCA Paraguay — Asunción</h3> <h3>OCA Netherlands | Code Sprint &amp; Meetup local</h3>
<p>Encuentro local para localizar módulos, traducir cadenas al español de Paraguay y sumar nuevos colaboradores.</p> <p>Jornada de sprint de código y encuentro presencial de la comunidad neerlandesa de la OCA.</p>
<span class="loc"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 10c0 6-8 12-8 12S4 16 4 10a8 8 0 0 1 16 0Z"/><circle cx="12" cy="10" r="3"/></svg> Asunción, Paraguay</span> <span class="loc"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 10c0 6-8 12-8 12S4 16 4 10a8 8 0 0 1 16 0Z"/><circle cx="12" cy="10" r="3"/></svg> Tilburg, Países Bajos</span>
<span class="event-cta">Ver evento en la OCA <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M7 17 17 7M9 7h8v8"/></svg></span>
</div> </div>
<span class="badge taller">Taller</span> <span class="badge presencial">Presencial</span>
</article> </a>
<a class="event reveal" style="transition-delay:.24s" href="https://odoo-community.org/event/webinar-oca-modules-field-service-part-1-269" target="_blank" rel="noopener">
<div class="event-date"><div class="d">19</div><div class="m">NOV</div></div>
<div class="event-info">
<h3>Webinar | Módulos OCA — Field Service (Parte 1)</h3>
<p>Primera parte del recorrido por los módulos de servicio en terreno (Field Service) de la OCA.</p>
<span class="loc"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M2 12h20M12 2a15 15 0 0 1 0 20"/></svg> Online · Sesión en vivo</span>
<span class="event-cta">Ver evento en la OCA <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M7 17 17 7M9 7h8v8"/></svg></span>
</div>
<span class="badge">Webinar</span>
</a>
<a class="event reveal" style="transition-delay:.3s" href="https://odoo-community.org/event/oca-day-finland-2026-267" target="_blank" rel="noopener">
<div class="event-date"><div class="d">27</div><div class="m">NOV</div></div>
<div class="event-info">
<h3>OCA Day Finland 2026</h3>
<p>Encuentro anual de la comunidad OCA de Finlandia, con charlas y networking entre miembros.</p>
<span class="loc"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 10c0 6-8 12-8 12S4 16 4 10a8 8 0 0 1 16 0Z"/><circle cx="12" cy="10" r="3"/></svg> Tampere, Finlandia</span>
<span class="event-cta">Ver evento en la OCA <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M7 17 17 7M9 7h8v8"/></svg></span>
</div>
<span class="badge presencial">Presencial</span>
</a>
<a class="event reveal" style="transition-delay:.36s" href="https://odoo-community.org/event/webinar-oca-modules-field-service-part-2-270" target="_blank" rel="noopener">
<div class="event-date"><div class="d">03</div><div class="m">DIC</div></div>
<div class="event-info">
<h3>Webinar | Módulos OCA — Field Service (Parte 2)</h3>
<p>Continuación del recorrido por los módulos de servicio en terreno (Field Service) de la OCA.</p>
<span class="loc"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M2 12h20M12 2a15 15 0 0 1 0 20"/></svg> Online · Sesión en vivo</span>
<span class="event-cta">Ver evento en la OCA <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M7 17 17 7M9 7h8v8"/></svg></span>
</div>
<span class="badge">Webinar</span>
</a>
<a class="event reveal" style="transition-delay:.42s" href="https://odoo-community.org/event/webinar-oca-modules-must-have-for-stock-products-263" target="_blank" rel="noopener">
<div class="event-date"><div class="d">17</div><div class="m">DIC</div></div>
<div class="event-info">
<h3>Webinar | Módulos OCA "Must Have" para Stock/Productos</h3>
<p>Recorrido práctico por los módulos de Stock y Productos que toda implementación debería conocer.</p>
<span class="loc"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M2 12h20M12 2a15 15 0 0 1 0 20"/></svg> Online · Sesión en vivo</span>
<span class="event-cta">Ver evento en la OCA <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M7 17 17 7M9 7h8v8"/></svg></span>
</div>
<span class="badge">Webinar</span>
</a>
</div> </div>
</div> </div>
</section> </section>