Ir al contenido
Punto Agave — Estrategia Integral: Flotilla + Asistencias + Campo | Grupo Veniu
Propuesta Técnica Actualizada

Punto Agave
Asistencias · Flotilla · Campo

Ecosistema integral que centraliza la gestión de tickets, el control de activos vehiculares con trazabilidad de neumáticos, y la ejecución de servicios en campo — todo conectado en un solo flujo.

3
Módulos Core
157
GVR Totales
8.2
Semanas PERT
v19
Odoo Enterprise
GVR-20260211-2235-B470 · Grupo Veniu — Integrador de Mundos · VSolutions
01 — Arquitectura de la Solución

Tres Módulos, Un Solo Flujo

La arquitectura cierra el ciclo completo: el cliente reporta → el sistema clasifica y gestiona → el equipo ejecuta en campo. Con una adaptación custom para que los neumáticos tengan trazabilidad como activos financieros.

🎧
Asistencias (Helpdesk)
Centro de Recepción de Tickets

Central única donde llegan todas las solicitudes de servicio. Portal adaptado para que tanto clientes como equipo interno gestionen incidencias con visibilidad total y SLA configurables.

Tickets por categoría: mantenimiento, llantas, incidencias, general
SLA configurable por tipo y prioridad
Portal web para creación de tickets desde el sitio web
Escalamiento automático y asignación por equipo
Conversión directa a orden de Field Service
Nativo + Adaptación Portal +22 GVR
🚗
Flotilla + Control de Llantas
Gestión de Activos Móviles

Gestión integral de la flota vehicular con adecuación técnica personalizada para el rastreo del ciclo de vida, rotación y costos asociados a los neumáticos como activos con trazabilidad financiera.

Cada llanta como activo individual con código único
Métricas de desgaste, presión y vida útil estimada
Historial de rotaciones entre posiciones y vehículos
Control financiero: costo/km, TCO, proveedor
Alertas automáticas de desgaste y garantía
Nativo Flotilla + Custom Llantas +15 GVR + Adapt.
📍
Servicio Externo (Field Service)
Ejecución en Campo

Los tickets validados en Asistencias se convierten en órdenes de trabajo para rutas en campo. Firmas digitales, reportes en tiempo real y evidencia fotográfica desde la app móvil.

Ticket → Orden de trabajo automática
Asignación de técnicos y rutas optimizadas
Firma digital y evidencia fotográfica en campo
Registro de inspecciones de llantas desde tablet
Reportes de cierre en tiempo real al backend
Nativo + Integración Llantas +26 GVR

Transformación Operativa

Operación Actual
Solicitudes de servicio por WhatsApp o llamada sin registro
Sin trazabilidad del estado de cada llanta
Rotación de neumáticos sin control de km ni desgaste
Reportes de campo en papel o fotos sueltas
Costo real por llanta desconocido
Sin alertas preventivas de mantenimiento
Clientes sin visibilidad del avance de su ticket
Con Ecosistema Veniu
Portal web con formulario dinámico que crea ticket con SLA
Cada llanta con código, DOT, marca, medidas y estado
Historial de rotaciones con odómetro y desgaste medido
Field Service con firma digital y evidencia geolocalizada
Costo/km, TCO y comparativa de rendimiento por marca
Crons de alerta: desgaste ≥80%, rotación y garantía
Portal de seguimiento con estatus en tiempo real
02 — Flujo Operativo Central

Del Ticket al Cierre: Un Solo Flujo

Cada solicitud recorre un camino trazable desde el portal hasta la resolución en campo, alimentando automáticamente el control de activos.

🌐
Portal Web
Formulario dinámico
🎧
Helpdesk
Ticket + SLA
🔍
Clasificación
Categoría + Prioridad
📍
Field Service
Orden de trabajo
🔧
Ejecución
Firma + Evidencia
Cierre
Actualiza activos

Flujos Específicos por Tipo de Ticket

🛞
Ticket: Llanta Dañada
1 Cliente reporta llanta ponchada desde portal web
2 Helpdesk crea ticket → Categoría: Neumáticos → Prioridad: Alta
3 Se genera orden de Field Service → Técnico asignado
4 Técnico inspecciona → Registra en fleet.tire.inspection
5 Si reparable: repara y registra costo. Si no: monta refacción
6 Firma digital + foto evidencia → Ticket cerrado automáticamente
7 fleet.tire actualiza: estado, profundidad, costo reparación
🔄
Ticket: Rotación Programada
1 Cron detecta llanta con +10,000 km sin rotación
2 Crea ticket automático en Helpdesk + alerta en fleet.tire.alert
3 Responsable valida y convierte a orden Field Service
4 Técnico ejecuta rotación → Registra en fleet.tire.rotation
5 Mide profundidad de las 4 posiciones → Inspección registrada
6 Se actualizan posiciones, odómetro y desgaste
7 Alerta resuelta → Ticket cerrado → KPIs actualizados
⚠️
Ticket: Desgaste Crítico
1 Cron diario detecta tread_depth ≤ 3mm
2 Alerta CRITICAL → Notificación inmediata a responsable
3 Ticket urgente en Helpdesk → SLA: 4 horas
4 Si ≤ 1.6mm → Bloqueo de vehículo hasta reemplazo
5 Field Service → Reemplazo → Llanta vieja a scrapped
6 Llanta nueva montada → Estado: mounted
🔧
Ticket: Mantenimiento General
1 Operador reporta incidencia vía portal o interno
2 Helpdesk clasifica → Categoría: Mantenimiento
3 Se vincula al vehículo de fleet.vehicle
4 Field Service para reparación → Registro de costo en flotilla
5 Firma del responsable → Cierre con evidencia
03 — Adaptación Custom

Control de Llantas: 32 Campos que Odoo No Tiene

Módulo de extensión veniu_fleet_tire que convierte cada neumático en un activo trazable con ciclo de vida completo.

32
Campos Custom
5
Modelos Nuevos
3
Crons Auto
4
Vistas Custom
2
Reportes
🛒
Adquisición
Compra + Proveedor
🔧
Montaje
Vehículo + Posición
📏
Inspecciones
Desgaste + Presión
🔄
Rotación
Cada 10K km
⚠️
Alertas
Crons automáticos
🗑️
Baja
Desecho + Reemplazo
CampoTipoDescripciónOdoo NativoCriticidad
🏷️
Identidad del Neumático
6 campos
tire_codeCharCódigo único auto-secuencial: PA-LLT-2026-001❌ No existeCrítico
brand_idMany2oneMarca (Michelin, Bridgestone, Continental) → fleet.tire.brand❌ No existeNuevo
tire_modelCharModelo específico (ej: "Pilot Sport 5")❌ No existeNuevo
tire_sizeCharMedida estándar: 225/45R17 con validación regex❌ No existeCrítico
dot_codeCharCódigo DOT del fabricante — semana/año de fabricación❌ No existeNuevo
serial_numberCharNúmero de serie para lectura QR/barras en campo❌ No existeNuevo
📍
Estado y Posición
6 campos
stateSelectionCiclo: new → mounted → spare → repair → scrapped❌ No existeCrítico
vehicle_idMany2oneVehículo donde está montada (se limpia al desmontar)⚠️ ParcialCrítico
positionSelectionFL (Frontal Izq), FR (Frontal Der), RL, RR, Spare❌ No existeCrítico
mount_dateDateFecha de montaje actual (auto al asignar)❌ No existeNuevo
mount_odometerFloatOdómetro al montar — para calcular km recorridos❌ No existeNuevo
km_drivenComputeodómetro_actual − mount_odometer — acumulativo entre montajes❌ No existeCrítico
📏
Métricas de Desgaste
6 campos
tread_depth_initialFloatProfundidad inicial (mm) — típico 7-9mm nueva❌ No existeCrítico
tread_depth_currentFloatÚltima medición (mm). Alerta ≤3mm, baja obligatoria ≤1.6mm❌ No existeCrítico
wear_percentageCompute(inicial − actual) / (inicial − 1.6) × 100 — progressbar visual❌ No existeCrítico
pressure_recommendedFloatPSI recomendada (hereda de ficha vehículo)❌ No existeNuevo
pressure_lastFloatÚltima medición PSI. Alerta si desviación >10%❌ No existeNuevo
estimated_life_kmComputeVida útil restante con regresión lineal del desgaste vs km❌ No existeCrítico
💰
Control Financiero
5 campos
purchase_costMonetaryCosto de adquisición con IVA❌ No existeCrítico
cost_per_kmComputepurchase_cost / km_driven — KPI clave para rendimiento❌ No existeCrítico
repair_cost_totalComputeSuma de costos de reparación de inspecciones❌ No existeNuevo
total_cost_ownershipComputepurchase_cost + repair_cost_total — TCO completo❌ No existeNuevo
vendor_idMany2oneProveedor → res.partner con tag llantas❌ No existeNuevo
📋
Historial y Relaciones
4 campos
inspection_idsOne2manyHistorial de inspecciones con mediciones, fotos, técnico❌ No existeCrítico
rotation_idsOne2manyHistorial de rotaciones con posición anterior/nueva y odómetro❌ No existeNuevo
warranty_expiryDateVencimiento garantía — alerta 30 días antes❌ No existeNuevo
notesHtmlObservaciones con editor rich text❌ No existeEstándar

Automatizaciones (Crons)

🔴
Alerta de Desgaste
Diario — 06:00 hrs

Si wear ≥ 80% → alerta warning. Si depth ≤ 1.6mm → alerta critical + ticket urgente en Helpdesk.

🟠
Rotación Programada
Semanal — Lunes

Si km_driven > 10,000 desde última rotación → alerta + ticket de rotación en Helpdesk.

🟡
Garantía por Vencer
Semanal — Miércoles

Si warranty_expiry dentro de 30 días → notificación para evaluar reclamación al proveedor.

04 — Adaptación del Portal Web

Formulario Dinámico para el Sitio Web

El cliente ya cuenta con el módulo de Website. Inyectamos un formulario multi-paso con campos condicionales que crea tickets de servicio directamente en Helpdesk con toda la información necesaria.

🔒 puntoagave.com/solicitud-servicio
🌵

Solicitud de Servicio

Punto Agave — Centro de Asistencias
Tipo
2
Datos
3
Detalle
4
Evidencia
Paso 1 — Tipo de Servicio
🛞 Incidencia de Neumático
Datos del Vehículo
Auto-completado desde la placa
Detalle de la Incidencia
Si no puede circular, se asigna prioridad URGENTE automáticamente
Evidencia Fotográfica
📸
Toma una foto del daño y súbela aquí
JPG, PNG — Máx 10 MB — Hasta 3 fotos
✅ llanta_dano_01.jpg (3.1 MB)

Lógica de Campos Condicionales por Categoría

🛞 Incidencia de Neumático
Trigger
Tipo = "Incidencia de neumático"
Muestra
Placa, posición llanta, tipo problema, ¿circula?, ubicación GPS, foto
Auto
Si "no circula" → prioridad URGENTE automática
Crea
Ticket Helpdesk → Categoría "Neumáticos" → Genera orden Field Service
🔧 Mantenimiento Preventivo
Trigger
Tipo = "Mantenimiento preventivo"
Muestra
Placa, tipo mantenimiento (aceite/frenos/general), km actuales, último servicio
Valida
Auto-completa modelo y datos del vehículo desde fleet.vehicle
Crea
Ticket Helpdesk → Categoría "Mantenimiento" → Agenda cita en calendario
🚗 Incidencia Vehicular
Trigger
Tipo = "Incidencia vehicular"
Muestra
Placa, descripción del problema, ¿accidente?, ¿lesionados?, ubicación GPS
Auto
Si "accidente" = Sí → prioridad URGENTE + escala a Dirección
Crea
Ticket Helpdesk → Field Service inmediato + notificación SMS al responsable
📋 Solicitud General
Trigger
Tipo = "Solicitud general"
Muestra
Asunto, descripción, prioridad manual, adjuntos opcionales
Crea
Ticket Helpdesk → Atención general → SLA: 48 horas
05 — Implementación Técnica v19

Código de Referencia: Modelo + Vista + Controller

Respetando las restricciones de Odoo v19: (no ), search estricto, line endings LF, manifest validado.

📄 models/fleet_tire.py — Fragmento clave del modelo
class FleetTire(models.Model): _name = 'fleet.tire' _description = 'Control de Neumáticos' _inherit = ['mail.thread', 'mail.activity.mixin'] tire_code = fields.Char(readonly=True, default=lambda s: _('New'), copy=False) brand_id = fields.Many2one('fleet.tire.brand', required=True) tire_size = fields.Char(required=True, help='Ej: 225/45R17') state = fields.Selection([ ('new', 'Almacén'), ('mounted', 'Montada'), ('spare', 'Refacción'), ('repair', 'Reparación'), ('scrapped', 'Baja'), ], default='new', tracking=True) vehicle_id = fields.Many2one('fleet.vehicle', tracking=True) position = fields.Selection([ ('fl','Frontal Izq'),('fr','Frontal Der'), ('rl','Trasera Izq'),('rr','Trasera Der'),('spare','Refacción')]) tread_depth_current = fields.Float('Profundidad Actual (mm)') wear_percentage = fields.Float(compute='_compute_wear', store=True) purchase_cost = fields.Monetary(currency_field='currency_id') cost_per_km = fields.Float(compute='_compute_cost_km', store=True) @api.depends('tread_depth_initial', 'tread_depth_current') def _compute_wear(self): for r in self: usable = r.tread_depth_initial - 1.6 r.wear_percentage = min( ((r.tread_depth_initial - (r.tread_depth_current or r.tread_depth_initial)) / usable) * 100, 100 ) if usable > 0 else 0
📄 views/fleet_tire_views.xml — Vista LIST (v19 estricto)
decoration-danger="wear_percentage >= 80" decoration-warning="wear_percentage >= 60 and wear_percentage < 80"> name="tire_code"/> name="brand_id"/> name="tire_size"/> name="vehicle_id"/> name="position"/> name="tread_depth_current"/> name="wear_percentage" widget="progressbar"/> name="km_driven"/> name="cost_per_km" widget="monetary"/> name="state" widget="badge" decoration-success="state == 'mounted'" decoration-danger="state == 'scrapped'"/>
📄 controllers/portal_ticket.py — Controller del formulario web
@http.route('/solicitud-servicio', type='http', auth='public', website=True) def ticket_form(self, **kw): vehicles = request.env['fleet.vehicle'].sudo().search([]) return request.render('veniu_fleet_tire.ticket_form', { 'vehicles': vehicles, 'categories': [ ('tire', '🛞 Incidencia de Neumático'), ('maintenance', '🔧 Mantenimiento Preventivo'), ('vehicle', '🚗 Incidencia Vehicular'), ('general', '📋 Solicitud General'), ], }) @http.route('/solicitud-servicio/enviar', type='http', auth='public', website=True, methods=['POST'], csrf=True) def ticket_submit(self, **post): # Auto-prioridad si vehículo no circula o accidente priority = '0' if post.get('can_drive') == 'no' or post.get('accident') == 'yes': priority = '3' # Urgente ticket = request.env['helpdesk.ticket'].sudo().create({ 'name': f"[{post['category'].upper()}] {post.get('subject', '')}", 'description': post.get('description'), 'priority': priority, }) # Adjuntar fotos como ir.attachment for f in request.httprequest.files.getlist('photos'): request.env['ir.attachment'].sudo().create({ 'name': f.filename, 'datas': base64.b64encode(f.read()), 'res_model': 'helpdesk.ticket', 'res_id': ticket.id, }) return request.render('veniu_fleet_tire.ticket_thanks', {'ticket': ticket})

Estructura del Módulo — Metodología Veniu 6 Capas

1️⃣
Modelo Funcional
models/

fleet_tire.py, fleet_tire_inspection.py, fleet_tire_rotation.py, fleet_tire_brand.py, fleet_tire_alert.py

2️⃣
Controlador de Rutas
controllers/

portal_ticket.py — Routes: /solicitud-servicio, /solicitud-servicio/enviar, /mi-portal/tickets

3️⃣
Vistas Funcionales
views/

List, Form, Search, Kanban para fleet.tire. Vistas embebidas para inspecciones y rotaciones. Dashboard.

4️⃣
Tags Bidireccionales
data/

Tags en contacto: "Proveedor Llantas", "Técnico Campo". Tags en vehículo: "Requiere Inspección", "Llantas OK".

5️⃣
Crons de Automatización
data/cron_data.xml

3 crons: alerta desgaste (diario), rotación programada (semanal), garantía por vencer (semanal).

6️⃣
Reportes Funcionales
report/

Reporte de inventario de llantas por vehículo. Reporte de costo/km y TCO comparativo por marca.

06 — Cronograma PERT

Roadmap de Implementación — 8.2 Semanas

Ejecución modular con sprints semanales y entregables validables. Duración PERT con IC 95%: 5.8 — 10.5 semanas.

Fase 1 — Semanas 1-2
Diagnóstico e Inteligencia
📐 15% del proyecto · BPMN 2.0 + GAP Analysis
Procesos AS-ISProcesos TO-BEMapeo de activosInventario inicial llantasDefinición de categorías
Fase 2 — Semana 3
Arquitectura y Kick-Off
⚙️ 10% · Diseño del módulo custom + cronograma
Ecosistema digitalDiseño fleet.tirePrototipo portalKick-off con equipo
Fase 3A — Semanas 4-5
Helpdesk + Portal Web
🎧 Sprint 1-2 · Módulo nativo + adaptación portal
Helpdesk configuradoCategorías y SLAFormulario web dinámicoCampos condicionalesController portal
Fase 3B — Semanas 5-6
Flotilla + Control de Llantas Custom
🛞 Sprint 3-4 · Módulo nativo + extensión veniu_fleet_tire
fleet.tire (5 modelos)32 campos customVistas list/form/searchCrons automáticosReportes
Fase 3C — Semana 7
Field Service + Integración
📍 Sprint 5 · Conexión Helpdesk → Campo → Llantas
Field Service configuradoTicket → Orden de trabajoFirma digitalInspección desde campoActualización automática
Fase 4 — Semana 8
Go-Live, UAT y Estabilización
🚀 Puesta en producción
UAT completoCarga datos inicialesCapacitación usuariosCapacitación técnicosGo-Live supervisadoSOPs y manuales
07 — Análisis Económico

Inversión y Retorno

Basado en los 157 GVR de complejidad técnica detectados con la Calculadora GVR Enterprise v2.0.

157
GVR Totales
Helpdesk + Flotilla + Campo + Custom
8.2
Semanas PERT
IC 95%: 5.8 — 10.5 sem
130%
ROI 3 Años
Payback: 16 meses
3
Usuarios
Licenciamiento activo
ConceptoDetalleMonto MXN
Implementación GVR157 GVR × $350$54,950.00
Descuento pronto pago (3 meses)5% sobre costo base−$2,747.50
Total ImplementaciónCon descuento$52,202.50
Licenciamiento Odoo (anual)Proyecto activo — 3 usuarios$9,864.00/año
Inversión Total Año 1Implementación + Licencias$62,066.50
📅
Cronograma de Pagos
Anticipo (25%): $13,050.63
Mes 1: $13,050.63
Mes 2: $13,050.63
Mes 3: $13,050.63
📊
Beneficios Anuales
Productividad: 3 × $2,500 = $7,500
Eficiencias GVR: 157 × $180 = $28,260
Reducción riesgo: 15% = $8,242.50
Total anual: $44,002.50
🏆
ROI a 3 Años
Beneficios 3 años: $132,007.50
Costo total 3 años: $57,452.00
Ganancia neta: $74,555.50
VPN (3 años): $74,555.50
IVA 16% no incluido · Precios en MXN · Tipo de cambio referencia: $18.5 MXN/USD · Vigencia: 30 días naturales · El licenciamiento Odoo es independiente y se factura por separado · El proyecto inicia una vez autorizada esta propuesta y recibido el anticipo.

¿Listo para transformar la operación de Punto Agave?

El proyecto inicia oficialmente una vez autorizada esta propuesta y recibido el comprobante del anticipo.

Autorizar Proyecto →
GRUPO VENIU
Integrador de Mundos · VSolutions
Folio: GVR-20260211-2235-B470 · 11 de febrero de 2026
Calculadora GVR Enterprise v2.0 · Metodología GVR + BPMN 2.0 + PERT/Monte Carlo
© Grupo Veniu 2026
  Así se verá los portales de
Punto Agave Digital (Ejemplos de concepto)     Más información   Diagrapa BPMN Mapa de Referencia     Más información