Skip to main content

Introduction

The Sales module (Ventas) provides commercial advisors and directors with tools to manage the complete sales lifecycle: from browsing available properties and generating quotes to processing sales and managing payment plans.

Accessing the Sales Dashboard

The sales module requires authentication with commercial roles:
Route::middleware(['auth', 'check.cargo:Directora Comercial,Asesora Comercial,Gerente,Administrador'])
Authorized Roles:
  • Directora Comercial – Commercial Director
  • Asesora Comercial – Sales Advisor
  • Gerente – Manager
  • Administrador – Administrator

Sales Dashboard Features

Property Catalog

Browse all available properties across active projects. Route: /catalogo
1

Access Catalog

Navigate to Catálogo from the sales menu.
2

Browse Properties

View available apartments, locals, and parking spaces with:
  • Property details (area, rooms, pricing)
  • Project information
  • Current availability status
  • Dynamic pricing based on project policies
3

View Property Details

Click any property to view full details at /catalogo/{tipo}/{id} where:
  • tipo = apartamento, local, or parqueadero
  • id = property identifier

Quotation Tool (Cotizador)

Generate professional PDF quotes for clients. Route: /cotizador Key features:
  • Select project, client, and specific property
  • Configure payment terms (plazo)
  • Auto-calculate down payment schedules
  • Export to branded PDF with project details

Creating Quotes

Learn the complete quotation workflow

Sales Management

Process and track all sales transactions. Route: /ventas Manage:
  • Ventas – Full sales with payment plans
  • Separaciones – Property reservations with deposits
  • Conversions – Convert separations to full sales

Processing Sales

Complete guide to creating and managing sales

Client Management

Maintain client database with complete profiles. Routes:
GET  /clientes              # List all clients
GET  /clientes/create       # Create new client
GET  /clientes/{documento}  # View client profile
Client records include:
  • Personal information (name, ID, contact)
  • Client type (Natural/Jurídica)
  • Document type (CC, CE, NIT, Pasaporte)
  • Purchase history

Payment Management

Track payments and installment plans. Routes:
GET  /plan-amortizacion-venta  # View payment plans
GET  /pagos                    # Manage payments

Sales Workflow Overview

Key Concepts

Separación (Reservation)

A temporary property hold with a deposit payment:
tipo_operacion: 'separacion'
valor_separacion: numeric        // Deposit amount (e.g., $5,000,000)
fecha_limite_separacion: date    // Expiration deadline
Business Rules:
  • Minimum amount: proyecto.valor_min_separacion
  • Maximum duration: proyecto.plazo_max_separacion_dias (e.g., 15 days)
  • Property state changes to “Separado”
  • Must convert to sale or expires automatically

Venta (Sale)

A complete sale with payment plan:
tipo_operacion: 'venta'
valor_total: numeric                    // Total property price + parking
cuota_inicial: numeric                  // Down payment amount
plazo_cuota_inicial_meses: integer      // Payment term (e.g., 12 months)
frecuencia_cuota_inicial_meses: integer // Payment frequency (1=monthly, 2=bimonthly)
valor_restante: numeric                 // Balance due after down payment
Payment Plan:
  • Down payment split into installments
  • Configurable frequency (monthly, bimonthly, quarterly, etc.)
  • Remaining balance due at term end
  • Auto-generated amortization schedule

Conversion

Transform a separación into a venta: Route: /ventas/{id}/convertir
1

Access Conversion Form

From a separación detail page, click Convertir a Venta.
2

Configure Payment Terms

Set:
  • Payment method (id_forma_pago)
  • Down payment amount (cuota_inicial)
  • Payment term (plazo_cuota_inicial_meses)
  • Payment frequency (frecuencia_cuota_inicial_meses)
3

Submit Conversion

System updates:
tipo_operacion: 'venta'
estado_operacion: 'convertida'
id_estado_inmueble: EstadoInmueble::where('nombre', 'Vendido')->first()
Generates payment plan and triggers pricing recalculation.

Sales Catalog Features

Property Filtering

Catalog supports filtering by:
  • Project – View properties from specific projects
  • Property Type – Apartments, locals, parking
  • Availability – Available, reserved, sold
  • Price Range – Dynamic pricing based on escalation

Dynamic Pricing Display

Pricing reflects real-time adjustments from the PriceEngine:
// Current price shown in catalog
$precio_actual = $apartamento->valor_final ?? $apartamento->valor_total

// Base price (for reference)
$precio_base = $apartamento->tipoApartamento->valor_estimado
Prices update automatically as units sell based on configured policies.

Property Details

Each property listing shows:
  • Unit number and location (tower, floor)
  • Area (constructed/private)
  • Rooms and bathrooms
  • Current price (including any escalations)
  • Availability status
  • Associated parking (if included)
  • Project amenities

Sales Goals & Tracking

Personal Sales Metrics

Advisors can view their performance at /metas: Route: /metas Displays:
  • Monthly sales targets (units/revenue)
  • Actual sales performance
  • Pending opportunities
  • Conversion rates (separaciones → ventas)
Endpoint:
GET /metas/pendientes-mes-actual  // Current month pending sales

Supported Transaction Types

Payment Methods (Formas de Pago)

Configurable at /formas-pago:
  • Contado (Cash)
  • Financiación (Financing)
  • Crédito bancario (Bank loan)
  • Leasing

Payment Concepts

Configured at /conceptos-pago:
  • Cuota inicial (Down payment)
  • Separación (Reservation deposit)
  • Cuota mensual (Monthly installment)
  • Saldo final (Final balance)

Payment Media

Configured at /medios-pago:
  • Transferencia bancaria (Wire transfer)
  • Efectivo (Cash)
  • Cheque
  • Tarjeta de crédito (Credit card)

Access Control

All sales routes require authentication:
Route::middleware(['auth', 'check.cargo:Directora Comercial,Asesora Comercial,Gerente,Administrador'])
Permissions:
  • Create/Update Sales – All commercial roles
  • Delete Sales – Restricted (administrator only)
  • View All Sales – Director/Manager
  • View Own Sales – Individual advisors
The sales interface uses VentasLayout.vue with sections:

Catálogo

Browse and search available properties across all active projects.

Cotizador

Generate professional quotes with payment simulations.

Ventas

Manage sales, separations, and conversions.

Clientes

Client database and purchase history.

Pagos

Payment tracking and plan management.

Metas

Personal sales goals and performance metrics.

Integration with Admin Module

Sales depend on administrator configuration:
  • Projects must be marked activo = true
  • Properties must have state “Disponible”
  • Pricing policies determine current prices
  • Payment terms inherit from project settings

Next Steps

Creating Quotes

Master the quotation tool and PDF generation.

Processing Sales

Learn the complete sales workflow from separation to payment plan.

Technical Reference

  • Controllers:
    • app/Http/Controllers/Ventas/CatalogoWebController.php
    • app/Http/Controllers/Ventas/CotizadorWebController.php
    • app/Http/Controllers/Ventas/VentaWebController.php
  • Services: app/Services/VentaService.php
  • Views: resources/js/Pages/Ventas/
  • Routes: routes/web.php:240-412

Build docs developers (and LLMs) love