Saltar a contenido

Módulo: Inventario

El módulo de Inventario gestiona el catálogo completo de propiedades de A Terceros Inmobiliaria, desde pre-inventario hasta recuperación de viviendas.

Ubicación

inventario/
├── models.py          # Casa, PreInventario, VisitaRecuperacion, etc.
├── views.py           # Vistas del módulo
├── urls.py            # URLs
├── serializers.py     # API serializers
├── forms.py           # Formularios
├── utils.py           # Utilidades
└── templates/
    └── inventario/

Modelos Principales

Casa

Representa una vivienda en el catálogo.

Campos principales: - clave: Identificador único de la casa - proyecto: Nombre del proyecto/fraccionamiento - tipo_vivienda: Tipo (casa, departamento, etc.) - modelo: Modelo de la construcción - plaza: Plaza a la que pertenece - direccion, colonia, cp: Ubicación - latitude, longitude: Coordenadas GPS - recamaras, banos: Características - superficie_terreno, superficie_construccion: Metros cuadrados - precio_venta, precio_contado, enganche: Precios - estatus: Estado actual - disponible: Boolean de disponibilidad

PreInventario

Registro de propiedades que están entrando al inventario pero aún no están listas para venta.

Campos principales: - clave: Identificador - proyecto: Proyecto al que pertenece - estatus: Estado del proceso - fecha_ingreso: Cuándo entró a pre-inventario - observaciones: Notas sobre la propiedad

VisitaRecuperacion

Registro de visitas para recuperación de viviendas (invasiones, abandono, etc.).

Campos principales: - casa: Relación con Casa - fecha_visita: Fecha de la visita - tipo_visita: Tipo (recuperación, inspección, etc.) - observaciones: Hallazgos - fotos: Archivos adjuntos - responsable: Usuario que realizó la visita

AnexoCasa

Archivos adjuntos de casas (fotos, documentos, planos).

Campos principales: - casa: Relación con Casa - archivo: FileField (almacenado en S3) - tipo_anexo: Categoría del archivo - descripcion: Descripción opcional - fecha_creacion: Timestamp

ContactoProspecto

Registro de contactos interesados en una propiedad.

Campos principales: - casa: Propiedad de interés - nombre, telefono, email: Datos de contacto - fecha_contacto: Cuándo se registró - origen: De dónde vino (web, llamada, etc.) - atendido: Boolean

Funcionalidades

1. Catálogo de Propiedades

Vista: /inventario/

Listado completo de propiedades filtrable por: - Plaza - Proyecto - Tipo de vivienda - Disponibilidad - Rango de precios

def listar_casas(request):
    plaza = request.user.perfil.plaza

    casas = Casa.objects.filter(
        plaza=plaza,
        disponible=True
    ).order_by('-fecha_creacion')

    # Aplicar filtros
    if proyecto := request.GET.get('proyecto'):
        casas = casas.filter(proyecto=proyecto)

    return render(request, 'inventario/listado.html', {
        'casas': casas
    })

2. Detalle de Propiedad

Vista: /inventario/casa/<clave>/

Información completa de una casa: - Datos generales - Características - Ubicación (mapa) - Galería de fotos - Historial de apartados - Documentos adjuntos

3. Crear/Editar Propiedad

Formulario para dar de alta nuevas propiedades o editar existentes.

Campos requeridos: - Clave - Proyecto - Tipo de vivienda - Plaza - Precios

Validaciones: - Clave única - Precios válidos (contado < venta) - Coordenadas GPS válidas

4. Pre-Inventario

Proceso para casas que están entrando pero no están listas:

graph LR
    A[Ingreso] --> B[Revisión]
    B --> C[Documentación]
    C --> D[Aprobación]
    D --> E[Inventario Activo]

5. Recuperación de Viviendas

Workflow para recuperar casas invadidas o abandonadas:

  • Programar visita
  • Registrar hallazgos
  • Subir evidencia fotográfica
  • Gestionar proceso legal
  • Actualizar estatus

6. Integración con SAP

Las casas se sincronizan con SAP HANA:

from services.sap_service import SAPService

def crear_casa_con_sap(data, usuario):
    # Crear en BD local
    casa = Casa.objects.create(**data, usuario_creacion=usuario)

    # Enviar a SAP
    try:
        sap_response = SAPService.crear_vivienda({
            'Clave': casa.clave,
            'Proyecto': casa.proyecto,
            'PrecioVenta': float(casa.precio_venta),
            # ...
        })
        casa.id_sap = sap_response['Id']
        casa.save()
    except Exception as e:
        # Log pero no falla la operación local
        logger.error(f"Error SAP: {e}")

    return casa

7. Anexos y Galería

Subir y gestionar archivos relacionados con cada casa:

  • Fotos: Imágenes de la propiedad
  • Planos: Planos arquitectónicos
  • Documentos: Escrituras, permisos, etc.
  • Videos: Tours virtuales

Los archivos se almacenan en AWS S3 y se procesan (compresión de imágenes) antes de subir.

8. Geolocalización

Cada casa tiene coordenadas GPS que permiten: - Mostrar en mapa (Google Maps) - Búsqueda por proximidad - Cálculo de distancias

API Endpoints

GET /api/inventario/casas/

Lista todas las casas (filtrable).

Query params: - plaza: Filtrar por plaza - disponible: true/false - proyecto: Nombre del proyecto - precio_min, precio_max: Rango de precios

Response:

{
  "count": 150,
  "results": [
    {
      "id": 1,
      "clave": "MTY-001",
      "proyecto": "Hacienda del Bosque",
      "tipo_vivienda": "Casa",
      "precio_venta": "850000.00",
      "precio_contado": "800000.00",
      "disponible": true,
      "plaza": "MONTERREY"
    }
  ]
}

GET /api/inventario/casas/{id}/

Detalle de una casa específica.

POST /api/inventario/casas/

Crear nueva casa (requiere permisos).

PUT /api/inventario/casas/{id}/

Actualizar casa existente.

DELETE /api/inventario/casas/{id}/

Eliminar (soft delete) una casa.

Permisos

  • Corporativo: CRUD completo
  • Coordinador: Ver y editar de su plaza
  • RC: Ver de su plaza
  • Marketing: Ver todas

Reportes

  • Inventario disponible por plaza
  • Casas vendidas vs. disponibles
  • Tiempo promedio en inventario
  • Reporte de recuperaciones

Integraciones

  • SAP: Sincronización de casas
  • Google Maps: Geolocalización
  • AWS S3: Almacenamiento de archivos

Próximas Mejoras

  • [ ] Búsqueda por voz
  • [ ] Realidad aumentada para tours
  • [ ] Predicción de precios con ML
  • [ ] Integración con portales inmobiliarios

Ver también: - Modelos de Inventario - API de Inventario