Skip to main content

Overview

The Gerencia analytics dashboard provides comprehensive reporting tools to track sales performance, monitor project health, and make data-driven decisions. This guide covers how to effectively use each analytics component.

Accessing Analytics

1

Login as Manager

Authenticate with a Gerente role account.
2

Navigate to Dashboard

Go to GerenciaDashboard or directly to /gerencia/dashboard.
3

Apply Filters (Optional)

Configure dashboard filters:
  • Date range (desde / hasta)
  • Project
  • Advisor
  • Property state

Dashboard Sections

1. Global Summary Cards

The top of the dashboard displays high-level KPIs:

Ventas Totales (Total Sales)

// Sum of all sales in selected period
$ventasTotales = Venta::where('tipo_operacion', 'venta')
    ->whereBetween('fecha_venta', [$desde, $hasta])
    ->sum('valor_total');
Interpretation:
  • Tracks total revenue generated
  • Includes property + parking prices
  • Filters by date range and optional project/advisor
Use Cases:
  • Compare year-over-year performance
  • Track quarterly targets
  • Measure campaign effectiveness

Unidades Vendidas (Units Sold)

$unidadesVendidas = Venta::where('tipo_operacion', 'venta')
    ->whereBetween('fecha_venta', [$desde, $hasta])
    ->count();
Interpretation:
  • Number of completed sales (not separations)
  • Indicates sales velocity
  • Basis for escalation pricing triggers
Benchmark: Compare against project capacity and goals.

Inventario Disponible (Available Inventory)

$estadoDisponible = EstadoInmueble::where('nombre', 'Disponible')->first();
$inventario = Apartamento::where('id_estado_inmueble', $estadoDisponible->id)->count()
            + Local::where('id_estado_inmueble', $estadoDisponible->id)->count();
Interpretation:
  • Remaining sellable units
  • Excludes “Vendido”, “Separado”, “Bloqueado”
  • Critical for inventory planning
Action Items:
  • Low inventory → Prepare pricing increases
  • High inventory → Intensify marketing

2. Sales by Project Chart

Chart Type: Horizontal Bar Chart Data Structure:
{
  labels: ['Proyecto Aurora', 'Proyecto Esmeralda', 'Proyecto Mirador'],
  datasets: [
    {
      label: 'Valor Total',
      data: [450000000, 380000000, 290000000],
      backgroundColor: '#1e3a5f'
    },
    {
      label: 'Unidades',
      data: [18, 15, 12],
      backgroundColor: '#3b82f6'
    }
  ]
}
How to Read:
  • Each bar represents a project
  • Left axis: Revenue (COP)
  • Right axis: Units sold
  • Compare relative performance across portfolio
Insights:
  • Identify top-performing projects
  • Spot underperforming developments
  • Allocate sales resources effectively

3. Goals vs. Actual (Proyección vs Real)

Chart Type: Grouped Bar Chart Data Source:
// Metas (Goals) defined at /gerencia/metas
$metas = Meta::where('ano', $ano)
    ->where('mes', $mes)
    ->get();

// Real (Actual) from sales
$ventas = Venta::whereYear('fecha_venta', $ano)
    ->whereMonth('fecha_venta', $mes)
    ->groupBy('id_proyecto')
    ->get();
Comparison View:
Proyecto Aurora
  ┌───────────────────────────┐
  │ Meta Unidades:  15      │
  │ Real Unidades:  18  (120%) │
  ├───────────────────────────┤
  │ Meta Valor:     $450M    │
  │ Real Valor:     $475M (106%) │
  └───────────────────────────┘
  Status: ✓ Exceeded goal
Interpretation:
  • Green bars (actual > meta): Goal exceeded
  • Red bars (actual < meta): Under target
  • Percentage: Achievement rate
Action Items:
  • Under 80%: Immediate intervention needed
    • Review advisor performance
    • Adjust pricing/incentives
    • Intensify marketing
  • Over 120%: Consider raising goals
    • Accelerate pricing escalation
    • Reward high performers

4. Sales Velocity Chart

Chart Type: Bar Chart Metric: Average days from project start to unit sale Calculation:
$inicio = Carbon::parse($proyecto->fecha_inicio);
$ventasProyecto = Venta::where('id_proyecto', $id)->get();

$dias = $ventasProyecto->map(function ($venta) use ($inicio) {
    return $inicio->diffInDays(Carbon::parse($venta->fecha_venta));
});

$promedio = round($dias->avg(), 1);
Example:
Proyecto Aurora:     45.3 días
Proyecto Esmeralda:  67.8 días
Proyecto Mirador:    89.2 días
Interpretation:
  • Lower = Better: Faster sales velocity
  • Indicates market demand and pricing appropriateness
  • Benchmark across similar projects
Insights:
  • < 60 days: Strong demand, consider price increases
  • 60-90 days: Normal market pace
  • > 90 days: Review pricing/marketing strategy

5. Separation Effectiveness Table

View: Tabular data with advisor performance Columns:
  • Advisor name
  • Total separations created
  • Separations converted (to ventas)
  • Separations expired
  • Conversion rate
Sample Data:
┌─────────────────┬────────┬──────────┬──────────┬──────────┐
│ Asesor          │ Total  │ Ejecutadas │ Caducadas │ Tasa Conv │
├─────────────────┼────────┼──────────┼──────────┼──────────┤
│ María Rodríguez │   28   │     24     │     4     │   85.7%   │
│ Carlos Mendoza  │   22   │     18     │     4     │   81.8%   │
│ Ana Gutiérrez   │   19   │     13     │     6     │   68.4%   │
└─────────────────┴────────┴──────────┴──────────┴──────────┘
Benchmarks:
  • > 80%: Excellent conversion
  • 60-80%: Good performance
  • < 60%: Needs improvement
Coaching Opportunities:
  • High “Caducadas” → Follow-up training
  • Low “Total” → Pipeline generation focus
  • High conversion → Share best practices

6. Detailed Inventory Table

View: Expandable project-level inventory with filters Structure:
Proyecto Aurora [▼]
  ┌─────────┬───────────┬────────────┬────────────┬──────────────┐
UnidadPrecio BasePrecio ActualEstadoAsesor
  ├─────────┼───────────┼────────────┼────────────┼──────────────┤
Apto101$150M$158MVendidoM. Rodríguez
Apto102$150M$158MDisponible │ —             │
Apto201$165M$172MSeparadoC. Mendoza
  └─────────┴───────────┴────────────┴────────────┴──────────────┘
Filters:
'estado_inmueble' => integer | null
Use to view:
  • All available units (for sales team)
  • All sold units (for accounting)
  • Specific project inventory
Export: Available as Excel download

7. Advisor Performance Matrix

View: Table showing sales by advisor and project Columns:
  • Project
  • Advisor
  • Ventas (completed sales)
  • Separaciones (active reservations)
  • Conversion rate
Use Cases:
  • Commission calculations
  • Performance reviews
  • Territory assignment
  • Training needs identification

8. Inventory Status Doughnut Charts

Chart Type: Doughnut (one per project) Segments:
{
  labels: ['Disponible', 'Vendido', 'Separado', 'Bloqueado', 'Congelado'],
  datasets: [{
    data: [35, 45, 8, 2, 0],
    backgroundColor: ['#10b981', '#3b82f6', '#f59e0b', '#ef4444', '#6b7280']
  }]
}
Interpretation:
  • Center Number: Total units in project
  • Segment Size: Proportion in each state
  • Colors: Visual state identification
Health Indicators:
  • Large green (Disponible): Early project or slow sales
  • Large blue (Vendido): Successful project nearing sellout
  • Large orange (Separado): Active pipeline, monitor conversions
  • Red segments (Bloqueado): Investigate issues

9. Advisor Ranking Bar Chart

Chart Type: Horizontal Bar Chart Metric: Total revenue generated per advisor Query:
DB::table('ventas')
    ->join('empleados', 'empleados.id_empleado', '=', 'ventas.id_empleado')
    ->where('ventas.tipo_operacion', 'venta')
    ->select(
        DB::raw("CONCAT(empleados.nombre, ' ', empleados.apellido) as asesor"),
        DB::raw("SUM(ventas.valor_total) as total_ventas")
    )
    ->groupBy('empleados.id_empleado', 'empleados.nombre', 'empleados.apellido')
    ->orderByDesc('total_ventas')
    ->get();
Use Cases:
  • Identify top performers for rewards
  • Set benchmarks for team
  • Allocate leads to high performers

10. Monthly Absorption Line Chart

Chart Type: Multi-line time series Data:
{
  labels: ['2024-01', '2024-02', '2024-03', '2024-04', '2024-05'],
  datasets: [
    {
      label: 'Proyecto Aurora',
      data: [3, 5, 4, 6, 8]
    },
    {
      label: 'Proyecto Esmeralda',
      data: [2, 3, 5, 4, 6]
    }
  ]
}
Interpretation:
  • Upward trend: Accelerating sales
  • Flat line: Steady absorption
  • Downward trend: Slowing sales (investigate)
  • Spikes: Marketing campaigns or price adjustments
Action Items:
  • Compare to marketing spend
  • Correlate with pricing changes
  • Identify seasonal patterns

Payment Plan Consolidation (Plan Pagos CI)

Overview

Comprehensive view of all down payment schedules across sales. Access: Scroll to “Plan de Pagos Cuota Inicial” section

Table Structure

┌──────────┬────────┬────────┬─────────┬─────────┬─────────┬─────────┐
│ Proyecto │ Inmueble │ Cliente │ 2024-05 │ 2024-06 │ 2024-07 │ 2024-08 │
├──────────┼────────┼────────┼─────────┼─────────┼─────────┼─────────┤
│ Aurora   │ Apto101  │ Martínez │ 5M (S)  │ 4.2M    │ 4.2M    │ 70M (R) │
│ Aurora   │ Apto205  │ Gómez   │ 5M (S)  │ —       │ 8.3M    │ —       │
├──────────┼────────┼────────┼─────────┼─────────┼─────────┼─────────┤
│ TOTALES  │          │         │ 10M     │ 4.2M    │ 12.5M   │ 70M     │
└──────────┴────────┴────────┴─────────┴─────────┴─────────┴─────────┘

Legend:
  (S) = Separación (initial deposit)
  (R) = Restante (final balance)

Payment Structure Logic

// GerenciaEstadisticasService::planPagosCI

// Mes 0: Separation deposit
$mes0 = $fechaBase->format('Y-m');
$mesesRow[$mes0] = $separacion;

// Months 1..N: Installments based on frequency
$fechaPago = $fechaBase->copy()->addMonths($frecuencia);
for ($k = 1; $k <= $numPagos; $k++) {
    $mes = $fechaPago->format('Y-m');
    $mesesRow[$mes] = $cuotaPorPago;
    $fechaPago->addMonths($frecuencia);
}

// Month N+1: Remaining balance
$mesRestante = $fechaBase->copy()->addMonths($plazo + 1)->format('Y-m');
$mesesRow[$mesRestante] = $valorRestante;

Use Cases

Cash Flow Forecasting:
  • Totals row shows expected monthly income
  • Plan for construction financing
  • Treasury management
Client Follow-up:
  • Identify upcoming payment dates
  • Proactive collection management
  • Payment reminder automation
Financial Reporting:
  • Export to Excel for accounting
  • Share with investors/stakeholders
  • Audit trail

Exporting Data

Excel Export (Plan Pagos CI)

1

Configure Filters

Set desired date range, project, and advisor filters on dashboard.
2

Click Export Button

In the “Plan Pagos CI” section, click Exportar Excel.
3

Download File

System generates:
// Route
GET /gerencia/plan-pagos-ci/export?desde=2024-01-01&hasta=2024-12-31

// Controller
return Excel::download(
    new PlanPagosCIExport($encabezados, $filas, $totales),
    'plan_pagos_cuota_inicial.xlsx'
);
File includes:
  • All filtered sales
  • Monthly payment schedule
  • Totals row
  • Formatted as currency
File Format: .xlsx (Excel 2007+)

Print/PDF Export

Use browser print functionality:
1

Optimize View

Apply desired filters and scroll to section.
2

Print

Ctrl+P (Windows) or Cmd+P (Mac)
3

Select PDF

Choose “Save as PDF” as printer destination.

Setting Sales Goals

Creating Metas

1

Navigate to Goals Management

Go to /gerencia/metas from the Gerencia menu.
2

Click Create Goal

Select Nueva Meta button.
3

Configure Goal Parameters

Enter:
id_proyecto: integer       // Project
ano: integer               // Year (e.g., 2024)
mes: integer               // Month (1-12)
meta_unidades: integer     // Target units
meta_valor: numeric        // Target revenue
Example:
{
  "id_proyecto": 5,
  "ano": 2024,
  "mes": 6,
  "meta_unidades": 15,
  "meta_valor": 450000000
}
4

Save Goal

Submit to create the goal. It will appear in “Proyección vs Real” chart.

Editing Goals

1

View Goals List

At /gerencia/metas, see all defined goals.
2

Click Edit

Select goal to modify.
3

Update Values

Adjust meta_unidades or meta_valor as needed.
4

Save Changes

Dashboard updates automatically to compare new targets.

Login Activity Monitoring

Viewing Login Logs

Route: /gerencia/login-logs Displays:
[
    'empleado_nombre' => string,
    'login_time' => timestamp,
    'ip_address' => string,
    'user_agent' => string,
]
Use Cases:
  • Security audits
  • Track advisor activity
  • Identify unusual access patterns
  • Compliance reporting

Best Practices

Regular Monitoring Schedule

Daily:
  • Check global summary cards
  • Review separation effectiveness
  • Monitor new sales
Weekly:
  • Analyze sales velocity
  • Review advisor performance
  • Check inventory levels
Monthly:
  • Compare goals vs. actual
  • Export payment plan for accounting
  • Review and adjust sales goals
  • Generate executive reports

Using Filters Effectively

Project Focus:
?proyecto_id=5
Use to deep-dive into single project performance. Advisor Review:
?asesor_id=12
Prepare for 1-on-1 performance meetings. Quarter Analysis:
?desde=2024-04-01&hasta=2024-06-30
Quarterly board presentations. Year Comparison:
// Current year
?desde=2024-01-01&hasta=2024-12-31

// Previous year
?desde=2023-01-01&hasta=2023-12-31
Compare with new browser tab/window.

Troubleshooting

Dashboard Loading Slowly

Cause: Large date range or no filters. Fix:
  1. Apply project filter to reduce data
  2. Use shorter date ranges (quarterly vs. multi-year)
  3. Contact administrator to implement caching

Goals Not Appearing

Cause: No metas defined for selected period. Fix:
  1. Verify goals exist at /gerencia/metas
  2. Check that goal month/year matches dashboard filter
  3. Create new goals if missing

Export Button Not Working

Cause: No data in selected period/filters. Fix:
  1. Adjust filters to include data
  2. Check that sales exist in selected range
  3. Verify browser allows downloads

Technical Reference

  • Service: app/Services/GerenciaEstadisticasService.php
  • Controller: app/Http/Controllers/Gerencia/GerenciaDashboardWebController.php
  • View: resources/js/Pages/Gerencia/Dashboard/Index.vue
  • Export: app/Exports/PlanPagosCIExport.php
  • Routes: routes/web.php:414-448

Build docs developers (and LLMs) love