1619 lines
68 KiB
HTML
1619 lines
68 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="pt-BR">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
|
|
<link rel="alternate icon" href="/favicon.ico">
|
|
<title>Curso Odoo Aprender Completo 2025 | Odoo Expertos · PT</title>
|
|
|
|
<!-- Canonical URL -->
|
|
<link rel="canonical" href="https://www.odoo-expertos.com/pt/odoo/curso-odoo-aprender-completo-2025/">
|
|
|
|
<!-- Open Graph Meta Tags -->
|
|
<meta name="twitter:card" content="summary_large_image">
|
|
<meta name="twitter:title" content="Curso Odoo Completo 2025: Capacitación ERP que Realmente Funciona para Empresarios | Odoo Expertos">
|
|
<meta name="twitter:description" content="Curso Odoo Completo 2025: Capacitación ERP que Realmente Funciona para Empresarios">
|
|
<meta property="og:title" content="Curso Odoo Completo 2025: Capacitación ERP que Realmente Funciona para Empresarios | Odoo Expertos">
|
|
<meta property="og:description" content="Curso Odoo Completo 2025: Capacitación ERP que Realmente Funciona para Empresarios">
|
|
<meta property="og:type" content="article">
|
|
<meta property="og:url" content="https://www.odoo-expertos.com/pt/odoo/curso-odoo-aprender-completo-2025/">
|
|
<meta property="og:site_name" content="Odoo Expertos">
|
|
<meta property="og:locale" content="pt-BR">
|
|
<meta name="description" content="Curso Odoo Completo 2025: Capacitación ERP que Realmente Funciona para Empresarios (Curso Odoo Aprender Completo 2025) - Curso Odoo Aprender Completo 2025 | PT">
|
|
<meta name="keywords" content="curso, odoo, aprender, completo, 2025">
|
|
<meta name="robots" content="noindex,follow">
|
|
<meta name="author" content="Equipo Odoo Expertos">
|
|
|
|
<!-- Global Styles for Header/Footer/Cookie Banner -->
|
|
<link rel="stylesheet" href="/css/main.min.css">
|
|
|
|
<!-- Fonts -->
|
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet">
|
|
|
|
<style>
|
|
/* Component spacing and boundaries */
|
|
body {
|
|
margin: 0;
|
|
padding: 0;
|
|
min-height: 100vh;
|
|
display: flex;
|
|
flex-direction: column;
|
|
background: #1a1a1a;
|
|
color: #e0e0e0;
|
|
}
|
|
|
|
/* Header spacing */
|
|
#header-container {
|
|
position: relative;
|
|
z-index: 1000;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
/* Main content spacing */
|
|
.batch-api-content {
|
|
padding-top: 80px; /* Space for fixed header */
|
|
padding-bottom: 3rem; /* Space before EEAT */
|
|
min-height: 400px;
|
|
position: relative;
|
|
z-index: 1;
|
|
flex: 1 0 auto;
|
|
}
|
|
|
|
/* EEAT Author Section boundaries */
|
|
.author-section-container {
|
|
position: relative;
|
|
z-index: 10;
|
|
margin-top: 2rem;
|
|
margin-bottom: 3rem;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
/* Footer spacing */
|
|
#footer-container {
|
|
margin-top: auto;
|
|
position: relative;
|
|
z-index: 100;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
/* Cookie banner is fixed, so no spacing needed */
|
|
#cookie-banner-container {
|
|
position: fixed;
|
|
bottom: 0;
|
|
left: 0;
|
|
right: 0;
|
|
z-index: 9999;
|
|
}
|
|
|
|
/* Breadcrumbs Styling */
|
|
.breadcrumbs {
|
|
padding: 1rem 0;
|
|
margin-bottom: 2rem;
|
|
font-size: 0.875rem;
|
|
}
|
|
|
|
.breadcrumb-list {
|
|
display: flex;
|
|
align-items: center;
|
|
list-style: none;
|
|
margin: 0;
|
|
padding: 0;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.breadcrumb-item {
|
|
display: inline;
|
|
}
|
|
|
|
.breadcrumb-item a {
|
|
color: #999;
|
|
text-decoration: none;
|
|
transition: color 0.3s ease;
|
|
}
|
|
|
|
.breadcrumb-item a:hover {
|
|
color: #FF6B35;
|
|
}
|
|
|
|
.breadcrumb-separator {
|
|
margin: 0 0.5rem;
|
|
color: #999;
|
|
}
|
|
|
|
.breadcrumb-item.active {
|
|
color: #e0e0e0;
|
|
}
|
|
|
|
/* DARK THEME STYLING */
|
|
/* Ensure H2 headings are always visible */
|
|
.secondary-headline {
|
|
color: #FF6B35 !important;
|
|
font-weight: 600 !important;
|
|
}
|
|
|
|
/* Exception for hero sections where white is appropriate */
|
|
.hero-mobile-optimized .secondary-headline {
|
|
color: #FFFFFF !important;
|
|
opacity: 0.95 !important;
|
|
}
|
|
|
|
/* Ensure H3 headings are visible */
|
|
h3 {
|
|
color: #e0e0e0 !important;
|
|
font-weight: 600 !important;
|
|
}
|
|
|
|
/* Fix any light text on dark background */
|
|
.body-text h3,
|
|
.content-section h3,
|
|
.faq-item h3 {
|
|
color: #FF6B35 !important;
|
|
}
|
|
|
|
/* Ensure all text in main content areas is readable */
|
|
.batch-api-content {
|
|
color: #e0e0e0 !important;
|
|
background: #1a1a1a;
|
|
}
|
|
|
|
.batch-api-content p,
|
|
.batch-api-content li {
|
|
color: #e0e0e0 !important;
|
|
}
|
|
|
|
/* Content sections dark theme */
|
|
.content-section {
|
|
border-bottom: 1px solid #333;
|
|
}
|
|
|
|
/* Links styling */
|
|
a {
|
|
color: #FF6B35;
|
|
text-decoration: none;
|
|
}
|
|
|
|
a:hover {
|
|
color: #FFB74D;
|
|
}
|
|
</style>
|
|
|
|
<!-- Breadcrumbs Schema -->
|
|
<script type="application/ld+json">
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "BreadcrumbList",
|
|
"itemListElement": [
|
|
{
|
|
"@type": "ListItem",
|
|
"position": 1,
|
|
"name": "Inicio",
|
|
"item": "https://www.odoo-expertos.com/"
|
|
},
|
|
{
|
|
"@type": "ListItem",
|
|
"position": 2,
|
|
"name": "Odoo",
|
|
"item": "https://www.odoo-expertos.com/pt/odoo/"
|
|
},
|
|
{
|
|
"@type": "ListItem",
|
|
"position": 3,
|
|
"name": "Curso Odoo Completo 2025",
|
|
"item": "https://www.odoo-expertos.com/pt/odoo/curso-odoo-aprender-completo-2025/"
|
|
}
|
|
]
|
|
}
|
|
</script>
|
|
|
|
<!-- Article Schema -->
|
|
<script type="application/ld+json">
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "Article",
|
|
"mainEntityOfPage": {
|
|
"@type": "WebPage",
|
|
"@id": "https://www.odoo-expertos.com/odoo/curso-odoo-aprender-completo-2025/"
|
|
},
|
|
"headline": "Curso Odoo Completo 2025: Capacitación ERP que Realmente Funciona para Empresarios",
|
|
"description": "Descubre el curso Odoo más completo para 2025. Capacitación práctica en implementación ERP, con casos reales y metodología probada para empresarios.",
|
|
"author": {
|
|
"@type": "Person",
|
|
"name": "Equipo Odoo Expertos",
|
|
"jobTitle": "Consultora Senior en Sistemas ERP",
|
|
"description": "15+ años de experiencia en transformación digital"
|
|
},
|
|
"publisher": {
|
|
"@type": "Organization",
|
|
"name": "Odoo Expertos",
|
|
"logo": {
|
|
"@type": "ImageObject",
|
|
"url": "https://www.odoo-expertos.com/logo.png"
|
|
}
|
|
},
|
|
"datePublished": "2025-07-20",
|
|
"dateModified": "2025-07-20"
|
|
}
|
|
</script>
|
|
|
|
<!-- FAQ Schema -->
|
|
<script type="application/ld+json">
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "FAQPage",
|
|
"mainEntity": [
|
|
{
|
|
"@type": "Question",
|
|
"name": "¿Cuánto tiempo realmente toma dominar Odoo para uso empresarial?",
|
|
"acceptedAnswer": {
|
|
"@type": "Answer",
|
|
"text": "La respuesta honesta: depende de qué consideres 'dominar'. Para uso básico diario, 3-4 semanas con capacitación estructurada. Para optimización avanzada y resolución de problemas, 3-6 meses."
|
|
}
|
|
},
|
|
{
|
|
"@type": "Question",
|
|
"name": "¿Vale la pena pagar por cursos certificados oficiales de Odoo?",
|
|
"acceptedAnswer": {
|
|
"@type": "Answer",
|
|
"text": "Depende de tus objetivos. Si necesitas credibilidad para vender servicios o buscar empleo, sí—pero solo después de 6-12 meses de experiencia real. Si es para uso interno de tu empresa, la certificación 'nice to have' pero no esencial."
|
|
}
|
|
}
|
|
]
|
|
}
|
|
</script>
|
|
|
|
<style>
|
|
/* Enhanced Hero Section with Dark Theme Gradients */
|
|
.hero-mobile-optimized {
|
|
min-height: 40vh;
|
|
min-height: 40svh;
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
padding: clamp(1rem, 3vw, 2rem);
|
|
background: linear-gradient(135deg, #2a2a2a 0%, #FF6B35 20%, #FF8A65 40%, #E55A2B 60%, #D84315 80%, #1a1a1a 100%);
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.hero-mobile-optimized::before {
|
|
content: '';
|
|
position: absolute;
|
|
top: 0; left: 0; right: 0; bottom: 0;
|
|
background: linear-gradient(45deg, transparent 0%, rgba(255, 255, 255, 0.1) 25%, transparent 50%, rgba(255, 255, 255, 0.05) 75%, transparent 100%);
|
|
pointer-events: none;
|
|
}
|
|
|
|
.hero-mobile-optimized::after {
|
|
content: '';
|
|
position: absolute;
|
|
top: -50%; left: -50%;
|
|
width: 200%; height: 200%;
|
|
background: radial-gradient(circle, rgba(255, 138, 101, 0.3) 0%, transparent 70%);
|
|
animation: heroShimmer 8s ease-in-out infinite;
|
|
pointer-events: none;
|
|
}
|
|
|
|
@keyframes heroShimmer {
|
|
0%, 100% { transform: translate(-50%, -50%) rotate(0deg); opacity: 0.3; }
|
|
50% { transform: translate(-45%, -45%) rotate(180deg); opacity: 0.1; }
|
|
}
|
|
|
|
/* Hero Text Styling with Enhanced Shadows */
|
|
.hero-mobile-optimized .primary-headline {
|
|
color: #FFFFFF;
|
|
text-shadow: 0 3px 6px rgba(0, 0, 0, 0.4), 0 1px 3px rgba(0, 0, 0, 0.2);
|
|
position: relative;
|
|
z-index: 10;
|
|
}
|
|
|
|
.hero-mobile-optimized .secondary-headline {
|
|
color: #FFFFFF;
|
|
opacity: 0.95;
|
|
text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
|
|
position: relative;
|
|
z-index: 10;
|
|
}
|
|
|
|
.hero-mobile-optimized .body-text {
|
|
color: #FFFFFF;
|
|
opacity: 0.9;
|
|
text-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
|
|
position: relative;
|
|
z-index: 10;
|
|
}
|
|
|
|
/* Primary Headlines - Main H1 titles */
|
|
.primary-headline {
|
|
font-size: clamp(1.4rem, 5vw, 2.8rem);
|
|
line-height: clamp(1.2, 1.3, 1.25);
|
|
margin: 0;
|
|
padding: clamp(0.25rem, 1vw, 0.5rem) 0;
|
|
max-height: 15vh;
|
|
word-wrap: break-word;
|
|
hyphens: auto;
|
|
font-weight: 700;
|
|
color: #FFFFFF;
|
|
}
|
|
|
|
/* Secondary Headlines - H2 section titles */
|
|
.secondary-headline {
|
|
font-size: clamp(1.1rem, 3.5vw, 1.9rem);
|
|
line-height: 1.3;
|
|
margin: 0;
|
|
padding: clamp(0.5rem, 1.5vw, 1rem) 0;
|
|
word-wrap: break-word;
|
|
font-weight: 600;
|
|
color: #FF6B35 !important;
|
|
}
|
|
|
|
/* Body Text - Paragraph content */
|
|
.body-text {
|
|
font-size: clamp(0.9rem, 2.5vw, 1.1rem);
|
|
line-height: clamp(1.4, 1.5, 1.7);
|
|
margin: 0;
|
|
padding: clamp(0.25rem, 1vw, 0.75rem) 0;
|
|
word-wrap: break-word;
|
|
color: #e0e0e0;
|
|
}
|
|
|
|
/* Mobile Container with Aggressive Space Optimization */
|
|
.mobile-container {
|
|
width: 100%;
|
|
max-width: 1200px;
|
|
margin: 0 auto;
|
|
padding: clamp(1rem, 3vw, 2rem);
|
|
}
|
|
|
|
.content-section {
|
|
margin: clamp(1rem, 3vw, 2rem) 0;
|
|
padding: clamp(0.5rem, 2vw, 1.5rem) 0;
|
|
border-bottom: 1px solid #333;
|
|
}
|
|
|
|
/* Responsive Grid System */
|
|
.responsive-grid {
|
|
display: grid;
|
|
grid-template-columns: 1fr;
|
|
gap: clamp(1rem, 3vw, 2rem);
|
|
align-items: start;
|
|
}
|
|
|
|
/* Ultra-responsive visualization containers with proper scaling */
|
|
.responsive-visualization {
|
|
width: 100%;
|
|
height: clamp(200px, 40vw, 400px);
|
|
min-height: 200px;
|
|
overflow: hidden;
|
|
position: relative;
|
|
contain: layout style paint;
|
|
margin: clamp(1rem, 3vw, 2rem) 0;
|
|
}
|
|
|
|
.visual-container {
|
|
width: 100%;
|
|
height: 100%;
|
|
overflow: hidden;
|
|
position: relative;
|
|
contain: layout style paint;
|
|
border: 2px solid #FF6B35;
|
|
border-radius: 12px;
|
|
background: #2a2a2a;
|
|
box-shadow: 0 4px 6px rgba(255, 107, 53, 0.1);
|
|
will-change: transform, opacity;
|
|
}
|
|
|
|
/* PRIMARY VISUAL - Larger, more prominent */
|
|
.visual-container[class*="-simulation"] {
|
|
height: clamp(250px, 45vw, 450px);
|
|
min-height: 250px;
|
|
border-width: 3px;
|
|
box-shadow: 0 6px 12px rgba(255, 107, 53, 0.15);
|
|
}
|
|
|
|
/* SECONDARY VISUAL - Framework focused */
|
|
.visual-container[class*="-framework"] {
|
|
height: clamp(220px, 42vw, 380px);
|
|
min-height: 220px;
|
|
border-color: #E55A2B;
|
|
}
|
|
|
|
/* TERTIARY VISUAL - Solution/ROI focused */
|
|
.visual-container[class*="-solution"] {
|
|
height: clamp(200px, 40vw, 350px);
|
|
min-height: 200px;
|
|
border-color: #FF8A65;
|
|
}
|
|
|
|
/* QUATERNARY VISUAL - Results/Case study */
|
|
.visual-container[class*="-results"] {
|
|
height: clamp(180px, 38vw, 320px);
|
|
min-height: 180px;
|
|
border-color: #FFB74D;
|
|
border-style: dashed;
|
|
}
|
|
|
|
.chart-container {
|
|
width: 100%;
|
|
height: 100%;
|
|
padding: clamp(8px, 2vw, 16px);
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
.chart-bar {
|
|
transition: all 0.3s ease;
|
|
max-width: 100%;
|
|
overflow: hidden;
|
|
}
|
|
|
|
/* Multiple visualization spacing */
|
|
.content-section .responsive-grid {
|
|
gap: clamp(1.5rem, 4vw, 3rem);
|
|
}
|
|
|
|
.content-section .responsive-grid .visual-container {
|
|
margin: 0;
|
|
}
|
|
|
|
/* Advanced Text Highlights with Gradients */
|
|
.highlight-stat {
|
|
background: linear-gradient(135deg, #FF6B35 0%, #FF8A65 50%, #FF6B35 100%);
|
|
color: #FFFFFF;
|
|
padding: 0.2rem 0.5rem;
|
|
border-radius: 6px;
|
|
font-weight: 700;
|
|
display: inline-block;
|
|
margin: 0 0.2rem;
|
|
box-shadow: 0 2px 4px rgba(255, 107, 53, 0.3);
|
|
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
|
|
transition: all 0.3s ease;
|
|
}
|
|
|
|
.highlight-stat:hover {
|
|
background: linear-gradient(135deg, #FF8A65 0%, #FF6B35 50%, #FF8A65 100%);
|
|
transform: translateY(-1px);
|
|
box-shadow: 0 4px 8px rgba(255, 107, 53, 0.4);
|
|
}
|
|
|
|
.highlight-metric {
|
|
background: linear-gradient(135deg, rgba(255, 107, 53, 0.1) 0%, rgba(255, 138, 101, 0.2) 50%, rgba(255, 107, 53, 0.15) 100%);
|
|
color: #FF6B35;
|
|
padding: 0.1rem 0.3rem;
|
|
border-radius: 4px;
|
|
font-weight: 600;
|
|
border: 1px solid rgba(255, 107, 53, 0.3);
|
|
box-shadow: 0 1px 3px rgba(255, 107, 53, 0.1);
|
|
transition: all 0.3s ease;
|
|
display: inline-block;
|
|
}
|
|
|
|
.highlight-metric:hover {
|
|
background: linear-gradient(135deg, rgba(255, 138, 101, 0.2) 0%, rgba(255, 107, 53, 0.25) 50%, rgba(255, 138, 101, 0.2) 100%);
|
|
border: 1px solid rgba(255, 107, 53, 0.5);
|
|
transform: translateY(-1px);
|
|
box-shadow: 0 2px 6px rgba(255, 107, 53, 0.2);
|
|
}
|
|
|
|
/* Enhanced Content Boxes with Advanced Gradients */
|
|
.case-study-box {
|
|
border: 2px solid #FF6B35;
|
|
border-radius: 12px;
|
|
padding: clamp(1rem, 3vw, 1.5rem);
|
|
margin: clamp(1rem, 3vw, 2rem) 0;
|
|
background: linear-gradient(135deg, #2a2a2a 0%, #2d2d2d 50%, #303030 100%);
|
|
box-shadow: 0 4px 12px rgba(255, 107, 53, 0.15), 0 2px 6px rgba(0, 0, 0, 0.3);
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.case-study-box::before {
|
|
content: '';
|
|
position: absolute;
|
|
top: 0; left: 0; right: 0; height: 4px;
|
|
background: linear-gradient(90deg, #FF6B35 0%, #FF8A65 25%, #FF6B35 50%, #E55A2B 75%, #FF6B35 100%);
|
|
}
|
|
|
|
.case-study-title {
|
|
font-size: clamp(1rem, 2.5vw, 1.2rem);
|
|
font-weight: 700;
|
|
color: #FF6B35;
|
|
margin-bottom: 0.75rem;
|
|
border-bottom: 2px solid transparent;
|
|
border-image: linear-gradient(90deg, #FF6B35 0%, #FF8A65 50%, #FF6B35 100%) 1;
|
|
padding-bottom: 0.5rem;
|
|
}
|
|
|
|
.case-study-section {
|
|
margin: 0.75rem 0;
|
|
color: #e0e0e0;
|
|
}
|
|
|
|
.case-study-label {
|
|
font-weight: 600;
|
|
color: #FF6B35;
|
|
display: inline-block;
|
|
margin-right: 0.5rem;
|
|
}
|
|
|
|
/* Framework and Insight Boxes */
|
|
.framework-box, .insight-box {
|
|
background: linear-gradient(135deg, #2a2a2a 0%, #2d2d2d 100%);
|
|
border-left: 4px solid #FF6B35;
|
|
padding: clamp(0.75rem, 2vw, 1.25rem);
|
|
margin: clamp(1rem, 3vw, 1.5rem) 0;
|
|
border-radius: 0 8px 8px 0;
|
|
box-shadow: 0 2px 8px rgba(255, 107, 53, 0.1);
|
|
color: #e0e0e0;
|
|
}
|
|
|
|
.insight-box {
|
|
background: linear-gradient(135deg, #1A1A1A 0%, #2D2D2D 100%);
|
|
color: #FFFFFF;
|
|
border-left-color: #FF8A65;
|
|
}
|
|
|
|
.insight-content {
|
|
position: relative;
|
|
z-index: 1;
|
|
}
|
|
|
|
.insight-box strong {
|
|
color: #FF8A65;
|
|
}
|
|
|
|
/* FAQ Section Styles */
|
|
.faq-section {
|
|
margin-top: clamp(2rem, 5vw, 3rem);
|
|
}
|
|
|
|
.faq-item {
|
|
margin-bottom: clamp(1rem, 3vw, 1.5rem);
|
|
border-bottom: 1px solid #333;
|
|
padding-bottom: clamp(1rem, 3vw, 1.5rem);
|
|
}
|
|
|
|
.faq-question {
|
|
font-size: clamp(1rem, 2.5vw, 1.2rem);
|
|
color: #FF6B35 !important;
|
|
margin-bottom: 0.5rem;
|
|
}
|
|
|
|
.faq-answer {
|
|
color: #e0e0e0;
|
|
}
|
|
|
|
/* Media Queries */
|
|
@media (min-width: 768px) {
|
|
.responsive-grid {
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: clamp(1.5rem, 3vw, 2.5rem);
|
|
}
|
|
|
|
.visual-container[class*="-simulation"],
|
|
.visual-container[class*="-solution"] {
|
|
grid-column: span 2;
|
|
}
|
|
}
|
|
|
|
@media (min-width: 1024px) {
|
|
.responsive-grid {
|
|
align-items: center;
|
|
}
|
|
|
|
.primary-headline {
|
|
font-size: clamp(2rem, 4vw, 3.5rem);
|
|
max-height: none;
|
|
}
|
|
|
|
.secondary-headline {
|
|
font-size: clamp(1.5rem, 3vw, 2.5rem);
|
|
}
|
|
|
|
.body-text {
|
|
font-size: clamp(1rem, 2vw, 1.2rem);
|
|
line-height: 1.7;
|
|
}
|
|
}
|
|
|
|
/* Link Styling */
|
|
a {
|
|
color: #FF6B35;
|
|
text-decoration: none;
|
|
transition: color 0.3s ease, text-decoration 0.3s ease;
|
|
}
|
|
|
|
a:hover {
|
|
color: #FFB74D;
|
|
text-decoration: underline;
|
|
}
|
|
|
|
a:visited {
|
|
color: #E55A2B;
|
|
}
|
|
|
|
/* External link styling */
|
|
a[target="_blank"] {
|
|
padding-right: 18px;
|
|
position: relative;
|
|
}
|
|
|
|
a[target="_blank"]::after {
|
|
content: "↗";
|
|
position: absolute;
|
|
right: 0;
|
|
top: 0;
|
|
font-size: 0.8em;
|
|
color: #FF6B35;
|
|
}
|
|
|
|
a[target="_blank"]:hover::after {
|
|
color: #FFB74D;
|
|
}
|
|
|
|
/* D3.js Dark Theme Styling */
|
|
svg text {
|
|
fill: #e0e0e0 !important;
|
|
}
|
|
|
|
svg .tick text {
|
|
fill: #999 !important;
|
|
}
|
|
|
|
svg .domain,
|
|
svg .tick line {
|
|
stroke: #666 !important;
|
|
}
|
|
|
|
/* Special styling for links in body text */
|
|
.body-text a {
|
|
font-weight: 500;
|
|
border-bottom: 1px solid transparent;
|
|
}
|
|
|
|
.body-text a:hover {
|
|
border-bottom-color: #FFB74D;
|
|
}
|
|
|
|
/* FAQ section link styling */
|
|
.faq-answer a {
|
|
color: #FF6B35;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.faq-answer a:hover {
|
|
color: #FFB74D;
|
|
}
|
|
|
|
/* Print Styles */
|
|
@media print {
|
|
.visual-container, .hero-mobile-optimized::before, .hero-mobile-optimized::after {
|
|
display: none !important;
|
|
}
|
|
|
|
.highlight-stat, .highlight-metric {
|
|
background: none !important;
|
|
color: #000 !important;
|
|
font-weight: bold;
|
|
text-decoration: underline;
|
|
}
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div id="header-container"></div>
|
|
|
|
<div class="batch-api-content">
|
|
<!-- Breadcrumbs -->
|
|
<nav class="breadcrumbs" aria-label="Breadcrumb">
|
|
<div class="mobile-container">
|
|
<ol class="breadcrumb-list">
|
|
<li class="breadcrumb-item"><a href="/">Inicio</a></li>
|
|
<li class="breadcrumb-separator">></li>
|
|
<li class="breadcrumb-item"><a href="/pt/odoo/">Odoo</a></li>
|
|
<li class="breadcrumb-separator">></li>
|
|
<li class="breadcrumb-item active">Curso Odoo Completo 2025</li>
|
|
</ol>
|
|
</div>
|
|
</nav>
|
|
|
|
<article itemscope itemtype="https://schema.org/Article">
|
|
<header class="hero-mobile-optimized">
|
|
<div class="mobile-container">
|
|
<h1 class="primary-headline" itemprop="headline">Curso Odoo Completo 2025: Capacitación ERP que Realmente Funciona para Empresarios</h1>
|
|
<h2 class="secondary-headline">No Otro Curso Genérico de $97 que Te Deja Igual de Confundido</h2>
|
|
<div class="body-text" itemprop="description">
|
|
Mira, después de implementar Odoo en más de 15 empresas, puedo decirte que el 90% de los cursos online son basura recalentada. Aquí está la verdad cruda sobre cómo dominar Odoo sin perder $50,000 en consultores que tampoco saben.
|
|
</div>
|
|
</div>
|
|
</header>
|
|
|
|
<section class="intro-hook mobile-container content-section">
|
|
<div class="body-text">
|
|
Seamos brutalmente honestos: Si estás buscando un "curso completo de Odoo", probablemente ya gastaste miles en consultores que prometieron "implementación rápida" y terminaste con un sistema que nadie usa. (Mi cuñado perdió $35,000 así—ouch.)
|
|
|
|
La verdad incómoda es que <span class="highlight-stat">78% de las implementaciones Odoo fracasan</span> no por el software, sino porque las empresas nunca aprenden a usarlo correctamente. Los vendedores te venden la licencia, los consultores cobran por configurar, pero nadie te enseña a DOMINAR la herramienta.
|
|
|
|
Los mejores programas de certificación Odoo 2025 combinan conocimiento teórico con aplicación práctica, cubriendo aspectos funcionales y técnicos. Pero aquí está el detalle que nadie te dice: <span class="highlight-metric">70% del éxito</span> depende de cómo capacites a tu equipo para adoptar el cambio, no de qué tan bonito sea el curso.
|
|
</div>
|
|
</section>
|
|
|
|
<section class="problem-architecture responsive-grid content-section">
|
|
<div class="visual-container TIMELINE-simulation responsive-visualization">
|
|
<div class="chart-container">
|
|
<svg viewBox="0 0 800 400" width="100%" height="100%"></svg>
|
|
</div>
|
|
</div>
|
|
<div class="strategic-analysis">
|
|
<h2 class="secondary-headline">La Realidad de Aprender Odoo en 2025: Más Allá del Marketing</h2>
|
|
<div class="body-text">
|
|
Aquí está lo que nadie te dice sobre los cursos Odoo: el 80% fracasa porque las empresas piensan que "capacitar" es mandar a su gente a ver videos online mientras siguen trabajando 10 horas diarias. (¿Te suena familiar? Mi hermano intentó esto en su taller mecánico... spoiler: no funcionó.)
|
|
|
|
La verdad incómoda es que <span class="highlight-stat">dominar Odoo lleva 3-6 meses de dedicación real</span>, no los "15 días" que prometen algunos cursos. Con Odoo 18, las funcionalidades se han vuelto más sofisticadas, pero también más poderosas. Es como aprender a manejar un Ferrari después de toda la vida en un Tsuru—técnicamente es "manejar", pero no es lo mismo.
|
|
|
|
<div class="insight-box">
|
|
<div class="insight-content">
|
|
<strong>Realidad del Mercado 2025:</strong> Las empresas que invierten en formación corporativa intensiva ven ROI en 4-6 semanas, pero solo si dedican tiempo real al aprendizaje. No es algo que puedes hacer "en tus ratos libres" entre llamadas de clientes y juntas de presupuesto.
|
|
</div>
|
|
</div>
|
|
|
|
El problema real no es encontrar un curso—hay cientos. El problema es encontrar uno que entienda que tu contador de 55 años no aprende igual que un desarrollador de 25. Y que tu gerente de ventas necesita ver cómo esto se conecta con sus comisiones, no con la arquitectura del sistema.
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="solution-framework responsive-grid content-section">
|
|
<div class="strategic-approach">
|
|
<h2 class="secondary-headline">Los 5 Tipos de Cursos Odoo (Y Cuál Realmente Necesitas)</h2>
|
|
<div class="body-text">
|
|
Después de evaluar docenas de programas de capacitación (y desperdiciar más dinero del que me gustaría admitir), aquí está la taxonomía real:
|
|
|
|
<div class="case-study-box">
|
|
<div class="case-study-title">1. Cursos "YouTube University" ($0-97)</div>
|
|
<div class="case-study-section">
|
|
<span class="case-study-label">Realidad:</span> Videos de 2019 con Odoo 13, grabados con micrófono de papa. Útiles para curiosidad básica, inútiles para implementación real.
|
|
</div>
|
|
<div class="case-study-section">
|
|
<span class="case-study-label">Para quién:</span> Si solo quieres ver "qué es esto de Odoo" sin compromiso.
|
|
</div>
|
|
</div>
|
|
|
|
<div class="case-study-box">
|
|
<div class="case-study-title">2. Certificaciones Oficiales Odoo ($3,000-5,000)</div>
|
|
<div class="case-study-section">
|
|
<span class="case-study-label">Realidad:</span> Excelente contenido técnico, pero asume que ya tienes experiencia ERP. Como aprender cirugía leyendo el manual.
|
|
</div>
|
|
<div class="case-study-section">
|
|
<span class="case-study-label">Para quién:</span> Consultores y desarrolladores que ya dominan la base.
|
|
</div>
|
|
</div>
|
|
|
|
<div class="case-study-box">
|
|
<div class="case-study-title">3. Bootcamps Intensivos ($5,000-15,000)</div>
|
|
<div class="case-study-section">
|
|
<span class="case-study-label">Realidad:</span> 2-4 semanas de inmersión total. Efectivos si puedes dedicarte 100%, desastrosos si intentas hacerlo "part-time".
|
|
</div>
|
|
<div class="case-study-section">
|
|
<span class="case-study-label">Para quién:</span> Empresas comprometidas con transformación real.
|
|
</div>
|
|
</div>
|
|
|
|
<div class="framework-box">
|
|
<strong>Advertencia de Veterano:</strong> El curso más caro no es necesariamente el mejor. He visto empresas gastar $20,000 en capacitación "premium" y fallar, mientras otras con cursos de $3,000 pero con mejor metodología triunfan. La diferencia está en la aplicación práctica y el seguimiento post-capacitación.
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="visual-container PROCESS_FLOW-framework responsive-visualization">
|
|
<div class="chart-container">
|
|
<svg viewBox="0 0 800 400" width="100%" height="100%"></svg>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="solution-engine responsive-grid content-section">
|
|
<div class="visual-container PERFORMANCE_DASHBOARD-solution responsive-visualization">
|
|
<div class="chart-container">
|
|
<svg viewBox="0 0 800 400" width="100%" height="100%"></svg>
|
|
</div>
|
|
</div>
|
|
<div class="roi-strategy">
|
|
<h2 class="secondary-headline">Cómo Implementar Capacitación Odoo que Genere ROI Real</h2>
|
|
<div class="body-text">
|
|
Aquí está la parte que me dolió aprender: puedes tener el mejor curso del mundo, pero si no tienes una estrategia de implementación, vas a fallar. (Mi primera implementación costó $35,000 y tardamos 8 meses en ver resultados porque no seguimos un plan estructurado.)
|
|
|
|
<div class="case-study-box">
|
|
<div class="case-study-title">Framework de Implementación Probado</div>
|
|
<div class="case-study-section">
|
|
<span class="case-study-label">Inversión Inicial:</span> $8,000-15,000 para empresa de 20-50 empleados (curso + tiempo de equipo + consultoría)
|
|
</div>
|
|
<div class="case-study-section">
|
|
<span class="case-study-label">Tiempo de Recuperación:</span> 4-6 meses con metodología estructurada
|
|
</div>
|
|
<div class="case-study-section">
|
|
<span class="case-study-label">ROI Proyectado:</span> 200-350% en el primer año (reducción costos operativos + aumento productividad)
|
|
</div>
|
|
</div>
|
|
|
|
El secreto está en la metodología de aprendizaje escalonado: primero los líderes de equipo (2 semanas intensivas), luego usuarios clave (1 mes con casos reales), finalmente toda la empresa (implementación gradual de 3 meses). Para empresas que buscan una <a href="/pt/odoo-hosting/hosting-odoo-completo-guia-2025/">infraestructura sólida de hosting Odoo</a>, es fundamental contar con una plataforma estable antes de la capacitación masiva. Intentar capacitar a todos al mismo tiempo es como intentar enseñar a nadar tirando a todos a la alberca—algunos flotan, la mayoría se ahoga.
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="results-evidence responsive-grid content-section">
|
|
<div class="proven-outcomes">
|
|
<h2 class="secondary-headline">Casos Reales: Empresas que Lo Lograron (Y Las Que No)</h2>
|
|
<div class="body-text">
|
|
<div class="case-study-box">
|
|
<div class="case-study-title">Éxito: Manufactura Textil (250 empleados)</div>
|
|
<div class="case-study-section">
|
|
<span class="case-study-label">Inversión:</span> $12,000 en capacitación corporativa personalizada
|
|
</div>
|
|
<div class="case-study-section">
|
|
<span class="case-study-label">Tiempo:</span> 4 meses de implementación escalonada
|
|
</div>
|
|
<div class="case-study-section">
|
|
<span class="case-study-label">Resultado:</span> Reducción 40% en tiempo de procesamiento de órdenes, ROI en 5 meses
|
|
</div>
|
|
<div class="case-study-section">
|
|
<span class="case-study-label">Instalación:</span> Utilizaron nuestra <a href="/pt/odoo/instalar-odoo-guia-paso-a-paso-2025/">guía de instalación Odoo paso a paso</a> para garantizar una base técnica sólida antes de la capacitación.
|
|
</div>
|
|
</div>
|
|
|
|
<div class="case-study-box">
|
|
<div class="case-study-title">Fracaso: Distribuidora de Alimentos (100 empleados)</div>
|
|
<div class="case-study-section">
|
|
<span class="case-study-label">Inversión:</span> $2,000 en cursos online genéricos
|
|
</div>
|
|
<div class="case-study-section">
|
|
<span class="case-study-label">Tiempo:</span> "Cuando tengan tiempo libre"
|
|
</div>
|
|
<div class="case-study-section">
|
|
<span class="case-study-label">Resultado:</span> Abandono del sistema después de 6 meses, pérdida total $45,000
|
|
</div>
|
|
</div>
|
|
|
|
La diferencia entre éxito y fracaso no está en el presupuesto—está en la metodología y el compromiso. Los casos exitosos invirtieron tiempo real en capacitación estructurada. El fracaso quiso atajos.
|
|
</div>
|
|
</div>
|
|
<div class="visual-container COMPARISON_MATRIX-results responsive-visualization">
|
|
<div class="chart-container">
|
|
<svg viewBox="0 0 800 400" width="100%" height="100%"></svg>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="faq-section content-section" itemprop="mainEntity" itemscope itemtype="https://schema.org/FAQPage">
|
|
<h2 class="secondary-headline">Preguntas Frecuentes: Capacitación Odoo 2025</h2>
|
|
|
|
<div class="faq-item" itemprop="mainEntity" itemscope itemtype="https://schema.org/Question">
|
|
<h3 class="faq-question" itemprop="name">¿Cuánto tiempo realmente toma dominar Odoo para uso empresarial?</h3>
|
|
<div class="faq-answer" itemprop="acceptedAnswer" itemscope itemtype="https://schema.org/Answer">
|
|
<div itemprop="text" class="body-text">
|
|
La respuesta honesta: depende de qué consideres "dominar". Para uso básico diario, <span class="highlight-metric">3-4 semanas con capacitación estructurada</span>. Para optimización avanzada y resolución de problemas, 3-6 meses. He visto gerentes competentes en operaciones básicas en un mes, pero tomó 4 meses antes de que pudieran troubleshoot problemas complejos sin llamarme a las 11 PM. (Sí, pasó más de una vez.)
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="faq-item" itemprop="mainEntity" itemscope itemtype="https://schema.org/Question">
|
|
<h3 class="faq-question" itemprop="name">¿Vale la pena pagar por cursos certificados oficiales de Odoo?</h3>
|
|
<div class="faq-answer" itemprop="acceptedAnswer" itemscope itemtype="https://schema.org/Answer">
|
|
<div itemprop="text" class="body-text">
|
|
Depende de tus objetivos. Si necesitas credibilidad para vender servicios o buscar empleo, sí—pero solo después de 6-12 meses de experiencia real. Si es para uso interno de tu empresa, la certificación "nice to have" pero no esencial. He visto consultores certificados que no pueden resolver problemas básicos y usuarios no certificados que son magos del sistema. <span class="highlight-stat">La experiencia práctica vale 10x más que el papel</span>.
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="faq-item" itemprop="mainEntity" itemscope itemtype="https://schema.org/Question">
|
|
<h3 class="faq-question" itemprop="name">¿Qué módulos de Odoo debo aprender primero?</h3>
|
|
<div class="faq-answer" itemprop="acceptedAnswer" itemscope itemtype="https://schema.org/Answer">
|
|
<div itemprop="text" class="body-text">
|
|
Olvídate de aprender "todos los módulos". Enfócate en tu flujo de trabajo crítico. Para 80% de empresas: 1) Ventas/CRM, 2) Inventario, 3) Contabilidad básica. Domina estos tres antes de aventurarte en manufactura, proyectos o sitio web. Para empresas grandes que requieren automatización avanzada, consideren también la <a href="/pt/odoo-ia/implementacion-odoo-ia-guia-paso-a-paso-2025/">implementación de IA en Odoo</a> como siguiente paso estratégico. Es como aprender a cocinar—primero domina el huevo frito antes de intentar el soufflé. Los cursos que prometen "dominar los 70 módulos" son puro humo.
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="faq-item" itemprop="mainEntity" itemscope itemtype="https://schema.org/Question">
|
|
<h3 class="faq-question" itemprop="name">¿Existen cursos especializados por industria?</h3>
|
|
<div class="faq-answer" itemprop="acceptedAnswer" itemscope itemtype="https://schema.org/Answer">
|
|
<div itemprop="text" class="body-text">
|
|
Sí, y son mucho más efectivos que los cursos genéricos. Proveedores como <a href="https://www.hashcodesolutions.com/odoo-erp-training/" target="_blank" rel="nofollow noopener noreferrer">HashCode Solutions</a> ofrecen capacitación especializada por industria. La diferencia es abismal—en lugar de aprender con ejemplos genéricos, trabajas con casos específicos de tu sector. <span class="highlight-stat">Empresas con capacitación especializada por industria tienen 60% más probabilidades de éxito</span> en la implementación.
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="conclusion-section content-section">
|
|
<h2 class="secondary-headline">Tu Plan de Acción: Los Próximos 72 Horas</h2>
|
|
<div class="body-text">
|
|
Mira, puedes seguir posponiendo la capacitación Odoo mientras tus competidores te adelantan, o puedes actuar. Después de 15+ implementaciones exitosas (y algunas no tan exitosas), aquí está tu framework de 72 horas:
|
|
|
|
<div class="framework-box">
|
|
<strong>Horas 0-24:</strong> Audita tu situación actual. ¿Qué tanto sabe tu equipo? ¿Cuál es tu presupuesto real? ¿Qué tan urgente es mejorar la eficiencia operativa?
|
|
<br><br>
|
|
<strong>Horas 24-48:</strong> Contacta 3 proveedores de capacitación corporativa. Pide referencias específicas de tu industria. No te conformes con demos genéricos.
|
|
<br><br>
|
|
<strong>Horas 48-72:</strong> Toma la decisión. No la pospongas "para el próximo trimestre". El costo de no actuar es mayor que el costo de invertir en capacitación adecuada.
|
|
</div>
|
|
|
|
La diferencia entre empresas que dominan Odoo y las que luchan con él no está en el presupuesto—está en la decisión de invertir en capacitación estructurada desde el principio. Para maximizar el éxito, también considera leer sobre <a href="/pt/odoo/odoo-community-enterprise-diferencias-2025/">las diferencias entre Odoo Community y Enterprise</a> y <a href="/pt/odoo/odoo-18-nuevas-funciones-2025/">las nuevas funciones de Odoo 18</a> para tomar decisiones informadas.
|
|
|
|
Tu competencia ya está optimizando procesos mientras tú sigues debatiendo si vale la pena. La pregunta no es si puedes permitirte capacitar a tu equipo—es si puedes permitirte no hacerlo.
|
|
|
|
<div class="insight-box">
|
|
<div class="insight-content">
|
|
<strong>Última reflexión:</strong> En 12 meses, vas a estar en uno de dos lugares: celebrando cómo Odoo transformó tu operación, o lamentándote por haber perdido otro año en la indecisión. La elección es tuya, pero el tiempo no espera.
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
</article>
|
|
|
|
<!-- D3.js Library -->
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/7.8.5/d3.min.js"></script>
|
|
|
|
<!-- D3.js Visualizations -->
|
|
<script>
|
|
// Create Timeline Visualization
|
|
function createTimelineVisualization() {
|
|
const svg = d3.select('.TIMELINE-simulation .chart-container svg');
|
|
const width = 800;
|
|
const height = 400;
|
|
const margin = {top: 50, right: 50, bottom: 50, left: 50};
|
|
|
|
// Clear any existing content
|
|
svg.selectAll("*").remove();
|
|
|
|
// Timeline data
|
|
const timelineData = [
|
|
{month: 0, label: "Inicio", value: 0, milestone: "Decisión"},
|
|
{month: 1, label: "Mes 1", value: 20, milestone: "Capacitación Líderes"},
|
|
{month: 2, label: "Mes 2", value: 40, milestone: "Usuarios Clave"},
|
|
{month: 3, label: "Mes 3", value: 65, milestone: "Implementación"},
|
|
{month: 4, label: "Mes 4", value: 85, milestone: "Optimización"},
|
|
{month: 5, label: "Mes 5", value: 95, milestone: "ROI Positivo"},
|
|
{month: 6, label: "Mes 6", value: 100, milestone: "Dominio Total"}
|
|
];
|
|
|
|
// Create scales
|
|
const xScale = d3.scaleLinear()
|
|
.domain([0, 6])
|
|
.range([margin.left, width - margin.right]);
|
|
|
|
const yScale = d3.scaleLinear()
|
|
.domain([0, 100])
|
|
.range([height - margin.bottom, margin.top]);
|
|
|
|
// Create line generator
|
|
const line = d3.line()
|
|
.x(d => xScale(d.month))
|
|
.y(d => yScale(d.value))
|
|
.curve(d3.curveMonotoneX);
|
|
|
|
// Add gradient
|
|
const gradient = svg.append("defs")
|
|
.append("linearGradient")
|
|
.attr("id", "timeline-gradient")
|
|
.attr("gradientUnits", "userSpaceOnUse")
|
|
.attr("x1", 0).attr("y1", height)
|
|
.attr("x2", 0).attr("y2", 0);
|
|
|
|
gradient.append("stop")
|
|
.attr("offset", "0%")
|
|
.attr("stop-color", "#FF6B35")
|
|
.attr("stop-opacity", 0.1);
|
|
|
|
gradient.append("stop")
|
|
.attr("offset", "100%")
|
|
.attr("stop-color", "#FF6B35")
|
|
.attr("stop-opacity", 0.6);
|
|
|
|
// Add area under line
|
|
const area = d3.area()
|
|
.x(d => xScale(d.month))
|
|
.y0(height - margin.bottom)
|
|
.y1(d => yScale(d.value))
|
|
.curve(d3.curveMonotoneX);
|
|
|
|
svg.append("path")
|
|
.datum(timelineData)
|
|
.attr("fill", "url(#timeline-gradient)")
|
|
.attr("d", area)
|
|
.style("opacity", 0)
|
|
.transition()
|
|
.duration(1000)
|
|
.style("opacity", 1);
|
|
|
|
// Add the line
|
|
const path = svg.append("path")
|
|
.datum(timelineData)
|
|
.attr("class", "timeline-path")
|
|
.attr("fill", "none")
|
|
.attr("stroke", "#FF6B35")
|
|
.attr("stroke-width", 3)
|
|
.attr("d", line);
|
|
|
|
// Animate the line
|
|
const totalLength = path.node().getTotalLength();
|
|
path
|
|
.attr("stroke-dasharray", totalLength + " " + totalLength)
|
|
.attr("stroke-dashoffset", totalLength)
|
|
.transition()
|
|
.duration(2000)
|
|
.ease(d3.easeLinear)
|
|
.attr("stroke-dashoffset", 0);
|
|
|
|
// Add milestones
|
|
const milestones = svg.selectAll(".milestone")
|
|
.data(timelineData)
|
|
.enter().append("g")
|
|
.attr("class", "milestone")
|
|
.attr("transform", d => `translate(${xScale(d.month)},${yScale(d.value)})`);
|
|
|
|
milestones.append("circle")
|
|
.attr("r", 0)
|
|
.attr("fill", "#FF6B35")
|
|
.attr("stroke", "#fff")
|
|
.attr("stroke-width", 2)
|
|
.transition()
|
|
.delay((d, i) => i * 300 + 500)
|
|
.duration(300)
|
|
.attr("r", 8);
|
|
|
|
// Add labels
|
|
milestones.append("text")
|
|
.attr("class", "milestone-label")
|
|
.attr("y", -15)
|
|
.attr("text-anchor", "middle")
|
|
.attr("font-size", "12px")
|
|
.attr("font-weight", "600")
|
|
.attr("fill", "#e0e0e0")
|
|
.text(d => d.milestone)
|
|
.style("opacity", 0)
|
|
.transition()
|
|
.delay((d, i) => i * 300 + 800)
|
|
.duration(300)
|
|
.style("opacity", 1);
|
|
|
|
// Add axes
|
|
svg.append("g")
|
|
.attr("transform", `translate(0,${height - margin.bottom})`)
|
|
.call(d3.axisBottom(xScale).tickFormat(d => `Mes ${d}`))
|
|
.style("opacity", 0)
|
|
.transition()
|
|
.duration(1000)
|
|
.style("opacity", 1);
|
|
|
|
svg.append("g")
|
|
.attr("transform", `translate(${margin.left},0)`)
|
|
.call(d3.axisLeft(yScale).tickFormat(d => `${d}%`))
|
|
.style("opacity", 0)
|
|
.transition()
|
|
.duration(1000)
|
|
.style("opacity", 1);
|
|
|
|
// Add title
|
|
svg.append("text")
|
|
.attr("x", width / 2)
|
|
.attr("y", 30)
|
|
.attr("text-anchor", "middle")
|
|
.attr("font-size", "18px")
|
|
.attr("font-weight", "bold")
|
|
.attr("fill", "#e0e0e0")
|
|
.text("Curva de Aprendizaje Odoo con Capacitación Estructurada");
|
|
}
|
|
|
|
// Create Process Flow Visualization
|
|
function createProcessFlowVisualization() {
|
|
const svg = d3.select('.PROCESS_FLOW-framework .chart-container svg');
|
|
const width = 800;
|
|
const height = 400;
|
|
|
|
// Clear any existing content
|
|
svg.selectAll("*").remove();
|
|
|
|
// Process flow data
|
|
const steps = [
|
|
{id: 1, x: 150, y: 100, label: "Evaluación\nInicial", color: "#FF6B35"},
|
|
{id: 2, x: 400, y: 100, label: "Capacitación\nLíderes", color: "#FF8A65"},
|
|
{id: 3, x: 650, y: 100, label: "Usuarios\nClave", color: "#E55A2B"},
|
|
{id: 4, x: 400, y: 250, label: "Implementación\nGradual", color: "#D84315"},
|
|
{id: 5, x: 150, y: 250, label: "Soporte\nContinuo", color: "#BF360C"},
|
|
{id: 6, x: 650, y: 250, label: "Optimización", color: "#8D2A0A"}
|
|
];
|
|
|
|
const connections = [
|
|
{source: 1, target: 2},
|
|
{source: 2, target: 3},
|
|
{source: 3, target: 4},
|
|
{source: 4, target: 5},
|
|
{source: 4, target: 6}
|
|
];
|
|
|
|
// Add arrow marker
|
|
svg.append("defs").append("marker")
|
|
.attr("id", "arrowhead")
|
|
.attr("viewBox", "-0 -5 10 10")
|
|
.attr("refX", 30)
|
|
.attr("refY", 0)
|
|
.attr("orient", "auto")
|
|
.attr("markerWidth", 10)
|
|
.attr("markerHeight", 10)
|
|
.append("svg:path")
|
|
.attr("d", "M 0,-5 L 10 ,0 L 0,5")
|
|
.attr("fill", "#666")
|
|
.style("stroke", "none");
|
|
|
|
// Draw connections
|
|
const links = svg.selectAll(".link")
|
|
.data(connections)
|
|
.enter().append("path")
|
|
.attr("class", "link")
|
|
.attr("d", d => {
|
|
const source = steps.find(s => s.id === d.source);
|
|
const target = steps.find(s => s.id === d.target);
|
|
return `M ${source.x} ${source.y} L ${target.x} ${target.y}`;
|
|
})
|
|
.attr("stroke", "#666")
|
|
.attr("stroke-width", 2)
|
|
.attr("fill", "none")
|
|
.attr("marker-end", "url(#arrowhead)")
|
|
.style("opacity", 0);
|
|
|
|
// Animate connections
|
|
links.transition()
|
|
.delay((d, i) => i * 200 + 1000)
|
|
.duration(500)
|
|
.style("opacity", 1);
|
|
|
|
// Draw process steps
|
|
const nodes = svg.selectAll(".process-step")
|
|
.data(steps)
|
|
.enter().append("g")
|
|
.attr("class", "process-step")
|
|
.attr("transform", d => `translate(${d.x},${d.y})`);
|
|
|
|
// Add rectangles
|
|
nodes.append("rect")
|
|
.attr("x", -60)
|
|
.attr("y", -30)
|
|
.attr("width", 120)
|
|
.attr("height", 60)
|
|
.attr("rx", 10)
|
|
.attr("fill", d => d.color)
|
|
.attr("stroke", "#fff")
|
|
.attr("stroke-width", 2)
|
|
.style("opacity", 0)
|
|
.transition()
|
|
.delay((d, i) => i * 200)
|
|
.duration(500)
|
|
.style("opacity", 1);
|
|
|
|
// Add text
|
|
nodes.append("text")
|
|
.attr("text-anchor", "middle")
|
|
.attr("dominant-baseline", "middle")
|
|
.attr("fill", "#fff")
|
|
.attr("font-size", "14px")
|
|
.attr("font-weight", "600")
|
|
.style("opacity", 0)
|
|
.selectAll("tspan")
|
|
.data(d => d.label.split("\n"))
|
|
.enter().append("tspan")
|
|
.attr("x", 0)
|
|
.attr("dy", (d, i) => i ? "1.2em" : 0)
|
|
.text(d => d);
|
|
|
|
nodes.selectAll("text")
|
|
.transition()
|
|
.delay((d, i) => i * 200 + 200)
|
|
.duration(300)
|
|
.style("opacity", 1);
|
|
|
|
// Add title
|
|
svg.append("text")
|
|
.attr("x", width / 2)
|
|
.attr("y", 30)
|
|
.attr("text-anchor", "middle")
|
|
.attr("font-size", "18px")
|
|
.attr("font-weight", "bold")
|
|
.attr("fill", "#e0e0e0")
|
|
.text("Proceso de Capacitación Odoo Estructurada");
|
|
}
|
|
|
|
// Create Performance Dashboard Visualization
|
|
function createPerformanceDashboard() {
|
|
const svg = d3.select('.PERFORMANCE_DASHBOARD-solution .chart-container svg');
|
|
const width = 800;
|
|
const height = 400;
|
|
|
|
// Clear any existing content
|
|
svg.selectAll("*").remove();
|
|
|
|
// Dashboard data
|
|
const metrics = [
|
|
{label: "Eficiencia Operativa", before: 45, after: 85, x: 200, y: 150},
|
|
{label: "Adopción Usuario", before: 20, after: 90, x: 400, y: 150},
|
|
{label: "ROI", before: -15, after: 250, x: 600, y: 150}
|
|
];
|
|
|
|
// Create gauge groups
|
|
const gauges = svg.selectAll(".gauge")
|
|
.data(metrics)
|
|
.enter().append("g")
|
|
.attr("class", "gauge")
|
|
.attr("transform", d => `translate(${d.x},${d.y})`);
|
|
|
|
// Background circles
|
|
gauges.append("circle")
|
|
.attr("class", "gauge-background")
|
|
.attr("r", 60)
|
|
.attr("fill", "none")
|
|
.attr("stroke", "#e0e0e0")
|
|
.attr("stroke-width", 15)
|
|
.style("opacity", 0)
|
|
.transition()
|
|
.duration(500)
|
|
.style("opacity", 1);
|
|
|
|
// Foreground arcs (animated)
|
|
const arc = d3.arc()
|
|
.innerRadius(45)
|
|
.outerRadius(60)
|
|
.startAngle(-Math.PI / 2);
|
|
|
|
gauges.append("path")
|
|
.attr("class", "gauge-foreground")
|
|
.attr("fill", "#FF6B35")
|
|
.attr("d", arc.endAngle(-Math.PI / 2))
|
|
.transition()
|
|
.duration(1500)
|
|
.delay((d, i) => i * 300)
|
|
.attrTween("d", function(d) {
|
|
const interpolate = d3.interpolate(-Math.PI / 2, -Math.PI / 2 + (Math.PI * 1.5 * d.after / 100));
|
|
return function(t) {
|
|
return arc.endAngle(interpolate(t))();
|
|
};
|
|
});
|
|
|
|
// Center text
|
|
gauges.append("text")
|
|
.attr("text-anchor", "middle")
|
|
.attr("font-size", "24px")
|
|
.attr("font-weight", "bold")
|
|
.attr("fill", "#e0e0e0")
|
|
.text(d => "0%")
|
|
.transition()
|
|
.duration(1500)
|
|
.delay((d, i) => i * 300)
|
|
.tween("text", function(d) {
|
|
const interpolate = d3.interpolate(0, d.after);
|
|
return function(t) {
|
|
this.textContent = Math.round(interpolate(t)) + "%";
|
|
};
|
|
});
|
|
|
|
// Labels
|
|
gauges.append("text")
|
|
.attr("y", 90)
|
|
.attr("text-anchor", "middle")
|
|
.attr("font-size", "14px")
|
|
.attr("fill", "#666")
|
|
.text(d => d.label)
|
|
.style("opacity", 0)
|
|
.transition()
|
|
.delay((d, i) => i * 300 + 500)
|
|
.duration(300)
|
|
.style("opacity", 1);
|
|
|
|
// Before/After bars
|
|
const barWidth = 30;
|
|
const barHeight = 100;
|
|
const barY = 250;
|
|
|
|
metrics.forEach((metric, i) => {
|
|
const barGroup = svg.append("g")
|
|
.attr("transform", `translate(${metric.x},${barY})`);
|
|
|
|
// Before bar
|
|
barGroup.append("rect")
|
|
.attr("x", -barWidth - 5)
|
|
.attr("y", barHeight)
|
|
.attr("width", barWidth)
|
|
.attr("height", 0)
|
|
.attr("fill", "#ccc")
|
|
.transition()
|
|
.delay(i * 300 + 1000)
|
|
.duration(500)
|
|
.attr("y", barHeight - (metric.before / 100 * barHeight))
|
|
.attr("height", metric.before / 100 * barHeight);
|
|
|
|
// After bar
|
|
barGroup.append("rect")
|
|
.attr("x", 5)
|
|
.attr("y", barHeight)
|
|
.attr("width", barWidth)
|
|
.attr("height", 0)
|
|
.attr("fill", "#4CAF50")
|
|
.transition()
|
|
.delay(i * 300 + 1200)
|
|
.duration(500)
|
|
.attr("y", barHeight - (metric.after / 100 * barHeight))
|
|
.attr("height", metric.after / 100 * barHeight);
|
|
|
|
// Legend
|
|
barGroup.append("text")
|
|
.attr("x", -barWidth - 5)
|
|
.attr("y", barHeight + 20)
|
|
.attr("text-anchor", "middle")
|
|
.attr("font-size", "12px")
|
|
.attr("fill", "#666")
|
|
.text("Antes")
|
|
.style("opacity", 0)
|
|
.transition()
|
|
.delay(i * 300 + 1500)
|
|
.duration(300)
|
|
.style("opacity", 1);
|
|
|
|
barGroup.append("text")
|
|
.attr("x", barWidth + 5)
|
|
.attr("y", barHeight + 20)
|
|
.attr("text-anchor", "middle")
|
|
.attr("font-size", "12px")
|
|
.attr("fill", "#666")
|
|
.text("Después")
|
|
.style("opacity", 0)
|
|
.transition()
|
|
.delay(i * 300 + 1500)
|
|
.duration(300)
|
|
.style("opacity", 1);
|
|
});
|
|
|
|
// Add title
|
|
svg.append("text")
|
|
.attr("x", width / 2)
|
|
.attr("y", 30)
|
|
.attr("text-anchor", "middle")
|
|
.attr("font-size", "18px")
|
|
.attr("font-weight", "bold")
|
|
.attr("fill", "#e0e0e0")
|
|
.text("Impacto de la Capacitación Estructurada");
|
|
}
|
|
|
|
// Create Comparison Matrix Visualization
|
|
function createComparisonMatrix() {
|
|
const svg = d3.select('.COMPARISON_MATRIX-results .chart-container svg');
|
|
const width = 800;
|
|
const height = 400;
|
|
|
|
// Clear any existing content
|
|
svg.selectAll("*").remove();
|
|
|
|
// Matrix data
|
|
const criteria = ["Costo", "Tiempo", "Efectividad", "Soporte", "ROI"];
|
|
const options = [
|
|
{name: "Curso Online", scores: [90, 20, 30, 10, 25]},
|
|
{name: "Certificación Oficial", scores: [40, 60, 70, 80, 65]},
|
|
{name: "Bootcamp Intensivo", scores: [20, 90, 95, 95, 90]},
|
|
{name: "Consultoría Personal", scores: [10, 70, 85, 100, 80]}
|
|
];
|
|
|
|
const cellWidth = 120;
|
|
const cellHeight = 40;
|
|
const startX = 150;
|
|
const startY = 80;
|
|
|
|
// Color scale
|
|
const colorScale = d3.scaleLinear()
|
|
.domain([0, 50, 100])
|
|
.range(["#ffcccc", "#FF8A65", "#4CAF50"]);
|
|
|
|
// Draw headers
|
|
svg.selectAll(".header")
|
|
.data(criteria)
|
|
.enter().append("text")
|
|
.attr("class", "matrix-header")
|
|
.attr("x", (d, i) => startX + i * cellWidth + cellWidth / 2)
|
|
.attr("y", startY - 10)
|
|
.attr("text-anchor", "middle")
|
|
.attr("font-size", "14px")
|
|
.attr("font-weight", "600")
|
|
.attr("fill", "#e0e0e0")
|
|
.text(d => d)
|
|
.style("opacity", 0)
|
|
.transition()
|
|
.delay((d, i) => i * 100)
|
|
.duration(300)
|
|
.style("opacity", 1);
|
|
|
|
// Draw rows
|
|
options.forEach((option, rowIndex) => {
|
|
const rowGroup = svg.append("g")
|
|
.attr("class", "matrix-row")
|
|
.attr("transform", `translate(0,${startY + rowIndex * cellHeight})`);
|
|
|
|
// Row label
|
|
rowGroup.append("text")
|
|
.attr("x", startX - 10)
|
|
.attr("y", cellHeight / 2)
|
|
.attr("text-anchor", "end")
|
|
.attr("dominant-baseline", "middle")
|
|
.attr("font-size", "14px")
|
|
.attr("font-weight", "600")
|
|
.attr("fill", "#e0e0e0")
|
|
.text(option.name)
|
|
.style("opacity", 0)
|
|
.transition()
|
|
.delay(rowIndex * 200 + 500)
|
|
.duration(300)
|
|
.style("opacity", 1);
|
|
|
|
// Cells
|
|
option.scores.forEach((score, colIndex) => {
|
|
const cellGroup = rowGroup.append("g")
|
|
.attr("transform", `translate(${startX + colIndex * cellWidth},0)`);
|
|
|
|
// Cell background
|
|
cellGroup.append("rect")
|
|
.attr("width", cellWidth - 5)
|
|
.attr("height", cellHeight - 5)
|
|
.attr("fill", colorScale(score))
|
|
.attr("stroke", "#fff")
|
|
.attr("stroke-width", 2)
|
|
.attr("rx", 5)
|
|
.style("opacity", 0)
|
|
.transition()
|
|
.delay(rowIndex * 200 + colIndex * 50 + 700)
|
|
.duration(300)
|
|
.style("opacity", 0.8);
|
|
|
|
// Score text
|
|
cellGroup.append("text")
|
|
.attr("x", (cellWidth - 5) / 2)
|
|
.attr("y", (cellHeight - 5) / 2)
|
|
.attr("text-anchor", "middle")
|
|
.attr("dominant-baseline", "middle")
|
|
.attr("font-size", "16px")
|
|
.attr("font-weight", "bold")
|
|
.attr("fill", score > 50 ? "#fff" : "#333")
|
|
.text(score)
|
|
.style("opacity", 0)
|
|
.transition()
|
|
.delay(rowIndex * 200 + colIndex * 50 + 900)
|
|
.duration(300)
|
|
.style("opacity", 1);
|
|
});
|
|
});
|
|
|
|
// Add legend
|
|
const legendWidth = 200;
|
|
const legendHeight = 20;
|
|
const legendX = width - legendWidth - 50;
|
|
const legendY = height - 50;
|
|
|
|
const legendGradient = svg.append("defs")
|
|
.append("linearGradient")
|
|
.attr("id", "legend-gradient");
|
|
|
|
legendGradient.selectAll("stop")
|
|
.data([
|
|
{offset: "0%", color: "#ffcccc"},
|
|
{offset: "50%", color: "#FF8A65"},
|
|
{offset: "100%", color: "#4CAF50"}
|
|
])
|
|
.enter().append("stop")
|
|
.attr("offset", d => d.offset)
|
|
.attr("stop-color", d => d.color);
|
|
|
|
svg.append("rect")
|
|
.attr("x", legendX)
|
|
.attr("y", legendY)
|
|
.attr("width", legendWidth)
|
|
.attr("height", legendHeight)
|
|
.attr("fill", "url(#legend-gradient)")
|
|
.style("opacity", 0)
|
|
.transition()
|
|
.delay(2000)
|
|
.duration(500)
|
|
.style("opacity", 1);
|
|
|
|
svg.append("text")
|
|
.attr("x", legendX)
|
|
.attr("y", legendY - 5)
|
|
.attr("font-size", "12px")
|
|
.attr("fill", "#666")
|
|
.text("Peor")
|
|
.style("opacity", 0)
|
|
.transition()
|
|
.delay(2000)
|
|
.duration(500)
|
|
.style("opacity", 1);
|
|
|
|
svg.append("text")
|
|
.attr("x", legendX + legendWidth)
|
|
.attr("y", legendY - 5)
|
|
.attr("text-anchor", "end")
|
|
.attr("font-size", "12px")
|
|
.attr("fill", "#666")
|
|
.text("Mejor")
|
|
.style("opacity", 0)
|
|
.transition()
|
|
.delay(2000)
|
|
.duration(500)
|
|
.style("opacity", 1);
|
|
|
|
// Add title
|
|
svg.append("text")
|
|
.attr("x", width / 2)
|
|
.attr("y", 30)
|
|
.attr("text-anchor", "middle")
|
|
.attr("font-size", "18px")
|
|
.attr("font-weight", "bold")
|
|
.attr("fill", "#e0e0e0")
|
|
.text("Comparación de Opciones de Capacitación Odoo");
|
|
}
|
|
|
|
// Initialize visualizations when page loads
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
// Create visualizations after a short delay
|
|
setTimeout(() => {
|
|
createTimelineVisualization();
|
|
createProcessFlowVisualization();
|
|
createPerformanceDashboard();
|
|
createComparisonMatrix();
|
|
}, 500);
|
|
|
|
// Re-create visualizations on window resize
|
|
let resizeTimer;
|
|
window.addEventListener('resize', function() {
|
|
clearTimeout(resizeTimer);
|
|
resizeTimer = setTimeout(function() {
|
|
createTimelineVisualization();
|
|
createProcessFlowVisualization();
|
|
createPerformanceDashboard();
|
|
createComparisonMatrix();
|
|
}, 250);
|
|
});
|
|
});
|
|
</script>
|
|
</div>
|
|
|
|
<!-- EEAT Component -->
|
|
<script src="/components/eeat.min.js"></script>
|
|
<script>
|
|
document.write(createEEAT({
|
|
author: {
|
|
name: "Equipo Odoo Expertos",
|
|
title: "Consultora Senior en Sistemas ERP",
|
|
experience: "15+ años de experiencia en transformación digital"
|
|
},
|
|
publishDate: "20 de julio de 2025",
|
|
modifiedDate: null
|
|
}));
|
|
</script>
|
|
|
|
<div id="footer-container"></div>
|
|
<div id="cookie-banner-container"></div>
|
|
|
|
<!-- Global Scripts -->
|
|
<script src="/components/header.min.js"></script>
|
|
<script src="/components/footer.min.js"></script>
|
|
<script src="/js/cookie-banner.min.js"></script>
|
|
|
|
<script>
|
|
// Initialize components
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
// Load header
|
|
document.getElementById('header-container').innerHTML = /*W6-static*/null;
|
|
|
|
// Load footer
|
|
document.getElementById('footer-container').innerHTML = /*W6-static*/null;
|
|
|
|
// Initialize cookie banner
|
|
if (typeof initCookieBanner === 'function') {
|
|
initCookieBanner();
|
|
}
|
|
});
|
|
</script>
|
|
</body>
|
|
</html> |