==========================================================
 GRUPO MANE - PAQUETE COMPLETO PARA RESTABLECER EL HOSTING
 Generado: 2026-10-28
==========================================================

CONTENIDO
  .htaccess                 Enrutado Apache (API + SPA + estaticos)
  deploy.php                Instalador/migrador (BORRAR despues de usar)
  ENV_EJEMPLO.txt           Plantilla para crear api/.env
  api/                      Backend PHP (sin .env, sin scripts de prueba)
  client/dist/              Frontend compilado (incluye /impresion)
  database/
    backup_grupomane_2026-10-05.sql  Backup COMPLETO (estructura + datos)
    schema.sql                       Estructura base (instalacion limpia)
    migration_type.sql
    actualizar_bd_mensajeros.sql     Tablas couriers / sale_deliveries
  LEEME_RESTABLECER.txt     Este archivo


----------------------------------------------------------
PASO 0 - DECIDE QUE HACER CON LA BASE DE DATOS
----------------------------------------------------------
El backup SQL **BORRA las tablas antes de crearlas** (DROP TABLE IF EXISTS).
Por eso hay dos caminos:

  CASO A) La base de datos del hosting TODAVIA EXISTE y tiene tus datos
          -> NO importes el backup. Salta directo al PASO 2.

  CASO B) El hosting quedo totalmente vacio (sin base de datos)
          -> Haz el PASO 1 y luego el PASO 2.

Si dudas: cPanel > phpMyAdmin > mira si tu base tiene tablas con datos.


----------------------------------------------------------
PASO 1 - BASE DE DATOS (solo CASO B)
----------------------------------------------------------
1. cPanel > MySQL Databases: crea la base y el usuario, asignale TODOS los
   privilegios. Anota: nombre de la base, usuario y clave.
2. phpMyAdmin > selecciona la base > Importar >
   database/backup_grupomane_2026-10-05.sql  (2,7 MB)
   Si phpMyAdmin rechaza el archivo por tamano, sube upload_max_filesize y
   post_max_size a 16M (o importa por SSH):
     mysql -u USUARIO -p BASE < backup_grupomane_2026-10-05.sql
3. Los usuarios y claves son los que ya tenias: el backup trae la tabla users.


----------------------------------------------------------
PASO 2 - SUBIR LOS ARCHIVOS
----------------------------------------------------------
Sube el CONTENIDO del zip a public_html/ conservando la estructura:

  public_html/.htaccess
  public_html/api/...
  public_html/client/dist/...

El dominio debe apuntar a public_html (no a una subcarpeta).
Si el zip lo extraes dentro de una carpeta, mueve el contenido a la raiz.


----------------------------------------------------------
PASO 3 - CONFIGURAR api/.env  (OBLIGATORIO)
----------------------------------------------------------
Dentro de api/ crea un archivo llamado exactamente .env (sin extension),
usando ENV_EJEMPLO.txt como base:

  DB_HOST=localhost
  DB_NAME=nombre_de_tu_base
  DB_USER=usuario_de_tu_base
  DB_PASS=clave_de_tu_base
  JWT_SECRET=una-clave-larga-de-minimo-32-caracteres

Sin este archivo la API responde "Error de conexion a la base de datos".
Despues de crearlo, borra ENV_EJEMPLO.txt del hosting.


----------------------------------------------------------
PASO 4 - MIGRAR / CREAR LO QUE FALTE
----------------------------------------------------------
Abre en el navegador:

  https://tudominio.com/deploy.php

Debe terminar con "=== Instalacion completada ===".
Crea/actualiza: tablas y columnas faltantes, couriers, sale_deliveries,
cash_denominations, indices, etc. No borra datos existentes.

Luego BORRA deploy.php del hosting.

Alternativa: https://tudominio.com/api/migrate.php (borralo despues).


----------------------------------------------------------
PASO 5 - VERIFICAR
----------------------------------------------------------
1. https://tudominio.com -> inicia sesion.
2. Si empezaste de cero SIN importar el backup, el usuario inicial es
   admin@sistema.com / 123456 (cambiala de inmediato).
3. Configuracion > Negocio: nombre, NIT, telefonos, logo.
4. Configuracion > Impresion: disena la etiqueta y revisa "Modo de paso".
5. Configuracion > Mensajeros: si importaste el backup aparecen los que ya
   tenias; si no, crealos aqui.
6. Ventas: al elegir mensajero debe listar los de la configuracion.
   (El error "module not found" era la API desplegada sin estas rutas/tablas;
   este paquete ya las incluye y el PASO 4 las crea.)


----------------------------------------------------------
PASO 6 - IMPRESION EN CADA PC
----------------------------------------------------------
En cada equipo que imprime:
Configuracion > Impresion > Servicio de impresion >
  Descargar servicio (.ps1) + Descargar instalador
Guarda ambos en la misma carpeta y ejecuta el instalador como administrador.
"Verificar estado" debe mostrar el servicio activo en http://localhost:8765.

Si la impresion se va bajando o salen etiquetas en blanco:
1. "Probar alineacion (20 filas)".
2. Mide con regla los mm de desfase de la fila 20 (regla impresa a la derecha).
3. "Corrector de paso": filas 20 + mm medidos -> Corregir paso -> GUARDAR.
4. Si sigue: Modo de paso = "Solo alto (si se va bajando)".
   Si el sensor de gap funciona bien: "Impresora (usa su calibracion)" y
   despues "Calibrar impresora".


----------------------------------------------------------
SEGURIDAD
----------------------------------------------------------
- No subas api/.env a repositorios ni lo compartas.
- Borra deploy.php, api/migrate.php y ENV_EJEMPLO.txt al terminar.
- Este paquete NO incluye .env, ni _conn_test.php, _debug_get.php,
  _integration_test.php, ni seed_benchmark.php / seed_ventas_envios_prueba.php.
- .htaccess bloquea .env, .sql, .md, .log y .flag por HTTP.
- Si cambias JWT_SECRET, todas las sesiones abiertas se invalidan
  (todos deben volver a iniciar sesion).


----------------------------------------------------------
DATOS QUE SE PUEDEN HABER PERDIDO
----------------------------------------------------------
El backup mas reciente del proyecto es del 2026-10-05. Todo lo creado despues
(productos, ventas, cajas, gastos, mensajeros) solo existe si la base de datos
del hosting sigue viva. Si se borro la base, no hay dump posterior en este
equipo y no se puede recuperar desde aqui.
