# Propuesta Técnica y Comercial: Desarrollo de Software a la Medida
## Sistema Integral de Gestión (ERP/POS) para Ferretería y Materiales de Construcción

**Cliente:** Ferretería San Gabriel  
**Alcance:** Administración de 2 Sucursales (Matriz y Sucursal 2), Ferretería General y Patio de Materiales a Granel  
**Tipo de Solución:** Progressive Web Application (PWA) Offline-First + API REST / WebSockets  
**Stack Tecnológico:** Angular 22 + NestJS + Drizzle ORM + PostgreSQL + S3 + Redis  
**Fecha de Emisión:** Octubre 2026  
**Vigencia:** 30 días naturales  

---

## 1. Resumen Ejecutivo

### 1.1 Contexto y Desafío
**Ferretería San Gabriel** opera un modelo de negocio híbrido de alta complejidad:
1. **Ferretería tradicional:** Miles de SKUs con venta por pieza, metro, kilo, bolsa o caja (tornillería, herramientas, plomería, electricidad, pinturas).
2. **Materiales pesados y agregados de construcción:** Comercialización de tabiques, blocks, cemento, cal, arena y grava, donde las unidades de despacho varían drásticamente entre el mostrador y el patio: **por bote (19 L), por bulto/saco, por metro cúbico ($m^3$) o por camión completo (viaje de 6 $m^3$ o 14 $m^3$)**.
3. **Operación Multi-Sucursal (2 Sucursales):** Necesidad de transferir mercancía entre sucursales, consultar inventario cruzado al momento de cotizar a un cliente y consolidar cortes de caja y métricas directivas.
4. **Condiciones de Patio:** El patio de materiales y zonas de carga frecuentemente sufren de cobertura intermitente de red Wi-Fi o telefonía móvil, por lo que los despachadores y choferes requieren capturar salidas y validar remisiones de manera **offline** con sincronización automática.

### 1.2 La Solución Propuesta
Un sistema web progresivo (PWA) desarrollado con estándares de última generación, de alto rendimiento, modular y diseñado a la medida de los flujos de Ferretería San Gabriel. 

La propuesta se organiza en **tres modelos de adopción progresiva (Starter, Business y Enterprise)**, garantizando que el negocio pague únicamente por los módulos que requiere hoy, manteniendo la puerta abierta para escalar sin rehacer arquitectura ni perder datos.

---

## 2. Arquitectura de Software y Stack Tecnológico

La arquitectura seleccionada prioriza **cero costo de licencias de terceros, alta velocidad de respuesta y operación ininterrumpida aun con cortes de red**.

```
┌─────────────────────────────────────────────────────────────────────────────┐
│                       ARQUITECTURA DEL ECOSISTEMA                           │
└─────────────────────────────────────────────────────────────────────────────┘

 [ Mostrador / Caja ]      [ Patio / Almacén ]        [ Dirección / Admin ]
  Angular 22 (Desktop)      Angular 22 PWA (Móvil)     Angular 22 Dashboard
       │                          │                          │
       │   HTTPS / REST / WSS     │  Offline Cache (IndexedDB)│
       ▼                          ▼                          ▼
 ┌───────────────────────────────────────────────────────────────────────────┐
 │                   API GATEWAY / BACKEND (NestJS)                         │
 │  • Auth JWT & RBAC (Roles)            • WebSockets Sincronización 2 Suc.  │
 │  • Módulo POS & Mostrador             • Motor de Conversión Volumétrica   │
 │  • Módulo Multi-Sucursal & Almacenes  • Módulo Logística & Fletes         │
 └───────────────────────────────────────────────────────────────────────────┘
                                   │
                 ┌─────────────────┴─────────────────┐
                 ▼                                   ▼
 ┌───────────────────────────────┐   ┌───────────────────────────────┐
 │   PostgreSQL + Drizzle ORM    │   │  Redis (Cache & Concurrencia) │
 │  • Datos transaccionales      │   │  • Sesiones y bloqueos stock  │
 │  • Tipado estricto en BD      │   │  • Eventos en tiempo real     │
 └───────────────────────────────┘   └───────────────────────────────┘
                 │
                 ▼
 ┌───────────────────────────────┐
 │  Almacenamiento S3 (Rust/AWS) │
 │  • Fotos de catálogo y ficha  │
 │  • Firmas de remisión en obra │
 │  • Comprobantes y facturas    │
 └───────────────────────────────┘
```

### Componentes del Stack
* **Frontend — Angular 22 PWA:** 
  * Utilización de **Signals reactivos** para una interfaz ultrarrápida en el mostrador.
  * **Service Worker con soporte Offline-First:** Los despachadores en el patio pueden registrar pesajes, botes despachados y firmas de remisión en dispositivos móviles sin internet; al recuperar señal, los movimientos se sincronizan con la base central.
  * Diseño visual con **Tailwind CSS + Angular Material** con paleta industrial moderna de alto contraste optimizada para pantallas táctiles y lectores de código de barras.
* **Backend — NestJS (Node.js / TypeScript):**
  * Framework empresarial modular con arquitectura limpia (Clean Architecture / Hexagonal).
  * Controladores RESTful con validaciones estrictas (`class-validator` y `Zod`).
  * Conexión por WebSockets para actualización instantánea de existencias entre sucursal 1 y sucursal 2.
* **Capa de Persistencia — Drizzle ORM + PostgreSQL:**
  * Drizzle ORM ofrece tipado seguro de punto a punto (End-to-End Type Safety), minimizando fallas de ejecución y eliminando el overhead de ORMs pesados.
  * PostgreSQL provee soporte robusto para transacciones ACID, integridad referencial y auditoría estricta de existencias.
* **Almacenamiento Multimedia — S3 (JsRust / MinIO / AWS S3 compatible):**
  * Repositorio seguro para imágenes de productos, fichas técnicas, firmas digitales de entrega en obra y respaldos.
* **Caché y Mensajería — Redis:**
  * Control de concurrencia para evitar sobreventa de material en tránsito y caché ultrarrápida del catálogo de mostrador.

---

## 3. Módulo Especializado: Patio de Materiales y Venta a Granel

El núcleo diferenciador del software para Ferretería San Gabriel es la administración flexible de **materiales pesados y agregados**:

### 3.1 Unidades de Medida y Factores de Conversión Dinámica
El sistema permite configurar productos con **múltiples presentaciones y unidades de venta simultáneas**, manteniendo un único inventario maestro consolidado:

| Material | Unidad de Compra (Entrada) | Unidad de Venta (Mostrador/Patio) | Factor de Conversión Interno |
| :--- | :--- | :--- | :--- |
| **Arena de Río / Triturada** | Metro Cúbico ($m^3$) o Camión ($14\,m^3$) | Bote (19 L), Medio $m^3$, $m^3$, Camión ($6\,m^3$) | $1\,m^3 \approx 52\text{ a }54\text{ botes}$ *(calibrable)* |
| **Grava (3/4, 1/2, mixta)** | Metro Cúbico ($m^3$) o Camión ($14\,m^3$) | Bote (19 L), $m^3$, Viaje completo | $1\,m^3 \approx 52\text{ botes}$ *(calibrable)* |
| **Cemento Tolteca/Cruz Azul** | Tonelada (20 bultos) | Bulto (50 kg), Tonelada (paletizado) | $1\text{ Ton} = 20\text{ bultos}$ |
| **Tabique Rojo Recocido** | Millar (1,000 pzas) / Camión | Pieza individual, Ciento, Millar | Venta fraccionada con descuento por volumen |
| **Block Pesado / Ligero** | Tarima (60 a 72 pzas según molde) | Pieza suelta, Tarima completa | Control de tarimas retornables / depósito |
| **Varilla Corrugada (3/8", 1/2")**| Tonelada / Atado | Tramo de 12 m, Kilo | Conversión teórica y pesaje en báscula |

### 3.2 Reglas de Negocio en Patio
1. **Calibración de Botes por Metro Cúbico:** Parámetro ajustable por sucursal para compensar el copeteado del bote y la humedad del material.
2. **Margen de Merma Tolerable:** Registro de pérdidas por viento, traspaleo o asentamiento en tolva con justificación administrativa.
3. **Autorización y Registro de Entrega de Materiales (Doble Validación):**
   * Al concretar la venta en mostrador, el cajero ejecuta la acción **"Autorizar Salida de Material"**, emitiendo un **Ticket de Venta** + **Orden de Salida con Código QR**.
   * En el patio de carga, el bodeguero escanea la orden desde su teléfono/tablet para **"Registrar Entrega de Material"**, confirmando los botes o $m^3$ cargados y liberando el material. Esto evita fugas o entregas duplicadas.

---

## 4. Gestión Multi-Sucursal (2 Sucursales)

El sistema centraliza las operaciones de ambas sucursales con autonomía operativa local:

```
┌────────────────────────┐                   ┌────────────────────────┐
│      SUCURSAL 1        │                   │      SUCURSAL 2        │
│  (Matriz / Ferretería) │                   │  (Materiales y Obra)   │
└───────────┬────────────┘                   └───────────┬────────────┘
            │                                            │
            │◄─────────── Traspaso de Mercancía ────────►│
            │           (Guía y Validación QR)           │
            │                                            │
            ▼                                            ▼
┌─────────────────────────────────────────────────────────────────────┐
│                    BASE DE DATOS UNIFICADA                          │
│  • Inventario por Sucursal y Consolidado                           │
│  • Consulta de Existencias Remotas en POS                          │
│  • Venta cruzada (Cobra en Suc. 1, retira en Suc. 2)               │
│  • Cortes de Caja Independientes y Balances Consolidados            │
└─────────────────────────────────────────────────────────────────────┘
```

* **Traspasos Blindados:** Orden de transferencia con estatus `Solicitado` $\rightarrow$ `En Tránsito` $\rightarrow$ `Recibido y Verificado`. Discrepancias quedan registradas en bitácora de auditoría.
* **Consulta en Tiempo Real de Otra Sucursal:** Si un cliente en Sucursal 1 solicita 40 sacos de cemento y en mostrador solo hay 15, el cajero puede visualizar al instante que Sucursal 2 cuenta con 80 sacos disponibles y agendar el envío o retiro.
* **Corte de Caja Ciego:** Cada sucursal efectúa sus aperturas, retiros parciales de efectivo y cierres de turno de forma aislada, reportando a gerencia.

---

## 5. Modelos de Implementación y Paquetes de Inversión

Se han estructurado **3 paquetes escalables**, diseñados para adaptarse a la prioridad y presupuesto de Ferretería San Gabriel:

```
┌─────────────────────────────────────────────────────────────────────────────┐
│                        TABLA COMPARATIVA DE PAQUETES                        │
├──────────────────────────────┬──────────────┬──────────────┬────────────────┤
│ Característica / Módulo      │ STARTER      │ BUSINESS ⭐   │ ENTERPRISE     │
│                              │ (Esencial)   │ (Recomendado)│ (ERP Completo) │
├──────────────────────────────┼──────────────┼──────────────┼────────────────┤
│ Terminal de Ventas (POS)     │      ✓       │      ✓       │       ✓        │
│ Catálogo y Código de Barras  │      ✓       │      ✓       │       ✓        │
│ Control Inventario General   │      ✓       │      ✓       │       ✓        │
│ Materiales Construcción Base │      ✓       │      ✓       │       ✓        │
│  (Botes, m³, Saco, Millar)   │              │              │                │
│ Salida y Entrega de Material │      ✓       │      ✓       │       ✓        │
│ Gestión de 2 Sucursales      │   (Básico)   │      ✓       │       ✓        │
│ Traspasos con QR entre Suc.  │      —       │      ✓       │       ✓        │
│ Cotizaciones para Obra       │      —       │      ✓       │       ✓        │
│ Logística y Fletes en Camión │      —       │      ✓       │       ✓        │
│ Gestión de Crédito y Cobranza│      —       │      ✓       │       ✓        │
│ Compras y Proveedores        │      —       │      ✓       │       ✓        │
│ Modo Offline Patio (PWA)     │      —       │      ✓       │       ✓        │
│ Facturación CFDI 4.0 SAT     │   Opcional   │   Opcional   │       ✓        │
│ Predicción IA Demanda Clima  │      —       │      —       │       ✓        │
│ Alertas WhatsApp API         │      —       │   Opcional   │       ✓        │
│ Entrega de Código Fuente     │      —       │      —       │       ✓        │
├──────────────────────────────┼──────────────┼──────────────┼────────────────┤
│ Inversión Inicial (MXN + IVA)│   $55,000    │   $105,000   │    $185,000    │
│ Mantenimiento Mensual        │  $1,500/mes  │  $2,800/mes  │   $4,500/mes   │
│ Tiempo Estimado de Entrega   │  8-10 semanas│ 14-16 semanas│  22-26 semanas │
└──────────────────────────────┴──────────────┴──────────────┴────────────────┘
```

---

### 5.1 Paquete Starter (Esencial Operativo)
Ideal para sistematizar inmediatamente las ventas de mostrador y el patio de materiales, eliminando las notas de papel y pérdidas de inventario.

* **Inversión Inicial:** **$55,000 MXN + IVA**
* **Mantenimiento y Soporte:** **$1,500 MXN/mes**
* **Tiempo de Entrega:** 8 a 10 semanas
* **Módulos incluidos:**
  1. **POS Mostrador:** Cobro rápido en efectivo, transferencias y tarjeta; tickets térmicos con logotipo.
  2. **Catálogo de Ferretería:** Gestión de familias, marcas, códigos de barra y precios al menudeo.
  3. **Inventario Básico de Materiales:** Registro de cemento por bulto, tabiques por pieza/millar, arena y grava por bote y $m^3$.
  4. **Salida y Entrega de Material:** Autorizar salida en caja y registrar entrega física en patio con código QR.
  5. **Caja Chica y Cortes de Turno:** Apertura, gastos menores de caja y arqueos.
  6. **Multi-Sucursal Básico:** Visibilidad de existencias de las 2 sucursales en pantalla.
  7. **Usuarios:** Hasta 5 usuarios activos con perfiles (Cajero, Almacenista, Administrador).

---

### 5.2 Paquete Business ⭐ (Recomendado — Gestión Comercial Completa)
El paquete equilibrado que resuelve el ciclo comercial completo: cotizaciones a maestros de obra, entregas en camiones de volteo, créditos y sincronización entre sucursales.

* **Inversión Inicial:** **$105,000 MXN + IVA**
* **Mantenimiento y Soporte:** **$2,800 MXN/mes**
* **Tiempo de Entrega:** 14 a 16 semanas
* **Todo lo del paquete Starter más:**
  1. **Motor de Cotizaciones para Obras y Contratistas:**
     * Cálculo de materiales para obra con vigencia y bloqueo de precio por 15 días.
     * Conversión de cotización a venta en un solo clic.
     * Precios preferenciales por volumen para maestros albañiles y contratistas.
  2. **Traspasos Automatizados entre Sucursales:**
     * Generación de remisión digital con QR para el chofer de traslado.
     * Recepción ciega o asistida en sucursal destino con registro de discrepancias.
  3. **Logística de Despacho y Fletes:**
     * Programación de viajes en camión (6 $m^3$ o 14 $m^3$).
     * Cobro de flete calculado por zona geográfica o colonia.
     * Hoja de carga para el chofer con orden de entrega.
  4. **Crédito y Cuentas por Cobrar (CxC):**
     * Límite de crédito por cliente, registro de pagarés o notas de crédito.
     * Historial de abonos, estados de cuenta impresos y bloqueo automático por mora.
  5. **Gestión de Proveedores y Compras:**
     * Órdenes de compra por sugerido de stock mínimo.
     * Recepción de mercancía con actualización inmediata de costos promedio.
  6. **PWA Offline para Patio y Choferes:**
     * App instalable en teléfonos celulares sin depender de tiendas de aplicaciones.
     * Captura de firmas de recibido en pantalla de celular aun sin señal.
  7. **Usuarios:** Hasta 15 usuarios simultáneos con permisos configurables.

---

### 5.3 Paquete Enterprise (ERP Integral & Automatización Máxima)
Diseñado para convertir a Ferretería San Gabriel en una empresa completamente automatizada, con inteligencia de abastecimiento y autonomía técnica total.

* **Inversión Inicial:** **$185,000 MXN + IVA**
* **Mantenimiento y Soporte:** **$4,500 MXN/mes**
* **Tiempo de Entrega:** 22 a 26 semanas
* **Todo lo del paquete Business más:**
  1. **Facturación Electrónica CFDI 4.0 (Integración SAT directa):**
     * Timbrado automático de tickets en portal web para clientes.
     * Complemento Carta Porte para fletes en carretera y remisiones fiscales.
  2. **Notificaciones Automatizadas vía WhatsApp Business API:**
     * Envío automático de cotizaciones en PDF al WhatsApp del cliente.
     * Aviso de "Material en camino" cuando el camión sale de la sucursal.
     * Recordatorios de saldo vencido a clientes con crédito.
  3. **Analítica Predictiva de Demanda:**
     * Proyección de compras considerando temporadas de lluvias (afectación de grava/arena) y temporadas pico de construcción.
  4. **API Abierta & Conectores Contables:**
     * Exportación estructurada compatible con CONTPAQi / Aspel.
  5. **Propiedad Intelectual y Código:**
     * Entrega completa del repositorio de código fuente documentado.
  6. **Usuarios:** Usuarios ilimitados y soporte prioritario 24/7 con tiempo de respuesta menor a 4 horas.

---

## 6. Módulos Opcionales "À La Carte"

Si se elige el paquete **Starter** o **Business**, se pueden añadir módulos individuales según la necesidad del negocio:

| Módulo Opcional | Inversión Adicional | Impacto en Tiempo |
| :--- | :--- | :--- |
| **Módulo CFDI 4.0 + Portal de Autofactura** | + $18,000 MXN | +3 semanas |
| **Notificaciones WhatsApp Business API** | + $14,000 MXN | +2 semanas |
| **Módulo de Fletes y Control de Combustible** | + $12,500 MXN | +2 semanas |
| **Calculadora de Materiales de Obra (m² a bultos/tabiques)** | + $8,500 MXN | +1.5 semanas |
| **Lector de Báscula Camionera / Electrónica** | + $16,000 MXN | +3 semanas |
| **Migración de Datos Históricos (desde Excel / sistema previo)**| + $7,000 MXN | +1 semana |

---

## 7. Cronograma Detallado de Implementación por Fases

El proyecto se ejecuta bajo metodología ágil con entregas funcionales quincenales:

```
MES 1                 MES 2                 MES 3                 MES 4
[S1-S2][S3-S4]       [S5-S6][S7-S8]       [S9-S10][S11-S12]     [S13-S14][S15-S16]
  │       │             │       │             │        │            │        │
  ▼       ▼             ▼       ▼             ▼        ▼            ▼        ▼
Arq.    Auth/Roles    Catálogo Stock        POS     Materiales   Traspasos Fletes/CxC
Base    Sucursales    Ferretero Patio      Mostrador Bote/m³     2 Suc.    Capacitación
```

### Detalle de Hitos:
* **Fase 1: Infraestructura y Modelado (Semanas 1–3)**
  * Despliegue de base de datos PostgreSQL, configuración de NestJS y Drizzle ORM.
  * Definición de roles (Admin, Encargado de Sucursal, Cajero, Bodeguero, Chofer).
  * Estructura multi-sucursal configurada.
* **Fase 2: Catálogo e Inventario Híbrido (Semanas 4–7)**
  * Carga de catálogo de ferretería con códigos de barras.
  * Módulo de materiales a granel: definición de factores de conversión (botes $\leftrightarrow$ $m^3$).
  * Control de stock por sucursal y registro de proveedores.
* **Fase 3: Terminal de Ventas y Salida/Entrega de Material (Semanas 8–11)**
  * Punto de venta de mostrador, tickets y cortes de caja.
  * Flujo de Autorización de Salida en caja y Registro de Entrega QR en patio.
  * **Hito de Pago Intermedio (40%).**
* **Fase 4: Multi-Sucursal, Cotizaciones y Logística (Semanas 12–15)**
  * Traspasos blindados entre sucursales.
  * Módulo de cotizaciones para constructores y fletes de camiones.
  * Sincronización offline en patio PWA.
* **Fase 5: Pruebas Piloto, Capacitación y Salida a Producción (Semanas 16)**
  * Capacitación presencial a cajeros, almacenistas y administradores.
  * Pruebas de estrés y corte de operaciones en vivo.
  * **Entrega final y finiquito (30%).**

---

## 8. Presupuesto, Esquema de Pagos y Términos Comerciales

### 8.1 Esquema de Pagos Protegido por Hitos
Para total tranquilidad y alineación mutua, la inversión se liquida contra resultados tangibles:

```
┌─────────────────────────────────────────────────────────────────────────────┐
│                            DISTRIBUCIÓN DE PAGOS                            │
├─────────────────────┬──────────────┬────────────────────────────────────────┤
│ Anticipo Inicial    │     30%      │ A la firma del contrato y arranque     │
│ Hito Intermedio     │     40%      │ Al presentar POS e Inventario en vivo  │
│ Entrega Oficial     │     30%      │ Despliegue en producción y capacitación│
└─────────────────────┴──────────────┴────────────────────────────────────────┘
```

### 8.2 Garantía y Póliza de Soporte
* **Garantía Total de 90 Días Naturales:** Posterior al go-live, cualquier ajuste o resolución de fallas que impidan la operación habitual se atiende sin costo.
* **Póliza de Mantenimiento Mensual:**
  * Servidores en la nube monitoreados 24/7 con respaldos automáticos diarios.
  * Soporte técnico directo vía WhatsApp y llamadas para resolución de incidentes operativos.
  * Bolsa mensual de 2 a 4 horas de mejoras cosméticas, reportes nuevos o ajustes de tarifas.
  * Actualizaciones de parches de seguridad de Angular, NestJS y librerías base.

### 8.3 Propiedad Intelectual
* **Licencia Perpetua de Uso:** Ferretería San Gabriel obtiene el derecho irrevocable e ilimitado de utilizar el software en sus 2 sucursales actuales y futuras expansiones sin pagar tarifas por licencia de usuario extra.
* **Base de Datos 100% del Cliente:** Los datos de clientes, ventas e inventarios son propiedad exclusiva de Ferretería San Gabriel, con exportación completa disponible en cualquier momento.

---

## 9. Próximos Pasos para Iniciar

1. **Revisión y Ajustes del Paquete:** Definición final entre paquete Starter, Business o módulos específicos.
2. **Firma de Convenio y Recepción de Anticipo:** Firma de contrato de prestación de servicios con cronograma pactado.
3. **Levantamiento Inicial:** Recolección de catálogo de productos actual (archivos Excel o listas de proveedores) y parámetros de conversión de botes y $m^3$.
4. **Inicio de Desarrollo:** Kick-off formal en la primera semana tras el anticipo.
