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