From c4097bc737731e87c3218423d8397009f1765d22 Mon Sep 17 00:00:00 2001 From: msaldain Date: Thu, 16 Oct 2025 19:49:50 +0000 Subject: [PATCH] . --- .env.development | 37 +- .env.production | 50 - .../public/application-icons/SuiteCoffee.png | Bin 0 -> 1029561 bytes .../application-icons/SuiteCoffee_TB_1.png | Bin 0 -> 189996 bytes .../application-icons/SuiteCoffee_TM_1.png | Bin 0 -> 203721 bytes backup.sql | 2 + compose.dev.yaml | 12 +- compose.yaml | 4 +- packages/api/api.mjs | 5 + packages/api/package.json | 16 + packages/api/v1/apiv1.mjs | 21 + packages/api/v1/repositories/comandasRepo.mjs | 111 + packages/api/v1/repositories/db.mjs | 29 + packages/api/v1/routes/comandas.mjs | 50 + .../api/v1/routes/handlers/comandasHand.mjs | 91 + .../src => packages}/api/v1/routes/routes.js | 297 +- .../api/v1/routes/utils/schemaInspector.mjs | 16 +- packages/core/db/package.json | 22 + packages/core/db/poolSingleton.d.ts | 68 + packages/core/db/poolSingleton.mjs | 148 + packages/core/middlewares/datosGlobales.mjs | 14 + packages/core/middlewares/index.mjs | 7 + packages/core/middlewares/package.json | 16 + packages/core/middlewares/requireAuth.mjs | 43 + .../middlewares/resolveTenantFromCore.mjs | 140 + packages/core/middlewares/tenantContext.mjs | 155 + packages/core/redis/package.json | 22 + .../core/redis/redisSingleton.d.ts | 0 packages/core/redis/redisSingleton.mjs | 93 + packages/core/scripts/package.json | 19 + packages/core/scripts/src/index.mjs | 4 + packages/core/scripts/src/utils/env.mjs | 24 + packages/db/src/index.mjs | 2 - packages/db/src/pool-registry.mjs | 54 - packages/db/src/poolSingleton.mjs | 46 - .../attendance/core/BaseFileDriver.mjs | 99 + .../devices/attendance/core/BaseTcpDriver.mjs | 0 .../attendance/core/DeviceInterface.mjs | 46 + .../attendance/core/errors/DeviceErrors.mjs | 4 + .../core/factories/DeviceFactory.mjs | 22 + .../core/factories/DriverRegistry.mjs | 20 + packages/devices/attendance/core/index.mjs | 18 + .../core/schema/manifest.schema.json | 14 + .../attendance/core/schema/record.schema.json | 0 .../core/strategies/intervals/cross-day.mjs | 29 + .../core/strategies/intervals/same-day.mjs | 34 + .../parsers/LineParserInterface.mjs | 6 + .../core/strategies/parsers/generic-i60.mjs | 0 .../core/strategies/parsers/zkteco-i60.mjs | 0 .../devices/attendance/core/utils/dates.mjs | 31 + .../devices/attendance/core/utils/docs.mjs | 20 + .../drivers/generic/i60/GenericI60Driver.mjs | 17 + .../attendance/drivers/generic/i60/index.mjs | 13 + .../drivers/generic/i60/manifest.json | 0 .../attendance/drivers/generic/i60/parser.mjs | 54 + .../drivers/generic/src/DeviceFactory.mjs | 11 + .../drivers/generic/src/DeviceInterface.mjs | 6 + .../attendance/drivers/generic/src/index.mjs | 0 .../attendance/drivers/generic/src/utils.mjs | 0 packages/devices/i60/DriverFactory.mjs | 13 + packages/devices/i60/GenericDriver.mjs | 74 + packages/devices/i60/GenericDriverFacade.mjs | 8 + packages/devices/i60/csv.mjs | 17 + packages/devices/i60/helpers.mjs | 40 + packages/devices/i60/index.mjs | 32 + packages/devices/i60/intervals.mjs | 53 + packages/devices/i60/namesProxy.mjs | 18 + packages/devices/i60/package.json | 15 + packages/devices/i60/parsing.mjs | 64 + packages/{db => devices}/package.json | 2 +- packages/oidc/package.json | 12 + packages/oidc/src/index.mjs | 70 + services/app/.env.development | 60 +- services/app/.env.production | 22 - services/app/package-lock.json | 81 + services/app/package.json | 18 +- services/app/src/api/api.js | 181 - services/app/src/api/rpc.js | 230 -- services/app/src/db/poolSingleton.js | 83 - services/app/src/index.mjs | 451 +-- services/app/src/middlewares/tenant.js | 37 - services/app/src/pages/pages.js | 67 - .../src/public/scripts/comandas/comandas.mjs | 341 ++ .../public/scripts/productos/productos.mjs | 0 services/app/src/views/comandas.ejs | 558 --- services/app/src/views/estadoComandas.ejs | 532 --- services/app/src/views/inicio.ejs | 158 - services/app/src/views/inicio.ejs.bak | 130 - services/app/src/views/pages/comandas.ejs | 0 .../app/src/views/{ => pages}/compras.ejs | 0 .../app/src/views/{ => pages}/dashboard.ejs | 0 services/app/src/views/pages/inicio.ejs | 366 ++ services/app/src/views/{ => pages}/login.ejs | 0 .../app/src/views/{ => pages}/productos.ejs | 0 .../app/src/views/{ => pages}/reportes.ejs | 0 .../src/views/{ => pages}/reportes.ejs.bak | 0 .../app/src/views/{ => pages}/usuarios.ejs | 0 services/app/src/views/routes.js | 84 + services/auth/.env.development | 68 +- services/auth/.env.production | 22 - services/auth/package-lock.json | 60 + services/auth/package.json | 12 +- services/auth/src/ak.js | 436 --- services/auth/src/api/api.js | 181 - services/auth/src/api/rpc.js | 230 -- services/auth/src/api/v1/routes/routes.js | 340 -- services/auth/src/db/dumpl_manso_250905.sql | 3071 ----------------- services/auth/src/db/initTenant.sql | 2239 ------------ services/auth/src/db/initTenant_v2.sql | 2267 ------------ services/auth/src/db/initTenant_v3.sql | 2284 ------------ services/auth/src/db/poolSingleton.js | 83 - services/auth/src/index.mjs | 464 ++- services/auth/src/pages/index.html.bak | 154 - services/auth/src/pages/pages.js | 20 - services/auth/src/registration/bootstrap.mjs | 147 + services/plugins/package-lock.json | 36 + services/plugins/package.json | 11 +- services/plugins/src/db/poolSingleton.js | 82 - services/plugins/src/index.mjs | 69 +- 119 files changed, 3765 insertions(+), 14390 deletions(-) delete mode 100644 .env.production create mode 100644 authentik-media/public/application-icons/SuiteCoffee.png create mode 100644 authentik-media/public/application-icons/SuiteCoffee_TB_1.png create mode 100644 authentik-media/public/application-icons/SuiteCoffee_TM_1.png create mode 100644 backup.sql create mode 100644 packages/api/api.mjs create mode 100644 packages/api/package.json create mode 100644 packages/api/v1/apiv1.mjs create mode 100644 packages/api/v1/repositories/comandasRepo.mjs create mode 100644 packages/api/v1/repositories/db.mjs create mode 100644 packages/api/v1/routes/comandas.mjs create mode 100644 packages/api/v1/routes/handlers/comandasHand.mjs rename {services/app/src => packages}/api/v1/routes/routes.js (56%) rename services/app/src/utilities/cargaEnVista.js => packages/api/v1/routes/utils/schemaInspector.mjs (85%) create mode 100644 packages/core/db/package.json create mode 100644 packages/core/db/poolSingleton.d.ts create mode 100644 packages/core/db/poolSingleton.mjs create mode 100644 packages/core/middlewares/datosGlobales.mjs create mode 100644 packages/core/middlewares/index.mjs create mode 100644 packages/core/middlewares/package.json create mode 100644 packages/core/middlewares/requireAuth.mjs create mode 100644 packages/core/middlewares/resolveTenantFromCore.mjs create mode 100644 packages/core/middlewares/tenantContext.mjs create mode 100644 packages/core/redis/package.json rename services/plugins/.env.production => packages/core/redis/redisSingleton.d.ts (100%) create mode 100644 packages/core/redis/redisSingleton.mjs create mode 100644 packages/core/scripts/package.json create mode 100644 packages/core/scripts/src/index.mjs create mode 100644 packages/core/scripts/src/utils/env.mjs delete mode 100644 packages/db/src/index.mjs delete mode 100644 packages/db/src/pool-registry.mjs delete mode 100644 packages/db/src/poolSingleton.mjs create mode 100644 packages/devices/attendance/core/BaseFileDriver.mjs create mode 100644 packages/devices/attendance/core/BaseTcpDriver.mjs create mode 100644 packages/devices/attendance/core/DeviceInterface.mjs create mode 100644 packages/devices/attendance/core/errors/DeviceErrors.mjs create mode 100644 packages/devices/attendance/core/factories/DeviceFactory.mjs create mode 100644 packages/devices/attendance/core/factories/DriverRegistry.mjs create mode 100644 packages/devices/attendance/core/index.mjs create mode 100644 packages/devices/attendance/core/schema/manifest.schema.json create mode 100644 packages/devices/attendance/core/schema/record.schema.json create mode 100644 packages/devices/attendance/core/strategies/intervals/cross-day.mjs create mode 100644 packages/devices/attendance/core/strategies/intervals/same-day.mjs create mode 100644 packages/devices/attendance/core/strategies/parsers/LineParserInterface.mjs create mode 100644 packages/devices/attendance/core/strategies/parsers/generic-i60.mjs create mode 100644 packages/devices/attendance/core/strategies/parsers/zkteco-i60.mjs create mode 100644 packages/devices/attendance/core/utils/dates.mjs create mode 100644 packages/devices/attendance/core/utils/docs.mjs create mode 100644 packages/devices/attendance/drivers/generic/i60/GenericI60Driver.mjs create mode 100644 packages/devices/attendance/drivers/generic/i60/index.mjs create mode 100644 packages/devices/attendance/drivers/generic/i60/manifest.json create mode 100644 packages/devices/attendance/drivers/generic/i60/parser.mjs create mode 100644 packages/devices/attendance/drivers/generic/src/DeviceFactory.mjs create mode 100644 packages/devices/attendance/drivers/generic/src/DeviceInterface.mjs create mode 100644 packages/devices/attendance/drivers/generic/src/index.mjs create mode 100644 packages/devices/attendance/drivers/generic/src/utils.mjs create mode 100644 packages/devices/i60/DriverFactory.mjs create mode 100644 packages/devices/i60/GenericDriver.mjs create mode 100644 packages/devices/i60/GenericDriverFacade.mjs create mode 100644 packages/devices/i60/csv.mjs create mode 100644 packages/devices/i60/helpers.mjs create mode 100644 packages/devices/i60/index.mjs create mode 100644 packages/devices/i60/intervals.mjs create mode 100644 packages/devices/i60/namesProxy.mjs create mode 100644 packages/devices/i60/package.json create mode 100644 packages/devices/i60/parsing.mjs rename packages/{db => devices}/package.json (91%) create mode 100644 packages/oidc/package.json create mode 100644 packages/oidc/src/index.mjs delete mode 100644 services/app/.env.production delete mode 100644 services/app/src/api/api.js delete mode 100644 services/app/src/api/rpc.js delete mode 100644 services/app/src/db/poolSingleton.js delete mode 100644 services/app/src/middlewares/tenant.js delete mode 100644 services/app/src/pages/pages.js create mode 100644 services/app/src/public/scripts/comandas/comandas.mjs create mode 100644 services/app/src/public/scripts/productos/productos.mjs delete mode 100644 services/app/src/views/comandas.ejs delete mode 100644 services/app/src/views/estadoComandas.ejs delete mode 100644 services/app/src/views/inicio.ejs delete mode 100644 services/app/src/views/inicio.ejs.bak create mode 100644 services/app/src/views/pages/comandas.ejs rename services/app/src/views/{ => pages}/compras.ejs (100%) rename services/app/src/views/{ => pages}/dashboard.ejs (100%) create mode 100644 services/app/src/views/pages/inicio.ejs rename services/app/src/views/{ => pages}/login.ejs (100%) rename services/app/src/views/{ => pages}/productos.ejs (100%) rename services/app/src/views/{ => pages}/reportes.ejs (100%) rename services/app/src/views/{ => pages}/reportes.ejs.bak (100%) rename services/app/src/views/{ => pages}/usuarios.ejs (100%) create mode 100644 services/app/src/views/routes.js delete mode 100644 services/auth/.env.production delete mode 100644 services/auth/src/ak.js delete mode 100644 services/auth/src/api/api.js delete mode 100644 services/auth/src/api/rpc.js delete mode 100644 services/auth/src/api/v1/routes/routes.js delete mode 100644 services/auth/src/db/dumpl_manso_250905.sql delete mode 100644 services/auth/src/db/initTenant.sql delete mode 100644 services/auth/src/db/initTenant_v2.sql delete mode 100644 services/auth/src/db/initTenant_v3.sql delete mode 100644 services/auth/src/db/poolSingleton.js delete mode 100644 services/auth/src/pages/index.html.bak delete mode 100644 services/auth/src/pages/pages.js create mode 100644 services/auth/src/registration/bootstrap.mjs delete mode 100644 services/plugins/src/db/poolSingleton.js diff --git a/.env.development b/.env.development index ac7c399..2ed6fad 100644 --- a/.env.development +++ b/.env.development @@ -1,54 +1,50 @@ # Archivo de variables de entorno para docker-compose.yml COMPOSE_PROJECT_NAME=suitecoffee_dev -# Entorno de desarrollo +# ======================================================= +# Runtime NODE_ENV=development MANSO_PORT=1010 # MVP Manso Microservicio -> services/manso/src/index.mjs APP_PORT=3030 # Microservicio APP-> services/app/src/index.mjs AUTH_PORT=4040 # Microservicio AUTH -> services/auth/src/index.mjs PLUGINS_PORT=5050 # Microservicio PLUGINS-> services/plugins/src/index.mjs +# ======================================================= -# ===== DB principal (metadatos de SuiteCoffee) ===== -# Usa el alias de red del servicio 'db' (compose: aliases [dev-db]) -DB_HOST=dev-db -DB_NAME=dev_suitecoffee_core -DB_PORT=5432 -DB_USER=dev-user-suitecoffee -DB_PASS=dev-pass-suitecoffee + +# ======================================================= +# Configuración de Dases de Datos CORE_DB_HOST=dev-db CORE_DB_NAME=dev_suitecoffee_core CORE_DB_PORT=5432 CORE_DB_USER=dev-user-suitecoffee CORE_DB_PASS=dev-pass-suitecoffee -# ===== DB tenants (Tenants de SuiteCoffee) ===== -TENANTS_HOST=dev-tenants -TENANTS_DB=dev_suitecoffee_tenants -TENANTS_PORT=5432 -TENANTS_USER=suitecoffee -TENANTS_PASS=suitecoffee - TENANTS_DB_HOST=dev-tenants TENANTS_DB_NAME=dev_suitecoffee_tenants TENANTS_DB_PORT=5432 TENANTS_DB_USER=suitecoffee TENANTS_DB_PASS=suitecoffee -# Authentik PostgreSQL Setup + AK_HOST_DB=ak-db AK_PG_DB=authentik AK_PG_USER=authentik AK_PG_PASS=gOWjL8V564vyh1aXUcqh4o/xo7eObraaCVZezPi3iw2LzPlU +# ======================================================= -# Authentik Cookies + + +# ======================================================= +# Authentik + # Authentik Cookies AUTHENTIK_COOKIE__DOMAIN=dev.sso.suitecoffee.uy AUTHENTIK_SECURITY__CSRF_TRUSTED_ORIGINS=https://dev.sso.suitecoffee.uy,https://dev.suitecoffee.uy -# Authentik Security + # Authentik Security AUTHENTIK_SECRET_KEY=11zMsUL57beO+okjeGh7OB3lQdGUWII+VaATHs/zsw1+6KMSTyGfAY0yHpq3C442+3CwrZ/KtjgHBfbv -# Authentik Bootstrap + # Authentik Bootstrap AUTHENTIK_BOOTSTRAP_PASSWORD=info.suitecoffee@gmail.com AUTHENTIK_BOOTSTRAP_EMAIL=info.suitecoffee@gmail.com @@ -58,4 +54,5 @@ AUTHENTIK_EMAIL__USERNAME=info.suitecoffee@gmail.com AUTHENTIK_EMAIL__PASSWORD=Succulent-Sanded7 AUTHENTIK_EMAIL__USE_TLS=true # Or false if not using TLS AUTHENTIK_EMAIL__USE_SSL=false # Or true if using SSL directly -AUTHENTIK_EMAIL__FROM=info.suitecoffee@gmail.com \ No newline at end of file +AUTHENTIK_EMAIL__FROM=info.suitecoffee@gmail.com +# ======================================================= \ No newline at end of file diff --git a/.env.production b/.env.production deleted file mode 100644 index e9c13a3..0000000 --- a/.env.production +++ /dev/null @@ -1,50 +0,0 @@ -# Archivo de variables de entorno para docker-compose.yml -COMPOSE_PROJECT_NAME=suitecoffee_ - -# Entorno de desarrollo -NODE_ENV=production - -APP_PORT=3000 # Microservicio APP-> services/app/src/index.mjs -AUTH_PORT=4000 # Microservicio AUTH -> services/auth/src/index.mjs -PLUGIN_PORT=5000 # Microservicio PLUGINS-> services/plugins/src/index.mjs - -# tenants - postgres -TENANTS_DB_NAME=suitecoffee_tenants -TENANTS_DB_USER=suitecoffee -TENANTS_DB_PASS=suitecoffee - -# db primaria - postgres -DB_NAME=suitecoffee_core -DB_USER=suitecoffee -DB_PASS=suitecoffee - -# Authentik PostgreSQL Setup -AK_HOST_DB=ak-db -AK_PG_DB=authentik -AK_PG_USER=authentik -AK_PG_PASS=gOWjL8V564vyh1aXUcqh4o/xo7eObraaCVZezPi3iw2LzPlU - -# Authentik Cookies -AUTHENTIK_COOKIE__DOMAIN=sso.suitecoffee.uy -AUTHENTIK_SECURITY__CSRF_TRUSTED_ORIGINS=https://sso.suitecoffee.uy,https://suitecoffee.uy - -# Authentik Security -AUTHENTIK_SECRET_KEY=11zMsUL57beO+okjeGh7OB3lQdGUWII+VaATHs/zsw1+6KMSTyGfAY0yHpq3C442+3CwrZ/KtjgHBfbv -AUTHENTIK_ERROR_REPORTING__ENABLED=true - -# Authentik Email - -AUTHENTIK_EMAIL__HOST=smtp.gmail.com # SMTP Host Emails are sent to -AUTHENTIK_EMAIL__PORT=465 -AUTHENTIK_EMAIL__PASSWORD=Succulent-Sanded7 - -AUTHENTIK_EMAIL__USE_TLS=false # Use StartTLS -AUTHENTIK_EMAIL__USE_SSL=true # Use SSL -AUTHENTIK_EMAIL__TIMEOUT=10 - -# Email address authentik will send from, should have a correct @domain -AUTHENTIK_EMAIL__FROM=info.suitecoffee@gmail.com - -# Authentik Bootstrap -AUTHENTIK_BOOTSTRAP_PASSWORD=info.suitecoffee@gmail.com -AUTHENTIK_BOOTSTRAP_EMAIL=info.suitecoffee@gmail.com \ No newline at end of file diff --git a/authentik-media/public/application-icons/SuiteCoffee.png b/authentik-media/public/application-icons/SuiteCoffee.png new file mode 100644 index 0000000000000000000000000000000000000000..a0529b43bf7e714c867e6388fff2705027ea0509 GIT binary patch literal 1029561 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

F3t|Gw09Wq)5pr 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

a}e5MP0_)s4Z6&jzk?X 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

J})#yGPkTu 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ℜ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≠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%0AJpucqxe6j{|NGkG{%a<;C_;wYzHp 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

4259xq6Kl+*ZxyB;V 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�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

FW|3`exu_JW3bLMI@bweQM~_t0A*75!Tj+zb5F> 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 a_^11ulRLAb6sh!$r`gP$bl%$KKmP|d?`;PF literal 0 HcmV?d00001 diff --git a/authentik-media/public/application-icons/SuiteCoffee_TM_1.png b/authentik-media/public/application-icons/SuiteCoffee_TM_1.png new file mode 100644 index 0000000000000000000000000000000000000000..8cb2bcd2054a22d546dfcb22ad16d7240c2bfbcb GIT binary patch literal 203721 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 literal 0 HcmV?d00001 diff --git a/backup.sql b/backup.sql new file mode 100644 index 0000000..139597f --- /dev/null +++ b/backup.sql @@ -0,0 +1,2 @@ + + diff --git a/compose.dev.yaml b/compose.dev.yaml index 322f6d8..34e22f0 100644 --- a/compose.dev.yaml +++ b/compose.dev.yaml @@ -10,10 +10,12 @@ services: volumes: - ./services/app:/app:rw - ./services/app/node_modules:/app/node_modules + - ./packages:/packages env_file: - ./services/app/.env.development environment: NODE_ENV: development # <- fuerza el entorno para que el loader tome .env.development + NODE_OPTIONS: --preserve-symlinks # la resolución por symlinks (y que @suitecoffee/db encuentre pg instalado en services/app/node_modules expose: - ${APP_PORT} networks: @@ -28,10 +30,12 @@ services: volumes: - ./services/plugins:/app:rw - ./services/plugins/node_modules:/app/node_modules + - ./packages:/packages env_file: - ./services/plugins/.env.development environment: NODE_ENV: development # <- fuerza el entorno para que el loader tome .env.development + NODE_OPTIONS: --preserve-symlinks expose: - ${PLUGINS_PORT} networks: @@ -46,10 +50,12 @@ services: volumes: - ./services/auth:/app:rw - ./services/auth/node_modules:/app/node_modules + - ./packages:/packages env_file: - ./services/auth/.env.development environment: NODE_ENV: development # <- fuerza el entorno para que el loader tome .env.development + NODE_OPTIONS: --preserve-symlinks expose: - ${AUTH_PORT} networks: @@ -60,9 +66,9 @@ services: dbCore: image: postgres:16 environment: - POSTGRES_DB: ${DB_NAME} - POSTGRES_USER: ${DB_USER} - POSTGRES_PASSWORD: ${DB_PASS} + POSTGRES_DB: ${CORE_DB_NAME} + POSTGRES_USER: ${CORE_DB_USER} + POSTGRES_PASSWORD: ${CORE_DB_PASS} volumes: - suitecoffee-db:/var/lib/postgresql/data networks: diff --git a/compose.yaml b/compose.yaml index c9063ab..3223461 100644 --- a/compose.yaml +++ b/compose.yaml @@ -36,7 +36,7 @@ services: dbCore: condition: service_healthy ak: - condition: service_started + condition: service_healthy healthcheck: test: ["CMD-SHELL", "curl -fsS http://localhost:${AUTH_PORT}/health || exit 1"] interval: 10s @@ -50,7 +50,7 @@ services: environment: TZ: America/Montevideo healthcheck: - test: ["CMD-SHELL", "pg_isready -U ${DB_USER} -d ${DB_NAME}"] + test: ["CMD-SHELL", "pg_isready -U ${CORE_DB_USER} -d ${CORE_DB_NAME}"] interval: 5s timeout: 3s retries: 20 diff --git a/packages/api/api.mjs b/packages/api/api.mjs new file mode 100644 index 0000000..83fcbd9 --- /dev/null +++ b/packages/api/api.mjs @@ -0,0 +1,5 @@ +// @suitecoffee/api/api.mjs +// packages/api/api.mjs +// Punto de entrada general del paquete de api. + +export { default as apiv1 } from './v1/apiv1.mjs'; \ No newline at end of file diff --git a/packages/api/package.json b/packages/api/package.json new file mode 100644 index 0000000..48292e1 --- /dev/null +++ b/packages/api/package.json @@ -0,0 +1,16 @@ +{ + "name": "@suitecoffee/api", + "version": "1.0.0", + "type": "module", + "main": "./api.mjs", + "exports": { + ".": { + "import": "./api.mjs", + "default": "./api.mjs" + }, + "./package.json": "./package.json" + }, + "files": [ + ".api.mjs" + ] +} diff --git a/packages/api/v1/apiv1.mjs b/packages/api/v1/apiv1.mjs new file mode 100644 index 0000000..af1c831 --- /dev/null +++ b/packages/api/v1/apiv1.mjs @@ -0,0 +1,21 @@ +// packages/api/v1/apiv1.mjs +import { Router } from 'express'; + +// Sub-routers (cada uno define sus propios paths absolutos) +import comandasApiRouter from './routes/comandas.mjs'; +// import productosApiRouter from './routes/productos.mjs'; // cuando exista +// import clientesApiRouter from './routes/clientes.mjs'; // etc. + +const apiv1 = Router(); + +// Monta routers (no pongas prefijo aquí porque ya lo tienen adentro) +apiv1.use(comandasApiRouter); +// apiv1.use(productosApiRouter); +// apiv1.use(clientesApiRouter); + + +export default apiv1; + +// (Opcional) re-export para tests puntuales +// export { comandasApiRouter }; +// export { productosApiRouter }; diff --git a/packages/api/v1/repositories/comandasRepo.mjs b/packages/api/v1/repositories/comandasRepo.mjs new file mode 100644 index 0000000..ec2afdd --- /dev/null +++ b/packages/api/v1/repositories/comandasRepo.mjs @@ -0,0 +1,111 @@ +// packages/api/v1/repositories/comandasRepo.mjs + +import { withTenantClient } from './db.mjs'; +import { loadColumns, loadPrimaryKey } from '../routes/utils/schemaInspector.mjs'; + +const TABLE = 'comandas'; +const VALID_IDENT = /^[a-z_][a-z0-9_]*$/i; + +export async function listComandas({ schema, abierta, limit }) { + return withTenantClient(schema, async (db) => { + const max = Math.min(parseInt(limit || 200, 10), 1000); + const { rows } = await db.query( + `SELECT * FROM public.f_comandas_resumen($1, $2)`, + [abierta, max] + ); + return rows; + }); +} + +export async function getDetalleItems({ schema, id }) { + return withTenantClient(schema, async (db) => { + const { rows } = await db.query( + `SELECT id_det_comanda, id_producto, producto_nombre, + cantidad, pre_unitario, subtotal, observaciones + FROM public.v_comandas_detalle_items + WHERE id_comanda = $1::int + ORDER BY id_det_comanda`, + [id] + ); + return rows; + }); +} + +export async function abrirComanda({ schema, id }) { + return withTenantClient(schema, async (db) => { + const st = await db.query(`SELECT eliminada FROM public.${q(TABLE)} WHERE id_comanda = $1`, [id]); + if (!st.rowCount) return null; + if (st.rows[0].eliminada === true) { + const err = new Error('Comanda eliminada. Debe restaurarse antes de abrir.'); + err.http = { status: 409 }; + throw err; + } + const { rows } = await db.query(`SELECT public.f_abrir_comanda($1) AS data`, [id]); + return rows[0]?.data || null; + }); +} + +export async function cerrarComanda({ schema, id }) { + return withTenantClient(schema, async (db) => { + const { rows } = await db.query(`SELECT public.f_cerrar_comanda($1) AS data`, [id]); + return rows[0]?.data || null; + }); +} + +export async function restaurarComanda({ schema, id }) { + return withTenantClient(schema, async (db) => { + const { rows } = await db.query(`SELECT public.f_restaurar_comanda($1) AS data`, [id]); + return rows[0]?.data || null; + }); +} + +export async function eliminarComanda({ schema, id }) { + return withTenantClient(schema, async (db) => { + const { rows } = await db.query(`SELECT public.f_eliminar_comanda($1) AS data`, [id]); + return rows[0]?.data || null; + }); +} + +export async function patchComanda({ schema, id, payload }) { + return withTenantClient(schema, async (db) => { + const columns = await loadColumns(db, TABLE); + const updatable = new Set( + columns + .filter(c => + !c.is_primary && + !c.is_identity && + !(String(c.column_default || '').startsWith('nextval(')) + ) + .map(c => c.column_name) + ); + + const sets = []; + const params = []; + let idx = 1; + for (const [k, v] of Object.entries(payload || {})) { + if (!VALID_IDENT.test(k)) continue; + if (!updatable.has(k)) continue; + sets.push(`${q(k)} = $${idx++}`); + params.push(v); + } + if (!sets.length) return { error: 'Nada para actualizar' }; + + const pks = await loadPrimaryKey(db, TABLE); + if (pks.length !== 1) { + const err = new Error('PK compuesta no soportada'); + err.http = { status: 400 }; + throw err; + } + params.push(id); + + const { rows } = await db.query( + `UPDATE ${q(TABLE)} SET ${sets.join(', ')} WHERE ${q(pks[0])} = $${idx} RETURNING *`, + params + ); + return rows[0] || null; + }); +} + +function q(ident) { + return `"${String(ident).replace(/"/g, '""')}"`; +} diff --git a/packages/api/v1/repositories/db.mjs b/packages/api/v1/repositories/db.mjs new file mode 100644 index 0000000..c4c2549 --- /dev/null +++ b/packages/api/v1/repositories/db.mjs @@ -0,0 +1,29 @@ +// packages/api/v1/repositories/db.mjs + +import { poolTenants } from '@suitecoffee/db'; + +const VALID_IDENT = /^[a-zA-Z_][a-zA-Z0-9_]*$/; + +export async function withTenantClient(req, fn, { trx = false } = {}) { + const schema = req?.tenant?.schema; + if (!schema || !VALID_IDENT.test(schema)) { + throw new Error('Schema de tenant no resuelto/ inválido'); + } + const client = await poolTenants.connect(); + try { + if (trx) await client.query('BEGIN'); + await client.query(`SET LOCAL search_path = "${schema}", public`); + const result = await fn(client); + if (trx) await client.query('COMMIT'); + return result; + } catch (e) { + if (trx) await client.query('ROLLBACK'); + throw e; + } finally { + client.release(); + } +} + +export async function tquery(req, sql, params = [], opts = {}) { + return withTenantClient(req, (c) => c.query(sql, params), opts); +} diff --git a/packages/api/v1/routes/comandas.mjs b/packages/api/v1/routes/comandas.mjs new file mode 100644 index 0000000..223e19e --- /dev/null +++ b/packages/api/v1/routes/comandas.mjs @@ -0,0 +1,50 @@ +// packages/api/v1/routes/comandas.mjs + +import { Router } from 'express'; + +import { tenantContext } from '@suitecoffee/middlewares'; +import { listarComandas, detalleComanda, actualizarComanda, eliminarComanda } from './handlers/comandasHand.mjs'; + +const comandasApiRouter = Router(); + +comandasApiRouter.use(tenantContext); + +// Colección +comandasApiRouter.route('/comandas').get(listarComandas); + +// Recurso +comandasApiRouter.route('/comandas/:id').get(detalleComanda) + .put(actualizarComanda) + .delete(eliminarComanda); + +export default comandasApiRouter; + + +// ---------------------------------------------------------- +// API Comandas +/* +Escalabilidad: si luego agregás PUT /comandas/:id o DELETE /comandas/:id, +lo hacés en la misma ruta encadenando métodos: + +router + .route('/comandas/:id') + .get(detalleComanda) + .put(actualizarComanda) + .delete(eliminarComanda); + + Middleware común: podrías usar .all(requireAuth) o .all(validarTenant) si necesitás autenticación o contexto del tenant. +*/ +// ---------------------------------------------------------- +/* +router.route('/comandas').get(listarComandas); // GET /comandas + +// router.route('/comandas/:id').get(detalleComanda); // GET /comandas/:id +// router.route('/comandas/:id/abrir').post(abrirComanda); // POST /comandas/:id/abrir +// router.route('/comandas/:id/cerrar').post(cerrarComanda); // POST /comandas/:id/cerrar + +// Recurso +router.route('/comandas/:id') +.get(detalleComanda) // GET /comandas/:id +.put(actualizarComanda) // PUT /comandas/:id (accion: abrir|cerrar|restaurar) o patch genérico +.delete(eliminarComanda); // DELETE /comandas/:id -> borrado lógico (eliminada=true) +*/ diff --git a/packages/api/v1/routes/handlers/comandasHand.mjs b/packages/api/v1/routes/handlers/comandasHand.mjs new file mode 100644 index 0000000..f2a892f --- /dev/null +++ b/packages/api/v1/routes/handlers/comandasHand.mjs @@ -0,0 +1,91 @@ +// packages/api/v1/routes/handlers/comandas.js + +import { + listComandas, + getDetalleItems, + abrirComanda, + cerrarComanda, + restaurarComanda, + eliminarComanda as eliminarComandaRepo, + patchComanda +} from '../../repositories/comandasRepo.mjs'; + +const asBoolean = (v) => { + const s = (v ?? '').toString().trim().toLowerCase(); + return s === 'true' ? true : s === 'false' ? false : null; +}; + +export async function listarComandas(req, res, next) { + try { + const abierta = asBoolean(req.query.abierta); + const limit = req.query.limit; + const rows = await listComandas({ schema: req.tenant.schema, abierta, limit }); + res.json(rows); + } catch (e) { next(e); } +} + +export async function detalleComanda(req, res, next) { + try { + const id = parseId(req.params.id); + const rows = await getDetalleItems({ schema: req.tenant.schema, id }); + res.json(rows); + } catch (e) { next(e); } +} + +export async function actualizarComanda(req, res, next) { + try { + const id = parseId(req.params.id); + const { accion, ...patch } = req.body || {}; + + if (accion === 'abrir') { + const data = await abrirComanda({ schema: req.tenant.schema, id }); + return data ? res.json(data) : res.status(404).json({ error: 'Comanda no encontrada' }); + } + if (accion === 'cerrar') { + const data = await cerrarComanda({ schema: req.tenant.schema, id }); + return data ? res.json(data) : res.status(404).json({ error: 'Comanda no encontrada' }); + } + if (accion === 'restaurar') { + const data = await restaurarComanda({ schema: req.tenant.schema, id }); + return data ? res.json(data) : res.status(404).json({ error: 'Comanda no encontrada' }); + } + + const result = await patchComanda({ schema: req.tenant.schema, id, payload: patch }); + if (!result) return res.status(404).json({ error: 'Comanda no encontrada' }); + if (result?.error) return res.status(400).json({ error: result.error }); + res.json(result); + } catch (e) { + if (e?.http?.status) return res.status(e.http.status).json({ error: e.message }); + // PG codes comunes + if (e?.code === '23503') return res.status(409).json({ error: 'Violación de clave foránea', detail: e.detail }); + if (e?.code === '23505') return res.status(400).json({ error: 'Violación de unicidad', detail: e.detail }); + if (e?.code === '23514') return res.status(400).json({ error: 'Violación de CHECK', detail: e.detail }); + if (e?.code === '23502') return res.status(400).json({ error: 'Campo NOT NULL faltante', detail: e.detail }); + next(e); + } +} + +export async function eliminarComanda(req, res, next) { + try { + const id = parseId(req.params.id); + const data = await eliminarComandaRepo({ schema: req.tenant.schema, id }); + return data ? res.json(data) : res.status(404).json({ error: 'Comanda no encontrada' }); + } catch (e) { + if (e?.http?.status) return res.status(e.http.status).json({ error: e.message }); + if (e?.code === '23503') return res.status(409).json({ error: 'Violación de clave foránea', detail: e.detail }); + if (e?.code === '23505') return res.status(400).json({ error: 'Violación de unicidad', detail: e.detail }); + if (e?.code === '23514') return res.status(400).json({ error: 'Violación de CHECK', detail: e.detail }); + if (e?.code === '23502') return res.status(400).json({ error: 'Campo NOT NULL faltante', detail: e.detail }); + next(e); + } +} + +function parseId(value) { + const id = Number(value); + if (!Number.isInteger(id) || id <= 0) { + const err = new Error('id inválido'); + err.http = { status: 400 }; + throw err; + } + return id; +} diff --git a/services/app/src/api/v1/routes/routes.js b/packages/api/v1/routes/routes.js similarity index 56% rename from services/app/src/api/v1/routes/routes.js rename to packages/api/v1/routes/routes.js index c17f2cc..703d6f4 100644 --- a/services/app/src/api/v1/routes/routes.js +++ b/packages/api/v1/routes/routes.js @@ -1,93 +1,202 @@ -// services/manso/src/api/v1/routes/routes.js +// packages/api/v1/routes/routes.js import { Router } from 'express'; -import pool from '#db'; // Pool Singleton +import { withTenantClient, tquery } from '../repositories/db.mjs' +import { listarComandas, detalleComanda, actualizarComanda, eliminarComanda } from './handlers/comandasHand.mjs'; +import { loadColumns, loadForeignKeys, loadPrimaryKey, pickLabelColumn } from './utils/schemaInspector.mjs'; + const router = Router(); +const ALLOWED_TABLES = [ + 'roles', 'usuarios', 'usua_roles', + 'categorias', 'productos', + 'clientes', 'mesas', + 'comandas', 'deta_comandas', + 'proveedores', 'compras', 'deta_comp_producto', + 'mate_primas', 'deta_comp_materias', + 'prov_producto', 'prov_mate_prima', + 'receta_producto', 'asistencia_resumen_diario', + 'asistencia_intervalo', 'asistencia_detalle', + 'vw_compras' +]; + +const VALID_IDENT = /^[a-z_][a-z0-9_]*$/i; +const q = (ident) => `"${String(ident).replace(/"/g, '""')}"`; + +function ensureTable(name) { + if (!VALID_IDENT.test(name)) throw new Error('Identificador inválido'); + if (!ALLOWED_TABLES.includes(name)) throw new Error('Tabla no permitida'); + return name; +} + // ========================================================== // Rutas de API v1 // ========================================================== - - -// ---------------------------------------------------------- -// API Comandas // ---------------------------------------------------------- +// API Tablas +/*router.route('/tables').get( async (_req, res) => { + res.json(ALLOWED_TABLES); +});*/ -router.route('/comandas').get( async (req, res, next) => { +// GET /api/schema/:table → columnas + foreign keys +/*router.get('/schema/:table', async (req, res) => { try { - var client = await pool.getClient() - const estado = (req.query.estado || '').trim() || null; - const limit = Math.min(parseInt(req.query.limit || '200', 10), 1000); - - const { rows } = await client.query( - `SELECT * FROM public.f_comandas_resumen($1, $2)`, - [estado, limit] - ); - res.json(rows); + const table = ensureTable(req.params.table); + const client = await poolTenants.getClient(); + try { + const columns = await loadColumns(client, table); + const fks = await loadForeignKeys(client, table); + const enriched = columns.map(c => ({ ...c, foreign: fks[c.column_name] || null })); + res.json({ table, columns: enriched }); + } finally { + client.release(); + } } catch (e) { - next(e); - } finally { - client.release(); + res.status(400).json({ error: e.message }); + } +});*/ + +// GET /api/options/:table/:column → opciones FK +/*router.get('/options/:table/:column', async (req, res) => { + try { + const table = ensureTable(req.params.table); + const column = req.params.column; + if (!VALID_IDENT.test(column)) throw new Error('Columna inválida'); + + const client = await poolTenants.getClient(); + try { + const fks = await loadForeignKeys(client, table); + const fk = fks[column]; + if (!fk) return res.json([]); + + const refTable = fk.foreign_table; + const refId = fk.foreign_column; + const labelCol = await pickLabelColumn(client, refTable); + + const sql = `SELECT ${q(refId)} AS id, ${q(labelCol)} AS label + FROM ${q(refTable)} ORDER BY ${q(labelCol)} LIMIT 1000`; + const result = await client.query(sql); + res.json(result.rows); + } finally { + client.release(); + } + } catch (e) { + res.status(400).json({ error: e.message }); + } +});*/ + +// GET /api/table/:table → preview de datos +/*router.get('/table/:table', async (req, res) => { + try { + const table = ensureTable(req.params.table); + const limit = Math.min(parseInt(req.query.limit || '100', 10), 1000); + await withTenantClient(req, async (client) => { + const pks = await loadPrimaryKey(client, table); + const orderBy = pks.length ? `ORDER BY ${pks.map(q).join(', ')} DESC` : ''; + const sql = `SELECT * FROM ${q(table)} ${orderBy} LIMIT ${limit}`; + const { rows } = await client.query(sql); + res.json(rows); + }); + } catch (e) { + res.status(400).json({ error: e.message, code: e.code, detail: e.detail }); + } +});*/ + +// POST /api/table/:table → insertar fila +/*router.post('/table/:table', async (req, res) => { + const table = ensureTable(req.params.table); + const payload = req.body || {}; + try { + const client = await poolTenants.getClient(); + try { + const columns = await loadColumns(client, table); + const insertable = columns.filter(c => + !c.is_primary && + !c.is_identity && + !(c.column_default || '').startsWith('nextval(') + ); + const allowedCols = new Set(insertable.map(c => c.column_name)); + + const cols = []; + const vals = []; + const params = []; + let idx = 1; + for (const [k, v] of Object.entries(payload)) { + if (!allowedCols.has(k)) continue; + if (!VALID_IDENT.test(k)) continue; + cols.push(q(k)); + vals.push(`$${idx++}`); + params.push(v); + } + + let rows; + if (!cols.length) { + ({ rows } = await client.query( + `INSERT INTO ${q(table)} DEFAULT VALUES RETURNING *` + )); + } else { + ({ rows } = await client.query( + `INSERT INTO ${q(table)} (${cols.join(', ')}) + VALUES (${vals.join(', ')}) RETURNING *`, + params + )); + } + res.status(201).json({ inserted: rows[0] }); + } catch (e) { + if (e.code === '23503') return res.status(400).json({ error: 'Violación de clave foránea', detail: e.detail }); + if (e.code === '23505') return res.status(400).json({ error: 'Violación de unicidad', detail: e.detail }); + if (e.code === '23514') return res.status(400).json({ error: 'Violación de CHECK', detail: e.detail }); + if (e.code === '23502') return res.status(400).json({ error: 'Campo NOT NULL faltante', detail: e.detail }); + throw e; + } finally { + client.release(); + } + } catch (e) { + res.status(400).json({ error: e.message }); } }); +*/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -router.route('/comandas/:id/detalle').get( async (req, res, next) => { - try { - const client = await pool.getClient() - client.query( - `SELECT id_det_comanda, id_producto, producto_nombre, - cantidad, pre_unitario, subtotal, observaciones - FROM public.v_comandas_detalle_items - WHERE id_comanda = $1::int - ORDER BY id_det_comanda`, - [req.params.id] - ) - .then(r => res.json(r.rows)) - .catch(next) - client.release(); - } catch (error) { - next(e); - } -}); -router.route('/comandas/:id/cerrar').post( async (req, res, next) => { - try { - const client = await pool.getClient() - const id = Number(req.params.id); - if (!Number.isInteger(id) || id <= 0) { - return res.status(400).json({ error: 'id inválido' }); - } - const { rows } = await client.query( - `SELECT public.f_cerrar_comanda($1) AS data`, - [id] - ); - if (!rows.length || rows[0].data === null) { - return res.status(404).json({ error: 'Comanda no encontrada' }); - } - res.json(rows[0].data); - client.release(); - } catch (err) { next(err); } -}); -router.route('/comandas/:id/abrir').post( async (req, res, next) => { - try { - const client = await pool.getClient() - const id = Number(req.params.id); - if (!Number.isInteger(id) || id <= 0) { - return res.status(400).json({ error: 'id inválido' }); - } - const { rows } = await client.query( - `SELECT public.f_abrir_comanda($1) AS data`, - [id] - ); - if (!rows.length || rows[0].data === null) { - return res.status(404).json({ error: 'Comanda no encontrada' }); - } - res.json(rows[0].data); - client.release(); - } catch (err) { next(err); } -}); @@ -96,19 +205,19 @@ router.route('/comandas/:id/abrir').post( async (req, res, next) => { // ---------------------------------------------------------- // GET producto + receta -router.route('/rpc/get_producto/:id').get( async (req, res) => { - const client = await pool.getClient() +/*router.route('/rpc/get_producto/:id').get( async (req, res) => { + const client = await poolTenants.getClient() const id = Number(req.params.id); const { rows } = await client.query('SELECT public.get_producto($1) AS data', [id]); res.json(rows[0]?.data || {}); client.release(); -}); +});*/ // POST guardar producto + receta -router.route('/rpc/save_producto').post(async (req, res) => { +/*router.route('/rpc/save_producto').post(async (req, res) => { try { // console.debug('receta payload:', req.body?.receta); // habilitalo si lo necesitás - const client = await pool.getClient() + const client = await poolTenants.getClient() const q = 'SELECT public.save_producto($1,$2,$3,$4,$5,$6,$7::jsonb) AS id_producto'; const { id_producto=null, nombre, img_producto=null, precio=0, activo=true, id_categoria=null, receta=[] } = req.body || {}; const params = [id_producto, nombre, img_producto, precio, activo, id_categoria, JSON.stringify(receta||[])]; @@ -119,7 +228,7 @@ router.route('/rpc/save_producto').post(async (req, res) => { console.error(e); res.status(500).json({ error: 'save_producto failed' }); } -}); +});*/ @@ -128,10 +237,10 @@ router.route('/rpc/save_producto').post(async (req, res) => { // ---------------------------------------------------------- // GET MP + proveedores -router.route('/rpc/get_materia/:id').get(async (req, res) => { +/*router.route('/rpc/get_materia/:id').get(async (req, res) => { const id = Number(req.params.id); try { - const client = await pool.getClient() + const client = await poolTenants.getClient() const { rows } = await client.query('SELECT public.get_materia_prima($1) AS data', [id]); res.json(rows[0]?.data || {}); client.release(); @@ -147,7 +256,7 @@ router.route('/rpc/save_materia').post( async (req, res) => { try { const q = 'SELECT public.save_materia_prima($1,$2,$3,$4,$5::jsonb) AS id_mat_prima'; const params = [id_mat_prima, nombre, unidad, activo, JSON.stringify(proveedores||[])]; - const { rows } = await pool.query(q, params); + const { rows } = await poolTenants.query(q, params); res.json(rows[0] || {}); } catch (e) { console.error(e); @@ -166,7 +275,7 @@ router.route('/rpc/find_usuarios_por_documentos').post( async (req, res) => { try { const docs = Array.isArray(req.body?.docs) ? req.body.docs : []; const sql = 'SELECT public.find_usuarios_por_documentos($1::jsonb) AS data'; - const { rows } = await pool.query(sql, [JSON.stringify(docs)]); + const { rows } = await poolTenants.query(sql, [JSON.stringify(docs)]); res.json(rows[0]?.data || {}); } catch (e) { console.error(e); @@ -180,7 +289,7 @@ router.route('/rpc/import_asistencia').post( async (req, res) => { const registros = Array.isArray(req.body?.registros) ? req.body.registros : []; const origen = req.body?.origen || null; const sql = 'SELECT public.import_asistencia($1::jsonb,$2) AS data'; - const { rows } = await pool.query(sql, [JSON.stringify(registros), origen]); + const { rows } = await poolTenants.query(sql, [JSON.stringify(registros), origen]); res.json(rows[0]?.data || {}); } catch (e) { console.error(e); @@ -193,7 +302,7 @@ router.route('/rpc/asistencia_get').post( async (req, res) => { try { const { doc, desde, hasta } = req.body || {}; const sql = 'SELECT public.asistencia_get($1::text,$2::date,$3::date) AS data'; - const { rows } = await pool.query(sql, [doc, desde, hasta]); + const { rows } = await poolTenants.query(sql, [doc, desde, hasta]); res.json(rows[0]?.data || {}); } catch (e) { console.error(e); res.status(500).json({ error: 'asistencia_get failed' }); @@ -205,7 +314,7 @@ router.route('/rpc/asistencia_update_raw').post( async (req, res) => { try { const { id_raw, fecha, hora, modo } = req.body || {}; const sql = 'SELECT public.asistencia_update_raw($1::bigint,$2::date,$3::text,$4::text) AS data'; - const { rows } = await pool.query(sql, [id_raw, fecha, hora, modo ?? null]); + const { rows } = await poolTenants.query(sql, [id_raw, fecha, hora, modo ?? null]); res.json(rows[0]?.data || {}); } catch (e) { console.error(e); res.status(500).json({ error: 'asistencia_update_raw failed' }); @@ -217,7 +326,7 @@ router.route('/rpc/asistencia_delete_raw').post( async (req, res) => { try { const { id_raw } = req.body || {}; const sql = 'SELECT public.asistencia_delete_raw($1::bigint) AS data'; - const { rows } = await pool.query(sql, [id_raw]); + const { rows } = await poolTenants.query(sql, [id_raw]); res.json(rows[0]?.data || {}); } catch (e) { console.error(e); res.status(500).json({ error: 'asistencia_delete_raw failed' }); @@ -237,7 +346,7 @@ router.route('/rpc/report_tickets').post( async (req, res) => { ? y : (new Date()).getFullYear(); - const { rows } = await pool.query( + const { rows } = await poolTenants.query( 'SELECT public.report_tickets_year($1::int) AS j', [year] ); res.json(rows[0].j); @@ -263,7 +372,7 @@ router.route('/rpc/report_asistencia').post( async (req, res) => { hasta = end.toISOString().slice(0,10); } - const { rows } = await pool.query( + const { rows } = await poolTenants.query( 'SELECT public.report_asistencia($1::date,$2::date) AS j', [desde, hasta] ); res.json(rows[0].j); @@ -286,7 +395,7 @@ router.route('/rpc/save_compra').post( async (req, res) => { const { id_compra, id_proveedor, fec_compra, detalles } = req.body || {}; const sql = 'SELECT * FROM public.save_compra($1::int,$2::int,$3::timestamptz,$4::jsonb)'; const args = [id_compra ?? null, id_proveedor, fec_compra ? new Date(fec_compra) : null, JSON.stringify(detalles)]; - const { rows } = await pool.query(sql, args); + const { rows } = await poolTenants.query(sql, args); res.json(rows[0]); // { id_compra, total } } catch (e) { console.error('save_compra error:', e); @@ -300,7 +409,7 @@ router.route('/rpc/get_compra').post( async (req, res) => { try { const { id_compra } = req.body || {}; const sql = `SELECT public.get_compra($1::int) AS data`; - const { rows } = await pool.query(sql, [id_compra]); + const { rows } = await poolTenants.query(sql, [id_compra]); res.json(rows[0]?.data || {}); } catch (e) { console.error(e); res.status(500).json({ error: 'get_compra failed' }); @@ -311,7 +420,7 @@ router.route('/rpc/get_compra').post( async (req, res) => { router.route('/rpc/delete_compra').post( async (req, res) => { try { const { id_compra } = req.body || {}; - await pool.query(`SELECT public.delete_compra($1::int)`, [id_compra]); + await poolTenants.query(`SELECT public.delete_compra($1::int)`, [id_compra]); res.json({ ok: true }); } catch (e) { console.error(e); res.status(500).json({ error: 'delete_compra failed' }); @@ -323,7 +432,7 @@ router.route('/rpc/delete_compra').post( async (req, res) => { router.route('/rpc/report_gastos').post( async (req, res) => { try { const year = parseInt(req.body?.year ?? new Date().getFullYear(), 10); - const { rows } = await pool.query( + const { rows } = await poolTenants.query( 'SELECT public.report_gastos($1::int) AS j', [year] ); res.json(rows[0].j); @@ -334,7 +443,7 @@ router.route('/rpc/report_gastos').post( async (req, res) => { message: e.message, detail: e.detail, code: e.code }); } -}); +});*/ export default router; \ No newline at end of file diff --git a/services/app/src/utilities/cargaEnVista.js b/packages/api/v1/routes/utils/schemaInspector.mjs similarity index 85% rename from services/app/src/utilities/cargaEnVista.js rename to packages/api/v1/routes/utils/schemaInspector.mjs index 9acc5e8..6f96ee2 100644 --- a/services/app/src/utilities/cargaEnVista.js +++ b/packages/api/v1/routes/utils/schemaInspector.mjs @@ -1,6 +1,6 @@ -// ---------------------------------------------------------- -// Introspección de esquema -// ---------------------------------------------------------- +// services/app/src/api/v1/routes/utils/schemaInspector.mjs +// Utilidades para inspeccionar columnas, claves y relaciones en PostgreSQL. + export async function loadColumns(client, table) { const sql = ` SELECT @@ -42,7 +42,8 @@ export async function loadForeignKeys(client, table) { `; const { rows } = await client.query(sql, [table]); const map = {}; - for (const r of rows) map[r.column_name] = { foreign_table: r.foreign_table, foreign_column: r.foreign_column }; + for (const r of rows) + map[r.column_name] = { foreign_table: r.foreign_table, foreign_column: r.foreign_column }; return map; } @@ -58,18 +59,17 @@ export async function loadPrimaryKey(client, table) { return rows.map(r => r.column_name); } -// label column for FK options export async function pickLabelColumn(client, refTable) { - const preferred = ['nombre', 'raz_social', 'apodo', 'documento', 'correo', 'telefono']; + const preferred = ['nombre','raz_social','apodo','documento','correo','telefono']; const { rows } = await client.query( `SELECT column_name, data_type FROM information_schema.columns WHERE table_schema='public' AND table_name=$1 ORDER BY ordinal_position`, [refTable] ); - for (const cand of preferred) { + for (const cand of preferred) if (rows.find(r => r.column_name === cand)) return cand; - } + const textish = rows.find(r => /text|character varying|varchar/i.test(r.data_type)); if (textish) return textish.column_name; return rows[0]?.column_name || 'id'; diff --git a/packages/core/db/package.json b/packages/core/db/package.json new file mode 100644 index 0000000..538c306 --- /dev/null +++ b/packages/core/db/package.json @@ -0,0 +1,22 @@ +{ + "name": "@suitecoffee/db", + "version": "1.0.0", + "type": "module", + "main": "./poolSingleton.mjs", + "types": "./poolSingleton.d.ts", + "exports": { + ".": { + "types": "./poolSingleton.d.ts", + "import": "./poolSingleton.mjs", + "default": "./poolSingleton.mjs" + }, + "./package.json": "./package.json" + }, + "peerDependencies": { + "pg": "^8.16.3" + }, + "files": [ + "poolSingleton.mjs", + "poolSingleton.d.ts" + ] +} diff --git a/packages/core/db/poolSingleton.d.ts b/packages/core/db/poolSingleton.d.ts new file mode 100644 index 0000000..654e9aa --- /dev/null +++ b/packages/core/db/poolSingleton.d.ts @@ -0,0 +1,68 @@ +// packages/core/db/poolSingleton.d.ts +// Declaraciones de tipos para @suitecoffee/db +// Refleja el módulo ESM que expone poolCore y poolTenants (ambos Singletons) + +import type { + Pool, + PoolClient, + PoolConfig, + QueryResult, + QueryResultRow, + QueryConfig +} from 'pg'; + +export type { Pool, PoolClient, PoolConfig, QueryResult, QueryResultRow, QueryConfig }; + +// Clases modeladas según la implementación JS (no se exportan como valores en runtime, +// pero se exponen como tipos para el consumidor que quiera tipar sus variables). +export declare class DatabaseCore { + /** Instancia singleton interna (solo informativa para tipado). */ + static instance?: DatabaseCore; + + /** Pool real de `pg`. */ + connection: Pool; + + constructor(); + + /** Ejecuta una consulta utilizando el pool. */ + query( + sql: string | QueryConfig, + params?: any[] + ): Promise>; + + /** Alias al `pool.connect()`; devuelve un `PoolClient`. */ + connect(): Promise; + + /** Alias al `pool.connect()`; devuelve un `PoolClient`. */ + getClient(): Promise; + + /** Cierra el pool subyacente. */ + release(): Promise; +} + +export declare class DatabaseTenants { + static instance?: DatabaseTenants; + connection: Pool; + + constructor(); + + query( + sql: string | QueryConfig, + params?: any[] + ): Promise>; + + connect(): Promise; + getClient(): Promise; + release(): Promise; +} + +/** Singletons creados por el módulo. */ +export declare const poolCore: DatabaseCore; +export declare const poolTenants: DatabaseTenants; + +/** Export por defecto del módulo: objeto con ambos pools. */ +declare const _default: { + poolCore: DatabaseCore; + poolTenants: DatabaseTenants; +}; +export default _default; diff --git a/packages/core/db/poolSingleton.mjs b/packages/core/db/poolSingleton.mjs new file mode 100644 index 0000000..35a4ac7 --- /dev/null +++ b/packages/core/db/poolSingleton.mjs @@ -0,0 +1,148 @@ +// poolSingleton.mjs +// Conexión Singleton a base de datos (pg/Pool) para CORE y TENANTS. +// Cambios mínimos respecto a tu versión original. + +import { Pool } from 'pg'; + +// Utilidad mínima para booleans +const isTrue = (v) => String(v).toLowerCase() === 'true'; + +// --------------------- CORE --------------------- +class DatabaseCore { + static instance = null; + + constructor() { + if (DatabaseCore.instance) { + return DatabaseCore.instance; // <-- corrección: antes devolvía Database.instance + } + + const host = process.env.CORE_DB_HOST; + const user = process.env.CORE_DB_USER; + const password = process.env.CORE_DB_PASS; + const database = process.env.CORE_DB_NAME; + const port = process.env.CORE_DB_PORT; + const ssl = + isTrue(process.env.CORE_PGSSL ?? process.env.PGSSL) + ? { rejectUnauthorized: false } + : undefined; + + const config = { + host, + user, + password, + database, + port: port ? Number(port) : undefined, + ssl, + }; + + this.host = host; + this.dbName = database; + this.connection = new Pool(config); + + DatabaseCore.instance = this; + } + + async query(sql, params) { + return this.connection.query(sql, params); + } + + async connect() { // idempotente a nivel de pool; retorna un client + return this.connection.connect(); + } + + async getClient() { // alias simple, conserva tu API + return this.connection.connect(); + } + + async release() { // cierra TODO el pool (uso excepcional) + await this.connection.end(); + } +} + +// --------------------- TENANTS --------------------- +class DatabaseTenants { + static instance = null; + + constructor() { + if (DatabaseTenants.instance) { + return DatabaseTenants.instance; // <-- corrección: antes devolvía Database.instance + } + + const host = process.env.TENANTS_DB_HOST; + const user = process.env.TENANTS_DB_USER; + const password = process.env.TENANTS_DB_PASS; + const database = process.env.TENANTS_DB_NAME; + const port = process.env.TENANTS_DB_PORT; + const ssl = + isTrue(process.env.TENANTS_PGSSL ?? process.env.PGSSL) + ? { rejectUnauthorized: false } + : undefined; + + const config = { + host, + user, + password, + database, + port: port ? Number(port) : undefined, + ssl, + }; + + this.host = host; + this.dbName = database; + this.connection = new Pool(config); + + DatabaseTenants.instance = this; + } + + async query(sql, params) { + return this.connection.query(sql, params); + } + + async connect() { // idempotente a nivel de pool; retorna un client + return this.connection.connect(); + } + + async getClient() { // alias simple, conserva tu API + return this.connection.connect(); + } + + async release() { // cierra TODO el pool (uso excepcional) + await this.connection.end(); + } +} + +// Instancias únicas por el cache de módulos de Node/ESM + guardas estáticas +const poolCore = new DatabaseCore(); +const poolTenants = new DatabaseTenants(); + +// --------------------- Healthchecks aquí dentro --------------------- +async function verificarConexionCore() { + try { + console.log(`[ PG ] Comprobando accesibilidad a la db ${poolCore.dbName} del host ${poolCore.host} ...`); + const client = await poolCore.getClient(); + const { rows } = await client.query('SELECT NOW() AS ahora'); + console.log(`[ PG ] Conexión con ${poolCore.dbName} OK. Hora DB:`, rows[0].ahora); + client.release(); + } catch (error) { + console.error('[ PG ] Error al conectar con la base de datos al iniciar:', error.message); + console.error('[ PG ] Revisar credenciales, accesos de red y firewall.'); + } +} + +async function verificarConexionTenants() { + try { + console.log(`[ PG ] Comprobando accesibilidad a la db ${poolTenants.dbName} del host ${poolTenants.host} ...`); + const client = await poolTenants.getClient(); + const { rows } = await client.query('SELECT NOW() AS ahora'); + console.log(`[ PG ] Conexión con ${poolTenants.dbName} OK. Hora DB:`, rows[0].ahora); + client.release(); + } catch (error) { + console.error('[ PG ] Error al conectar con la base de datos al iniciar:', error.message); + console.error('[ PG ] Revisar credenciales, accesos de red y firewall.'); + } +} + +// Exports (mantengo tu patrón) +export default { poolCore, poolTenants, verificarConexionCore, verificarConexionTenants }; +export { poolCore, poolTenants, verificarConexionCore, verificarConexionTenants }; +// export { DatabaseCore, DatabaseTenants }; // si lo necesitás para tests \ No newline at end of file diff --git a/packages/core/middlewares/datosGlobales.mjs b/packages/core/middlewares/datosGlobales.mjs new file mode 100644 index 0000000..8740473 --- /dev/null +++ b/packages/core/middlewares/datosGlobales.mjs @@ -0,0 +1,14 @@ +// @suitecoffee/middlewares/datosGlobales.mjs +// packages/core/middlewares/datosGlobales.mjs + +import { Router } from 'express'; +export const datosGlobales = Router(); + +datosGlobales.use((req, res, next) => { + res.locals.currentPath = req.path; + res.locals.pageTitle = 'SuiteCoffee'; + res.locals.pageId = ''; + next(); +}); + +export default datosGlobales; // opcional, pero útil si alguien quiere import default diff --git a/packages/core/middlewares/index.mjs b/packages/core/middlewares/index.mjs new file mode 100644 index 0000000..5923aa3 --- /dev/null +++ b/packages/core/middlewares/index.mjs @@ -0,0 +1,7 @@ +// @suitecoffee/middlewares/src/index.mjs +// Punto de entrada general del paquete de middlewares. + +export * from './requireAuth.mjs'; +export * from './datosGlobales.mjs'; +export * from './tenantContext.mjs'; +export * from './resolveTenantFromCore.mjs'; \ No newline at end of file diff --git a/packages/core/middlewares/package.json b/packages/core/middlewares/package.json new file mode 100644 index 0000000..263cd0c --- /dev/null +++ b/packages/core/middlewares/package.json @@ -0,0 +1,16 @@ +{ + "name": "@suitecoffee/middlewares", + "version": "1.0.0", + "type": "module", + "main": ".index.mjs", + "exports": { + ".": { + "import": "./index.mjs", + "default": "./index.mjs" + }, + "./package.json": "./package.json" + }, + "files": [ + ".index.mjs" + ] +} diff --git a/packages/core/middlewares/requireAuth.mjs b/packages/core/middlewares/requireAuth.mjs new file mode 100644 index 0000000..494e91a --- /dev/null +++ b/packages/core/middlewares/requireAuth.mjs @@ -0,0 +1,43 @@ +// packages/core/middlewares/src/requireAuth.mjs +// @suitecoffee/middlewares/src/requireAuth.mjs + +/** + * requireAuth + * Verifica que exista una sesión válida en req.session.user (con `sub`). + * - Si hay sesión, llama a next(). + * - Si no hay sesión: + * - Si se define `redirectTo`, redirige (302) cuando el cliente acepta HTML. + * - En caso contrario, responde 401 con { error: 'unauthenticated' }. + * + * @param {Object} [options] + * @param {string|null} [options.redirectTo=null] Ruta a la que redirigir si no hay sesión (p.ej. '/auth/login') + * @param {(req: import('express').Request) => any} [options.getSessionUser] Cómo leer el usuario de la sesión + * @returns {import('express').RequestHandler} + * + * Uso típico: + * import { requireAuth } from '@suitecoffee/middlewares'; + * app.get('/me', requireAuth(), (req,res)=> res.json({ user: req.session.user })); + * app.get('/dashboard', requireAuth({ redirectTo: '/auth/login' }), handler); + */ +export function requireAuth(options = {}) { + const { + redirectTo = null, + getSessionUser = (req) => req?.session?.user, + } = options; + + return function requireAuthMiddleware(req, res, next) { + const user = getSessionUser(req); + + if (user && user.sub) { + return next(); + } + + // Si el cliente acepta HTML y tenemos redirectTo, redirigimos (útil para front web) + if (redirectTo && req.accepts('html')) { + return res.redirect(302, redirectTo); + } + + // Fallback JSON + return res.status(401).json({ error: 'unauthenticated' }); + }; +} diff --git a/packages/core/middlewares/resolveTenantFromCore.mjs b/packages/core/middlewares/resolveTenantFromCore.mjs new file mode 100644 index 0000000..47ff59f --- /dev/null +++ b/packages/core/middlewares/resolveTenantFromCore.mjs @@ -0,0 +1,140 @@ +// packages/core/middlewares/resolveTenantFromCore.mjs +import { poolCore, poolTenants } from '@suitecoffee/db'; + +const UUID_RX = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; + +/** + * Verifica si existe el esquema en la DB de tenants. + * No requiere setear search_path. + */ +async function schemaExists(schemaName) { + if (!schemaName) return false; + const q = ` + SELECT 1 + FROM information_schema.schemata + WHERE schema_name = $1 + LIMIT 1 + `; + const { rowCount } = await poolTenants.query(q, [schemaName]); + return rowCount === 1; +} + +/** + * Devuelve { id, schema } o null. + * Reglas: + * 1) Si el usuario tiene default_tenant => usarlo (y validar estado y existencia del schema). + * 2) Si no, buscar membresías: + * - si hay exactamente 1 => usarla (validando schema). + * - si hay 0 o >1 => devolver null (forzar selección explícita). + * + * @param {import('express').Request} req + * @param {any} sess (req.session) + * @param {Object} [opts] + * @param {boolean} [opts.debug=false] + * @param {Console} [opts.logger=console] + * @param {string[]} [opts.acceptStates=['ready']] // estados de sc_tenants aceptados + * @returns {Promise<{id:string, schema:string} | null>} + */ +export async function resolveTenantFromCore(req, sess, opts = {}) { + const { + debug = false, + logger = console, + acceptStates = ['ready'], + } = opts; + + const log = (msg, obj) => { + if (debug) logger.debug?.(`[resolveTenantFromCore] ${msg}`, obj ?? ''); + }; + + const sub = sess?.user?.sub; + if (!sub) { + log('no-sub-in-session'); + return null; + } + + try { + // 1) sc_users: obtener user_id y default_tenant + const uSql = ` + SELECT user_id, default_tenant + FROM sc_users + WHERE sub = $1 + LIMIT 1 + `; + const ures = await poolCore.query(uSql, [sub]); + if (ures.rowCount === 0) { + log('user-not-found', { sub }); + return null; + } + + const { user_id, default_tenant } = ures.rows[0] ?? {}; + + // Helper para validar fila de tenant y existencia de schema + const validateTenantRow = async (row) => { + if (!row) return null; + const { tenant_id, schema_name, state } = row; + if (!UUID_RX.test(String(tenant_id))) return null; + if (!schema_name) return null; + if (acceptStates.length && !acceptStates.includes(String(state))) return null; + + // Comprobar que el schema exista realmente en la DB de tenants + const exists = await schemaExists(schema_name); + if (!exists) { + log('schema-missing-in-tenants-db', { schema_name }); + return null; + } + return { id: String(tenant_id), schema: String(schema_name) }; + }; + + // 2) Si hay default_tenant, cargar su schema y validar + if (default_tenant) { + const tSql = ` + SELECT tenant_id, schema_name, state + FROM sc_tenants + WHERE tenant_id = $1 + LIMIT 1 + `; + const tres = await poolCore.query(tSql, [default_tenant]); + if (tres.rowCount === 1) { + const ok = await validateTenantRow(tres.rows[0]); + if (ok) { + sess.tenant = ok; + log('resolved-from-default_tenant', ok); + return ok; + } + // default_tenant roto → seguimos a membresías + log('default_tenant-invalid', { default_tenant }); + } + } + + // 3) Sin default_tenant válido: ver membresías (aceptando sólo tenants en estados permitidos) + const mSql = ` + SELECT m.tenant_id, t.schema_name, t.state, t.created_at, m.role + FROM sc_memberships m + JOIN sc_tenants t USING (tenant_id) + WHERE m.user_id = $1 + ${acceptStates.length ? `AND t.state = ANY($2)` : ''} + ORDER BY (m.role = 'owner') DESC, t.created_at ASC + LIMIT 2 + `; + const mParams = acceptStates.length ? [user_id, acceptStates] : [user_id]; + const mres = await poolCore.query(mSql, mParams); + + if (mres.rowCount === 1) { + const ok = await validateTenantRow(mres.rows[0]); + if (ok) { + sess.tenant = ok; + log('resolved-from-single-membership', ok); + return ok; + } + log('single-membership-invalid-row', mres.rows[0]); + return null; + } + + // 0 o >1 membresías → el usuario debe elegir explícitamente + log('ambiguous-or-no-memberships', { count: mres.rowCount }); + return null; + } catch (err) { + logger.error?.('[resolveTenantFromCore] error', { message: err?.message }); + return null; // preferimos no romper el request; el middleware decidirá + } +} diff --git a/packages/core/middlewares/tenantContext.mjs b/packages/core/middlewares/tenantContext.mjs new file mode 100644 index 0000000..c583c83 --- /dev/null +++ b/packages/core/middlewares/tenantContext.mjs @@ -0,0 +1,155 @@ +// packages/core/middlewares/src/tenantContext.mjs + +const VALID_IDENT = /^[a-zA-Z_][a-zA-Z0-9_]*$/; // schema seguro +const UUID_RX = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; + +function redact(obj) { + // Evita loggear datos sensibles; muestra sólo lo útil para diagnóstico + if (!obj || typeof obj !== 'object') return obj; + const out = {}; + for (const k of Object.keys(obj)) { + if (['token', 'access_token', 'id_token', 'refresh_token'].includes(k)) { + out[k] = '[redacted]'; + } else if (k === 'sub' || k === 'email' || k === 'name') { + out[k] = obj[k]; + } else if (k === 'tenant') { + const t = obj[k] || {}; + out[k] = { id: t.id ?? null, schema: t.schema ?? null }; + } else if (k === 'user') { + const u = obj[k] || {}; + out[k] = { + sub: u.sub ?? null, + email: u.email ?? null, + default_tenant: u.default_tenant ?? u.defaultTenant ?? null, + memberships: Array.isArray(u.memberships) ? `[${u.memberships.length}]` : null, + }; + } else { + // no inundar el log; deja constancia de que existe + out[k] = '[present]'; + } + } + return out; +} + +export function tenantContext(opts = {}) { + const { + requireUser = true, + debug = false, + log = console, // podés inyectar tu logger + autoDeriveFromDefault = true, + // callback opcional para buscar tenant (p.ej., en CORE) si no está en sesión + // Debe devolver { id: uuid, schema: string } o null + resolveTenant = null, + schemaPrefixes = [ + process.env.TENANT_SCHEMA_PREFIX || 'empresa_', + ].filter(Boolean), + } = opts; + + const diag = (msg, data) => { + if (!debug) return; + try { log.debug?.(`[tenantContext] ${msg}`, data !== undefined ? redact(data) : ''); } + catch { /* noop */ } + }; + const setDiagHeader = (res, kv) => { + if (!debug) return; + const cur = res.getHeader('X-Tenant-Diag'); + const base = typeof cur === 'string' ? String(cur) + '; ' : ''; + res.setHeader('X-Tenant-Diag', base + kv); + }; + + return async (req, res, next) => { + try { + diag('incoming', { sid: req.sessionID, headers: { accept: req.headers.accept } }); + + const sess = req.session; + if (!sess) { + setDiagHeader(res, 'no-session'); + return res.status(401).json({ error: 'unauthenticated' }); + } + diag('session.present', { keys: Object.keys(sess) }); + + if (requireUser && !sess.user?.sub) { + diag('user.missing', { session: sess }); + setDiagHeader(res, 'no-user'); + return res.status(401).json({ error: 'unauthenticated' }); + } + if (requireUser) diag('user.ok', sess.user); + + // 1) Leer tenant desde sesión + let t = sess.tenant ?? null; + diag('session.tenant', t); + + // 2) Derivar automáticamente si falta + if ((!t?.id || !t?.schema) && autoDeriveFromDefault) { + const fallbackId = + sess.user?.tenant?.id || + sess.user?.default_tenant || + sess.user?.defaultTenant || + null; + + if (fallbackId && UUID_RX.test(String(fallbackId))) { + const prefix = String(schemaPrefixes[0] || 'empresa_'); + const schema = `${prefix}${String(fallbackId).replace(/-/g, '').toLowerCase()}`; + t = { id: String(fallbackId), schema }; + sess.tenant = t; // persistir para siguientes requests + diag('derived.fromDefault', t); + setDiagHeader(res, 'derived-default'); + } else { + diag('derived.fromDefault.skipped', { fallbackId }); + } + } + + // 3) Resolver con callback si aún falta + if ((!t?.id || !t?.schema) && typeof resolveTenant === 'function') { + try { + t = await resolveTenant(req, sess); + if (t) { + sess.tenant = t; + diag('derived.fromResolver', t); + setDiagHeader(res, 'derived-resolver'); + } else { + diag('resolver.returned-null'); + } + } catch (e) { + diag('resolver.error', { message: e?.message }); + } + } + + // 4) Validaciones + if (!t?.id || !t?.schema) { + diag('missing-tenant.final'); + setDiagHeader(res, 'missing-tenant'); + return res.status(401).json({ error: 'Sesión inválida o tenant no seleccionado' }); + } + if (!UUID_RX.test(String(t.id))) { + diag('invalid-tenant-id', t); + setDiagHeader(res, 'bad-tenant-id'); + return res.status(400).json({ error: 'TenantID inválido' }); + } + if (!VALID_IDENT.test(t.schema)) { + diag('invalid-schema', t); + setDiagHeader(res, 'bad-schema'); + return res.status(400).json({ error: 'Schema inválido' }); + } + const okPrefix = schemaPrefixes.some(p => + t.schema.toLowerCase().startsWith(String(p).toLowerCase()), + ); + if (!okPrefix) { + diag('schema-prefix.rejected', { schema: t.schema, schemaPrefixes }); + setDiagHeader(res, 'schema-prefix-rejected'); + return res.status(400).json({ error: 'Schema no permitido' }); + } + + // 5) OK + req.tenant = { id: String(t.id), schema: String(t.schema) }; + res.locals.tenant = req.tenant; + setDiagHeader(res, `ok schema=${req.tenant.schema}`); + diag('attach.req.tenant', req.tenant); + + return next(); + } catch (err) { + diag('exception', { message: err?.message }); + return next(err); + } + }; +} diff --git a/packages/core/redis/package.json b/packages/core/redis/package.json new file mode 100644 index 0000000..1126437 --- /dev/null +++ b/packages/core/redis/package.json @@ -0,0 +1,22 @@ +{ + "name": "@suitecoffee/redis", + "version": "1.0.0", + "type": "module", + "main": "./redisSingleton.mjs", + "types": "./redisSingleton.d.ts", + "exports": { + ".": { + "types": "./redisSingleton.d.ts", + "import": "./redisSingleton.mjs", + "default": "./redisSingleton.mjs" + }, + "./package.json": "./package.json" + }, + "peerDependencies": { + "pg": "^8.16.3" + }, + "files": [ + "redisSingleton.mjs", + "redisSingleton.d.ts" + ] +} diff --git a/services/plugins/.env.production b/packages/core/redis/redisSingleton.d.ts similarity index 100% rename from services/plugins/.env.production rename to packages/core/redis/redisSingleton.d.ts diff --git a/packages/core/redis/redisSingleton.mjs b/packages/core/redis/redisSingleton.mjs new file mode 100644 index 0000000..c603d6c --- /dev/null +++ b/packages/core/redis/redisSingleton.mjs @@ -0,0 +1,93 @@ +// redisSingleton.mjs +// Conexión Singleton a Redis para Authentik (AK) + +import { createClient } from 'redis'; + +class RedisAuthentik { + static instance = null; + + constructor() { + if (RedisAuthentik.instance) { + return RedisAuthentik.instance; + } + + const url = process.env.AK_REDIS_URL; + if (!url) { + throw new Error('Falta AK_REDIS_URL Ej: redis://:pass@host:6379/0'); + } + if (!/^redis(s)?:\/\//i.test(url)) { + throw new Error('AK_REDIS_URL inválida: debe comenzar con "redis://" o "rediss://".'); + } + + this.url = url; + this.client = createClient({ + url: this.url, + socket: { connectTimeout: 5000 }, + }); + + this.client.on('connect', () => console.log(`[REDIS AK] Conectando a ${this.url}`)); + this.client.on('ready', () => console.log('[REDIS AK] Conexión lista.')); + this.client.on('end', () => console.warn('[REDIS AK] Conexión cerrada.')); + this.client.on('reconnecting', () => console.warn('[REDIS AK] Reintentando conexión...')); + this.client.on('error', (err) => console.error('[REDIS AK] Error:', err?.message || err)); + + this._connectingPromise = null; + RedisAuthentik.instance = this; + } + + async connect() { + if (this.client.isOpen) return this.client; + if (this._connectingPromise) return this._connectingPromise; + + this._connectingPromise = this.client.connect() + .then(() => this.client) + .catch((err) => { + this._connectingPromise = null; + console.error('[REDIS AK] Falló la conexión inicial:', err?.message || err); + throw err; + }); + + return this._connectingPromise; + } + + getClient() { + return this.client; + } + + async release() { + try { + if (this.client?.isOpen) await this.client.quit(); + } catch (e) { + console.warn('[REDIS AK] Error al cerrar:', e?.message || e); + } finally { + this._connectingPromise = null; + } + } +} + +// Instancia única +const redisAuthentik = new RedisAuthentik(); + +// --------------------- Healthcheck --------------------- +async function verificarConexionRedisAuthentik() { + try { + console.log(`[REDIS AK] Comprobando accesibilidad a Redis en ${redisAuthentik.url} ...`); + await redisAuthentik.connect(); + const client = redisAuthentik.getClient(); + + const pong = await client.ping(); + const timeArr = await client.sendCommand(['TIME']); + const serverDate = new Date(Number(timeArr?.[0] || 0) * 1000); + + await client.set('hc:authentik', String(Date.now()), { EX: 10 }); + + console.log(`[REDIS AK] Conexión OK. PING=${pong}. Hora Redis:`, serverDate.toISOString()); + } catch (error) { + console.error('[REDIS AK] Error al conectar:', error?.message || error); + console.error('[REDIS AK] Revisar AK_REDIS_URL, credenciales, red y firewall.'); + } +} + +// Export al estilo de poolSingleton.mjs +export default { redisAuthentik, verificarConexionRedisAuthentik }; +export { redisAuthentik, verificarConexionRedisAuthentik }; diff --git a/packages/core/scripts/package.json b/packages/core/scripts/package.json new file mode 100644 index 0000000..8f05de7 --- /dev/null +++ b/packages/core/scripts/package.json @@ -0,0 +1,19 @@ +{ + "name": "@suitecoffee/scripts", + "version": "1.0.0", + "type": "module", + "main": ".src/index.mjs", + "types": ".src/index.d.ts", + "exports": { + ".": { + "types": "./src/index.d.ts", + "import": "./src/index.mjs", + "default": "./src/index.mjs" + }, + "./package.json": "./package.json" + }, + "files": [ + "srcindex.mjs", + "srcindex.d.ts" + ] +} diff --git a/packages/core/scripts/src/index.mjs b/packages/core/scripts/src/index.mjs new file mode 100644 index 0000000..8b511bc --- /dev/null +++ b/packages/core/scripts/src/index.mjs @@ -0,0 +1,4 @@ +// @suitecoffee/scripts/src/index.mjs +// Punto de entrada general del paquete de utilidades. + +export * from './utils/env.mjs'; \ No newline at end of file diff --git a/packages/core/scripts/src/utils/env.mjs b/packages/core/scripts/src/utils/env.mjs new file mode 100644 index 0000000..85475e5 --- /dev/null +++ b/packages/core/scripts/src/utils/env.mjs @@ -0,0 +1,24 @@ +// @suitecoffee/scripts/src/utils/env.mjs + +/** + * checkRequiredEnvVars + * Verifica que todas las variables de entorno requeridas existan en process.env. + * Muestra advertencias si alguna falta. + * + * @param {...string} requiredKeys - Lista de nombres de variables esperadas + */ + + +export function checkRequiredEnvVars(...requiredKeys) { + const missingKeys = requiredKeys.filter((key) => !process.env[key]); + + if (missingKeys.length > 0) { + console.warn( + `[ ENV ] No se encontraron las siguientes variables de entorno:\n\n` + + missingKeys.map((k) => `-> ${k}`).join('\n') + + `\n` + ); + } else { + console.log(`[ ENV ] Todas las variables de entorno requeridas están definidas.`); + } +} diff --git a/packages/db/src/index.mjs b/packages/db/src/index.mjs deleted file mode 100644 index 0364e56..0000000 --- a/packages/db/src/index.mjs +++ /dev/null @@ -1,2 +0,0 @@ -export * from './pool-registry.mjs'; -export * from './poolSingleton.mjs'; diff --git a/packages/db/src/pool-registry.mjs b/packages/db/src/pool-registry.mjs deleted file mode 100644 index 8251002..0000000 --- a/packages/db/src/pool-registry.mjs +++ /dev/null @@ -1,54 +0,0 @@ -import { Pool } from 'pg'; - -const REGISTRY = new Map(); - -export function getPool(name = 'core', cfg = {}) { - if (REGISTRY.has(name)) return REGISTRY.get(name); - - const pool = new Pool({ - connectionString: process.env.PG_URL, - max: Number(process.env.PG_POOL_MAX ?? 10), - idleTimeoutMillis: Number(process.env.PG_IDLE_MS ?? 30000), - connectionTimeoutMillis: Number(process.env.PG_CONN_MS ?? 5000), - statement_timeout: Number(process.env.PG_STMT_MS ?? 15000), - ssl: process.env.PGSSL === 'true' ? { rejectUnauthorized: false } : undefined, - ...cfg - }); - - pool.on('error', (err) => { - // ideal: reemplazar con pino/sentry - console.error(`[pg:${name}] pool error`, err); - }); - - REGISTRY.set(name, pool); - return pool; -} - -function assertTenantSchema(schema) { - if (!/^tenant_[a-f0-9-]{16,36}$/i.test(schema)) { - throw new Error('Invalid tenant schema'); - } - return `"${schema.replace(/"/g, '""')}"`; -} - -export async function withTenant(poolName, tenantSchema, fn) { - const pool = getPool(poolName); - const client = await pool.connect(); - try { - await client.query('BEGIN'); - await client.query(`SET LOCAL search_path TO ${assertTenantSchema(tenantSchema)}`); - const res = await fn(client); - await client.query('COMMIT'); - return res; - } catch (e) { - try { await client.query('ROLLBACK'); } catch {} - throw e; - } finally { - client.release(); - } -} - -export async function shutdownAll() { - await Promise.all([...REGISTRY.values()].map(p => p.end())); - REGISTRY.clear(); -} diff --git a/packages/db/src/poolSingleton.mjs b/packages/db/src/poolSingleton.mjs deleted file mode 100644 index 35d0fae..0000000 --- a/packages/db/src/poolSingleton.mjs +++ /dev/null @@ -1,46 +0,0 @@ -// Coneción Singleton a base de datos. - -import { Pool } from 'pg'; - -class Database { - constructor() { - - if (Database.instance) { - return Database.instance; - } - - const config = { - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASS, - database: process.env.DB_NAME, - port: process.env.DB_LOCAL_PORT ? Number(process.env.DB_LOCAL_PORT) : undefined, - ssl: process.env.PGSSL === 'true' ? { rejectUnauthorized: false } : undefined, - }; - - this.connection = new Pool(config); - - Database.instance = this; - } - async query(sql, params) { - return this.connection.query(sql,params); - } - - async connect() { /* Definida solo para evitar errores */ - return this.connection.connect(); - } - async getClient() { - return this.connection.connect(); - } - - async release() { - await this.connection.end(); - } -} - -// const db = new Database(); -// db.query('SELECT * FROM users'); - -const pool = new Database(); -export default pool; -export { Database }; \ No newline at end of file diff --git a/packages/devices/attendance/core/BaseFileDriver.mjs b/packages/devices/attendance/core/BaseFileDriver.mjs new file mode 100644 index 0000000..bba971b --- /dev/null +++ b/packages/devices/attendance/core/BaseFileDriver.mjs @@ -0,0 +1,99 @@ +// BaseFileDriver.mjs +import { DeviceInterface } from './DeviceInterface.mjs'; +import { fmtHMSUTC, fmtHM } from '../utils/dates.mjs'; +import * as intervalsCross from '../strategies/intervals/cross-day.mjs'; +import * as intervalsSame from '../strategies/intervals/same-day.mjs'; + +/** + * Template Method para drivers basados en archivos .txt + * Define el pipeline y delega el parseo de línea en this.parserStrategy.parseLine + */ +export class BaseFileDriver extends DeviceInterface { + constructor(opts = {}) { + super(opts); + if (!this.parserStrategy || typeof this.parserStrategy.parseLine !== 'function') { + throw new Error('BaseFileDriver requiere parserStrategy.parseLine(line)'); + } + } + + /** + * @param {string} text contenido completo del .txt en UTF-8 + */ + async processFile(text) { + if (!text || typeof text !== 'string') { + this.setStatus('Elegí un .txt válido'); + return { parsedRows: [], pairs: [], payloadDB: [], missing_docs: [], error: 'Archivo vacío o inválido' }; + } + + this.setStatus('Leyendo archivo…'); + + // 1) Parseo línea a línea (Strategy) + const lines = text.split(/\n/); + const parsedRows = []; + for (let i = 0; i < lines.length; i++) { + const r = this.parserStrategy.parseLine(lines[i]); + if (r) parsedRows.push(r); + if ((i & 511) === 0) this.emit('progress', { at: i, total: lines.length }); + } + + // 2) Resolver nombres por documento (inyectado) + const uniqueDocs = [...new Set(parsedRows.map(r => r.doc))]; + this.setStatus(`Leyendo archivo… | consultando ${uniqueDocs.length} documentos…`); + const map = await this._safeNamesResolver(uniqueDocs); + + // 3) Detectar documentos faltantes + const missing_docs = uniqueDocs.filter(d => { + const hit = map?.[d]; + if (!hit) return true; + if (typeof hit.found === 'boolean') return !hit.found; + return !(hit?.nombre || '').trim() && !(hit?.apellido || '').trim(); + }); + + if (missing_docs.length) { + this.setStatus('Hay documentos sin usuario. Corrigí y volvé a procesar.'); + return { parsedRows, pairs: [], payloadDB: [], missing_docs, + error: `No se encontraron ${missing_docs.length} documento(s) en la base` }; + } + + // 4) Enriquecer nombre desde DB + parsedRows.forEach(r => { + const hit = map?.[r.doc]; + if (hit && (hit.nombre || hit.apellido)) r.name = `${hit.nombre || ''} ${hit.apellido || ''}`.trim(); + }); + + // 5) Construcción de intervalos (Strategy) + const pairs = (this.intervalBuilder === 'sameDay') + ? intervalsSame.buildIntervals(parsedRows) + : intervalsCross.buildIntervalsCrossDay(parsedRows); + + // 6) Payload "raw" para DB + const payloadDB = parsedRows.map(r => ({ + doc: r.doc, isoDate: r.isoDate, time: r.time, mode: r.mode || null + })); + + this.setStatus(`${parsedRows.length} registros · ${pairs.length} intervalos`); + return { parsedRows, pairs, payloadDB, missing_docs: [] }; + } + + exportCSV(pairs) { + const list = Array.isArray(pairs) ? pairs : []; + if (!list.length) return ''; + const head = ['documento','nombre','fecha','desde','hasta','duracion_hhmm','duracion_min','obs']; + const rows = list.map(p => { + const iso = p.isoDate || p.fecha || ''; + const desdeStr = (p.desde_ms!=null) ? fmtHMSUTC(p.desde_ms) : ''; + const hastaStr = (p.hasta_ms!=null) ? fmtHMSUTC(p.hasta_ms) : ''; + const durStr = (p.durMins!=null) ? fmtHM(p.durMins) : ''; + const durMin = (p.durMins!=null) ? Math.round(p.durMins) : ''; + return [ + p.doc, p.name || '', iso, desdeStr, hastaStr, durStr, durMin, p.obs || '' + ].map(v => `"${String(v).replaceAll('"','""')}"`).join(','); + }); + return head.join(',') + '\n' + rows.join('\n'); + } + + async _safeNamesResolver(docs) { + try { return await this.namesResolver(docs); } + catch { return {}; } + } +} diff --git a/packages/devices/attendance/core/BaseTcpDriver.mjs b/packages/devices/attendance/core/BaseTcpDriver.mjs new file mode 100644 index 0000000..e69de29 diff --git a/packages/devices/attendance/core/DeviceInterface.mjs b/packages/devices/attendance/core/DeviceInterface.mjs new file mode 100644 index 0000000..cd45971 --- /dev/null +++ b/packages/devices/attendance/core/DeviceInterface.mjs @@ -0,0 +1,46 @@ +// DeviceInterface.mjs +import { EventEmitter } from 'node:events'; + +/** + * Contrato común que todos los drivers deben implementar. + * Drivers de archivo (.txt) pueden dejar connect/fetchLogs/parseLogData como no-op. + */ +export class DeviceInterface extends EventEmitter { + /** + * @param {object} [opts] + * @param {(docs:string[])=>Promise>} [opts.namesResolver] + * @param {'crossDay'|'sameDay'} [opts.intervalBuilder] + * @param {{ parseLine:(line:string)=>object|null }} [opts.parserStrategy] + */ + constructor(opts = {}) { + super(); + this.namesResolver = typeof opts.namesResolver === 'function' ? opts.namesResolver : async () => ({}); + this.intervalBuilder = opts.intervalBuilder || 'crossDay'; + this.parserStrategy = opts.parserStrategy || null; + } + + // ------- API esperada (drivers file) ------- + /** + * Procesa el contenido completo de un .txt y devuelve: + * { parsedRows, pairs, payloadDB, missing_docs, error? } + */ + async processFile(/* text:string */) { + throw new Error('processFile not implemented'); + } + + /** + * Retorna CSV como string (no descarga). + */ + exportCSV(/* pairs?:object[] */) { + throw new Error('exportCSV not implemented'); + } + + // ------- API opcional (drivers TCP/IP) ---- + async connect() { /* no-op */ } + async disconnect() { /* no-op */ } + async fetchLogs() { throw new Error('fetchLogs not implemented'); } + async parseLogData(/* raw */) { throw new Error('parseLogData not implemented'); } + + // ------- Utilidad: emitir estado ------- + setStatus(text) { this.emit('status', text || ''); } +} diff --git a/packages/devices/attendance/core/errors/DeviceErrors.mjs b/packages/devices/attendance/core/errors/DeviceErrors.mjs new file mode 100644 index 0000000..7062cad --- /dev/null +++ b/packages/devices/attendance/core/errors/DeviceErrors.mjs @@ -0,0 +1,4 @@ +// DeviceErrors.mjs +export class DeviceError extends Error { constructor(msg){ super(msg); this.name='DeviceError'; } } +export class DriverNotFoundError extends DeviceError { constructor(key){ super(`Driver no registrado: ${key}`); this.name='DriverNotFoundError'; } } +export class ParseError extends DeviceError { constructor(line){ super(`No se pudo parsear la línea: ${line}`); this.name='ParseError'; } } diff --git a/packages/devices/attendance/core/factories/DeviceFactory.mjs b/packages/devices/attendance/core/factories/DeviceFactory.mjs new file mode 100644 index 0000000..9ae1ccf --- /dev/null +++ b/packages/devices/attendance/core/factories/DeviceFactory.mjs @@ -0,0 +1,22 @@ +// DeviceFactory.mjs +import { DriverRegistry } from './DriverRegistry.mjs'; + +export class DeviceFactory { + static register(key, ctor, manifest) { + DriverRegistry.register(key, ctor, manifest); + } + + /** + * @param {string} key "vendor:model" + * @param {object} opts opciones para el constructor del driver + */ + static create(key, opts = {}) { + const reg = DriverRegistry.get(key); + if (!reg) throw new Error(`DeviceFactory: driver no registrado: ${key}`); + return new reg.ctor(opts); + } + + static listSupported() { + return DriverRegistry.list(); + } +} diff --git a/packages/devices/attendance/core/factories/DriverRegistry.mjs b/packages/devices/attendance/core/factories/DriverRegistry.mjs new file mode 100644 index 0000000..1fce66c --- /dev/null +++ b/packages/devices/attendance/core/factories/DriverRegistry.mjs @@ -0,0 +1,20 @@ +// DriverRegistry.mjs +const _registry = new Map(); +/** + * Clave: "vendor:model" en minúsculas + * Valor: { ctor: DriverClass, manifest?: object } + */ +export const DriverRegistry = { + register(key, ctor, manifest = null) { + const k = String(key || '').trim().toLowerCase(); + if (!k) throw new Error('DriverRegistry.register: key vacío'); + if (typeof ctor !== 'function') throw new Error('DriverRegistry.register: ctor inválido'); + _registry.set(k, { ctor, manifest: manifest || {} }); + }, + get(key) { + return _registry.get(String(key || '').trim().toLowerCase()) || null; + }, + list() { + return [..._registry.entries()].map(([k, v]) => ({ key: k, manifest: v.manifest || {} })); + } +}; diff --git a/packages/devices/attendance/core/index.mjs b/packages/devices/attendance/core/index.mjs new file mode 100644 index 0000000..26637c6 --- /dev/null +++ b/packages/devices/attendance/core/index.mjs @@ -0,0 +1,18 @@ +// index.mjs (Facade del dominio attendance) +export { DeviceInterface } from './DeviceInterface.mjs'; +export { BaseFileDriver } from './BaseFileDriver.mjs'; +export { DeviceFactory } from './factories/DeviceFactory.mjs'; +export { DriverRegistry } from './factories/DriverRegistry.mjs'; + +// Facade helpers +import { DeviceFactory } from './factories/DeviceFactory.mjs'; + +export function registerDriver(key, Ctor, manifest) { + DeviceFactory.register(key, Ctor, manifest); +} +export function createDevice(key, opts) { + return DeviceFactory.create(key, opts); +} +export function listSupported() { + return DeviceFactory.listSupported(); +} diff --git a/packages/devices/attendance/core/schema/manifest.schema.json b/packages/devices/attendance/core/schema/manifest.schema.json new file mode 100644 index 0000000..216116f --- /dev/null +++ b/packages/devices/attendance/core/schema/manifest.schema.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Device Driver Manifest", + "type": "object", + "required": ["vendor", "model", "transport", "version"], + "properties": { + "vendor": { "type": "string", "minLength": 1 }, + "model": { "type": "string", "minLength": 1 }, + "transport": { "type": "string", "enum": ["file", "tcp", "http"] }, + "capabilities": { "type": "array", "items": { "type": "string" } }, + "version": { "type": "string" } + }, + "additionalProperties": true +} diff --git a/packages/devices/attendance/core/schema/record.schema.json b/packages/devices/attendance/core/schema/record.schema.json new file mode 100644 index 0000000..e69de29 diff --git a/packages/devices/attendance/core/strategies/intervals/cross-day.mjs b/packages/devices/attendance/core/strategies/intervals/cross-day.mjs new file mode 100644 index 0000000..f86f760 --- /dev/null +++ b/packages/devices/attendance/core/strategies/intervals/cross-day.mjs @@ -0,0 +1,29 @@ +// cross-day.mjs +// Pares ordenados para jornadas que pueden cruzar medianoche. +// rows: [{ doc, name, isoDate, dt_ms, ... }, ...] +export function buildIntervalsCrossDay(rows){ + const byDoc = new Map(); + rows.forEach(r => { + (byDoc.get(r.doc) || byDoc.set(r.doc, []).get(r.doc)) + .push({ ms: r.dt_ms, date: r.isoDate, name: r.name }); + }); + + const out = []; + for (const [doc, arr] of byDoc.entries()){ + arr.sort((a,b)=>a.ms-b.ms); + for (let i=0;i x.doc.localeCompare(y.doc) || + x.fecha.localeCompare(y.fecha) || + (x.desde_ms - y.desde_ms)); + return out; +} diff --git a/packages/devices/attendance/core/strategies/intervals/same-day.mjs b/packages/devices/attendance/core/strategies/intervals/same-day.mjs new file mode 100644 index 0000000..ab3ce57 --- /dev/null +++ b/packages/devices/attendance/core/strategies/intervals/same-day.mjs @@ -0,0 +1,34 @@ +// same-day.mjs +// Agrupa por (doc, fecha) y arma pares 1-2, 3-4, ... +export function buildIntervals(rows) { + const nameByDoc = new Map(); + const byKey = new Map(); // doc|isoDate -> [ms] + + for (const r of rows) { + nameByDoc.set(r.doc, r.name); + const key = `${r.doc}|${r.isoDate}`; + (byKey.get(key) || byKey.set(key, []).get(key)).push(r.dt_ms); + } + + const result = []; + for (const [key, arr] of byKey.entries()) { + arr.sort((a,b)=>a-b); + const [doc, isoDate] = key.split('|'); + const name = nameByDoc.get(doc) || ''; + for (let i=0; i{ + if (a.doc !== b.doc) return a.doc.localeCompare(b.doc); + if (a.isoDate !== b.isoDate) return a.isoDate.localeCompare(b.isoDate); + return (a.desde_ms||0) - (b.desde_ms||0); + }); + return result; +} diff --git a/packages/devices/attendance/core/strategies/parsers/LineParserInterface.mjs b/packages/devices/attendance/core/strategies/parsers/LineParserInterface.mjs new file mode 100644 index 0000000..b01e98e --- /dev/null +++ b/packages/devices/attendance/core/strategies/parsers/LineParserInterface.mjs @@ -0,0 +1,6 @@ +// LineParserInterface.mjs +export class LineParserInterface { + parseLine(/* line:string */) { + throw new Error('parseLine not implemented'); + } +} diff --git a/packages/devices/attendance/core/strategies/parsers/generic-i60.mjs b/packages/devices/attendance/core/strategies/parsers/generic-i60.mjs new file mode 100644 index 0000000..e69de29 diff --git a/packages/devices/attendance/core/strategies/parsers/zkteco-i60.mjs b/packages/devices/attendance/core/strategies/parsers/zkteco-i60.mjs new file mode 100644 index 0000000..e69de29 diff --git a/packages/devices/attendance/core/utils/dates.mjs b/packages/devices/attendance/core/utils/dates.mjs new file mode 100644 index 0000000..1ef55ed --- /dev/null +++ b/packages/devices/attendance/core/utils/dates.mjs @@ -0,0 +1,31 @@ +// dates.mjs +export const z2 = n => String(n).padStart(2,'0'); + +export function toUTCms(isoDate, time) { + const [Y,M,D] = isoDate.split('-').map(n=>parseInt(n,10)); + const [h,m,s] = time.split(':').map(n=>parseInt(n,10)); + return Date.UTC(Y, (M||1)-1, D||1, h||0, m||0, s||0); +} + +export function fmtHMSUTC(ms){ + const d = new Date(ms); + const z = n => String(n).padStart(2,'0'); + return `${z(d.getUTCHours())}:${z(d.getUTCMinutes())}:${z(d.getUTCSeconds())}`; +} + +export const fmtHM = mins => { + const h = Math.floor(mins/60); const m = Math.round(mins%60); + return `${z2(h)}:${z2(m)}`; +}; + +// "YY/MM/DD" o "YYYY/MM/DD" (o '-') -> "YYYY-MM-DD" +export function normDateStr(s) { + const m = String(s || '').trim().match(/^(\d{2,4})[\/\-](\d{1,2})[\/\-](\d{1,2})$/); + if (!m) return null; + let [_, y, mo, d] = m; + let yy = parseInt(y, 10); + if (y.length === 2) yy = 2000 + yy; + const mm = parseInt(mo, 10), dd = parseInt(d, 10); + if (!(mm >= 1 && mm <= 12 && dd >= 1 && dd <= 31)) return null; + return `${yy}-${String(mm).padStart(2,'0')}-${String(dd).padStart(2,'0')}`; +} diff --git a/packages/devices/attendance/core/utils/docs.mjs b/packages/devices/attendance/core/utils/docs.mjs new file mode 100644 index 0000000..9ed4a95 --- /dev/null +++ b/packages/devices/attendance/core/utils/docs.mjs @@ -0,0 +1,20 @@ +// docs.mjs +import { z2 } from './dates.mjs'; + +export const normDoc = s => { + const v = String(s||'').replace(/\D/g,'').replace(/^0+/,''); + return v || '0'; +}; + +export const cleanDoc = s => { + const v = String(s||'').trim().replace(/^0+/, ''); + return v === '' ? '0' : v; +}; + +// HH:MM o HH:MM:SS -> HH:MM:SS +export const normTime = s => { + if (!s) return ''; + const m = String(s).trim().match(/^(\d{1,2}):(\d{2})(?::(\d{2}))?$/); + if (!m) return ''; + return `${z2(+m[1])}:${z2(+m[2])}:${z2(+m[3]||0)}`; +}; diff --git a/packages/devices/attendance/drivers/generic/i60/GenericI60Driver.mjs b/packages/devices/attendance/drivers/generic/i60/GenericI60Driver.mjs new file mode 100644 index 0000000..65addf3 --- /dev/null +++ b/packages/devices/attendance/drivers/generic/i60/GenericI60Driver.mjs @@ -0,0 +1,17 @@ +// GenericI60Driver.mjs +import { BaseFileDriver } from '../../core/BaseFileDriver.mjs'; +import * as Parser from './parser.mjs'; + +/** + * Driver genérico i60 (sin conectividad). Lee archivos .txt exportados del equipo. + * Implementa el "Template Method" heredado de BaseFileDriver. + */ +export default class GenericI60Driver extends BaseFileDriver { + constructor(opts = {}) { + super({ + ...opts, + parserStrategy: { parseLine: Parser.parseLine }, + intervalBuilder: opts.intervalBuilder || 'crossDay' + }); + } +} diff --git a/packages/devices/attendance/drivers/generic/i60/index.mjs b/packages/devices/attendance/drivers/generic/i60/index.mjs new file mode 100644 index 0000000..6649aa1 --- /dev/null +++ b/packages/devices/attendance/drivers/generic/i60/index.mjs @@ -0,0 +1,13 @@ +// index.mjs +import GenericI60Driver from './GenericI60Driver.mjs'; + +export const manifest = { + vendor: 'generic', + model: 'i60', + transport: 'file', + capabilities: ['import', 'intervals:cross-day'], + version: '1.0.0' +}; + +export default GenericI60Driver; +export { manifest }; diff --git a/packages/devices/attendance/drivers/generic/i60/manifest.json b/packages/devices/attendance/drivers/generic/i60/manifest.json new file mode 100644 index 0000000..e69de29 diff --git a/packages/devices/attendance/drivers/generic/i60/parser.mjs b/packages/devices/attendance/drivers/generic/i60/parser.mjs new file mode 100644 index 0000000..d553d7d --- /dev/null +++ b/packages/devices/attendance/drivers/generic/i60/parser.mjs @@ -0,0 +1,54 @@ +// parser.mjs +import { normDateStr, toUTCms } from '../../core/utils/dates.mjs'; +import { cleanDoc, normTime } from '../../core/utils/docs.mjs'; + +/** + * Parsea una línea con prioridad por TAB; si no hay, cae a espacios; + * separa fecha/hora si vienen juntas. + * Devuelve { doc, name, isoDate, time, dt_ms, mode } o null. + */ +export function parseLine(line) { + const raw = String(line || '').replace(/\r/g, '').trim(); + if (!raw) return null; + + // omitir encabezados comunes + if (/^no[\t ]|^mchn[\t ]|^enno[\t ]|^name[\t ]|^datetime[\t ]/i.test(raw)) return null; + + let parts = raw.split(/\t+/); + + // Fallback: dos o más espacios + DateTime al final + if (parts.length < 7) { + const dtMatch = raw.match(/(\d{2,4}[\/-]\d{1,2}[\/-]\d{1,2})\s+(\d{1,2}:\d{2}:\d{2})$/); + if (dtMatch) { + const head = raw.slice(0, dtMatch.index).trim(); + const headParts = head.split(/\t+|\s{2,}/).filter(Boolean); + parts = [...headParts, dtMatch[1], dtMatch[2]]; + } else { + parts = raw.split(/\s{2,}/).filter(Boolean); + } + } + if (parts.length < 7) return null; + + // Indices "normales": 0:No, 1:Mchn, 2:EnNo(doc), 3:Name, 4:Mode, 5:Fecha, 6:Hora + const doc = cleanDoc(parts[2]); + const name = String(parts[3] || '').trim(); + const mode = String(parts[4] || '').trim(); + + let dateStr = String(parts[5] || '').trim(); + let timeStr = String(parts[6] || '').trim(); + + // Caso: la última columna es "YYYY/MM/DD HH:MM:SS" + const last = parts[parts.length - 1]; + const dtBoth = /(\d{2,4}[\/-]\d{1,2}[\/-]\d{1,2})\s+(\d{1,2}:\d{2}:\d{2})/.exec(last); + if (dtBoth) { dateStr = dtBoth[1]; timeStr = dtBoth[2]; } + else if (!timeStr && /\d{1,2}:\d{2}:\d{2}/.test(dateStr)) { + const m = dateStr.match(/^(.+?)\s+(\d{1,2}:\d{2}:\d{2})$/); + if (m) { dateStr = m[1]; timeStr = m[2]; } + } + + const iso = normDateStr(dateStr); + const timeNorm = normTime(timeStr); + if (!iso || !timeNorm) return null; + + return { doc, name, isoDate: iso, time: timeNorm, dt_ms: toUTCms(iso, timeNorm), mode }; +} diff --git a/packages/devices/attendance/drivers/generic/src/DeviceFactory.mjs b/packages/devices/attendance/drivers/generic/src/DeviceFactory.mjs new file mode 100644 index 0000000..ac88951 --- /dev/null +++ b/packages/devices/attendance/drivers/generic/src/DeviceFactory.mjs @@ -0,0 +1,11 @@ +import { GenericI60Driver } from './drivers/Generic/i60/GenericI60Driver'; + +export class DeviceFactory { + static create(model, config) { + switch (model) { + case 'Generic-i60': return new GenericI60Driver(config); + default: + throw new Error(`El modelo indicado no esta soportado. ${model}\n Porfavor ponerse en contacto con el equipo para implementarlo.`); + } + } +} \ No newline at end of file diff --git a/packages/devices/attendance/drivers/generic/src/DeviceInterface.mjs b/packages/devices/attendance/drivers/generic/src/DeviceInterface.mjs new file mode 100644 index 0000000..76ea8fa --- /dev/null +++ b/packages/devices/attendance/drivers/generic/src/DeviceInterface.mjs @@ -0,0 +1,6 @@ +// DeviceInterface.mjs +export class DeviceInterface { + async connect() { throw new Error('Not implemented'); } + async fetchLogs() { throw new Error('Not implemented'); } + async parseLogData(raw) { throw new Error('Not implemented'); } +} \ No newline at end of file diff --git a/packages/devices/attendance/drivers/generic/src/index.mjs b/packages/devices/attendance/drivers/generic/src/index.mjs new file mode 100644 index 0000000..e69de29 diff --git a/packages/devices/attendance/drivers/generic/src/utils.mjs b/packages/devices/attendance/drivers/generic/src/utils.mjs new file mode 100644 index 0000000..e69de29 diff --git a/packages/devices/i60/DriverFactory.mjs b/packages/devices/i60/DriverFactory.mjs new file mode 100644 index 0000000..11a32a3 --- /dev/null +++ b/packages/devices/i60/DriverFactory.mjs @@ -0,0 +1,13 @@ +import { GenericDriver } from './GenericDriver.mjs'; + +export class DriverFactory { + static create(model = 'Generico'){ + switch (String(model).toLowerCase()) { + case 'generico': + case 'generic': + default: + // El constructor de GenericDriver es Singleton; devolverá siempre la misma instancia + return new GenericDriver(); + } + } +} diff --git a/packages/devices/i60/GenericDriver.mjs b/packages/devices/i60/GenericDriver.mjs new file mode 100644 index 0000000..6c4cd8b --- /dev/null +++ b/packages/devices/i60/GenericDriver.mjs @@ -0,0 +1,74 @@ +import { readFile } from 'node:fs/promises'; +import { parseLine } from './parsing.mjs'; +import { buildIntervalsCrossDay } from './intervals.mjs'; +import { exportCSV } from './csv.mjs'; +import { NamesServiceProxy } from './namesProxy.mjs'; + +class GenericDriver { + constructor(){ + if (GenericDriver._instance) return GenericDriver._instance; + /** @type {Array} */ this.parsedRows = []; + /** @type {Array} */ this.payloadDB = []; + /** @type {Array} */ this.pairs = []; + GenericDriver._instance = this; + } + + // Orquesta el proceso a partir de texto plano + async processText(text, { fetchNamesForDocs } = {}){ + const lines = String(text||'').split(/\n/); + const rows = []; + for (const line of lines) { + const r = parseLine(line); + if (r) rows.push(r); + } + this.parsedRows = rows; + + const uniqueDocs = [...new Set(this.parsedRows.map(r => r.doc))]; + + const namesProxy = new NamesServiceProxy(fetchNamesForDocs); + const map = await namesProxy.get(uniqueDocs); + + const missingDocs = uniqueDocs.filter(d => { + const hit = map?.[d]; + if (!hit) return true; + if (typeof hit.found === 'boolean') return !hit.found; + return !(hit?.nombre||'').trim() && !(hit?.apellido||'').trim(); + }); + + // sobreescribir nombre cuando DB provee + this.parsedRows.forEach(r => { + const hit = map?.[r.doc]; + if (hit && (hit.nombre || hit.apellido)) { + r.name = `${hit.nombre || ''} ${hit.apellido || ''}`.trim(); + } + }); + + // Pairs (permitiendo cruce de medianoche) + this.pairs = buildIntervalsCrossDay(this.parsedRows); + + // Payload crudo para insertar + this.payloadDB = this.parsedRows.map(r => ({ + doc: r.doc, + isoDate: r.isoDate, + time: r.time, + mode: r.mode || null + })); + + return { parsedRows: this.parsedRows, pairs: this.pairs, payloadDB: this.payloadDB, missingDocs }; + } + + // Conveniencia: leer desde ruta en disco + async processFileFromPath(filePath, opts = {}){ + const txt = await readFile(filePath, 'utf8'); + return await this.processText(txt, opts); + } + + // CSV server-side (devuelve string) + exportCSV(pairs = this.pairs){ + return exportCSV(pairs); + } +} + +const instance = new GenericDriver(); +export default instance; +export { GenericDriver }; diff --git a/packages/devices/i60/GenericDriverFacade.mjs b/packages/devices/i60/GenericDriverFacade.mjs new file mode 100644 index 0000000..98c177a --- /dev/null +++ b/packages/devices/i60/GenericDriverFacade.mjs @@ -0,0 +1,8 @@ +import { DriverFactory } from './DriverFactory.mjs'; + +export class GenericDriverFacade { + constructor(driver = DriverFactory.create('Generico')){ this.driver = driver; } + async processTxt(text, services = {}){ return await this.driver.processText(text, services); } + async processFile(filePath, services = {}){ return await this.driver.processFileFromPath(filePath, services); } + exportCSV(pairs){ return this.driver.exportCSV(pairs); } +} diff --git a/packages/devices/i60/csv.mjs b/packages/devices/i60/csv.mjs new file mode 100644 index 0000000..00a9a59 --- /dev/null +++ b/packages/devices/i60/csv.mjs @@ -0,0 +1,17 @@ +import { fmtHM, fmtHMSUTC } from './helpers.mjs'; + +// Genera CSV (server-side: retorna string) — nombre preservado +export function exportCSV(pairs) { + if (!pairs?.length) return ''; + const head = ['documento','nombre','fecha','desde','hasta','duracion_hhmm','duracion_min','obs']; + const rows = pairs.map(p => { + const fecha = p.fecha || p.isoDate || ''; + const desde = p.desde_ms!=null ? fmtHMSUTC(p.desde_ms) : ''; + const hasta = p.hasta_ms!=null ? fmtHMSUTC(p.hasta_ms) : ''; + const durHHMM = p.durMins!=null ? fmtHM(p.durMins) : ''; + const durMin = p.durMins!=null ? Math.round(p.durMins) : ''; + return [p.doc, p.name || '', fecha, desde, hasta, durHHMM, durMin, p.obs || ''] + .map(v => `"${String(v).replaceAll('"','""')}"`).join(','); + }); + return head.join(',') + '\n' + rows.join('\n'); +} diff --git a/packages/devices/i60/helpers.mjs b/packages/devices/i60/helpers.mjs new file mode 100644 index 0000000..f504abb --- /dev/null +++ b/packages/devices/i60/helpers.mjs @@ -0,0 +1,40 @@ +// Helpers comunes (nombres preservados) +export const z2 = n => String(n).padStart(2,'0'); +export const pad2 = z2; +export const fmtHM = mins => { const h = Math.floor(mins/60); const m = Math.round(mins%60); return `${z2(h)}:${z2(m)}`; }; +export const ymd = s => String(s||'').slice(0,10); // '2025-08-29T..' -> '2025-08-29' + +// Normaliza fecha "YY/MM/DD" o "YYYY/MM/DD" a "YYYY-MM-DD" +export function normDateStr(s) { + const m = String(s || '').trim().match(/^(\d{2,4})[\/\-](\d{1,2})[\/\-](\d{1,2})$/); + if (!m) return null; + let [_, y, mo, d] = m; + let yy = parseInt(y, 10); + if (y.length === 2) yy = 2000 + yy; // 20YY + const mm = parseInt(mo, 10), dd = parseInt(d, 10); + if (!(mm >= 1 && mm <= 12 && dd >= 1 && dd <= 31)) return null; + return `${yy}-${String(mm).padStart(2,'0')}-${String(dd).padStart(2,'0')}`; +} + +// Normaliza documento quitando ceros a la izquierda +export const cleanDoc = s => { + const v = String(s||'').trim().replace(/^0+/, ''); + return v === '' ? '0' : v; +}; + +// Compat alias (mantener nombre) +export const normDoc = s => { + const v = String(s||'').replace(/\D/g,'').replace(/^0+/,''); + return v || '0'; +}; + +export function toUTCms(isoDate, time) { + const [Y,M,D] = isoDate.split('-').map(n=>parseInt(n,10)); + const [h,m,s] = time.split(':').map(n=>parseInt(n,10)); + return Date.UTC(Y, (M||1)-1, D||1, h||0, m||0, s||0); // UTC fijo +} +export function fmtHMSUTC(ms){ + const d = new Date(ms); + const z = n => String(n).padStart(2,'0'); + return `${z(d.getUTCHours())}:${z(d.getUTCMinutes())}:${z(d.getUTCSeconds())}`; +} diff --git a/packages/devices/i60/index.mjs b/packages/devices/i60/index.mjs new file mode 100644 index 0000000..843a7eb --- /dev/null +++ b/packages/devices/i60/index.mjs @@ -0,0 +1,32 @@ +export { default as GenericDriverDefault, GenericDriver } from './GenericDriver.mjs'; +export { DriverFactory } from './DriverFactory.mjs'; +export { GenericDriverFacade } from './GenericDriverFacade.mjs'; +export { NamesServiceProxy } from './namesProxy.mjs'; + +export * from './helpers.mjs'; +export * from './parsing.mjs'; +export * from './intervals.mjs'; +export * from './csv.mjs'; + + + +/* +Uso mínimo (en tu servidor, al recibir un .txt subido): + +// ejemplo en tu ruta de subida +import { GenericDriverFacade } from './drivers/generic/i60/GenericDriverFacade.mjs'; + +const facade = new GenericDriverFacade(); + +const { parsedRows, pairs, payloadDB, missingDocs } = + await facade.processFile(tempFilePath, { + // opcional: integra tu búsqueda de usuarios por documento + fetchNamesForDocs: async (docs) => { + // devuelve: { "12345678": { nombre, apellido, found:true } , ... } + return await dbFindUsuariosPorDocumentos(docs); + } + }); + +// luego persistes payloadDB y/o pairs según tu lógica + +*/ \ No newline at end of file diff --git a/packages/devices/i60/intervals.mjs b/packages/devices/i60/intervals.mjs new file mode 100644 index 0000000..d5d95ba --- /dev/null +++ b/packages/devices/i60/intervals.mjs @@ -0,0 +1,53 @@ +// Agrupa por empleado, ordena cronológicamente y arma pares 1-2, 3-4, ... permitiendo cruzar medianoche. +export function buildIntervalsCrossDay(rows){ + const byDoc = new Map(); + for (const r of rows) { + if (!byDoc.has(r.doc)) byDoc.set(r.doc, []); + byDoc.get(r.doc).push({ ms: r.dt_ms, date: r.isoDate, name: r.name }); + } + const out = []; + for (const [doc, arr] of byDoc.entries()){ + arr.sort((a,b)=>a.ms-b.ms); + for (let i=0;i x.doc.localeCompare(y.doc) || x.fecha.localeCompare(y.fecha) || (x.desde_ms - y.desde_ms)); + return out; +} + +// Alternativa por (doc, fecha) exacta (conservar nombre y firma) +export function buildIntervals(rows) { + const nameByDoc = new Map(); + const byKey = new Map(); // doc|isoDate -> [ms] + for (const r of rows) { + nameByDoc.set(r.doc, r.name); + const key = `${r.doc}|${r.isoDate}`; + if (!byKey.has(key)) byKey.set(key, []); + byKey.get(key).push(r.dt_ms); + } + const result = []; + for (const [key, arr] of byKey.entries()) { + arr.sort((a,b)=>a-b); + const [doc, isoDate] = key.split('|'); + const name = nameByDoc.get(doc) || ''; + for (let i=0; i{ + if (a.doc !== b.doc) return a.doc.localeCompare(b.doc); + if (a.isoDate !== b.isoDate) return a.isoDate.localeCompare(b.isoDate); + return (a.desde_ms||0) - (b.desde_ms||0); + }); + return result; +} diff --git a/packages/devices/i60/namesProxy.mjs b/packages/devices/i60/namesProxy.mjs new file mode 100644 index 0000000..100ba4e --- /dev/null +++ b/packages/devices/i60/namesProxy.mjs @@ -0,0 +1,18 @@ +// Proxy de servicio de nombres (caché + normalización) +export class NamesServiceProxy { + constructor(fetchNamesForDocs){ + this._fetch = typeof fetchNamesForDocs === 'function' ? fetchNamesForDocs : async () => ({}); + this._cache = new Map(); + } + async get(docs){ + const ask = []; + for (const d of docs) if (!this._cache.has(d)) ask.push(d); + if (ask.length){ + const map = await this._fetch(ask); + for (const [k,v] of Object.entries(map || {})) this._cache.set(String(k), v || {}); + } + const out = {}; + for (const d of docs) out[d] = this._cache.get(d) || {}; + return out; + } +} diff --git a/packages/devices/i60/package.json b/packages/devices/i60/package.json new file mode 100644 index 0000000..cfc333b --- /dev/null +++ b/packages/devices/i60/package.json @@ -0,0 +1,15 @@ +{ + "name": "@suitecoffee/driver-i60", + "version": "1.0.0", + "type": "module", + "private": true, + "description": "Driver genérico para lector I60 (asistencia)", + "exports": { + ".": "./src/index.mjs" + }, + "files": ["src"], + "dependencies": { + "@suitecoffee/db": "workspace:*", + "@suitecoffee/utils": "workspace:*" + } +} diff --git a/packages/devices/i60/parsing.mjs b/packages/devices/i60/parsing.mjs new file mode 100644 index 0000000..86ded82 --- /dev/null +++ b/packages/devices/i60/parsing.mjs @@ -0,0 +1,64 @@ +import { cleanDoc, normDateStr, toUTCms } from './helpers.mjs'; + +// Parsea una línea (nombres preservados) +export function parseLine(line) { + const raw = String(line || '').replace(/\r/g, '').trim(); + if (!raw) return null; + + // omitir encabezado + if (/^no[\t ]|^mchn[\t ]|^enno[\t ]|^name[\t ]|^datetime[\t ]/i.test(raw)) return null; + + let parts = raw.split(/\t+/); + + // Si no alcanzan 7 campos, intentar fallback con dos o más espacios + if (parts.length < 7) { + const dtMatch = raw.match(/(\d{2,4}[\/-]\d{1,2}[\/-]\d{1,2})\s+(\d{1,2}:\d{2}:\d{2})$/); + if (dtMatch) { + const head = raw.slice(0, dtMatch.index).trim(); + const headParts = head.split(/\t+|\s{2,}/).filter(Boolean); + parts = [...headParts, dtMatch[1], dtMatch[2]]; + } else { + parts = raw.split(/\s{2,}/).filter(Boolean); + } + } + if (parts.length < 7) return null; + + // 0:No, 1:Mchn, 2:EnNo(doc), 3:Name, 4:Mode, 5:Fecha, 6:Hora + const DOC_IDX = 2; + const NAME_IDX = 3; + const MODE_IDX = 4; + + const doc = cleanDoc(parts[DOC_IDX]); + const name = String(parts[NAME_IDX] || '').trim(); + const mode = String(parts[MODE_IDX] || '').trim(); + + let dateStr = String(parts[5] || '').trim(); + let timeStr = String(parts[6] || '').trim(); + + // Caso: 7 columnas y última es "DateTime" + const last = parts[parts.length - 1]; + const dtBoth = /(\d{2,4}[\/-]\d{1,2}[\/-]\d{1,2})\s+(\d{1,2}:\d{2}:\d{2})/.exec(last); + if (dtBoth) { + dateStr = dtBoth[1]; + timeStr = dtBoth[2]; + } else if (!timeStr && /\d{1,2}:\d{2}:\d{2}/.test(dateStr)) { + const m = dateStr.match(/^(.+?)\s+(\d{1,2}:\d{2}:\d{2})$/); + if (m) { dateStr = m[1]; timeStr = m[2]; } + } + + const iso = normDateStr(dateStr); // YY/MM/DD o YYYY/MM/DD -> YYYY-MM-DD + if (!iso || !/^\d{1,2}:\d{2}:\d{2}$/.test(timeStr)) return null; + + const [H, M, S] = timeStr.split(':').map(n => parseInt(n, 10)); + // mantener construcción local solo por paridad con el snippet original + // eslint-disable-next-line no-unused-vars + const dt = new Date(`${iso}T${String(H).padStart(2,'0')}:${String(M).padStart(2,'0')}:${String(S).padStart(2,'0')}`); + + return { + doc, name, + isoDate: iso, + time: timeStr, + dt_ms: toUTCms(iso, timeStr), // ⬅️ clave + mode + }; +} diff --git a/packages/db/package.json b/packages/devices/package.json similarity index 91% rename from packages/db/package.json rename to packages/devices/package.json index 31c995d..e911589 100644 --- a/packages/db/package.json +++ b/packages/devices/package.json @@ -1,5 +1,5 @@ { - "name": "@suitecoffee/db", + "name": "@suitecoffee/devices", "version": "0.1.0", "private": true, "type": "module", diff --git a/packages/oidc/package.json b/packages/oidc/package.json new file mode 100644 index 0000000..75c7457 --- /dev/null +++ b/packages/oidc/package.json @@ -0,0 +1,12 @@ +{ + "name": "@suitecoffee/oidc", + "version": "1.0.0", + "type": "module", + "main": "src/index.mjs", + "exports": { + ".": "./src/index.mjs" + }, + "dependencies": { + "openid-client": "^6.0.0" + } +} diff --git a/packages/oidc/src/index.mjs b/packages/oidc/src/index.mjs new file mode 100644 index 0000000..39f087e --- /dev/null +++ b/packages/oidc/src/index.mjs @@ -0,0 +1,70 @@ +// @suitecoffee/oidc/src/index.mjs +// OIDC minimal (ESM) — siempre usa discovery vía OIDC_CONFIG_URL + +import { Issuer } from 'openid-client'; + +let _cached = null; + +/** + * ENV requeridas: + * - OIDC_CONFIG_URL -> https://.../.well-known/openid-configuration + * - OIDC_CLIENT_ID + * - OIDC_CLIENT_SECRET -> opcional (si tu client es confidencial) + * - OIDC_REDIRECT_URI + */ +export async function initOIDCFromEnv() { + if (_cached) return _cached; + + const configUrl = process.env.OIDC_CONFIG_URL; + const clientId = process.env.OIDC_CLIENT_ID; + const clientSecret = process.env.OIDC_CLIENT_SECRET || undefined; + const redirectUri = process.env.OIDC_REDIRECT_URI; + + // Discovery directo (assume OK) + const issuer = await Issuer.discover(configUrl); + + const client = new issuer.Client({ + client_id: clientId, + client_secret: clientSecret, + redirect_uris: [redirectUri], + response_types: ['code'], + token_endpoint_auth_method: clientSecret ? 'client_secret_post' : 'none', + }); + + _cached = { + issuer, + client, + + // Construye la URL de autorización (PKCE) + getAuthUrl({ state, nonce, code_challenge, scope = 'openid email profile' }) { + return client.authorizationUrl({ + scope, + redirect_uri: redirectUri, + code_challenge, + code_challenge_method: 'S256', + state, + nonce, + }); + }, + + // Intercambia el authorization code en el callback + async handleCallback(req, expected) { + const params = client.callbackParams(req); + return client.callback(redirectUri, params, expected); + }, + + // URL de fin de sesión (si el OP la expone) + endSessionUrl({ id_token_hint, post_logout_redirect_uri }) { + return client.endSessionUrl + ? client.endSessionUrl({ id_token_hint, post_logout_redirect_uri }) + : null; + }, + }; + + return _cached; +} + +export function getOIDC() { + if (!_cached) throw new Error('[OIDC] initOIDCFromEnv() no fue llamado aún'); + return _cached; +} diff --git a/services/app/.env.development b/services/app/.env.development index 4ad8890..cca50cc 100644 --- a/services/app/.env.development +++ b/services/app/.env.development @@ -1,62 +1,54 @@ -# ===== Runtime ===== +# ======================================================= +# Runtime NODE_ENV=development PORT=3030 +APP_BASE_URL=https://dev.suitecoffee.uy +# ======================================================= -# ===== Session (usa el Redis del stack) ===== -# Para DEV podemos reutilizar el Redis de Authentik. En prod conviene uno separado. -SESSION_SECRET=Neon*Mammal*Boaster*Ludicrous*Fender8*Crablike -SESSION_COOKIE_NAME=sc.sid - -# ===== DB principal (metadatos de SuiteCoffee) ===== -# Usa el alias de red del servicio 'db' (compose: aliases [dev-db]) -DB_HOST=dev-db -DB_NAME=dev_suitecoffee_core -DB_PORT=5432 -DB_USER=dev-user-suitecoffee -DB_PASS=dev-pass-suitecoffee +# ======================================================= +# Configuración de Dases de Datos CORE_DB_HOST=dev-db CORE_DB_NAME=dev_suitecoffee_core CORE_DB_PORT=5432 CORE_DB_USER=dev-user-suitecoffee CORE_DB_PASS=dev-pass-suitecoffee -# ===== DB tenants (Tenants de SuiteCoffee) ===== -TENANTS_HOST=dev-tenants -TENANTS_DB=dev_suitecoffee_tenants -TENANTS_PORT=5432 -TENANTS_USER=suitecoffee -TENANTS_PASS=suitecoffee - TENANTS_DB_HOST=dev-tenants TENANTS_DB_NAME=dev_suitecoffee_tenants TENANTS_DB_PORT=5432 TENANTS_DB_USER=suitecoffee TENANTS_DB_PASS=suitecoffee +# ======================================================= -# ===== Authentik — Admin API (server-to-server dentro de la red) ===== -# Usa el alias de red del servicio 'authentik' y su puerto interno 9000 + +# ======================================================= +# Sesiones +SESSION_SECRET=Neon*Mammal*Boaster*Ludicrous*Fender8*Crablike +SESSION_NAME=sc.sid +# COOKIE_DOMAIN=dev.suitecoffee.uy +# ======================================================= + + + +# ======================================================= +# Authentik y OIDC AK_TOKEN=h2apVHbd3ApMcnnSwfQPXbvximkvP8HnUE25ot3zXWuEEtJFaNCcOzDHB6Xw AK_REDIS_URL=redis://ak-redis:6379 -# ===== OIDC (DEBE coincidir con el Provider) ===== -# DEV (todo dentro de la red de Docker): -# - El auth service redirige al navegador a este issuer. Si NO tenés reverse proxy hacia Authentik, -# esta URL interna NO será accesible desde el navegador del host. En ese caso, ver nota más abajo. - -APP_BASE_URL=https://suitecoffee.uy - OIDC_LOGIN_URL=https://sso.suitecoffee.uy -OIDC_REDIRECT_URI = https://suitecoffee.uy/auth/callback +OIDC_REDIRECT_URI=https://suitecoffee.uy/auth/callback + +OIDC_CLIENT_ID=1orMM8vOvf3WkN2FejXYvUFpPtONG0Lx1eMlwIpW +OIDC_CLIENT_SECRET=t5wx13qBcM0EFQ3cGnUIAmLzvbdsQrUVPv1OGWjszWkEp35pJQ55t7vZeeShqG49kuRAaiXv6PSGJLhRfGaponGaJl8gH1uCL7KIxdmm7UihgYoAXB2dFhZV4zRxfze2 -OIDC_CLIEN_ID=1orMM8vOvf3WkN2FejXYvUFpPtONG0Lx1eMlwIpW OIDC_CONFIG_URL=https://sso.suitecoffee.uy/application/o/suitecoffee/.well-known/openid-configuration -OIDC_ISSUER=https://sso.suitecoffee.uy/application/o/suitecoffee/ -OIDC_ISSUER_DISCOVERY=https://sso.suitecoffee.uy/application/o/suitecoffee/.well-known/openid-configuration OIDC_AUTHORIZE_URL=https://sso.suitecoffee.uy/application/o/authorize/ OIDC_TOKEN_URL=https://sso.suitecoffee.uy/application/o/token/ OIDC_USERINFO_URL=https://sso.suitecoffee.uy/application/o/userinfo/ OIDC_LOGOUT_URL=https://sso.suitecoffee.uy/application/o/suitecoffee/end-session/ -OIDC_JWKS_URL=https://sso.suitecoffee.uy/application/o/suitecoffee/jwks/ \ No newline at end of file +OIDC_JWKS_URL=https://sso.suitecoffee.uy/application/o/suitecoffee/jwks/ + +# ======================================================= \ No newline at end of file diff --git a/services/app/.env.production b/services/app/.env.production deleted file mode 100644 index 0b341ba..0000000 --- a/services/app/.env.production +++ /dev/null @@ -1,22 +0,0 @@ -NODE_ENV=production # Entorno de desarrollo - -PORT=3000 # Variables del servicio -> suitecoffee-app - -# Variables del servicio -> suitecoffee-db de suitecoffee-app - -DB_HOST=prod-tenants -# Nombre de la base de datos -DB_NAME=postgres - -# Usuario y contraseña -DB_USER=postgres -DB_PASS=postgres - -# Puertos del servicio de db -DB_LOCAL_PORT=5432 -DB_DOCKER_PORT=5432 - -# Colores personalizados -COL_PRI=452D19 # Marrón oscuro -COL_SEC=D7A666 # Crema / Café -COL_BG=FFA500 # Naranja \ No newline at end of file diff --git a/services/app/package-lock.json b/services/app/package-lock.json index bedd6b7..6f6127f 100644 --- a/services/app/package-lock.json +++ b/services/app/package-lock.json @@ -9,6 +9,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { + "@suitecoffee/api": "file:../../packages/api/", + "@suitecoffee/db": "file:../../packages/core/db", + "@suitecoffee/middlewares": "file:../../packages/core/middlewares", + "@suitecoffee/redis": "file:../../packages/core/redis", + "@suitecoffee/repositories": "file:../../packages/core/repositories", + "@suitecoffee/scripts": "file:../../packages/core/scripts", "bcrypt": "^6.0.0", "chalk": "^5.6.0", "connect-redis": "^9.0.0", @@ -23,6 +29,7 @@ "jose": "^6.1.0", "jsonwebtoken": "^9.0.2", "jwks-rsa": "^3.2.0", + "mime": "^4.1.0", "morgan": "^1.10.1", "node-appwrite": "^20.2.1", "node-fetch": "^3.3.2", @@ -36,6 +43,37 @@ "nodemon": "^3.1.10" } }, + "../../packages/api": { + "name": "@suitecoffee/api", + "version": "1.0.0" + }, + "../../packages/core": {}, + "../../packages/core/db": { + "name": "@suitecoffee/db", + "version": "1.0.0", + "peerDependencies": { + "pg": "^8.16.3" + } + }, + "../../packages/core/middlewares": { + "name": "@suitecoffee/middlewares", + "version": "1.0.0" + }, + "../../packages/core/redis": { + "name": "@suitecoffee/redis", + "version": "1.0.0", + "peerDependencies": { + "pg": "^8.16.3" + } + }, + "../../packages/core/repositories": { + "name": "@suitecoffee/repositories", + "version": "0.0.1" + }, + "../../packages/core/scripts": { + "name": "@suitecoffee/scripts", + "version": "1.0.0" + }, "node_modules/@epic-web/invariant": { "version": "1.0.0", "dev": true, @@ -95,6 +133,30 @@ "@redis/client": "^5.8.2" } }, + "node_modules/@suitecoffee/api": { + "resolved": "../../packages/api", + "link": true + }, + "node_modules/@suitecoffee/db": { + "resolved": "../../packages/core/db", + "link": true + }, + "node_modules/@suitecoffee/middlewares": { + "resolved": "../../packages/core/middlewares", + "link": true + }, + "node_modules/@suitecoffee/redis": { + "resolved": "../../packages/core/redis", + "link": true + }, + "node_modules/@suitecoffee/repositories": { + "resolved": "../../packages/core/repositories", + "link": true + }, + "node_modules/@suitecoffee/scripts": { + "resolved": "../../packages/core/scripts", + "link": true + }, "node_modules/@types/body-parser": { "version": "1.19.6", "license": "MIT", @@ -371,6 +433,8 @@ }, "node_modules/connect-redis": { "version": "9.0.0", + "resolved": "https://registry.npmjs.org/connect-redis/-/connect-redis-9.0.0.tgz", + "integrity": "sha512-QwzyvUePTMvEzG1hy45gZYw3X3YHrjmEdSkayURlcZft7hqadQ3X39wYkmCqblK2rGlw+XItELYt6GnyG6DEIQ==", "license": "MIT", "engines": { "node": ">=18" @@ -641,6 +705,8 @@ }, "node_modules/express-session": { "version": "1.18.2", + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.18.2.tgz", + "integrity": "sha512-SZjssGQC7TzTs9rpPDuUrR23GNZ9+2+IkA/+IJWmvQilTr5OSliEHGF+D9scbIpdC6yGtTI0/VhaHoVes2AN/A==", "license": "MIT", "dependencies": { "cookie": "0.7.2", @@ -1137,6 +1203,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/mime": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-4.1.0.tgz", + "integrity": "sha512-X5ju04+cAzsojXKes0B/S4tcYtFAJ6tTMuSPBEn9CPGlrWr8Fiw7qYeLT0XyH80HSoAoqWCaz+MWKh22P7G1cw==", + "funding": [ + "https://github.com/sponsors/broofa" + ], + "license": "MIT", + "bin": { + "mime": "bin/cli.js" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/mime-db": { "version": "1.54.0", "license": "MIT", diff --git a/services/app/package.json b/services/app/package.json index 6b65566..ee9fb58 100644 --- a/services/app/package.json +++ b/services/app/package.json @@ -15,6 +15,15 @@ "nodemon": "^3.1.10" }, "dependencies": { + + "@suitecoffee/scripts": "file:../../packages/core/scripts", + "@suitecoffee/db": "file:../../packages/core/db", + "@suitecoffee/redis": "file:../../packages/core/redis", + "@suitecoffee/middlewares": "file:../../packages/core/middlewares", + + "@suitecoffee/api": "file:../../packages/api/", + "@suitecoffee/repositories": "file:../../packages/core/repositories", + "bcrypt": "^6.0.0", "chalk": "^5.6.0", "connect-redis": "^9.0.0", @@ -29,6 +38,7 @@ "jose": "^6.1.0", "jsonwebtoken": "^9.0.2", "jwks-rsa": "^3.2.0", + "mime": "^4.1.0", "morgan": "^1.10.1", "node-appwrite": "^20.2.1", "node-fetch": "^3.3.2", @@ -37,11 +47,7 @@ "redis": "^5.8.2", "serve-favicon": "^2.5.1" }, - "imports": { - "#v1Router": "./src/api/v1/routes/routes.js", - "#pages": "./src/pages/pages.js", - "#db": "./src/db/poolSingleton.js" - }, - "keywords": [], + "imports": { }, + "keywords": [], "description": "" } diff --git a/services/app/src/api/api.js b/services/app/src/api/api.js deleted file mode 100644 index d65d8b8..0000000 --- a/services/app/src/api/api.js +++ /dev/null @@ -1,181 +0,0 @@ -// // ---------------------------------------------------------- -// // API -// // ---------------------------------------------------------- -// app.get('/api/tables', async (_req, res) => { -// res.json(ALLOWED_TABLES); -// }); - -// app.get('/api/schema/:table', async (req, res) => { -// try { -// const table = ensureTable(req.params.table); -// const client = await getClient(); -// try { -// const columns = await loadColumns(client, table); -// const fks = await loadForeignKeys(client, table); -// const enriched = columns.map(c => ({ ...c, foreign: fks[c.column_name] || null })); -// res.json({ table, columns: enriched }); -// } finally { client.release(); } -// } catch (e) { -// res.status(400).json({ error: e.message }); -// } -// }); - -// app.get('/api/options/:table/:column', async (req, res) => { -// try { -// const table = ensureTable(req.params.table); -// const column = req.params.column; -// if (!VALID_IDENT.test(column)) throw new Error('Columna inválida'); - -// const client = await getClient(); -// try { -// const fks = await loadForeignKeys(client, table); -// const fk = fks[column]; -// if (!fk) return res.json([]); - -// const refTable = fk.foreign_table; -// const refId = fk.foreign_column; -// const labelCol = await pickLabelColumn(client, refTable); - -// const sql = `SELECT ${q(refId)} AS id, ${q(labelCol)} AS label FROM ${q(refTable)} ORDER BY ${q(labelCol)} LIMIT 1000`; -// const result = await client.query(sql); -// res.json(result.rows); -// } finally { client.release(); } -// } catch (e) { -// res.status(400).json({ error: e.message }); -// } -// }); - -// app.get('/api/table/:table', async (req, res) => { -// try { -// const table = ensureTable(req.params.table); -// const limit = Math.min(parseInt(req.query.limit || '100', 10), 1000); -// const client = await getClient(); -// try { -// const pks = await loadPrimaryKey(client, table); -// const orderBy = pks.length ? `ORDER BY ${pks.map(q).join(', ')} DESC` : ''; -// const sql = `SELECT * FROM ${q(table)} ${orderBy} LIMIT ${limit}`; -// const result = await client.query(sql); - -// // Normalizar: siempre devolver objetos {col: valor} -// const colNames = result.fields.map(f => f.name); -// let rows = result.rows; -// if (rows.length && Array.isArray(rows[0])) { -// rows = rows.map(r => Object.fromEntries(r.map((v, i) => [colNames[i], v]))); -// } -// res.json(rows); -// } finally { client.release(); } -// } catch (e) { -// res.status(400).json({ error: e.message, code: e.code, detail: e.detail }); -// } -// }); - -// app.post('/api/table/:table', async (req, res) => { -// const table = ensureTable(req.params.table); -// const payload = req.body || {}; -// try { -// const client = await getClient(); -// try { -// const columns = await loadColumns(client, table); -// const insertable = columns.filter(c => -// !c.is_primary && !c.is_identity && !(c.column_default || '').startsWith('nextval(') -// ); -// const allowedCols = new Set(insertable.map(c => c.column_name)); - -// const cols = []; -// const vals = []; -// const params = []; -// let idx = 1; -// for (const [k, v] of Object.entries(payload)) { -// if (!allowedCols.has(k)) continue; -// if (!VALID_IDENT.test(k)) continue; -// cols.push(q(k)); -// vals.push(`$${idx++}`); -// params.push(v); -// } - -// if (!cols.length) { -// const { rows } = await client.query(`INSERT INTO ${q(table)} DEFAULT VALUES RETURNING *`); -// res.status(201).json({ inserted: rows[0] }); -// } else { -// const { rows } = await client.query( -// `INSERT INTO ${q(table)} (${cols.join(', ')}) VALUES (${vals.join(', ')}) RETURNING *`, -// params -// ); -// res.status(201).json({ inserted: rows[0] }); -// } -// } catch (e) { -// if (e.code === '23503') return res.status(400).json({ error: 'Violación de clave foránea', detail: e.detail }); -// if (e.code === '23505') return res.status(400).json({ error: 'Violación de unicidad', detail: e.detail }); -// if (e.code === '23514') return res.status(400).json({ error: 'Violación de CHECK', detail: e.detail }); -// if (e.code === '23502') return res.status(400).json({ error: 'Campo NOT NULL faltante', detail: e.detail }); -// throw e; -// } -// } catch (e) { -// res.status(400).json({ error: e.message }); -// } -// }); - -// app.get('/api/comandas', async (req, res, next) => { -// try { -// const estado = (req.query.estado || '').trim() || null; -// const limit = Math.min(parseInt(req.query.limit || '200', 10), 1000); - -// const { rows } = await mainPool.query( -// `SELECT * FROM public.f_comandas_resumen($1, $2)`, -// [estado, limit] -// ); -// res.json(rows); -// } catch (e) { next(e); } -// }); - - -// // Detalle de una comanda (con nombres de productos) -// // GET /api/comandas/:id/detalle -// app.get('/api/comandas/:id/detalle', (req, res, next) => -// mainPool.query( -// `SELECT id_det_comanda, id_producto, producto_nombre, -// cantidad, pre_unitario, subtotal, observaciones -// FROM public.v_comandas_detalle_items -// WHERE id_comanda = $1::int -// ORDER BY id_det_comanda`, -// [req.params.id] -// ) -// .then(r => res.json(r.rows)) -// .catch(next) -// ); - -// // Cerrar comanda (setea estado y fec_cierre en DB) -// app.post('/api/comandas/:id/cerrar', async (req, res, next) => { -// try { -// const id = Number(req.params.id); -// if (!Number.isInteger(id) || id <= 0) { -// return res.status(400).json({ error: 'id inválido' }); -// } -// const { rows } = await mainPool.query( -// `SELECT public.f_cerrar_comanda($1) AS data`, -// [id] -// ); -// if (!rows.length || rows[0].data === null) { -// return res.status(404).json({ error: 'Comanda no encontrada' }); -// } -// res.json(rows[0].data); -// } catch (err) { next(err); } -// }); - -// Abrir (reabrir) comanda -app.post('/api/comandas/:id/abrir', async (req, res, next) => { - try { - const id = Number(req.params.id); - if (!Number.isInteger(id) || id <= 0) { - return res.status(400).json({ error: 'id inválido' }); - } - const { rows } = await mainPool.query( - `SELECT public.f_abrir_comanda($1) AS data`, - [id] - ); - if (!rows.length || rows[0].data === null) { - return res.status(404).json({ error: 'Comanda no encontrada' }); - } - res.json(rows[0].data); - } catch (err) { next(err); } -}); \ No newline at end of file diff --git a/services/app/src/api/rpc.js b/services/app/src/api/rpc.js deleted file mode 100644 index 56766d1..0000000 --- a/services/app/src/api/rpc.js +++ /dev/null @@ -1,230 +0,0 @@ -// // GET producto + receta -// app.get('/api/rpc/get_producto/:id', async (req, res) => { -// const id = Number(req.params.id); -// const { rows } = await mainPool.query('SELECT public.get_producto($1) AS data', [id]); -// res.json(rows[0]?.data || {}); -// }); - -// // POST guardar producto + receta - -// app.post('/api/rpc/save_producto', async (req, res) => { -// try { -// // console.debug('receta payload:', req.body?.receta); // habilitalo si lo necesitás -// const q = 'SELECT public.save_producto($1,$2,$3,$4,$5,$6,$7::jsonb) AS id_producto'; -// const { id_producto = null, nombre, img_producto = null, precio = 0, activo = true, id_categoria = null, receta = [] } = req.body || {}; -// const params = [id_producto, nombre, img_producto, precio, activo, id_categoria, JSON.stringify(receta || [])]; -// const { rows } = await mainPool.query(q, params); -// res.json(rows[0] || {}); -// } catch (e) { -// console.error(e); -// res.status(500).json({ error: 'save_producto failed' }); -// } -// }); - -// // GET MP + proveedores -// app.get('/api/rpc/get_materia/:id', async (req, res) => { -// const id = Number(req.params.id); -// try { -// const { rows } = await mainPool.query('SELECT public.get_materia_prima($1) AS data', [id]); -// res.json(rows[0]?.data || {}); -// } catch (e) { -// console.error(e); -// res.status(500).json({ error: 'get_materia failed' }); -// } -// }); - -// // SAVE MP + proveedores (array) -// app.post('/api/rpc/save_materia', async (req, res) => { -// const { id_mat_prima = null, nombre, unidad, activo = true, proveedores = [] } = req.body || {}; -// try { -// const q = 'SELECT public.save_materia_prima($1,$2,$3,$4,$5::jsonb) AS id_mat_prima'; -// const params = [id_mat_prima, nombre, unidad, activo, JSON.stringify(proveedores || [])]; -// const { rows } = await mainPool.query(q, params); -// res.json(rows[0] || {}); -// } catch (e) { -// console.error(e); -// res.status(500).json({ error: 'save_materia failed' }); -// } -// }); - -// // POST /api/rpc/find_usuarios_por_documentos { docs: ["12345678","09123456", ...] } -// app.post('/api/rpc/find_usuarios_por_documentos', async (req, res) => { -// try { -// const docs = Array.isArray(req.body?.docs) ? req.body.docs : []; -// const sql = 'SELECT public.find_usuarios_por_documentos($1::jsonb) AS data'; -// const { rows } = await mainPool.query(sql, [JSON.stringify(docs)]); -// res.json(rows[0]?.data || {}); -// } catch (e) { -// console.error(e); -// res.status(500).json({ error: 'find_usuarios_por_documentos failed' }); -// } -// }); - -// // POST /api/rpc/import_asistencia { registros: [...], origen?: "AGL_001.txt" } -// app.post('/api/rpc/import_asistencia', async (req, res) => { -// try { -// const registros = Array.isArray(req.body?.registros) ? req.body.registros : []; -// const origen = req.body?.origen || null; -// const sql = 'SELECT public.import_asistencia($1::jsonb,$2) AS data'; -// const { rows } = await mainPool.query(sql, [JSON.stringify(registros), origen]); -// res.json(rows[0]?.data || {}); -// } catch (e) { -// console.error(e); -// res.status(500).json({ error: 'import_asistencia failed' }); -// } -// }); - -// // Consultar datos de asistencia (raw + pares) para un usuario y rango -// app.post('/api/rpc/asistencia_get', async (req, res) => { -// try { -// const { doc, desde, hasta } = req.body || {}; -// const sql = 'SELECT public.asistencia_get($1::text,$2::date,$3::date) AS data'; -// const { rows } = await mainPool.query(sql, [doc, desde, hasta]); -// res.json(rows[0]?.data || {}); -// } catch (e) { -// console.error(e); res.status(500).json({ error: 'asistencia_get failed' }); -// } -// }); - -// // Editar un registro crudo y recalcular pares -// app.post('/api/rpc/asistencia_update_raw', async (req, res) => { -// try { -// const { id_raw, fecha, hora, modo } = req.body || {}; -// const sql = 'SELECT public.asistencia_update_raw($1::bigint,$2::date,$3::text,$4::text) AS data'; -// const { rows } = await mainPool.query(sql, [id_raw, fecha, hora, modo ?? null]); -// res.json(rows[0]?.data || {}); -// } catch (e) { -// console.error(e); res.status(500).json({ error: 'asistencia_update_raw failed' }); -// } -// }); - -// // Eliminar un registro crudo y recalcular pares -// app.post('/api/rpc/asistencia_delete_raw', async (req, res) => { -// try { -// const { id_raw } = req.body || {}; -// const sql = 'SELECT public.asistencia_delete_raw($1::bigint) AS data'; -// const { rows } = await mainPool.query(sql, [id_raw]); -// res.json(rows[0]?.data || {}); -// } catch (e) { -// console.error(e); res.status(500).json({ error: 'asistencia_delete_raw failed' }); -// } -// }); - -// // POST /api/rpc/report_tickets { year } -// app.post('/api/rpc/report_tickets', async (req, res) => { -// try { -// const y = parseInt(req.body?.year ?? req.query?.year, 10); -// const year = (Number.isFinite(y) && y >= 2000 && y <= 2100) -// ? y -// : (new Date()).getFullYear(); - -// const { rows } = await mainPool.query( -// 'SELECT public.report_tickets_year($1::int) AS j', [year] -// ); -// res.json(rows[0].j); -// } catch (e) { -// console.error('report_tickets error:', e); -// res.status(500).json({ -// error: 'report_tickets failed', -// message: e.message, detail: e.detail, where: e.where, code: e.code -// }); -// } -// }); - -// // POST /api/rpc/report_asistencia { desde: 'YYYY-MM-DD', hasta: 'YYYY-MM-DD' } -// app.post('/api/rpc/report_asistencia', async (req, res) => { -// try { -// let { desde, hasta } = req.body || {}; -// // defaults si vienen vacíos/invalidos -// const re = /^\d{4}-\d{2}-\d{2}$/; -// if (!re.test(desde) || !re.test(hasta)) { -// const end = new Date(); -// const start = new Date(end); start.setDate(end.getDate() - 30); -// desde = start.toISOString().slice(0, 10); -// hasta = end.toISOString().slice(0, 10); -// } - -// const { rows } = await mainPool.query( -// 'SELECT public.report_asistencia($1::date,$2::date) AS j', [desde, hasta] -// ); -// res.json(rows[0].j); -// } catch (e) { -// console.error('report_asistencia error:', e); -// res.status(500).json({ -// error: 'report_asistencia failed', -// message: e.message, detail: e.detail, where: e.where, code: e.code -// }); -// } -// }); - -// // Guardar (insert/update) -// app.post('/api/rpc/save_compra', async (req, res) => { -// try { -// const { id_compra, id_proveedor, fec_compra, detalles } = req.body || {}; -// const sql = 'SELECT * FROM public.save_compra($1::int,$2::int,$3::timestamptz,$4::jsonb)'; -// const args = [id_compra ?? null, id_proveedor, fec_compra ? new Date(fec_compra) : null, JSON.stringify(detalles)]; -// const { rows } = await mainPool.query(sql, args); -// res.json(rows[0]); // { id_compra, total } -// } catch (e) { -// console.error('save_compra error:', e); -// res.status(500).json({ error: 'save_compra failed', message: e.message, detail: e.detail, where: e.where, code: e.code }); -// } -// }); - -// // Obtener para editar -// app.post('/api/rpc/get_compra', async (req, res) => { -// try { -// const { id_compra } = req.body || {}; -// const sql = `SELECT public.get_compra($1::int) AS data`; -// const { rows } = await mainPool.query(sql, [id_compra]); -// res.json(rows[0]?.data || {}); -// } catch (e) { -// console.error(e); res.status(500).json({ error: 'get_compra failed' }); -// } -// }); - -// // Eliminar -// app.post('/api/rpc/delete_compra', async (req, res) => { -// try { -// const { id_compra } = req.body || {}; -// await mainPool.query(`SELECT public.delete_compra($1::int)`, [id_compra]); -// res.json({ ok: true }); -// } catch (e) { -// console.error(e); res.status(500).json({ error: 'delete_compra failed' }); -// } -// }); - -// // POST /api/rpc/report_gastos { year: 2025 } -// app.post('/api/rpc/report_gastos', async (req, res) => { -// try { -// const year = parseInt(req.body?.year ?? new Date().getFullYear(), 10); -// const { rows } = await mainPool.query( -// 'SELECT public.report_gastos($1::int) AS j', [year] -// ); -// res.json(rows[0].j); -// } catch (e) { -// console.error('report_gastos error:', e); -// res.status(500).json({ -// error: 'report_gastos failed', -// message: e.message, detail: e.detail, code: e.code -// }); -// } -// }); - -// // (Opcional) GET para probar rápido desde el navegador: -// // /api/rpc/report_gastos?year=2025 -// app.get('/api/rpc/report_gastos', async (req, res) => { -// try { -// const year = parseInt(req.query.year ?? new Date().getFullYear(), 10); -// const { rows } = await mainPool.query( -// 'SELECT public.report_gastos($1::int) AS j', [year] -// ); -// res.json(rows[0].j); -// } catch (e) { -// console.error('report_gastos error:', e); -// res.status(500).json({ -// error: 'report_gastos failed', -// message: e.message, detail: e.detail, code: e.code -// }); -// } -// }); \ No newline at end of file diff --git a/services/app/src/db/poolSingleton.js b/services/app/src/db/poolSingleton.js deleted file mode 100644 index a0935c2..0000000 --- a/services/app/src/db/poolSingleton.js +++ /dev/null @@ -1,83 +0,0 @@ -// Coneción Singleton a base de datos. - -import { Pool } from 'pg'; - -class DatabaseCore { - constructor() { - - if (DatabaseCore.instance) { - return Database.instance; - } - - const config = { - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASS, - database: process.env.DB_NAME, - port: process.env.DB_LOCAL_PORT ? Number(process.env.DB_LOCAL_PORT) : undefined, - ssl: process.env.PGSSL === 'true' ? { rejectUnauthorized: false } : undefined, - }; - - this.connection = new Pool(config); - - DatabaseCore.instance = this; - } - async query(sql, params) { - return this.connection.query(sql,params); - } - - async connect() { /* Definida solo para evitar errores */ - return this.connection.connect(); - } - async getClient() { - return this.connection.connect(); - } - - async release() { - await this.connection.end(); - } -} -class DatabaseTenants { - constructor() { - - if (DatabaseTenants.instance) { - return Database.instance; - } - - const config = { - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASS, - database: process.env.DB_NAME, - port: process.env.DB_LOCAL_PORT ? Number(process.env.DB_LOCAL_PORT) : undefined, - ssl: process.env.PGSSL === 'true' ? { rejectUnauthorized: false } : undefined, - }; - - this.connection = new Pool(config); - - DatabaseTenants.instance = this; - } - async query(sql, params) { - return this.connection.query(sql,params); - } - - async connect() { /* Definida solo para evitar errores */ - return this.connection.connect(); - } - async getClient() { - return this.connection.connect(); - } - - async release() { - await this.connection.end(); - } -} - -// const db = new Database(); -// db.query('SELECT * FROM users'); - -const poolCore = new DatabaseCore(); -const poolTenants = new DatabaseTenants(); -export default {poolCore, poolTenants}; -export { poolCore, poolTenants }; -//export { DatabaseCore, DatabaseTenants }; \ No newline at end of file diff --git a/services/app/src/index.mjs b/services/app/src/index.mjs index 26f334e..b122704 100644 --- a/services/app/src/index.mjs +++ b/services/app/src/index.mjs @@ -5,14 +5,18 @@ import 'dotenv/config'; import favicon from 'serve-favicon'; // Favicon +import session from 'express-session'; import express from 'express'; // Framework para enderizado de apps Web import expressLayouts from 'express-ejs-layouts'; -// import { poolCore, poolTenants } from '@suitecoffee/db'; // dbCore y dbTenants desde módulo -import { poolCore, poolTenants } from '#db'; // dbCore y dbTenants -import v1Router from '#v1Router'; // Rutas API v1 -import expressPages from '#pages'; // Rutas "/", "/dashboard", ... +import { RedisStore } from 'connect-redis'; +import { checkRequiredEnvVars } from '@suitecoffee/scripts'; +import { verificarConexionCore, verificarConexionTenants } from '@suitecoffee/db'; // dbCore y dbTenants desde paquete +import { redisAuthentik, verificarConexionRedisAuthentik} from '@suitecoffee/redis'; +import { requireAuth, datosGlobales, tenantContext, resolveTenantFromCore } from '@suitecoffee/middlewares'; +import { apiv1 } from '@suitecoffee/api'; // Rutas API v1 +import expressPages from './views/routes.js'; // Rutas "/", "/dashboard", ... import path from 'path'; import { fileURLToPath } from 'url'; // Converts a file:// URL string or URL object into a platform-specific file import cookieParser from 'cookie-parser'; @@ -21,417 +25,122 @@ const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); - - - - - - // ----------------------------------------------------------------------------- // Validación de entorno mínimo (ajusta nombres si difieren) // ----------------------------------------------------------------------------- - -// Función para verificar que ciertas variables de entorno estén definida -function checkRequiredEnvVars(...requiredKeys) { - const missingKeys = requiredKeys.filter((key) => !process.env[key]); // Filtramos las que NO existen en process.env - if (missingKeys.length > 0) { // Si falta alguna, mostramos una advertencia - console.warn( - `[APP] No se encontraron las siguientes variables de entorno: \n\n-> ${missingKeys.join('\n-> ')}`+ - `\n` - ); - } -} - checkRequiredEnvVars( 'PORT', 'APP_BASE_URL', - 'CORE_DB_HOST', 'CORE_DB_PORT', 'CORE_DB_NAME', - 'TENANTS_DB_HOST', 'TENANTS_DB_PORT', 'TENANTS_DB_NAME', - - 'OIDC_LOGIN_URL', 'OIDC_REDIRECT_URI', - 'OIDC_CLIEN_ID', 'OIDC_CONFIG_URL', 'OIDC_ISSUER', - 'OIDC_ISSUER_DISCOVERY', 'OIDC_AUTHORIZE_URL', 'OIDC_TOKEN_URL', - 'OIDC_USERINFO_URL', 'OIDC_LOGOUT_URL', 'OIDC_JWKS_URL', - - 'SESSION_SECRET', 'SESSION_COOKIE_NAME', - 'AK_REDIS_URL', 'AK_TOKEN' + 'SESSION_SECRET', 'SESSION_NAME', 'AK_REDIS_URL', + 'OIDC_CLIENT_ID', 'OIDC_REDIRECT_URI', + 'OIDC_CONFIG_URL' // o 'OIDC_ISSUER' ); - - // ---------------------------------------------------------- // Variables del sistema // ---------------------------------------------------------- // De entorno -const PORT = process.env.PORT; -const APP_BASE_URL = process.env.APP_BASE_URL; - -const CORE_DB_HOST = process.env.CORE_DB_HOST; -const CORE_DB_PORT = process.env.CORE_DB_PORT; -const CORE_DB_NAME = process.env.CORE_DB_NAME; - -const TENANTS_DB_HOST = process.env.TENANTS_DB_HOST; -const TENANTS_DB_PORT = process.env.TENANTS_DB_PORT; -const TENANTS_DB_NAME = process.env.TENANTS_DB_NAME; - -const OIDC_LOGIN_URL = process.env.OIDC_LOGIN_URL; -const OIDC_REDIRECT_URI = process.env.OIDC_REDIRECT_URI; - -const OIDC_CLIEN_ID = process.env.OIDC_CLIEN_ID; -const OIDC_CONFIG_URL = process.env.OIDC_CONFIG_URL; -const OIDC_ISSUER = process.env.OIDC_ISSUER; -const OIDC_ISSUER_DISCOVERY = process.env.OIDC_ISSUER_DISCOVERY; -const OIDC_AUTHORIZE_URL = process.env.OIDC_AUTHORIZE_URL; -const OIDC_TOKEN_URL = process.env.OIDC_TOKEN_URL; -const OIDC_USERINFO_URL = process.env.OIDC_USERINFO_URL; -const OIDC_LOGOUT_URL = process.env.OIDC_LOGOUT_URL; -const OIDC_JWKS_URL = process.env.OIDC_JWKS_URL; - -const AK_SESSION_SECRET = process.env.AK_SESSION_SECRET; -const AK_SESSION_COOKIE_NAME = process.env.AK_SESSION_COOKIE_NAME; -const AK_REDIS_URL = process.env.AK_REDIS_URL; - - - -const url = v => !v ? "" : (v.startsWith("http") ? v : `/img/productos/${v}`); -const VALID_IDENT = /^[a-zA-Z_][a-zA-Z0-9_]*$/; -const q = (s) => `"${String(s).replace(/"/g, '""')}"`; // Identificadores SQL -> comillas dobles y escape correcto +const PORT = process.env.PORT; +const SESSION_NAME = process.env.SESSION_NAME; +const SESSION_SECRET = process.env.SESSION_SECRET; +const COOKIE_DOMAIN = process.env.COOKIE_DOMAIN; // ---------------------------------------------------------- // App + Motor de vistas EJS // ---------------------------------------------------------- - const app = express(); -app.set('trust proxy', true); -app.set("views", path.join(__dirname, "views")); -app.set("view engine", "ejs"); -app.set("layout", "layouts/main"); app.disable("x-powered-by"); +app.set('trust proxy', true); +app.set("views", path.join(__dirname, "views/pages")); +app.set("layout", path.join(__dirname, "views/layouts/main")); +// app.set("layout", "layouts/main"); +app.set("view engine", "ejs"); +app.use(favicon(path.join(__dirname, 'public', 'favicon', 'favicon.ico'), { maxAge: '1y' })); app.use(express.json()); app.use(express.json({ limit: '1mb' })); app.use(express.urlencoded({ extended: true })); -// Archivos estáticos que fuerzan la re-descarga de arhivos -app.use(favicon(path.join(__dirname, 'public', 'favicon', 'favicon.ico'), { maxAge: '1y' })); -app.use(express.static(path.join(__dirname, "public"), { - etag: false, maxAge: 0, - setHeaders: (res, path) => { - res.setHeader('Cache-Control', 'no-store, no-cache, must-revalidate, proxy-revalidate'); - } -})); + +app.use(express.static(path.join(__dirname,"public"), { etag: false, maxAge: 0, setHeaders: (res, path) => { res.setHeader('Cache-Control', 'no-store, no-cache, must-revalidate, proxy-revalidate'); }})); app.use(expressLayouts); -app.use(cookieParser(process.env.SESSION_SECRET)); -app.use(expressPages); // Renderizado trae las paginas desde ./services/manso/src/routes/routes.js -// ---------------------------------------------------------- -// Uso de API v1 -// ---------------------------------------------------------- -app.use("/api/v1", v1Router); - -// /api/rpc/get_producto/:id -// /api/v1/rpc/get_producto/:id -> /rpc/get_producto/:id - - -// ---------------------------------------------------------- -// Seguridad: Tablas permitidas -// ---------------------------------------------------------- -const ALLOWED_TABLES = [ - 'roles','usuarios','usua_roles', - 'categorias','productos', - 'clientes','mesas', - 'comandas','deta_comandas', - 'proveedores','compras','deta_comp_producto', - 'mate_primas','deta_comp_materias', - 'prov_producto','prov_mate_prima', - 'receta_producto', 'asistencia_resumen_diario', - 'asistencia_intervalo', 'asistencia_detalle', - 'vw_compras' -]; - -function ensureTable(name) { - const t = String(name || '').toLowerCase(); - if (!ALLOWED_TABLES.includes(t)) throw new Error('Tabla no permitida'); - return t; -} - - - - -// ---------------------------------------------------------- -// Introspección de esquema -// ---------------------------------------------------------- -async function loadColumns(client, table) { - const sql = ` - SELECT - c.column_name, - c.data_type, - c.is_nullable = 'YES' AS is_nullable, - c.column_default, - (SELECT EXISTS ( - SELECT 1 FROM pg_attribute a - JOIN pg_class t ON t.oid = a.attrelid - JOIN pg_index i ON i.indrelid = t.oid AND a.attnum = ANY(i.indkey) - WHERE t.relname = $1 AND i.indisprimary AND a.attname = c.column_name - )) AS is_primary, - (SELECT a.attgenerated = 's' OR a.attidentity IN ('a','d') - FROM pg_attribute a - JOIN pg_class t ON t.oid = a.attrelid - WHERE t.relname = $1 AND a.attname = c.column_name - ) AS is_identity - FROM information_schema.columns c - WHERE c.table_schema='public' AND c.table_name=$1 - ORDER BY c.ordinal_position - `; - const { rows } = await client.query(sql, [table]); - return rows; -} - -async function loadForeignKeys(client, table) { - const sql = ` - SELECT - kcu.column_name, - ccu.table_name AS foreign_table, - ccu.column_name AS foreign_column - FROM information_schema.table_constraints tc - JOIN information_schema.key_column_usage kcu - ON tc.constraint_name = kcu.constraint_name AND tc.table_schema = kcu.table_schema - JOIN information_schema.constraint_column_usage ccu - ON ccu.constraint_name = tc.constraint_name AND ccu.table_schema = tc.table_schema - WHERE tc.table_schema='public' AND tc.table_name=$1 AND tc.constraint_type='FOREIGN KEY' - `; - const { rows } = await client.query(sql, [table]); - const map = {}; - for (const r of rows) map[r.column_name] = { foreign_table: r.foreign_table, foreign_column: r.foreign_column }; - return map; -} - -async function loadPrimaryKey(client, table) { - const sql = ` - SELECT a.attname AS column_name - FROM pg_index i - JOIN pg_attribute a ON a.attrelid = i.indrelid AND a.attnum = ANY(i.indkey) - JOIN pg_class t ON t.oid = i.indrelid - WHERE t.relname = $1 AND i.indisprimary - `; - const { rows } = await client.query(sql, [table]); - return rows.map(r => r.column_name); -} - -// label column for FK options -async function pickLabelColumn(client, refTable) { - const preferred = ['nombre','raz_social','apodo','documento','correo','telefono']; - const { rows } = await client.query( - `SELECT column_name, data_type - FROM information_schema.columns - WHERE table_schema='public' AND table_name=$1 - ORDER BY ordinal_position`, [refTable] - ); - for (const cand of preferred) { - if (rows.find(r => r.column_name === cand)) return cand; - } - const textish = rows.find(r => /text|character varying|varchar/i.test(r.data_type)); - if (textish) return textish.column_name; - return rows[0]?.column_name || 'id'; -} - -// ---------------------------------------------------------- -// Middleware para datos globales -// ---------------------------------------------------------- -app.use((req, res, next) => { - res.locals.currentPath = req.path; - res.locals.pageTitle = "SuiteCoffee"; - res.locals.pageId = ""; - next(); -}); - - - - -// ---------------------------------------------------------- -// API -// ---------------------------------------------------------- -app.get('/api/tables', async (_req, res) => { - res.json(ALLOWED_TABLES); -}); - -app.get('/api/schema/:table', async (req, res) => { - try { - const table = ensureTable(req.params.table); - const client = await pool.getClient(); - try { - const columns = await loadColumns(client, table); - const fks = await loadForeignKeys(client, table); - const enriched = columns.map(c => ({ ...c, foreign: fks[c.column_name] || null })); - res.json({ table, columns: enriched }); - } finally { client.release(); } - } catch (e) { - res.status(400).json({ error: e.message }); - } -}); - -app.get('/api/options/:table/:column', async (req, res) => { - try { - const table = ensureTable(req.params.table); - const column = req.params.column; - if (!VALID_IDENT.test(column)) throw new Error('Columna inválida'); - - const client = await pool.getClient(); - try { - const fks = await loadForeignKeys(client, table); - const fk = fks[column]; - if (!fk) return res.json([]); - - const refTable = fk.foreign_table; - const refId = fk.foreign_column; - const labelCol = await pickLabelColumn(client, refTable); - - const sql = `SELECT ${q(refId)} AS id, ${q(labelCol)} AS label FROM ${q(refTable)} ORDER BY ${q(labelCol)} LIMIT 1000`; - const result = await client.query(sql); - res.json(result.rows); - } finally { client.release(); } - } catch (e) { - res.status(400).json({ error: e.message }); - } -}); - -app.get('/api/table/:table', async (req, res) => { - try { - const table = ensureTable(req.params.table); - const limit = Math.min(parseInt(req.query.limit || '100', 10), 1000); - const client = await pool.getClient(); - try { - const pks = await loadPrimaryKey(client, table); - const orderBy = pks.length ? `ORDER BY ${pks.map(q).join(', ')} DESC` : ''; - const sql = `SELECT * FROM ${q(table)} ${orderBy} LIMIT ${limit}`; - const result = await client.query(sql); - - // Normalizar: siempre devolver objetos {col: valor} - const colNames = result.fields.map(f => f.name); - let rows = result.rows; - if (rows.length && Array.isArray(rows[0])) { - rows = rows.map(r => Object.fromEntries(r.map((v, i) => [colNames[i], v]))); - } - res.json(rows); - } finally { client.release(); } - } catch (e) { - res.status(400).json({ error: e.message, code: e.code, detail: e.detail }); - } -}); - -app.post('/api/table/:table', async (req, res) => { - const table = ensureTable(req.params.table); - const payload = req.body || {}; - try { - const client = await pool.getClient(); - try { - const columns = await loadColumns(client, table); - const insertable = columns.filter(c => - !c.is_primary && !c.is_identity && !(c.column_default || '').startsWith('nextval(') - ); - const allowedCols = new Set(insertable.map(c => c.column_name)); - - const cols = []; - const vals = []; - const params = []; - let idx = 1; - for (const [k, v] of Object.entries(payload)) { - if (!allowedCols.has(k)) continue; - if (!VALID_IDENT.test(k)) continue; - cols.push(q(k)); - vals.push(`$${idx++}`); - params.push(v); - } - - if (!cols.length) { - const { rows } = await client.query(`INSERT INTO ${q(table)} DEFAULT VALUES RETURNING *`); - res.status(201).json({ inserted: rows[0] }); - } else { - const { rows } = await client.query( - `INSERT INTO ${q(table)} (${cols.join(', ')}) VALUES (${vals.join(', ')}) RETURNING *`, - params - ); - res.status(201).json({ inserted: rows[0] }); - } - } catch (e) { - if (e.code === '23503') return res.status(400).json({ error: 'Violación de clave foránea', detail: e.detail }); - if (e.code === '23505') return res.status(400).json({ error: 'Violación de unicidad', detail: e.detail }); - if (e.code === '23514') return res.status(400).json({ error: 'Violación de CHECK', detail: e.detail }); - if (e.code === '23502') return res.status(400).json({ error: 'Campo NOT NULL faltante', detail: e.detail }); - throw e; - } finally { client.release(); } - } catch (e) { - res.status(400).json({ error: e.message }); - } -}); - - - - - - - - - -// ---------------------------------------------------------- -// Verificación de conexión -// ---------------------------------------------------------- - -async function verificarConexionCore() { - try { - console.log(`[APP] Comprobando accesibilidad a la db ${CORE_DB_NAME} del host ${CORE_DB_HOST} ...`); - const client = await poolCore.connect(); - const { rows } = await client.query('SELECT NOW() AS ahora'); - console.log(`\n[APP] Conexión con ${CORE_DB_NAME} OK. Hora DB:`, rows[0].ahora); - client.release(); - } catch (error) { - console.error('[APP] Error al conectar con la base de datos al iniciar:', error.message); - console.error('[APP] Revisar credenciales, accesos de red y firewall.'); - } -} -async function verificarConexionTenants() { - try { - console.log(`[APP] Comprobando accesibilidad a la db ${TENANTS_DB_NAME} del host ${TENANTS_DB_HOST} ...`); - const client = await poolTenants.connect(); - const { rows } = await client.query('SELECT NOW() AS ahora'); - console.log(`\n[APP] Conexión con ${TENANTS_DB_NAME} OK. Hora DB:`, rows[0].ahora); - client.release(); - } catch (error) { - console.error('[APP] Error al conectar con la base de datos al iniciar:', error.message); - console.error('[APP] Revisar credenciales, accesos de red y firewall.'); - } -} // ----------------------------------------------------------------------------- -// 404 + Manejo de errores +// Redis // ----------------------------------------------------------------------------- +await redisAuthentik.connect(); +const redisClient = redisAuthentik.getClient(); -/*app.use((req, res) => res.status(404).json({ error: 'Error 404, No se encontró la página', path: req.originalUrl })); -app.use((err, _req, res, _next) => { - console.error('[APP] ', err); - if (res.headersSent) return; - res.status(500).json({ error: '¡Oh! A ocurrido un error en el servidor app.', detail: err.stack || String(err) }); -});*/ + +// ----------------------------------------------------------------------------- +// Cookies de sesión +// ----------------------------------------------------------------------------- +app.use(cookieParser(SESSION_SECRET)); + +app.use(session({ + name: SESSION_NAME, + store: new RedisStore({ client: redisClient, prefix: 'sess:' }), + secret: SESSION_SECRET, + resave: false, + saveUninitialized: false, + cookie: { + httpOnly: true, + sameSite: 'lax', // 'none' si necesitás third-party estricto + secure: process.env.NODE_ENV === 'production', + ...(COOKIE_DOMAIN ? { domain: COOKIE_DOMAIN } : {}), // ✅ compatibilidad subdominios + }, +})); + + + +// ---------------------------------------------------------- +// Renderizado de las páginas importadas desde '#pages' + configuración global +// ---------------------------------------------------------- +// app.use(expressPages); // Renderizado trae las paginas desde ./services/manso/src/routes/routes.js +// app.use(requireAuth({ redirectTo: '/auth/login' }), expressPages); // Renderizado trae las paginas desde ./services/manso/src/routes/routes.js +// app.use(requireAuth({ redirectTo: '/auth/login' }), tenantContext({ debug: true }), expressPages); // Renderizado trae las paginas desde ./services/manso/src/routes/routes.js + +app.use( + requireAuth({ redirectTo: '/auth/login' }), + tenantContext({ + debug: true, + resolveTenant: (req, sess) => resolveTenantFromCore(req, sess, { debug: true }), + // acceptStates: ['ready'] // (default) o ['ready','provisioning'] si querés permitir provisión + }), + expressPages +); + +app.use(datosGlobales); + + + + +// ---------------------------------------------------------- +// API v1 +// ---------------------------------------------------------- +app.use("/api/v1", requireAuth({ redirectTo: '/auth/login' }), tenantContext(), apiv1); // ---------------------------------------------------------- // Inicio del servidor // ---------------------------------------------------------- -app.listen(PORT, () => { +app.listen(PORT, async () => { console.log(`[APP] SuiteCoffee corriendo en http://localhost:${PORT}`); - verificarConexionCore(); - verificarConexionTenants(); + await verificarConexionCore(); + await verificarConexionTenants(); + await verificarConexionRedisAuthentik(); }); // ----------------------------------------------------------------------------- // Healthcheck // ----------------------------------------------------------------------------- app.get('/health', (_req, res) => { - res.status(200).json({ status: 'ok'}), - console.log(`[APP] Saludable`) + res.status(200).json({ status: 'ok'}) + // console.log(`[APP] Saludable`) }); \ No newline at end of file diff --git a/services/app/src/middlewares/tenant.js b/services/app/src/middlewares/tenant.js deleted file mode 100644 index 78937bb..0000000 --- a/services/app/src/middlewares/tenant.js +++ /dev/null @@ -1,37 +0,0 @@ -// ----------------------------------------------------------------------------- -// Middlewares de Auth/Tenant -// ----------------------------------------------------------------------------- - -export function requireAuth(req, res, next) { - const authHeader = req.headers["authorization"]; - if (!authHeader) return res.status(401).send("Falta token"); - - const token = authHeader.split(" ")[1]; - - jwt.verify(token, getKey, { algorithms: ["RS256"] }, (err, decoded) => { - if (err) return res.status(403).send("Token inválido o vencido"); - - // Guardamos los claims del token en req.user - req.user = { - id: decoded.sub, - email: decoded.email, - username: decoded.preferred_username, - name: decoded.name, - roles: decoded.groups || [] - }; - - next(); - }); -} - -// export function exposeViewState(req, res, next) { -// res.locals.pageTitle = res.locals.pageTitle || ''; -// res.locals.pageId = res.locals.pageId || ''; -// res.locals.tenant_uuid = req.session?.tenant?.uuid || null; -// res.locals.ak_user_uuid = req.session?.tenant?.ak_user_uuid || null; -// // también pásalos como props al render -// res.locals.viewUser = req.session?.user || null; -// res.locals.viewCookies = req.cookies || {}; -// res.locals.viewSession = req.session ? JSON.parse(JSON.stringify(req.session)) : {}; -// next(); -// } \ No newline at end of file diff --git a/services/app/src/pages/pages.js b/services/app/src/pages/pages.js deleted file mode 100644 index 68d657a..0000000 --- a/services/app/src/pages/pages.js +++ /dev/null @@ -1,67 +0,0 @@ -// services/manso/src/api/v1/routes/routes.js - -import { Router } from 'express'; - -const router = Router(); - -// ---------------------------------------------------------- -// Rutas de UI -// ---------------------------------------------------------- - -router.get('/', (req, res) => { - res.locals.pageTitle = "Inicio"; // Título de pestaña - res.locals.pageId = "home"; // Sidebar contextual - res.render("dashboard"); // Archivo .ejs a renderizar - // res.json({ ok: true, route: '/inicio' }); // Debug json -}); - -router.get('/dashboard', (req, res) => { - res.locals.pageTitle = "Dashboard"; - res.locals.pageId = "dashboard"; - res.render("dashboard"); - // res.json({ ok: true, route: '/dashboard' }); -}); - -router.get('/comandas', (req, res) => { - res.locals.pageTitle = "Comandas"; - res.locals.pageId = "comandas"; - res.render("comandas"); - // res.json({ ok: true, route: '/comandas' }); -}); - -router.get('/estadoComandas', (req, res) => { - res.locals.pageTitle = "Estado"; - res.locals.pageId = "estadoComandas"; - res.render("estadoComandas"); - // res.json({ ok: true, route: '/estadoComandas' }); -}); - -router.get('/productos', (req, res) => { - res.locals.pageTitle = "Propductos"; - res.locals.pageId = "productos"; - res.render("productos"); - // res.json({ ok: true, route: '/productos' }); -}); - -router.get('/usuarios', (req, res) => { - res.locals.pageTitle = "Usuarios"; - res.locals.pageId = "usuarios"; - res.render("usuarios"); - // res.json({ ok: true, route: '/usuarios' }); -}); - -router.get('/reportes', (req, res) => { - res.locals.pageTitle = "Reportes"; - res.locals.pageId = "reportes"; - res.render("reportes"); - // res.json({ ok: true, route: '/reportes' }); -}); - -router.get('/compras', (req, res) => { - res.locals.pageTitle = "Compras"; - res.locals.pageId = "compras"; - res.render("compras"); - // res.json({ ok: true, route: '/compras' }); -}); - -export default router; \ No newline at end of file diff --git a/services/app/src/public/scripts/comandas/comandas.mjs b/services/app/src/public/scripts/comandas/comandas.mjs new file mode 100644 index 0000000..cc75ff1 --- /dev/null +++ b/services/app/src/public/scripts/comandas/comandas.mjs @@ -0,0 +1,341 @@ +// services/app/src/public/scripts/comandas/index.mjs +// ------------------------------------------------------------ +// SuiteCoffee — Comandas (frontend script) +// - Resuelve el schema activo desde la sesión (/auth/debug/session) +// - Setea header X-Tenant-Schema en todos los fetch +// - Asegura envío de cookies (credentials:'same-origin') +// - Carga y cachea el catálogo de productos (descubrimiento de endpoint) +// - Expone helpers globales (jget/jpost/jput/jdel, getActiveSchema, productos) +// ------------------------------------------------------------ + +'use strict'; + +/* ======================= + * Utils + * ======================= */ +const noDash = (v) => (v == null ? '' : String(v).replace(/-/g, '')); +const isJson = (res) => (res.headers.get('content-type') || '').includes('application/json'); +const sleep = (ms) => new Promise((r) => setTimeout(r, ms)); +const byId = (id) => document.getElementById(id); + +/* ======================= + * Tenant schema cache + * ======================= */ +let SC_ACTIVE_SCHEMA = null; + +/** + * Lee la sesión desde /auth/debug/session y determina el esquema activo. + * Prioriza: + * 1) user.active_schema / user.activeSchema + * 2) membership de user.current_tenant / user.currentTenant + * 3) primer membership disponible + * Lanza Error si no puede determinarlo. + */ +async function getActiveSchema() { + if (SC_ACTIVE_SCHEMA) return SC_ACTIVE_SCHEMA; + + let ses = null; + try { + const res = await fetch('/auth/debug/session', { credentials: 'same-origin' }); + ses = res.ok ? await res.json() : null; + } catch (_) { /* ignore */ } + + const u = ses?.user ?? null; + const memberships = Array.isArray(u?.memberships) ? u.memberships : []; + + // 1) Esquema activo directo + let schema = + u?.active_schema || + u?.activeSchema || + // 2) Membership del current tenant + memberships.find( + (m) => + String(m.tenant_id) === String(u?.current_tenant) || + String(m.tenantId) === String(u?.currentTenant) + )?.schema_name || + // 3) Primer membership + memberships[0]?.schema_name || + null; + + if (!schema) throw new Error('Sesión inválida o tenant no seleccionado'); + + SC_ACTIVE_SCHEMA = schema; + return SC_ACTIVE_SCHEMA; +} + +/* ======================= + * Fetch helpers (con schema) + * ======================= */ +async function buildHeaders(extra = {}) { + const schema = await getActiveSchema(); + return { Accept: 'application/json', 'X-Tenant-Schema': schema, ...extra }; +} + +async function jfetch(url, opts = {}) { + const headers = await buildHeaders(opts.headers || {}); + const res = await fetch(url, { + ...opts, + headers, + credentials: 'same-origin', // imprescindible para que viajen las cookies + }); + + let payload = null; + try { + payload = isJson(res) ? await res.json() : await res.text(); + } catch (_) { /* ignore parse errors */ } + + if (!res.ok) { + const msg = (payload && payload.error) || `${res.status} ${res.statusText}`; + throw new Error(msg); + } + return payload; +} + +async function jget(url) { return jfetch(url, { method: 'GET' }); } +async function jpost(url, body) { + return jfetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body ?? {}) }); +} +async function jput(url, body) { + return jfetch(url, { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body ?? {}) }); +} +async function jdel(url, body) { + return jfetch(url, { method: 'DELETE', headers: { 'Content-Type': 'application/json' }, body: body ? JSON.stringify(body) : undefined }); +} + +/* ======================= + * Productos (catálogo) + * - Descubre endpoint + * - Cachea y normaliza + * ======================= */ +const productos = (() => { + // Posibles endpoints (se prueban en orden) + const CANDIDATES = [ + '/api/v1/productos?limit=1000', + '/api/v1/productos', + '/api/v1/catalogo?limit=1000', + '/api/v1/catalogo', + '/api/v1/items?limit=1000', + '/api/v1/items', + ]; + + // Estado en memoria + let discoveredEndpoint = null; + let cache = /** @type {Array| null} */(null); + let lastLoadedAt = null; + + // Normalización a { id, nombre, precio, categoria?, activo? } + function normalizeOne(p) { + const id = + p.id ?? p.id_producto ?? p.producto_id ?? p.productId ?? p.pk ?? null; + + const nombre = + p.nombre ?? p.producto_nombre ?? p.name ?? p.titulo ?? p.title ?? ''; + + const precio = + p.precio ?? p.price ?? p.pre_unitario ?? p.pu ?? p.monto ?? 0; + + const categoria = + p.categoria ?? p.category ?? p.nombre_categoria ?? null; + + const activo = + p.activo ?? p.enabled ?? p.habilitado ?? true; + + return { id, nombre, precio, categoria, activo, raw: p }; + } + + function normalizePayload(data) { + if (Array.isArray(data)) return data.map(normalizeOne); + // objetos comunes: { items: [...] } | { rows: [...] } | { data: [...] } + const arr = data?.items || data?.rows || data?.data || data?.productos || null; + return Array.isArray(arr) ? arr.map(normalizeOne) : []; + } + + async function discoverEndpoint() { + // si ya lo descubrimos, reusar + if (discoveredEndpoint) return discoveredEndpoint; + + for (const url of CANDIDATES) { + try { + const data = await jget(url); + const list = normalizePayload(data); + if (list.length >= 0) { // aceptar 0+ items (catálogo vacío) + discoveredEndpoint = url; + cache = list; + lastLoadedAt = new Date(); + return discoveredEndpoint; + } + } catch (_) { + // probar el siguiente + } + } + throw new Error('No se pudo descubrir el endpoint de productos'); + } + + async function ensureLoaded({ force = false } = {}) { + await discoverEndpoint(); + if (!force && cache && Array.isArray(cache)) return cache; + + // recargar desde endpoint descubierto + const base = discoveredEndpoint.split('?')[0]; + const url = base.includes('?') ? base : `${base}?limit=1000`; + const data = await jget(url); + cache = normalizePayload(data); + lastLoadedAt = new Date(); + return cache; + } + + function all() { + return Array.isArray(cache) ? cache.slice() : []; + } + + function search(q) { + const term = String(q || '').trim().toLowerCase(); + if (!term) return all(); + return all().filter(p => + String(p.nombre || '').toLowerCase().includes(term) || + String(p.categoria || '').toLowerCase().includes(term) + ); + } + + function getById(id) { + return all().find(p => String(p.id) === String(id)) || null; + } + + // Renderización opcional si existe algún selector en la página + function renderSelect({ selectorList = ['#productos', '#selProducto', 'select[name="producto"]'] } = {}) { + const el = selectorList.map((s) => document.querySelector(s)).find(Boolean); + if (!el) return; // nada que renderizar + + const list = all(); + if (el.tagName === 'SELECT') { + el.innerHTML = ''; // limpiar + const opt0 = document.createElement('option'); + opt0.value = ''; opt0.textContent = '— Seleccionar producto —'; + el.appendChild(opt0); + + for (const p of list) { + const opt = document.createElement('option'); + opt.value = p.id; + opt.textContent = `${p.nombre} — ${formatPrecio(p.precio)}`; + el.appendChild(opt); + } + } else { + // contenedor genérico (lista) + el.innerHTML = ''; + const ul = document.createElement('ul'); + ul.className = 'lista-productos'; + for (const p of list) { + const li = document.createElement('li'); + li.textContent = `${p.nombre} — ${formatPrecio(p.precio)}`; + li.dataset.productId = p.id; + ul.appendChild(li); + } + el.appendChild(ul); + } + } + + function bindSearch({ inputSelectors = ['#buscarProducto', 'input[name="buscar_producto"]'], selectorList } = {}) { + const input = inputSelectors.map((s) => document.querySelector(s)).find(Boolean); + if (!input) return; + + input.addEventListener('input', () => { + const q = input.value; + const list = search(q); + // re-render mínimo para SELECTs + const el = selectorList?.map((s) => document.querySelector(s)).find(Boolean) + || document.querySelector('#selProducto') + || document.querySelector('#productos'); + if (!el) return; + + if (el.tagName === 'SELECT') { + el.innerHTML = ''; + const opt0 = document.createElement('option'); + opt0.value = ''; opt0.textContent = '— Seleccionar producto —'; + el.appendChild(opt0); + + for (const p of list) { + const opt = document.createElement('option'); + opt.value = p.id; + opt.textContent = `${p.nombre} — ${formatPrecio(p.precio)}`; + el.appendChild(opt); + } + } else { + el.innerHTML = ''; + const ul = document.createElement('ul'); + ul.className = 'lista-productos'; + for (const p of list) { + const li = document.createElement('li'); + li.textContent = `${p.nombre} — ${formatPrecio(p.precio)}`; + li.dataset.productId = p.id; + ul.appendChild(li); + } + el.appendChild(ul); + } + }); + } + + function formatPrecio(v) { + const n = Number(v || 0); + try { return n.toLocaleString(undefined, { style: 'currency', currency: 'UYU' }); } + catch { return `${n.toFixed(2)} UYU`; } + } + + return { + ensureLoaded, + all, + search, + getById, + renderSelect, + bindSearch, + get endpoint() { return discoveredEndpoint; }, + get lastLoadedAt() { return lastLoadedAt; }, + }; +})(); + +/* ======================= + * Init de página + * ======================= */ +async function initPage() { + // 1) Fijar esquema activo (lanza si no hay sesión/tenant) + await getActiveSchema(); + + // 2) Cargar catálogo de productos (descubrimiento + caché) + await productos.ensureLoaded().catch((e) => { + console.error('[productos.ensureLoaded] fallo:', e); + // No cortamos la init de la página; pero mostramos feedback + alert(e?.message || 'No fue posible cargar el catálogo de productos'); + }); + + // 3) Render opcional si existen selectores conocidos + productos.renderSelect({ selectorList: ['#selProducto', '#productos', 'select[name="producto"]'] }); + productos.bindSearch({ inputSelectors: ['#buscarProducto', 'input[name="buscar_producto"]'], selectorList: ['#selProducto', '#productos'] }); + + // 4) Hooks opcionales del código original (si existen) + if (window.nueva?.init) await window.nueva.init(); + if (window.estado?.bind) window.estado.bind(); + if (window.estado?.loadLista) await window.estado.loadLista(); +} + +/* ======================= + * Arranque + * ======================= */ +document.addEventListener('DOMContentLoaded', async () => { + try { + await initPage(); + } catch (err) { + console.error('Error:', err); + alert(err?.message || 'Error inicializando Comandas'); + } +}); + +/* ======================= + * Export helpers globales + * ======================= */ +Object.assign(window, { + jget, + jpost, + jput, + jdel, + getActiveSchema, + productos, +}); diff --git a/services/app/src/public/scripts/productos/productos.mjs b/services/app/src/public/scripts/productos/productos.mjs new file mode 100644 index 0000000..e69de29 diff --git a/services/app/src/views/comandas.ejs b/services/app/src/views/comandas.ejs deleted file mode 100644 index ae564e9..0000000 --- a/services/app/src/views/comandas.ejs +++ /dev/null @@ -1,558 +0,0 @@ - -
-

📋 Nueva Comanda

- /api/* -
- -
- -
-
-
- Productos -
0 ítems
-
-
-
-
- -
-
- -
-
- -
- -
Cargando…
-
-
-
-
- - -
-
-
Detalles
-
-
-
- - -
-
- - -
-
- -
- - -
- -
- La fecha se completa automáticamente y los estados/activos usan sus valores por defecto. -
-
-
- -
-
Carrito
-
-
Aún no agregaste productos.
-
-
-
Ítems: 0
-
Total: $ 0.00
-
- - -
-
- -
-
-
- - - diff --git a/services/app/src/views/estadoComandas.ejs b/services/app/src/views/estadoComandas.ejs deleted file mode 100644 index 2d3615b..0000000 --- a/services/app/src/views/estadoComandas.ejs +++ /dev/null @@ -1,532 +0,0 @@ - -
-

🧾 Estado de Comandas

- ➕ Nueva comanda -
- -
- -
-
-
- Listado -
- - -
-
-
-
-
- -
-
- -
-
- -
-
Cargando…
-
-
-
-
- - -
-
-
- Detalle - -
- -
-
Selecciona una comanda para ver el detalle.
-
- -
-
ID:
-
Mesa:
-
Total: $ 0.00
-
- - -
- -
-
-
-
-
-
- - - - - diff --git a/services/app/src/views/inicio.ejs b/services/app/src/views/inicio.ejs deleted file mode 100644 index 6901b5f..0000000 --- a/services/app/src/views/inicio.ejs +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - Inicio • SuiteCoffee - - - -
-
- <% - // Espera que el backend pase: { user, cookies, session } - const hasUser = typeof user !== 'undefined' && user; - const hasCookies = typeof cookies !== 'undefined' && cookies && Object.keys(cookies).length; - const hasSession = typeof session !== 'undefined' && session && Object.keys(session).length; - - const displayName = - (hasUser && (user.name || user.displayName || user.email)) || - (hasCookies && (cookies.user_name || cookies.displayName || cookies.email)) || - (hasSession && (session.user?.email || session.user?.name)) || - 'usuario'; - %> - -

Hola, <%= displayName %> 👋

-

Bienvenido a SuiteCoffee. Este es tu inicio y panel de diagnóstico de cookies/sesión.

- - <% if (hasUser) { %> -

Sesión de Aplicación (user)

- - - <% for (const [k,v] of Object.entries(user)) { %> - - - - - <% } %> - -
<%= k %><%= typeof v === 'object' ? JSON.stringify(v) : String(v) %>
- <% } %> - - <% if (hasSession) { %> -

Sesión Express (req.session)

- - - <% for (const [k,v] of Object.entries(session)) { %> - - - - - <% } %> - -
<%= k %><%= typeof v === 'object' ? JSON.stringify(v) : String(v) %>
- <% } %> - -
-
-

Cookies (servidor: req.cookies)

- <% if (hasCookies) { %> - - - - - - <% for (const [name, value] of Object.entries(cookies)) { %> - - - - - <% } %> - -
NombreValor
<%= name %><%= typeof value === 'object' ? JSON.stringify(value) : String(value) %>
- <% } else { %> -

- No se recibieron cookies del lado servidor (req.cookies). - Asegurate de usar cookie-parser y de pasar cookies al render: -
res.render('inicio_v2', { user: req.session.user, cookies: req.cookies, session: req.session }) -

- <% } %> -
- -
-

Cookies (navegador: document.cookie)

- - - - - - - -
NombreValor
Cargando…
-

- Total cookies en navegador: 0 -

-

Raw document.cookie:

- -
-
-
-
- - - - diff --git a/services/app/src/views/inicio.ejs.bak b/services/app/src/views/inicio.ejs.bak deleted file mode 100644 index 392e712..0000000 --- a/services/app/src/views/inicio.ejs.bak +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - Inicio • SuiteCoffee - - - -
-
- <% - const hasUser = typeof user !== 'undefined' && user; - const hasCookies = typeof cookies !== 'undefined' && cookies && Object.keys(cookies).length; - const displayName = - (hasUser && (user.name || user.displayName || user.email)) || - (hasCookies && (cookies.user_name || cookies.displayName || cookies.email)) || - 'usuario'; - %> -

Hola, <%= displayName %> 👋

-

Bienvenido a SuiteCoffee. Este es tu inicio.

- - <% if (hasUser) { %> -

Sesión

- - - <% for (const [k,v] of Object.entries(user)) { %> - - - - - <% } %> - -
<%= k %><%= typeof v === 'object' ? JSON.stringify(v) : String(v) %>
- <% } %> - -
-
-

Cookies (servidor)

- <% if (hasCookies) { %> - - - - - - <% for (const [name, value] of Object.entries(cookies)) { %> - - - - - <% } %> - -
NombreValor
<%= name %><%= typeof value === 'object' ? JSON.stringify(value) : String(value) %>
- <% } else { %> -

No se recibieron cookies desde el servidor (req.cookies). ¿Estás usando cookie-parser o pasando cookies al render?

- <% } %> -
- -
-

Cookies (navegador)

- - - - - - - -
NombreValor
Cargando…
-

Raw document.cookie:

- -
-
-
-
- - - - diff --git a/services/app/src/views/pages/comandas.ejs b/services/app/src/views/pages/comandas.ejs new file mode 100644 index 0000000..e69de29 diff --git a/services/app/src/views/compras.ejs b/services/app/src/views/pages/compras.ejs similarity index 100% rename from services/app/src/views/compras.ejs rename to services/app/src/views/pages/compras.ejs diff --git a/services/app/src/views/dashboard.ejs b/services/app/src/views/pages/dashboard.ejs similarity index 100% rename from services/app/src/views/dashboard.ejs rename to services/app/src/views/pages/dashboard.ejs diff --git a/services/app/src/views/pages/inicio.ejs b/services/app/src/views/pages/inicio.ejs new file mode 100644 index 0000000..4d44ba4 --- /dev/null +++ b/services/app/src/views/pages/inicio.ejs @@ -0,0 +1,366 @@ + + + + + + + + Inicio • SuiteCoffee + + +<% + // ============ SERVIDOR ============ // + // Espera: { user, cookies, session } (pásalos en res.render) + + const hasUser = typeof user !== 'undefined' && user; + const hasCookies = typeof cookies !== 'undefined' && cookies && Object.keys(cookies).length; + const hasSession = typeof session !== 'undefined' && session && Object.keys(session).length; + + const cookieKeys = hasCookies ? Object.keys(cookies) : []; + const sidKey = cookieKeys.find(k => /^(sc\.sid|connect\.sid|.*sid|.*sessionid)$/i.test(k)) || null; + const sidVal = sidKey ? String(cookies[sidKey] ?? '') : null; + const sidValMasked = sidVal ? (sidVal.length > 20 ? (sidVal.slice(0, 12) + '…' + sidVal.slice(-6)) : sidVal) : '(sin valor)'; + const sessionId = (hasSession && session.id) || (typeof sidVal === 'string' ? '(derivado de cookie)' : '(no disponible)'); + + const displayName = + (hasUser && (user.name || user.displayName || user.email)) || + (hasCookies && (cookies.user_name || cookies.displayName || cookies.email)) || + (hasSession && (session.user?.email || session.user?.name)) || + 'usuario'; + + // ---- Detección de cookie de configuración (servidor) + const tenantId32 = hasUser && user.default_tenant ? String(user.default_tenant).toLowerCase() : null; + const cfgRe = /^(?:sc\.)?(config|prefs|ui)(?:\.([0-9a-f]{32}))?$/i; + + function pickConfigCookieName(keys, tenant) { + const matches = keys + .map(k => [k, k.match(cfgRe)]) + .filter(([, m]) => !!m); + if (!matches.length) return null; + if (tenant) { + const exact = matches.find(([, m]) => (m[2] || '').toLowerCase() === tenant); + if (exact) return exact[0]; + } + return matches[0][0]; + } + + const configCookieKey = hasCookies ? pickConfigCookieName(cookieKeys, tenantId32) : null; + const rawConfigCookie = configCookieKey ? cookies[configCookieKey] : null; + + function tryParseConfig(val) { + if (!val) return null; + const candidates = []; + try { candidates.push(String(val)); } catch {} + try { candidates.push(decodeURIComponent(String(val))); } catch {} + try { candidates.push(Buffer.from(String(val), 'base64').toString('utf8')); } catch {} + + for (const c of candidates) { + try { + const obj = JSON.parse(c); + if (obj && typeof obj === 'object') return obj; + } catch (_) {} + } + return null; + } + + const configFromCookie = tryParseConfig(rawConfigCookie); + + // Tema inicial (si la cookie define theme: 'light' | 'dark') + const initialTheme = (configFromCookie && typeof configFromCookie.theme === 'string') + ? (configFromCookie.theme.toLowerCase() === 'light' ? 'light' : 'dark') + : 'dark'; + + // ====== Normalización de "user" para evitar duplicados ====== + const preferredOrder = ['sub','email','user_id','name','default_tenant','memberships']; + const normalizedUser = {}; + if (hasUser) { + // Tomamos valores canónicos + normalizedUser.sub = user.sub ?? null; + normalizedUser.email = user.email ?? null; + normalizedUser.user_id = user.user_id ?? user.userId ?? null; + normalizedUser.name = user.name ?? user.displayName ?? null; + + // Unificar current_tenant/currentTenant -> default_tenant si éste no viene + const fallbackTenant = user.current_tenant ?? user.currentTenant ?? null; + normalizedUser.default_tenant = user.default_tenant ?? fallbackTenant ?? null; + + if (Array.isArray(user.memberships)) normalizedUser.memberships = user.memberships; + + // Extras: todo lo demás excepto duplicados y legacy + const skip = new Set([ + ...preferredOrder, + 'current_tenant','currentTenant', + 'user_uid_nodash','userUidNoDash' + ]); + const extras = Object.entries(user) + .filter(([k]) => !skip.has(k) && !/nodash/i.test(k)); + // Los adjuntamos en un objeto aparte para mostrarlos (si existieran) + normalizedUser.__extras = Object.fromEntries(extras); + } +%> + +
+
+

Hola, <%= displayName %> 👋

+

Bienvenido a SuiteCoffee. Este inicio lee la cookie de configuraciones actuales (servidor y navegador) y aplica el tema.

+ + +

Diagnóstico de Sesión

+ + + + + + + + + + + +
req.sessionID<%= typeof req !== 'undefined' && req.sessionID ? req.sessionID : sessionId %>
Cookie de sesión + <% if (sidKey) { %> + <%= sidKey %> +
valor: <%= sidValMasked %>
+ <% } else { %> + No detectada en req.cookies (ej. sc.sid). + <% } %> +
+ + <% if (hasUser) { %> +

Sesión de Aplicación (user)

+ + + <% for (const key of preferredOrder) { + const v = normalizedUser[key]; + if (typeof v === 'undefined' || v === null) continue; + %> + + + + + <% } %> + +
<%= key %><%= typeof v === 'object' ? JSON.stringify(v) : String(v) %>
+ + <% if (normalizedUser.__extras && Object.keys(normalizedUser.__extras).length) { %> +

Otros campos

+ + + + <% for (const [k,v] of Object.entries(normalizedUser.__extras)) { %> + + + + + <% } %> + +
CampoValor
<%= k %><%= typeof v === 'object' ? JSON.stringify(v) : String(v) %>
+ <% } %> + <% } %> + + +

Configuraciones actuales (cookie servidor)

+ + + + + + + + + + + + + + + +
Cookie detectada + <% if (configCookieKey) { %> + <%= configCookieKey %> + <% if (tenantId32) { %> + tenant=<%= tenantId32 %> + <% } %> + <% } else { %> + No se encontró cookie de configuración (busco: sc.config, sc.prefs, sc.ui o con sufijo .{tenantId32}). + <% } %> +
Tema aplicado<%= initialTheme %>
Contenido parseado + <% if (configFromCookie) { %> +
<%= JSON.stringify(configFromCookie, null, 2) %>
+ <% } else if (configCookieKey) { %> + No fue posible parsear JSON. Valor crudo: +
<%= String(rawConfigCookie).slice(0, 2000) %>
+ <% } else { %> + + <% } %> +
+ +
+
+

Cookies (servidor: req.cookies)

+ <% if (hasCookies) { %> + + + + + + <% for (const [name, value] of Object.entries(cookies)) { %> + + + + + <% } %> + +
NombreValor
<%= name %><%= typeof value === 'object' ? JSON.stringify(value) : String(value) %>
+ <% } else { %> +

+ No se recibieron cookies del lado servidor (req.cookies). + Asegurate de usar cookie-parser y de pasar cookies al render: +
res.render('inicio', { user: req.session.user, cookies: req.cookies, session: req.session }) +

+ <% } %> +
+ +
+

Cookies (navegador) + Config

+ + + + + + + +
NombreValor
Cargando…
+ +

+ Total cookies en navegador: 0 +

+ +

Config detectada (navegador)

+

Nombre: (buscando…)

+
(sin config)
+
+
+
+
+ + + + + + + diff --git a/services/app/src/views/login.ejs b/services/app/src/views/pages/login.ejs similarity index 100% rename from services/app/src/views/login.ejs rename to services/app/src/views/pages/login.ejs diff --git a/services/app/src/views/productos.ejs b/services/app/src/views/pages/productos.ejs similarity index 100% rename from services/app/src/views/productos.ejs rename to services/app/src/views/pages/productos.ejs diff --git a/services/app/src/views/reportes.ejs b/services/app/src/views/pages/reportes.ejs similarity index 100% rename from services/app/src/views/reportes.ejs rename to services/app/src/views/pages/reportes.ejs diff --git a/services/app/src/views/reportes.ejs.bak b/services/app/src/views/pages/reportes.ejs.bak similarity index 100% rename from services/app/src/views/reportes.ejs.bak rename to services/app/src/views/pages/reportes.ejs.bak diff --git a/services/app/src/views/usuarios.ejs b/services/app/src/views/pages/usuarios.ejs similarity index 100% rename from services/app/src/views/usuarios.ejs rename to services/app/src/views/pages/usuarios.ejs diff --git a/services/app/src/views/routes.js b/services/app/src/views/routes.js new file mode 100644 index 0000000..a895fb9 --- /dev/null +++ b/services/app/src/views/routes.js @@ -0,0 +1,84 @@ +// services/app/src/views/routes.js + +import { Router } from 'express'; +import { requireAuth } from '@suitecoffee/middlewares'; + +const SESSION_NAME = process.env.SESSION_NAME; + +const router = Router(); + + +// ---------------------------------------------------------- +// Rutas de UI +// ---------------------------------------------------------- + +router.get('/', async (req, res) => { + // combinamos cookies comunes + firmadas (signed se “desfirma”: queda el SID limpio) + res.locals.pageTitle = "Inicio2"; // Título de pestaña + res.locals.pageId = "inicio"; // Sidebar contextual + const mergedCookies = { ...(req.cookies || {}), ...(req.signedCookies || {}) }; + + res.render('inicio', { + user: req.session?.user ?? null, + session: req.session ?? {}, + cookies: mergedCookies, // <-- lo que la vista va a leer + cookieName: SESSION_NAME, // <-- para no hardcodear 'sc.sid' + }); +}); +/* +router.get('/comandas', (req, res) => { + res.locals.pageTitle = "Comandas"; + res.locals.pageId = "comandas"; + res.render("./pages/comandas"); + // res.json({ ok: true, route: '/comandas' }); +}); +*/ + +// ----------------------------------------------------------------------------- +// Rutas de testeo de Cookies +// ----------------------------------------------------------------------------- +/* +router.get('/inicio', requireAuth(), async (req, res) => { + res.locals.pageTitle = "Inicio2"; // Título de pestaña + res.locals.pageId = "inicio"; // Sidebar contextual + res.render("inicio", { + user: req.session?.user ?? null, + cookies: req.cookies ?? {}, + session: req.session ?? {}, + req, // para que el EJS pueda usar req.sessionID si quiere + }); +}); +*/ + +router.get('/inicio', requireAuth(), async (req, res) => { + // combinamos cookies comunes + firmadas (signed se “desfirma”: queda el SID limpio) + res.locals.pageTitle = "Inicio2"; // Título de pestaña + res.locals.pageId = "inicio"; // Sidebar contextual + const mergedCookies = { ...(req.cookies || {}), ...(req.signedCookies || {}) }; + + res.render('inicio', { + user: req.session?.user ?? null, + session: req.session ?? {}, + cookies: mergedCookies, // <-- lo que la vista va a leer + cookieName: SESSION_NAME, // <-- para no hardcodear 'sc.sid' + }); +}); + +router.get('/debug/tenant', (req, res) => { + res.json({ + sid: req.sessionID ?? null, + hasSession: !!req.session, + user: req.session?.user + ? { + sub: req.session.user.sub ?? null, + email: req.session.user.email ?? null, + default_tenant: req.session.user.default_tenant ?? req.session.user.defaultTenant ?? null, + } + : null, + tenant: req.session?.tenant ?? null, + reqTenant: req.tenant ?? null, + accept: req.headers.accept, + }); +}); + +export default router; \ No newline at end of file diff --git a/services/auth/.env.development b/services/auth/.env.development index 79f86e5..23c0059 100644 --- a/services/auth/.env.development +++ b/services/auth/.env.development @@ -1,62 +1,54 @@ -# ===== Runtime ===== +# ======================================================= +# Runtime NODE_ENV=development PORT=4040 +APP_BASE_URL=https://dev.suitecoffee.uy +# ======================================================= -# ===== Session (usa el Redis del stack) ===== -# Para DEV podemos reutilizar el Redis de Authentik. En prod conviene uno separado. -SESSION_SECRET=Neon*Mammal*Boaster*Ludicrous*Fender8*Crablike -SESSION_COOKIE_NAME=sc.sid - -# ===== DB principal (metadatos de SuiteCoffee) ===== -# Usa el alias de red del servicio 'db' (compose: aliases [dev-db]) -DB_HOST=dev-db -DB_NAME=dev_suitecoffee_core -DB_PORT=5432 -DB_USER=dev-user-suitecoffee -DB_PASS=dev-pass-suitecoffee +# ======================================================= +# Configuración de Dases de Datos CORE_DB_HOST=dev-db CORE_DB_NAME=dev_suitecoffee_core CORE_DB_PORT=5432 CORE_DB_USER=dev-user-suitecoffee CORE_DB_PASS=dev-pass-suitecoffee -# ===== DB tenants (Tenants de SuiteCoffee) ===== -TENANTS_HOST=dev-tenants -TENANTS_DB=dev_suitecoffee_tenants -TENANTS_PORT=5432 -TENANTS_USER=suitecoffee -TENANTS_PASS=suitecoffee - TENANTS_DB_HOST=dev-tenants TENANTS_DB_NAME=dev_suitecoffee_tenants TENANTS_DB_PORT=5432 TENANTS_DB_USER=suitecoffee TENANTS_DB_PASS=suitecoffee +# ======================================================= -# ===== Authentik — Admin API (server-to-server dentro de la red) ===== -# Usa el alias de red del servicio 'authentik' y su puerto interno 9000 + +# ======================================================= +# Sesiones +SESSION_SECRET=Neon*Mammal*Boaster*Ludicrous*Fender8*Crablike +SESSION_NAME=sc.sid +COOKIE_DOMAIN=dev.suitecoffee.uy +# ======================================================= + + + +# ======================================================= +# Authentik y OIDC AK_TOKEN=h2apVHbd3ApMcnnSwfQPXbvximkvP8HnUE25ot3zXWuEEtJFaNCcOzDHB6Xw AK_REDIS_URL=redis://ak-redis:6379 -# ===== OIDC (DEBE coincidir con el Provider) ===== -# DEV (todo dentro de la red de Docker): -# - El auth service redirige al navegador a este issuer. Si NO tenés reverse proxy hacia Authentik, -# esta URL interna NO será accesible desde el navegador del host. En ese caso, ver nota más abajo. +OIDC_LOGIN_URL=https://dev.sso.suitecoffee.uy +OIDC_REDIRECT_URI=https://dev.suitecoffee.uy/auth/callback -APP_BASE_URL=https://suitecoffee.uy +OIDC_CLIENT_ID=1orMM8vOvf3WkN2FejXYvUFpPtONG0Lx1eMlwIpW +OIDC_CLIENT_SECRET=t5wx13qBcM0EFQ3cGnUIAmLzvbdsQrUVPv1OGWjszWkEp35pJQ55t7vZeeShqG49kuRAaiXv6PSGJLhRfGaponGaJl8gH1uCL7KIxdmm7UihgYoAXB2dFhZV4zRxfze2 -OIDC_LOGIN_URL=https://sso.suitecoffee.uy -OIDC_REDIRECT_URI = https://suitecoffee.uy/auth/callback +OIDC_CONFIG_URL=https://dev.sso.suitecoffee.uy/application/o/suitecoffee/.well-known/openid-configuration +OIDC_AUTHORIZE_URL=https://dev.sso.suitecoffee.uy/application/o/authorize/ +OIDC_TOKEN_URL=https://dev.sso.suitecoffee.uy/application/o/token/ +OIDC_USERINFO_URL=https://dev.sso.suitecoffee.uy/application/o/userinfo/ +OIDC_LOGOUT_URL=https://dev.sso.suitecoffee.uy/application/o/suitecoffee/end-session/ +OIDC_JWKS_URL=https://dev.sso.suitecoffee.uy/application/o/suitecoffee/jwks/ -OIDC_CLIEN_ID=1orMM8vOvf3WkN2FejXYvUFpPtONG0Lx1eMlwIpW -OIDC_CONFIG_URL=https://sso.suitecoffee.uy/application/o/suitecoffee/.well-known/openid-configuration -OIDC_ISSUER=https://sso.suitecoffee.uy/application/o/suitecoffee/ -OIDC_ISSUER_DISCOVERY=https://sso.suitecoffee.uy/application/o/suitecoffee/.well-known/openid-configuration -OIDC_AUTHORIZE_URL=https://sso.suitecoffee.uy/application/o/authorize/ -OIDC_TOKEN_URL=https://sso.suitecoffee.uy/application/o/token/ -OIDC_USERINFO_URL=https://sso.suitecoffee.uy/application/o/userinfo/ -OIDC_LOGOUT_URL=https://sso.suitecoffee.uy/application/o/suitecoffee/end-session/ -OIDC_JWKS_URL=https://sso.suitecoffee.uy/application/o/suitecoffee/jwks/ \ No newline at end of file +# ======================================================= \ No newline at end of file diff --git a/services/auth/.env.production b/services/auth/.env.production deleted file mode 100644 index 709cbf7..0000000 --- a/services/auth/.env.production +++ /dev/null @@ -1,22 +0,0 @@ -NODE_ENV=production # Entorno de desarrollo - -PORT=4000 # Variables del servicio -> suitecoffee-app - -# AUTH_HOST=prod-auth - -DB_HOST=prod-db -# Nombre de la base de datos -DB_NAME=suitecoffee - -# Usuario y contraseña -DB_USER=suitecoffee -DB_PASS=suitecoffee - -# Puertos del servicio de db -DB_LOCAL_PORT=5432 -DB_DOCKER_PORT=5432 - -# Colores personalizados -COL_PRI=452D19 # Marrón oscuro -COL_SEC=D7A666 # Crema / Café -COL_BG=FFA500 # Naranja \ No newline at end of file diff --git a/services/auth/package-lock.json b/services/auth/package-lock.json index cb73938..f6bc50c 100644 --- a/services/auth/package-lock.json +++ b/services/auth/package-lock.json @@ -9,6 +9,11 @@ "version": "1.0.0", "license": "ISC", "dependencies": { + "@suitecoffee/db": "file:../../packages/core/db", + "@suitecoffee/middlewares": "file:../../packages/core/middlewares", + "@suitecoffee/oidc": "file:../../packages/oidc", + "@suitecoffee/redis": "file:../../packages/core/redis", + "@suitecoffee/scripts": "file:../../packages/core/scripts", "axios": "^1.11.0", "bcrypt": "^5.1.1", "chalk": "^5.6.0", @@ -37,6 +42,35 @@ "nodemon": "^3.1.10" } }, + "../../packages/core/db": { + "name": "@suitecoffee/db", + "version": "1.0.0", + "peerDependencies": { + "pg": "^8.16.3" + } + }, + "../../packages/core/middlewares": { + "name": "@suitecoffee/middlewares", + "version": "1.0.0" + }, + "../../packages/core/redis": { + "name": "@suitecoffee/redis", + "version": "1.0.0", + "peerDependencies": { + "pg": "^8.16.3" + } + }, + "../../packages/core/scripts": { + "name": "@suitecoffee/scripts", + "version": "1.0.0" + }, + "../../packages/oidc": { + "name": "@suitecoffee/oidc", + "version": "1.0.0", + "dependencies": { + "openid-client": "^6.0.0" + } + }, "node_modules/@epic-web/invariant": { "version": "1.0.0", "dev": true, @@ -132,6 +166,26 @@ "@redis/client": "^5.8.2" } }, + "node_modules/@suitecoffee/db": { + "resolved": "../../packages/core/db", + "link": true + }, + "node_modules/@suitecoffee/middlewares": { + "resolved": "../../packages/core/middlewares", + "link": true + }, + "node_modules/@suitecoffee/oidc": { + "resolved": "../../packages/oidc", + "link": true + }, + "node_modules/@suitecoffee/redis": { + "resolved": "../../packages/core/redis", + "link": true + }, + "node_modules/@suitecoffee/scripts": { + "resolved": "../../packages/core/scripts", + "link": true + }, "node_modules/@types/body-parser": { "version": "1.19.6", "license": "MIT", @@ -473,6 +527,8 @@ }, "node_modules/connect-redis": { "version": "9.0.0", + "resolved": "https://registry.npmjs.org/connect-redis/-/connect-redis-9.0.0.tgz", + "integrity": "sha512-QwzyvUePTMvEzG1hy45gZYw3X3YHrjmEdSkayURlcZft7hqadQ3X39wYkmCqblK2rGlw+XItELYt6GnyG6DEIQ==", "license": "MIT", "engines": { "node": ">=18" @@ -825,6 +881,8 @@ }, "node_modules/express-session": { "version": "1.18.2", + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.18.2.tgz", + "integrity": "sha512-SZjssGQC7TzTs9rpPDuUrR23GNZ9+2+IkA/+IJWmvQilTr5OSliEHGF+D9scbIpdC6yGtTI0/VhaHoVes2AN/A==", "license": "MIT", "dependencies": { "cookie": "0.7.2", @@ -1770,6 +1828,8 @@ }, "node_modules/openid-client": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-5.7.1.tgz", + "integrity": "sha512-jDBPgSVfTnkIh71Hg9pRvtJc6wTwqjRkN88+gCFtYWrlP4Yx2Dsrow8uPi3qLr/aeymPF3o2+dS+wOpglK04ew==", "license": "MIT", "dependencies": { "jose": "^4.15.9", diff --git a/services/auth/package.json b/services/auth/package.json index add584b..69b1dba 100644 --- a/services/auth/package.json +++ b/services/auth/package.json @@ -15,6 +15,13 @@ "nodemon": "^3.1.10" }, "dependencies": { + + "@suitecoffee/db": "file:../../packages/core/db", + "@suitecoffee/middlewares": "file:../../packages/core/middlewares", + "@suitecoffee/oidc": "file:../../packages/oidc", + "@suitecoffee/redis": "file:../../packages/core/redis", + "@suitecoffee/scripts": "file:../../packages/core/scripts", + "axios": "^1.11.0", "bcrypt": "^5.1.1", "chalk": "^5.6.0", @@ -38,11 +45,6 @@ "pg-format": "^1.0.4", "redis": "^5.8.2" }, - "imports": { - "#v1Router": "./src/api/v1/routes/routes.js", - "#pages": "./src/pages/pages.js", - "#db": "./src/db/poolSingleton.js" - }, "keywords": [], "description": "" } diff --git a/services/auth/src/ak.js b/services/auth/src/ak.js deleted file mode 100644 index e3b113e..0000000 --- a/services/auth/src/ak.js +++ /dev/null @@ -1,436 +0,0 @@ -// services/auth/src/ak.js -// ------------------------------------------------------------ -// Cliente para la API Admin de Authentik (v3) -// - Sin dependencias externas (usa fetch nativo de Node >=18) -// - ESM compatible -// - Timeouts, reintentos opcionales y mensajes de error claros -// - Compatible con services/auth/src/index.js actual -// ------------------------------------------------------------ - -// Utiliza AUTHENTIK_BASE_URL y AUTHENTIK_TOKEN para validar y devuelve la configuración (base URL y token) desde variables de entorno. -// Devuelve la URL base y el Token que se leyó desde .env - -/** - * @typedef {Object} AkCfg - * @property {string} BASE // p.ej. "https://idp.example.com" - * @property {string} TOKEN // bearer - */ - -/** - * @typedef {Object} AkOpts - * @property {Record>} [qs] - * @property {any} [body] - * @property {number} [timeoutMs=10000] - * @property {number} [retries=0] - * @property {Record} [headers] - */ - -function getConfig() { - const BASE = (process.env.AUTHENTIK_BASE_URL || "").trim().replace(/\/+$/, ""); - const TOKEN = process.env.AUTHENTIK_TOKEN || ''; - if (!BASE) throw new Error('[AK_CONFIG] Falta variable AUTHENTIK_BASE_URL'); - if (!TOKEN) throw new Error('[AK_CONFIG] Falta variable AUTHENTIK_TOKEN'); - return { BASE, TOKEN }; -} - -// ------------------------------------------------------------ -// Utilidades -// ------------------------------------------------------------ - -// Espera -const sleep = (ms) => new Promise((r) => setTimeout(r, ms)); - - -// ------------------------------------------------------------ -// Helpers de sincronización -// ------------------------------------------------------------ - -export function createAkClient(cfg = getConfig()) { - return { - request: (method, path, opts = {}) => request(method, path, opts, cfg), - akGET: (path, opts) => request("GET", path, opts, cfg), - akPOST: (path, opts) => request("POST", path, opts, cfg), - akPUT: (path, opts) => request("PUT", path, opts, cfg), - akPATCH: (path, opts) => request("PATCH", path, opts, cfg), - akDELETE:(path, opts) => request("DELETE", path, opts, cfg), - }; -} - -// Listar grupos con búsqueda por nombre/slug -export async function akListGroups(search = "") { - const { akGET } = createAkClient(); - const term = String(search ?? "").trim(); - - const data = await akGET("/core/groups/", { - qs: term ? { search: term } : undefined, - }); - - if (Array.isArray(data)) return data; - if (data && Array.isArray(data.results)) return data.results; - return []; -} - -export async function akPatchUserAttributes(userPk, partialAttrs = {}) { - - const id = String(userPk ?? "").trim(); - if (!id) throw new TypeError("[AK_PATH_USER_ATRIBUTES] atribute `userPk` is required"); - - if (partialAttrs == null || typeof partialAttrs !== "object" || Array.isArray(partialAttrs)) { - throw new TypeError("[AK_PATH_USER_ATRIBUTES] atribute `partialAttrs` must be a plain object"); - } - - // Remove undefineds to avoid unintentionally nulling keys server-side - const cleaned = Object.fromEntries( - Object.entries(partialAttrs).filter(([, v]) => v !== undefined) - ); - - if (Object.keys(cleaned).length === 0) { - throw new TypeError("[AK_PATH_USER_ATRIBUTES] atribute `partialAttrs` is required"); - } - - // NOTE: pass path WITHOUT /api/v3; the client prefixes it - return akPATCH(`/core/users/${encodeURIComponent(id)}/`, { - body: { attributes: cleaned }, - }); -} - -export async function akEnsureGroupForTenant(tenantHex) { - const { akGET, akPOST } = createAkClient(); - - const hex = String(tenantHex ?? "").trim(); - if (!hex) throw new TypeError("akEnsureGroupForTenant: `tenantHex` is required"); - - const groupName = `tenant_${hex}`; - - // 1) Buscar existente (normaliza {results:[]}/[]) - const data = await akGET("/core/groups/", { qs: { search: groupName } }); - const list = Array.isArray(data) ? data : (Array.isArray(data?.results) ? data.results : []); - const existing = list.find(g => g?.name === groupName); - if (existing?.pk ?? existing?.id) return existing.pk ?? existing.id; - - // 2) Crear si no existe - try { - const created = await akPOST("/core/groups/", { - body: { name: groupName, attributes: { tenant_uuid: hex } }, - }); - return created?.pk ?? created?.id; - } catch (e) { - // 3) Condición de carrera (otro proceso lo creó): reconsulta y devuelve - const msg = String(e?.message || ""); - if (/already exists|unique|duplicate|409/i.test(msg)) { - const data2 = await akGET("/core/groups/", { qs: { search: groupName } }); - const list2 = Array.isArray(data2) ? data2 : (Array.isArray(data2?.results) ? data2.results : []); - const found = list2.find(g => g?.name === groupName); - if (found?.pk ?? found?.id) return found.pk ?? found.id; - } - throw e; - } -} - -export async function akAddUserToGroup(userPk, groupPk) { - const { akPOST } = createAkClient(); - - const user = String(userPk ?? "").trim(); - const group = String(groupPk ?? "").trim(); - if (!user) throw new TypeError("akAddUserToGroup: `userPk` is required"); - if (!group) throw new TypeError("akAddUserToGroup: `groupPk` is required"); - - // API reciente: POST /core/users//groups/ { group: } - const path = `/core/users/${encodeURIComponent(user)}/groups/`; - - try { - return await akPOST(path, { body: { group } }); - } catch (e) { - const msg = String(e?.message || ""); - // Si ya es miembro, tratamos como éxito idempotente - if (/already.*member|exists|duplicate|409/i.test(msg)) { - return { ok: true, alreadyMember: true, userPk: user, groupPk: group }; - } - // Fallback para instancias viejas: /core/group_memberships/ { user, group } - if (/404|not\s*found/i.test(msg)) { - return await akPOST("/core/group_memberships/", { body: { user, group } }); - } - throw e; - } -} - - -/** - * Llamada HTTP genérica con fetch + timeout + manejo de errores. - * @param {'GET'|'POST'|'PUT'|'PATCH'|'DELETE'} method - * @param {string} path Ruta relativa (ej. "/core/users/") o absoluta; si es relativa se antepone "/api/v3". - * @param {AkOpts} [opts] - * @param {AkCfg} [cfg] Config inyectada; si se omite se usa getConfig() - * @returns {Promise} - */ - -export async function request(method, path, opts = {}, cfg) { - const { BASE, TOKEN } = cfg ?? getConfig(); - const { - qs, - body, - timeoutMs = 10_000, - retries = 0, - headers = {}, - } = opts; - - // Construcción segura de URL + QS - const base = BASE.endsWith("/") ? BASE : `${BASE}/`; - let p = /^https?:\/\//i.test(path) ? path : (path.startsWith("/") ? path : `/${path}`); - if (!/^https?:\/\//i.test(p) && !p.startsWith("/api/")) p = `/api/v3${p}`; - const url = new URL(p, base); - if (qs && typeof qs === "object") { - for (const [k, v] of Object.entries(qs)) { - if (v == null) continue; - if (Array.isArray(v)) v.forEach((x) => url.searchParams.append(k, String(x))); - else url.searchParams.set(k, String(v)); - } - } - - // Reintentos + timeout - const maxAttempts = Math.max(1, retries + 1); - let lastErr; - for (let attempt = 1; attempt <= maxAttempts; attempt++) { - const ctrl = new AbortController(); - const t = setTimeout(() => ctrl.abort(new Error("AK_TIMEOUT")), timeoutMs); - try { - const init = { - method, - signal: ctrl.signal, - headers: { - Authorization: `Bearer ${TOKEN}`, - Accept: "application/json", - ...headers, - }, - }; - if (body !== undefined) { - // Sólo forzar JSON si es objeto plano - const isPlainObj = body && typeof body === "object" && - !(body instanceof FormData) && - !(body instanceof URLSearchParams) && - !(typeof Blob !== "undefined" && body instanceof Blob); - if (isPlainObj) { - init.headers["Content-Type"] = init.headers["Content-Type"] || "application/json"; - init.body = JSON.stringify(body); - } else { - init.body = body; // deja que fetch maneje el Content-Type - } - } - - const res = await fetch(url, init); - clearTimeout(t); - - if (res.status === 204 || res.status === 205) return null; - const ctype = res.headers.get("content-type") || ""; - const payload = /\bapplication\/json\b/i.test(ctype) ? await res.json().catch(() => ({})) : await res.text(); - - if (!res.ok) { - const detail = typeof payload === "string" ? payload : payload?.detail || payload?.error || JSON.stringify(payload); - const err = new Error(`AK ${method} ${url.pathname}${url.search} → ${res.status}: ${detail}`); - err.status = res.status; // @ts-ignore - // Reintenta 5xx y 429 - if ((res.status >= 500 && res.status <= 599) || res.status === 429) { - lastErr = err; - if (attempt < maxAttempts) { - let delay = 500 * 2 ** (attempt - 1); - const ra = parseInt(res.headers.get("retry-after") || "", 10); - if (!Number.isNaN(ra)) delay = Math.max(delay, ra * 1000); - await new Promise(r => setTimeout(r, delay)); - continue; - } - } - throw err; - } - - return payload; - } catch (e) { - clearTimeout(t); - lastErr = e; - const msg = String(e?.message || ""); - const retriable = msg.includes("AK_TIMEOUT") || msg.includes("ECONNREFUSED") || msg.includes("fetch failed"); - if (!retriable || attempt >= maxAttempts) throw e; - await new Promise(r => setTimeout(r, 500 * 2 ** (attempt - 1))); - } - } - throw lastErr; -} - -// ------------------------------------------------------------ -// Funciones públicas -// ------------------------------------------------------------ - -export async function akFindUserByEmail(email) { - const { akGET } = createAkClient(); - - const needle = String(email ?? "").trim().toLowerCase(); - if (!needle) throw new TypeError("akFindUserByEmail: `email` is required"); - - const PAGE_SIZE = 100; - let page = 1; - const MAX_PAGES = 10; - - while (page <= MAX_PAGES) { - const data = await akGET("/core/users/", { - qs: { search: needle, page_size: PAGE_SIZE, page }, - retries: 2, - }); - - const list = Array.isArray(data) - ? data - : (Array.isArray(data?.results) ? data.results : []); - - const found = list.find(u => String(u?.email || "").toLowerCase() === needle); - if (found) return found || null; - - // Continuar paginando sólo si hay más resultados - const hasNext = - Array.isArray(data) - ? list.length === PAGE_SIZE // array plano: inferimos por tamaño - : Boolean(data?.next); // DRF: link "next" - if (!hasNext) break; - - page += 1; - } - - return null; -} - -export async function akCreateUser(p = {}) { - const { akPOST } = createAkClient(); - - const email = String(p.email ?? "").trim().toLowerCase(); - if (!email) throw new TypeError("akCreateUser: `email` is required"); - - const name = String(p.displayName ?? email).trim() || email; - const tenantUuid = String(p.tenantUuid ?? "").replace(/-/g, "").trim(); - const isActive = p.isActive ?? true; - - const body = { - username: email, - name, - email, - is_active: !!isActive, - attributes: tenantUuid ? { tenant_uuid: tenantUuid } : {}, - }; - - let user; - try { - user = await akPOST("/core/users/", { body, retries: 2 }); - } catch (e) { - const msg = String(e?.message || ""); - if (/409|already\s*exists|unique|duplicate/i.test(msg)) { - // Idempotencia: si ya existe, lo buscamos por email y lo devolvemos - const existing = await akFindUserByEmail(email); - if (existing) return existing; - } - throw e; - } - - // Agregar a grupo (opcional, no rompe el flujo si falla) - const groupId = p.addToGroupId != null ? String(p.addToGroupId).trim() : ""; - if (groupId) { - try { - const userPk = encodeURIComponent(user.pk ?? user.id); - await akPOST(`/core/users/${userPk}/groups/`, { - body: { group: groupId }, - retries: 2, - }); - } catch (err) { - console.warn( - `akCreateUser: could not add user ${user.pk ?? user.id} to group ${groupId}:`, - err?.message || err - ); - } - } - - return user; -} - -export async function akSetPassword(userPk, password, requireChange = true) { - const { akPOST } = createAkClient(); - - const id = String(userPk ?? "").trim(); - if (!id) throw new TypeError("akSetPassword: `userPk` is required"); - - const pwd = String(password ?? ""); - if (!pwd) throw new TypeError("akSetPassword: `password` is required"); - - try { - await akPOST(`/core/users/${encodeURIComponent(id)}/set_password/`, { - body: { password: pwd, require_change: !!requireChange }, - retries: 1, - timeoutMs: 15_000, - }); - return true; - } catch (e) { - const status = e?.status ? `HTTP ${e.status}: ` : ""; - const err = new Error(`akSetPassword: failed to set password (${status}${e?.message || e})`); - err.cause = e; - throw err; - } -} - -export async function akResolveGroupIdByName(name) { - const term = String(name ?? "").trim(); - if (!term) throw new TypeError("akResolveGroupIdByName: `name` is required"); - - const needle = term.toLowerCase(); - const groups = await akListGroups(term); - if (!Array.isArray(groups) || groups.length === 0) return null; - - // Prefer exact slug match, then exact name match - const bySlug = groups.find(g => String(g?.slug ?? "").toLowerCase() === needle); - if (bySlug) return bySlug.pk ?? bySlug.id ?? null; - - const byName = groups.find(g => String(g?.name ?? "").toLowerCase() === needle); - return byName?.pk ?? byName?.id ?? null; -} - -export async function akResolveGroupId({ id, pk, uuid, name, slug } = {}) { - const toPk = (v) => { - if (v == null || v === "") return null; - const n = Number(v); - return Number.isFinite(n) ? n : String(v); - }; - - // 1) Direct pk/id - const direct = pk ?? id; - const directPk = toPk(direct); - if (directPk != null) return directPk; - - const { akGET } = createAkClient(); - - // 2) By UUID (detail endpoint) - const uuidStr = String(uuid ?? "").trim(); - if (uuidStr) { - try { - const g = await akGET(`/core/groups/${encodeURIComponent(uuidStr)}/`, { retries: 1 }); - const fromDetail = toPk(g?.pk ?? g?.id); - if (fromDetail != null) return fromDetail; - } catch { /* continue with name/slug */ } - } - - // 3) By exact name/slug - const needle = String(name ?? slug ?? "").trim(); - if (needle) { - const lower = needle.toLowerCase(); - const list = await akListGroups(needle); // expects [] or {results:[]}, handled in akListGroups - const found = - list.find(g => String(g?.slug ?? "").toLowerCase() === lower) || - list.find(g => String(g?.name ?? "").toLowerCase() === lower); - const fromList = toPk(found?.pk ?? found?.id); - if (fromList != null) return fromList; - } - - return null; -} - -// ------------------------------------------------------------ -// Exportación de constantes -// ------------------------------------------------------------ - -export const akGET = (path, opts) => request("GET", path, opts); -export const akPOST = (path, opts) => request("POST", path, opts); -export const akPUT = (path, opts) => request("PUT", path, opts); -export const akPATCH = (path, opts) => request("PATCH", path, opts); -export const akDELETE = (path, opts) => request("DELETE", path, opts); \ No newline at end of file diff --git a/services/auth/src/api/api.js b/services/auth/src/api/api.js deleted file mode 100644 index d65d8b8..0000000 --- a/services/auth/src/api/api.js +++ /dev/null @@ -1,181 +0,0 @@ -// // ---------------------------------------------------------- -// // API -// // ---------------------------------------------------------- -// app.get('/api/tables', async (_req, res) => { -// res.json(ALLOWED_TABLES); -// }); - -// app.get('/api/schema/:table', async (req, res) => { -// try { -// const table = ensureTable(req.params.table); -// const client = await getClient(); -// try { -// const columns = await loadColumns(client, table); -// const fks = await loadForeignKeys(client, table); -// const enriched = columns.map(c => ({ ...c, foreign: fks[c.column_name] || null })); -// res.json({ table, columns: enriched }); -// } finally { client.release(); } -// } catch (e) { -// res.status(400).json({ error: e.message }); -// } -// }); - -// app.get('/api/options/:table/:column', async (req, res) => { -// try { -// const table = ensureTable(req.params.table); -// const column = req.params.column; -// if (!VALID_IDENT.test(column)) throw new Error('Columna inválida'); - -// const client = await getClient(); -// try { -// const fks = await loadForeignKeys(client, table); -// const fk = fks[column]; -// if (!fk) return res.json([]); - -// const refTable = fk.foreign_table; -// const refId = fk.foreign_column; -// const labelCol = await pickLabelColumn(client, refTable); - -// const sql = `SELECT ${q(refId)} AS id, ${q(labelCol)} AS label FROM ${q(refTable)} ORDER BY ${q(labelCol)} LIMIT 1000`; -// const result = await client.query(sql); -// res.json(result.rows); -// } finally { client.release(); } -// } catch (e) { -// res.status(400).json({ error: e.message }); -// } -// }); - -// app.get('/api/table/:table', async (req, res) => { -// try { -// const table = ensureTable(req.params.table); -// const limit = Math.min(parseInt(req.query.limit || '100', 10), 1000); -// const client = await getClient(); -// try { -// const pks = await loadPrimaryKey(client, table); -// const orderBy = pks.length ? `ORDER BY ${pks.map(q).join(', ')} DESC` : ''; -// const sql = `SELECT * FROM ${q(table)} ${orderBy} LIMIT ${limit}`; -// const result = await client.query(sql); - -// // Normalizar: siempre devolver objetos {col: valor} -// const colNames = result.fields.map(f => f.name); -// let rows = result.rows; -// if (rows.length && Array.isArray(rows[0])) { -// rows = rows.map(r => Object.fromEntries(r.map((v, i) => [colNames[i], v]))); -// } -// res.json(rows); -// } finally { client.release(); } -// } catch (e) { -// res.status(400).json({ error: e.message, code: e.code, detail: e.detail }); -// } -// }); - -// app.post('/api/table/:table', async (req, res) => { -// const table = ensureTable(req.params.table); -// const payload = req.body || {}; -// try { -// const client = await getClient(); -// try { -// const columns = await loadColumns(client, table); -// const insertable = columns.filter(c => -// !c.is_primary && !c.is_identity && !(c.column_default || '').startsWith('nextval(') -// ); -// const allowedCols = new Set(insertable.map(c => c.column_name)); - -// const cols = []; -// const vals = []; -// const params = []; -// let idx = 1; -// for (const [k, v] of Object.entries(payload)) { -// if (!allowedCols.has(k)) continue; -// if (!VALID_IDENT.test(k)) continue; -// cols.push(q(k)); -// vals.push(`$${idx++}`); -// params.push(v); -// } - -// if (!cols.length) { -// const { rows } = await client.query(`INSERT INTO ${q(table)} DEFAULT VALUES RETURNING *`); -// res.status(201).json({ inserted: rows[0] }); -// } else { -// const { rows } = await client.query( -// `INSERT INTO ${q(table)} (${cols.join(', ')}) VALUES (${vals.join(', ')}) RETURNING *`, -// params -// ); -// res.status(201).json({ inserted: rows[0] }); -// } -// } catch (e) { -// if (e.code === '23503') return res.status(400).json({ error: 'Violación de clave foránea', detail: e.detail }); -// if (e.code === '23505') return res.status(400).json({ error: 'Violación de unicidad', detail: e.detail }); -// if (e.code === '23514') return res.status(400).json({ error: 'Violación de CHECK', detail: e.detail }); -// if (e.code === '23502') return res.status(400).json({ error: 'Campo NOT NULL faltante', detail: e.detail }); -// throw e; -// } -// } catch (e) { -// res.status(400).json({ error: e.message }); -// } -// }); - -// app.get('/api/comandas', async (req, res, next) => { -// try { -// const estado = (req.query.estado || '').trim() || null; -// const limit = Math.min(parseInt(req.query.limit || '200', 10), 1000); - -// const { rows } = await mainPool.query( -// `SELECT * FROM public.f_comandas_resumen($1, $2)`, -// [estado, limit] -// ); -// res.json(rows); -// } catch (e) { next(e); } -// }); - - -// // Detalle de una comanda (con nombres de productos) -// // GET /api/comandas/:id/detalle -// app.get('/api/comandas/:id/detalle', (req, res, next) => -// mainPool.query( -// `SELECT id_det_comanda, id_producto, producto_nombre, -// cantidad, pre_unitario, subtotal, observaciones -// FROM public.v_comandas_detalle_items -// WHERE id_comanda = $1::int -// ORDER BY id_det_comanda`, -// [req.params.id] -// ) -// .then(r => res.json(r.rows)) -// .catch(next) -// ); - -// // Cerrar comanda (setea estado y fec_cierre en DB) -// app.post('/api/comandas/:id/cerrar', async (req, res, next) => { -// try { -// const id = Number(req.params.id); -// if (!Number.isInteger(id) || id <= 0) { -// return res.status(400).json({ error: 'id inválido' }); -// } -// const { rows } = await mainPool.query( -// `SELECT public.f_cerrar_comanda($1) AS data`, -// [id] -// ); -// if (!rows.length || rows[0].data === null) { -// return res.status(404).json({ error: 'Comanda no encontrada' }); -// } -// res.json(rows[0].data); -// } catch (err) { next(err); } -// }); - -// Abrir (reabrir) comanda -app.post('/api/comandas/:id/abrir', async (req, res, next) => { - try { - const id = Number(req.params.id); - if (!Number.isInteger(id) || id <= 0) { - return res.status(400).json({ error: 'id inválido' }); - } - const { rows } = await mainPool.query( - `SELECT public.f_abrir_comanda($1) AS data`, - [id] - ); - if (!rows.length || rows[0].data === null) { - return res.status(404).json({ error: 'Comanda no encontrada' }); - } - res.json(rows[0].data); - } catch (err) { next(err); } -}); \ No newline at end of file diff --git a/services/auth/src/api/rpc.js b/services/auth/src/api/rpc.js deleted file mode 100644 index 56766d1..0000000 --- a/services/auth/src/api/rpc.js +++ /dev/null @@ -1,230 +0,0 @@ -// // GET producto + receta -// app.get('/api/rpc/get_producto/:id', async (req, res) => { -// const id = Number(req.params.id); -// const { rows } = await mainPool.query('SELECT public.get_producto($1) AS data', [id]); -// res.json(rows[0]?.data || {}); -// }); - -// // POST guardar producto + receta - -// app.post('/api/rpc/save_producto', async (req, res) => { -// try { -// // console.debug('receta payload:', req.body?.receta); // habilitalo si lo necesitás -// const q = 'SELECT public.save_producto($1,$2,$3,$4,$5,$6,$7::jsonb) AS id_producto'; -// const { id_producto = null, nombre, img_producto = null, precio = 0, activo = true, id_categoria = null, receta = [] } = req.body || {}; -// const params = [id_producto, nombre, img_producto, precio, activo, id_categoria, JSON.stringify(receta || [])]; -// const { rows } = await mainPool.query(q, params); -// res.json(rows[0] || {}); -// } catch (e) { -// console.error(e); -// res.status(500).json({ error: 'save_producto failed' }); -// } -// }); - -// // GET MP + proveedores -// app.get('/api/rpc/get_materia/:id', async (req, res) => { -// const id = Number(req.params.id); -// try { -// const { rows } = await mainPool.query('SELECT public.get_materia_prima($1) AS data', [id]); -// res.json(rows[0]?.data || {}); -// } catch (e) { -// console.error(e); -// res.status(500).json({ error: 'get_materia failed' }); -// } -// }); - -// // SAVE MP + proveedores (array) -// app.post('/api/rpc/save_materia', async (req, res) => { -// const { id_mat_prima = null, nombre, unidad, activo = true, proveedores = [] } = req.body || {}; -// try { -// const q = 'SELECT public.save_materia_prima($1,$2,$3,$4,$5::jsonb) AS id_mat_prima'; -// const params = [id_mat_prima, nombre, unidad, activo, JSON.stringify(proveedores || [])]; -// const { rows } = await mainPool.query(q, params); -// res.json(rows[0] || {}); -// } catch (e) { -// console.error(e); -// res.status(500).json({ error: 'save_materia failed' }); -// } -// }); - -// // POST /api/rpc/find_usuarios_por_documentos { docs: ["12345678","09123456", ...] } -// app.post('/api/rpc/find_usuarios_por_documentos', async (req, res) => { -// try { -// const docs = Array.isArray(req.body?.docs) ? req.body.docs : []; -// const sql = 'SELECT public.find_usuarios_por_documentos($1::jsonb) AS data'; -// const { rows } = await mainPool.query(sql, [JSON.stringify(docs)]); -// res.json(rows[0]?.data || {}); -// } catch (e) { -// console.error(e); -// res.status(500).json({ error: 'find_usuarios_por_documentos failed' }); -// } -// }); - -// // POST /api/rpc/import_asistencia { registros: [...], origen?: "AGL_001.txt" } -// app.post('/api/rpc/import_asistencia', async (req, res) => { -// try { -// const registros = Array.isArray(req.body?.registros) ? req.body.registros : []; -// const origen = req.body?.origen || null; -// const sql = 'SELECT public.import_asistencia($1::jsonb,$2) AS data'; -// const { rows } = await mainPool.query(sql, [JSON.stringify(registros), origen]); -// res.json(rows[0]?.data || {}); -// } catch (e) { -// console.error(e); -// res.status(500).json({ error: 'import_asistencia failed' }); -// } -// }); - -// // Consultar datos de asistencia (raw + pares) para un usuario y rango -// app.post('/api/rpc/asistencia_get', async (req, res) => { -// try { -// const { doc, desde, hasta } = req.body || {}; -// const sql = 'SELECT public.asistencia_get($1::text,$2::date,$3::date) AS data'; -// const { rows } = await mainPool.query(sql, [doc, desde, hasta]); -// res.json(rows[0]?.data || {}); -// } catch (e) { -// console.error(e); res.status(500).json({ error: 'asistencia_get failed' }); -// } -// }); - -// // Editar un registro crudo y recalcular pares -// app.post('/api/rpc/asistencia_update_raw', async (req, res) => { -// try { -// const { id_raw, fecha, hora, modo } = req.body || {}; -// const sql = 'SELECT public.asistencia_update_raw($1::bigint,$2::date,$3::text,$4::text) AS data'; -// const { rows } = await mainPool.query(sql, [id_raw, fecha, hora, modo ?? null]); -// res.json(rows[0]?.data || {}); -// } catch (e) { -// console.error(e); res.status(500).json({ error: 'asistencia_update_raw failed' }); -// } -// }); - -// // Eliminar un registro crudo y recalcular pares -// app.post('/api/rpc/asistencia_delete_raw', async (req, res) => { -// try { -// const { id_raw } = req.body || {}; -// const sql = 'SELECT public.asistencia_delete_raw($1::bigint) AS data'; -// const { rows } = await mainPool.query(sql, [id_raw]); -// res.json(rows[0]?.data || {}); -// } catch (e) { -// console.error(e); res.status(500).json({ error: 'asistencia_delete_raw failed' }); -// } -// }); - -// // POST /api/rpc/report_tickets { year } -// app.post('/api/rpc/report_tickets', async (req, res) => { -// try { -// const y = parseInt(req.body?.year ?? req.query?.year, 10); -// const year = (Number.isFinite(y) && y >= 2000 && y <= 2100) -// ? y -// : (new Date()).getFullYear(); - -// const { rows } = await mainPool.query( -// 'SELECT public.report_tickets_year($1::int) AS j', [year] -// ); -// res.json(rows[0].j); -// } catch (e) { -// console.error('report_tickets error:', e); -// res.status(500).json({ -// error: 'report_tickets failed', -// message: e.message, detail: e.detail, where: e.where, code: e.code -// }); -// } -// }); - -// // POST /api/rpc/report_asistencia { desde: 'YYYY-MM-DD', hasta: 'YYYY-MM-DD' } -// app.post('/api/rpc/report_asistencia', async (req, res) => { -// try { -// let { desde, hasta } = req.body || {}; -// // defaults si vienen vacíos/invalidos -// const re = /^\d{4}-\d{2}-\d{2}$/; -// if (!re.test(desde) || !re.test(hasta)) { -// const end = new Date(); -// const start = new Date(end); start.setDate(end.getDate() - 30); -// desde = start.toISOString().slice(0, 10); -// hasta = end.toISOString().slice(0, 10); -// } - -// const { rows } = await mainPool.query( -// 'SELECT public.report_asistencia($1::date,$2::date) AS j', [desde, hasta] -// ); -// res.json(rows[0].j); -// } catch (e) { -// console.error('report_asistencia error:', e); -// res.status(500).json({ -// error: 'report_asistencia failed', -// message: e.message, detail: e.detail, where: e.where, code: e.code -// }); -// } -// }); - -// // Guardar (insert/update) -// app.post('/api/rpc/save_compra', async (req, res) => { -// try { -// const { id_compra, id_proveedor, fec_compra, detalles } = req.body || {}; -// const sql = 'SELECT * FROM public.save_compra($1::int,$2::int,$3::timestamptz,$4::jsonb)'; -// const args = [id_compra ?? null, id_proveedor, fec_compra ? new Date(fec_compra) : null, JSON.stringify(detalles)]; -// const { rows } = await mainPool.query(sql, args); -// res.json(rows[0]); // { id_compra, total } -// } catch (e) { -// console.error('save_compra error:', e); -// res.status(500).json({ error: 'save_compra failed', message: e.message, detail: e.detail, where: e.where, code: e.code }); -// } -// }); - -// // Obtener para editar -// app.post('/api/rpc/get_compra', async (req, res) => { -// try { -// const { id_compra } = req.body || {}; -// const sql = `SELECT public.get_compra($1::int) AS data`; -// const { rows } = await mainPool.query(sql, [id_compra]); -// res.json(rows[0]?.data || {}); -// } catch (e) { -// console.error(e); res.status(500).json({ error: 'get_compra failed' }); -// } -// }); - -// // Eliminar -// app.post('/api/rpc/delete_compra', async (req, res) => { -// try { -// const { id_compra } = req.body || {}; -// await mainPool.query(`SELECT public.delete_compra($1::int)`, [id_compra]); -// res.json({ ok: true }); -// } catch (e) { -// console.error(e); res.status(500).json({ error: 'delete_compra failed' }); -// } -// }); - -// // POST /api/rpc/report_gastos { year: 2025 } -// app.post('/api/rpc/report_gastos', async (req, res) => { -// try { -// const year = parseInt(req.body?.year ?? new Date().getFullYear(), 10); -// const { rows } = await mainPool.query( -// 'SELECT public.report_gastos($1::int) AS j', [year] -// ); -// res.json(rows[0].j); -// } catch (e) { -// console.error('report_gastos error:', e); -// res.status(500).json({ -// error: 'report_gastos failed', -// message: e.message, detail: e.detail, code: e.code -// }); -// } -// }); - -// // (Opcional) GET para probar rápido desde el navegador: -// // /api/rpc/report_gastos?year=2025 -// app.get('/api/rpc/report_gastos', async (req, res) => { -// try { -// const year = parseInt(req.query.year ?? new Date().getFullYear(), 10); -// const { rows } = await mainPool.query( -// 'SELECT public.report_gastos($1::int) AS j', [year] -// ); -// res.json(rows[0].j); -// } catch (e) { -// console.error('report_gastos error:', e); -// res.status(500).json({ -// error: 'report_gastos failed', -// message: e.message, detail: e.detail, code: e.code -// }); -// } -// }); \ No newline at end of file diff --git a/services/auth/src/api/v1/routes/routes.js b/services/auth/src/api/v1/routes/routes.js deleted file mode 100644 index c17f2cc..0000000 --- a/services/auth/src/api/v1/routes/routes.js +++ /dev/null @@ -1,340 +0,0 @@ -// services/manso/src/api/v1/routes/routes.js - -import { Router } from 'express'; -import pool from '#db'; // Pool Singleton -const router = Router(); - -// ========================================================== -// Rutas de API v1 -// ========================================================== - - - -// ---------------------------------------------------------- -// API Comandas -// ---------------------------------------------------------- - -router.route('/comandas').get( async (req, res, next) => { - try { - var client = await pool.getClient() - const estado = (req.query.estado || '').trim() || null; - const limit = Math.min(parseInt(req.query.limit || '200', 10), 1000); - - const { rows } = await client.query( - `SELECT * FROM public.f_comandas_resumen($1, $2)`, - [estado, limit] - ); - res.json(rows); - } catch (e) { - next(e); - } finally { - client.release(); - } -}); - -router.route('/comandas/:id/detalle').get( async (req, res, next) => { - try { - const client = await pool.getClient() - client.query( - `SELECT id_det_comanda, id_producto, producto_nombre, - cantidad, pre_unitario, subtotal, observaciones - FROM public.v_comandas_detalle_items - WHERE id_comanda = $1::int - ORDER BY id_det_comanda`, - [req.params.id] - ) - .then(r => res.json(r.rows)) - .catch(next) - client.release(); - } catch (error) { - next(e); - } -}); - -router.route('/comandas/:id/cerrar').post( async (req, res, next) => { - try { - const client = await pool.getClient() - const id = Number(req.params.id); - if (!Number.isInteger(id) || id <= 0) { - return res.status(400).json({ error: 'id inválido' }); - } - const { rows } = await client.query( - `SELECT public.f_cerrar_comanda($1) AS data`, - [id] - ); - if (!rows.length || rows[0].data === null) { - return res.status(404).json({ error: 'Comanda no encontrada' }); - } - res.json(rows[0].data); - client.release(); - } catch (err) { next(err); } -}); - -router.route('/comandas/:id/abrir').post( async (req, res, next) => { - try { - const client = await pool.getClient() - const id = Number(req.params.id); - if (!Number.isInteger(id) || id <= 0) { - return res.status(400).json({ error: 'id inválido' }); - } - const { rows } = await client.query( - `SELECT public.f_abrir_comanda($1) AS data`, - [id] - ); - if (!rows.length || rows[0].data === null) { - return res.status(404).json({ error: 'Comanda no encontrada' }); - } - res.json(rows[0].data); - client.release(); - } catch (err) { next(err); } -}); - - - -// ---------------------------------------------------------- -// API Productos -// ---------------------------------------------------------- - -// GET producto + receta -router.route('/rpc/get_producto/:id').get( async (req, res) => { - const client = await pool.getClient() - const id = Number(req.params.id); - const { rows } = await client.query('SELECT public.get_producto($1) AS data', [id]); - res.json(rows[0]?.data || {}); - client.release(); -}); - -// POST guardar producto + receta -router.route('/rpc/save_producto').post(async (req, res) => { - try { - // console.debug('receta payload:', req.body?.receta); // habilitalo si lo necesitás - const client = await pool.getClient() - const q = 'SELECT public.save_producto($1,$2,$3,$4,$5,$6,$7::jsonb) AS id_producto'; - const { id_producto=null, nombre, img_producto=null, precio=0, activo=true, id_categoria=null, receta=[] } = req.body || {}; - const params = [id_producto, nombre, img_producto, precio, activo, id_categoria, JSON.stringify(receta||[])]; - const { rows } = await client.query(q, params); - res.json(rows[0] || {}); - client.release(); - } catch(e) { - console.error(e); - res.status(500).json({ error: 'save_producto failed' }); - } -}); - - - -// ---------------------------------------------------------- -// API Materias Primas -// ---------------------------------------------------------- - -// GET MP + proveedores -router.route('/rpc/get_materia/:id').get(async (req, res) => { - const id = Number(req.params.id); - try { - const client = await pool.getClient() - const { rows } = await client.query('SELECT public.get_materia_prima($1) AS data', [id]); - res.json(rows[0]?.data || {}); - client.release(); - } catch (e) { - console.error(e); - res.status(500).json({ error: 'get_materia failed' }); - } -}); - -// SAVE MP + proveedores (array) -router.route('/rpc/save_materia').post( async (req, res) => { - const { id_mat_prima=null, nombre, unidad, activo=true, proveedores=[] } = req.body || {}; - try { - const q = 'SELECT public.save_materia_prima($1,$2,$3,$4,$5::jsonb) AS id_mat_prima'; - const params = [id_mat_prima, nombre, unidad, activo, JSON.stringify(proveedores||[])]; - const { rows } = await pool.query(q, params); - res.json(rows[0] || {}); - } catch (e) { - console.error(e); - res.status(500).json({ error: 'save_materia failed' }); - } -}); - - - -// ---------------------------------------------------------- -// API Usuarios y Asistencias -// ---------------------------------------------------------- - -// POST /api/rpc/find_usuarios_por_documentos { docs: ["12345678","09123456", ...] } -router.route('/rpc/find_usuarios_por_documentos').post( async (req, res) => { - try { - const docs = Array.isArray(req.body?.docs) ? req.body.docs : []; - const sql = 'SELECT public.find_usuarios_por_documentos($1::jsonb) AS data'; - const { rows } = await pool.query(sql, [JSON.stringify(docs)]); - res.json(rows[0]?.data || {}); - } catch (e) { - console.error(e); - res.status(500).json({ error: 'find_usuarios_por_documentos failed' }); - } -}); - -// POST /api/rpc/import_asistencia { registros: [...], origen?: "AGL_001.txt" } -router.route('/rpc/import_asistencia').post( async (req, res) => { - try { - const registros = Array.isArray(req.body?.registros) ? req.body.registros : []; - const origen = req.body?.origen || null; - const sql = 'SELECT public.import_asistencia($1::jsonb,$2) AS data'; - const { rows } = await pool.query(sql, [JSON.stringify(registros), origen]); - res.json(rows[0]?.data || {}); - } catch (e) { - console.error(e); - res.status(500).json({ error: 'import_asistencia failed' }); - } -}); - -// Consultar datos de asistencia (raw + pares) para un usuario y rango -router.route('/rpc/asistencia_get').post( async (req, res) => { - try { - const { doc, desde, hasta } = req.body || {}; - const sql = 'SELECT public.asistencia_get($1::text,$2::date,$3::date) AS data'; - const { rows } = await pool.query(sql, [doc, desde, hasta]); - res.json(rows[0]?.data || {}); - } catch (e) { - console.error(e); res.status(500).json({ error: 'asistencia_get failed' }); - } -}); - -// Editar un registro crudo y recalcular pares -router.route('/rpc/asistencia_update_raw').post( async (req, res) => { - try { - const { id_raw, fecha, hora, modo } = req.body || {}; - const sql = 'SELECT public.asistencia_update_raw($1::bigint,$2::date,$3::text,$4::text) AS data'; - const { rows } = await pool.query(sql, [id_raw, fecha, hora, modo ?? null]); - res.json(rows[0]?.data || {}); - } catch (e) { - console.error(e); res.status(500).json({ error: 'asistencia_update_raw failed' }); - } -}); - -// Eliminar un registro crudo y recalcular pares -router.route('/rpc/asistencia_delete_raw').post( async (req, res) => { - try { - const { id_raw } = req.body || {}; - const sql = 'SELECT public.asistencia_delete_raw($1::bigint) AS data'; - const { rows } = await pool.query(sql, [id_raw]); - res.json(rows[0]?.data || {}); - } catch (e) { - console.error(e); res.status(500).json({ error: 'asistencia_delete_raw failed' }); - } -}); - - -// ---------------------------------------------------------- -// API Reportes -// ---------------------------------------------------------- - -// POST /api/rpc/report_tickets { year } -router.route('/rpc/report_tickets').post( async (req, res) => { - try { - const y = parseInt(req.body?.year ?? req.query?.year, 10); - const year = (Number.isFinite(y) && y >= 2000 && y <= 2100) - ? y - : (new Date()).getFullYear(); - - const { rows } = await pool.query( - 'SELECT public.report_tickets_year($1::int) AS j', [year] - ); - res.json(rows[0].j); - } catch (e) { - console.error('report_tickets error:', e); - res.status(500).json({ - error: 'report_tickets failed', - message: e.message, detail: e.detail, where: e.where, code: e.code - }); - } -}); - -// POST /api/rpc/report_asistencia { desde: 'YYYY-MM-DD', hasta: 'YYYY-MM-DD' } -router.route('/rpc/report_asistencia').post( async (req, res) => { - try { - let { desde, hasta } = req.body || {}; - // defaults si vienen vacíos/invalidos - const re = /^\d{4}-\d{2}-\d{2}$/; - if (!re.test(desde) || !re.test(hasta)) { - const end = new Date(); - const start = new Date(end); start.setDate(end.getDate()-30); - desde = start.toISOString().slice(0,10); - hasta = end.toISOString().slice(0,10); - } - - const { rows } = await pool.query( - 'SELECT public.report_asistencia($1::date,$2::date) AS j', [desde, hasta] - ); - res.json(rows[0].j); - } catch (e) { - console.error('report_asistencia error:', e); - res.status(500).json({ - error: 'report_asistencia failed', - message: e.message, detail: e.detail, where: e.where, code: e.code - }); - } -}); - -// ---------------------------------------------------------- -// API Compras y Gastos -// ---------------------------------------------------------- - -// Guardar (insert/update) -router.route('/rpc/save_compra').post( async (req, res) => { - try { - const { id_compra, id_proveedor, fec_compra, detalles } = req.body || {}; - const sql = 'SELECT * FROM public.save_compra($1::int,$2::int,$3::timestamptz,$4::jsonb)'; - const args = [id_compra ?? null, id_proveedor, fec_compra ? new Date(fec_compra) : null, JSON.stringify(detalles)]; - const { rows } = await pool.query(sql, args); - res.json(rows[0]); // { id_compra, total } - } catch (e) { - console.error('save_compra error:', e); - res.status(500).json({ error: 'save_compra failed', message: e.message, detail: e.detail, where: e.where, code: e.code }); - } -}); - - -// Obtener para editar -router.route('/rpc/get_compra').post( async (req, res) => { - try { - const { id_compra } = req.body || {}; - const sql = `SELECT public.get_compra($1::int) AS data`; - const { rows } = await pool.query(sql, [id_compra]); - res.json(rows[0]?.data || {}); - } catch (e) { - console.error(e); res.status(500).json({ error: 'get_compra failed' }); - } -}); - -// Eliminar -router.route('/rpc/delete_compra').post( async (req, res) => { - try { - const { id_compra } = req.body || {}; - await pool.query(`SELECT public.delete_compra($1::int)`, [id_compra]); - res.json({ ok: true }); - } catch (e) { - console.error(e); res.status(500).json({ error: 'delete_compra failed' }); - } -}); - - -// POST /api/rpc/report_gastos { year: 2025 } -router.route('/rpc/report_gastos').post( async (req, res) => { - try { - const year = parseInt(req.body?.year ?? new Date().getFullYear(), 10); - const { rows } = await pool.query( - 'SELECT public.report_gastos($1::int) AS j', [year] - ); - res.json(rows[0].j); - } catch (e) { - console.error('report_gastos error:', e); - res.status(500).json({ - error: 'report_gastos failed', - message: e.message, detail: e.detail, code: e.code - }); - } -}); - - -export default router; \ No newline at end of file diff --git a/services/auth/src/db/dumpl_manso_250905.sql b/services/auth/src/db/dumpl_manso_250905.sql deleted file mode 100644 index e58a318..0000000 --- a/services/auth/src/db/dumpl_manso_250905.sql +++ /dev/null @@ -1,3071 +0,0 @@ --- --- PostgreSQL database dump --- - -\restrict londHmqT4llS8Wof4ZnceO2dyFhn4jiR5xbaszMgZpMczgr6aVW6xQJxeUdqJwa - --- Dumped from database version 16.10 (Debian 16.10-1.pgdg13+1) --- Dumped by pg_dump version 16.10 (Debian 16.10-1.pgdg13+1) - -SET statement_timeout = 0; -SET lock_timeout = 0; -SET idle_in_transaction_session_timeout = 0; -SET client_encoding = 'UTF8'; -SET standard_conforming_strings = on; -SELECT pg_catalog.set_config('search_path', '', false); -SET check_function_bodies = false; -SET xmloption = content; -SET client_min_messages = warning; -SET row_security = off; - --- --- Name: asistencia_delete_raw(bigint, text); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION public.asistencia_delete_raw(p_id_raw bigint, p_tz text DEFAULT 'America/Montevideo'::text) RETURNS jsonb - LANGUAGE plpgsql - AS $$ -DECLARE - v_id_usuario INT; - v_ts TIMESTAMPTZ; - v_t0 TIMESTAMPTZ; - v_t1 TIMESTAMPTZ; - v_del_raw INT; - v_del INT; - v_ins INT; -BEGIN - SELECT id_usuario, ts INTO v_id_usuario, v_ts - FROM public.asistencia_raw WHERE id_raw = p_id_raw; - IF v_id_usuario IS NULL THEN - RETURN jsonb_build_object('deleted',0,'msg','id_raw inexistente'); - END IF; - - v_t0 := v_ts - INTERVAL '1 day'; - v_t1 := v_ts + INTERVAL '1 day'; - - -- borrar raw - DELETE FROM public.asistencia_raw WHERE id_raw = p_id_raw; - GET DIAGNOSTICS v_del_raw = ROW_COUNT; - - -- recomputar pares en ventana - WITH tl AS ( - SELECT ar.ts, - ROW_NUMBER() OVER (ORDER BY ar.ts) AS rn - FROM public.asistencia_raw ar - WHERE ar.id_usuario = v_id_usuario - AND ar.ts BETWEEN v_t0 AND v_t1 - ), - ready AS ( - SELECT (t1.ts AT TIME ZONE p_tz)::date AS fecha, - t1.ts AS desde, - t2.ts AS hasta, - EXTRACT(EPOCH FROM (t2.ts - t1.ts))/60.0 AS dur_min - FROM tl t1 - JOIN tl t2 ON t2.rn = t1.rn + 1 - WHERE (t1.rn % 2) = 1 AND t2.ts > t1.ts - ), - del AS ( - DELETE FROM public.asistencia_intervalo ai - WHERE ai.id_usuario = v_id_usuario - AND (ai.desde BETWEEN v_t0 AND v_t1 OR ai.hasta BETWEEN v_t0 AND v_t1) - RETURNING 1 - ), - ins AS ( - INSERT INTO public.asistencia_intervalo (id_usuario, fecha, desde, hasta, dur_min, origen) - SELECT v_id_usuario, r.fecha, r.desde, r.hasta, r.dur_min, 'delete_adjust' - FROM ready r - ON CONFLICT (id_usuario, desde, hasta) DO NOTHING - RETURNING 1 - ) - SELECT (SELECT COUNT(*) FROM del), (SELECT COUNT(*) FROM ins) INTO v_del, v_ins; - - RETURN jsonb_build_object('deleted',v_del_raw,'deleted_pairs',v_del,'inserted_pairs',v_ins); -END; -$$; - - -ALTER FUNCTION public.asistencia_delete_raw(p_id_raw bigint, p_tz text) OWNER TO manso; - --- --- Name: asistencia_get(text, date, date, text); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION public.asistencia_get(p_doc text, p_desde date, p_hasta date, p_tz text DEFAULT 'America/Montevideo'::text) RETURNS jsonb - LANGUAGE sql - AS $$ -WITH u AS ( - SELECT id_usuario, documento, nombre, apellido - FROM public.usuarios - WHERE regexp_replace(documento,'^\s*0+','','g') = regexp_replace(p_doc,'^\s*0+','','g') - LIMIT 1 -), -r AS ( - SELECT ar.id_raw, - (ar.ts AT TIME ZONE p_tz)::date AS fecha, - to_char(ar.ts AT TIME ZONE p_tz,'HH24:MI:SS') AS hora, - COALESCE(ar.modo,'') AS modo, - COALESCE(ar.origen,'') AS origen, - ar.ts - FROM public.asistencia_raw ar - JOIN u USING (id_usuario) - WHERE (ar.ts AT TIME ZONE p_tz)::date BETWEEN p_desde AND p_hasta -), -i AS ( - SELECT ai.id_intervalo, - ai.fecha, - to_char(ai.desde AT TIME ZONE p_tz,'HH24:MI:SS') AS desde_hora, - to_char(ai.hasta AT TIME ZONE p_tz,'HH24:MI:SS') AS hasta_hora, - ai.dur_min - FROM public.asistencia_intervalo ai - JOIN u USING (id_usuario) - WHERE ai.fecha BETWEEN p_desde AND p_hasta -) -SELECT jsonb_build_object( - 'usuario', (SELECT to_jsonb(u.*) FROM u), - 'raw', COALESCE((SELECT jsonb_agg(to_jsonb(r.*) ORDER BY r.ts) FROM r),'[]'::jsonb), - 'intervalos', COALESCE((SELECT jsonb_agg(to_jsonb(i.*) ORDER BY i.fecha, i.id_intervalo) FROM i),'[]'::jsonb) -); -$$; - - -ALTER FUNCTION public.asistencia_get(p_doc text, p_desde date, p_hasta date, p_tz text) OWNER TO manso; - --- --- Name: asistencia_update_raw(bigint, date, text, text, text); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION public.asistencia_update_raw(p_id_raw bigint, p_fecha date, p_hora text, p_modo text, p_tz text DEFAULT 'America/Montevideo'::text) RETURNS jsonb - LANGUAGE plpgsql - AS $$ -DECLARE - v_id_usuario INT; - v_ts_old TIMESTAMPTZ; - v_ts_new TIMESTAMPTZ; - v_t0 TIMESTAMPTZ; - v_t1 TIMESTAMPTZ; - v_del INT; - v_ins INT; -BEGIN - -- leer estado previo - SELECT id_usuario, ts INTO v_id_usuario, v_ts_old - FROM public.asistencia_raw WHERE id_raw = p_id_raw; - IF v_id_usuario IS NULL THEN - RETURN jsonb_build_object('updated',0,'msg','id_raw inexistente'); - END IF; - - -- construir ts nuevo - v_ts_new := make_timestamptz( - EXTRACT(YEAR FROM p_fecha)::INT, - EXTRACT(MONTH FROM p_fecha)::INT, - EXTRACT(DAY FROM p_fecha)::INT, - split_part(p_hora,':',1)::INT, - split_part(p_hora,':',2)::INT, - COALESCE(NULLIF(split_part(p_hora,':',3),''), '0')::INT, - p_tz); - - -- aplicar update - UPDATE public.asistencia_raw - SET ts = v_ts_new, - modo = COALESCE(p_modo, modo) - WHERE id_raw = p_id_raw; - - -- ventana de recálculo - v_t0 := LEAST(v_ts_old, v_ts_new) - INTERVAL '1 day'; - v_t1 := GREATEST(v_ts_old, v_ts_new) + INTERVAL '1 day'; - - -- recomputar pares en la ventana: borrar los del rango y reinsertar - WITH tl AS ( - SELECT ar.ts, - ROW_NUMBER() OVER (ORDER BY ar.ts) AS rn - FROM public.asistencia_raw ar - WHERE ar.id_usuario = v_id_usuario - AND ar.ts BETWEEN v_t0 AND v_t1 - ), - ready AS ( - SELECT (t1.ts AT TIME ZONE p_tz)::date AS fecha, - t1.ts AS desde, - t2.ts AS hasta, - EXTRACT(EPOCH FROM (t2.ts - t1.ts))/60.0 AS dur_min - FROM tl t1 - JOIN tl t2 ON t2.rn = t1.rn + 1 - WHERE (t1.rn % 2) = 1 AND t2.ts > t1.ts - ), - del AS ( - DELETE FROM public.asistencia_intervalo ai - WHERE ai.id_usuario = v_id_usuario - AND (ai.desde BETWEEN v_t0 AND v_t1 OR ai.hasta BETWEEN v_t0 AND v_t1) - RETURNING 1 - ), - ins AS ( - INSERT INTO public.asistencia_intervalo (id_usuario, fecha, desde, hasta, dur_min, origen) - SELECT v_id_usuario, r.fecha, r.desde, r.hasta, r.dur_min, 'edit_manual' - FROM ready r - ON CONFLICT (id_usuario, desde, hasta) DO NOTHING - RETURNING 1 - ) - SELECT (SELECT COUNT(*) FROM del), (SELECT COUNT(*) FROM ins) INTO v_del, v_ins; - - RETURN jsonb_build_object('updated',1,'deleted_pairs',v_del,'inserted_pairs',v_ins); -END; -$$; - - -ALTER FUNCTION public.asistencia_update_raw(p_id_raw bigint, p_fecha date, p_hora text, p_modo text, p_tz text) OWNER TO manso; - --- --- Name: delete_compra(integer); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION public.delete_compra(p_id_compra integer) RETURNS void - LANGUAGE plpgsql - AS $$ -BEGIN - DELETE FROM public.deta_comp_materias WHERE id_compra = p_id_compra; - DELETE FROM public.deta_comp_producto WHERE id_compra = p_id_compra; - DELETE FROM public.compras WHERE id_compra = p_id_compra; -END; -$$; - - -ALTER FUNCTION public.delete_compra(p_id_compra integer) OWNER TO manso; - --- --- Name: f_abrir_comanda(integer); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION public.f_abrir_comanda(p_id integer) RETURNS jsonb - LANGUAGE plpgsql - AS $$ -DECLARE r jsonb; -BEGIN - UPDATE public.comandas - SET estado = 'abierta', - fec_cierre = NULL - WHERE id_comanda = p_id; - - IF NOT FOUND THEN - RETURN NULL; - END IF; - - SELECT to_jsonb(v) INTO r - FROM public.v_comandas_resumen v - WHERE v.id_comanda = p_id; - - RETURN r; -END; -$$; - - -ALTER FUNCTION public.f_abrir_comanda(p_id integer) OWNER TO manso; - --- --- Name: f_cerrar_comanda(integer); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION public.f_cerrar_comanda(p_id integer) RETURNS jsonb - LANGUAGE plpgsql - AS $$ -DECLARE r jsonb; -BEGIN - UPDATE public.comandas - SET estado = 'cerrada', - fec_cierre = COALESCE(fec_cierre, NOW()) - WHERE id_comanda = p_id; - - IF NOT FOUND THEN - RETURN NULL; - END IF; - - SELECT to_jsonb(v) INTO r - FROM public.v_comandas_resumen v - WHERE v.id_comanda = p_id; - - RETURN r; -END; -$$; - - -ALTER FUNCTION public.f_cerrar_comanda(p_id integer) OWNER TO manso; - --- --- Name: f_comanda_detalle_json(integer); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION public.f_comanda_detalle_json(p_id_comanda integer) RETURNS jsonb - LANGUAGE sql - AS $$ -WITH base AS ( - SELECT - c.id_comanda, - c.fec_creacion, - c.estado, - c.observaciones, - u.id_usuario, - u.nombre AS usuario_nombre, - u.apellido AS usuario_apellido, - m.id_mesa, - m.numero AS mesa_numero, - m.apodo AS mesa_apodo, - d.id_producto, - p.nombre AS producto_nombre, - d.cantidad, - d.pre_unitario, - (d.cantidad * d.pre_unitario) AS subtotal - FROM public.comandas c - JOIN public.usuarios u ON u.id_usuario = c.id_usuario - JOIN public.mesas m ON m.id_mesa = c.id_mesa - LEFT JOIN public.deta_comandas d ON d.id_comanda = c.id_comanda - LEFT JOIN public.productos p ON p.id_producto = d.id_producto - WHERE c.id_comanda = p_id_comanda -), -hdr AS ( - -- 1 sola fila con los datos de cabecera - SELECT DISTINCT - id_comanda, fec_creacion, estado, observaciones, - id_usuario, usuario_nombre, usuario_apellido, - id_mesa, mesa_numero, mesa_apodo - FROM base -), -agg_items AS ( - SELECT - COALESCE( - jsonb_agg( - jsonb_build_object( - 'producto_id', b.id_producto, - 'producto', b.producto_nombre, - 'cantidad', b.cantidad, - 'pre_unitario', b.pre_unitario, - 'subtotal', b.subtotal - ) - ORDER BY b.producto_nombre NULLS LAST - ) FILTER (WHERE b.id_producto IS NOT NULL), - '[]'::jsonb - ) AS items - FROM base b -), -tot AS ( - SELECT - COUNT(*) FILTER (WHERE id_producto IS NOT NULL) AS items, - COALESCE(SUM(subtotal), 0)::numeric AS total - FROM base -) -SELECT - CASE - WHEN EXISTS (SELECT 1 FROM hdr) THEN - jsonb_build_object( - 'id_comanda', h.id_comanda, - 'fec_creacion', h.fec_creacion, - 'estado', h.estado, - 'observaciones',h.observaciones, - 'usuario', jsonb_build_object( - 'id_usuario', h.id_usuario, - 'nombre', h.usuario_nombre, - 'apellido', h.usuario_apellido - ), - 'mesa', jsonb_build_object( - 'id_mesa', h.id_mesa, - 'numero', h.mesa_numero, - 'apodo', h.mesa_apodo - ), - 'items', i.items, - 'totales', jsonb_build_object( - 'items', t.items, - 'total', t.total - ) - ) - ELSE NULL - END -FROM hdr h, agg_items i, tot t; -$$; - - -ALTER FUNCTION public.f_comanda_detalle_json(p_id_comanda integer) OWNER TO manso; - --- --- Name: f_comanda_detalle_rows(integer); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION public.f_comanda_detalle_rows(p_id_comanda integer) RETURNS TABLE(id_comanda integer, fec_creacion timestamp without time zone, estado text, observaciones text, id_usuario integer, usuario_nombre text, usuario_apellido text, id_mesa integer, mesa_numero integer, mesa_apodo text, producto_id integer, producto_nombre text, cantidad numeric, pre_unitario numeric, subtotal numeric, items integer, total numeric) - LANGUAGE sql - AS $$ -WITH base AS ( - SELECT - c.id_comanda, c.fec_creacion, c.estado, c.observaciones, - u.id_usuario, u.nombre AS usuario_nombre, u.apellido AS usuario_apellido, - m.id_mesa, m.numero AS mesa_numero, m.apodo AS mesa_apodo, - d.id_producto, p.nombre AS producto_nombre, - d.cantidad, d.pre_unitario, - (d.cantidad * d.pre_unitario) AS subtotal - FROM public.comandas c - JOIN public.usuarios u ON u.id_usuario = c.id_usuario - JOIN public.mesas m ON m.id_mesa = c.id_mesa - LEFT JOIN public.deta_comandas d ON d.id_comanda = c.id_comanda - LEFT JOIN public.productos p ON p.id_producto = d.id_producto - WHERE c.id_comanda = p_id_comanda -), -tot AS ( - SELECT - COUNT(*) FILTER (WHERE id_producto IS NOT NULL) AS items, - COALESCE(SUM(subtotal), 0) AS total - FROM base -) -SELECT - b.id_comanda, b.fec_creacion, b.estado, b.observaciones, - b.id_usuario, b.usuario_nombre, b.usuario_apellido, - b.id_mesa, b.mesa_numero, b.mesa_apodo, - b.id_producto, b.producto_nombre, - b.cantidad, b.pre_unitario, b.subtotal, - t.items, t.total -FROM base b CROSS JOIN tot t -ORDER BY b.producto_nombre NULLS LAST; -$$; - - -ALTER FUNCTION public.f_comanda_detalle_rows(p_id_comanda integer) OWNER TO manso; - -SET default_tablespace = ''; - -SET default_table_access_method = heap; - --- --- Name: comandas; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE public.comandas ( - id_comanda integer NOT NULL, - id_usuario integer NOT NULL, - id_mesa integer NOT NULL, - fec_creacion timestamp without time zone DEFAULT now() NOT NULL, - estado text NOT NULL, - observaciones text, - fec_cierre timestamp with time zone, - CONSTRAINT comandas_estado_check CHECK ((estado = ANY (ARRAY['abierta'::text, 'cerrada'::text, 'pagada'::text, 'anulada'::text]))) -); - - -ALTER TABLE public.comandas OWNER TO manso; - --- --- Name: COLUMN comandas.fec_cierre; Type: COMMENT; Schema: public; Owner: manso --- - -COMMENT ON COLUMN public.comandas.fec_cierre IS 'Fecha/hora de cierre de la comanda (NULL si está abierta)'; - - --- --- Name: deta_comandas; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE public.deta_comandas ( - id_det_comanda integer NOT NULL, - id_comanda integer NOT NULL, - id_producto integer NOT NULL, - cantidad numeric(12,3) NOT NULL, - pre_unitario numeric(12,2) NOT NULL, - observaciones text, - CONSTRAINT deta_comandas_cantidad_check CHECK ((cantidad > (0)::numeric)), - CONSTRAINT deta_comandas_pre_unitario_check CHECK ((pre_unitario >= (0)::numeric)) -); - - -ALTER TABLE public.deta_comandas OWNER TO manso; - --- --- Name: mesas; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE public.mesas ( - id_mesa integer NOT NULL, - numero integer NOT NULL, - apodo text NOT NULL, - estado text DEFAULT 'libre'::text NOT NULL, - CONSTRAINT mesas_estado_check CHECK ((estado = ANY (ARRAY['libre'::text, 'ocupada'::text, 'reservada'::text]))) -); - - -ALTER TABLE public.mesas OWNER TO manso; - --- --- Name: usuarios; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE public.usuarios ( - id_usuario integer NOT NULL, - documento text, - img_perfil character varying(255) DEFAULT 'img_perfil.png'::character varying NOT NULL, - nombre text NOT NULL, - apellido text NOT NULL, - correo text, - telefono text, - fec_nacimiento date, - activo boolean DEFAULT true -); - - -ALTER TABLE public.usuarios OWNER TO manso; - --- --- Name: v_comandas_resumen; Type: VIEW; Schema: public; Owner: manso --- - -CREATE VIEW public.v_comandas_resumen AS - WITH items AS ( - SELECT d.id_comanda, - count(*) AS items, - sum((d.cantidad * d.pre_unitario)) AS total - FROM public.deta_comandas d - GROUP BY d.id_comanda - ) - SELECT c.id_comanda, - c.fec_creacion, - c.estado, - c.observaciones, - u.id_usuario, - u.nombre AS usuario_nombre, - u.apellido AS usuario_apellido, - m.id_mesa, - m.numero AS mesa_numero, - m.apodo AS mesa_apodo, - COALESCE(i.items, (0)::bigint) AS items, - COALESCE(i.total, (0)::numeric) AS total, - c.fec_cierre, - CASE - WHEN (c.fec_cierre IS NOT NULL) THEN round((EXTRACT(epoch FROM (c.fec_cierre - (c.fec_creacion)::timestamp with time zone)) / 60.0), 1) - ELSE NULL::numeric - END AS duracion_min - FROM (((public.comandas c - JOIN public.usuarios u ON ((u.id_usuario = c.id_usuario))) - JOIN public.mesas m ON ((m.id_mesa = c.id_mesa))) - LEFT JOIN items i ON ((i.id_comanda = c.id_comanda))); - - -ALTER VIEW public.v_comandas_resumen OWNER TO manso; - --- --- Name: f_comandas_resumen(text, integer); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION public.f_comandas_resumen(p_estado text DEFAULT NULL::text, p_limit integer DEFAULT 200) RETURNS SETOF public.v_comandas_resumen - LANGUAGE sql - AS $$ - SELECT * - FROM public.v_comandas_resumen - WHERE (p_estado IS NULL OR estado = p_estado) - ORDER BY id_comanda DESC - LIMIT p_limit; -$$; - - -ALTER FUNCTION public.f_comandas_resumen(p_estado text, p_limit integer) OWNER TO manso; - --- --- Name: find_usuarios_por_documentos(jsonb); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION public.find_usuarios_por_documentos(p_docs jsonb) RETURNS jsonb - LANGUAGE sql - AS $$ -WITH docs AS ( - SELECT DISTINCT - regexp_replace(value::text, '^\s*0+', '', 'g') AS doc_clean, - value::text AS original - FROM jsonb_array_elements_text(COALESCE(p_docs,'[]')) -), -rows AS ( - SELECT d.original AS documento, - u.nombre, - u.apellido, - (u.id_usuario IS NOT NULL) AS found - FROM docs d - LEFT JOIN public.usuarios u - ON regexp_replace(u.documento, '^\s*0+', '', 'g') = d.doc_clean -) -SELECT COALESCE( - jsonb_object_agg( - documento, - jsonb_build_object( - 'nombre', COALESCE(nombre, ''), - 'apellido', COALESCE(apellido, ''), - 'found', found - ) - ), - '{}'::jsonb -) -FROM rows; -$$; - - -ALTER FUNCTION public.find_usuarios_por_documentos(p_docs jsonb) OWNER TO manso; - --- --- Name: get_compra(integer); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION public.get_compra(p_id_compra integer) RETURNS jsonb - LANGUAGE sql - AS $$ -WITH cab AS ( - SELECT c.id_compra, c.id_proveedor, c.fec_compra, c.total - FROM public.compras c - WHERE c.id_compra = p_id_compra -), -dm AS ( - SELECT 'MAT'::text AS tipo, d.id_mat_prima AS id, - d.cantidad, d.pre_unitario AS precio - FROM public.deta_comp_materias d WHERE d.id_compra = p_id_compra -), -dp AS ( - SELECT 'PROD'::text AS tipo, d.id_producto AS id, - d.cantidad, d.pre_unitario AS precio - FROM public.deta_comp_producto d WHERE d.id_compra = p_id_compra -), -det AS ( - SELECT jsonb_agg(to_jsonb(x.*)) AS detalles - FROM ( - SELECT * FROM dm - UNION ALL - SELECT * FROM dp - ) x -) -SELECT jsonb_build_object( - 'id_compra', (SELECT id_compra FROM cab), - 'id_proveedor',(SELECT id_proveedor FROM cab), - 'fec_compra', to_char((SELECT fec_compra FROM cab),'YYYY-MM-DD HH24:MI:SS'), - 'total', (SELECT total FROM cab), - 'detalles', COALESCE((SELECT detalles FROM det),'[]'::jsonb) -); -$$; - - -ALTER FUNCTION public.get_compra(p_id_compra integer) OWNER TO manso; - --- --- Name: get_materia_prima(integer); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION public.get_materia_prima(p_id integer) RETURNS jsonb - LANGUAGE sql - AS $$ -SELECT jsonb_build_object( - 'materia', to_jsonb(mp), - 'proveedores', COALESCE( - ( - SELECT jsonb_agg( - jsonb_build_object( - 'id_proveedor', pr.id_proveedor, - 'raz_social', pr.raz_social, - 'rut', pr.rut, - 'contacto', pr.contacto, - 'direccion', pr.direccion - ) - ) - FROM public.prov_mate_prima pmp - JOIN public.proveedores pr ON pr.id_proveedor = pmp.id_proveedor - WHERE pmp.id_mat_prima = mp.id_mat_prima - ), - '[]'::jsonb - ) -) -FROM public.mate_primas mp -WHERE mp.id_mat_prima = p_id; -$$; - - -ALTER FUNCTION public.get_materia_prima(p_id integer) OWNER TO manso; - --- --- Name: get_producto(integer); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION public.get_producto(p_id integer) RETURNS jsonb - LANGUAGE sql - AS $$ -SELECT jsonb_build_object( - 'producto', to_jsonb(p), -- el registro completo del producto en JSONB - 'receta', COALESCE( - ( - SELECT jsonb_agg( - jsonb_build_object( - 'id_mat_prima', rp.id_mat_prima, - 'qty_por_unidad', rp.qty_por_unidad, - 'nombre', mp.nombre, - 'unidad', mp.unidad - ) - ) - FROM receta_producto rp - LEFT JOIN mate_primas mp USING (id_mat_prima) - WHERE rp.id_producto = p.id_producto - ), - '[]'::jsonb - ) -) -FROM productos p -WHERE p.id_producto = p_id; -$$; - - -ALTER FUNCTION public.get_producto(p_id integer) OWNER TO manso; - --- --- Name: import_asistencia(jsonb, text, text); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION public.import_asistencia(p_registros jsonb, p_origen text, p_tz text DEFAULT 'America/Montevideo'::text) RETURNS jsonb - LANGUAGE plpgsql - AS $_$ -DECLARE - v_ins_raw INT; - v_ins_pairs INT; - v_miss JSONB; -BEGIN - WITH - -- 1) JSON -> filas - j AS ( - SELECT - regexp_replace(elem->>'doc','^\s*0+','','g')::TEXT AS doc_clean, - (elem->>'isoDate')::DATE AS d, - elem->>'time' AS time_str, - NULLIF(elem->>'mode','') AS modo - FROM jsonb_array_elements(COALESCE(p_registros,'[]')) elem - ), - -- 2) Vincular a usuarios - u AS ( - SELECT j.*, u.id_usuario - FROM j - LEFT JOIN public.usuarios u - ON regexp_replace(u.documento,'^\s*0+','','g') = j.doc_clean - ), - -- 3) Documentos faltantes - miss AS ( - SELECT jsonb_agg(doc_clean) AS missing - FROM u WHERE id_usuario IS NULL - ), - -- 4) TS determinista en TZ del negocio - parsed AS ( - SELECT - u.id_usuario, - u.modo, - make_timestamptz( - EXTRACT(YEAR FROM u.d)::INT, - EXTRACT(MONTH FROM u.d)::INT, - EXTRACT(DAY FROM u.d)::INT, - split_part(u.time_str,':',1)::INT, - split_part(u.time_str,':',2)::INT, - COALESCE(NULLIF(split_part(u.time_str,':',3),''),'0')::INT, - p_tz - ) AS ts_calc - FROM u - WHERE u.id_usuario IS NOT NULL - ), - -- 5) Ventana por usuario (±1 día de lo importado) - win AS ( - SELECT id_usuario, - (MIN(ts_calc) - INTERVAL '1 day') AS t0, - (MAX(ts_calc) + INTERVAL '1 day') AS t1 - FROM parsed - GROUP BY id_usuario - ), - -- 6) Lo existente en BD dentro de la ventana - existing AS ( - SELECT ar.id_usuario, ar.ts - FROM public.asistencia_raw ar - JOIN win w ON w.id_usuario = ar.id_usuario - AND ar.ts BETWEEN w.t0 AND w.t1 - ), - -- 7) CANDIDATE = existente ∪ archivo (sin duplicados) - candidate AS ( - SELECT id_usuario, ts FROM existing - UNION -- ¡clave para evitar doble click! - SELECT id_usuario, ts_calc AS ts FROM parsed - ), - -- 8) Paridad previa (cuántas marcas había ANTES de la ventana) - before_cnt AS ( - SELECT w.id_usuario, COUNT(*)::int AS cnt - FROM win w - JOIN public.asistencia_raw ar - ON ar.id_usuario = w.id_usuario - AND ar.ts < w.t0 - GROUP BY w.id_usuario - ), - -- 9) Línea de tiempo candidata y pares (1→2, 3→4…), jornada = día local del inicio - timeline AS ( - SELECT - c.id_usuario, - c.ts, - ROW_NUMBER() OVER (PARTITION BY c.id_usuario ORDER BY c.ts) AS rn - FROM candidate c - ), - ready AS ( - SELECT - t1.id_usuario, - (t1.ts AT TIME ZONE p_tz)::date AS fecha, - t1.ts AS desde, - t2.ts AS hasta, - EXTRACT(EPOCH FROM (t2.ts - t1.ts))/60.0 AS dur_min - FROM timeline t1 - JOIN timeline t2 - ON t2.id_usuario = t1.id_usuario - AND t2.rn = t1.rn + 1 - LEFT JOIN before_cnt b ON b.id_usuario = t1.id_usuario - WHERE ((COALESCE(b.cnt,0) + t1.rn) % 2) = 1 -- t1 es IN global - AND t2.ts > t1.ts - ), - -- 10) INSERT crudo (dedupe) - ins_raw AS ( - INSERT INTO public.asistencia_raw (id_usuario, ts, modo, origen) - SELECT id_usuario, ts_calc, - NULLIF(modo,'')::text, -- puede quedar NULL para auto-etiquetado - p_origen - FROM parsed - ON CONFLICT (id_usuario, ts) DO NOTHING - RETURNING 1 - ), - -- 11) Auto-etiquetar IN/OUT en BD para filas con modo vacío/'1' (tras insertar) - before_cnt2 AS ( - SELECT w.id_usuario, COUNT(*)::int AS cnt - FROM win w - JOIN public.asistencia_raw ar - ON ar.id_usuario = w.id_usuario - AND ar.ts < w.t0 - GROUP BY w.id_usuario - ), - tl2 AS ( - SELECT - ar.id_usuario, ar.ts, - ROW_NUMBER() OVER (PARTITION BY ar.id_usuario ORDER BY ar.ts) AS rn - FROM public.asistencia_raw ar - JOIN win w ON w.id_usuario = ar.id_usuario - AND ar.ts BETWEEN w.t0 AND w.t1 - ), - label2 AS ( - SELECT - t.id_usuario, - t.ts, - CASE WHEN ((COALESCE(b.cnt,0) + t.rn) % 2) = 1 THEN 'IN' ELSE 'OUT' END AS new_mode - FROM tl2 t - LEFT JOIN before_cnt2 b ON b.id_usuario = t.id_usuario - ), - set_mode AS ( - UPDATE public.asistencia_raw ar - SET modo = l.new_mode - FROM label2 l - WHERE ar.id_usuario = l.id_usuario - AND ar.ts = l.ts - AND (ar.modo IS NULL OR btrim(ar.modo) = '' OR ar.modo ~ '^\s*1\s*$') - RETURNING 1 - ), - -- 12) INSERT pares (dedupe) calculados desde CANDIDATE (ya tiene todo el contexto) - ins_pairs AS ( - INSERT INTO public.asistencia_intervalo (id_usuario, fecha, desde, hasta, dur_min, origen) - SELECT id_usuario, fecha, desde, hasta, dur_min, p_origen - FROM ready - ON CONFLICT (id_usuario, desde, hasta) DO NOTHING - RETURNING 1 - ) - SELECT - (SELECT COUNT(*) FROM ins_raw), - (SELECT COUNT(*) FROM ins_pairs), - (SELECT COALESCE(missing,'[]'::jsonb) FROM miss) - INTO v_ins_raw, v_ins_pairs, v_miss; - - RETURN jsonb_build_object( - 'inserted_raw', v_ins_raw, - 'inserted_pairs', v_ins_pairs, - 'missing_docs', v_miss - ); -END; -$_$; - - -ALTER FUNCTION public.import_asistencia(p_registros jsonb, p_origen text, p_tz text) OWNER TO manso; - --- --- Name: report_asistencia(date, date); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION public.report_asistencia(p_desde date, p_hasta date) RETURNS TABLE(documento text, nombre text, apellido text, fecha date, desde_hora text, hasta_hora text, dur_min numeric) - LANGUAGE sql - AS $$ - SELECT - u.documento, u.nombre, u.apellido, - ai.fecha, - to_char(ai.desde AT TIME ZONE 'America/Montevideo','HH24:MI:SS') AS desde_hora, - to_char(ai.hasta AT TIME ZONE 'America/Montevideo','HH24:MI:SS') AS hasta_hora, - ai.dur_min - FROM public.asistencia_intervalo ai - JOIN public.usuarios u USING (id_usuario) - WHERE ai.fecha BETWEEN p_desde AND p_hasta - ORDER BY u.documento, ai.fecha, ai.desde; -$$; - - -ALTER FUNCTION public.report_asistencia(p_desde date, p_hasta date) OWNER TO manso; - --- --- Name: report_gastos(integer); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION public.report_gastos(p_year integer) RETURNS jsonb - LANGUAGE sql STABLE - AS $$ -WITH mdata AS ( - SELECT date_trunc('month', c.fec_compra)::date AS m, - SUM(c.total)::numeric AS importe - FROM public.compras c - WHERE EXTRACT(YEAR FROM c.fec_compra) = p_year - GROUP BY 1 -), -mm AS ( - SELECT EXTRACT(MONTH FROM m)::int AS mes, importe - FROM mdata -) -SELECT jsonb_build_object( - 'year', p_year, - 'total', COALESCE((SELECT SUM(importe) FROM mdata), 0), - 'avg', COALESCE((SELECT AVG(importe) FROM mdata), 0), - 'months', - (SELECT jsonb_agg( - jsonb_build_object( - 'mes', gs, - 'nombre', to_char(to_date(gs::text,'MM'),'Mon'), - 'importe', COALESCE(mm.importe,0) - ) - ORDER BY gs - ) - FROM generate_series(1,12) gs - LEFT JOIN mm ON mm.mes = gs) -); -$$; - - -ALTER FUNCTION public.report_gastos(p_year integer) OWNER TO manso; - --- --- Name: report_tickets_year(integer, text); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION public.report_tickets_year(p_year integer, p_tz text DEFAULT 'America/Montevideo'::text) RETURNS jsonb - LANGUAGE sql STABLE - AS $$ -WITH bounds AS ( - SELECT - make_timestamp(p_year, 1, 1, 0,0,0) AS d0, - make_timestamp(p_year+1, 1, 1, 0,0,0) AS d1, - make_timestamptz(p_year, 1, 1, 0,0,0, p_tz) AS t0, - make_timestamptz(p_year+1, 1, 1, 0,0,0, p_tz) AS t1 -), -base AS ( - SELECT - c.id_comanda, - CASE WHEN c.fec_cierre IS NOT NULL - THEN (c.fec_cierre AT TIME ZONE p_tz) - ELSE c.fec_creacion - END AS fec_local, - v.total - FROM public.comandas c - JOIN public.vw_ticket_total v ON v.id_comanda = c.id_comanda - JOIN bounds b ON TRUE - WHERE - (c.fec_cierre IS NOT NULL AND c.fec_cierre >= b.t0 AND c.fec_cierre < b.t1) - OR - (c.fec_cierre IS NULL AND c.fec_creacion >= b.d0 AND c.fec_creacion < b.d1) -), -m AS ( - SELECT - EXTRACT(MONTH FROM fec_local)::int AS mes, - COUNT(*)::int AS cant, - SUM(total)::numeric AS importe, - AVG(total)::numeric AS avg - FROM base - GROUP BY 1 -), -ytd AS ( - SELECT COUNT(*)::int AS total_ytd, - AVG(total)::numeric AS avg_ticket, - SUM(total)::numeric AS to_date - FROM base -) -SELECT jsonb_build_object( - 'year', p_year, - 'total_ytd', (SELECT total_ytd FROM ytd), - 'avg_ticket', (SELECT avg_ticket FROM ytd), - 'to_date', (SELECT to_date FROM ytd), - 'months', - (SELECT jsonb_agg( - jsonb_build_object( - 'mes', mes, - 'nombre', to_char(to_date(mes::text,'MM'),'Mon'), - 'cant', cant, - 'importe', importe, - 'avg', avg - ) - ORDER BY mes - ) - FROM m) -); -$$; - - -ALTER FUNCTION public.report_tickets_year(p_year integer, p_tz text) OWNER TO manso; - --- --- Name: save_compra(integer, integer, timestamp with time zone, jsonb); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION public.save_compra(p_id_compra integer, p_id_proveedor integer, p_fec_compra timestamp with time zone, p_detalles jsonb) RETURNS TABLE(id_compra integer, total numeric) - LANGUAGE plpgsql - AS $$ -DECLARE - v_id INT; - v_total numeric := 0; -BEGIN - IF COALESCE(jsonb_array_length(p_detalles),0) = 0 THEN - RAISE EXCEPTION 'No hay renglones en la compra'; - END IF; - - -- Cabecera (insert/update) - IF p_id_compra IS NULL THEN - INSERT INTO public.compras (id_proveedor, fec_compra, total) - VALUES (p_id_proveedor, COALESCE(p_fec_compra, now()), 0) - RETURNING public.compras.id_compra INTO v_id; - ELSE - UPDATE public.compras c - SET id_proveedor = p_id_proveedor, - fec_compra = COALESCE(p_fec_compra, c.fec_compra) - WHERE c.id_compra = p_id_compra - RETURNING c.id_compra INTO v_id; - - -- Reemplazamos los renglones - DELETE FROM public.deta_comp_materias d WHERE d.id_compra = v_id; - DELETE FROM public.deta_comp_producto p WHERE p.id_compra = v_id; - END IF; - - -- Materias primas (sin CTE: parseo JSON inline) - INSERT INTO public.deta_comp_materias (id_compra, id_mat_prima, cantidad, pre_unitario) - SELECT - v_id, - x.id, - x.cantidad, - x.precio - FROM jsonb_to_recordset(COALESCE(p_detalles, '[]'::jsonb)) - AS x(tipo text, id int, cantidad numeric, precio numeric) - WHERE UPPER(TRIM(x.tipo)) = 'MAT'; - - -- Productos (sin CTE) - INSERT INTO public.deta_comp_producto (id_compra, id_producto, cantidad, pre_unitario) - SELECT - v_id, - x.id, - x.cantidad, - x.precio - FROM jsonb_to_recordset(COALESCE(p_detalles, '[]'::jsonb)) - AS x(tipo text, id int, cantidad numeric, precio numeric) - WHERE UPPER(TRIM(x.tipo)) = 'PROD'; - - -- Recalcular total (calificado) y redondear a ENTERO - SELECT - COALESCE( (SELECT SUM(dcm.cantidad*dcm.pre_unitario) - FROM public.deta_comp_materias dcm - WHERE dcm.id_compra = v_id), 0) - + COALESCE( (SELECT SUM(dcp.cantidad*dcp.pre_unitario) - FROM public.deta_comp_producto dcp - WHERE dcp.id_compra = v_id), 0) - INTO v_total; - - UPDATE public.compras c - SET total = round(v_total, 0) - WHERE c.id_compra = v_id; - - RETURN QUERY SELECT v_id, round(v_total, 0); -END; -$$; - - -ALTER FUNCTION public.save_compra(p_id_compra integer, p_id_proveedor integer, p_fec_compra timestamp with time zone, p_detalles jsonb) OWNER TO manso; - --- --- Name: save_materia_prima(integer, text, text, boolean, jsonb); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION public.save_materia_prima(p_id_mat_prima integer, p_nombre text, p_unidad text, p_activo boolean, p_proveedores jsonb DEFAULT '[]'::jsonb) RETURNS integer - LANGUAGE plpgsql - AS $_$ -DECLARE - v_id INT; -BEGIN - IF p_id_mat_prima IS NULL THEN - INSERT INTO public.mate_primas (nombre, unidad, activo) - VALUES (p_nombre, p_unidad, COALESCE(p_activo, TRUE)) - RETURNING mate_primas.id_mat_prima INTO v_id; - ELSE - UPDATE public.mate_primas mp - SET nombre = p_nombre, - unidad = p_unidad, - activo = COALESCE(p_activo, TRUE) - WHERE mp.id_mat_prima = p_id_mat_prima; - v_id := p_id_mat_prima; - END IF; - - -- Sincronizar proveedores: borrar todos y re-crear a partir de JSONB - DELETE FROM public.prov_mate_prima pmp WHERE pmp.id_mat_prima = v_id; - - INSERT INTO public.prov_mate_prima (id_proveedor, id_mat_prima) - SELECT (e->>0)::INT AS id_proveedor, -- elementos JSON como enteros (array simple) - v_id AS id_mat_prima - FROM jsonb_array_elements(COALESCE(p_proveedores, '[]'::jsonb)) AS e - WHERE (e->>0) ~ '^\d+$'; -- solo enteros - - RETURN v_id; -END; -$_$; - - -ALTER FUNCTION public.save_materia_prima(p_id_mat_prima integer, p_nombre text, p_unidad text, p_activo boolean, p_proveedores jsonb) OWNER TO manso; - --- --- Name: save_producto(integer, text, text, numeric, boolean, integer, jsonb); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION public.save_producto(p_id_producto integer, p_nombre text, p_img_producto text, p_precio numeric, p_activo boolean, p_id_categoria integer, p_receta jsonb DEFAULT '[]'::jsonb) RETURNS integer - LANGUAGE plpgsql - AS $_$ -DECLARE - v_id INT; -BEGIN - IF p_id_producto IS NULL THEN - INSERT INTO public.productos (nombre, img_producto, precio, activo, id_categoria) - VALUES (p_nombre, p_img_producto, p_precio, COALESCE(p_activo, TRUE), p_id_categoria) - RETURNING productos.id_producto INTO v_id; - ELSE - UPDATE public.productos p - SET nombre = p_nombre, - img_producto = p_img_producto, - precio = p_precio, - activo = COALESCE(p_activo, TRUE), - id_categoria = p_id_categoria - WHERE p.id_producto = p_id_producto; - v_id := p_id_producto; - END IF; - - -- Limpia receta actual - DELETE FROM public.receta_producto rp WHERE rp.id_producto = v_id; - - -- Inserta SOLO ítems válidos (id entero positivo y cantidad > 0), redondeo a 3 decimales - INSERT INTO public.receta_producto (id_producto, id_mat_prima, qty_por_unidad) - SELECT - v_id, - (rec->>'id_mat_prima')::INT, - ROUND((rec->>'qty_por_unidad')::NUMERIC, 3) - FROM jsonb_array_elements(COALESCE(p_receta, '[]'::jsonb)) AS rec - WHERE - (rec->>'id_mat_prima') ~ '^\d+$' - AND (rec->>'id_mat_prima')::INT > 0 - AND (rec->>'qty_por_unidad') ~ '^\d+(\.\d+)?$' - AND (rec->>'qty_por_unidad')::NUMERIC > 0; - - RETURN v_id; -END; -$_$; - - -ALTER FUNCTION public.save_producto(p_id_producto integer, p_nombre text, p_img_producto text, p_precio numeric, p_activo boolean, p_id_categoria integer, p_receta jsonb) OWNER TO manso; - --- --- Name: asistencia_intervalo; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE public.asistencia_intervalo ( - id_intervalo bigint NOT NULL, - id_usuario integer NOT NULL, - fecha date NOT NULL, - desde timestamp with time zone NOT NULL, - hasta timestamp with time zone NOT NULL, - dur_min numeric(10,2) NOT NULL, - origen text, - created_at timestamp with time zone DEFAULT now() NOT NULL, - CONSTRAINT chk_ai_orden CHECK ((hasta > desde)) -); - - -ALTER TABLE public.asistencia_intervalo OWNER TO manso; - --- --- Name: asistencia_intervalo_id_intervalo_seq; Type: SEQUENCE; Schema: public; Owner: manso --- - -CREATE SEQUENCE public.asistencia_intervalo_id_intervalo_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - -ALTER SEQUENCE public.asistencia_intervalo_id_intervalo_seq OWNER TO manso; - --- --- Name: asistencia_intervalo_id_intervalo_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: manso --- - -ALTER SEQUENCE public.asistencia_intervalo_id_intervalo_seq OWNED BY public.asistencia_intervalo.id_intervalo; - - --- --- Name: asistencia_raw; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE public.asistencia_raw ( - id_raw bigint NOT NULL, - id_usuario integer NOT NULL, - ts timestamp with time zone NOT NULL, - modo text, - origen text, - created_at timestamp with time zone DEFAULT now() NOT NULL -); - - -ALTER TABLE public.asistencia_raw OWNER TO manso; - --- --- Name: asistencia_raw_id_raw_seq; Type: SEQUENCE; Schema: public; Owner: manso --- - -CREATE SEQUENCE public.asistencia_raw_id_raw_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - -ALTER SEQUENCE public.asistencia_raw_id_raw_seq OWNER TO manso; - --- --- Name: asistencia_raw_id_raw_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: manso --- - -ALTER SEQUENCE public.asistencia_raw_id_raw_seq OWNED BY public.asistencia_raw.id_raw; - - --- --- Name: asistencia_resumen_diario; Type: VIEW; Schema: public; Owner: manso --- - -CREATE VIEW public.asistencia_resumen_diario AS - SELECT ai.id_usuario, - u.documento, - u.nombre, - u.apellido, - ai.fecha, - sum(ai.dur_min) AS minutos_dia, - round((sum(ai.dur_min) / 60.0), 2) AS horas_dia, - count(*) AS pares_dia - FROM (public.asistencia_intervalo ai - JOIN public.usuarios u USING (id_usuario)) - GROUP BY ai.id_usuario, u.documento, u.nombre, u.apellido, ai.fecha - ORDER BY ai.id_usuario, ai.fecha; - - -ALTER VIEW public.asistencia_resumen_diario OWNER TO manso; - --- --- Name: categorias; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE public.categorias ( - id_categoria integer NOT NULL, - nombre text NOT NULL, - visible boolean DEFAULT true -); - - -ALTER TABLE public.categorias OWNER TO manso; - --- --- Name: categorias_id_categoria_seq; Type: SEQUENCE; Schema: public; Owner: manso --- - -CREATE SEQUENCE public.categorias_id_categoria_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - -ALTER SEQUENCE public.categorias_id_categoria_seq OWNER TO manso; - --- --- Name: categorias_id_categoria_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: manso --- - -ALTER SEQUENCE public.categorias_id_categoria_seq OWNED BY public.categorias.id_categoria; - - --- --- Name: clientes; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE public.clientes ( - id_cliente integer NOT NULL, - nombre text NOT NULL, - correo text, - telefono text, - fec_nacimiento date, - activo boolean DEFAULT true -); - - -ALTER TABLE public.clientes OWNER TO manso; - --- --- Name: clientes_id_cliente_seq; Type: SEQUENCE; Schema: public; Owner: manso --- - -CREATE SEQUENCE public.clientes_id_cliente_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - -ALTER SEQUENCE public.clientes_id_cliente_seq OWNER TO manso; - --- --- Name: clientes_id_cliente_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: manso --- - -ALTER SEQUENCE public.clientes_id_cliente_seq OWNED BY public.clientes.id_cliente; - - --- --- Name: comandas_id_comanda_seq; Type: SEQUENCE; Schema: public; Owner: manso --- - -CREATE SEQUENCE public.comandas_id_comanda_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - -ALTER SEQUENCE public.comandas_id_comanda_seq OWNER TO manso; - --- --- Name: comandas_id_comanda_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: manso --- - -ALTER SEQUENCE public.comandas_id_comanda_seq OWNED BY public.comandas.id_comanda; - - --- --- Name: compras; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE public.compras ( - id_compra integer NOT NULL, - id_proveedor integer NOT NULL, - fec_compra timestamp without time zone NOT NULL, - total numeric(14,2) -); - - -ALTER TABLE public.compras OWNER TO manso; - --- --- Name: compras_id_compra_seq; Type: SEQUENCE; Schema: public; Owner: manso --- - -CREATE SEQUENCE public.compras_id_compra_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - -ALTER SEQUENCE public.compras_id_compra_seq OWNER TO manso; - --- --- Name: compras_id_compra_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: manso --- - -ALTER SEQUENCE public.compras_id_compra_seq OWNED BY public.compras.id_compra; - - --- --- Name: deta_comandas_id_det_comanda_seq; Type: SEQUENCE; Schema: public; Owner: manso --- - -CREATE SEQUENCE public.deta_comandas_id_det_comanda_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - -ALTER SEQUENCE public.deta_comandas_id_det_comanda_seq OWNER TO manso; - --- --- Name: deta_comandas_id_det_comanda_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: manso --- - -ALTER SEQUENCE public.deta_comandas_id_det_comanda_seq OWNED BY public.deta_comandas.id_det_comanda; - - --- --- Name: deta_comp_materias; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE public.deta_comp_materias ( - id_compra integer NOT NULL, - id_mat_prima integer NOT NULL, - cantidad numeric(12,3) NOT NULL, - pre_unitario numeric(12,2) NOT NULL, - CONSTRAINT deta_comp_materias_cantidad_check CHECK ((cantidad > (0)::numeric)), - CONSTRAINT deta_comp_materias_pre_unitario_check CHECK ((pre_unitario >= (0)::numeric)) -); - - -ALTER TABLE public.deta_comp_materias OWNER TO manso; - --- --- Name: deta_comp_producto; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE public.deta_comp_producto ( - id_compra integer NOT NULL, - id_producto integer NOT NULL, - cantidad numeric(12,3) NOT NULL, - pre_unitario numeric(12,2) NOT NULL, - CONSTRAINT deta_comp_producto_cantidad_check CHECK ((cantidad > (0)::numeric)), - CONSTRAINT deta_comp_producto_pre_unitario_check CHECK ((pre_unitario >= (0)::numeric)) -); - - -ALTER TABLE public.deta_comp_producto OWNER TO manso; - --- --- Name: mate_primas; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE public.mate_primas ( - id_mat_prima integer NOT NULL, - nombre text NOT NULL, - unidad text NOT NULL, - activo boolean DEFAULT true -); - - -ALTER TABLE public.mate_primas OWNER TO manso; - --- --- Name: mate_primas_id_mat_prima_seq; Type: SEQUENCE; Schema: public; Owner: manso --- - -CREATE SEQUENCE public.mate_primas_id_mat_prima_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - -ALTER SEQUENCE public.mate_primas_id_mat_prima_seq OWNER TO manso; - --- --- Name: mate_primas_id_mat_prima_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: manso --- - -ALTER SEQUENCE public.mate_primas_id_mat_prima_seq OWNED BY public.mate_primas.id_mat_prima; - - --- --- Name: mesas_id_mesa_seq; Type: SEQUENCE; Schema: public; Owner: manso --- - -CREATE SEQUENCE public.mesas_id_mesa_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - -ALTER SEQUENCE public.mesas_id_mesa_seq OWNER TO manso; - --- --- Name: mesas_id_mesa_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: manso --- - -ALTER SEQUENCE public.mesas_id_mesa_seq OWNED BY public.mesas.id_mesa; - - --- --- Name: productos; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE public.productos ( - id_producto integer NOT NULL, - nombre text NOT NULL, - img_producto character varying(255) DEFAULT 'img/productos/img_producto.png'::character varying NOT NULL, - precio integer NOT NULL, - activo boolean DEFAULT true, - id_categoria integer NOT NULL, - CONSTRAINT productos_precio_check CHECK (((precio)::numeric >= (0)::numeric)), - CONSTRAINT productos_precio_nn CHECK ((precio >= 0)) -); - - -ALTER TABLE public.productos OWNER TO manso; - --- --- Name: productos_id_producto_seq; Type: SEQUENCE; Schema: public; Owner: manso --- - -CREATE SEQUENCE public.productos_id_producto_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - -ALTER SEQUENCE public.productos_id_producto_seq OWNER TO manso; - --- --- Name: productos_id_producto_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: manso --- - -ALTER SEQUENCE public.productos_id_producto_seq OWNED BY public.productos.id_producto; - - --- --- Name: prov_mate_prima; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE public.prov_mate_prima ( - id_proveedor integer NOT NULL, - id_mat_prima integer NOT NULL -); - - -ALTER TABLE public.prov_mate_prima OWNER TO manso; - --- --- Name: prov_producto; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE public.prov_producto ( - id_proveedor integer NOT NULL, - id_producto integer NOT NULL -); - - -ALTER TABLE public.prov_producto OWNER TO manso; - --- --- Name: proveedores; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE public.proveedores ( - id_proveedor integer NOT NULL, - rut text, - raz_social text NOT NULL, - direccion text, - contacto text -); - - -ALTER TABLE public.proveedores OWNER TO manso; - --- --- Name: proveedores_id_proveedor_seq; Type: SEQUENCE; Schema: public; Owner: manso --- - -CREATE SEQUENCE public.proveedores_id_proveedor_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - -ALTER SEQUENCE public.proveedores_id_proveedor_seq OWNER TO manso; - --- --- Name: proveedores_id_proveedor_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: manso --- - -ALTER SEQUENCE public.proveedores_id_proveedor_seq OWNED BY public.proveedores.id_proveedor; - - --- --- Name: receta_producto; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE public.receta_producto ( - id_producto integer NOT NULL, - id_mat_prima integer NOT NULL, - qty_por_unidad numeric(12,3) NOT NULL, - CONSTRAINT receta_producto_qty_por_unidad_check CHECK ((qty_por_unidad > (0)::numeric)) -); - - -ALTER TABLE public.receta_producto OWNER TO manso; - --- --- Name: roles; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE public.roles ( - id_rol integer NOT NULL, - nombre text NOT NULL -); - - -ALTER TABLE public.roles OWNER TO manso; - --- --- Name: roles_id_rol_seq; Type: SEQUENCE; Schema: public; Owner: manso --- - -CREATE SEQUENCE public.roles_id_rol_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - -ALTER SEQUENCE public.roles_id_rol_seq OWNER TO manso; - --- --- Name: roles_id_rol_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: manso --- - -ALTER SEQUENCE public.roles_id_rol_seq OWNED BY public.roles.id_rol; - - --- --- Name: usua_roles; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE public.usua_roles ( - id_usuario integer NOT NULL, - id_rol integer NOT NULL, - fec_asignacion timestamp without time zone DEFAULT now(), - autor integer, - activo boolean DEFAULT true -); - - -ALTER TABLE public.usua_roles OWNER TO manso; - --- --- Name: usuarios_id_usuario_seq; Type: SEQUENCE; Schema: public; Owner: manso --- - -CREATE SEQUENCE public.usuarios_id_usuario_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - -ALTER SEQUENCE public.usuarios_id_usuario_seq OWNER TO manso; - --- --- Name: usuarios_id_usuario_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: manso --- - -ALTER SEQUENCE public.usuarios_id_usuario_seq OWNED BY public.usuarios.id_usuario; - - --- --- Name: v_comandas_detalle_base; Type: VIEW; Schema: public; Owner: manso --- - -CREATE VIEW public.v_comandas_detalle_base AS - SELECT c.id_comanda, - c.fec_creacion, - c.fec_cierre, - c.estado, - c.observaciones, - u.id_usuario, - u.nombre AS usuario_nombre, - u.apellido AS usuario_apellido, - m.id_mesa, - m.numero AS mesa_numero, - m.apodo AS mesa_apodo, - d.id_producto, - p.nombre AS producto_nombre, - d.cantidad, - d.pre_unitario, - (d.cantidad * d.pre_unitario) AS subtotal - FROM ((((public.comandas c - JOIN public.usuarios u ON ((u.id_usuario = c.id_usuario))) - JOIN public.mesas m ON ((m.id_mesa = c.id_mesa))) - LEFT JOIN public.deta_comandas d ON ((d.id_comanda = c.id_comanda))) - LEFT JOIN public.productos p ON ((p.id_producto = d.id_producto))); - - -ALTER VIEW public.v_comandas_detalle_base OWNER TO manso; - --- --- Name: v_comandas_detalle_items; Type: VIEW; Schema: public; Owner: manso --- - -CREATE VIEW public.v_comandas_detalle_items AS - SELECT d.id_comanda, - d.id_det_comanda, - d.id_producto, - p.nombre AS producto_nombre, - d.cantidad, - d.pre_unitario, - (d.cantidad * d.pre_unitario) AS subtotal, - d.observaciones - FROM (public.deta_comandas d - JOIN public.productos p ON ((p.id_producto = d.id_producto))); - - -ALTER VIEW public.v_comandas_detalle_items OWNER TO manso; - --- --- Name: v_comandas_detalle_json; Type: VIEW; Schema: public; Owner: manso --- - -CREATE VIEW public.v_comandas_detalle_json AS - SELECT id_comanda, - jsonb_build_object('id_comanda', id_comanda, 'fec_creacion', fec_creacion, 'fec_cierre', fec_cierre, 'estado', estado, 'observaciones', observaciones, 'usuario', jsonb_build_object('id_usuario', id_usuario, 'nombre', usuario_nombre, 'apellido', usuario_apellido), 'mesa', jsonb_build_object('id_mesa', id_mesa, 'numero', mesa_numero, 'apodo', mesa_apodo), 'items', COALESCE(( SELECT jsonb_agg(jsonb_build_object('producto_id', b.id_producto, 'producto', b.producto_nombre, 'cantidad', b.cantidad, 'pre_unitario', b.pre_unitario, 'subtotal', b.subtotal) ORDER BY b.producto_nombre) AS jsonb_agg - FROM public.v_comandas_detalle_base b - WHERE ((b.id_comanda = h.id_comanda) AND (b.id_producto IS NOT NULL))), '[]'::jsonb), 'totales', jsonb_build_object('items', COALESCE(( SELECT count(*) AS count - FROM public.v_comandas_detalle_base b - WHERE ((b.id_comanda = h.id_comanda) AND (b.id_producto IS NOT NULL))), (0)::bigint), 'total', COALESCE(( SELECT sum(b.subtotal) AS sum - FROM public.v_comandas_detalle_base b - WHERE (b.id_comanda = h.id_comanda)), (0)::numeric))) AS data - FROM ( SELECT DISTINCT v_comandas_detalle_base.id_comanda, - v_comandas_detalle_base.fec_creacion, - v_comandas_detalle_base.fec_cierre, - v_comandas_detalle_base.estado, - v_comandas_detalle_base.observaciones, - v_comandas_detalle_base.id_usuario, - v_comandas_detalle_base.usuario_nombre, - v_comandas_detalle_base.usuario_apellido, - v_comandas_detalle_base.id_mesa, - v_comandas_detalle_base.mesa_numero, - v_comandas_detalle_base.mesa_apodo - FROM public.v_comandas_detalle_base) h; - - -ALTER VIEW public.v_comandas_detalle_json OWNER TO manso; - --- --- Name: vw_compras; Type: VIEW; Schema: public; Owner: manso --- - -CREATE VIEW public.vw_compras AS - SELECT c.id_compra, - c.id_proveedor, - p.raz_social AS proveedor, - c.fec_compra, - c.total - FROM (public.compras c - JOIN public.proveedores p USING (id_proveedor)) - ORDER BY c.fec_compra DESC, c.id_compra DESC; - - -ALTER VIEW public.vw_compras OWNER TO manso; - --- --- Name: vw_ticket_total; Type: VIEW; Schema: public; Owner: manso --- - -CREATE VIEW public.vw_ticket_total AS - WITH lineas AS ( - SELECT c.id_comanda, - COALESCE(c.fec_cierre, (c.fec_creacion)::timestamp with time zone) AS fec_ticket, - (COALESCE(dc.pre_unitario, (p.precio)::numeric, (0)::numeric))::numeric(14,2) AS pu, - (COALESCE(dc.cantidad, (1)::numeric))::numeric(14,3) AS qty - FROM ((public.comandas c - JOIN public.deta_comandas dc ON ((dc.id_comanda = c.id_comanda))) - LEFT JOIN public.productos p ON ((p.id_producto = dc.id_producto))) - ) - SELECT id_comanda, - fec_ticket, - (sum((qty * pu)))::numeric(14,2) AS total - FROM lineas - GROUP BY id_comanda, fec_ticket; - - -ALTER VIEW public.vw_ticket_total OWNER TO manso; - --- --- Name: asistencia_intervalo id_intervalo; Type: DEFAULT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.asistencia_intervalo ALTER COLUMN id_intervalo SET DEFAULT nextval('public.asistencia_intervalo_id_intervalo_seq'::regclass); - - --- --- Name: asistencia_raw id_raw; Type: DEFAULT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.asistencia_raw ALTER COLUMN id_raw SET DEFAULT nextval('public.asistencia_raw_id_raw_seq'::regclass); - - --- --- Name: categorias id_categoria; Type: DEFAULT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.categorias ALTER COLUMN id_categoria SET DEFAULT nextval('public.categorias_id_categoria_seq'::regclass); - - --- --- Name: clientes id_cliente; Type: DEFAULT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.clientes ALTER COLUMN id_cliente SET DEFAULT nextval('public.clientes_id_cliente_seq'::regclass); - - --- --- Name: comandas id_comanda; Type: DEFAULT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.comandas ALTER COLUMN id_comanda SET DEFAULT nextval('public.comandas_id_comanda_seq'::regclass); - - --- --- Name: compras id_compra; Type: DEFAULT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.compras ALTER COLUMN id_compra SET DEFAULT nextval('public.compras_id_compra_seq'::regclass); - - --- --- Name: deta_comandas id_det_comanda; Type: DEFAULT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.deta_comandas ALTER COLUMN id_det_comanda SET DEFAULT nextval('public.deta_comandas_id_det_comanda_seq'::regclass); - - --- --- Name: mate_primas id_mat_prima; Type: DEFAULT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.mate_primas ALTER COLUMN id_mat_prima SET DEFAULT nextval('public.mate_primas_id_mat_prima_seq'::regclass); - - --- --- Name: mesas id_mesa; Type: DEFAULT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.mesas ALTER COLUMN id_mesa SET DEFAULT nextval('public.mesas_id_mesa_seq'::regclass); - - --- --- Name: productos id_producto; Type: DEFAULT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.productos ALTER COLUMN id_producto SET DEFAULT nextval('public.productos_id_producto_seq'::regclass); - - --- --- Name: proveedores id_proveedor; Type: DEFAULT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.proveedores ALTER COLUMN id_proveedor SET DEFAULT nextval('public.proveedores_id_proveedor_seq'::regclass); - - --- --- Name: roles id_rol; Type: DEFAULT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.roles ALTER COLUMN id_rol SET DEFAULT nextval('public.roles_id_rol_seq'::regclass); - - --- --- Name: usuarios id_usuario; Type: DEFAULT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.usuarios ALTER COLUMN id_usuario SET DEFAULT nextval('public.usuarios_id_usuario_seq'::regclass); - - --- --- Data for Name: asistencia_intervalo; Type: TABLE DATA; Schema: public; Owner: manso --- - -COPY public.asistencia_intervalo (id_intervalo, id_usuario, fecha, desde, hasta, dur_min, origen, created_at) FROM stdin; -83 1 2025-08-29 2025-08-30 01:19:38+00 2025-08-30 01:26:19+00 6.68 delete_adjust 2025-08-30 04:42:43.597798+00 -84 1 2025-08-29 2025-08-30 02:30:00+00 2025-08-30 02:46:40+00 16.67 delete_adjust 2025-08-30 04:42:43.597798+00 -85 1 2025-08-30 2025-08-30 03:13:31+00 2025-08-30 03:36:03+00 22.53 delete_adjust 2025-08-30 04:42:43.597798+00 -86 1 2025-08-30 2025-08-30 04:10:00+00 2025-08-30 04:12:00+00 2.00 delete_adjust 2025-08-30 04:42:43.597798+00 -87 1 2025-08-30 2025-08-30 04:24:08+00 2025-08-30 04:38:56+00 14.80 delete_adjust 2025-08-30 04:42:43.597798+00 -88 1 2025-08-30 2025-08-30 05:01:55+00 2025-08-30 05:10:00+00 8.08 delete_adjust 2025-08-30 04:42:43.597798+00 -89 1 2025-08-27 2025-08-27 04:34:55+00 2025-08-27 06:35:08+00 120.22 AGL_001.txt 2025-08-30 04:43:13.749738+00 -90 1 2025-08-29 2025-08-30 00:12:34+00 2025-08-30 00:47:24+00 34.83 AGL_001.txt 2025-08-30 04:43:13.749738+00 -97 2 2025-01-02 2025-01-02 12:12:00+00 2025-01-02 14:48:00+00 156.00 manual_form 2025-08-30 04:45:59.234439+00 -99 2 2025-01-02 2025-01-02 20:50:00+00 2025-01-03 02:48:00+00 358.00 manual_form 2025-08-30 04:46:45.672304+00 -108 1 2025-01-01 2025-01-01 10:00:00+00 2025-01-01 16:00:00+00 360.00 manual_form 2025-09-01 21:03:36.046072+00 -\. - - --- --- Data for Name: asistencia_raw; Type: TABLE DATA; Schema: public; Owner: manso --- - -COPY public.asistencia_raw (id_raw, id_usuario, ts, modo, origen, created_at) FROM stdin; -1 1 2025-08-30 05:10:00+00 OUT manual_form 2025-08-30 04:11:08.227836+00 -2 1 2025-08-30 04:10:00+00 IN manual_form 2025-08-30 04:11:08.227836+00 -3 1 2025-08-30 04:12:00+00 OUT manual_form 2025-08-30 04:12:30.456958+00 -4 1 2025-08-30 02:30:00+00 IN manual_form 2025-08-30 04:12:30.456958+00 -22 1 2025-08-30 01:19:38+00 IN AGL_001.txt 2025-08-30 04:32:09.754679+00 -21 1 2025-08-30 01:26:19+00 OUT AGL_001.txt 2025-08-30 04:32:09.754679+00 -20 1 2025-08-30 02:46:40+00 OUT AGL_001.txt 2025-08-30 04:32:09.754679+00 -19 1 2025-08-30 03:13:31+00 IN AGL_001.txt 2025-08-30 04:32:09.754679+00 -18 1 2025-08-30 03:36:03+00 OUT AGL_001.txt 2025-08-30 04:32:09.754679+00 -17 1 2025-08-30 04:38:56+00 OUT AGL_001.txt 2025-08-30 04:32:09.754679+00 -16 1 2025-08-30 05:01:55+00 IN AGL_001.txt 2025-08-30 04:32:09.754679+00 -15 1 2025-08-30 04:24:08+00 IN AGL_001.txt 2025-08-30 04:32:09.754679+00 -71 2 2025-01-02 14:48:00+00 OUT manual_form 2025-08-30 04:45:59.234439+00 -72 2 2025-01-02 12:12:00+00 IN manual_form 2025-08-30 04:45:59.234439+00 -73 2 2025-01-03 02:48:00+00 OUT manual_form 2025-08-30 04:46:45.672304+00 -74 2 2025-01-02 20:50:00+00 IN manual_form 2025-08-30 04:46:45.672304+00 -60 1 2025-08-27 04:34:55+00 IN AGL_001.txt 2025-08-30 04:43:13.749738+00 -59 1 2025-08-27 06:35:08+00 OUT AGL_001.txt 2025-08-30 04:43:13.749738+00 -70 1 2025-08-30 00:12:34+00 IN AGL_001.txt 2025-08-30 04:43:13.749738+00 -69 1 2025-08-30 00:47:24+00 OUT AGL_001.txt 2025-08-30 04:43:13.749738+00 -87 1 2025-01-01 16:00:00+00 OUT manual_form 2025-09-01 21:03:36.046072+00 -88 1 2025-01-01 10:00:00+00 IN manual_form 2025-09-01 21:03:36.046072+00 -\. - - --- --- Data for Name: categorias; Type: TABLE DATA; Schema: public; Owner: manso --- - -COPY public.categorias (id_categoria, nombre, visible) FROM stdin; -1 Cafetería t -2 Café t -3 Bar t -4 Tragos y Refrescos t -\. - - --- --- Data for Name: clientes; Type: TABLE DATA; Schema: public; Owner: manso --- - -COPY public.clientes (id_cliente, nombre, correo, telefono, fec_nacimiento, activo) FROM stdin; -1 Familia \N \N \N t -\. - - --- --- Data for Name: comandas; Type: TABLE DATA; Schema: public; Owner: manso --- - -COPY public.comandas (id_comanda, id_usuario, id_mesa, fec_creacion, estado, observaciones, fec_cierre) FROM stdin; -2 3 14 2025-08-25 18:47:57.398972 cerrada \N \N -49 1 14 2025-08-29 16:53:42.617246 cerrada Auto blanco 2025-08-29 16:56:44.184737+00 -4 1 1 2025-08-25 19:07:51.695426 cerrada Pedido para una familia grande. \N -3 1 1 2025-08-25 19:07:37.584356 cerrada Pedido para una familia grande. \N -1 3 14 2025-08-25 18:46:18.834688 cerrada \N \N -48 3 14 2025-08-29 16:53:06.77149 cerrada Grande huevo 2025-08-29 16:56:45.225257+00 -47 3 14 2025-08-29 16:52:22.556665 cerrada Grande huevo 2025-08-29 16:56:46.440835+00 -8 3 14 2025-08-29 02:57:22.46956 cerrada \N 2025-08-29 03:47:50.750949+00 -7 1 14 2025-08-29 02:56:29.755449 cerrada \N 2025-08-29 04:31:33.254769+00 -6 2 6 2025-08-25 19:09:25.280339 cerrada \N 2025-08-29 04:32:29.813119+00 -46 3 14 2025-08-29 16:51:23.011327 cerrada Grande huevo 2025-08-29 16:56:47.457248+00 -5 1 1 2025-08-25 19:08:08.596438 cerrada \N 2025-08-29 04:35:24.52745+00 -10 1 3 2025-08-29 04:41:51.354916 cerrada \N 2025-08-29 04:48:01.548441+00 -12 3 14 2025-08-29 04:48:53.292023 cerrada \N 2025-08-29 05:17:41.133298+00 -19 3 14 2025-08-29 05:49:56.258621 cerrada \N 2025-08-29 05:50:10.286428+00 -18 3 14 2025-08-29 05:49:13.120391 cerrada \N 2025-08-29 05:50:11.319667+00 -17 3 14 2025-08-29 05:46:54.548073 cerrada oBSERVACIOOONNN 2025-08-29 05:50:12.331972+00 -16 2 8 2025-08-29 05:46:23.763257 cerrada oBSERVACIOOONNN 2025-08-29 05:50:13.37213+00 -15 2 8 2025-08-29 05:46:18.69042 cerrada oBSERVACIOOONNN 2025-08-29 05:50:14.334797+00 -14 3 14 2025-08-29 05:19:28.908216 cerrada jdwkjklqwndv 2025-08-29 05:50:15.26329+00 -13 3 14 2025-08-29 04:58:36.159791 cerrada hola 2025-08-29 05:50:16.511989+00 -11 1 4 2025-08-29 04:48:36.541902 cerrada \N 2025-08-29 05:50:17.832327+00 -9 1 1 2025-08-29 04:37:56.310221 cerrada Olaaa 2025-08-29 05:50:19.084017+00 -20 3 14 2025-08-29 05:50:25.106438 cerrada \N 2025-08-29 05:50:30.321838+00 -29 2 6 2025-08-29 06:06:44.812528 cerrada \N 2025-08-29 06:08:16.181067+00 -28 3 14 2025-08-29 06:06:13.297627 cerrada \N 2025-08-29 06:08:17.69094+00 -27 1 1 2025-08-29 06:03:10.757812 cerrada \N 2025-08-29 06:08:18.986658+00 -26 1 8 2025-08-29 06:02:25.460776 cerrada \N 2025-08-29 06:08:20.296605+00 -25 1 8 2025-08-29 06:01:26.571144 cerrada Sin gluten 2025-08-29 06:08:22.898867+00 -24 1 1 2025-08-29 05:58:17.922202 cerrada \N 2025-08-29 06:08:24.187839+00 -23 1 1 2025-08-29 05:57:35.418369 cerrada Observacionesssqaishfoiadhfohsdf 2025-08-29 06:08:25.558933+00 -22 3 14 2025-08-29 05:54:44.675905 cerrada \N 2025-08-29 06:08:27.55245+00 -21 3 14 2025-08-29 05:51:54.451937 cerrada \N 2025-08-29 06:08:29.094665+00 -31 1 14 2025-08-29 16:10:31.619565 cerrada TestObs,.-.-. 2025-08-29 16:13:11.693159+00 -30 1 4 2025-08-29 14:46:00.062522 cerrada 123 2025-08-29 16:13:14.63311+00 -52 1 12 2025-08-29 16:55:21.360321 cerrada grande el huevo 2025-08-29 16:56:40.145463+00 -51 1 14 2025-08-29 16:54:44.410546 cerrada auto blanco 2025-08-29 16:56:41.279442+00 -50 1 14 2025-08-29 16:54:08.307324 cerrada auto blanco 2025-08-29 16:56:42.968122+00 -45 3 14 2025-08-29 16:51:08.371592 cerrada Grande huevo 2025-08-29 16:56:48.831883+00 -44 3 14 2025-08-29 16:50:54.483409 cerrada Grande huevo 2025-08-29 16:56:49.85665+00 -43 1 14 2025-08-29 16:50:11.083248 cerrada Grande huevo 2025-08-29 16:56:51.165809+00 -41 1 13 2025-08-29 16:27:13.691181 cerrada Mesa normal 2025-08-29 16:56:52.301133+00 -42 3 12 2025-08-29 16:27:47.766143 cerrada Mesa normal 2025-08-29 16:56:53.405482+00 -40 1 14 2025-08-29 16:26:43.787724 cerrada Observación huevo 2025-08-29 16:56:54.62857+00 -39 3 14 2025-08-29 16:26:09.754868 cerrada Observación del huevo 2025-08-29 16:56:55.865184+00 -38 3 14 2025-08-29 16:25:43.366429 cerrada Observación del huevo 2025-08-29 16:56:57.13223+00 -37 1 14 2025-08-29 16:25:01.413168 cerrada Observación del huevo 2025-08-29 16:56:58.590021+00 -36 1 14 2025-08-29 16:24:23.587871 cerrada Observación del huevo 2025-08-29 16:56:59.863697+00 -35 3 14 2025-08-29 16:23:33.26689 cerrada Observación del huevo 2025-08-29 16:57:01.082691+00 -34 3 14 2025-08-29 16:23:27.385911 cerrada Observación del huevo 2025-08-29 16:57:02.429882+00 -33 1 5 2025-08-29 16:16:28.527735 cerrada Esta es una observación 2025-08-29 16:57:03.761533+00 -32 1 5 2025-08-29 16:15:54.377397 cerrada Esta es una observación 2025-08-29 16:57:05.939418+00 -53 3 8 2025-09-01 20:21:27.553491 abierta \N \N -54 3 14 2025-09-01 21:16:30.760241 abierta Ana \N -55 3 11 2025-09-02 00:22:18.600045 abierta \N \N -\. - - --- --- Data for Name: compras; Type: TABLE DATA; Schema: public; Owner: manso --- - -COPY public.compras (id_compra, id_proveedor, fec_compra, total) FROM stdin; -36 4 2025-07-29 08:02:33.489822 3806.00 -37 1 2025-06-28 06:27:33.489822 2944.00 -38 2 2025-08-22 22:23:33.489822 2866.00 -39 2 2025-07-27 10:50:33.489822 7774.00 -40 4 2025-08-03 21:28:33.489822 2373.00 -41 1 2025-06-13 08:23:33.489822 1556.00 -42 4 2025-07-29 02:30:33.489822 5941.00 -43 4 2025-07-27 04:39:33.489822 3570.00 -44 4 2025-07-10 04:43:33.489822 2648.00 -45 1 2025-07-05 00:59:33.489822 11349.00 -46 3 2025-07-04 18:17:33.489822 1671.00 -47 3 2025-07-11 02:42:33.489822 2423.00 -48 3 2025-07-16 14:47:33.489822 7851.00 -49 3 2025-07-21 01:24:33.489822 4888.00 -50 1 2025-06-05 13:46:33.489822 4985.00 -51 3 2025-08-02 20:32:33.489822 144.00 -52 1 2025-07-27 10:08:33.489822 1840.00 -53 2 2025-08-22 08:01:33.489822 3398.00 -55 2 2025-07-14 10:16:33.489822 632.00 -56 2 2025-07-14 20:17:33.489822 6882.00 -57 1 2025-06-17 15:01:33.489822 2974.00 -58 2 2025-06-19 15:29:33.489822 2644.00 -60 2 2025-06-09 15:01:33.489822 1436.00 -61 3 2025-08-09 00:54:33.489822 6453.00 -62 1 2025-08-26 16:17:33.489822 5450.00 -63 1 2025-08-05 08:39:33.489822 8873.00 -64 1 2025-07-19 12:38:33.489822 4093.00 -65 1 2025-06-23 09:31:33.489822 666.00 -59 1 2025-08-29 16:42:00 3248.00 -54 2 2025-08-26 04:37:00 2483.00 -\. - - --- --- Data for Name: deta_comandas; Type: TABLE DATA; Schema: public; Owner: manso --- - -COPY public.deta_comandas (id_det_comanda, id_comanda, id_producto, cantidad, pre_unitario, observaciones) FROM stdin; -1 1 52 4.000 130.00 \N -2 2 40 1.000 250.00 \N -3 2 49 1.000 230.00 \N -4 2 24 3.000 100.00 \N -5 6 51 5.000 230.00 \N -6 6 33 2.000 550.00 \N -7 7 52 3.000 130.00 \N -8 8 33 3.000 550.00 \N -9 9 37 3.000 320.00 \N -10 10 52 1.000 130.00 \N -11 11 47 3.000 280.00 \N -12 11 43 1.000 230.00 \N -13 11 45 1.000 280.00 \N -14 11 44 1.000 150.00 \N -15 11 24 2.000 100.00 \N -16 12 28 1.000 100.00 \N -17 12 31 13.000 100.00 \N -18 13 51 2.000 230.00 \N -19 13 52 2.000 130.00 \N -20 14 52 1.000 130.00 \N -21 15 52 1.000 130.00 \N -22 15 51 1.000 230.00 \N -23 16 51 1.000 230.00 \N -24 16 52 1.000 130.00 \N -25 17 46 1.000 150.00 \N -26 18 47 1.000 280.00 \N -27 19 51 1.000 230.00 \N -28 19 48 1.000 230.00 \N -29 20 52 1.000 130.00 \N -30 20 49 1.000 230.00 \N -31 20 51 1.000 230.00 \N -32 22 49 1.000 230.00 \N -33 23 52 1.000 130.00 \N -34 23 48 1.000 230.00 \N -35 23 51 1.000 230.00 \N -36 23 50 1.000 230.00 \N -37 24 52 1.000 130.00 \N -38 24 51 1.000 230.00 \N -39 25 47 1.000 280.00 \N -40 25 49 1.000 230.00 \N -41 25 50 1.000 230.00 \N -42 26 50 1.000 230.00 \N -43 26 49 1.000 230.00 \N -44 27 50 3.000 230.00 \N -45 27 49 3.000 230.00 \N -46 28 51 1.000 230.00 \N -47 28 52 1.000 130.00 \N -48 28 45 1.000 280.00 \N -49 28 50 1.000 230.00 \N -50 29 48 2.000 230.00 \N -51 29 49 6.000 230.00 \N -52 29 47 2.000 280.00 \N -54 30 20 3.000 140.00 \N -53 30 16 1.000 100.00 \N -55 30 17 1.000 150.00 \N -56 31 51 1.000 230.00 \N -57 31 23 1.000 180.00 \N -58 31 52 2.000 140.00 \N -59 31 33 1.000 550.00 \N -60 33 9 2.000 120.00 \N -61 33 18 1.000 80.00 \N -62 33 2 1.000 60.00 \N -63 34 3 1.000 60.00 \N -64 34 21 1.000 180.00 \N -65 34 33 1.000 550.00 \N -66 34 23 2.000 180.00 \N -67 36 33 1.000 550.00 \N -68 36 49 1.000 230.00 \N -69 36 3 1.000 60.00 \N -70 36 6 1.000 50.00 \N -71 36 11 1.000 120.00 \N -72 37 3 1.000 60.00 \N -73 37 6 1.000 50.00 \N -74 37 49 1.000 230.00 \N -75 38 38 4.000 250.00 \N -76 38 33 1.000 550.00 \N -77 38 50 1.000 230.00 \N -78 38 10 1.000 120.00 \N -79 38 52 1.000 140.00 \N -80 38 9 1.000 120.00 \N -81 39 33 1.000 550.00 \N -82 39 38 4.000 250.00 \N -83 40 52 1.000 140.00 \N -84 40 29 1.000 80.00 \N -85 40 46 1.000 150.00 \N -86 40 49 1.000 230.00 \N -87 40 10 1.000 120.00 \N -88 40 11 6.000 120.00 \N -89 41 4 1.000 250.00 \N -90 41 8 1.000 120.00 \N -91 42 46 1.000 150.00 \N -92 42 49 1.000 230.00 \N -93 42 44 1.000 150.00 \N -94 43 33 1.000 550.00 \N -95 43 25 1.000 180.00 \N -96 43 16 1.000 100.00 \N -97 43 24 1.000 100.00 \N -98 43 47 2.000 280.00 \N -99 44 46 1.000 150.00 \N -100 45 46 1.000 150.00 \N -101 46 46 1.000 150.00 \N -102 47 51 1.000 230.00 \N -103 48 50 1.000 230.00 \N -104 49 47 1.000 280.00 \N -105 49 33 2.000 550.00 \N -106 51 33 1.000 550.00 \N -107 51 47 1.000 280.00 \N -108 52 24 1.000 100.00 \N -109 52 25 1.000 180.00 \N -110 52 16 1.000 100.00 \N -111 53 52 10.000 130.00 \N -112 53 23 11.000 180.00 \N -113 53 33 10.000 550.00 \N -114 54 50 2.000 230.00 \N -115 54 52 2.000 130.00 \N -116 55 33 2.000 550.00 \N -117 55 52 2.000 130.00 \N -\. - - --- --- Data for Name: deta_comp_materias; Type: TABLE DATA; Schema: public; Owner: manso --- - -COPY public.deta_comp_materias (id_compra, id_mat_prima, cantidad, pre_unitario) FROM stdin; -36 5 1.019 322.00 -36 9 1.370 80.00 -36 10 5.755 232.00 -38 3 7.311 392.00 -39 1 6.840 447.00 -39 10 7.533 397.00 -40 9 2.636 283.00 -40 8 8.262 151.00 -41 7 3.794 410.00 -43 3 5.017 293.00 -44 4 8.652 306.00 -45 6 9.781 426.00 -46 7 3.017 422.00 -48 1 0.735 511.00 -48 3 5.249 373.00 -49 1 9.816 498.00 -50 1 2.517 459.00 -50 7 2.785 239.00 -50 2 3.788 392.00 -52 6 7.542 244.00 -53 3 4.332 522.00 -55 6 4.937 128.00 -56 5 6.062 45.00 -57 9 1.806 465.00 -57 5 4.283 275.00 -57 7 1.861 402.00 -57 3 4.002 52.00 -58 1 3.379 471.00 -60 2 0.588 216.00 -61 10 13.011 327.00 -62 10 4.719 405.00 -62 9 4.646 295.00 -62 1 3.242 338.00 -63 6 8.843 457.00 -63 7 6.086 270.00 -63 8 6.852 394.00 -63 1 1.678 147.00 -65 1 4.788 139.00 -59 9 1.000 590.00 -54 3 2.000 157.00 -54 6 2.000 376.00 -54 9 4.000 67.00 -\. - - --- --- Data for Name: deta_comp_producto; Type: TABLE DATA; Schema: public; Owner: manso --- - -COPY public.deta_comp_producto (id_compra, id_producto, cantidad, pre_unitario) FROM stdin; -36 31 8.500 35.00 -36 33 8.224 211.00 -37 19 2.839 238.00 -37 51 5.961 162.00 -37 36 8.570 152.00 -39 12 2.329 515.00 -39 2 2.859 184.00 -40 13 1.521 63.00 -40 2 2.897 98.00 -42 50 8.152 516.00 -42 15 8.067 215.00 -43 26 2.209 314.00 -43 14 5.892 179.00 -43 33 2.023 174.00 -45 40 9.248 434.00 -45 27 5.979 530.00 -46 46 2.919 87.00 -46 32 0.658 219.00 -47 17 7.792 225.00 -47 34 2.923 229.00 -48 2 8.937 268.00 -48 14 8.415 371.00 -50 9 1.573 516.00 -50 14 1.940 447.00 -51 41 1.598 90.00 -53 40 1.525 416.00 -53 38 2.629 191.00 -56 1 5.752 412.00 -56 42 9.845 378.00 -56 7 2.073 250.00 -58 14 6.745 156.00 -60 34 9.698 135.00 -61 26 3.828 460.00 -61 22 1.325 330.00 -62 8 8.369 105.00 -62 27 0.812 238.00 -63 13 0.730 332.00 -64 46 9.524 257.00 -64 22 1.355 431.00 -64 47 6.969 99.00 -64 43 2.123 175.00 -59 39 6.000 443.00 -54 16 3.000 383.00 -\. - - --- --- Data for Name: mate_primas; Type: TABLE DATA; Schema: public; Owner: manso --- - -COPY public.mate_primas (id_mat_prima, nombre, unidad, activo) FROM stdin; -2 Huevo u t -3 Harina gr t -4 Avena gr t -1 Capsulas u t -9 Queso Azul San Ignacio gr t -10 Panceta gr t -8 Sal gr t -7 Sobres de Azucar u t -6 Azucar gr t -5 Bondiola cocida gr t -\. - - --- --- Data for Name: mesas; Type: TABLE DATA; Schema: public; Owner: manso --- - -COPY public.mesas (id_mesa, numero, apodo, estado) FROM stdin; -1 1 Living princial libre -2 2 Ventanal izquierdo libre -3 3 Primer mesa contra la baranda libre -4 4 Ventanal derecho libre -5 5 Segunda mesa contra la baranda libre -6 6 Junto a Juana libre -7 7 Mostrador/Barra libre -8 8 Booth derecho libre -9 9 Booth izquierdo libre -10 10 Living secundario libre -11 11 Zona del Pool libre -12 12 Cowork libre -13 13 Mesa del fuego libre -14 14 Takeaway libre -\. - - --- --- Data for Name: productos; Type: TABLE DATA; Schema: public; Owner: manso --- - -COPY public.productos (id_producto, nombre, img_producto, precio, activo, id_categoria) FROM stdin; -17 Cheesecake img/productos/img_producto.png 250 t 1 -2 Alfajores de Maicena img/productos/img_producto.png 60 t 1 -3 Alfajores sin TACC img/productos/img_producto.png 60 t 1 -4 Sandwich tostado LyC img/productos/img_producto.png 250 t 1 -5 Sandwich tostado JyQ img/productos/img_producto.png 250 t 1 -6 Scones img/productos/img_producto.png 50 t 1 -7 Medialunas img/productos/img_producto.png 80 t 1 -8 Medialunas Rellenas img/productos/img_producto.png 120 t 1 -9 Cookies de Avena img/productos/img_producto.png 120 t 1 -10 Cookies de chocolate img/productos/img_producto.png 120 t 1 -11 Brownies con helado img/productos/img_producto.png 120 t 1 -12 Budín de banana img/productos/img_producto.png 150 t 1 -13 Budín de naranja img/productos/img_producto.png 150 t 1 -14 Tostadas img/productos/img_producto.png 100 t 1 -15 Tarteletas img/productos/img_producto.png 150 t 1 -16 Chocobomba img/productos/img_producto.png 100 t 1 -18 Carajillo Oriental img/productos/img_producto.png 80 t 2 -20 Latte img/productos/img_producto.png 140 t 2 -21 Latte de DDL img/productos/img_producto.png 180 t 2 -22 Latte de chocolate semi amargo img/productos/img_producto.png 180 t 2 -23 Latte de vainilla img/productos/img_producto.png 180 t 2 -24 Expresso img/productos/img_producto.png 100 t 2 -25 Expresso doble img/productos/img_producto.png 180 t 2 -26 Cortado img/productos/img_producto.png 100 t 2 -27 Lágrima img/productos/img_producto.png 100 t 2 -28 Americano img/productos/img_producto.png 100 t 2 -29 Té img/productos/img_producto.png 80 t 2 -30 Té con leche img/productos/img_producto.png 100 t 2 -31 Submarino img/productos/img_producto.png 100 t 2 -32 Muzzarela clásica img/productos/img_producto.png 450 t 3 -34 Margarita img/productos/img_producto.png 500 t 3 -35 Calzone img/productos/img_producto.png 450 t 3 -36 Fritas img/productos/img_producto.png 250 t 3 -37 Aros de cebolla img/productos/img_producto.png 320 t 3 -38 Papas con cheddar img/productos/img_producto.png 250 t 3 -41 Tostones img/productos/img_producto.png 250 t 3 -42 Corona chica img/productos/img_producto.png 150 t 4 -43 Corona grande img/productos/img_producto.png 230 t 4 -44 Patricia Dunkel (lata) img/productos/img_producto.png 150 t 4 -45 Patricia Dunkel (grande) img/productos/img_producto.png 280 t 4 -46 Zillertal (lata) img/productos/img_producto.png 150 t 4 -47 Zillertal (grande) img/productos/img_producto.png 280 t 4 -48 Patagonia Weisse img/productos/img_producto.png 230 t 4 -19 Cappuccino img/productos/img_producto.png 140 t 2 -50 Patagonia Bohemian img/productos/img_producto.png 230 t 4 -49 Patagonia 24.7 img/productos/img_producto.png 230 t 4 -1 Desayuno americano para dos img/productos/img_producto.png 800 t 1 -51 Patagonia Amber Lager img/productos/img_producto.png 240 t 4 -33 Una Vaina Bien img/productos/img_producto.png 550 t 3 -40 Tequeños img/productos/img_producto.png 250 f 3 -52 Monster img/productos/img_producto.png 140 t 4 -39 Pastelitos img/productos/img_producto.png 250 t 3 -\. - - --- --- Data for Name: prov_mate_prima; Type: TABLE DATA; Schema: public; Owner: manso --- - -COPY public.prov_mate_prima (id_proveedor, id_mat_prima) FROM stdin; -3 2 -2 3 -2 4 -3 1 -2 9 -3 10 -2 8 -3 7 -2 6 -3 5 -\. - - --- --- Data for Name: prov_producto; Type: TABLE DATA; Schema: public; Owner: manso --- - -COPY public.prov_producto (id_proveedor, id_producto) FROM stdin; -\. - - --- --- Data for Name: proveedores; Type: TABLE DATA; Schema: public; Owner: manso --- - -COPY public.proveedores (id_proveedor, rut, raz_social, direccion, contacto) FROM stdin; -1 217795000011 Emilupe S.R.L. \N 091049216 -2 216450470015 Finesa Trading S.A. \N 094426877 -3 \N Otro \N \N -4 \N Gara Gardo S en C \N \N -\. - - --- --- Data for Name: receta_producto; Type: TABLE DATA; Schema: public; Owner: manso --- - -COPY public.receta_producto (id_producto, id_mat_prima, qty_por_unidad) FROM stdin; -28 1 1.000 -19 1 1.000 -50 7 1.000 -49 8 1.000 -17 2 2.000 -17 3 21.500 -1 2 1.000 -1 10 10.000 -51 6 1.000 -33 3 60.000 -33 2 25.000 -52 5 1.000 -39 10 1.000 -39 3 1.000 -\. - - --- --- Data for Name: roles; Type: TABLE DATA; Schema: public; Owner: manso --- - -COPY public.roles (id_rol, nombre) FROM stdin; -1 Dueño -2 Cocinero -3 Barista -4 Barman -5 Bachero -6 Mozo -\. - - --- --- Data for Name: usua_roles; Type: TABLE DATA; Schema: public; Owner: manso --- - -COPY public.usua_roles (id_usuario, id_rol, fec_asignacion, autor, activo) FROM stdin; -1 1 2025-08-25 14:39:39.204513 1 t -1 3 2025-08-25 14:39:39.204513 1 t -2 3 2025-08-25 14:39:39.204513 1 t -2 4 2025-08-25 14:39:39.204513 1 t -3 2 2025-08-25 14:39:39.204513 1 t -\. - - --- --- Data for Name: usuarios; Type: TABLE DATA; Schema: public; Owner: manso --- - -COPY public.usuarios (id_usuario, documento, img_perfil, nombre, apellido, correo, telefono, fec_nacimiento, activo) FROM stdin; -1 52809684 img_perfil.png Mateo Saldain mateosaldain02@gmail.com \N 2002-08-11 t -2 55683627 img_perfil.png Cristopher Moreno \N \N 2001-08-11 t -3 49953084 img_perfil.png Bruno Correa \N \N 1999-08-19 t -\. - - --- --- Name: asistencia_intervalo_id_intervalo_seq; Type: SEQUENCE SET; Schema: public; Owner: manso --- - -SELECT pg_catalog.setval('public.asistencia_intervalo_id_intervalo_seq', 108, true); - - --- --- Name: asistencia_raw_id_raw_seq; Type: SEQUENCE SET; Schema: public; Owner: manso --- - -SELECT pg_catalog.setval('public.asistencia_raw_id_raw_seq', 88, true); - - --- --- Name: categorias_id_categoria_seq; Type: SEQUENCE SET; Schema: public; Owner: manso --- - -SELECT pg_catalog.setval('public.categorias_id_categoria_seq', 4, true); - - --- --- Name: clientes_id_cliente_seq; Type: SEQUENCE SET; Schema: public; Owner: manso --- - -SELECT pg_catalog.setval('public.clientes_id_cliente_seq', 1, true); - - --- --- Name: comandas_id_comanda_seq; Type: SEQUENCE SET; Schema: public; Owner: manso --- - -SELECT pg_catalog.setval('public.comandas_id_comanda_seq', 55, true); - - --- --- Name: compras_id_compra_seq; Type: SEQUENCE SET; Schema: public; Owner: manso --- - -SELECT pg_catalog.setval('public.compras_id_compra_seq', 66, true); - - --- --- Name: deta_comandas_id_det_comanda_seq; Type: SEQUENCE SET; Schema: public; Owner: manso --- - -SELECT pg_catalog.setval('public.deta_comandas_id_det_comanda_seq', 117, true); - - --- --- Name: mate_primas_id_mat_prima_seq; Type: SEQUENCE SET; Schema: public; Owner: manso --- - -SELECT pg_catalog.setval('public.mate_primas_id_mat_prima_seq', 10, true); - - --- --- Name: mesas_id_mesa_seq; Type: SEQUENCE SET; Schema: public; Owner: manso --- - -SELECT pg_catalog.setval('public.mesas_id_mesa_seq', 14, true); - - --- --- Name: productos_id_producto_seq; Type: SEQUENCE SET; Schema: public; Owner: manso --- - -SELECT pg_catalog.setval('public.productos_id_producto_seq', 52, true); - - --- --- Name: proveedores_id_proveedor_seq; Type: SEQUENCE SET; Schema: public; Owner: manso --- - -SELECT pg_catalog.setval('public.proveedores_id_proveedor_seq', 4, true); - - --- --- Name: roles_id_rol_seq; Type: SEQUENCE SET; Schema: public; Owner: manso --- - -SELECT pg_catalog.setval('public.roles_id_rol_seq', 6, true); - - --- --- Name: usuarios_id_usuario_seq; Type: SEQUENCE SET; Schema: public; Owner: manso --- - -SELECT pg_catalog.setval('public.usuarios_id_usuario_seq', 3, true); - - --- --- Name: asistencia_intervalo asistencia_intervalo_id_usuario_desde_hasta_key; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.asistencia_intervalo - ADD CONSTRAINT asistencia_intervalo_id_usuario_desde_hasta_key UNIQUE (id_usuario, desde, hasta); - - --- --- Name: asistencia_intervalo asistencia_intervalo_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.asistencia_intervalo - ADD CONSTRAINT asistencia_intervalo_pkey PRIMARY KEY (id_intervalo); - - --- --- Name: asistencia_raw asistencia_raw_id_usuario_ts_key; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.asistencia_raw - ADD CONSTRAINT asistencia_raw_id_usuario_ts_key UNIQUE (id_usuario, ts); - - --- --- Name: asistencia_raw asistencia_raw_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.asistencia_raw - ADD CONSTRAINT asistencia_raw_pkey PRIMARY KEY (id_raw); - - --- --- Name: categorias categorias_nombre_key; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.categorias - ADD CONSTRAINT categorias_nombre_key UNIQUE (nombre); - - --- --- Name: categorias categorias_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.categorias - ADD CONSTRAINT categorias_pkey PRIMARY KEY (id_categoria); - - --- --- Name: clientes clientes_correo_key; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.clientes - ADD CONSTRAINT clientes_correo_key UNIQUE (correo); - - --- --- Name: clientes clientes_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.clientes - ADD CONSTRAINT clientes_pkey PRIMARY KEY (id_cliente); - - --- --- Name: clientes clientes_telefono_key; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.clientes - ADD CONSTRAINT clientes_telefono_key UNIQUE (telefono); - - --- --- Name: comandas comandas_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.comandas - ADD CONSTRAINT comandas_pkey PRIMARY KEY (id_comanda); - - --- --- Name: compras compras_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.compras - ADD CONSTRAINT compras_pkey PRIMARY KEY (id_compra); - - --- --- Name: deta_comandas deta_comandas_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.deta_comandas - ADD CONSTRAINT deta_comandas_pkey PRIMARY KEY (id_det_comanda); - - --- --- Name: deta_comp_materias deta_comp_materias_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.deta_comp_materias - ADD CONSTRAINT deta_comp_materias_pkey PRIMARY KEY (id_compra, id_mat_prima); - - --- --- Name: deta_comp_producto deta_comp_producto_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.deta_comp_producto - ADD CONSTRAINT deta_comp_producto_pkey PRIMARY KEY (id_compra, id_producto); - - --- --- Name: mate_primas mate_primas_nombre_key; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.mate_primas - ADD CONSTRAINT mate_primas_nombre_key UNIQUE (nombre); - - --- --- Name: mate_primas mate_primas_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.mate_primas - ADD CONSTRAINT mate_primas_pkey PRIMARY KEY (id_mat_prima); - - --- --- Name: mesas mesas_apodo_key; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.mesas - ADD CONSTRAINT mesas_apodo_key UNIQUE (apodo); - - --- --- Name: mesas mesas_numero_key; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.mesas - ADD CONSTRAINT mesas_numero_key UNIQUE (numero); - - --- --- Name: mesas mesas_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.mesas - ADD CONSTRAINT mesas_pkey PRIMARY KEY (id_mesa); - - --- --- Name: productos productos_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.productos - ADD CONSTRAINT productos_pkey PRIMARY KEY (id_producto); - - --- --- Name: prov_mate_prima prov_mate_prima_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.prov_mate_prima - ADD CONSTRAINT prov_mate_prima_pkey PRIMARY KEY (id_proveedor, id_mat_prima); - - --- --- Name: prov_producto prov_producto_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.prov_producto - ADD CONSTRAINT prov_producto_pkey PRIMARY KEY (id_proveedor, id_producto); - - --- --- Name: proveedores proveedores_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.proveedores - ADD CONSTRAINT proveedores_pkey PRIMARY KEY (id_proveedor); - - --- --- Name: proveedores proveedores_rut_key; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.proveedores - ADD CONSTRAINT proveedores_rut_key UNIQUE (rut); - - --- --- Name: receta_producto receta_producto_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.receta_producto - ADD CONSTRAINT receta_producto_pkey PRIMARY KEY (id_producto, id_mat_prima); - - --- --- Name: roles roles_nombre_key; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.roles - ADD CONSTRAINT roles_nombre_key UNIQUE (nombre); - - --- --- Name: roles roles_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.roles - ADD CONSTRAINT roles_pkey PRIMARY KEY (id_rol); - - --- --- Name: usua_roles usua_roles_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.usua_roles - ADD CONSTRAINT usua_roles_pkey PRIMARY KEY (id_usuario, id_rol); - - --- --- Name: usuarios usuarios_documento_key; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.usuarios - ADD CONSTRAINT usuarios_documento_key UNIQUE (documento); - - --- --- Name: usuarios usuarios_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.usuarios - ADD CONSTRAINT usuarios_pkey PRIMARY KEY (id_usuario); - - --- --- Name: compras_fec_compra_idx; Type: INDEX; Schema: public; Owner: manso --- - -CREATE INDEX compras_fec_compra_idx ON public.compras USING btree (fec_compra); - - --- --- Name: idx_asist_int_usuario_fecha; Type: INDEX; Schema: public; Owner: manso --- - -CREATE INDEX idx_asist_int_usuario_fecha ON public.asistencia_intervalo USING btree (id_usuario, fecha); - - --- --- Name: idx_asist_raw_usuario_ts; Type: INDEX; Schema: public; Owner: manso --- - -CREATE INDEX idx_asist_raw_usuario_ts ON public.asistencia_raw USING btree (id_usuario, ts); - - --- --- Name: idx_detalle_comanda_comanda; Type: INDEX; Schema: public; Owner: manso --- - -CREATE INDEX idx_detalle_comanda_comanda ON public.deta_comandas USING btree (id_comanda); - - --- --- Name: idx_detalle_comanda_producto; Type: INDEX; Schema: public; Owner: manso --- - -CREATE INDEX idx_detalle_comanda_producto ON public.deta_comandas USING btree (id_producto); - - --- --- Name: ix_comandas_fec_cierre; Type: INDEX; Schema: public; Owner: manso --- - -CREATE INDEX ix_comandas_fec_cierre ON public.comandas USING btree (fec_cierre); - - --- --- Name: ix_comandas_id; Type: INDEX; Schema: public; Owner: manso --- - -CREATE INDEX ix_comandas_id ON public.comandas USING btree (id_comanda); - - --- --- Name: ix_deta_comandas_id_comanda; Type: INDEX; Schema: public; Owner: manso --- - -CREATE INDEX ix_deta_comandas_id_comanda ON public.deta_comandas USING btree (id_comanda); - - --- --- Name: ix_deta_comandas_id_producto; Type: INDEX; Schema: public; Owner: manso --- - -CREATE INDEX ix_deta_comandas_id_producto ON public.deta_comandas USING btree (id_producto); - - --- --- Name: asistencia_intervalo asistencia_intervalo_id_usuario_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.asistencia_intervalo - ADD CONSTRAINT asistencia_intervalo_id_usuario_fkey FOREIGN KEY (id_usuario) REFERENCES public.usuarios(id_usuario) ON DELETE CASCADE; - - --- --- Name: asistencia_raw asistencia_raw_id_usuario_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.asistencia_raw - ADD CONSTRAINT asistencia_raw_id_usuario_fkey FOREIGN KEY (id_usuario) REFERENCES public.usuarios(id_usuario) ON DELETE CASCADE; - - --- --- Name: comandas comandas_id_mesa_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.comandas - ADD CONSTRAINT comandas_id_mesa_fkey FOREIGN KEY (id_mesa) REFERENCES public.mesas(id_mesa); - - --- --- Name: comandas comandas_id_usuario_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.comandas - ADD CONSTRAINT comandas_id_usuario_fkey FOREIGN KEY (id_usuario) REFERENCES public.usuarios(id_usuario); - - --- --- Name: compras compras_id_proveedor_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.compras - ADD CONSTRAINT compras_id_proveedor_fkey FOREIGN KEY (id_proveedor) REFERENCES public.proveedores(id_proveedor); - - --- --- Name: deta_comandas deta_comandas_id_comanda_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.deta_comandas - ADD CONSTRAINT deta_comandas_id_comanda_fkey FOREIGN KEY (id_comanda) REFERENCES public.comandas(id_comanda) ON DELETE CASCADE; - - --- --- Name: deta_comandas deta_comandas_id_producto_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.deta_comandas - ADD CONSTRAINT deta_comandas_id_producto_fkey FOREIGN KEY (id_producto) REFERENCES public.productos(id_producto); - - --- --- Name: deta_comp_materias deta_comp_materias_id_compra_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.deta_comp_materias - ADD CONSTRAINT deta_comp_materias_id_compra_fkey FOREIGN KEY (id_compra) REFERENCES public.compras(id_compra) ON DELETE CASCADE; - - --- --- Name: deta_comp_materias deta_comp_materias_id_mat_prima_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.deta_comp_materias - ADD CONSTRAINT deta_comp_materias_id_mat_prima_fkey FOREIGN KEY (id_mat_prima) REFERENCES public.mate_primas(id_mat_prima); - - --- --- Name: deta_comp_producto deta_comp_producto_id_compra_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.deta_comp_producto - ADD CONSTRAINT deta_comp_producto_id_compra_fkey FOREIGN KEY (id_compra) REFERENCES public.compras(id_compra) ON DELETE CASCADE; - - --- --- Name: deta_comp_producto deta_comp_producto_id_producto_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.deta_comp_producto - ADD CONSTRAINT deta_comp_producto_id_producto_fkey FOREIGN KEY (id_producto) REFERENCES public.productos(id_producto); - - --- --- Name: productos productos_id_categoria_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.productos - ADD CONSTRAINT productos_id_categoria_fkey FOREIGN KEY (id_categoria) REFERENCES public.categorias(id_categoria); - - --- --- Name: prov_mate_prima prov_mate_prima_id_mat_prima_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.prov_mate_prima - ADD CONSTRAINT prov_mate_prima_id_mat_prima_fkey FOREIGN KEY (id_mat_prima) REFERENCES public.mate_primas(id_mat_prima); - - --- --- Name: prov_mate_prima prov_mate_prima_id_proveedor_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.prov_mate_prima - ADD CONSTRAINT prov_mate_prima_id_proveedor_fkey FOREIGN KEY (id_proveedor) REFERENCES public.proveedores(id_proveedor) ON DELETE CASCADE; - - --- --- Name: prov_producto prov_producto_id_producto_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.prov_producto - ADD CONSTRAINT prov_producto_id_producto_fkey FOREIGN KEY (id_producto) REFERENCES public.productos(id_producto); - - --- --- Name: prov_producto prov_producto_id_proveedor_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.prov_producto - ADD CONSTRAINT prov_producto_id_proveedor_fkey FOREIGN KEY (id_proveedor) REFERENCES public.proveedores(id_proveedor) ON DELETE CASCADE; - - --- --- Name: receta_producto receta_producto_id_mat_prima_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.receta_producto - ADD CONSTRAINT receta_producto_id_mat_prima_fkey FOREIGN KEY (id_mat_prima) REFERENCES public.mate_primas(id_mat_prima); - - --- --- Name: receta_producto receta_producto_id_producto_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.receta_producto - ADD CONSTRAINT receta_producto_id_producto_fkey FOREIGN KEY (id_producto) REFERENCES public.productos(id_producto) ON DELETE CASCADE; - - --- --- Name: usua_roles usua_roles_autor_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.usua_roles - ADD CONSTRAINT usua_roles_autor_fkey FOREIGN KEY (autor) REFERENCES public.usuarios(id_usuario); - - --- --- Name: usua_roles usua_roles_id_rol_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.usua_roles - ADD CONSTRAINT usua_roles_id_rol_fkey FOREIGN KEY (id_rol) REFERENCES public.roles(id_rol); - - --- --- Name: usua_roles usua_roles_id_usuario_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY public.usua_roles - ADD CONSTRAINT usua_roles_id_usuario_fkey FOREIGN KEY (id_usuario) REFERENCES public.usuarios(id_usuario) ON DELETE CASCADE; - - --- --- PostgreSQL database dump complete --- - -\unrestrict londHmqT4llS8Wof4ZnceO2dyFhn4jiR5xbaszMgZpMczgr6aVW6xQJxeUdqJwa - diff --git a/services/auth/src/db/initTenant.sql b/services/auth/src/db/initTenant.sql deleted file mode 100644 index a43ab8c..0000000 --- a/services/auth/src/db/initTenant.sql +++ /dev/null @@ -1,2239 +0,0 @@ --- =============================================================== --- SuiteCoffee — Template de inicialización por tenant --- Archivo: 01_init.sql --- Uso (psql): --- \set SCHEMA_NAME schema_tenant_12345678abcd --- CREATE SCHEMA IF NOT EXISTS :"SCHEMA_NAME"; --- -- Opcional: SET ROLE ; --- \i 01_init.sql --- =============================================================== - -BEGIN; -SET client_encoding = 'UTF8'; -SET standard_conforming_strings = on; -SET check_function_bodies = false; -SET client_min_messages = warning; -SET row_security = off; - --- establece el schema de destino -SET search_path = :"SCHEMA_NAME", public; - --- --- PostgreSQL database dump --- - -\restrict londHmqT4llS8Wof4ZnceO2dyFhn4jiR5xbaszMgZpMczgr6aVW6xQJxeUdqJwa - --- Dumped from database version 16.10 (Debian 16.10-1.pgdg13+1) --- Dumped by pg_dump version 16.10 (Debian 16.10-1.pgdg13+1) - -SET statement_timeout = 0; -SET lock_timeout = 0; -SET idle_in_transaction_session_timeout = 0; -SET client_encoding = 'UTF8'; -SET standard_conforming_strings = on; -SET check_function_bodies = false; -SET xmloption = content; -SET client_min_messages = warning; -SET row_security = off; - --- --- Name: asistencia_delete_raw(bigint, text); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION asistencia_delete_raw(p_id_raw bigint, p_tz text DEFAULT 'America/Montevideo'::text) RETURNS jsonb - LANGUAGE plpgsql - AS $$ -DECLARE - v_id_usuario INT; - v_ts TIMESTAMPTZ; - v_t0 TIMESTAMPTZ; - v_t1 TIMESTAMPTZ; - v_del_raw INT; - v_del INT; - v_ins INT; -BEGIN - SELECT id_usuario, ts INTO v_id_usuario, v_ts - FROM asistencia_raw WHERE id_raw = p_id_raw; - IF v_id_usuario IS NULL THEN - RETURN jsonb_build_object('deleted',0,'msg','id_raw inexistente'); - END IF; - - v_t0 := v_ts - INTERVAL '1 day'; - v_t1 := v_ts + INTERVAL '1 day'; - - -- borrar raw - DELETE FROM asistencia_raw WHERE id_raw = p_id_raw; - GET DIAGNOSTICS v_del_raw = ROW_COUNT; - - -- recomputar pares en ventana - WITH tl AS ( - SELECT ar.ts, - ROW_NUMBER() OVER (ORDER BY ar.ts) AS rn - FROM asistencia_raw ar - WHERE ar.id_usuario = v_id_usuario - AND ar.ts BETWEEN v_t0 AND v_t1 - ), - ready AS ( - SELECT (t1.ts AT TIME ZONE p_tz)::date AS fecha, - t1.ts AS desde, - t2.ts AS hasta, - EXTRACT(EPOCH FROM (t2.ts - t1.ts))/60.0 AS dur_min - FROM tl t1 - JOIN tl t2 ON t2.rn = t1.rn + 1 - WHERE (t1.rn % 2) = 1 AND t2.ts > t1.ts - ), - del AS ( - DELETE FROM asistencia_intervalo ai - WHERE ai.id_usuario = v_id_usuario - AND (ai.desde BETWEEN v_t0 AND v_t1 OR ai.hasta BETWEEN v_t0 AND v_t1) - RETURNING 1 - ), - ins AS ( - INSERT INTO asistencia_intervalo (id_usuario, fecha, desde, hasta, dur_min, origen) - SELECT v_id_usuario, r.fecha, r.desde, r.hasta, r.dur_min, 'delete_adjust' - FROM ready r - ON CONFLICT (id_usuario, desde, hasta) DO NOTHING - RETURNING 1 - ) - SELECT (SELECT COUNT(*) FROM del), (SELECT COUNT(*) FROM ins) INTO v_del, v_ins; - - RETURN jsonb_build_object('deleted',v_del_raw,'deleted_pairs',v_del,'inserted_pairs',v_ins); -END; -$$; - --- --- Name: asistencia_get(text, date, date, text); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION asistencia_get(p_doc text, p_desde date, p_hasta date, p_tz text DEFAULT 'America/Montevideo'::text) RETURNS jsonb - LANGUAGE sql - AS $$ -WITH u AS ( - SELECT id_usuario, documento, nombre, apellido - FROM usuarios - WHERE regexp_replace(documento,'^\s*0+','','g') = regexp_replace(p_doc,'^\s*0+','','g') - LIMIT 1 -), -r AS ( - SELECT ar.id_raw, - (ar.ts AT TIME ZONE p_tz)::date AS fecha, - to_char(ar.ts AT TIME ZONE p_tz,'HH24:MI:SS') AS hora, - COALESCE(ar.modo,'') AS modo, - COALESCE(ar.origen,'') AS origen, - ar.ts - FROM asistencia_raw ar - JOIN u USING (id_usuario) - WHERE (ar.ts AT TIME ZONE p_tz)::date BETWEEN p_desde AND p_hasta -), -i AS ( - SELECT ai.id_intervalo, - ai.fecha, - to_char(ai.desde AT TIME ZONE p_tz,'HH24:MI:SS') AS desde_hora, - to_char(ai.hasta AT TIME ZONE p_tz,'HH24:MI:SS') AS hasta_hora, - ai.dur_min - FROM asistencia_intervalo ai - JOIN u USING (id_usuario) - WHERE ai.fecha BETWEEN p_desde AND p_hasta -) -SELECT jsonb_build_object( - 'usuario', (SELECT to_jsonb(u.*) FROM u), - 'raw', COALESCE((SELECT jsonb_agg(to_jsonb(r.*) ORDER BY r.ts) FROM r),'[]'::jsonb), - 'intervalos', COALESCE((SELECT jsonb_agg(to_jsonb(i.*) ORDER BY i.fecha, i.id_intervalo) FROM i),'[]'::jsonb) -); -$$; - --- --- Name: asistencia_update_raw(bigint, date, text, text, text); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION asistencia_update_raw(p_id_raw bigint, p_fecha date, p_hora text, p_modo text, p_tz text DEFAULT 'America/Montevideo'::text) RETURNS jsonb - LANGUAGE plpgsql - AS $$ -DECLARE - v_id_usuario INT; - v_ts_old TIMESTAMPTZ; - v_ts_new TIMESTAMPTZ; - v_t0 TIMESTAMPTZ; - v_t1 TIMESTAMPTZ; - v_del INT; - v_ins INT; -BEGIN - -- leer estado previo - SELECT id_usuario, ts INTO v_id_usuario, v_ts_old - FROM asistencia_raw WHERE id_raw = p_id_raw; - IF v_id_usuario IS NULL THEN - RETURN jsonb_build_object('updated',0,'msg','id_raw inexistente'); - END IF; - - -- construir ts nuevo - v_ts_new := make_timestamptz( - EXTRACT(YEAR FROM p_fecha)::INT, - EXTRACT(MONTH FROM p_fecha)::INT, - EXTRACT(DAY FROM p_fecha)::INT, - split_part(p_hora,':',1)::INT, - split_part(p_hora,':',2)::INT, - COALESCE(NULLIF(split_part(p_hora,':',3),''), '0')::INT, - p_tz); - - -- aplicar update - UPDATE asistencia_raw - SET ts = v_ts_new, - modo = COALESCE(p_modo, modo) - WHERE id_raw = p_id_raw; - - -- ventana de recálculo - v_t0 := LEAST(v_ts_old, v_ts_new) - INTERVAL '1 day'; - v_t1 := GREATEST(v_ts_old, v_ts_new) + INTERVAL '1 day'; - - -- recomputar pares en la ventana: borrar los del rango y reinsertar - WITH tl AS ( - SELECT ar.ts, - ROW_NUMBER() OVER (ORDER BY ar.ts) AS rn - FROM asistencia_raw ar - WHERE ar.id_usuario = v_id_usuario - AND ar.ts BETWEEN v_t0 AND v_t1 - ), - ready AS ( - SELECT (t1.ts AT TIME ZONE p_tz)::date AS fecha, - t1.ts AS desde, - t2.ts AS hasta, - EXTRACT(EPOCH FROM (t2.ts - t1.ts))/60.0 AS dur_min - FROM tl t1 - JOIN tl t2 ON t2.rn = t1.rn + 1 - WHERE (t1.rn % 2) = 1 AND t2.ts > t1.ts - ), - del AS ( - DELETE FROM asistencia_intervalo ai - WHERE ai.id_usuario = v_id_usuario - AND (ai.desde BETWEEN v_t0 AND v_t1 OR ai.hasta BETWEEN v_t0 AND v_t1) - RETURNING 1 - ), - ins AS ( - INSERT INTO asistencia_intervalo (id_usuario, fecha, desde, hasta, dur_min, origen) - SELECT v_id_usuario, r.fecha, r.desde, r.hasta, r.dur_min, 'edit_manual' - FROM ready r - ON CONFLICT (id_usuario, desde, hasta) DO NOTHING - RETURNING 1 - ) - SELECT (SELECT COUNT(*) FROM del), (SELECT COUNT(*) FROM ins) INTO v_del, v_ins; - - RETURN jsonb_build_object('updated',1,'deleted_pairs',v_del,'inserted_pairs',v_ins); -END; -$$; - --- --- Name: delete_compra(integer); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION delete_compra(p_id_compra integer) RETURNS void - LANGUAGE plpgsql - AS $$ -BEGIN - DELETE FROM deta_comp_materias WHERE id_compra = p_id_compra; - DELETE FROM deta_comp_producto WHERE id_compra = p_id_compra; - DELETE FROM compras WHERE id_compra = p_id_compra; -END; -$$; - --- --- Name: f_abrir_comanda(integer); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION f_abrir_comanda(p_id integer) RETURNS jsonb - LANGUAGE plpgsql - AS $$ -DECLARE r jsonb; -BEGIN - UPDATE comandas - SET estado = 'abierta', - fec_cierre = NULL - WHERE id_comanda = p_id; - - IF NOT FOUND THEN - RETURN NULL; - END IF; - - SELECT to_jsonb(v) INTO r - FROM v_comandas_resumen v - WHERE v.id_comanda = p_id; - - RETURN r; -END; -$$; - --- --- Name: f_cerrar_comanda(integer); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION f_cerrar_comanda(p_id integer) RETURNS jsonb - LANGUAGE plpgsql - AS $$ -DECLARE r jsonb; -BEGIN - UPDATE comandas - SET estado = 'cerrada', - fec_cierre = COALESCE(fec_cierre, NOW()) - WHERE id_comanda = p_id; - - IF NOT FOUND THEN - RETURN NULL; - END IF; - - SELECT to_jsonb(v) INTO r - FROM v_comandas_resumen v - WHERE v.id_comanda = p_id; - - RETURN r; -END; -$$; - --- --- Name: f_comanda_detalle_json(integer); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION f_comanda_detalle_json(p_id_comanda integer) RETURNS jsonb - LANGUAGE sql - AS $$ -WITH base AS ( - SELECT - c.id_comanda, - c.fec_creacion, - c.estado, - c.observaciones, - u.id_usuario, - u.nombre AS usuario_nombre, - u.apellido AS usuario_apellido, - m.id_mesa, - m.numero AS mesa_numero, - m.apodo AS mesa_apodo, - d.id_producto, - p.nombre AS producto_nombre, - d.cantidad, - d.pre_unitario, - (d.cantidad * d.pre_unitario) AS subtotal - FROM comandas c - JOIN usuarios u ON u.id_usuario = c.id_usuario - JOIN mesas m ON m.id_mesa = c.id_mesa - LEFT JOIN deta_comandas d ON d.id_comanda = c.id_comanda - LEFT JOIN productos p ON p.id_producto = d.id_producto - WHERE c.id_comanda = p_id_comanda -), -hdr AS ( - -- 1 sola fila con los datos de cabecera - SELECT DISTINCT - id_comanda, fec_creacion, estado, observaciones, - id_usuario, usuario_nombre, usuario_apellido, - id_mesa, mesa_numero, mesa_apodo - FROM base -), -agg_items AS ( - SELECT - COALESCE( - jsonb_agg( - jsonb_build_object( - 'producto_id', b.id_producto, - 'producto', b.producto_nombre, - 'cantidad', b.cantidad, - 'pre_unitario', b.pre_unitario, - 'subtotal', b.subtotal - ) - ORDER BY b.producto_nombre NULLS LAST - ) FILTER (WHERE b.id_producto IS NOT NULL), - '[]'::jsonb - ) AS items - FROM base b -), -tot AS ( - SELECT - COUNT(*) FILTER (WHERE id_producto IS NOT NULL) AS items, - COALESCE(SUM(subtotal), 0)::numeric AS total - FROM base -) -SELECT - CASE - WHEN EXISTS (SELECT 1 FROM hdr) THEN - jsonb_build_object( - 'id_comanda', h.id_comanda, - 'fec_creacion', h.fec_creacion, - 'estado', h.estado, - 'observaciones',h.observaciones, - 'usuario', jsonb_build_object( - 'id_usuario', h.id_usuario, - 'nombre', h.usuario_nombre, - 'apellido', h.usuario_apellido - ), - 'mesa', jsonb_build_object( - 'id_mesa', h.id_mesa, - 'numero', h.mesa_numero, - 'apodo', h.mesa_apodo - ), - 'items', i.items, - 'totales', jsonb_build_object( - 'items', t.items, - 'total', t.total - ) - ) - ELSE NULL - END -FROM hdr h, agg_items i, tot t; -$$; - --- --- Name: f_comanda_detalle_rows(integer); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION f_comanda_detalle_rows(p_id_comanda integer) RETURNS TABLE(id_comanda integer, fec_creacion timestamp without time zone, estado text, observaciones text, id_usuario integer, usuario_nombre text, usuario_apellido text, id_mesa integer, mesa_numero integer, mesa_apodo text, producto_id integer, producto_nombre text, cantidad numeric, pre_unitario numeric, subtotal numeric, items integer, total numeric) - LANGUAGE sql - AS $$ -WITH base AS ( - SELECT - c.id_comanda, c.fec_creacion, c.estado, c.observaciones, - u.id_usuario, u.nombre AS usuario_nombre, u.apellido AS usuario_apellido, - m.id_mesa, m.numero AS mesa_numero, m.apodo AS mesa_apodo, - d.id_producto, p.nombre AS producto_nombre, - d.cantidad, d.pre_unitario, - (d.cantidad * d.pre_unitario) AS subtotal - FROM comandas c - JOIN usuarios u ON u.id_usuario = c.id_usuario - JOIN mesas m ON m.id_mesa = c.id_mesa - LEFT JOIN deta_comandas d ON d.id_comanda = c.id_comanda - LEFT JOIN productos p ON p.id_producto = d.id_producto - WHERE c.id_comanda = p_id_comanda -), -tot AS ( - SELECT - COUNT(*) FILTER (WHERE id_producto IS NOT NULL) AS items, - COALESCE(SUM(subtotal), 0) AS total - FROM base -) -SELECT - b.id_comanda, b.fec_creacion, b.estado, b.observaciones, - b.id_usuario, b.usuario_nombre, b.usuario_apellido, - b.id_mesa, b.mesa_numero, b.mesa_apodo, - b.id_producto, b.producto_nombre, - b.cantidad, b.pre_unitario, b.subtotal, - t.items, t.total -FROM base b CROSS JOIN tot t -ORDER BY b.producto_nombre NULLS LAST; -$$; - -SET default_tablespace = ''; - -SET default_table_access_method = heap; - --- --- Name: comandas; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE comandas ( - id_comanda integer NOT NULL, - id_usuario integer NOT NULL, - id_mesa integer NOT NULL, - fec_creacion timestamp without time zone DEFAULT now() NOT NULL, - estado text NOT NULL, - observaciones text, - fec_cierre timestamp with time zone, - CONSTRAINT comandas_estado_check CHECK ((estado = ANY (ARRAY['abierta'::text, 'cerrada'::text, 'pagada'::text, 'anulada'::text]))) -); - --- --- Name: COLUMN comandas.fec_cierre; Type: COMMENT; Schema: public; Owner: manso --- - -COMMENT ON COLUMN comandas.fec_cierre IS 'Fecha/hora de cierre de la comanda (NULL si está abierta)'; - --- --- Name: deta_comandas; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE deta_comandas ( - id_det_comanda integer NOT NULL, - id_comanda integer NOT NULL, - id_producto integer NOT NULL, - cantidad numeric(12,3) NOT NULL, - pre_unitario numeric(12,2) NOT NULL, - observaciones text, - CONSTRAINT deta_comandas_cantidad_check CHECK ((cantidad > (0)::numeric)), - CONSTRAINT deta_comandas_pre_unitario_check CHECK ((pre_unitario >= (0)::numeric)) -); - --- --- Name: mesas; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE mesas ( - id_mesa integer NOT NULL, - numero integer NOT NULL, - apodo text NOT NULL, - estado text DEFAULT 'libre'::text NOT NULL, - CONSTRAINT mesas_estado_check CHECK ((estado = ANY (ARRAY['libre'::text, 'ocupada'::text, 'reservada'::text]))) -); - --- --- Name: usuarios; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE usuarios ( - id_usuario integer NOT NULL, - documento text, - img_perfil character varying(255) DEFAULT 'img_perfil.png'::character varying NOT NULL, - nombre text NOT NULL, - apellido text NOT NULL, - correo text, - telefono text, - fec_nacimiento date, - activo boolean DEFAULT true -); - --- --- Name: v_comandas_resumen; Type: VIEW; Schema: public; Owner: manso --- - -CREATE VIEW v_comandas_resumen AS - WITH items AS ( - SELECT d.id_comanda, - count(*) AS items, - sum((d.cantidad * d.pre_unitario)) AS total - FROM deta_comandas d - GROUP BY d.id_comanda - ) - SELECT c.id_comanda, - c.fec_creacion, - c.estado, - c.observaciones, - u.id_usuario, - u.nombre AS usuario_nombre, - u.apellido AS usuario_apellido, - m.id_mesa, - m.numero AS mesa_numero, - m.apodo AS mesa_apodo, - COALESCE(i.items, (0)::bigint) AS items, - COALESCE(i.total, (0)::numeric) AS total, - c.fec_cierre, - CASE - WHEN (c.fec_cierre IS NOT NULL) THEN round((EXTRACT(epoch FROM (c.fec_cierre - (c.fec_creacion)::timestamp with time zone)) / 60.0), 1) - ELSE NULL::numeric - END AS duracion_min - FROM (((comandas c - JOIN usuarios u ON ((u.id_usuario = c.id_usuario))) - JOIN mesas m ON ((m.id_mesa = c.id_mesa))) - LEFT JOIN items i ON ((i.id_comanda = c.id_comanda))); - --- --- Name: f_comandas_resumen(text, integer); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION f_comandas_resumen(p_estado text DEFAULT NULL::text, p_limit integer DEFAULT 200) RETURNS SETOF v_comandas_resumen - LANGUAGE sql - AS $$ - SELECT * - FROM v_comandas_resumen - WHERE (p_estado IS NULL OR estado = p_estado) - ORDER BY id_comanda DESC - LIMIT p_limit; -$$; - --- --- Name: find_usuarios_por_documentos(jsonb); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION find_usuarios_por_documentos(p_docs jsonb) RETURNS jsonb - LANGUAGE sql - AS $$ -WITH docs AS ( - SELECT DISTINCT - regexp_replace(value::text, '^\s*0+', '', 'g') AS doc_clean, - value::text AS original - FROM jsonb_array_elements_text(COALESCE(p_docs,'[]')) -), -rows AS ( - SELECT d.original AS documento, - u.nombre, - u.apellido, - (u.id_usuario IS NOT NULL) AS found - FROM docs d - LEFT JOIN usuarios u - ON regexp_replace(u.documento, '^\s*0+', '', 'g') = d.doc_clean -) -SELECT COALESCE( - jsonb_object_agg( - documento, - jsonb_build_object( - 'nombre', COALESCE(nombre, ''), - 'apellido', COALESCE(apellido, ''), - 'found', found - ) - ), - '{}'::jsonb -) -FROM rows; -$$; - --- --- Name: get_compra(integer); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION get_compra(p_id_compra integer) RETURNS jsonb - LANGUAGE sql - AS $$ -WITH cab AS ( - SELECT c.id_compra, c.id_proveedor, c.fec_compra, c.total - FROM compras c - WHERE c.id_compra = p_id_compra -), -dm AS ( - SELECT 'MAT'::text AS tipo, d.id_mat_prima AS id, - d.cantidad, d.pre_unitario AS precio - FROM deta_comp_materias d WHERE d.id_compra = p_id_compra -), -dp AS ( - SELECT 'PROD'::text AS tipo, d.id_producto AS id, - d.cantidad, d.pre_unitario AS precio - FROM deta_comp_producto d WHERE d.id_compra = p_id_compra -), -det AS ( - SELECT jsonb_agg(to_jsonb(x.*)) AS detalles - FROM ( - SELECT * FROM dm - UNION ALL - SELECT * FROM dp - ) x -) -SELECT jsonb_build_object( - 'id_compra', (SELECT id_compra FROM cab), - 'id_proveedor',(SELECT id_proveedor FROM cab), - 'fec_compra', to_char((SELECT fec_compra FROM cab),'YYYY-MM-DD HH24:MI:SS'), - 'total', (SELECT total FROM cab), - 'detalles', COALESCE((SELECT detalles FROM det),'[]'::jsonb) -); -$$; - --- --- Name: get_materia_prima(integer); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION get_materia_prima(p_id integer) RETURNS jsonb - LANGUAGE sql - AS $$ -SELECT jsonb_build_object( - 'materia', to_jsonb(mp), - 'proveedores', COALESCE( - ( - SELECT jsonb_agg( - jsonb_build_object( - 'id_proveedor', pr.id_proveedor, - 'raz_social', pr.raz_social, - 'rut', pr.rut, - 'contacto', pr.contacto, - 'direccion', pr.direccion - ) - ) - FROM prov_mate_prima pmp - JOIN proveedores pr ON pr.id_proveedor = pmp.id_proveedor - WHERE pmp.id_mat_prima = mp.id_mat_prima - ), - '[]'::jsonb - ) -) -FROM mate_primas mp -WHERE mp.id_mat_prima = p_id; -$$; - --- --- Name: get_producto(integer); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION get_producto(p_id integer) RETURNS jsonb - LANGUAGE sql - AS $$ -SELECT jsonb_build_object( - 'producto', to_jsonb(p), -- el registro completo del producto en JSONB - 'receta', COALESCE( - ( - SELECT jsonb_agg( - jsonb_build_object( - 'id_mat_prima', rp.id_mat_prima, - 'qty_por_unidad', rp.qty_por_unidad, - 'nombre', mp.nombre, - 'unidad', mp.unidad - ) - ) - FROM receta_producto rp - LEFT JOIN mate_primas mp USING (id_mat_prima) - WHERE rp.id_producto = p.id_producto - ), - '[]'::jsonb - ) -) -FROM productos p -WHERE p.id_producto = p_id; -$$; - --- --- Name: import_asistencia(jsonb, text, text); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION import_asistencia(p_registros jsonb, p_origen text, p_tz text DEFAULT 'America/Montevideo'::text) RETURNS jsonb - LANGUAGE plpgsql - AS $_$ -DECLARE - v_ins_raw INT; - v_ins_pairs INT; - v_miss JSONB; -BEGIN - WITH - -- 1) JSON -> filas - j AS ( - SELECT - regexp_replace(elem->>'doc','^\s*0+','','g')::TEXT AS doc_clean, - (elem->>'isoDate')::DATE AS d, - elem->>'time' AS time_str, - NULLIF(elem->>'mode','') AS modo - FROM jsonb_array_elements(COALESCE(p_registros,'[]')) elem - ), - -- 2) Vincular a usuarios - u AS ( - SELECT j.*, u.id_usuario - FROM j - LEFT JOIN usuarios u - ON regexp_replace(u.documento,'^\s*0+','','g') = j.doc_clean - ), - -- 3) Documentos faltantes - miss AS ( - SELECT jsonb_agg(doc_clean) AS missing - FROM u WHERE id_usuario IS NULL - ), - -- 4) TS determinista en TZ del negocio - parsed AS ( - SELECT - u.id_usuario, - u.modo, - make_timestamptz( - EXTRACT(YEAR FROM u.d)::INT, - EXTRACT(MONTH FROM u.d)::INT, - EXTRACT(DAY FROM u.d)::INT, - split_part(u.time_str,':',1)::INT, - split_part(u.time_str,':',2)::INT, - COALESCE(NULLIF(split_part(u.time_str,':',3),''),'0')::INT, - p_tz - ) AS ts_calc - FROM u - WHERE u.id_usuario IS NOT NULL - ), - -- 5) Ventana por usuario (±1 día de lo importado) - win AS ( - SELECT id_usuario, - (MIN(ts_calc) - INTERVAL '1 day') AS t0, - (MAX(ts_calc) + INTERVAL '1 day') AS t1 - FROM parsed - GROUP BY id_usuario - ), - -- 6) Lo existente en BD dentro de la ventana - existing AS ( - SELECT ar.id_usuario, ar.ts - FROM asistencia_raw ar - JOIN win w ON w.id_usuario = ar.id_usuario - AND ar.ts BETWEEN w.t0 AND w.t1 - ), - -- 7) CANDIDATE = existente ∪ archivo (sin duplicados) - candidate AS ( - SELECT id_usuario, ts FROM existing - UNION -- ¡clave para evitar doble click! - SELECT id_usuario, ts_calc AS ts FROM parsed - ), - -- 8) Paridad previa (cuántas marcas había ANTES de la ventana) - before_cnt AS ( - SELECT w.id_usuario, COUNT(*)::int AS cnt - FROM win w - JOIN asistencia_raw ar - ON ar.id_usuario = w.id_usuario - AND ar.ts < w.t0 - GROUP BY w.id_usuario - ), - -- 9) Línea de tiempo candidata y pares (1→2, 3→4…), jornada = día local del inicio - timeline AS ( - SELECT - c.id_usuario, - c.ts, - ROW_NUMBER() OVER (PARTITION BY c.id_usuario ORDER BY c.ts) AS rn - FROM candidate c - ), - ready AS ( - SELECT - t1.id_usuario, - (t1.ts AT TIME ZONE p_tz)::date AS fecha, - t1.ts AS desde, - t2.ts AS hasta, - EXTRACT(EPOCH FROM (t2.ts - t1.ts))/60.0 AS dur_min - FROM timeline t1 - JOIN timeline t2 - ON t2.id_usuario = t1.id_usuario - AND t2.rn = t1.rn + 1 - LEFT JOIN before_cnt b ON b.id_usuario = t1.id_usuario - WHERE ((COALESCE(b.cnt,0) + t1.rn) % 2) = 1 -- t1 es IN global - AND t2.ts > t1.ts - ), - -- 10) INSERT crudo (dedupe) - ins_raw AS ( - INSERT INTO asistencia_raw (id_usuario, ts, modo, origen) - SELECT id_usuario, ts_calc, - NULLIF(modo,'')::text, -- puede quedar NULL para auto-etiquetado - p_origen - FROM parsed - ON CONFLICT (id_usuario, ts) DO NOTHING - RETURNING 1 - ), - -- 11) Auto-etiquetar IN/OUT en BD para filas con modo vacío/'1' (tras insertar) - before_cnt2 AS ( - SELECT w.id_usuario, COUNT(*)::int AS cnt - FROM win w - JOIN asistencia_raw ar - ON ar.id_usuario = w.id_usuario - AND ar.ts < w.t0 - GROUP BY w.id_usuario - ), - tl2 AS ( - SELECT - ar.id_usuario, ar.ts, - ROW_NUMBER() OVER (PARTITION BY ar.id_usuario ORDER BY ar.ts) AS rn - FROM asistencia_raw ar - JOIN win w ON w.id_usuario = ar.id_usuario - AND ar.ts BETWEEN w.t0 AND w.t1 - ), - label2 AS ( - SELECT - t.id_usuario, - t.ts, - CASE WHEN ((COALESCE(b.cnt,0) + t.rn) % 2) = 1 THEN 'IN' ELSE 'OUT' END AS new_mode - FROM tl2 t - LEFT JOIN before_cnt2 b ON b.id_usuario = t.id_usuario - ), - set_mode AS ( - UPDATE asistencia_raw ar - SET modo = l.new_mode - FROM label2 l - WHERE ar.id_usuario = l.id_usuario - AND ar.ts = l.ts - AND (ar.modo IS NULL OR btrim(ar.modo) = '' OR ar.modo ~ '^\s*1\s*$') - RETURNING 1 - ), - -- 12) INSERT pares (dedupe) calculados desde CANDIDATE (ya tiene todo el contexto) - ins_pairs AS ( - INSERT INTO asistencia_intervalo (id_usuario, fecha, desde, hasta, dur_min, origen) - SELECT id_usuario, fecha, desde, hasta, dur_min, p_origen - FROM ready - ON CONFLICT (id_usuario, desde, hasta) DO NOTHING - RETURNING 1 - ) - SELECT - (SELECT COUNT(*) FROM ins_raw), - (SELECT COUNT(*) FROM ins_pairs), - (SELECT COALESCE(missing,'[]'::jsonb) FROM miss) - INTO v_ins_raw, v_ins_pairs, v_miss; - - RETURN jsonb_build_object( - 'inserted_raw', v_ins_raw, - 'inserted_pairs', v_ins_pairs, - 'missing_docs', v_miss - ); -END; -$_$; - --- --- Name: report_asistencia(date, date); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION report_asistencia(p_desde date, p_hasta date) RETURNS TABLE(documento text, nombre text, apellido text, fecha date, desde_hora text, hasta_hora text, dur_min numeric) - LANGUAGE sql - AS $$ - SELECT - u.documento, u.nombre, u.apellido, - ai.fecha, - to_char(ai.desde AT TIME ZONE 'America/Montevideo','HH24:MI:SS') AS desde_hora, - to_char(ai.hasta AT TIME ZONE 'America/Montevideo','HH24:MI:SS') AS hasta_hora, - ai.dur_min - FROM asistencia_intervalo ai - JOIN usuarios u USING (id_usuario) - WHERE ai.fecha BETWEEN p_desde AND p_hasta - ORDER BY u.documento, ai.fecha, ai.desde; -$$; - --- --- Name: report_gastos(integer); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION report_gastos(p_year integer) RETURNS jsonb - LANGUAGE sql STABLE - AS $$ -WITH mdata AS ( - SELECT date_trunc('month', c.fec_compra)::date AS m, - SUM(c.total)::numeric AS importe - FROM compras c - WHERE EXTRACT(YEAR FROM c.fec_compra) = p_year - GROUP BY 1 -), -mm AS ( - SELECT EXTRACT(MONTH FROM m)::int AS mes, importe - FROM mdata -) -SELECT jsonb_build_object( - 'year', p_year, - 'total', COALESCE((SELECT SUM(importe) FROM mdata), 0), - 'avg', COALESCE((SELECT AVG(importe) FROM mdata), 0), - 'months', - (SELECT jsonb_agg( - jsonb_build_object( - 'mes', gs, - 'nombre', to_char(to_date(gs::text,'MM'),'Mon'), - 'importe', COALESCE(mm.importe,0) - ) - ORDER BY gs - ) - FROM generate_series(1,12) gs - LEFT JOIN mm ON mm.mes = gs) -); -$$; - --- --- Name: report_tickets_year(integer, text); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION report_tickets_year(p_year integer, p_tz text DEFAULT 'America/Montevideo'::text) RETURNS jsonb - LANGUAGE sql STABLE - AS $$ -WITH bounds AS ( - SELECT - make_timestamp(p_year, 1, 1, 0,0,0) AS d0, - make_timestamp(p_year+1, 1, 1, 0,0,0) AS d1, - make_timestamptz(p_year, 1, 1, 0,0,0, p_tz) AS t0, - make_timestamptz(p_year+1, 1, 1, 0,0,0, p_tz) AS t1 -), -base AS ( - SELECT - c.id_comanda, - CASE WHEN c.fec_cierre IS NOT NULL - THEN (c.fec_cierre AT TIME ZONE p_tz) - ELSE c.fec_creacion - END AS fec_local, - v.total - FROM comandas c - JOIN vw_ticket_total v ON v.id_comanda = c.id_comanda - JOIN bounds b ON TRUE - WHERE - (c.fec_cierre IS NOT NULL AND c.fec_cierre >= b.t0 AND c.fec_cierre < b.t1) - OR - (c.fec_cierre IS NULL AND c.fec_creacion >= b.d0 AND c.fec_creacion < b.d1) -), -m AS ( - SELECT - EXTRACT(MONTH FROM fec_local)::int AS mes, - COUNT(*)::int AS cant, - SUM(total)::numeric AS importe, - AVG(total)::numeric AS avg - FROM base - GROUP BY 1 -), -ytd AS ( - SELECT COUNT(*)::int AS total_ytd, - AVG(total)::numeric AS avg_ticket, - SUM(total)::numeric AS to_date - FROM base -) -SELECT jsonb_build_object( - 'year', p_year, - 'total_ytd', (SELECT total_ytd FROM ytd), - 'avg_ticket', (SELECT avg_ticket FROM ytd), - 'to_date', (SELECT to_date FROM ytd), - 'months', - (SELECT jsonb_agg( - jsonb_build_object( - 'mes', mes, - 'nombre', to_char(to_date(mes::text,'MM'),'Mon'), - 'cant', cant, - 'importe', importe, - 'avg', avg - ) - ORDER BY mes - ) - FROM m) -); -$$; - --- --- Name: save_compra(integer, integer, timestamp with time zone, jsonb); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION save_compra(p_id_compra integer, p_id_proveedor integer, p_fec_compra timestamp with time zone, p_detalles jsonb) RETURNS TABLE(id_compra integer, total numeric) - LANGUAGE plpgsql - AS $$ -DECLARE - v_id INT; - v_total numeric := 0; -BEGIN - IF COALESCE(jsonb_array_length(p_detalles),0) = 0 THEN - RAISE EXCEPTION 'No hay renglones en la compra'; - END IF; - - -- Cabecera (insert/update) - IF p_id_compra IS NULL THEN - INSERT INTO compras (id_proveedor, fec_compra, total) - VALUES (p_id_proveedor, COALESCE(p_fec_compra, now()), 0) - RETURNING compras.id_compra INTO v_id; - ELSE - UPDATE compras c - SET id_proveedor = p_id_proveedor, - fec_compra = COALESCE(p_fec_compra, c.fec_compra) - WHERE c.id_compra = p_id_compra - RETURNING c.id_compra INTO v_id; - - -- Reemplazamos los renglones - DELETE FROM deta_comp_materias d WHERE d.id_compra = v_id; - DELETE FROM deta_comp_producto p WHERE p.id_compra = v_id; - END IF; - - -- Materias primas (sin CTE: parseo JSON inline) - INSERT INTO deta_comp_materias (id_compra, id_mat_prima, cantidad, pre_unitario) - SELECT - v_id, - x.id, - x.cantidad, - x.precio - FROM jsonb_to_recordset(COALESCE(p_detalles, '[]'::jsonb)) - AS x(tipo text, id int, cantidad numeric, precio numeric) - WHERE UPPER(TRIM(x.tipo)) = 'MAT'; - - -- Productos (sin CTE) - INSERT INTO deta_comp_producto (id_compra, id_producto, cantidad, pre_unitario) - SELECT - v_id, - x.id, - x.cantidad, - x.precio - FROM jsonb_to_recordset(COALESCE(p_detalles, '[]'::jsonb)) - AS x(tipo text, id int, cantidad numeric, precio numeric) - WHERE UPPER(TRIM(x.tipo)) = 'PROD'; - - -- Recalcular total (calificado) y redondear a ENTERO - SELECT - COALESCE( (SELECT SUM(dcm.cantidad*dcm.pre_unitario) - FROM deta_comp_materias dcm - WHERE dcm.id_compra = v_id), 0) - + COALESCE( (SELECT SUM(dcp.cantidad*dcp.pre_unitario) - FROM deta_comp_producto dcp - WHERE dcp.id_compra = v_id), 0) - INTO v_total; - - UPDATE compras c - SET total = round(v_total, 0) - WHERE c.id_compra = v_id; - - RETURN QUERY SELECT v_id, round(v_total, 0); -END; -$$; - --- --- Name: save_materia_prima(integer, text, text, boolean, jsonb); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION save_materia_prima(p_id_mat_prima integer, p_nombre text, p_unidad text, p_activo boolean, p_proveedores jsonb DEFAULT '[]'::jsonb) RETURNS integer - LANGUAGE plpgsql - AS $_$ -DECLARE - v_id INT; -BEGIN - IF p_id_mat_prima IS NULL THEN - INSERT INTO mate_primas (nombre, unidad, activo) - VALUES (p_nombre, p_unidad, COALESCE(p_activo, TRUE)) - RETURNING mate_primas.id_mat_prima INTO v_id; - ELSE - UPDATE mate_primas mp - SET nombre = p_nombre, - unidad = p_unidad, - activo = COALESCE(p_activo, TRUE) - WHERE mp.id_mat_prima = p_id_mat_prima; - v_id := p_id_mat_prima; - END IF; - - -- Sincronizar proveedores: borrar todos y re-crear a partir de JSONB - DELETE FROM prov_mate_prima pmp WHERE pmp.id_mat_prima = v_id; - - INSERT INTO prov_mate_prima (id_proveedor, id_mat_prima) - SELECT (e->>0)::INT AS id_proveedor, -- elementos JSON como enteros (array simple) - v_id AS id_mat_prima - FROM jsonb_array_elements(COALESCE(p_proveedores, '[]'::jsonb)) AS e - WHERE (e->>0) ~ '^\d+$'; -- solo enteros - - RETURN v_id; -END; -$_$; - --- --- Name: save_producto(integer, text, text, numeric, boolean, integer, jsonb); Type: FUNCTION; Schema: public; Owner: manso --- - -CREATE FUNCTION save_producto(p_id_producto integer, p_nombre text, p_img_producto text, p_precio numeric, p_activo boolean, p_id_categoria integer, p_receta jsonb DEFAULT '[]'::jsonb) RETURNS integer - LANGUAGE plpgsql - AS $_$ -DECLARE - v_id INT; -BEGIN - IF p_id_producto IS NULL THEN - INSERT INTO productos (nombre, img_producto, precio, activo, id_categoria) - VALUES (p_nombre, p_img_producto, p_precio, COALESCE(p_activo, TRUE), p_id_categoria) - RETURNING productos.id_producto INTO v_id; - ELSE - UPDATE productos p - SET nombre = p_nombre, - img_producto = p_img_producto, - precio = p_precio, - activo = COALESCE(p_activo, TRUE), - id_categoria = p_id_categoria - WHERE p.id_producto = p_id_producto; - v_id := p_id_producto; - END IF; - - -- Limpia receta actual - DELETE FROM receta_producto rp WHERE rp.id_producto = v_id; - - -- Inserta SOLO ítems válidos (id entero positivo y cantidad > 0), redondeo a 3 decimales - INSERT INTO receta_producto (id_producto, id_mat_prima, qty_por_unidad) - SELECT - v_id, - (rec->>'id_mat_prima')::INT, - ROUND((rec->>'qty_por_unidad')::NUMERIC, 3) - FROM jsonb_array_elements(COALESCE(p_receta, '[]'::jsonb)) AS rec - WHERE - (rec->>'id_mat_prima') ~ '^\d+$' - AND (rec->>'id_mat_prima')::INT > 0 - AND (rec->>'qty_por_unidad') ~ '^\d+(\.\d+)?$' - AND (rec->>'qty_por_unidad')::NUMERIC > 0; - - RETURN v_id; -END; -$_$; - --- --- Name: asistencia_intervalo; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE asistencia_intervalo ( - id_intervalo bigint NOT NULL, - id_usuario integer NOT NULL, - fecha date NOT NULL, - desde timestamp with time zone NOT NULL, - hasta timestamp with time zone NOT NULL, - dur_min numeric(10,2) NOT NULL, - origen text, - created_at timestamp with time zone DEFAULT now() NOT NULL, - CONSTRAINT chk_ai_orden CHECK ((hasta > desde)) -); - --- --- Name: asistencia_intervalo_id_intervalo_seq; Type: SEQUENCE; Schema: public; Owner: manso --- - -CREATE SEQUENCE asistencia_intervalo_id_intervalo_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - --- --- Name: asistencia_intervalo_id_intervalo_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: manso --- - -ALTER SEQUENCE asistencia_intervalo_id_intervalo_seq OWNED BY asistencia_intervalo.id_intervalo; - --- --- Name: asistencia_raw; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE asistencia_raw ( - id_raw bigint NOT NULL, - id_usuario integer NOT NULL, - ts timestamp with time zone NOT NULL, - modo text, - origen text, - created_at timestamp with time zone DEFAULT now() NOT NULL -); - --- --- Name: asistencia_raw_id_raw_seq; Type: SEQUENCE; Schema: public; Owner: manso --- - -CREATE SEQUENCE asistencia_raw_id_raw_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - --- --- Name: asistencia_raw_id_raw_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: manso --- - -ALTER SEQUENCE asistencia_raw_id_raw_seq OWNED BY asistencia_raw.id_raw; - --- --- Name: asistencia_resumen_diario; Type: VIEW; Schema: public; Owner: manso --- - -CREATE VIEW asistencia_resumen_diario AS - SELECT ai.id_usuario, - u.documento, - u.nombre, - u.apellido, - ai.fecha, - sum(ai.dur_min) AS minutos_dia, - round((sum(ai.dur_min) / 60.0), 2) AS horas_dia, - count(*) AS pares_dia - FROM (asistencia_intervalo ai - JOIN usuarios u USING (id_usuario)) - GROUP BY ai.id_usuario, u.documento, u.nombre, u.apellido, ai.fecha - ORDER BY ai.id_usuario, ai.fecha; - --- --- Name: categorias; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE categorias ( - id_categoria integer NOT NULL, - nombre text NOT NULL, - visible boolean DEFAULT true -); - --- --- Name: categorias_id_categoria_seq; Type: SEQUENCE; Schema: public; Owner: manso --- - -CREATE SEQUENCE categorias_id_categoria_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - --- --- Name: categorias_id_categoria_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: manso --- - -ALTER SEQUENCE categorias_id_categoria_seq OWNED BY categorias.id_categoria; - --- --- Name: clientes; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE clientes ( - id_cliente integer NOT NULL, - nombre text NOT NULL, - correo text, - telefono text, - fec_nacimiento date, - activo boolean DEFAULT true -); - --- --- Name: clientes_id_cliente_seq; Type: SEQUENCE; Schema: public; Owner: manso --- - -CREATE SEQUENCE clientes_id_cliente_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - --- --- Name: clientes_id_cliente_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: manso --- - -ALTER SEQUENCE clientes_id_cliente_seq OWNED BY clientes.id_cliente; - --- --- Name: comandas_id_comanda_seq; Type: SEQUENCE; Schema: public; Owner: manso --- - -CREATE SEQUENCE comandas_id_comanda_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - --- --- Name: comandas_id_comanda_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: manso --- - -ALTER SEQUENCE comandas_id_comanda_seq OWNED BY comandas.id_comanda; - --- --- Name: compras; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE compras ( - id_compra integer NOT NULL, - id_proveedor integer NOT NULL, - fec_compra timestamp without time zone NOT NULL, - total numeric(14,2) -); - --- --- Name: compras_id_compra_seq; Type: SEQUENCE; Schema: public; Owner: manso --- - -CREATE SEQUENCE compras_id_compra_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - --- --- Name: compras_id_compra_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: manso --- - -ALTER SEQUENCE compras_id_compra_seq OWNED BY compras.id_compra; - --- --- Name: deta_comandas_id_det_comanda_seq; Type: SEQUENCE; Schema: public; Owner: manso --- - -CREATE SEQUENCE deta_comandas_id_det_comanda_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - --- --- Name: deta_comandas_id_det_comanda_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: manso --- - -ALTER SEQUENCE deta_comandas_id_det_comanda_seq OWNED BY deta_comandas.id_det_comanda; - --- --- Name: deta_comp_materias; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE deta_comp_materias ( - id_compra integer NOT NULL, - id_mat_prima integer NOT NULL, - cantidad numeric(12,3) NOT NULL, - pre_unitario numeric(12,2) NOT NULL, - CONSTRAINT deta_comp_materias_cantidad_check CHECK ((cantidad > (0)::numeric)), - CONSTRAINT deta_comp_materias_pre_unitario_check CHECK ((pre_unitario >= (0)::numeric)) -); - --- --- Name: deta_comp_producto; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE deta_comp_producto ( - id_compra integer NOT NULL, - id_producto integer NOT NULL, - cantidad numeric(12,3) NOT NULL, - pre_unitario numeric(12,2) NOT NULL, - CONSTRAINT deta_comp_producto_cantidad_check CHECK ((cantidad > (0)::numeric)), - CONSTRAINT deta_comp_producto_pre_unitario_check CHECK ((pre_unitario >= (0)::numeric)) -); - --- --- Name: mate_primas; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE mate_primas ( - id_mat_prima integer NOT NULL, - nombre text NOT NULL, - unidad text NOT NULL, - activo boolean DEFAULT true -); - --- --- Name: mate_primas_id_mat_prima_seq; Type: SEQUENCE; Schema: public; Owner: manso --- - -CREATE SEQUENCE mate_primas_id_mat_prima_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - --- --- Name: mate_primas_id_mat_prima_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: manso --- - -ALTER SEQUENCE mate_primas_id_mat_prima_seq OWNED BY mate_primas.id_mat_prima; - --- --- Name: mesas_id_mesa_seq; Type: SEQUENCE; Schema: public; Owner: manso --- - -CREATE SEQUENCE mesas_id_mesa_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - --- --- Name: mesas_id_mesa_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: manso --- - -ALTER SEQUENCE mesas_id_mesa_seq OWNED BY mesas.id_mesa; - --- --- Name: productos; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE productos ( - id_producto integer NOT NULL, - nombre text NOT NULL, - img_producto character varying(255) DEFAULT 'img/productos/img_producto.png'::character varying NOT NULL, - precio integer NOT NULL, - activo boolean DEFAULT true, - id_categoria integer NOT NULL, - CONSTRAINT productos_precio_check CHECK (((precio)::numeric >= (0)::numeric)), - CONSTRAINT productos_precio_nn CHECK ((precio >= 0)) -); - --- --- Name: productos_id_producto_seq; Type: SEQUENCE; Schema: public; Owner: manso --- - -CREATE SEQUENCE productos_id_producto_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - --- --- Name: productos_id_producto_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: manso --- - -ALTER SEQUENCE productos_id_producto_seq OWNED BY productos.id_producto; - --- --- Name: prov_mate_prima; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE prov_mate_prima ( - id_proveedor integer NOT NULL, - id_mat_prima integer NOT NULL -); - --- --- Name: prov_producto; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE prov_producto ( - id_proveedor integer NOT NULL, - id_producto integer NOT NULL -); - --- --- Name: proveedores; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE proveedores ( - id_proveedor integer NOT NULL, - rut text, - raz_social text NOT NULL, - direccion text, - contacto text -); - --- --- Name: proveedores_id_proveedor_seq; Type: SEQUENCE; Schema: public; Owner: manso --- - -CREATE SEQUENCE proveedores_id_proveedor_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - --- --- Name: proveedores_id_proveedor_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: manso --- - -ALTER SEQUENCE proveedores_id_proveedor_seq OWNED BY proveedores.id_proveedor; - --- --- Name: receta_producto; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE receta_producto ( - id_producto integer NOT NULL, - id_mat_prima integer NOT NULL, - qty_por_unidad numeric(12,3) NOT NULL, - CONSTRAINT receta_producto_qty_por_unidad_check CHECK ((qty_por_unidad > (0)::numeric)) -); - --- --- Name: roles; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE roles ( - id_rol integer NOT NULL, - nombre text NOT NULL -); - --- --- Name: roles_id_rol_seq; Type: SEQUENCE; Schema: public; Owner: manso --- - -CREATE SEQUENCE roles_id_rol_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - --- --- Name: roles_id_rol_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: manso --- - -ALTER SEQUENCE roles_id_rol_seq OWNED BY roles.id_rol; - --- --- Name: usua_roles; Type: TABLE; Schema: public; Owner: manso --- - -CREATE TABLE usua_roles ( - id_usuario integer NOT NULL, - id_rol integer NOT NULL, - fec_asignacion timestamp without time zone DEFAULT now(), - autor integer, - activo boolean DEFAULT true -); - --- --- Name: usuarios_id_usuario_seq; Type: SEQUENCE; Schema: public; Owner: manso --- - -CREATE SEQUENCE usuarios_id_usuario_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - --- --- Name: usuarios_id_usuario_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: manso --- - -ALTER SEQUENCE usuarios_id_usuario_seq OWNED BY usuarios.id_usuario; - --- --- Name: v_comandas_detalle_base; Type: VIEW; Schema: public; Owner: manso --- - -CREATE VIEW v_comandas_detalle_base AS - SELECT c.id_comanda, - c.fec_creacion, - c.fec_cierre, - c.estado, - c.observaciones, - u.id_usuario, - u.nombre AS usuario_nombre, - u.apellido AS usuario_apellido, - m.id_mesa, - m.numero AS mesa_numero, - m.apodo AS mesa_apodo, - d.id_producto, - p.nombre AS producto_nombre, - d.cantidad, - d.pre_unitario, - (d.cantidad * d.pre_unitario) AS subtotal - FROM ((((comandas c - JOIN usuarios u ON ((u.id_usuario = c.id_usuario))) - JOIN mesas m ON ((m.id_mesa = c.id_mesa))) - LEFT JOIN deta_comandas d ON ((d.id_comanda = c.id_comanda))) - LEFT JOIN productos p ON ((p.id_producto = d.id_producto))); - --- --- Name: v_comandas_detalle_items; Type: VIEW; Schema: public; Owner: manso --- - -CREATE VIEW v_comandas_detalle_items AS - SELECT d.id_comanda, - d.id_det_comanda, - d.id_producto, - p.nombre AS producto_nombre, - d.cantidad, - d.pre_unitario, - (d.cantidad * d.pre_unitario) AS subtotal, - d.observaciones - FROM (deta_comandas d - JOIN productos p ON ((p.id_producto = d.id_producto))); - --- --- Name: v_comandas_detalle_json; Type: VIEW; Schema: public; Owner: manso --- - -CREATE VIEW v_comandas_detalle_json AS - SELECT id_comanda, - jsonb_build_object('id_comanda', id_comanda, 'fec_creacion', fec_creacion, 'fec_cierre', fec_cierre, 'estado', estado, 'observaciones', observaciones, 'usuario', jsonb_build_object('id_usuario', id_usuario, 'nombre', usuario_nombre, 'apellido', usuario_apellido), 'mesa', jsonb_build_object('id_mesa', id_mesa, 'numero', mesa_numero, 'apodo', mesa_apodo), 'items', COALESCE(( SELECT jsonb_agg(jsonb_build_object('producto_id', b.id_producto, 'producto', b.producto_nombre, 'cantidad', b.cantidad, 'pre_unitario', b.pre_unitario, 'subtotal', b.subtotal) ORDER BY b.producto_nombre) AS jsonb_agg - FROM v_comandas_detalle_base b - WHERE ((b.id_comanda = h.id_comanda) AND (b.id_producto IS NOT NULL))), '[]'::jsonb), 'totales', jsonb_build_object('items', COALESCE(( SELECT count(*) AS count - FROM v_comandas_detalle_base b - WHERE ((b.id_comanda = h.id_comanda) AND (b.id_producto IS NOT NULL))), (0)::bigint), 'total', COALESCE(( SELECT sum(b.subtotal) AS sum - FROM v_comandas_detalle_base b - WHERE (b.id_comanda = h.id_comanda)), (0)::numeric))) AS data - FROM ( SELECT DISTINCT v_comandas_detalle_base.id_comanda, - v_comandas_detalle_base.fec_creacion, - v_comandas_detalle_base.fec_cierre, - v_comandas_detalle_base.estado, - v_comandas_detalle_base.observaciones, - v_comandas_detalle_base.id_usuario, - v_comandas_detalle_base.usuario_nombre, - v_comandas_detalle_base.usuario_apellido, - v_comandas_detalle_base.id_mesa, - v_comandas_detalle_base.mesa_numero, - v_comandas_detalle_base.mesa_apodo - FROM v_comandas_detalle_base) h; - --- --- Name: vw_compras; Type: VIEW; Schema: public; Owner: manso --- - -CREATE VIEW vw_compras AS - SELECT c.id_compra, - c.id_proveedor, - p.raz_social AS proveedor, - c.fec_compra, - c.total - FROM (compras c - JOIN proveedores p USING (id_proveedor)) - ORDER BY c.fec_compra DESC, c.id_compra DESC; - --- --- Name: vw_ticket_total; Type: VIEW; Schema: public; Owner: manso --- - -CREATE VIEW vw_ticket_total AS - WITH lineas AS ( - SELECT c.id_comanda, - COALESCE(c.fec_cierre, (c.fec_creacion)::timestamp with time zone) AS fec_ticket, - (COALESCE(dc.pre_unitario, (p.precio)::numeric, (0)::numeric))::numeric(14,2) AS pu, - (COALESCE(dc.cantidad, (1)::numeric))::numeric(14,3) AS qty - FROM ((comandas c - JOIN deta_comandas dc ON ((dc.id_comanda = c.id_comanda))) - LEFT JOIN productos p ON ((p.id_producto = dc.id_producto))) - ) - SELECT id_comanda, - fec_ticket, - (sum((qty * pu)))::numeric(14,2) AS total - FROM lineas - GROUP BY id_comanda, fec_ticket; - --- --- Name: asistencia_intervalo id_intervalo; Type: DEFAULT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY asistencia_intervalo ALTER COLUMN id_intervalo SET DEFAULT nextval('asistencia_intervalo_id_intervalo_seq'::regclass); - --- --- Name: asistencia_raw id_raw; Type: DEFAULT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY asistencia_raw ALTER COLUMN id_raw SET DEFAULT nextval('asistencia_raw_id_raw_seq'::regclass); - --- --- Name: categorias id_categoria; Type: DEFAULT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY categorias ALTER COLUMN id_categoria SET DEFAULT nextval('categorias_id_categoria_seq'::regclass); - --- --- Name: clientes id_cliente; Type: DEFAULT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY clientes ALTER COLUMN id_cliente SET DEFAULT nextval('clientes_id_cliente_seq'::regclass); - --- --- Name: comandas id_comanda; Type: DEFAULT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY comandas ALTER COLUMN id_comanda SET DEFAULT nextval('comandas_id_comanda_seq'::regclass); - --- --- Name: compras id_compra; Type: DEFAULT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY compras ALTER COLUMN id_compra SET DEFAULT nextval('compras_id_compra_seq'::regclass); - --- --- Name: deta_comandas id_det_comanda; Type: DEFAULT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY deta_comandas ALTER COLUMN id_det_comanda SET DEFAULT nextval('deta_comandas_id_det_comanda_seq'::regclass); - --- --- Name: mate_primas id_mat_prima; Type: DEFAULT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY mate_primas ALTER COLUMN id_mat_prima SET DEFAULT nextval('mate_primas_id_mat_prima_seq'::regclass); - --- --- Name: mesas id_mesa; Type: DEFAULT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY mesas ALTER COLUMN id_mesa SET DEFAULT nextval('mesas_id_mesa_seq'::regclass); - --- --- Name: productos id_producto; Type: DEFAULT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY productos ALTER COLUMN id_producto SET DEFAULT nextval('productos_id_producto_seq'::regclass); - --- --- Name: proveedores id_proveedor; Type: DEFAULT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY proveedores ALTER COLUMN id_proveedor SET DEFAULT nextval('proveedores_id_proveedor_seq'::regclass); - --- --- Name: roles id_rol; Type: DEFAULT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY roles ALTER COLUMN id_rol SET DEFAULT nextval('roles_id_rol_seq'::regclass); - --- --- Name: usuarios id_usuario; Type: DEFAULT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY usuarios ALTER COLUMN id_usuario SET DEFAULT nextval('usuarios_id_usuario_seq'::regclass); - --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- Name: asistencia_intervalo_id_intervalo_seq; Type: SEQUENCE SET; Schema: public; Owner: manso --- - -SELECT pg_catalog.setval('asistencia_intervalo_id_intervalo_seq', 108, true); - --- --- Name: asistencia_raw_id_raw_seq; Type: SEQUENCE SET; Schema: public; Owner: manso --- - -SELECT pg_catalog.setval('asistencia_raw_id_raw_seq', 88, true); - --- --- Name: categorias_id_categoria_seq; Type: SEQUENCE SET; Schema: public; Owner: manso --- - -SELECT pg_catalog.setval('categorias_id_categoria_seq', 4, true); - --- --- Name: clientes_id_cliente_seq; Type: SEQUENCE SET; Schema: public; Owner: manso --- - -SELECT pg_catalog.setval('clientes_id_cliente_seq', 1, true); - --- --- Name: comandas_id_comanda_seq; Type: SEQUENCE SET; Schema: public; Owner: manso --- - -SELECT pg_catalog.setval('comandas_id_comanda_seq', 55, true); - --- --- Name: compras_id_compra_seq; Type: SEQUENCE SET; Schema: public; Owner: manso --- - -SELECT pg_catalog.setval('compras_id_compra_seq', 66, true); - --- --- Name: deta_comandas_id_det_comanda_seq; Type: SEQUENCE SET; Schema: public; Owner: manso --- - -SELECT pg_catalog.setval('deta_comandas_id_det_comanda_seq', 117, true); - --- --- Name: mate_primas_id_mat_prima_seq; Type: SEQUENCE SET; Schema: public; Owner: manso --- - -SELECT pg_catalog.setval('mate_primas_id_mat_prima_seq', 10, true); - --- --- Name: mesas_id_mesa_seq; Type: SEQUENCE SET; Schema: public; Owner: manso --- - -SELECT pg_catalog.setval('mesas_id_mesa_seq', 14, true); - --- --- Name: productos_id_producto_seq; Type: SEQUENCE SET; Schema: public; Owner: manso --- - -SELECT pg_catalog.setval('productos_id_producto_seq', 52, true); - --- --- Name: proveedores_id_proveedor_seq; Type: SEQUENCE SET; Schema: public; Owner: manso --- - -SELECT pg_catalog.setval('proveedores_id_proveedor_seq', 4, true); - --- --- Name: roles_id_rol_seq; Type: SEQUENCE SET; Schema: public; Owner: manso --- - -SELECT pg_catalog.setval('roles_id_rol_seq', 6, true); - --- --- Name: usuarios_id_usuario_seq; Type: SEQUENCE SET; Schema: public; Owner: manso --- - -SELECT pg_catalog.setval('usuarios_id_usuario_seq', 3, true); - --- --- Name: asistencia_intervalo asistencia_intervalo_id_usuario_desde_hasta_key; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY asistencia_intervalo - ADD CONSTRAINT asistencia_intervalo_id_usuario_desde_hasta_key UNIQUE (id_usuario, desde, hasta); - --- --- Name: asistencia_intervalo asistencia_intervalo_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY asistencia_intervalo - ADD CONSTRAINT asistencia_intervalo_pkey PRIMARY KEY (id_intervalo); - --- --- Name: asistencia_raw asistencia_raw_id_usuario_ts_key; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY asistencia_raw - ADD CONSTRAINT asistencia_raw_id_usuario_ts_key UNIQUE (id_usuario, ts); - --- --- Name: asistencia_raw asistencia_raw_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY asistencia_raw - ADD CONSTRAINT asistencia_raw_pkey PRIMARY KEY (id_raw); - --- --- Name: categorias categorias_nombre_key; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY categorias - ADD CONSTRAINT categorias_nombre_key UNIQUE (nombre); - --- --- Name: categorias categorias_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY categorias - ADD CONSTRAINT categorias_pkey PRIMARY KEY (id_categoria); - --- --- Name: clientes clientes_correo_key; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY clientes - ADD CONSTRAINT clientes_correo_key UNIQUE (correo); - --- --- Name: clientes clientes_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY clientes - ADD CONSTRAINT clientes_pkey PRIMARY KEY (id_cliente); - --- --- Name: clientes clientes_telefono_key; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY clientes - ADD CONSTRAINT clientes_telefono_key UNIQUE (telefono); - --- --- Name: comandas comandas_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY comandas - ADD CONSTRAINT comandas_pkey PRIMARY KEY (id_comanda); - --- --- Name: compras compras_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY compras - ADD CONSTRAINT compras_pkey PRIMARY KEY (id_compra); - --- --- Name: deta_comandas deta_comandas_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY deta_comandas - ADD CONSTRAINT deta_comandas_pkey PRIMARY KEY (id_det_comanda); - --- --- Name: deta_comp_materias deta_comp_materias_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY deta_comp_materias - ADD CONSTRAINT deta_comp_materias_pkey PRIMARY KEY (id_compra, id_mat_prima); - --- --- Name: deta_comp_producto deta_comp_producto_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY deta_comp_producto - ADD CONSTRAINT deta_comp_producto_pkey PRIMARY KEY (id_compra, id_producto); - --- --- Name: mate_primas mate_primas_nombre_key; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY mate_primas - ADD CONSTRAINT mate_primas_nombre_key UNIQUE (nombre); - --- --- Name: mate_primas mate_primas_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY mate_primas - ADD CONSTRAINT mate_primas_pkey PRIMARY KEY (id_mat_prima); - --- --- Name: mesas mesas_apodo_key; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY mesas - ADD CONSTRAINT mesas_apodo_key UNIQUE (apodo); - --- --- Name: mesas mesas_numero_key; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY mesas - ADD CONSTRAINT mesas_numero_key UNIQUE (numero); - --- --- Name: mesas mesas_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY mesas - ADD CONSTRAINT mesas_pkey PRIMARY KEY (id_mesa); - --- --- Name: productos productos_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY productos - ADD CONSTRAINT productos_pkey PRIMARY KEY (id_producto); - --- --- Name: prov_mate_prima prov_mate_prima_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY prov_mate_prima - ADD CONSTRAINT prov_mate_prima_pkey PRIMARY KEY (id_proveedor, id_mat_prima); - --- --- Name: prov_producto prov_producto_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY prov_producto - ADD CONSTRAINT prov_producto_pkey PRIMARY KEY (id_proveedor, id_producto); - --- --- Name: proveedores proveedores_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY proveedores - ADD CONSTRAINT proveedores_pkey PRIMARY KEY (id_proveedor); - --- --- Name: proveedores proveedores_rut_key; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY proveedores - ADD CONSTRAINT proveedores_rut_key UNIQUE (rut); - --- --- Name: receta_producto receta_producto_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY receta_producto - ADD CONSTRAINT receta_producto_pkey PRIMARY KEY (id_producto, id_mat_prima); - --- --- Name: roles roles_nombre_key; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY roles - ADD CONSTRAINT roles_nombre_key UNIQUE (nombre); - --- --- Name: roles roles_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY roles - ADD CONSTRAINT roles_pkey PRIMARY KEY (id_rol); - --- --- Name: usua_roles usua_roles_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY usua_roles - ADD CONSTRAINT usua_roles_pkey PRIMARY KEY (id_usuario, id_rol); - --- --- Name: usuarios usuarios_documento_key; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY usuarios - ADD CONSTRAINT usuarios_documento_key UNIQUE (documento); - --- --- Name: usuarios usuarios_pkey; Type: CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY usuarios - ADD CONSTRAINT usuarios_pkey PRIMARY KEY (id_usuario); - --- --- Name: compras_fec_compra_idx; Type: INDEX; Schema: public; Owner: manso --- - -CREATE INDEX compras_fec_compra_idx ON compras USING btree (fec_compra); - --- --- Name: idx_asist_int_usuario_fecha; Type: INDEX; Schema: public; Owner: manso --- - -CREATE INDEX idx_asist_int_usuario_fecha ON asistencia_intervalo USING btree (id_usuario, fecha); - --- --- Name: idx_asist_raw_usuario_ts; Type: INDEX; Schema: public; Owner: manso --- - -CREATE INDEX idx_asist_raw_usuario_ts ON asistencia_raw USING btree (id_usuario, ts); - --- --- Name: idx_detalle_comanda_comanda; Type: INDEX; Schema: public; Owner: manso --- - -CREATE INDEX idx_detalle_comanda_comanda ON deta_comandas USING btree (id_comanda); - --- --- Name: idx_detalle_comanda_producto; Type: INDEX; Schema: public; Owner: manso --- - -CREATE INDEX idx_detalle_comanda_producto ON deta_comandas USING btree (id_producto); - --- --- Name: ix_comandas_fec_cierre; Type: INDEX; Schema: public; Owner: manso --- - -CREATE INDEX ix_comandas_fec_cierre ON comandas USING btree (fec_cierre); - --- --- Name: ix_comandas_id; Type: INDEX; Schema: public; Owner: manso --- - -CREATE INDEX ix_comandas_id ON comandas USING btree (id_comanda); - --- --- Name: ix_deta_comandas_id_comanda; Type: INDEX; Schema: public; Owner: manso --- - -CREATE INDEX ix_deta_comandas_id_comanda ON deta_comandas USING btree (id_comanda); - --- --- Name: ix_deta_comandas_id_producto; Type: INDEX; Schema: public; Owner: manso --- - -CREATE INDEX ix_deta_comandas_id_producto ON deta_comandas USING btree (id_producto); - --- --- Name: asistencia_intervalo asistencia_intervalo_id_usuario_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY asistencia_intervalo - ADD CONSTRAINT asistencia_intervalo_id_usuario_fkey FOREIGN KEY (id_usuario) REFERENCES usuarios(id_usuario) ON DELETE CASCADE; - --- --- Name: asistencia_raw asistencia_raw_id_usuario_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY asistencia_raw - ADD CONSTRAINT asistencia_raw_id_usuario_fkey FOREIGN KEY (id_usuario) REFERENCES usuarios(id_usuario) ON DELETE CASCADE; - --- --- Name: comandas comandas_id_mesa_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY comandas - ADD CONSTRAINT comandas_id_mesa_fkey FOREIGN KEY (id_mesa) REFERENCES mesas(id_mesa); - --- --- Name: comandas comandas_id_usuario_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY comandas - ADD CONSTRAINT comandas_id_usuario_fkey FOREIGN KEY (id_usuario) REFERENCES usuarios(id_usuario); - --- --- Name: compras compras_id_proveedor_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY compras - ADD CONSTRAINT compras_id_proveedor_fkey FOREIGN KEY (id_proveedor) REFERENCES proveedores(id_proveedor); - --- --- Name: deta_comandas deta_comandas_id_comanda_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY deta_comandas - ADD CONSTRAINT deta_comandas_id_comanda_fkey FOREIGN KEY (id_comanda) REFERENCES comandas(id_comanda) ON DELETE CASCADE; - --- --- Name: deta_comandas deta_comandas_id_producto_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY deta_comandas - ADD CONSTRAINT deta_comandas_id_producto_fkey FOREIGN KEY (id_producto) REFERENCES productos(id_producto); - --- --- Name: deta_comp_materias deta_comp_materias_id_compra_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY deta_comp_materias - ADD CONSTRAINT deta_comp_materias_id_compra_fkey FOREIGN KEY (id_compra) REFERENCES compras(id_compra) ON DELETE CASCADE; - --- --- Name: deta_comp_materias deta_comp_materias_id_mat_prima_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY deta_comp_materias - ADD CONSTRAINT deta_comp_materias_id_mat_prima_fkey FOREIGN KEY (id_mat_prima) REFERENCES mate_primas(id_mat_prima); - --- --- Name: deta_comp_producto deta_comp_producto_id_compra_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY deta_comp_producto - ADD CONSTRAINT deta_comp_producto_id_compra_fkey FOREIGN KEY (id_compra) REFERENCES compras(id_compra) ON DELETE CASCADE; - --- --- Name: deta_comp_producto deta_comp_producto_id_producto_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY deta_comp_producto - ADD CONSTRAINT deta_comp_producto_id_producto_fkey FOREIGN KEY (id_producto) REFERENCES productos(id_producto); - --- --- Name: productos productos_id_categoria_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY productos - ADD CONSTRAINT productos_id_categoria_fkey FOREIGN KEY (id_categoria) REFERENCES categorias(id_categoria); - --- --- Name: prov_mate_prima prov_mate_prima_id_mat_prima_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY prov_mate_prima - ADD CONSTRAINT prov_mate_prima_id_mat_prima_fkey FOREIGN KEY (id_mat_prima) REFERENCES mate_primas(id_mat_prima); - --- --- Name: prov_mate_prima prov_mate_prima_id_proveedor_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY prov_mate_prima - ADD CONSTRAINT prov_mate_prima_id_proveedor_fkey FOREIGN KEY (id_proveedor) REFERENCES proveedores(id_proveedor) ON DELETE CASCADE; - --- --- Name: prov_producto prov_producto_id_producto_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY prov_producto - ADD CONSTRAINT prov_producto_id_producto_fkey FOREIGN KEY (id_producto) REFERENCES productos(id_producto); - --- --- Name: prov_producto prov_producto_id_proveedor_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY prov_producto - ADD CONSTRAINT prov_producto_id_proveedor_fkey FOREIGN KEY (id_proveedor) REFERENCES proveedores(id_proveedor) ON DELETE CASCADE; - --- --- Name: receta_producto receta_producto_id_mat_prima_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY receta_producto - ADD CONSTRAINT receta_producto_id_mat_prima_fkey FOREIGN KEY (id_mat_prima) REFERENCES mate_primas(id_mat_prima); - --- --- Name: receta_producto receta_producto_id_producto_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY receta_producto - ADD CONSTRAINT receta_producto_id_producto_fkey FOREIGN KEY (id_producto) REFERENCES productos(id_producto) ON DELETE CASCADE; - --- --- Name: usua_roles usua_roles_autor_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY usua_roles - ADD CONSTRAINT usua_roles_autor_fkey FOREIGN KEY (autor) REFERENCES usuarios(id_usuario); - --- --- Name: usua_roles usua_roles_id_rol_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY usua_roles - ADD CONSTRAINT usua_roles_id_rol_fkey FOREIGN KEY (id_rol) REFERENCES roles(id_rol); - --- --- Name: usua_roles usua_roles_id_usuario_fkey; Type: FK CONSTRAINT; Schema: public; Owner: manso --- - -ALTER TABLE ONLY usua_roles - ADD CONSTRAINT usua_roles_id_usuario_fkey FOREIGN KEY (id_usuario) REFERENCES usuarios(id_usuario) ON DELETE CASCADE; - --- --- PostgreSQL database dump complete --- - -\unrestrict londHmqT4llS8Wof4ZnceO2dyFhn4jiR5xbaszMgZpMczgr6aVW6xQJxeUdqJwa - - -COMMIT; diff --git a/services/auth/src/db/initTenant_v2.sql b/services/auth/src/db/initTenant_v2.sql deleted file mode 100644 index 2081ece..0000000 --- a/services/auth/src/db/initTenant_v2.sql +++ /dev/null @@ -1,2267 +0,0 @@ --- --- PostgreSQL database dump --- - - --- Dumped from database version 16.10 (Debian 16.10-1.pgdg13+1) --- Dumped by pg_dump version 16.10 (Debian 16.10-1.pgdg13+1) - -BEGIN; -SET client_encoding = 'UTF8'; -SET standard_conforming_strings = on; -SET row_security = off; -SET statement_timeout = 0; -SET lock_timeout = 0; -SET idle_in_transaction_session_timeout = 0; -SET client_encoding = 'UTF8'; -SET standard_conforming_strings = on; -SELECT pg_catalog.set_config('search_path', '', false); -SET check_function_bodies = false; -SET xmloption = content; -SET client_min_messages = warning; -SET row_security = off; - - -CREATE FUNCTION asistencia_delete_raw(p_id_raw bigint, p_tz text DEFAULT 'America/Montevideo'::text) RETURNS jsonb - LANGUAGE plpgsql - AS $$ -DECLARE - v_id_usuario INT; - v_ts TIMESTAMPTZ; - v_t0 TIMESTAMPTZ; - v_t1 TIMESTAMPTZ; - v_del_raw INT; - v_del INT; - v_ins INT; -BEGIN - SELECT id_usuario, ts INTO v_id_usuario, v_ts - FROM asistencia_raw WHERE id_raw = p_id_raw; - IF v_id_usuario IS NULL THEN - RETURN jsonb_build_object('deleted',0,'msg','id_raw inexistente'); - END IF; - - v_t0 := v_ts - INTERVAL '1 day'; - v_t1 := v_ts + INTERVAL '1 day'; - - -- borrar raw - DELETE FROM asistencia_raw WHERE id_raw = p_id_raw; - GET DIAGNOSTICS v_del_raw = ROW_COUNT; - - -- recomputar pares en ventana - WITH tl AS ( - SELECT ar.ts, - ROW_NUMBER() OVER (ORDER BY ar.ts) AS rn - FROM asistencia_raw ar - WHERE ar.id_usuario = v_id_usuario - AND ar.ts BETWEEN v_t0 AND v_t1 - ), - ready AS ( - SELECT (t1.ts AT TIME ZONE p_tz)::date AS fecha, - t1.ts AS desde, - t2.ts AS hasta, - EXTRACT(EPOCH FROM (t2.ts - t1.ts))/60.0 AS dur_min - FROM tl t1 - JOIN tl t2 ON t2.rn = t1.rn + 1 - WHERE (t1.rn % 2) = 1 AND t2.ts > t1.ts - ), - del AS ( - DELETE FROM asistencia_intervalo ai - WHERE ai.id_usuario = v_id_usuario - AND (ai.desde BETWEEN v_t0 AND v_t1 OR ai.hasta BETWEEN v_t0 AND v_t1) - RETURNING 1 - ), - ins AS ( - INSERT INTO asistencia_intervalo (id_usuario, fecha, desde, hasta, dur_min, origen) - SELECT v_id_usuario, r.fecha, r.desde, r.hasta, r.dur_min, 'delete_adjust' - FROM ready r - ON CONFLICT (id_usuario, desde, hasta) DO NOTHING - RETURNING 1 - ) - SELECT (SELECT COUNT(*) FROM del), (SELECT COUNT(*) FROM ins) INTO v_del, v_ins; - - RETURN jsonb_build_object('deleted',v_del_raw,'deleted_pairs',v_del,'inserted_pairs',v_ins); -END; -$$; - - --- --- Name: asistencia_get(text, date, date, text); Type: FUNCTION; Schema: ; Owner: - --- - -CREATE FUNCTION asistencia_get(p_doc text, p_desde date, p_hasta date, p_tz text DEFAULT 'America/Montevideo'::text) RETURNS jsonb - LANGUAGE sql - AS $$ -WITH u AS ( - SELECT id_usuario, documento, nombre, apellido - FROM usuarios - WHERE regexp_replace(documento,'^\s*0+','','g') = regexp_replace(p_doc,'^\s*0+','','g') - LIMIT 1 -), -r AS ( - SELECT ar.id_raw, - (ar.ts AT TIME ZONE p_tz)::date AS fecha, - to_char(ar.ts AT TIME ZONE p_tz,'HH24:MI:SS') AS hora, - COALESCE(ar.modo,'') AS modo, - COALESCE(ar.origen,'') AS origen, - ar.ts - FROM asistencia_raw ar - JOIN u USING (id_usuario) - WHERE (ar.ts AT TIME ZONE p_tz)::date BETWEEN p_desde AND p_hasta -), -i AS ( - SELECT ai.id_intervalo, - ai.fecha, - to_char(ai.desde AT TIME ZONE p_tz,'HH24:MI:SS') AS desde_hora, - to_char(ai.hasta AT TIME ZONE p_tz,'HH24:MI:SS') AS hasta_hora, - ai.dur_min - FROM asistencia_intervalo ai - JOIN u USING (id_usuario) - WHERE ai.fecha BETWEEN p_desde AND p_hasta -) -SELECT jsonb_build_object( - 'usuario', (SELECT to_jsonb(u.*) FROM u), - 'raw', COALESCE((SELECT jsonb_agg(to_jsonb(r.*) ORDER BY r.ts) FROM r),'[]'::jsonb), - 'intervalos', COALESCE((SELECT jsonb_agg(to_jsonb(i.*) ORDER BY i.fecha, i.id_intervalo) FROM i),'[]'::jsonb) -); -$$; - - --- --- Name: asistencia_update_raw(bigint, date, text, text, text); Type: FUNCTION; Schema: ; Owner: - --- - -CREATE FUNCTION asistencia_update_raw(p_id_raw bigint, p_fecha date, p_hora text, p_modo text, p_tz text DEFAULT 'America/Montevideo'::text) RETURNS jsonb - LANGUAGE plpgsql - AS $$ -DECLARE - v_id_usuario INT; - v_ts_old TIMESTAMPTZ; - v_ts_new TIMESTAMPTZ; - v_t0 TIMESTAMPTZ; - v_t1 TIMESTAMPTZ; - v_del INT; - v_ins INT; -BEGIN - -- leer estado previo - SELECT id_usuario, ts INTO v_id_usuario, v_ts_old - FROM asistencia_raw WHERE id_raw = p_id_raw; - IF v_id_usuario IS NULL THEN - RETURN jsonb_build_object('updated',0,'msg','id_raw inexistente'); - END IF; - - -- construir ts nuevo - v_ts_new := make_timestamptz( - EXTRACT(YEAR FROM p_fecha)::INT, - EXTRACT(MONTH FROM p_fecha)::INT, - EXTRACT(DAY FROM p_fecha)::INT, - split_part(p_hora,':',1)::INT, - split_part(p_hora,':',2)::INT, - COALESCE(NULLIF(split_part(p_hora,':',3),''), '0')::INT, - p_tz); - - -- aplicar update - UPDATE asistencia_raw - SET ts = v_ts_new, - modo = COALESCE(p_modo, modo) - WHERE id_raw = p_id_raw; - - -- ventana de recálculo - v_t0 := LEAST(v_ts_old, v_ts_new) - INTERVAL '1 day'; - v_t1 := GREATEST(v_ts_old, v_ts_new) + INTERVAL '1 day'; - - -- recomputar pares en la ventana: borrar los del rango y reinsertar - WITH tl AS ( - SELECT ar.ts, - ROW_NUMBER() OVER (ORDER BY ar.ts) AS rn - FROM asistencia_raw ar - WHERE ar.id_usuario = v_id_usuario - AND ar.ts BETWEEN v_t0 AND v_t1 - ), - ready AS ( - SELECT (t1.ts AT TIME ZONE p_tz)::date AS fecha, - t1.ts AS desde, - t2.ts AS hasta, - EXTRACT(EPOCH FROM (t2.ts - t1.ts))/60.0 AS dur_min - FROM tl t1 - JOIN tl t2 ON t2.rn = t1.rn + 1 - WHERE (t1.rn % 2) = 1 AND t2.ts > t1.ts - ), - del AS ( - DELETE FROM asistencia_intervalo ai - WHERE ai.id_usuario = v_id_usuario - AND (ai.desde BETWEEN v_t0 AND v_t1 OR ai.hasta BETWEEN v_t0 AND v_t1) - RETURNING 1 - ), - ins AS ( - INSERT INTO asistencia_intervalo (id_usuario, fecha, desde, hasta, dur_min, origen) - SELECT v_id_usuario, r.fecha, r.desde, r.hasta, r.dur_min, 'edit_manual' - FROM ready r - ON CONFLICT (id_usuario, desde, hasta) DO NOTHING - RETURNING 1 - ) - SELECT (SELECT COUNT(*) FROM del), (SELECT COUNT(*) FROM ins) INTO v_del, v_ins; - - RETURN jsonb_build_object('updated',1,'deleted_pairs',v_del,'inserted_pairs',v_ins); -END; -$$; - - --- --- Name: delete_compra(integer); Type: FUNCTION; Schema: ; Owner: - --- - -CREATE FUNCTION delete_compra(p_id_compra integer) RETURNS void - LANGUAGE plpgsql - AS $$ -BEGIN - DELETE FROM deta_comp_materias WHERE id_compra = p_id_compra; - DELETE FROM deta_comp_producto WHERE id_compra = p_id_compra; - DELETE FROM compras WHERE id_compra = p_id_compra; -END; -$$; - - --- --- Name: f_abrir_comanda(integer); Type: FUNCTION; Schema: ; Owner: - --- - -CREATE FUNCTION f_abrir_comanda(p_id integer) RETURNS jsonb - LANGUAGE plpgsql - AS $$ -DECLARE r jsonb; -BEGIN - UPDATE comandas - SET estado = 'abierta', - fec_cierre = NULL - WHERE id_comanda = p_id; - - IF NOT FOUND THEN - RETURN NULL; - END IF; - - SELECT to_jsonb(v) INTO r - FROM v_comandas_resumen v - WHERE v.id_comanda = p_id; - - RETURN r; -END; -$$; - - --- --- Name: f_cerrar_comanda(integer); Type: FUNCTION; Schema: ; Owner: - --- - -CREATE FUNCTION f_cerrar_comanda(p_id integer) RETURNS jsonb - LANGUAGE plpgsql - AS $$ -DECLARE r jsonb; -BEGIN - UPDATE comandas - SET estado = 'cerrada', - fec_cierre = COALESCE(fec_cierre, NOW()) - WHERE id_comanda = p_id; - - IF NOT FOUND THEN - RETURN NULL; - END IF; - - SELECT to_jsonb(v) INTO r - FROM v_comandas_resumen v - WHERE v.id_comanda = p_id; - - RETURN r; -END; -$$; - - --- --- Name: f_comanda_detalle_json(integer); Type: FUNCTION; Schema: ; Owner: - --- - -CREATE FUNCTION f_comanda_detalle_json(p_id_comanda integer) RETURNS jsonb - LANGUAGE sql - AS $$ -WITH base AS ( - SELECT - c.id_comanda, - c.fec_creacion, - c.estado, - c.observaciones, - u.id_usuario, - u.nombre AS usuario_nombre, - u.apellido AS usuario_apellido, - m.id_mesa, - m.numero AS mesa_numero, - m.apodo AS mesa_apodo, - d.id_producto, - p.nombre AS producto_nombre, - d.cantidad, - d.pre_unitario, - (d.cantidad * d.pre_unitario) AS subtotal - FROM comandas c - JOIN usuarios u ON u.id_usuario = c.id_usuario - JOIN mesas m ON m.id_mesa = c.id_mesa - LEFT JOIN deta_comandas d ON d.id_comanda = c.id_comanda - LEFT JOIN productos p ON p.id_producto = d.id_producto - WHERE c.id_comanda = p_id_comanda -), -hdr AS ( - -- 1 sola fila con los datos de cabecera - SELECT DISTINCT - id_comanda, fec_creacion, estado, observaciones, - id_usuario, usuario_nombre, usuario_apellido, - id_mesa, mesa_numero, mesa_apodo - FROM base -), -agg_items AS ( - SELECT - COALESCE( - jsonb_agg( - jsonb_build_object( - 'producto_id', b.id_producto, - 'producto', b.producto_nombre, - 'cantidad', b.cantidad, - 'pre_unitario', b.pre_unitario, - 'subtotal', b.subtotal - ) - ORDER BY b.producto_nombre NULLS LAST - ) FILTER (WHERE b.id_producto IS NOT NULL), - '[]'::jsonb - ) AS items - FROM base b -), -tot AS ( - SELECT - COUNT(*) FILTER (WHERE id_producto IS NOT NULL) AS items, - COALESCE(SUM(subtotal), 0)::numeric AS total - FROM base -) -SELECT - CASE - WHEN EXISTS (SELECT 1 FROM hdr) THEN - jsonb_build_object( - 'id_comanda', h.id_comanda, - 'fec_creacion', h.fec_creacion, - 'estado', h.estado, - 'observaciones',h.observaciones, - 'usuario', jsonb_build_object( - 'id_usuario', h.id_usuario, - 'nombre', h.usuario_nombre, - 'apellido', h.usuario_apellido - ), - 'mesa', jsonb_build_object( - 'id_mesa', h.id_mesa, - 'numero', h.mesa_numero, - 'apodo', h.mesa_apodo - ), - 'items', i.items, - 'totales', jsonb_build_object( - 'items', t.items, - 'total', t.total - ) - ) - ELSE NULL - END -FROM hdr h, agg_items i, tot t; -$$; - - --- --- Name: f_comanda_detalle_rows(integer); Type: FUNCTION; Schema: ; Owner: - --- - -CREATE FUNCTION f_comanda_detalle_rows(p_id_comanda integer) RETURNS TABLE(id_comanda integer, fec_creacion timestamp without time zone, estado text, observaciones text, id_usuario integer, usuario_nombre text, usuario_apellido text, id_mesa integer, mesa_numero integer, mesa_apodo text, producto_id integer, producto_nombre text, cantidad numeric, pre_unitario numeric, subtotal numeric, items integer, total numeric) - LANGUAGE sql - AS $$ -WITH base AS ( - SELECT - c.id_comanda, c.fec_creacion, c.estado, c.observaciones, - u.id_usuario, u.nombre AS usuario_nombre, u.apellido AS usuario_apellido, - m.id_mesa, m.numero AS mesa_numero, m.apodo AS mesa_apodo, - d.id_producto, p.nombre AS producto_nombre, - d.cantidad, d.pre_unitario, - (d.cantidad * d.pre_unitario) AS subtotal - FROM comandas c - JOIN usuarios u ON u.id_usuario = c.id_usuario - JOIN mesas m ON m.id_mesa = c.id_mesa - LEFT JOIN deta_comandas d ON d.id_comanda = c.id_comanda - LEFT JOIN productos p ON p.id_producto = d.id_producto - WHERE c.id_comanda = p_id_comanda -), -tot AS ( - SELECT - COUNT(*) FILTER (WHERE id_producto IS NOT NULL) AS items, - COALESCE(SUM(subtotal), 0) AS total - FROM base -) -SELECT - b.id_comanda, b.fec_creacion, b.estado, b.observaciones, - b.id_usuario, b.usuario_nombre, b.usuario_apellido, - b.id_mesa, b.mesa_numero, b.mesa_apodo, - b.id_producto, b.producto_nombre, - b.cantidad, b.pre_unitario, b.subtotal, - t.items, t.total -FROM base b CROSS JOIN tot t -ORDER BY b.producto_nombre NULLS LAST; -$$; - - -SET default_tablespace = ''; - -SET default_table_access_method = heap; - --- --- Name: comandas; Type: TABLE; Schema: ; Owner: - --- - -CREATE TABLE comandas ( - id_comanda integer NOT NULL, - id_usuario integer NOT NULL, - id_mesa integer NOT NULL, - fec_creacion timestamp without time zone DEFAULT now() NOT NULL, - estado text NOT NULL, - observaciones text, - fec_cierre timestamp with time zone, - CONSTRAINT comandas_estado_check CHECK ((estado = ANY (ARRAY['abierta'::text, 'cerrada'::text, 'pagada'::text, 'anulada'::text]))) -); - - --- --- Name: COLUMN comandas.fec_cierre; Type: COMMENT; Schema: ; Owner: - --- - -COMMENT ON COLUMN comandas.fec_cierre IS 'Fecha/hora de cierre de la comanda (NULL si está abierta)'; - - --- --- Name: deta_comandas; Type: TABLE; Schema: ; Owner: - --- - -CREATE TABLE deta_comandas ( - id_det_comanda integer NOT NULL, - id_comanda integer NOT NULL, - id_producto integer NOT NULL, - cantidad numeric(12,3) NOT NULL, - pre_unitario numeric(12,2) NOT NULL, - observaciones text, - CONSTRAINT deta_comandas_cantidad_check CHECK ((cantidad > (0)::numeric)), - CONSTRAINT deta_comandas_pre_unitario_check CHECK ((pre_unitario >= (0)::numeric)) -); - - --- --- Name: mesas; Type: TABLE; Schema: ; Owner: - --- - -CREATE TABLE mesas ( - id_mesa integer NOT NULL, - numero integer NOT NULL, - apodo text NOT NULL, - estado text DEFAULT 'libre'::text NOT NULL, - CONSTRAINT mesas_estado_check CHECK ((estado = ANY (ARRAY['libre'::text, 'ocupada'::text, 'reservada'::text]))) -); - - --- --- Name: usuarios; Type: TABLE; Schema: ; Owner: - --- - -CREATE TABLE usuarios ( - id_usuario integer NOT NULL, - documento text, - img_perfil character varying(255) DEFAULT 'img_perfil.png'::character varying NOT NULL, - nombre text NOT NULL, - apellido text NOT NULL, - correo text, - telefono text, - fec_nacimiento date, - activo boolean DEFAULT true -); - - --- --- Name: v_comandas_resumen; Type: VIEW; Schema: ; Owner: - --- - -CREATE VIEW v_comandas_resumen AS - WITH items AS ( - SELECT d.id_comanda, - count(*) AS items, - sum((d.cantidad * d.pre_unitario)) AS total - FROM deta_comandas d - GROUP BY d.id_comanda - ) - SELECT c.id_comanda, - c.fec_creacion, - c.estado, - c.observaciones, - u.id_usuario, - u.nombre AS usuario_nombre, - u.apellido AS usuario_apellido, - m.id_mesa, - m.numero AS mesa_numero, - m.apodo AS mesa_apodo, - COALESCE(i.items, (0)::bigint) AS items, - COALESCE(i.total, (0)::numeric) AS total, - c.fec_cierre, - CASE - WHEN (c.fec_cierre IS NOT NULL) THEN round((EXTRACT(epoch FROM (c.fec_cierre - (c.fec_creacion)::timestamp with time zone)) / 60.0), 1) - ELSE NULL::numeric - END AS duracion_min - FROM (((comandas c - JOIN usuarios u ON ((u.id_usuario = c.id_usuario))) - JOIN mesas m ON ((m.id_mesa = c.id_mesa))) - LEFT JOIN items i ON ((i.id_comanda = c.id_comanda))); - - --- --- Name: f_comandas_resumen(text, integer); Type: FUNCTION; Schema: ; Owner: - --- - -CREATE FUNCTION f_comandas_resumen(p_estado text DEFAULT NULL::text, p_limit integer DEFAULT 200) RETURNS SETOF v_comandas_resumen - LANGUAGE sql - AS $$ - SELECT * - FROM v_comandas_resumen - WHERE (p_estado IS NULL OR estado = p_estado) - ORDER BY id_comanda DESC - LIMIT p_limit; -$$; - - --- --- Name: find_usuarios_por_documentos(jsonb); Type: FUNCTION; Schema: ; Owner: - --- - -CREATE FUNCTION find_usuarios_por_documentos(p_docs jsonb) RETURNS jsonb - LANGUAGE sql - AS $$ -WITH docs AS ( - SELECT DISTINCT - regexp_replace(value::text, '^\s*0+', '', 'g') AS doc_clean, - value::text AS original - FROM jsonb_array_elements_text(COALESCE(p_docs,'[]')) -), -rows AS ( - SELECT d.original AS documento, - u.nombre, - u.apellido, - (u.id_usuario IS NOT NULL) AS found - FROM docs d - LEFT JOIN usuarios u - ON regexp_replace(u.documento, '^\s*0+', '', 'g') = d.doc_clean -) -SELECT COALESCE( - jsonb_object_agg( - documento, - jsonb_build_object( - 'nombre', COALESCE(nombre, ''), - 'apellido', COALESCE(apellido, ''), - 'found', found - ) - ), - '{}'::jsonb -) -FROM rows; -$$; - - --- --- Name: get_compra(integer); Type: FUNCTION; Schema: ; Owner: - --- - -CREATE FUNCTION get_compra(p_id_compra integer) RETURNS jsonb - LANGUAGE sql - AS $$ -WITH cab AS ( - SELECT c.id_compra, c.id_proveedor, c.fec_compra, c.total - FROM compras c - WHERE c.id_compra = p_id_compra -), -dm AS ( - SELECT 'MAT'::text AS tipo, d.id_mat_prima AS id, - d.cantidad, d.pre_unitario AS precio - FROM deta_comp_materias d WHERE d.id_compra = p_id_compra -), -dp AS ( - SELECT 'PROD'::text AS tipo, d.id_producto AS id, - d.cantidad, d.pre_unitario AS precio - FROM deta_comp_producto d WHERE d.id_compra = p_id_compra -), -det AS ( - SELECT jsonb_agg(to_jsonb(x.*)) AS detalles - FROM ( - SELECT * FROM dm - UNION ALL - SELECT * FROM dp - ) x -) -SELECT jsonb_build_object( - 'id_compra', (SELECT id_compra FROM cab), - 'id_proveedor',(SELECT id_proveedor FROM cab), - 'fec_compra', to_char((SELECT fec_compra FROM cab),'YYYY-MM-DD HH24:MI:SS'), - 'total', (SELECT total FROM cab), - 'detalles', COALESCE((SELECT detalles FROM det),'[]'::jsonb) -); -$$; - - --- --- Name: get_materia_prima(integer); Type: FUNCTION; Schema: ; Owner: - --- - -CREATE FUNCTION get_materia_prima(p_id integer) RETURNS jsonb - LANGUAGE sql - AS $$ -SELECT jsonb_build_object( - 'materia', to_jsonb(mp), - 'proveedores', COALESCE( - ( - SELECT jsonb_agg( - jsonb_build_object( - 'id_proveedor', pr.id_proveedor, - 'raz_social', pr.raz_social, - 'rut', pr.rut, - 'contacto', pr.contacto, - 'direccion', pr.direccion - ) - ) - FROM prov_mate_prima pmp - JOIN proveedores pr ON pr.id_proveedor = pmp.id_proveedor - WHERE pmp.id_mat_prima = mp.id_mat_prima - ), - '[]'::jsonb - ) -) -FROM mate_primas mp -WHERE mp.id_mat_prima = p_id; -$$; - - --- --- Name: get_producto(integer); Type: FUNCTION; Schema: ; Owner: - --- - -CREATE FUNCTION get_producto(p_id integer) RETURNS jsonb - LANGUAGE sql - AS $$ -SELECT jsonb_build_object( - 'producto', to_jsonb(p), -- el registro completo del producto en JSONB - 'receta', COALESCE( - ( - SELECT jsonb_agg( - jsonb_build_object( - 'id_mat_prima', rp.id_mat_prima, - 'qty_por_unidad', rp.qty_por_unidad, - 'nombre', mp.nombre, - 'unidad', mp.unidad - ) - ) - FROM receta_producto rp - LEFT JOIN mate_primas mp USING (id_mat_prima) - WHERE rp.id_producto = p.id_producto - ), - '[]'::jsonb - ) -) -FROM productos p -WHERE p.id_producto = p_id; -$$; - - --- --- Name: import_asistencia(jsonb, text, text); Type: FUNCTION; Schema: ; Owner: - --- - -CREATE FUNCTION import_asistencia(p_registros jsonb, p_origen text, p_tz text DEFAULT 'America/Montevideo'::text) RETURNS jsonb - LANGUAGE plpgsql - AS $_$ -DECLARE - v_ins_raw INT; - v_ins_pairs INT; - v_miss JSONB; -BEGIN - WITH - -- 1) JSON -> filas - j AS ( - SELECT - regexp_replace(elem->>'doc','^\s*0+','','g')::TEXT AS doc_clean, - (elem->>'isoDate')::DATE AS d, - elem->>'time' AS time_str, - NULLIF(elem->>'mode','') AS modo - FROM jsonb_array_elements(COALESCE(p_registros,'[]')) elem - ), - -- 2) Vincular a usuarios - u AS ( - SELECT j.*, u.id_usuario - FROM j - LEFT JOIN usuarios u - ON regexp_replace(u.documento,'^\s*0+','','g') = j.doc_clean - ), - -- 3) Documentos faltantes - miss AS ( - SELECT jsonb_agg(doc_clean) AS missing - FROM u WHERE id_usuario IS NULL - ), - -- 4) TS determinista en TZ del negocio - parsed AS ( - SELECT - u.id_usuario, - u.modo, - make_timestamptz( - EXTRACT(YEAR FROM u.d)::INT, - EXTRACT(MONTH FROM u.d)::INT, - EXTRACT(DAY FROM u.d)::INT, - split_part(u.time_str,':',1)::INT, - split_part(u.time_str,':',2)::INT, - COALESCE(NULLIF(split_part(u.time_str,':',3),''),'0')::INT, - p_tz - ) AS ts_calc - FROM u - WHERE u.id_usuario IS NOT NULL - ), - -- 5) Ventana por usuario (±1 día de lo importado) - win AS ( - SELECT id_usuario, - (MIN(ts_calc) - INTERVAL '1 day') AS t0, - (MAX(ts_calc) + INTERVAL '1 day') AS t1 - FROM parsed - GROUP BY id_usuario - ), - -- 6) Lo existente en BD dentro de la ventana - existing AS ( - SELECT ar.id_usuario, ar.ts - FROM asistencia_raw ar - JOIN win w ON w.id_usuario = ar.id_usuario - AND ar.ts BETWEEN w.t0 AND w.t1 - ), - -- 7) CANDIDATE = existente ∪ archivo (sin duplicados) - candidate AS ( - SELECT id_usuario, ts FROM existing - UNION -- ¡clave para evitar doble click! - SELECT id_usuario, ts_calc AS ts FROM parsed - ), - -- 8) Paridad previa (cuántas marcas había ANTES de la ventana) - before_cnt AS ( - SELECT w.id_usuario, COUNT(*)::int AS cnt - FROM win w - JOIN asistencia_raw ar - ON ar.id_usuario = w.id_usuario - AND ar.ts < w.t0 - GROUP BY w.id_usuario - ), - -- 9) Línea de tiempo candidata y pares (1→2, 3→4…), jornada = día local del inicio - timeline AS ( - SELECT - c.id_usuario, - c.ts, - ROW_NUMBER() OVER (PARTITION BY c.id_usuario ORDER BY c.ts) AS rn - FROM candidate c - ), - ready AS ( - SELECT - t1.id_usuario, - (t1.ts AT TIME ZONE p_tz)::date AS fecha, - t1.ts AS desde, - t2.ts AS hasta, - EXTRACT(EPOCH FROM (t2.ts - t1.ts))/60.0 AS dur_min - FROM timeline t1 - JOIN timeline t2 - ON t2.id_usuario = t1.id_usuario - AND t2.rn = t1.rn + 1 - LEFT JOIN before_cnt b ON b.id_usuario = t1.id_usuario - WHERE ((COALESCE(b.cnt,0) + t1.rn) % 2) = 1 -- t1 es IN global - AND t2.ts > t1.ts - ), - -- 10) INSERT crudo (dedupe) - ins_raw AS ( - INSERT INTO asistencia_raw (id_usuario, ts, modo, origen) - SELECT id_usuario, ts_calc, - NULLIF(modo,'')::text, -- puede quedar NULL para auto-etiquetado - p_origen - FROM parsed - ON CONFLICT (id_usuario, ts) DO NOTHING - RETURNING 1 - ), - -- 11) Auto-etiquetar IN/OUT en BD para filas con modo vacío/'1' (tras insertar) - before_cnt2 AS ( - SELECT w.id_usuario, COUNT(*)::int AS cnt - FROM win w - JOIN asistencia_raw ar - ON ar.id_usuario = w.id_usuario - AND ar.ts < w.t0 - GROUP BY w.id_usuario - ), - tl2 AS ( - SELECT - ar.id_usuario, ar.ts, - ROW_NUMBER() OVER (PARTITION BY ar.id_usuario ORDER BY ar.ts) AS rn - FROM asistencia_raw ar - JOIN win w ON w.id_usuario = ar.id_usuario - AND ar.ts BETWEEN w.t0 AND w.t1 - ), - label2 AS ( - SELECT - t.id_usuario, - t.ts, - CASE WHEN ((COALESCE(b.cnt,0) + t.rn) % 2) = 1 THEN 'IN' ELSE 'OUT' END AS new_mode - FROM tl2 t - LEFT JOIN before_cnt2 b ON b.id_usuario = t.id_usuario - ), - set_mode AS ( - UPDATE asistencia_raw ar - SET modo = l.new_mode - FROM label2 l - WHERE ar.id_usuario = l.id_usuario - AND ar.ts = l.ts - AND (ar.modo IS NULL OR btrim(ar.modo) = '' OR ar.modo ~ '^\s*1\s*$') - RETURNING 1 - ), - -- 12) INSERT pares (dedupe) calculados desde CANDIDATE (ya tiene todo el contexto) - ins_pairs AS ( - INSERT INTO asistencia_intervalo (id_usuario, fecha, desde, hasta, dur_min, origen) - SELECT id_usuario, fecha, desde, hasta, dur_min, p_origen - FROM ready - ON CONFLICT (id_usuario, desde, hasta) DO NOTHING - RETURNING 1 - ) - SELECT - (SELECT COUNT(*) FROM ins_raw), - (SELECT COUNT(*) FROM ins_pairs), - (SELECT COALESCE(missing,'[]'::jsonb) FROM miss) - INTO v_ins_raw, v_ins_pairs, v_miss; - - RETURN jsonb_build_object( - 'inserted_raw', v_ins_raw, - 'inserted_pairs', v_ins_pairs, - 'missing_docs', v_miss - ); -END; -$_$; - - --- --- Name: report_asistencia(date, date); Type: FUNCTION; Schema: ; Owner: - --- - -CREATE FUNCTION report_asistencia(p_desde date, p_hasta date) RETURNS TABLE(documento text, nombre text, apellido text, fecha date, desde_hora text, hasta_hora text, dur_min numeric) - LANGUAGE sql - AS $$ - SELECT - u.documento, u.nombre, u.apellido, - ai.fecha, - to_char(ai.desde AT TIME ZONE 'America/Montevideo','HH24:MI:SS') AS desde_hora, - to_char(ai.hasta AT TIME ZONE 'America/Montevideo','HH24:MI:SS') AS hasta_hora, - ai.dur_min - FROM asistencia_intervalo ai - JOIN usuarios u USING (id_usuario) - WHERE ai.fecha BETWEEN p_desde AND p_hasta - ORDER BY u.documento, ai.fecha, ai.desde; -$$; - - --- --- Name: report_gastos(integer); Type: FUNCTION; Schema: ; Owner: - --- - -CREATE FUNCTION report_gastos(p_year integer) RETURNS jsonb - LANGUAGE sql STABLE - AS $$ -WITH mdata AS ( - SELECT date_trunc('month', c.fec_compra)::date AS m, - SUM(c.total)::numeric AS importe - FROM compras c - WHERE EXTRACT(YEAR FROM c.fec_compra) = p_year - GROUP BY 1 -), -mm AS ( - SELECT EXTRACT(MONTH FROM m)::int AS mes, importe - FROM mdata -) -SELECT jsonb_build_object( - 'year', p_year, - 'total', COALESCE((SELECT SUM(importe) FROM mdata), 0), - 'avg', COALESCE((SELECT AVG(importe) FROM mdata), 0), - 'months', - (SELECT jsonb_agg( - jsonb_build_object( - 'mes', gs, - 'nombre', to_char(to_date(gs::text,'MM'),'Mon'), - 'importe', COALESCE(mm.importe,0) - ) - ORDER BY gs - ) - FROM generate_series(1,12) gs - LEFT JOIN mm ON mm.mes = gs) -); -$$; - - --- --- Name: report_tickets_year(integer, text); Type: FUNCTION; Schema: ; Owner: - --- - -CREATE FUNCTION report_tickets_year(p_year integer, p_tz text DEFAULT 'America/Montevideo'::text) RETURNS jsonb - LANGUAGE sql STABLE - AS $$ -WITH bounds AS ( - SELECT - make_timestamp(p_year, 1, 1, 0,0,0) AS d0, - make_timestamp(p_year+1, 1, 1, 0,0,0) AS d1, - make_timestamptz(p_year, 1, 1, 0,0,0, p_tz) AS t0, - make_timestamptz(p_year+1, 1, 1, 0,0,0, p_tz) AS t1 -), -base AS ( - SELECT - c.id_comanda, - CASE WHEN c.fec_cierre IS NOT NULL - THEN (c.fec_cierre AT TIME ZONE p_tz) - ELSE c.fec_creacion - END AS fec_local, - v.total - FROM comandas c - JOIN vw_ticket_total v ON v.id_comanda = c.id_comanda - JOIN bounds b ON TRUE - WHERE - (c.fec_cierre IS NOT NULL AND c.fec_cierre >= b.t0 AND c.fec_cierre < b.t1) - OR - (c.fec_cierre IS NULL AND c.fec_creacion >= b.d0 AND c.fec_creacion < b.d1) -), -m AS ( - SELECT - EXTRACT(MONTH FROM fec_local)::int AS mes, - COUNT(*)::int AS cant, - SUM(total)::numeric AS importe, - AVG(total)::numeric AS avg - FROM base - GROUP BY 1 -), -ytd AS ( - SELECT COUNT(*)::int AS total_ytd, - AVG(total)::numeric AS avg_ticket, - SUM(total)::numeric AS to_date - FROM base -) -SELECT jsonb_build_object( - 'year', p_year, - 'total_ytd', (SELECT total_ytd FROM ytd), - 'avg_ticket', (SELECT avg_ticket FROM ytd), - 'to_date', (SELECT to_date FROM ytd), - 'months', - (SELECT jsonb_agg( - jsonb_build_object( - 'mes', mes, - 'nombre', to_char(to_date(mes::text,'MM'),'Mon'), - 'cant', cant, - 'importe', importe, - 'avg', avg - ) - ORDER BY mes - ) - FROM m) -); -$$; - - --- --- Name: save_compra(integer, integer, timestamp with time zone, jsonb); Type: FUNCTION; Schema: ; Owner: - --- - -CREATE FUNCTION save_compra(p_id_compra integer, p_id_proveedor integer, p_fec_compra timestamp with time zone, p_detalles jsonb) RETURNS TABLE(id_compra integer, total numeric) - LANGUAGE plpgsql - AS $$ -DECLARE - v_id INT; - v_total numeric := 0; -BEGIN - IF COALESCE(jsonb_array_length(p_detalles),0) = 0 THEN - RAISE EXCEPTION 'No hay renglones en la compra'; - END IF; - - -- Cabecera (insert/update) - IF p_id_compra IS NULL THEN - INSERT INTO compras (id_proveedor, fec_compra, total) - VALUES (p_id_proveedor, COALESCE(p_fec_compra, now()), 0) - RETURNING compras.id_compra INTO v_id; - ELSE - UPDATE compras c - SET id_proveedor = p_id_proveedor, - fec_compra = COALESCE(p_fec_compra, c.fec_compra) - WHERE c.id_compra = p_id_compra - RETURNING c.id_compra INTO v_id; - - -- Reemplazamos los renglones - DELETE FROM deta_comp_materias d WHERE d.id_compra = v_id; - DELETE FROM deta_comp_producto p WHERE p.id_compra = v_id; - END IF; - - -- Materias primas (sin CTE: parseo JSON inline) - INSERT INTO deta_comp_materias (id_compra, id_mat_prima, cantidad, pre_unitario) - SELECT - v_id, - x.id, - x.cantidad, - x.precio - FROM jsonb_to_recordset(COALESCE(p_detalles, '[]'::jsonb)) - AS x(tipo text, id int, cantidad numeric, precio numeric) - WHERE UPPER(TRIM(x.tipo)) = 'MAT'; - - -- Productos (sin CTE) - INSERT INTO deta_comp_producto (id_compra, id_producto, cantidad, pre_unitario) - SELECT - v_id, - x.id, - x.cantidad, - x.precio - FROM jsonb_to_recordset(COALESCE(p_detalles, '[]'::jsonb)) - AS x(tipo text, id int, cantidad numeric, precio numeric) - WHERE UPPER(TRIM(x.tipo)) = 'PROD'; - - -- Recalcular total (calificado) y redondear a ENTERO - SELECT - COALESCE( (SELECT SUM(dcm.cantidad*dcm.pre_unitario) - FROM deta_comp_materias dcm - WHERE dcm.id_compra = v_id), 0) - + COALESCE( (SELECT SUM(dcp.cantidad*dcp.pre_unitario) - FROM deta_comp_producto dcp - WHERE dcp.id_compra = v_id), 0) - INTO v_total; - - UPDATE compras c - SET total = round(v_total, 0) - WHERE c.id_compra = v_id; - - RETURN QUERY SELECT v_id, round(v_total, 0); -END; -$$; - - --- --- Name: save_materia_prima(integer, text, text, boolean, jsonb); Type: FUNCTION; Schema: ; Owner: - --- - -CREATE FUNCTION save_materia_prima(p_id_mat_prima integer, p_nombre text, p_unidad text, p_activo boolean, p_proveedores jsonb DEFAULT '[]'::jsonb) RETURNS integer - LANGUAGE plpgsql - AS $_$ -DECLARE - v_id INT; -BEGIN - IF p_id_mat_prima IS NULL THEN - INSERT INTO mate_primas (nombre, unidad, activo) - VALUES (p_nombre, p_unidad, COALESCE(p_activo, TRUE)) - RETURNING mate_primas.id_mat_prima INTO v_id; - ELSE - UPDATE mate_primas mp - SET nombre = p_nombre, - unidad = p_unidad, - activo = COALESCE(p_activo, TRUE) - WHERE mp.id_mat_prima = p_id_mat_prima; - v_id := p_id_mat_prima; - END IF; - - -- Sincronizar proveedores: borrar todos y re-crear a partir de JSONB - DELETE FROM prov_mate_prima pmp WHERE pmp.id_mat_prima = v_id; - - INSERT INTO prov_mate_prima (id_proveedor, id_mat_prima) - SELECT (e->>0)::INT AS id_proveedor, -- elementos JSON como enteros (array simple) - v_id AS id_mat_prima - FROM jsonb_array_elements(COALESCE(p_proveedores, '[]'::jsonb)) AS e - WHERE (e->>0) ~ '^\d+$'; -- solo enteros - - RETURN v_id; -END; -$_$; - - --- --- Name: save_producto(integer, text, text, numeric, boolean, integer, jsonb); Type: FUNCTION; Schema: ; Owner: - --- - -CREATE FUNCTION save_producto(p_id_producto integer, p_nombre text, p_img_producto text, p_precio numeric, p_activo boolean, p_id_categoria integer, p_receta jsonb DEFAULT '[]'::jsonb) RETURNS integer - LANGUAGE plpgsql - AS $_$ -DECLARE - v_id INT; -BEGIN - IF p_id_producto IS NULL THEN - INSERT INTO productos (nombre, img_producto, precio, activo, id_categoria) - VALUES (p_nombre, p_img_producto, p_precio, COALESCE(p_activo, TRUE), p_id_categoria) - RETURNING productos.id_producto INTO v_id; - ELSE - UPDATE productos p - SET nombre = p_nombre, - img_producto = p_img_producto, - precio = p_precio, - activo = COALESCE(p_activo, TRUE), - id_categoria = p_id_categoria - WHERE p.id_producto = p_id_producto; - v_id := p_id_producto; - END IF; - - -- Limpia receta actual - DELETE FROM receta_producto rp WHERE rp.id_producto = v_id; - - -- Inserta SOLO ítems válidos (id entero positivo y cantidad > 0), redondeo a 3 decimales - INSERT INTO receta_producto (id_producto, id_mat_prima, qty_por_unidad) - SELECT - v_id, - (rec->>'id_mat_prima')::INT, - ROUND((rec->>'qty_por_unidad')::NUMERIC, 3) - FROM jsonb_array_elements(COALESCE(p_receta, '[]'::jsonb)) AS rec - WHERE - (rec->>'id_mat_prima') ~ '^\d+$' - AND (rec->>'id_mat_prima')::INT > 0 - AND (rec->>'qty_por_unidad') ~ '^\d+(\.\d+)?$' - AND (rec->>'qty_por_unidad')::NUMERIC > 0; - - RETURN v_id; -END; -$_$; - - --- --- Name: asistencia_intervalo; Type: TABLE; Schema: ; Owner: - --- - -CREATE TABLE asistencia_intervalo ( - id_intervalo bigint NOT NULL, - id_usuario integer NOT NULL, - fecha date NOT NULL, - desde timestamp with time zone NOT NULL, - hasta timestamp with time zone NOT NULL, - dur_min numeric(10,2) NOT NULL, - origen text, - created_at timestamp with time zone DEFAULT now() NOT NULL, - CONSTRAINT chk_ai_orden CHECK ((hasta > desde)) -); - - --- --- Name: asistencia_intervalo_id_intervalo_seq; Type: SEQUENCE; Schema: ; Owner: - --- - -CREATE SEQUENCE asistencia_intervalo_id_intervalo_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: asistencia_intervalo_id_intervalo_seq; Type: SEQUENCE OWNED BY; Schema: ; Owner: - --- - -ALTER SEQUENCE asistencia_intervalo_id_intervalo_seq OWNED BY asistencia_intervalo.id_intervalo; - - --- --- Name: asistencia_raw; Type: TABLE; Schema: ; Owner: - --- - -CREATE TABLE asistencia_raw ( - id_raw bigint NOT NULL, - id_usuario integer NOT NULL, - ts timestamp with time zone NOT NULL, - modo text, - origen text, - created_at timestamp with time zone DEFAULT now() NOT NULL -); - - --- --- Name: asistencia_raw_id_raw_seq; Type: SEQUENCE; Schema: ; Owner: - --- - -CREATE SEQUENCE asistencia_raw_id_raw_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: asistencia_raw_id_raw_seq; Type: SEQUENCE OWNED BY; Schema: ; Owner: - --- - -ALTER SEQUENCE asistencia_raw_id_raw_seq OWNED BY asistencia_raw.id_raw; - - --- --- Name: asistencia_resumen_diario; Type: VIEW; Schema: ; Owner: - --- - -CREATE VIEW asistencia_resumen_diario AS - SELECT ai.id_usuario, - u.documento, - u.nombre, - u.apellido, - ai.fecha, - sum(ai.dur_min) AS minutos_dia, - round((sum(ai.dur_min) / 60.0), 2) AS horas_dia, - count(*) AS pares_dia - FROM (asistencia_intervalo ai - JOIN usuarios u USING (id_usuario)) - GROUP BY ai.id_usuario, u.documento, u.nombre, u.apellido, ai.fecha - ORDER BY ai.id_usuario, ai.fecha; - - --- --- Name: categorias; Type: TABLE; Schema: ; Owner: - --- - -CREATE TABLE categorias ( - id_categoria integer NOT NULL, - nombre text NOT NULL, - visible boolean DEFAULT true -); - - --- --- Name: categorias_id_categoria_seq; Type: SEQUENCE; Schema: ; Owner: - --- - -CREATE SEQUENCE categorias_id_categoria_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: categorias_id_categoria_seq; Type: SEQUENCE OWNED BY; Schema: ; Owner: - --- - -ALTER SEQUENCE categorias_id_categoria_seq OWNED BY categorias.id_categoria; - - --- --- Name: clientes; Type: TABLE; Schema: ; Owner: - --- - -CREATE TABLE clientes ( - id_cliente integer NOT NULL, - nombre text NOT NULL, - correo text, - telefono text, - fec_nacimiento date, - activo boolean DEFAULT true -); - - --- --- Name: clientes_id_cliente_seq; Type: SEQUENCE; Schema: ; Owner: - --- - -CREATE SEQUENCE clientes_id_cliente_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: clientes_id_cliente_seq; Type: SEQUENCE OWNED BY; Schema: ; Owner: - --- - -ALTER SEQUENCE clientes_id_cliente_seq OWNED BY clientes.id_cliente; - - --- --- Name: comandas_id_comanda_seq; Type: SEQUENCE; Schema: ; Owner: - --- - -CREATE SEQUENCE comandas_id_comanda_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: comandas_id_comanda_seq; Type: SEQUENCE OWNED BY; Schema: ; Owner: - --- - -ALTER SEQUENCE comandas_id_comanda_seq OWNED BY comandas.id_comanda; - - --- --- Name: compras; Type: TABLE; Schema: ; Owner: - --- - -CREATE TABLE compras ( - id_compra integer NOT NULL, - id_proveedor integer NOT NULL, - fec_compra timestamp without time zone NOT NULL, - total numeric(14,2) -); - - --- --- Name: compras_id_compra_seq; Type: SEQUENCE; Schema: ; Owner: - --- - -CREATE SEQUENCE compras_id_compra_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: compras_id_compra_seq; Type: SEQUENCE OWNED BY; Schema: ; Owner: - --- - -ALTER SEQUENCE compras_id_compra_seq OWNED BY compras.id_compra; - - --- --- Name: deta_comandas_id_det_comanda_seq; Type: SEQUENCE; Schema: ; Owner: - --- - -CREATE SEQUENCE deta_comandas_id_det_comanda_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: deta_comandas_id_det_comanda_seq; Type: SEQUENCE OWNED BY; Schema: ; Owner: - --- - -ALTER SEQUENCE deta_comandas_id_det_comanda_seq OWNED BY deta_comandas.id_det_comanda; - - --- --- Name: deta_comp_materias; Type: TABLE; Schema: ; Owner: - --- - -CREATE TABLE deta_comp_materias ( - id_compra integer NOT NULL, - id_mat_prima integer NOT NULL, - cantidad numeric(12,3) NOT NULL, - pre_unitario numeric(12,2) NOT NULL, - CONSTRAINT deta_comp_materias_cantidad_check CHECK ((cantidad > (0)::numeric)), - CONSTRAINT deta_comp_materias_pre_unitario_check CHECK ((pre_unitario >= (0)::numeric)) -); - - --- --- Name: deta_comp_producto; Type: TABLE; Schema: ; Owner: - --- - -CREATE TABLE deta_comp_producto ( - id_compra integer NOT NULL, - id_producto integer NOT NULL, - cantidad numeric(12,3) NOT NULL, - pre_unitario numeric(12,2) NOT NULL, - CONSTRAINT deta_comp_producto_cantidad_check CHECK ((cantidad > (0)::numeric)), - CONSTRAINT deta_comp_producto_pre_unitario_check CHECK ((pre_unitario >= (0)::numeric)) -); - - --- --- Name: mate_primas; Type: TABLE; Schema: ; Owner: - --- - -CREATE TABLE mate_primas ( - id_mat_prima integer NOT NULL, - nombre text NOT NULL, - unidad text NOT NULL, - activo boolean DEFAULT true -); - - --- --- Name: mate_primas_id_mat_prima_seq; Type: SEQUENCE; Schema: ; Owner: - --- - -CREATE SEQUENCE mate_primas_id_mat_prima_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: mate_primas_id_mat_prima_seq; Type: SEQUENCE OWNED BY; Schema: ; Owner: - --- - -ALTER SEQUENCE mate_primas_id_mat_prima_seq OWNED BY mate_primas.id_mat_prima; - - --- --- Name: mesas_id_mesa_seq; Type: SEQUENCE; Schema: ; Owner: - --- - -CREATE SEQUENCE mesas_id_mesa_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: mesas_id_mesa_seq; Type: SEQUENCE OWNED BY; Schema: ; Owner: - --- - -ALTER SEQUENCE mesas_id_mesa_seq OWNED BY mesas.id_mesa; - - --- --- Name: productos; Type: TABLE; Schema: ; Owner: - --- - -CREATE TABLE productos ( - id_producto integer NOT NULL, - nombre text NOT NULL, - img_producto character varying(255) DEFAULT 'img/productos/img_producto.png'::character varying NOT NULL, - precio integer NOT NULL, - activo boolean DEFAULT true, - id_categoria integer NOT NULL, - CONSTRAINT productos_precio_check CHECK (((precio)::numeric >= (0)::numeric)), - CONSTRAINT productos_precio_nn CHECK ((precio >= 0)) -); - - --- --- Name: productos_id_producto_seq; Type: SEQUENCE; Schema: ; Owner: - --- - -CREATE SEQUENCE productos_id_producto_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: productos_id_producto_seq; Type: SEQUENCE OWNED BY; Schema: ; Owner: - --- - -ALTER SEQUENCE productos_id_producto_seq OWNED BY productos.id_producto; - - --- --- Name: prov_mate_prima; Type: TABLE; Schema: ; Owner: - --- - -CREATE TABLE prov_mate_prima ( - id_proveedor integer NOT NULL, - id_mat_prima integer NOT NULL -); - - --- --- Name: prov_producto; Type: TABLE; Schema: ; Owner: - --- - -CREATE TABLE prov_producto ( - id_proveedor integer NOT NULL, - id_producto integer NOT NULL -); - - --- --- Name: proveedores; Type: TABLE; Schema: ; Owner: - --- - -CREATE TABLE proveedores ( - id_proveedor integer NOT NULL, - rut text, - raz_social text NOT NULL, - direccion text, - contacto text -); - - --- --- Name: proveedores_id_proveedor_seq; Type: SEQUENCE; Schema: ; Owner: - --- - -CREATE SEQUENCE proveedores_id_proveedor_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: proveedores_id_proveedor_seq; Type: SEQUENCE OWNED BY; Schema: ; Owner: - --- - -ALTER SEQUENCE proveedores_id_proveedor_seq OWNED BY proveedores.id_proveedor; - - --- --- Name: receta_producto; Type: TABLE; Schema: ; Owner: - --- - -CREATE TABLE receta_producto ( - id_producto integer NOT NULL, - id_mat_prima integer NOT NULL, - qty_por_unidad numeric(12,3) NOT NULL, - CONSTRAINT receta_producto_qty_por_unidad_check CHECK ((qty_por_unidad > (0)::numeric)) -); - - --- --- Name: roles; Type: TABLE; Schema: ; Owner: - --- - -CREATE TABLE roles ( - id_rol integer NOT NULL, - nombre text NOT NULL -); - - --- --- Name: roles_id_rol_seq; Type: SEQUENCE; Schema: ; Owner: - --- - -CREATE SEQUENCE roles_id_rol_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: roles_id_rol_seq; Type: SEQUENCE OWNED BY; Schema: ; Owner: - --- - -ALTER SEQUENCE roles_id_rol_seq OWNED BY roles.id_rol; - - --- --- Name: usua_roles; Type: TABLE; Schema: ; Owner: - --- - -CREATE TABLE usua_roles ( - id_usuario integer NOT NULL, - id_rol integer NOT NULL, - fec_asignacion timestamp without time zone DEFAULT now(), - autor integer, - activo boolean DEFAULT true -); - - --- --- Name: usuarios_id_usuario_seq; Type: SEQUENCE; Schema: ; Owner: - --- - -CREATE SEQUENCE usuarios_id_usuario_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: usuarios_id_usuario_seq; Type: SEQUENCE OWNED BY; Schema: ; Owner: - --- - -ALTER SEQUENCE usuarios_id_usuario_seq OWNED BY usuarios.id_usuario; - - --- --- Name: v_comandas_detalle_base; Type: VIEW; Schema: ; Owner: - --- - -CREATE VIEW v_comandas_detalle_base AS - SELECT c.id_comanda, - c.fec_creacion, - c.fec_cierre, - c.estado, - c.observaciones, - u.id_usuario, - u.nombre AS usuario_nombre, - u.apellido AS usuario_apellido, - m.id_mesa, - m.numero AS mesa_numero, - m.apodo AS mesa_apodo, - d.id_producto, - p.nombre AS producto_nombre, - d.cantidad, - d.pre_unitario, - (d.cantidad * d.pre_unitario) AS subtotal - FROM ((((comandas c - JOIN usuarios u ON ((u.id_usuario = c.id_usuario))) - JOIN mesas m ON ((m.id_mesa = c.id_mesa))) - LEFT JOIN deta_comandas d ON ((d.id_comanda = c.id_comanda))) - LEFT JOIN productos p ON ((p.id_producto = d.id_producto))); - - --- --- Name: v_comandas_detalle_items; Type: VIEW; Schema: ; Owner: - --- - -CREATE VIEW v_comandas_detalle_items AS - SELECT d.id_comanda, - d.id_det_comanda, - d.id_producto, - p.nombre AS producto_nombre, - d.cantidad, - d.pre_unitario, - (d.cantidad * d.pre_unitario) AS subtotal, - d.observaciones - FROM (deta_comandas d - JOIN productos p ON ((p.id_producto = d.id_producto))); - - --- --- Name: v_comandas_detalle_json; Type: VIEW; Schema: ; Owner: - --- - -CREATE VIEW v_comandas_detalle_json AS - SELECT id_comanda, - jsonb_build_object('id_comanda', id_comanda, 'fec_creacion', fec_creacion, 'fec_cierre', fec_cierre, 'estado', estado, 'observaciones', observaciones, 'usuario', jsonb_build_object('id_usuario', id_usuario, 'nombre', usuario_nombre, 'apellido', usuario_apellido), 'mesa', jsonb_build_object('id_mesa', id_mesa, 'numero', mesa_numero, 'apodo', mesa_apodo), 'items', COALESCE(( SELECT jsonb_agg(jsonb_build_object('producto_id', b.id_producto, 'producto', b.producto_nombre, 'cantidad', b.cantidad, 'pre_unitario', b.pre_unitario, 'subtotal', b.subtotal) ORDER BY b.producto_nombre) AS jsonb_agg - FROM v_comandas_detalle_base b - WHERE ((b.id_comanda = h.id_comanda) AND (b.id_producto IS NOT NULL))), '[]'::jsonb), 'totales', jsonb_build_object('items', COALESCE(( SELECT count(*) AS count - FROM v_comandas_detalle_base b - WHERE ((b.id_comanda = h.id_comanda) AND (b.id_producto IS NOT NULL))), (0)::bigint), 'total', COALESCE(( SELECT sum(b.subtotal) AS sum - FROM v_comandas_detalle_base b - WHERE (b.id_comanda = h.id_comanda)), (0)::numeric))) AS data - FROM ( SELECT DISTINCT v_comandas_detalle_base.id_comanda, - v_comandas_detalle_base.fec_creacion, - v_comandas_detalle_base.fec_cierre, - v_comandas_detalle_base.estado, - v_comandas_detalle_base.observaciones, - v_comandas_detalle_base.id_usuario, - v_comandas_detalle_base.usuario_nombre, - v_comandas_detalle_base.usuario_apellido, - v_comandas_detalle_base.id_mesa, - v_comandas_detalle_base.mesa_numero, - v_comandas_detalle_base.mesa_apodo - FROM v_comandas_detalle_base) h; - - --- --- Name: vw_compras; Type: VIEW; Schema: ; Owner: - --- - -CREATE VIEW vw_compras AS - SELECT c.id_compra, - c.id_proveedor, - p.raz_social AS proveedor, - c.fec_compra, - c.total - FROM (compras c - JOIN proveedores p USING (id_proveedor)) - ORDER BY c.fec_compra DESC, c.id_compra DESC; - - --- --- Name: vw_ticket_total; Type: VIEW; Schema: ; Owner: - --- - -CREATE VIEW vw_ticket_total AS - WITH lineas AS ( - SELECT c.id_comanda, - COALESCE(c.fec_cierre, (c.fec_creacion)::timestamp with time zone) AS fec_ticket, - (COALESCE(dc.pre_unitario, (p.precio)::numeric, (0)::numeric))::numeric(14,2) AS pu, - (COALESCE(dc.cantidad, (1)::numeric))::numeric(14,3) AS qty - FROM ((comandas c - JOIN deta_comandas dc ON ((dc.id_comanda = c.id_comanda))) - LEFT JOIN productos p ON ((p.id_producto = dc.id_producto))) - ) - SELECT id_comanda, - fec_ticket, - (sum((qty * pu)))::numeric(14,2) AS total - FROM lineas - GROUP BY id_comanda, fec_ticket; - - --- --- Name: asistencia_intervalo id_intervalo; Type: DEFAULT; Schema: ; Owner: - --- - -ALTER TABLE ONLY asistencia_intervalo ALTER COLUMN id_intervalo SET DEFAULT nextval('asistencia_intervalo_id_intervalo_seq'::regclass); - - --- --- Name: asistencia_raw id_raw; Type: DEFAULT; Schema: ; Owner: - --- - -ALTER TABLE ONLY asistencia_raw ALTER COLUMN id_raw SET DEFAULT nextval('asistencia_raw_id_raw_seq'::regclass); - - --- --- Name: categorias id_categoria; Type: DEFAULT; Schema: ; Owner: - --- - -ALTER TABLE ONLY categorias ALTER COLUMN id_categoria SET DEFAULT nextval('categorias_id_categoria_seq'::regclass); - - --- --- Name: clientes id_cliente; Type: DEFAULT; Schema: ; Owner: - --- - -ALTER TABLE ONLY clientes ALTER COLUMN id_cliente SET DEFAULT nextval('clientes_id_cliente_seq'::regclass); - - --- --- Name: comandas id_comanda; Type: DEFAULT; Schema: ; Owner: - --- - -ALTER TABLE ONLY comandas ALTER COLUMN id_comanda SET DEFAULT nextval('comandas_id_comanda_seq'::regclass); - - --- --- Name: compras id_compra; Type: DEFAULT; Schema: ; Owner: - --- - -ALTER TABLE ONLY compras ALTER COLUMN id_compra SET DEFAULT nextval('compras_id_compra_seq'::regclass); - - --- --- Name: deta_comandas id_det_comanda; Type: DEFAULT; Schema: ; Owner: - --- - -ALTER TABLE ONLY deta_comandas ALTER COLUMN id_det_comanda SET DEFAULT nextval('deta_comandas_id_det_comanda_seq'::regclass); - - --- --- Name: mate_primas id_mat_prima; Type: DEFAULT; Schema: ; Owner: - --- - -ALTER TABLE ONLY mate_primas ALTER COLUMN id_mat_prima SET DEFAULT nextval('mate_primas_id_mat_prima_seq'::regclass); - - --- --- Name: mesas id_mesa; Type: DEFAULT; Schema: ; Owner: - --- - -ALTER TABLE ONLY mesas ALTER COLUMN id_mesa SET DEFAULT nextval('mesas_id_mesa_seq'::regclass); - - --- --- Name: productos id_producto; Type: DEFAULT; Schema: ; Owner: - --- - -ALTER TABLE ONLY productos ALTER COLUMN id_producto SET DEFAULT nextval('productos_id_producto_seq'::regclass); - - --- --- Name: proveedores id_proveedor; Type: DEFAULT; Schema: ; Owner: - --- - -ALTER TABLE ONLY proveedores ALTER COLUMN id_proveedor SET DEFAULT nextval('proveedores_id_proveedor_seq'::regclass); - - --- --- Name: roles id_rol; Type: DEFAULT; Schema: ; Owner: - --- - -ALTER TABLE ONLY roles ALTER COLUMN id_rol SET DEFAULT nextval('roles_id_rol_seq'::regclass); - - --- --- Name: usuarios id_usuario; Type: DEFAULT; Schema: ; Owner: - --- - -ALTER TABLE ONLY usuarios ALTER COLUMN id_usuario SET DEFAULT nextval('usuarios_id_usuario_seq'::regclass); - - --- --- Name: asistencia_intervalo asistencia_intervalo_id_usuario_desde_hasta_key; Type: CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY asistencia_intervalo - ADD CONSTRAINT asistencia_intervalo_id_usuario_desde_hasta_key UNIQUE (id_usuario, desde, hasta); - - --- --- Name: asistencia_intervalo asistencia_intervalo_pkey; Type: CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY asistencia_intervalo - ADD CONSTRAINT asistencia_intervalo_pkey PRIMARY KEY (id_intervalo); - - --- --- Name: asistencia_raw asistencia_raw_id_usuario_ts_key; Type: CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY asistencia_raw - ADD CONSTRAINT asistencia_raw_id_usuario_ts_key UNIQUE (id_usuario, ts); - - --- --- Name: asistencia_raw asistencia_raw_pkey; Type: CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY asistencia_raw - ADD CONSTRAINT asistencia_raw_pkey PRIMARY KEY (id_raw); - - --- --- Name: categorias categorias_nombre_key; Type: CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY categorias - ADD CONSTRAINT categorias_nombre_key UNIQUE (nombre); - - --- --- Name: categorias categorias_pkey; Type: CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY categorias - ADD CONSTRAINT categorias_pkey PRIMARY KEY (id_categoria); - - --- --- Name: clientes clientes_correo_key; Type: CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY clientes - ADD CONSTRAINT clientes_correo_key UNIQUE (correo); - - --- --- Name: clientes clientes_pkey; Type: CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY clientes - ADD CONSTRAINT clientes_pkey PRIMARY KEY (id_cliente); - - --- --- Name: clientes clientes_telefono_key; Type: CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY clientes - ADD CONSTRAINT clientes_telefono_key UNIQUE (telefono); - - --- --- Name: comandas comandas_pkey; Type: CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY comandas - ADD CONSTRAINT comandas_pkey PRIMARY KEY (id_comanda); - - --- --- Name: compras compras_pkey; Type: CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY compras - ADD CONSTRAINT compras_pkey PRIMARY KEY (id_compra); - - --- --- Name: deta_comandas deta_comandas_pkey; Type: CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY deta_comandas - ADD CONSTRAINT deta_comandas_pkey PRIMARY KEY (id_det_comanda); - - --- --- Name: deta_comp_materias deta_comp_materias_pkey; Type: CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY deta_comp_materias - ADD CONSTRAINT deta_comp_materias_pkey PRIMARY KEY (id_compra, id_mat_prima); - - --- --- Name: deta_comp_producto deta_comp_producto_pkey; Type: CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY deta_comp_producto - ADD CONSTRAINT deta_comp_producto_pkey PRIMARY KEY (id_compra, id_producto); - - --- --- Name: mate_primas mate_primas_nombre_key; Type: CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY mate_primas - ADD CONSTRAINT mate_primas_nombre_key UNIQUE (nombre); - - --- --- Name: mate_primas mate_primas_pkey; Type: CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY mate_primas - ADD CONSTRAINT mate_primas_pkey PRIMARY KEY (id_mat_prima); - - --- --- Name: mesas mesas_apodo_key; Type: CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY mesas - ADD CONSTRAINT mesas_apodo_key UNIQUE (apodo); - - --- --- Name: mesas mesas_numero_key; Type: CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY mesas - ADD CONSTRAINT mesas_numero_key UNIQUE (numero); - - --- --- Name: mesas mesas_pkey; Type: CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY mesas - ADD CONSTRAINT mesas_pkey PRIMARY KEY (id_mesa); - - --- --- Name: productos productos_pkey; Type: CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY productos - ADD CONSTRAINT productos_pkey PRIMARY KEY (id_producto); - - --- --- Name: prov_mate_prima prov_mate_prima_pkey; Type: CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY prov_mate_prima - ADD CONSTRAINT prov_mate_prima_pkey PRIMARY KEY (id_proveedor, id_mat_prima); - - --- --- Name: prov_producto prov_producto_pkey; Type: CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY prov_producto - ADD CONSTRAINT prov_producto_pkey PRIMARY KEY (id_proveedor, id_producto); - - --- --- Name: proveedores proveedores_pkey; Type: CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY proveedores - ADD CONSTRAINT proveedores_pkey PRIMARY KEY (id_proveedor); - - --- --- Name: proveedores proveedores_rut_key; Type: CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY proveedores - ADD CONSTRAINT proveedores_rut_key UNIQUE (rut); - - --- --- Name: receta_producto receta_producto_pkey; Type: CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY receta_producto - ADD CONSTRAINT receta_producto_pkey PRIMARY KEY (id_producto, id_mat_prima); - - --- --- Name: roles roles_nombre_key; Type: CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY roles - ADD CONSTRAINT roles_nombre_key UNIQUE (nombre); - - --- --- Name: roles roles_pkey; Type: CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY roles - ADD CONSTRAINT roles_pkey PRIMARY KEY (id_rol); - - --- --- Name: usua_roles usua_roles_pkey; Type: CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY usua_roles - ADD CONSTRAINT usua_roles_pkey PRIMARY KEY (id_usuario, id_rol); - - --- --- Name: usuarios usuarios_documento_key; Type: CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY usuarios - ADD CONSTRAINT usuarios_documento_key UNIQUE (documento); - - --- --- Name: usuarios usuarios_pkey; Type: CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY usuarios - ADD CONSTRAINT usuarios_pkey PRIMARY KEY (id_usuario); - - --- --- Name: compras_fec_compra_idx; Type: INDEX; Schema: ; Owner: - --- - -CREATE INDEX compras_fec_compra_idx ON compras USING btree (fec_compra); - - --- --- Name: idx_asist_int_usuario_fecha; Type: INDEX; Schema: ; Owner: - --- - -CREATE INDEX idx_asist_int_usuario_fecha ON asistencia_intervalo USING btree (id_usuario, fecha); - - --- --- Name: idx_asist_raw_usuario_ts; Type: INDEX; Schema: ; Owner: - --- - -CREATE INDEX idx_asist_raw_usuario_ts ON asistencia_raw USING btree (id_usuario, ts); - - --- --- Name: idx_detalle_comanda_comanda; Type: INDEX; Schema: ; Owner: - --- - -CREATE INDEX idx_detalle_comanda_comanda ON deta_comandas USING btree (id_comanda); - - --- --- Name: idx_detalle_comanda_producto; Type: INDEX; Schema: ; Owner: - --- - -CREATE INDEX idx_detalle_comanda_producto ON deta_comandas USING btree (id_producto); - - --- --- Name: ix_comandas_fec_cierre; Type: INDEX; Schema: ; Owner: - --- - -CREATE INDEX ix_comandas_fec_cierre ON comandas USING btree (fec_cierre); - - --- --- Name: ix_comandas_id; Type: INDEX; Schema: ; Owner: - --- - -CREATE INDEX ix_comandas_id ON comandas USING btree (id_comanda); - - --- --- Name: ix_deta_comandas_id_comanda; Type: INDEX; Schema: ; Owner: - --- - -CREATE INDEX ix_deta_comandas_id_comanda ON deta_comandas USING btree (id_comanda); - - --- --- Name: ix_deta_comandas_id_producto; Type: INDEX; Schema: ; Owner: - --- - -CREATE INDEX ix_deta_comandas_id_producto ON deta_comandas USING btree (id_producto); - - --- --- Name: asistencia_intervalo asistencia_intervalo_id_usuario_fkey; Type: FK CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY asistencia_intervalo - ADD CONSTRAINT asistencia_intervalo_id_usuario_fkey FOREIGN KEY (id_usuario) REFERENCES usuarios(id_usuario) ON DELETE CASCADE; - - --- --- Name: asistencia_raw asistencia_raw_id_usuario_fkey; Type: FK CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY asistencia_raw - ADD CONSTRAINT asistencia_raw_id_usuario_fkey FOREIGN KEY (id_usuario) REFERENCES usuarios(id_usuario) ON DELETE CASCADE; - - --- --- Name: comandas comandas_id_mesa_fkey; Type: FK CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY comandas - ADD CONSTRAINT comandas_id_mesa_fkey FOREIGN KEY (id_mesa) REFERENCES mesas(id_mesa); - - --- --- Name: comandas comandas_id_usuario_fkey; Type: FK CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY comandas - ADD CONSTRAINT comandas_id_usuario_fkey FOREIGN KEY (id_usuario) REFERENCES usuarios(id_usuario); - - --- --- Name: compras compras_id_proveedor_fkey; Type: FK CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY compras - ADD CONSTRAINT compras_id_proveedor_fkey FOREIGN KEY (id_proveedor) REFERENCES proveedores(id_proveedor); - - --- --- Name: deta_comandas deta_comandas_id_comanda_fkey; Type: FK CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY deta_comandas - ADD CONSTRAINT deta_comandas_id_comanda_fkey FOREIGN KEY (id_comanda) REFERENCES comandas(id_comanda) ON DELETE CASCADE; - - --- --- Name: deta_comandas deta_comandas_id_producto_fkey; Type: FK CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY deta_comandas - ADD CONSTRAINT deta_comandas_id_producto_fkey FOREIGN KEY (id_producto) REFERENCES productos(id_producto); - - --- --- Name: deta_comp_materias deta_comp_materias_id_compra_fkey; Type: FK CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY deta_comp_materias - ADD CONSTRAINT deta_comp_materias_id_compra_fkey FOREIGN KEY (id_compra) REFERENCES compras(id_compra) ON DELETE CASCADE; - - --- --- Name: deta_comp_materias deta_comp_materias_id_mat_prima_fkey; Type: FK CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY deta_comp_materias - ADD CONSTRAINT deta_comp_materias_id_mat_prima_fkey FOREIGN KEY (id_mat_prima) REFERENCES mate_primas(id_mat_prima); - - --- --- Name: deta_comp_producto deta_comp_producto_id_compra_fkey; Type: FK CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY deta_comp_producto - ADD CONSTRAINT deta_comp_producto_id_compra_fkey FOREIGN KEY (id_compra) REFERENCES compras(id_compra) ON DELETE CASCADE; - - --- --- Name: deta_comp_producto deta_comp_producto_id_producto_fkey; Type: FK CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY deta_comp_producto - ADD CONSTRAINT deta_comp_producto_id_producto_fkey FOREIGN KEY (id_producto) REFERENCES productos(id_producto); - - --- --- Name: productos productos_id_categoria_fkey; Type: FK CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY productos - ADD CONSTRAINT productos_id_categoria_fkey FOREIGN KEY (id_categoria) REFERENCES categorias(id_categoria); - - --- --- Name: prov_mate_prima prov_mate_prima_id_mat_prima_fkey; Type: FK CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY prov_mate_prima - ADD CONSTRAINT prov_mate_prima_id_mat_prima_fkey FOREIGN KEY (id_mat_prima) REFERENCES mate_primas(id_mat_prima); - - --- --- Name: prov_mate_prima prov_mate_prima_id_proveedor_fkey; Type: FK CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY prov_mate_prima - ADD CONSTRAINT prov_mate_prima_id_proveedor_fkey FOREIGN KEY (id_proveedor) REFERENCES proveedores(id_proveedor) ON DELETE CASCADE; - - --- --- Name: prov_producto prov_producto_id_producto_fkey; Type: FK CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY prov_producto - ADD CONSTRAINT prov_producto_id_producto_fkey FOREIGN KEY (id_producto) REFERENCES productos(id_producto); - - --- --- Name: prov_producto prov_producto_id_proveedor_fkey; Type: FK CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY prov_producto - ADD CONSTRAINT prov_producto_id_proveedor_fkey FOREIGN KEY (id_proveedor) REFERENCES proveedores(id_proveedor) ON DELETE CASCADE; - - --- --- Name: receta_producto receta_producto_id_mat_prima_fkey; Type: FK CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY receta_producto - ADD CONSTRAINT receta_producto_id_mat_prima_fkey FOREIGN KEY (id_mat_prima) REFERENCES mate_primas(id_mat_prima); - - --- --- Name: receta_producto receta_producto_id_producto_fkey; Type: FK CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY receta_producto - ADD CONSTRAINT receta_producto_id_producto_fkey FOREIGN KEY (id_producto) REFERENCES productos(id_producto) ON DELETE CASCADE; - - --- --- Name: usua_roles usua_roles_autor_fkey; Type: FK CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY usua_roles - ADD CONSTRAINT usua_roles_autor_fkey FOREIGN KEY (autor) REFERENCES usuarios(id_usuario); - - --- --- Name: usua_roles usua_roles_id_rol_fkey; Type: FK CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY usua_roles - ADD CONSTRAINT usua_roles_id_rol_fkey FOREIGN KEY (id_rol) REFERENCES roles(id_rol); - - --- --- Name: usua_roles usua_roles_id_usuario_fkey; Type: FK CONSTRAINT; Schema: ; Owner: - --- - -ALTER TABLE ONLY usua_roles - ADD CONSTRAINT usua_roles_id_usuario_fkey FOREIGN KEY (id_usuario) REFERENCES usuarios(id_usuario) ON DELETE CASCADE; - - --- --- PostgreSQL database dump complete --- - - -COMMIT; diff --git a/services/auth/src/db/initTenant_v3.sql b/services/auth/src/db/initTenant_v3.sql deleted file mode 100644 index 36c2575..0000000 --- a/services/auth/src/db/initTenant_v3.sql +++ /dev/null @@ -1,2284 +0,0 @@ --- --- PostgreSQL database dump --- - - --- Dumped from database version 16.10 (Debian 16.10-1.pgdg13+1) --- Dumped by pg_dump version 16.10 (Debian 16.10-1.pgdg13+1) - -BEGIN; -SET client_encoding = 'UTF8'; -SET standard_conforming_strings = on; -SET row_security = off; -SET statement_timeout = 0; -SET lock_timeout = 0; -SET idle_in_transaction_session_timeout = 0; -SET client_encoding = 'UTF8'; -SET standard_conforming_strings = on; -SELECT pg_catalog.set_config('search_path', '', false); -SET check_function_bodies = false; -SET xmloption = content; -SET client_min_messages = warning; -SET row_security = off; - --- --- Name: public; Type: SCHEMA; Schema: -; Owner: - --- - -CREATE SCHEMA public; - - --- --- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - --- - -COMMENT ON SCHEMA public IS 'standard public schema'; - - --- --- Name: asistencia_delete_raw(bigint, text); Type: FUNCTION; Schema: public; Owner: - --- - -CREATE FUNCTION public.asistencia_delete_raw(p_id_raw bigint, p_tz text DEFAULT 'America/Montevideo'::text) RETURNS jsonb - LANGUAGE plpgsql - AS $$ -DECLARE - v_id_usuario INT; - v_ts TIMESTAMPTZ; - v_t0 TIMESTAMPTZ; - v_t1 TIMESTAMPTZ; - v_del_raw INT; - v_del INT; - v_ins INT; -BEGIN - SELECT id_usuario, ts INTO v_id_usuario, v_ts - FROM public.asistencia_raw WHERE id_raw = p_id_raw; - IF v_id_usuario IS NULL THEN - RETURN jsonb_build_object('deleted',0,'msg','id_raw inexistente'); - END IF; - - v_t0 := v_ts - INTERVAL '1 day'; - v_t1 := v_ts + INTERVAL '1 day'; - - -- borrar raw - DELETE FROM public.asistencia_raw WHERE id_raw = p_id_raw; - GET DIAGNOSTICS v_del_raw = ROW_COUNT; - - -- recomputar pares en ventana - WITH tl AS ( - SELECT ar.ts, - ROW_NUMBER() OVER (ORDER BY ar.ts) AS rn - FROM public.asistencia_raw ar - WHERE ar.id_usuario = v_id_usuario - AND ar.ts BETWEEN v_t0 AND v_t1 - ), - ready AS ( - SELECT (t1.ts AT TIME ZONE p_tz)::date AS fecha, - t1.ts AS desde, - t2.ts AS hasta, - EXTRACT(EPOCH FROM (t2.ts - t1.ts))/60.0 AS dur_min - FROM tl t1 - JOIN tl t2 ON t2.rn = t1.rn + 1 - WHERE (t1.rn % 2) = 1 AND t2.ts > t1.ts - ), - del AS ( - DELETE FROM public.asistencia_intervalo ai - WHERE ai.id_usuario = v_id_usuario - AND (ai.desde BETWEEN v_t0 AND v_t1 OR ai.hasta BETWEEN v_t0 AND v_t1) - RETURNING 1 - ), - ins AS ( - INSERT INTO public.asistencia_intervalo (id_usuario, fecha, desde, hasta, dur_min, origen) - SELECT v_id_usuario, r.fecha, r.desde, r.hasta, r.dur_min, 'delete_adjust' - FROM ready r - ON CONFLICT (id_usuario, desde, hasta) DO NOTHING - RETURNING 1 - ) - SELECT (SELECT COUNT(*) FROM del), (SELECT COUNT(*) FROM ins) INTO v_del, v_ins; - - RETURN jsonb_build_object('deleted',v_del_raw,'deleted_pairs',v_del,'inserted_pairs',v_ins); -END; -$$; - - --- --- Name: asistencia_get(text, date, date, text); Type: FUNCTION; Schema: public; Owner: - --- - -CREATE FUNCTION public.asistencia_get(p_doc text, p_desde date, p_hasta date, p_tz text DEFAULT 'America/Montevideo'::text) RETURNS jsonb - LANGUAGE sql - AS $$ -WITH u AS ( - SELECT id_usuario, documento, nombre, apellido - FROM public.usuarios - WHERE regexp_replace(documento,'^\s*0+','','g') = regexp_replace(p_doc,'^\s*0+','','g') - LIMIT 1 -), -r AS ( - SELECT ar.id_raw, - (ar.ts AT TIME ZONE p_tz)::date AS fecha, - to_char(ar.ts AT TIME ZONE p_tz,'HH24:MI:SS') AS hora, - COALESCE(ar.modo,'') AS modo, - COALESCE(ar.origen,'') AS origen, - ar.ts - FROM public.asistencia_raw ar - JOIN u USING (id_usuario) - WHERE (ar.ts AT TIME ZONE p_tz)::date BETWEEN p_desde AND p_hasta -), -i AS ( - SELECT ai.id_intervalo, - ai.fecha, - to_char(ai.desde AT TIME ZONE p_tz,'HH24:MI:SS') AS desde_hora, - to_char(ai.hasta AT TIME ZONE p_tz,'HH24:MI:SS') AS hasta_hora, - ai.dur_min - FROM public.asistencia_intervalo ai - JOIN u USING (id_usuario) - WHERE ai.fecha BETWEEN p_desde AND p_hasta -) -SELECT jsonb_build_object( - 'usuario', (SELECT to_jsonb(u.*) FROM u), - 'raw', COALESCE((SELECT jsonb_agg(to_jsonb(r.*) ORDER BY r.ts) FROM r),'[]'::jsonb), - 'intervalos', COALESCE((SELECT jsonb_agg(to_jsonb(i.*) ORDER BY i.fecha, i.id_intervalo) FROM i),'[]'::jsonb) -); -$$; - - --- --- Name: asistencia_update_raw(bigint, date, text, text, text); Type: FUNCTION; Schema: public; Owner: - --- - -CREATE FUNCTION public.asistencia_update_raw(p_id_raw bigint, p_fecha date, p_hora text, p_modo text, p_tz text DEFAULT 'America/Montevideo'::text) RETURNS jsonb - LANGUAGE plpgsql - AS $$ -DECLARE - v_id_usuario INT; - v_ts_old TIMESTAMPTZ; - v_ts_new TIMESTAMPTZ; - v_t0 TIMESTAMPTZ; - v_t1 TIMESTAMPTZ; - v_del INT; - v_ins INT; -BEGIN - -- leer estado previo - SELECT id_usuario, ts INTO v_id_usuario, v_ts_old - FROM public.asistencia_raw WHERE id_raw = p_id_raw; - IF v_id_usuario IS NULL THEN - RETURN jsonb_build_object('updated',0,'msg','id_raw inexistente'); - END IF; - - -- construir ts nuevo - v_ts_new := make_timestamptz( - EXTRACT(YEAR FROM p_fecha)::INT, - EXTRACT(MONTH FROM p_fecha)::INT, - EXTRACT(DAY FROM p_fecha)::INT, - split_part(p_hora,':',1)::INT, - split_part(p_hora,':',2)::INT, - COALESCE(NULLIF(split_part(p_hora,':',3),''), '0')::INT, - p_tz); - - -- aplicar update - UPDATE public.asistencia_raw - SET ts = v_ts_new, - modo = COALESCE(p_modo, modo) - WHERE id_raw = p_id_raw; - - -- ventana de recálculo - v_t0 := LEAST(v_ts_old, v_ts_new) - INTERVAL '1 day'; - v_t1 := GREATEST(v_ts_old, v_ts_new) + INTERVAL '1 day'; - - -- recomputar pares en la ventana: borrar los del rango y reinsertar - WITH tl AS ( - SELECT ar.ts, - ROW_NUMBER() OVER (ORDER BY ar.ts) AS rn - FROM public.asistencia_raw ar - WHERE ar.id_usuario = v_id_usuario - AND ar.ts BETWEEN v_t0 AND v_t1 - ), - ready AS ( - SELECT (t1.ts AT TIME ZONE p_tz)::date AS fecha, - t1.ts AS desde, - t2.ts AS hasta, - EXTRACT(EPOCH FROM (t2.ts - t1.ts))/60.0 AS dur_min - FROM tl t1 - JOIN tl t2 ON t2.rn = t1.rn + 1 - WHERE (t1.rn % 2) = 1 AND t2.ts > t1.ts - ), - del AS ( - DELETE FROM public.asistencia_intervalo ai - WHERE ai.id_usuario = v_id_usuario - AND (ai.desde BETWEEN v_t0 AND v_t1 OR ai.hasta BETWEEN v_t0 AND v_t1) - RETURNING 1 - ), - ins AS ( - INSERT INTO public.asistencia_intervalo (id_usuario, fecha, desde, hasta, dur_min, origen) - SELECT v_id_usuario, r.fecha, r.desde, r.hasta, r.dur_min, 'edit_manual' - FROM ready r - ON CONFLICT (id_usuario, desde, hasta) DO NOTHING - RETURNING 1 - ) - SELECT (SELECT COUNT(*) FROM del), (SELECT COUNT(*) FROM ins) INTO v_del, v_ins; - - RETURN jsonb_build_object('updated',1,'deleted_pairs',v_del,'inserted_pairs',v_ins); -END; -$$; - - --- --- Name: delete_compra(integer); Type: FUNCTION; Schema: public; Owner: - --- - -CREATE FUNCTION public.delete_compra(p_id_compra integer) RETURNS void - LANGUAGE plpgsql - AS $$ -BEGIN - DELETE FROM public.deta_comp_materias WHERE id_compra = p_id_compra; - DELETE FROM public.deta_comp_producto WHERE id_compra = p_id_compra; - DELETE FROM public.compras WHERE id_compra = p_id_compra; -END; -$$; - - --- --- Name: f_abrir_comanda(integer); Type: FUNCTION; Schema: public; Owner: - --- - -CREATE FUNCTION public.f_abrir_comanda(p_id integer) RETURNS jsonb - LANGUAGE plpgsql - AS $$ -DECLARE r jsonb; -BEGIN - UPDATE public.comandas - SET estado = 'abierta', - fec_cierre = NULL - WHERE id_comanda = p_id; - - IF NOT FOUND THEN - RETURN NULL; - END IF; - - SELECT to_jsonb(v) INTO r - FROM public.v_comandas_resumen v - WHERE v.id_comanda = p_id; - - RETURN r; -END; -$$; - - --- --- Name: f_cerrar_comanda(integer); Type: FUNCTION; Schema: public; Owner: - --- - -CREATE FUNCTION public.f_cerrar_comanda(p_id integer) RETURNS jsonb - LANGUAGE plpgsql - AS $$ -DECLARE r jsonb; -BEGIN - UPDATE public.comandas - SET estado = 'cerrada', - fec_cierre = COALESCE(fec_cierre, NOW()) - WHERE id_comanda = p_id; - - IF NOT FOUND THEN - RETURN NULL; - END IF; - - SELECT to_jsonb(v) INTO r - FROM public.v_comandas_resumen v - WHERE v.id_comanda = p_id; - - RETURN r; -END; -$$; - - --- --- Name: f_comanda_detalle_json(integer); Type: FUNCTION; Schema: public; Owner: - --- - -CREATE FUNCTION public.f_comanda_detalle_json(p_id_comanda integer) RETURNS jsonb - LANGUAGE sql - AS $$ -WITH base AS ( - SELECT - c.id_comanda, - c.fec_creacion, - c.estado, - c.observaciones, - u.id_usuario, - u.nombre AS usuario_nombre, - u.apellido AS usuario_apellido, - m.id_mesa, - m.numero AS mesa_numero, - m.apodo AS mesa_apodo, - d.id_producto, - p.nombre AS producto_nombre, - d.cantidad, - d.pre_unitario, - (d.cantidad * d.pre_unitario) AS subtotal - FROM public.comandas c - JOIN public.usuarios u ON u.id_usuario = c.id_usuario - JOIN public.mesas m ON m.id_mesa = c.id_mesa - LEFT JOIN public.deta_comandas d ON d.id_comanda = c.id_comanda - LEFT JOIN public.productos p ON p.id_producto = d.id_producto - WHERE c.id_comanda = p_id_comanda -), -hdr AS ( - -- 1 sola fila con los datos de cabecera - SELECT DISTINCT - id_comanda, fec_creacion, estado, observaciones, - id_usuario, usuario_nombre, usuario_apellido, - id_mesa, mesa_numero, mesa_apodo - FROM base -), -agg_items AS ( - SELECT - COALESCE( - jsonb_agg( - jsonb_build_object( - 'producto_id', b.id_producto, - 'producto', b.producto_nombre, - 'cantidad', b.cantidad, - 'pre_unitario', b.pre_unitario, - 'subtotal', b.subtotal - ) - ORDER BY b.producto_nombre NULLS LAST - ) FILTER (WHERE b.id_producto IS NOT NULL), - '[]'::jsonb - ) AS items - FROM base b -), -tot AS ( - SELECT - COUNT(*) FILTER (WHERE id_producto IS NOT NULL) AS items, - COALESCE(SUM(subtotal), 0)::numeric AS total - FROM base -) -SELECT - CASE - WHEN EXISTS (SELECT 1 FROM hdr) THEN - jsonb_build_object( - 'id_comanda', h.id_comanda, - 'fec_creacion', h.fec_creacion, - 'estado', h.estado, - 'observaciones',h.observaciones, - 'usuario', jsonb_build_object( - 'id_usuario', h.id_usuario, - 'nombre', h.usuario_nombre, - 'apellido', h.usuario_apellido - ), - 'mesa', jsonb_build_object( - 'id_mesa', h.id_mesa, - 'numero', h.mesa_numero, - 'apodo', h.mesa_apodo - ), - 'items', i.items, - 'totales', jsonb_build_object( - 'items', t.items, - 'total', t.total - ) - ) - ELSE NULL - END -FROM hdr h, agg_items i, tot t; -$$; - - --- --- Name: f_comanda_detalle_rows(integer); Type: FUNCTION; Schema: public; Owner: - --- - -CREATE FUNCTION public.f_comanda_detalle_rows(p_id_comanda integer) RETURNS TABLE(id_comanda integer, fec_creacion timestamp without time zone, estado text, observaciones text, id_usuario integer, usuario_nombre text, usuario_apellido text, id_mesa integer, mesa_numero integer, mesa_apodo text, producto_id integer, producto_nombre text, cantidad numeric, pre_unitario numeric, subtotal numeric, items integer, total numeric) - LANGUAGE sql - AS $$ -WITH base AS ( - SELECT - c.id_comanda, c.fec_creacion, c.estado, c.observaciones, - u.id_usuario, u.nombre AS usuario_nombre, u.apellido AS usuario_apellido, - m.id_mesa, m.numero AS mesa_numero, m.apodo AS mesa_apodo, - d.id_producto, p.nombre AS producto_nombre, - d.cantidad, d.pre_unitario, - (d.cantidad * d.pre_unitario) AS subtotal - FROM public.comandas c - JOIN public.usuarios u ON u.id_usuario = c.id_usuario - JOIN public.mesas m ON m.id_mesa = c.id_mesa - LEFT JOIN public.deta_comandas d ON d.id_comanda = c.id_comanda - LEFT JOIN public.productos p ON p.id_producto = d.id_producto - WHERE c.id_comanda = p_id_comanda -), -tot AS ( - SELECT - COUNT(*) FILTER (WHERE id_producto IS NOT NULL) AS items, - COALESCE(SUM(subtotal), 0) AS total - FROM base -) -SELECT - b.id_comanda, b.fec_creacion, b.estado, b.observaciones, - b.id_usuario, b.usuario_nombre, b.usuario_apellido, - b.id_mesa, b.mesa_numero, b.mesa_apodo, - b.id_producto, b.producto_nombre, - b.cantidad, b.pre_unitario, b.subtotal, - t.items, t.total -FROM base b CROSS JOIN tot t -ORDER BY b.producto_nombre NULLS LAST; -$$; - - -SET default_tablespace = ''; - -SET default_table_access_method = heap; - --- --- Name: comandas; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.comandas ( - id_comanda integer NOT NULL, - id_usuario integer NOT NULL, - id_mesa integer NOT NULL, - fec_creacion timestamp without time zone DEFAULT now() NOT NULL, - estado text NOT NULL, - observaciones text, - fec_cierre timestamp with time zone, - CONSTRAINT comandas_estado_check CHECK ((estado = ANY (ARRAY['abierta'::text, 'cerrada'::text, 'pagada'::text, 'anulada'::text]))) -); - - --- --- Name: COLUMN comandas.fec_cierre; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.comandas.fec_cierre IS 'Fecha/hora de cierre de la comanda (NULL si está abierta)'; - - --- --- Name: deta_comandas; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.deta_comandas ( - id_det_comanda integer NOT NULL, - id_comanda integer NOT NULL, - id_producto integer NOT NULL, - cantidad numeric(12,3) NOT NULL, - pre_unitario numeric(12,2) NOT NULL, - observaciones text, - CONSTRAINT deta_comandas_cantidad_check CHECK ((cantidad > (0)::numeric)), - CONSTRAINT deta_comandas_pre_unitario_check CHECK ((pre_unitario >= (0)::numeric)) -); - - --- --- Name: mesas; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.mesas ( - id_mesa integer NOT NULL, - numero integer NOT NULL, - apodo text NOT NULL, - estado text DEFAULT 'libre'::text NOT NULL, - CONSTRAINT mesas_estado_check CHECK ((estado = ANY (ARRAY['libre'::text, 'ocupada'::text, 'reservada'::text]))) -); - - --- --- Name: usuarios; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.usuarios ( - id_usuario integer NOT NULL, - documento text, - img_perfil character varying(255) DEFAULT 'img_perfil.png'::character varying NOT NULL, - nombre text NOT NULL, - apellido text NOT NULL, - correo text, - telefono text, - fec_nacimiento date, - activo boolean DEFAULT true -); - - --- --- Name: v_comandas_resumen; Type: VIEW; Schema: public; Owner: - --- - -CREATE VIEW public.v_comandas_resumen AS - WITH items AS ( - SELECT d.id_comanda, - count(*) AS items, - sum((d.cantidad * d.pre_unitario)) AS total - FROM public.deta_comandas d - GROUP BY d.id_comanda - ) - SELECT c.id_comanda, - c.fec_creacion, - c.estado, - c.observaciones, - u.id_usuario, - u.nombre AS usuario_nombre, - u.apellido AS usuario_apellido, - m.id_mesa, - m.numero AS mesa_numero, - m.apodo AS mesa_apodo, - COALESCE(i.items, (0)::bigint) AS items, - COALESCE(i.total, (0)::numeric) AS total, - c.fec_cierre, - CASE - WHEN (c.fec_cierre IS NOT NULL) THEN round((EXTRACT(epoch FROM (c.fec_cierre - (c.fec_creacion)::timestamp with time zone)) / 60.0), 1) - ELSE NULL::numeric - END AS duracion_min - FROM (((public.comandas c - JOIN public.usuarios u ON ((u.id_usuario = c.id_usuario))) - JOIN public.mesas m ON ((m.id_mesa = c.id_mesa))) - LEFT JOIN items i ON ((i.id_comanda = c.id_comanda))); - - --- --- Name: f_comandas_resumen(text, integer); Type: FUNCTION; Schema: public; Owner: - --- - -CREATE FUNCTION public.f_comandas_resumen(p_estado text DEFAULT NULL::text, p_limit integer DEFAULT 200) RETURNS SETOF public.v_comandas_resumen - LANGUAGE sql - AS $$ - SELECT * - FROM public.v_comandas_resumen - WHERE (p_estado IS NULL OR estado = p_estado) - ORDER BY id_comanda DESC - LIMIT p_limit; -$$; - - --- --- Name: find_usuarios_por_documentos(jsonb); Type: FUNCTION; Schema: public; Owner: - --- - -CREATE FUNCTION public.find_usuarios_por_documentos(p_docs jsonb) RETURNS jsonb - LANGUAGE sql - AS $$ -WITH docs AS ( - SELECT DISTINCT - regexp_replace(value::text, '^\s*0+', '', 'g') AS doc_clean, - value::text AS original - FROM jsonb_array_elements_text(COALESCE(p_docs,'[]')) -), -rows AS ( - SELECT d.original AS documento, - u.nombre, - u.apellido, - (u.id_usuario IS NOT NULL) AS found - FROM docs d - LEFT JOIN public.usuarios u - ON regexp_replace(u.documento, '^\s*0+', '', 'g') = d.doc_clean -) -SELECT COALESCE( - jsonb_object_agg( - documento, - jsonb_build_object( - 'nombre', COALESCE(nombre, ''), - 'apellido', COALESCE(apellido, ''), - 'found', found - ) - ), - '{}'::jsonb -) -FROM rows; -$$; - - --- --- Name: get_compra(integer); Type: FUNCTION; Schema: public; Owner: - --- - -CREATE FUNCTION public.get_compra(p_id_compra integer) RETURNS jsonb - LANGUAGE sql - AS $$ -WITH cab AS ( - SELECT c.id_compra, c.id_proveedor, c.fec_compra, c.total - FROM public.compras c - WHERE c.id_compra = p_id_compra -), -dm AS ( - SELECT 'MAT'::text AS tipo, d.id_mat_prima AS id, - d.cantidad, d.pre_unitario AS precio - FROM public.deta_comp_materias d WHERE d.id_compra = p_id_compra -), -dp AS ( - SELECT 'PROD'::text AS tipo, d.id_producto AS id, - d.cantidad, d.pre_unitario AS precio - FROM public.deta_comp_producto d WHERE d.id_compra = p_id_compra -), -det AS ( - SELECT jsonb_agg(to_jsonb(x.*)) AS detalles - FROM ( - SELECT * FROM dm - UNION ALL - SELECT * FROM dp - ) x -) -SELECT jsonb_build_object( - 'id_compra', (SELECT id_compra FROM cab), - 'id_proveedor',(SELECT id_proveedor FROM cab), - 'fec_compra', to_char((SELECT fec_compra FROM cab),'YYYY-MM-DD HH24:MI:SS'), - 'total', (SELECT total FROM cab), - 'detalles', COALESCE((SELECT detalles FROM det),'[]'::jsonb) -); -$$; - - --- --- Name: get_materia_prima(integer); Type: FUNCTION; Schema: public; Owner: - --- - -CREATE FUNCTION public.get_materia_prima(p_id integer) RETURNS jsonb - LANGUAGE sql - AS $$ -SELECT jsonb_build_object( - 'materia', to_jsonb(mp), - 'proveedores', COALESCE( - ( - SELECT jsonb_agg( - jsonb_build_object( - 'id_proveedor', pr.id_proveedor, - 'raz_social', pr.raz_social, - 'rut', pr.rut, - 'contacto', pr.contacto, - 'direccion', pr.direccion - ) - ) - FROM public.prov_mate_prima pmp - JOIN public.proveedores pr ON pr.id_proveedor = pmp.id_proveedor - WHERE pmp.id_mat_prima = mp.id_mat_prima - ), - '[]'::jsonb - ) -) -FROM public.mate_primas mp -WHERE mp.id_mat_prima = p_id; -$$; - - --- --- Name: get_producto(integer); Type: FUNCTION; Schema: public; Owner: - --- - -CREATE FUNCTION public.get_producto(p_id integer) RETURNS jsonb - LANGUAGE sql - AS $$ -SELECT jsonb_build_object( - 'producto', to_jsonb(p), -- el registro completo del producto en JSONB - 'receta', COALESCE( - ( - SELECT jsonb_agg( - jsonb_build_object( - 'id_mat_prima', rp.id_mat_prima, - 'qty_por_unidad', rp.qty_por_unidad, - 'nombre', mp.nombre, - 'unidad', mp.unidad - ) - ) - FROM receta_producto rp - LEFT JOIN mate_primas mp USING (id_mat_prima) - WHERE rp.id_producto = p.id_producto - ), - '[]'::jsonb - ) -) -FROM productos p -WHERE p.id_producto = p_id; -$$; - - --- --- Name: import_asistencia(jsonb, text, text); Type: FUNCTION; Schema: public; Owner: - --- - -CREATE FUNCTION public.import_asistencia(p_registros jsonb, p_origen text, p_tz text DEFAULT 'America/Montevideo'::text) RETURNS jsonb - LANGUAGE plpgsql - AS $_$ -DECLARE - v_ins_raw INT; - v_ins_pairs INT; - v_miss JSONB; -BEGIN - WITH - -- 1) JSON -> filas - j AS ( - SELECT - regexp_replace(elem->>'doc','^\s*0+','','g')::TEXT AS doc_clean, - (elem->>'isoDate')::DATE AS d, - elem->>'time' AS time_str, - NULLIF(elem->>'mode','') AS modo - FROM jsonb_array_elements(COALESCE(p_registros,'[]')) elem - ), - -- 2) Vincular a usuarios - u AS ( - SELECT j.*, u.id_usuario - FROM j - LEFT JOIN public.usuarios u - ON regexp_replace(u.documento,'^\s*0+','','g') = j.doc_clean - ), - -- 3) Documentos faltantes - miss AS ( - SELECT jsonb_agg(doc_clean) AS missing - FROM u WHERE id_usuario IS NULL - ), - -- 4) TS determinista en TZ del negocio - parsed AS ( - SELECT - u.id_usuario, - u.modo, - make_timestamptz( - EXTRACT(YEAR FROM u.d)::INT, - EXTRACT(MONTH FROM u.d)::INT, - EXTRACT(DAY FROM u.d)::INT, - split_part(u.time_str,':',1)::INT, - split_part(u.time_str,':',2)::INT, - COALESCE(NULLIF(split_part(u.time_str,':',3),''),'0')::INT, - p_tz - ) AS ts_calc - FROM u - WHERE u.id_usuario IS NOT NULL - ), - -- 5) Ventana por usuario (±1 día de lo importado) - win AS ( - SELECT id_usuario, - (MIN(ts_calc) - INTERVAL '1 day') AS t0, - (MAX(ts_calc) + INTERVAL '1 day') AS t1 - FROM parsed - GROUP BY id_usuario - ), - -- 6) Lo existente en BD dentro de la ventana - existing AS ( - SELECT ar.id_usuario, ar.ts - FROM public.asistencia_raw ar - JOIN win w ON w.id_usuario = ar.id_usuario - AND ar.ts BETWEEN w.t0 AND w.t1 - ), - -- 7) CANDIDATE = existente ∪ archivo (sin duplicados) - candidate AS ( - SELECT id_usuario, ts FROM existing - UNION -- ¡clave para evitar doble click! - SELECT id_usuario, ts_calc AS ts FROM parsed - ), - -- 8) Paridad previa (cuántas marcas había ANTES de la ventana) - before_cnt AS ( - SELECT w.id_usuario, COUNT(*)::int AS cnt - FROM win w - JOIN public.asistencia_raw ar - ON ar.id_usuario = w.id_usuario - AND ar.ts < w.t0 - GROUP BY w.id_usuario - ), - -- 9) Línea de tiempo candidata y pares (1→2, 3→4…), jornada = día local del inicio - timeline AS ( - SELECT - c.id_usuario, - c.ts, - ROW_NUMBER() OVER (PARTITION BY c.id_usuario ORDER BY c.ts) AS rn - FROM candidate c - ), - ready AS ( - SELECT - t1.id_usuario, - (t1.ts AT TIME ZONE p_tz)::date AS fecha, - t1.ts AS desde, - t2.ts AS hasta, - EXTRACT(EPOCH FROM (t2.ts - t1.ts))/60.0 AS dur_min - FROM timeline t1 - JOIN timeline t2 - ON t2.id_usuario = t1.id_usuario - AND t2.rn = t1.rn + 1 - LEFT JOIN before_cnt b ON b.id_usuario = t1.id_usuario - WHERE ((COALESCE(b.cnt,0) + t1.rn) % 2) = 1 -- t1 es IN global - AND t2.ts > t1.ts - ), - -- 10) INSERT crudo (dedupe) - ins_raw AS ( - INSERT INTO public.asistencia_raw (id_usuario, ts, modo, origen) - SELECT id_usuario, ts_calc, - NULLIF(modo,'')::text, -- puede quedar NULL para auto-etiquetado - p_origen - FROM parsed - ON CONFLICT (id_usuario, ts) DO NOTHING - RETURNING 1 - ), - -- 11) Auto-etiquetar IN/OUT en BD para filas con modo vacío/'1' (tras insertar) - before_cnt2 AS ( - SELECT w.id_usuario, COUNT(*)::int AS cnt - FROM win w - JOIN public.asistencia_raw ar - ON ar.id_usuario = w.id_usuario - AND ar.ts < w.t0 - GROUP BY w.id_usuario - ), - tl2 AS ( - SELECT - ar.id_usuario, ar.ts, - ROW_NUMBER() OVER (PARTITION BY ar.id_usuario ORDER BY ar.ts) AS rn - FROM public.asistencia_raw ar - JOIN win w ON w.id_usuario = ar.id_usuario - AND ar.ts BETWEEN w.t0 AND w.t1 - ), - label2 AS ( - SELECT - t.id_usuario, - t.ts, - CASE WHEN ((COALESCE(b.cnt,0) + t.rn) % 2) = 1 THEN 'IN' ELSE 'OUT' END AS new_mode - FROM tl2 t - LEFT JOIN before_cnt2 b ON b.id_usuario = t.id_usuario - ), - set_mode AS ( - UPDATE public.asistencia_raw ar - SET modo = l.new_mode - FROM label2 l - WHERE ar.id_usuario = l.id_usuario - AND ar.ts = l.ts - AND (ar.modo IS NULL OR btrim(ar.modo) = '' OR ar.modo ~ '^\s*1\s*$') - RETURNING 1 - ), - -- 12) INSERT pares (dedupe) calculados desde CANDIDATE (ya tiene todo el contexto) - ins_pairs AS ( - INSERT INTO public.asistencia_intervalo (id_usuario, fecha, desde, hasta, dur_min, origen) - SELECT id_usuario, fecha, desde, hasta, dur_min, p_origen - FROM ready - ON CONFLICT (id_usuario, desde, hasta) DO NOTHING - RETURNING 1 - ) - SELECT - (SELECT COUNT(*) FROM ins_raw), - (SELECT COUNT(*) FROM ins_pairs), - (SELECT COALESCE(missing,'[]'::jsonb) FROM miss) - INTO v_ins_raw, v_ins_pairs, v_miss; - - RETURN jsonb_build_object( - 'inserted_raw', v_ins_raw, - 'inserted_pairs', v_ins_pairs, - 'missing_docs', v_miss - ); -END; -$_$; - - --- --- Name: report_asistencia(date, date); Type: FUNCTION; Schema: public; Owner: - --- - -CREATE FUNCTION public.report_asistencia(p_desde date, p_hasta date) RETURNS TABLE(documento text, nombre text, apellido text, fecha date, desde_hora text, hasta_hora text, dur_min numeric) - LANGUAGE sql - AS $$ - SELECT - u.documento, u.nombre, u.apellido, - ai.fecha, - to_char(ai.desde AT TIME ZONE 'America/Montevideo','HH24:MI:SS') AS desde_hora, - to_char(ai.hasta AT TIME ZONE 'America/Montevideo','HH24:MI:SS') AS hasta_hora, - ai.dur_min - FROM public.asistencia_intervalo ai - JOIN public.usuarios u USING (id_usuario) - WHERE ai.fecha BETWEEN p_desde AND p_hasta - ORDER BY u.documento, ai.fecha, ai.desde; -$$; - - --- --- Name: report_gastos(integer); Type: FUNCTION; Schema: public; Owner: - --- - -CREATE FUNCTION public.report_gastos(p_year integer) RETURNS jsonb - LANGUAGE sql STABLE - AS $$ -WITH mdata AS ( - SELECT date_trunc('month', c.fec_compra)::date AS m, - SUM(c.total)::numeric AS importe - FROM public.compras c - WHERE EXTRACT(YEAR FROM c.fec_compra) = p_year - GROUP BY 1 -), -mm AS ( - SELECT EXTRACT(MONTH FROM m)::int AS mes, importe - FROM mdata -) -SELECT jsonb_build_object( - 'year', p_year, - 'total', COALESCE((SELECT SUM(importe) FROM mdata), 0), - 'avg', COALESCE((SELECT AVG(importe) FROM mdata), 0), - 'months', - (SELECT jsonb_agg( - jsonb_build_object( - 'mes', gs, - 'nombre', to_char(to_date(gs::text,'MM'),'Mon'), - 'importe', COALESCE(mm.importe,0) - ) - ORDER BY gs - ) - FROM generate_series(1,12) gs - LEFT JOIN mm ON mm.mes = gs) -); -$$; - - --- --- Name: report_tickets_year(integer, text); Type: FUNCTION; Schema: public; Owner: - --- - -CREATE FUNCTION public.report_tickets_year(p_year integer, p_tz text DEFAULT 'America/Montevideo'::text) RETURNS jsonb - LANGUAGE sql STABLE - AS $$ -WITH bounds AS ( - SELECT - make_timestamp(p_year, 1, 1, 0,0,0) AS d0, - make_timestamp(p_year+1, 1, 1, 0,0,0) AS d1, - make_timestamptz(p_year, 1, 1, 0,0,0, p_tz) AS t0, - make_timestamptz(p_year+1, 1, 1, 0,0,0, p_tz) AS t1 -), -base AS ( - SELECT - c.id_comanda, - CASE WHEN c.fec_cierre IS NOT NULL - THEN (c.fec_cierre AT TIME ZONE p_tz) - ELSE c.fec_creacion - END AS fec_local, - v.total - FROM public.comandas c - JOIN public.vw_ticket_total v ON v.id_comanda = c.id_comanda - JOIN bounds b ON TRUE - WHERE - (c.fec_cierre IS NOT NULL AND c.fec_cierre >= b.t0 AND c.fec_cierre < b.t1) - OR - (c.fec_cierre IS NULL AND c.fec_creacion >= b.d0 AND c.fec_creacion < b.d1) -), -m AS ( - SELECT - EXTRACT(MONTH FROM fec_local)::int AS mes, - COUNT(*)::int AS cant, - SUM(total)::numeric AS importe, - AVG(total)::numeric AS avg - FROM base - GROUP BY 1 -), -ytd AS ( - SELECT COUNT(*)::int AS total_ytd, - AVG(total)::numeric AS avg_ticket, - SUM(total)::numeric AS to_date - FROM base -) -SELECT jsonb_build_object( - 'year', p_year, - 'total_ytd', (SELECT total_ytd FROM ytd), - 'avg_ticket', (SELECT avg_ticket FROM ytd), - 'to_date', (SELECT to_date FROM ytd), - 'months', - (SELECT jsonb_agg( - jsonb_build_object( - 'mes', mes, - 'nombre', to_char(to_date(mes::text,'MM'),'Mon'), - 'cant', cant, - 'importe', importe, - 'avg', avg - ) - ORDER BY mes - ) - FROM m) -); -$$; - - --- --- Name: save_compra(integer, integer, timestamp with time zone, jsonb); Type: FUNCTION; Schema: public; Owner: - --- - -CREATE FUNCTION public.save_compra(p_id_compra integer, p_id_proveedor integer, p_fec_compra timestamp with time zone, p_detalles jsonb) RETURNS TABLE(id_compra integer, total numeric) - LANGUAGE plpgsql - AS $$ -DECLARE - v_id INT; - v_total numeric := 0; -BEGIN - IF COALESCE(jsonb_array_length(p_detalles),0) = 0 THEN - RAISE EXCEPTION 'No hay renglones en la compra'; - END IF; - - -- Cabecera (insert/update) - IF p_id_compra IS NULL THEN - INSERT INTO public.compras (id_proveedor, fec_compra, total) - VALUES (p_id_proveedor, COALESCE(p_fec_compra, now()), 0) - RETURNING public.compras.id_compra INTO v_id; - ELSE - UPDATE public.compras c - SET id_proveedor = p_id_proveedor, - fec_compra = COALESCE(p_fec_compra, c.fec_compra) - WHERE c.id_compra = p_id_compra - RETURNING c.id_compra INTO v_id; - - -- Reemplazamos los renglones - DELETE FROM public.deta_comp_materias d WHERE d.id_compra = v_id; - DELETE FROM public.deta_comp_producto p WHERE p.id_compra = v_id; - END IF; - - -- Materias primas (sin CTE: parseo JSON inline) - INSERT INTO public.deta_comp_materias (id_compra, id_mat_prima, cantidad, pre_unitario) - SELECT - v_id, - x.id, - x.cantidad, - x.precio - FROM jsonb_to_recordset(COALESCE(p_detalles, '[]'::jsonb)) - AS x(tipo text, id int, cantidad numeric, precio numeric) - WHERE UPPER(TRIM(x.tipo)) = 'MAT'; - - -- Productos (sin CTE) - INSERT INTO public.deta_comp_producto (id_compra, id_producto, cantidad, pre_unitario) - SELECT - v_id, - x.id, - x.cantidad, - x.precio - FROM jsonb_to_recordset(COALESCE(p_detalles, '[]'::jsonb)) - AS x(tipo text, id int, cantidad numeric, precio numeric) - WHERE UPPER(TRIM(x.tipo)) = 'PROD'; - - -- Recalcular total (calificado) y redondear a ENTERO - SELECT - COALESCE( (SELECT SUM(dcm.cantidad*dcm.pre_unitario) - FROM public.deta_comp_materias dcm - WHERE dcm.id_compra = v_id), 0) - + COALESCE( (SELECT SUM(dcp.cantidad*dcp.pre_unitario) - FROM public.deta_comp_producto dcp - WHERE dcp.id_compra = v_id), 0) - INTO v_total; - - UPDATE public.compras c - SET total = round(v_total, 0) - WHERE c.id_compra = v_id; - - RETURN QUERY SELECT v_id, round(v_total, 0); -END; -$$; - - --- --- Name: save_materia_prima(integer, text, text, boolean, jsonb); Type: FUNCTION; Schema: public; Owner: - --- - -CREATE FUNCTION public.save_materia_prima(p_id_mat_prima integer, p_nombre text, p_unidad text, p_activo boolean, p_proveedores jsonb DEFAULT '[]'::jsonb) RETURNS integer - LANGUAGE plpgsql - AS $_$ -DECLARE - v_id INT; -BEGIN - IF p_id_mat_prima IS NULL THEN - INSERT INTO public.mate_primas (nombre, unidad, activo) - VALUES (p_nombre, p_unidad, COALESCE(p_activo, TRUE)) - RETURNING mate_primas.id_mat_prima INTO v_id; - ELSE - UPDATE public.mate_primas mp - SET nombre = p_nombre, - unidad = p_unidad, - activo = COALESCE(p_activo, TRUE) - WHERE mp.id_mat_prima = p_id_mat_prima; - v_id := p_id_mat_prima; - END IF; - - -- Sincronizar proveedores: borrar todos y re-crear a partir de JSONB - DELETE FROM public.prov_mate_prima pmp WHERE pmp.id_mat_prima = v_id; - - INSERT INTO public.prov_mate_prima (id_proveedor, id_mat_prima) - SELECT (e->>0)::INT AS id_proveedor, -- elementos JSON como enteros (array simple) - v_id AS id_mat_prima - FROM jsonb_array_elements(COALESCE(p_proveedores, '[]'::jsonb)) AS e - WHERE (e->>0) ~ '^\d+$'; -- solo enteros - - RETURN v_id; -END; -$_$; - - --- --- Name: save_producto(integer, text, text, numeric, boolean, integer, jsonb); Type: FUNCTION; Schema: public; Owner: - --- - -CREATE FUNCTION public.save_producto(p_id_producto integer, p_nombre text, p_img_producto text, p_precio numeric, p_activo boolean, p_id_categoria integer, p_receta jsonb DEFAULT '[]'::jsonb) RETURNS integer - LANGUAGE plpgsql - AS $_$ -DECLARE - v_id INT; -BEGIN - IF p_id_producto IS NULL THEN - INSERT INTO public.productos (nombre, img_producto, precio, activo, id_categoria) - VALUES (p_nombre, p_img_producto, p_precio, COALESCE(p_activo, TRUE), p_id_categoria) - RETURNING productos.id_producto INTO v_id; - ELSE - UPDATE public.productos p - SET nombre = p_nombre, - img_producto = p_img_producto, - precio = p_precio, - activo = COALESCE(p_activo, TRUE), - id_categoria = p_id_categoria - WHERE p.id_producto = p_id_producto; - v_id := p_id_producto; - END IF; - - -- Limpia receta actual - DELETE FROM public.receta_producto rp WHERE rp.id_producto = v_id; - - -- Inserta SOLO ítems válidos (id entero positivo y cantidad > 0), redondeo a 3 decimales - INSERT INTO public.receta_producto (id_producto, id_mat_prima, qty_por_unidad) - SELECT - v_id, - (rec->>'id_mat_prima')::INT, - ROUND((rec->>'qty_por_unidad')::NUMERIC, 3) - FROM jsonb_array_elements(COALESCE(p_receta, '[]'::jsonb)) AS rec - WHERE - (rec->>'id_mat_prima') ~ '^\d+$' - AND (rec->>'id_mat_prima')::INT > 0 - AND (rec->>'qty_por_unidad') ~ '^\d+(\.\d+)?$' - AND (rec->>'qty_por_unidad')::NUMERIC > 0; - - RETURN v_id; -END; -$_$; - - --- --- Name: asistencia_intervalo; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.asistencia_intervalo ( - id_intervalo bigint NOT NULL, - id_usuario integer NOT NULL, - fecha date NOT NULL, - desde timestamp with time zone NOT NULL, - hasta timestamp with time zone NOT NULL, - dur_min numeric(10,2) NOT NULL, - origen text, - created_at timestamp with time zone DEFAULT now() NOT NULL, - CONSTRAINT chk_ai_orden CHECK ((hasta > desde)) -); - - --- --- Name: asistencia_intervalo_id_intervalo_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.asistencia_intervalo_id_intervalo_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: asistencia_intervalo_id_intervalo_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.asistencia_intervalo_id_intervalo_seq OWNED BY public.asistencia_intervalo.id_intervalo; - - --- --- Name: asistencia_raw; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.asistencia_raw ( - id_raw bigint NOT NULL, - id_usuario integer NOT NULL, - ts timestamp with time zone NOT NULL, - modo text, - origen text, - created_at timestamp with time zone DEFAULT now() NOT NULL -); - - --- --- Name: asistencia_raw_id_raw_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.asistencia_raw_id_raw_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: asistencia_raw_id_raw_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.asistencia_raw_id_raw_seq OWNED BY public.asistencia_raw.id_raw; - - --- --- Name: asistencia_resumen_diario; Type: VIEW; Schema: public; Owner: - --- - -CREATE VIEW public.asistencia_resumen_diario AS - SELECT ai.id_usuario, - u.documento, - u.nombre, - u.apellido, - ai.fecha, - sum(ai.dur_min) AS minutos_dia, - round((sum(ai.dur_min) / 60.0), 2) AS horas_dia, - count(*) AS pares_dia - FROM (public.asistencia_intervalo ai - JOIN public.usuarios u USING (id_usuario)) - GROUP BY ai.id_usuario, u.documento, u.nombre, u.apellido, ai.fecha - ORDER BY ai.id_usuario, ai.fecha; - - --- --- Name: categorias; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.categorias ( - id_categoria integer NOT NULL, - nombre text NOT NULL, - visible boolean DEFAULT true -); - - --- --- Name: categorias_id_categoria_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.categorias_id_categoria_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: categorias_id_categoria_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.categorias_id_categoria_seq OWNED BY public.categorias.id_categoria; - - --- --- Name: clientes; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.clientes ( - id_cliente integer NOT NULL, - nombre text NOT NULL, - correo text, - telefono text, - fec_nacimiento date, - activo boolean DEFAULT true -); - - --- --- Name: clientes_id_cliente_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.clientes_id_cliente_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: clientes_id_cliente_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.clientes_id_cliente_seq OWNED BY public.clientes.id_cliente; - - --- --- Name: comandas_id_comanda_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.comandas_id_comanda_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: comandas_id_comanda_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.comandas_id_comanda_seq OWNED BY public.comandas.id_comanda; - - --- --- Name: compras; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.compras ( - id_compra integer NOT NULL, - id_proveedor integer NOT NULL, - fec_compra timestamp without time zone NOT NULL, - total numeric(14,2) -); - - --- --- Name: compras_id_compra_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.compras_id_compra_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: compras_id_compra_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.compras_id_compra_seq OWNED BY public.compras.id_compra; - - --- --- Name: deta_comandas_id_det_comanda_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.deta_comandas_id_det_comanda_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: deta_comandas_id_det_comanda_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.deta_comandas_id_det_comanda_seq OWNED BY public.deta_comandas.id_det_comanda; - - --- --- Name: deta_comp_materias; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.deta_comp_materias ( - id_compra integer NOT NULL, - id_mat_prima integer NOT NULL, - cantidad numeric(12,3) NOT NULL, - pre_unitario numeric(12,2) NOT NULL, - CONSTRAINT deta_comp_materias_cantidad_check CHECK ((cantidad > (0)::numeric)), - CONSTRAINT deta_comp_materias_pre_unitario_check CHECK ((pre_unitario >= (0)::numeric)) -); - - --- --- Name: deta_comp_producto; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.deta_comp_producto ( - id_compra integer NOT NULL, - id_producto integer NOT NULL, - cantidad numeric(12,3) NOT NULL, - pre_unitario numeric(12,2) NOT NULL, - CONSTRAINT deta_comp_producto_cantidad_check CHECK ((cantidad > (0)::numeric)), - CONSTRAINT deta_comp_producto_pre_unitario_check CHECK ((pre_unitario >= (0)::numeric)) -); - - --- --- Name: mate_primas; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.mate_primas ( - id_mat_prima integer NOT NULL, - nombre text NOT NULL, - unidad text NOT NULL, - activo boolean DEFAULT true -); - - --- --- Name: mate_primas_id_mat_prima_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.mate_primas_id_mat_prima_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: mate_primas_id_mat_prima_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.mate_primas_id_mat_prima_seq OWNED BY public.mate_primas.id_mat_prima; - - --- --- Name: mesas_id_mesa_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.mesas_id_mesa_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: mesas_id_mesa_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.mesas_id_mesa_seq OWNED BY public.mesas.id_mesa; - - --- --- Name: productos; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.productos ( - id_producto integer NOT NULL, - nombre text NOT NULL, - img_producto character varying(255) DEFAULT 'img/productos/img_producto.png'::character varying NOT NULL, - precio integer NOT NULL, - activo boolean DEFAULT true, - id_categoria integer NOT NULL, - CONSTRAINT productos_precio_check CHECK (((precio)::numeric >= (0)::numeric)), - CONSTRAINT productos_precio_nn CHECK ((precio >= 0)) -); - - --- --- Name: productos_id_producto_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.productos_id_producto_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: productos_id_producto_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.productos_id_producto_seq OWNED BY public.productos.id_producto; - - --- --- Name: prov_mate_prima; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.prov_mate_prima ( - id_proveedor integer NOT NULL, - id_mat_prima integer NOT NULL -); - - --- --- Name: prov_producto; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.prov_producto ( - id_proveedor integer NOT NULL, - id_producto integer NOT NULL -); - - --- --- Name: proveedores; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.proveedores ( - id_proveedor integer NOT NULL, - rut text, - raz_social text NOT NULL, - direccion text, - contacto text -); - - --- --- Name: proveedores_id_proveedor_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.proveedores_id_proveedor_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: proveedores_id_proveedor_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.proveedores_id_proveedor_seq OWNED BY public.proveedores.id_proveedor; - - --- --- Name: receta_producto; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.receta_producto ( - id_producto integer NOT NULL, - id_mat_prima integer NOT NULL, - qty_por_unidad numeric(12,3) NOT NULL, - CONSTRAINT receta_producto_qty_por_unidad_check CHECK ((qty_por_unidad > (0)::numeric)) -); - - --- --- Name: roles; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.roles ( - id_rol integer NOT NULL, - nombre text NOT NULL -); - - --- --- Name: roles_id_rol_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.roles_id_rol_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: roles_id_rol_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.roles_id_rol_seq OWNED BY public.roles.id_rol; - - --- --- Name: usua_roles; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.usua_roles ( - id_usuario integer NOT NULL, - id_rol integer NOT NULL, - fec_asignacion timestamp without time zone DEFAULT now(), - autor integer, - activo boolean DEFAULT true -); - - --- --- Name: usuarios_id_usuario_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.usuarios_id_usuario_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: usuarios_id_usuario_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.usuarios_id_usuario_seq OWNED BY public.usuarios.id_usuario; - - --- --- Name: v_comandas_detalle_base; Type: VIEW; Schema: public; Owner: - --- - -CREATE VIEW public.v_comandas_detalle_base AS - SELECT c.id_comanda, - c.fec_creacion, - c.fec_cierre, - c.estado, - c.observaciones, - u.id_usuario, - u.nombre AS usuario_nombre, - u.apellido AS usuario_apellido, - m.id_mesa, - m.numero AS mesa_numero, - m.apodo AS mesa_apodo, - d.id_producto, - p.nombre AS producto_nombre, - d.cantidad, - d.pre_unitario, - (d.cantidad * d.pre_unitario) AS subtotal - FROM ((((public.comandas c - JOIN public.usuarios u ON ((u.id_usuario = c.id_usuario))) - JOIN public.mesas m ON ((m.id_mesa = c.id_mesa))) - LEFT JOIN public.deta_comandas d ON ((d.id_comanda = c.id_comanda))) - LEFT JOIN public.productos p ON ((p.id_producto = d.id_producto))); - - --- --- Name: v_comandas_detalle_items; Type: VIEW; Schema: public; Owner: - --- - -CREATE VIEW public.v_comandas_detalle_items AS - SELECT d.id_comanda, - d.id_det_comanda, - d.id_producto, - p.nombre AS producto_nombre, - d.cantidad, - d.pre_unitario, - (d.cantidad * d.pre_unitario) AS subtotal, - d.observaciones - FROM (public.deta_comandas d - JOIN public.productos p ON ((p.id_producto = d.id_producto))); - - --- --- Name: v_comandas_detalle_json; Type: VIEW; Schema: public; Owner: - --- - -CREATE VIEW public.v_comandas_detalle_json AS - SELECT id_comanda, - jsonb_build_object('id_comanda', id_comanda, 'fec_creacion', fec_creacion, 'fec_cierre', fec_cierre, 'estado', estado, 'observaciones', observaciones, 'usuario', jsonb_build_object('id_usuario', id_usuario, 'nombre', usuario_nombre, 'apellido', usuario_apellido), 'mesa', jsonb_build_object('id_mesa', id_mesa, 'numero', mesa_numero, 'apodo', mesa_apodo), 'items', COALESCE(( SELECT jsonb_agg(jsonb_build_object('producto_id', b.id_producto, 'producto', b.producto_nombre, 'cantidad', b.cantidad, 'pre_unitario', b.pre_unitario, 'subtotal', b.subtotal) ORDER BY b.producto_nombre) AS jsonb_agg - FROM public.v_comandas_detalle_base b - WHERE ((b.id_comanda = h.id_comanda) AND (b.id_producto IS NOT NULL))), '[]'::jsonb), 'totales', jsonb_build_object('items', COALESCE(( SELECT count(*) AS count - FROM public.v_comandas_detalle_base b - WHERE ((b.id_comanda = h.id_comanda) AND (b.id_producto IS NOT NULL))), (0)::bigint), 'total', COALESCE(( SELECT sum(b.subtotal) AS sum - FROM public.v_comandas_detalle_base b - WHERE (b.id_comanda = h.id_comanda)), (0)::numeric))) AS data - FROM ( SELECT DISTINCT v_comandas_detalle_base.id_comanda, - v_comandas_detalle_base.fec_creacion, - v_comandas_detalle_base.fec_cierre, - v_comandas_detalle_base.estado, - v_comandas_detalle_base.observaciones, - v_comandas_detalle_base.id_usuario, - v_comandas_detalle_base.usuario_nombre, - v_comandas_detalle_base.usuario_apellido, - v_comandas_detalle_base.id_mesa, - v_comandas_detalle_base.mesa_numero, - v_comandas_detalle_base.mesa_apodo - FROM public.v_comandas_detalle_base) h; - - --- --- Name: vw_compras; Type: VIEW; Schema: public; Owner: - --- - -CREATE VIEW public.vw_compras AS - SELECT c.id_compra, - c.id_proveedor, - p.raz_social AS proveedor, - c.fec_compra, - c.total - FROM (public.compras c - JOIN public.proveedores p USING (id_proveedor)) - ORDER BY c.fec_compra DESC, c.id_compra DESC; - - --- --- Name: vw_ticket_total; Type: VIEW; Schema: public; Owner: - --- - -CREATE VIEW public.vw_ticket_total AS - WITH lineas AS ( - SELECT c.id_comanda, - COALESCE(c.fec_cierre, (c.fec_creacion)::timestamp with time zone) AS fec_ticket, - (COALESCE(dc.pre_unitario, (p.precio)::numeric, (0)::numeric))::numeric(14,2) AS pu, - (COALESCE(dc.cantidad, (1)::numeric))::numeric(14,3) AS qty - FROM ((public.comandas c - JOIN public.deta_comandas dc ON ((dc.id_comanda = c.id_comanda))) - LEFT JOIN public.productos p ON ((p.id_producto = dc.id_producto))) - ) - SELECT id_comanda, - fec_ticket, - (sum((qty * pu)))::numeric(14,2) AS total - FROM lineas - GROUP BY id_comanda, fec_ticket; - - --- --- Name: asistencia_intervalo id_intervalo; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.asistencia_intervalo ALTER COLUMN id_intervalo SET DEFAULT nextval('public.asistencia_intervalo_id_intervalo_seq'::regclass); - - --- --- Name: asistencia_raw id_raw; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.asistencia_raw ALTER COLUMN id_raw SET DEFAULT nextval('public.asistencia_raw_id_raw_seq'::regclass); - - --- --- Name: categorias id_categoria; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.categorias ALTER COLUMN id_categoria SET DEFAULT nextval('public.categorias_id_categoria_seq'::regclass); - - --- --- Name: clientes id_cliente; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.clientes ALTER COLUMN id_cliente SET DEFAULT nextval('public.clientes_id_cliente_seq'::regclass); - - --- --- Name: comandas id_comanda; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.comandas ALTER COLUMN id_comanda SET DEFAULT nextval('public.comandas_id_comanda_seq'::regclass); - - --- --- Name: compras id_compra; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.compras ALTER COLUMN id_compra SET DEFAULT nextval('public.compras_id_compra_seq'::regclass); - - --- --- Name: deta_comandas id_det_comanda; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.deta_comandas ALTER COLUMN id_det_comanda SET DEFAULT nextval('public.deta_comandas_id_det_comanda_seq'::regclass); - - --- --- Name: mate_primas id_mat_prima; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.mate_primas ALTER COLUMN id_mat_prima SET DEFAULT nextval('public.mate_primas_id_mat_prima_seq'::regclass); - - --- --- Name: mesas id_mesa; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.mesas ALTER COLUMN id_mesa SET DEFAULT nextval('public.mesas_id_mesa_seq'::regclass); - - --- --- Name: productos id_producto; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.productos ALTER COLUMN id_producto SET DEFAULT nextval('public.productos_id_producto_seq'::regclass); - - --- --- Name: proveedores id_proveedor; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.proveedores ALTER COLUMN id_proveedor SET DEFAULT nextval('public.proveedores_id_proveedor_seq'::regclass); - - --- --- Name: roles id_rol; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.roles ALTER COLUMN id_rol SET DEFAULT nextval('public.roles_id_rol_seq'::regclass); - - --- --- Name: usuarios id_usuario; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.usuarios ALTER COLUMN id_usuario SET DEFAULT nextval('public.usuarios_id_usuario_seq'::regclass); - - --- --- Name: asistencia_intervalo asistencia_intervalo_id_usuario_desde_hasta_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.asistencia_intervalo - ADD CONSTRAINT asistencia_intervalo_id_usuario_desde_hasta_key UNIQUE (id_usuario, desde, hasta); - - --- --- Name: asistencia_intervalo asistencia_intervalo_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.asistencia_intervalo - ADD CONSTRAINT asistencia_intervalo_pkey PRIMARY KEY (id_intervalo); - - --- --- Name: asistencia_raw asistencia_raw_id_usuario_ts_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.asistencia_raw - ADD CONSTRAINT asistencia_raw_id_usuario_ts_key UNIQUE (id_usuario, ts); - - --- --- Name: asistencia_raw asistencia_raw_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.asistencia_raw - ADD CONSTRAINT asistencia_raw_pkey PRIMARY KEY (id_raw); - - --- --- Name: categorias categorias_nombre_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.categorias - ADD CONSTRAINT categorias_nombre_key UNIQUE (nombre); - - --- --- Name: categorias categorias_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.categorias - ADD CONSTRAINT categorias_pkey PRIMARY KEY (id_categoria); - - --- --- Name: clientes clientes_correo_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.clientes - ADD CONSTRAINT clientes_correo_key UNIQUE (correo); - - --- --- Name: clientes clientes_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.clientes - ADD CONSTRAINT clientes_pkey PRIMARY KEY (id_cliente); - - --- --- Name: clientes clientes_telefono_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.clientes - ADD CONSTRAINT clientes_telefono_key UNIQUE (telefono); - - --- --- Name: comandas comandas_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.comandas - ADD CONSTRAINT comandas_pkey PRIMARY KEY (id_comanda); - - --- --- Name: compras compras_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.compras - ADD CONSTRAINT compras_pkey PRIMARY KEY (id_compra); - - --- --- Name: deta_comandas deta_comandas_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.deta_comandas - ADD CONSTRAINT deta_comandas_pkey PRIMARY KEY (id_det_comanda); - - --- --- Name: deta_comp_materias deta_comp_materias_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.deta_comp_materias - ADD CONSTRAINT deta_comp_materias_pkey PRIMARY KEY (id_compra, id_mat_prima); - - --- --- Name: deta_comp_producto deta_comp_producto_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.deta_comp_producto - ADD CONSTRAINT deta_comp_producto_pkey PRIMARY KEY (id_compra, id_producto); - - --- --- Name: mate_primas mate_primas_nombre_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.mate_primas - ADD CONSTRAINT mate_primas_nombre_key UNIQUE (nombre); - - --- --- Name: mate_primas mate_primas_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.mate_primas - ADD CONSTRAINT mate_primas_pkey PRIMARY KEY (id_mat_prima); - - --- --- Name: mesas mesas_apodo_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.mesas - ADD CONSTRAINT mesas_apodo_key UNIQUE (apodo); - - --- --- Name: mesas mesas_numero_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.mesas - ADD CONSTRAINT mesas_numero_key UNIQUE (numero); - - --- --- Name: mesas mesas_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.mesas - ADD CONSTRAINT mesas_pkey PRIMARY KEY (id_mesa); - - --- --- Name: productos productos_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.productos - ADD CONSTRAINT productos_pkey PRIMARY KEY (id_producto); - - --- --- Name: prov_mate_prima prov_mate_prima_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.prov_mate_prima - ADD CONSTRAINT prov_mate_prima_pkey PRIMARY KEY (id_proveedor, id_mat_prima); - - --- --- Name: prov_producto prov_producto_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.prov_producto - ADD CONSTRAINT prov_producto_pkey PRIMARY KEY (id_proveedor, id_producto); - - --- --- Name: proveedores proveedores_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.proveedores - ADD CONSTRAINT proveedores_pkey PRIMARY KEY (id_proveedor); - - --- --- Name: proveedores proveedores_rut_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.proveedores - ADD CONSTRAINT proveedores_rut_key UNIQUE (rut); - - --- --- Name: receta_producto receta_producto_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.receta_producto - ADD CONSTRAINT receta_producto_pkey PRIMARY KEY (id_producto, id_mat_prima); - - --- --- Name: roles roles_nombre_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.roles - ADD CONSTRAINT roles_nombre_key UNIQUE (nombre); - - --- --- Name: roles roles_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.roles - ADD CONSTRAINT roles_pkey PRIMARY KEY (id_rol); - - --- --- Name: usua_roles usua_roles_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.usua_roles - ADD CONSTRAINT usua_roles_pkey PRIMARY KEY (id_usuario, id_rol); - - --- --- Name: usuarios usuarios_documento_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.usuarios - ADD CONSTRAINT usuarios_documento_key UNIQUE (documento); - - --- --- Name: usuarios usuarios_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.usuarios - ADD CONSTRAINT usuarios_pkey PRIMARY KEY (id_usuario); - - --- --- Name: compras_fec_compra_idx; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX compras_fec_compra_idx ON public.compras USING btree (fec_compra); - - --- --- Name: idx_asist_int_usuario_fecha; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX idx_asist_int_usuario_fecha ON public.asistencia_intervalo USING btree (id_usuario, fecha); - - --- --- Name: idx_asist_raw_usuario_ts; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX idx_asist_raw_usuario_ts ON public.asistencia_raw USING btree (id_usuario, ts); - - --- --- Name: idx_detalle_comanda_comanda; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX idx_detalle_comanda_comanda ON public.deta_comandas USING btree (id_comanda); - - --- --- Name: idx_detalle_comanda_producto; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX idx_detalle_comanda_producto ON public.deta_comandas USING btree (id_producto); - - --- --- Name: ix_comandas_fec_cierre; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX ix_comandas_fec_cierre ON public.comandas USING btree (fec_cierre); - - --- --- Name: ix_comandas_id; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX ix_comandas_id ON public.comandas USING btree (id_comanda); - - --- --- Name: ix_deta_comandas_id_comanda; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX ix_deta_comandas_id_comanda ON public.deta_comandas USING btree (id_comanda); - - --- --- Name: ix_deta_comandas_id_producto; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX ix_deta_comandas_id_producto ON public.deta_comandas USING btree (id_producto); - - --- --- Name: asistencia_intervalo asistencia_intervalo_id_usuario_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.asistencia_intervalo - ADD CONSTRAINT asistencia_intervalo_id_usuario_fkey FOREIGN KEY (id_usuario) REFERENCES public.usuarios(id_usuario) ON DELETE CASCADE; - - --- --- Name: asistencia_raw asistencia_raw_id_usuario_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.asistencia_raw - ADD CONSTRAINT asistencia_raw_id_usuario_fkey FOREIGN KEY (id_usuario) REFERENCES public.usuarios(id_usuario) ON DELETE CASCADE; - - --- --- Name: comandas comandas_id_mesa_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.comandas - ADD CONSTRAINT comandas_id_mesa_fkey FOREIGN KEY (id_mesa) REFERENCES public.mesas(id_mesa); - - --- --- Name: comandas comandas_id_usuario_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.comandas - ADD CONSTRAINT comandas_id_usuario_fkey FOREIGN KEY (id_usuario) REFERENCES public.usuarios(id_usuario); - - --- --- Name: compras compras_id_proveedor_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.compras - ADD CONSTRAINT compras_id_proveedor_fkey FOREIGN KEY (id_proveedor) REFERENCES public.proveedores(id_proveedor); - - --- --- Name: deta_comandas deta_comandas_id_comanda_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.deta_comandas - ADD CONSTRAINT deta_comandas_id_comanda_fkey FOREIGN KEY (id_comanda) REFERENCES public.comandas(id_comanda) ON DELETE CASCADE; - - --- --- Name: deta_comandas deta_comandas_id_producto_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.deta_comandas - ADD CONSTRAINT deta_comandas_id_producto_fkey FOREIGN KEY (id_producto) REFERENCES public.productos(id_producto); - - --- --- Name: deta_comp_materias deta_comp_materias_id_compra_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.deta_comp_materias - ADD CONSTRAINT deta_comp_materias_id_compra_fkey FOREIGN KEY (id_compra) REFERENCES public.compras(id_compra) ON DELETE CASCADE; - - --- --- Name: deta_comp_materias deta_comp_materias_id_mat_prima_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.deta_comp_materias - ADD CONSTRAINT deta_comp_materias_id_mat_prima_fkey FOREIGN KEY (id_mat_prima) REFERENCES public.mate_primas(id_mat_prima); - - --- --- Name: deta_comp_producto deta_comp_producto_id_compra_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.deta_comp_producto - ADD CONSTRAINT deta_comp_producto_id_compra_fkey FOREIGN KEY (id_compra) REFERENCES public.compras(id_compra) ON DELETE CASCADE; - - --- --- Name: deta_comp_producto deta_comp_producto_id_producto_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.deta_comp_producto - ADD CONSTRAINT deta_comp_producto_id_producto_fkey FOREIGN KEY (id_producto) REFERENCES public.productos(id_producto); - - --- --- Name: productos productos_id_categoria_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.productos - ADD CONSTRAINT productos_id_categoria_fkey FOREIGN KEY (id_categoria) REFERENCES public.categorias(id_categoria); - - --- --- Name: prov_mate_prima prov_mate_prima_id_mat_prima_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.prov_mate_prima - ADD CONSTRAINT prov_mate_prima_id_mat_prima_fkey FOREIGN KEY (id_mat_prima) REFERENCES public.mate_primas(id_mat_prima); - - --- --- Name: prov_mate_prima prov_mate_prima_id_proveedor_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.prov_mate_prima - ADD CONSTRAINT prov_mate_prima_id_proveedor_fkey FOREIGN KEY (id_proveedor) REFERENCES public.proveedores(id_proveedor) ON DELETE CASCADE; - - --- --- Name: prov_producto prov_producto_id_producto_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.prov_producto - ADD CONSTRAINT prov_producto_id_producto_fkey FOREIGN KEY (id_producto) REFERENCES public.productos(id_producto); - - --- --- Name: prov_producto prov_producto_id_proveedor_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.prov_producto - ADD CONSTRAINT prov_producto_id_proveedor_fkey FOREIGN KEY (id_proveedor) REFERENCES public.proveedores(id_proveedor) ON DELETE CASCADE; - - --- --- Name: receta_producto receta_producto_id_mat_prima_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.receta_producto - ADD CONSTRAINT receta_producto_id_mat_prima_fkey FOREIGN KEY (id_mat_prima) REFERENCES public.mate_primas(id_mat_prima); - - --- --- Name: receta_producto receta_producto_id_producto_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.receta_producto - ADD CONSTRAINT receta_producto_id_producto_fkey FOREIGN KEY (id_producto) REFERENCES public.productos(id_producto) ON DELETE CASCADE; - - --- --- Name: usua_roles usua_roles_autor_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.usua_roles - ADD CONSTRAINT usua_roles_autor_fkey FOREIGN KEY (autor) REFERENCES public.usuarios(id_usuario); - - --- --- Name: usua_roles usua_roles_id_rol_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.usua_roles - ADD CONSTRAINT usua_roles_id_rol_fkey FOREIGN KEY (id_rol) REFERENCES public.roles(id_rol); - - --- --- Name: usua_roles usua_roles_id_usuario_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.usua_roles - ADD CONSTRAINT usua_roles_id_usuario_fkey FOREIGN KEY (id_usuario) REFERENCES public.usuarios(id_usuario) ON DELETE CASCADE; - - --- --- PostgreSQL database dump complete --- - - -COMMIT; diff --git a/services/auth/src/db/poolSingleton.js b/services/auth/src/db/poolSingleton.js deleted file mode 100644 index a0935c2..0000000 --- a/services/auth/src/db/poolSingleton.js +++ /dev/null @@ -1,83 +0,0 @@ -// Coneción Singleton a base de datos. - -import { Pool } from 'pg'; - -class DatabaseCore { - constructor() { - - if (DatabaseCore.instance) { - return Database.instance; - } - - const config = { - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASS, - database: process.env.DB_NAME, - port: process.env.DB_LOCAL_PORT ? Number(process.env.DB_LOCAL_PORT) : undefined, - ssl: process.env.PGSSL === 'true' ? { rejectUnauthorized: false } : undefined, - }; - - this.connection = new Pool(config); - - DatabaseCore.instance = this; - } - async query(sql, params) { - return this.connection.query(sql,params); - } - - async connect() { /* Definida solo para evitar errores */ - return this.connection.connect(); - } - async getClient() { - return this.connection.connect(); - } - - async release() { - await this.connection.end(); - } -} -class DatabaseTenants { - constructor() { - - if (DatabaseTenants.instance) { - return Database.instance; - } - - const config = { - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASS, - database: process.env.DB_NAME, - port: process.env.DB_LOCAL_PORT ? Number(process.env.DB_LOCAL_PORT) : undefined, - ssl: process.env.PGSSL === 'true' ? { rejectUnauthorized: false } : undefined, - }; - - this.connection = new Pool(config); - - DatabaseTenants.instance = this; - } - async query(sql, params) { - return this.connection.query(sql,params); - } - - async connect() { /* Definida solo para evitar errores */ - return this.connection.connect(); - } - async getClient() { - return this.connection.connect(); - } - - async release() { - await this.connection.end(); - } -} - -// const db = new Database(); -// db.query('SELECT * FROM users'); - -const poolCore = new DatabaseCore(); -const poolTenants = new DatabaseTenants(); -export default {poolCore, poolTenants}; -export { poolCore, poolTenants }; -//export { DatabaseCore, DatabaseTenants }; \ No newline at end of file diff --git a/services/auth/src/index.mjs b/services/auth/src/index.mjs index 3f3442d..2968268 100644 --- a/services/auth/src/index.mjs +++ b/services/auth/src/index.mjs @@ -1,240 +1,328 @@ -// services/auth/src/index.js +// services/auth/src/index.mjs // ------------------------------------------------------------ // SuiteCoffee — Servicio de Autenticación (Express + OIDC) // ------------------------------------------------------------ import 'dotenv/config'; -import express from 'express'; // Framework para enderizado de apps Web -import expressLayouts from 'express-ejs-layouts'; -// import { poolCore, poolTenants } from '@suitecoffee/db'; // dbCore y dbTenants desde módulo -import { poolCore, poolTenants } from '#db'; // dbCore y dbTenants -import v1Router from '#v1Router'; // Rutas API v1 -import expressPages from '#pages'; // Rutas "/", "/dashboard", ... +import express from 'express'; + +import session from 'express-session'; +import { RedisStore } from 'connect-redis'; +import { generators } from 'openid-client'; +// import { initOIDCFromEnv } from '@suitecoffee/oidc'; +import { initOIDCFromEnv, getOIDC } from '@suitecoffee/oidc'; + +import { verificarConexionCore, verificarConexionTenants } from '@suitecoffee/db'; +import { redisAuthentik, verificarConexionRedisAuthentik } from '@suitecoffee/redis'; + +import { checkRequiredEnvVars } from '@suitecoffee/scripts'; import path from 'path'; -import { fileURLToPath } from 'url'; // Converts a file:// URL string or URL object into a platform-specific file +import { fileURLToPath } from 'url'; import cookieParser from 'cookie-parser'; +import { ensureUserAndTenantOnFirstLogin } from './registration/bootstrap.mjs'; + const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); -import fs from 'node:fs/promises'; -import crypto from 'node:crypto'; -import fetch from "node-fetch"; - - // ----------------------------------------------------------------------------- -// Validación de entorno mínimo (ajusta nombres si difieren) +// Validación de entorno mínimo // ----------------------------------------------------------------------------- -// Función para verificar que ciertas variables de entorno estén definida -function checkRequiredEnvVars(...requiredKeys) { - const missingKeys = requiredKeys.filter((key) => !process.env[key]); // Filtramos las que NO existen en process.env - if (missingKeys.length > 0) { // Si falta alguna, mostramos una advertencia - console.warn( - `[APP] No se encontraron las siguientes variables de entorno: \n\n-> ${missingKeys.join('\n-> ')}`+ - `\n` - ); - } -} - checkRequiredEnvVars( 'PORT', 'APP_BASE_URL', - 'CORE_DB_HOST', 'CORE_DB_PORT', 'CORE_DB_NAME', - 'TENANTS_DB_HOST', 'TENANTS_DB_PORT', 'TENANTS_DB_NAME', - - 'OIDC_LOGIN_URL', 'OIDC_REDIRECT_URI', - 'OIDC_CLIEN_ID', 'OIDC_CONFIG_URL', 'OIDC_ISSUER', - 'OIDC_ISSUER_DISCOVERY', 'OIDC_AUTHORIZE_URL', 'OIDC_TOKEN_URL', - 'OIDC_USERINFO_URL', 'OIDC_LOGOUT_URL', 'OIDC_JWKS_URL', - - 'SESSION_SECRET', 'SESSION_COOKIE_NAME', - 'AK_REDIS_URL', 'AK_TOKEN' + 'SESSION_SECRET', 'SESSION_NAME', 'AK_REDIS_URL', + 'OIDC_CLIENT_ID', 'OIDC_REDIRECT_URI', + 'OIDC_CONFIG_URL' // o 'OIDC_ISSUER' ); - - - - // ---------------------------------------------------------- // Variables del sistema // ---------------------------------------------------------- - -// De entorno -const PORT = process.env.PORT; -const APP_BASE_URL = process.env.APP_BASE_URL; - -const CORE_DB_HOST = process.env.CORE_DB_HOST; -const CORE_DB_PORT = process.env.CORE_DB_PORT; -const CORE_DB_NAME = process.env.CORE_DB_NAME; - -const TENANTS_DB_HOST = process.env.TENANTS_DB_HOST; -const TENANTS_DB_PORT = process.env.TENANTS_DB_PORT; -const TENANTS_DB_NAME = process.env.TENANTS_DB_NAME; - -const OIDC_LOGIN_URL = process.env.OIDC_LOGIN_URL; -const OIDC_REDIRECT_URI = process.env.OIDC_REDIRECT_URI; - -const OIDC_CLIEN_ID = process.env.OIDC_CLIEN_ID; -const OIDC_CONFIG_URL = process.env.OIDC_CONFIG_URL; -const OIDC_ISSUER = process.env.OIDC_ISSUER; -const OIDC_ISSUER_DISCOVERY = process.env.OIDC_ISSUER_DISCOVERY; -const OIDC_AUTHORIZE_URL = process.env.OIDC_AUTHORIZE_URL; -const OIDC_TOKEN_URL = process.env.OIDC_TOKEN_URL; -const OIDC_USERINFO_URL = process.env.OIDC_USERINFO_URL; -const OIDC_LOGOUT_URL = process.env.OIDC_LOGOUT_URL; -const OIDC_JWKS_URL = process.env.OIDC_JWKS_URL; - -const AK_SESSION_SECRET = process.env.AK_SESSION_SECRET; -const AK_SESSION_COOKIE_NAME = process.env.AK_SESSION_COOKIE_NAME; -const AK_REDIS_URL = process.env.AK_REDIS_URL; - - +const PORT = process.env.PORT; +const SESSION_NAME = process.env.SESSION_NAME; +const SESSION_SECRET = process.env.SESSION_SECRET; +const COOKIE_DOMAIN = process.env.COOKIE_DOMAIN; +const LOGGED_OUT_PATH = process.env.LOGGED_OUT_PATH || '/logged-out'; +const APP_BASE_URL = process.env.APP_BASE_URL; // ----------------------------------------------------------------------------- -// Utilidades / Helpers +// Config Express // ----------------------------------------------------------------------------- - - - - - -// ----------------------------------------------------------------------------- -// Configuración Express -// ----------------------------------------------------------------------------- - const app = express(); app.set('trust proxy', true); -app.set("views", path.join(__dirname, "views")); -app.set("view engine", "ejs"); -app.set("layout", "layouts/main"); -app.disable("x-powered-by"); - app.use(express.json()); -app.use(express.json({ limit: '1mb' })); -app.use(express.urlencoded({ extended: true })); -// Archivos estáticos que fuerzan la re-descarga de arhivos -app.use(express.static(path.join(__dirname, "public"), { - etag: false, maxAge: 0, - setHeaders: (res, path) => { - res.setHeader('Cache-Control', 'no-store, no-cache, must-revalidate, proxy-revalidate'); - } +app.use(cookieParser(SESSION_SECRET)); + +// ----------------------------------------------------------------------------- +// Sesión (Redis) +// ----------------------------------------------------------------------------- +await redisAuthentik.connect(); +const redisClient = redisAuthentik.getClient(); + +app.use(session({ + name: SESSION_NAME, + store: new RedisStore({ client: redisClient, prefix: 'sess:' }), + secret: SESSION_SECRET, + resave: false, + saveUninitialized: false, + cookie: { + httpOnly: true, + sameSite: 'lax', + secure: process.env.NODE_ENV === 'production', + ...(COOKIE_DOMAIN ? { domain: COOKIE_DOMAIN } : {}), + }, })); -app.use(cookieParser(process.env.SESSION_SECRET)); -app.use(expressPages); // Renderizado trae las paginas desde ./services/manso/src/routes/routes.js - - - - - - - -// ---------------------------------------------------------- -// Middleware para datos globales -// ---------------------------------------------------------- -app.use((req, res, next) => { - res.locals.currentPath = req.path; - res.locals.pageTitle = "SuiteCoffee"; - res.locals.pageId = ""; - next(); -}); - - - -// ---------------------------------------------------------- -// Verificación de conexión -// ---------------------------------------------------------- - -async function verificarConexionCore() { - try { - console.log(`[APP] Comprobando accesibilidad a la db ${CORE_DB_NAME} del host ${CORE_DB_HOST} ...`); - const client = await poolCore.connect(); - const { rows } = await client.query('SELECT NOW() AS ahora'); - console.log(`\n[APP] Conexión con ${CORE_DB_NAME} OK. Hora DB:`, rows[0].ahora); - client.release(); - } catch (error) { - console.error('[APP] Error al conectar con la base de datos al iniciar:', error.message); - console.error('[APP] Revisar credenciales, accesos de red y firewall.'); - } -} -async function verificarConexionTenants() { - try { - console.log(`[APP] Comprobando accesibilidad a la db ${TENANTS_DB_NAME} del host ${TENANTS_DB_HOST} ...`); - const client = await poolTenants.connect(); - const { rows } = await client.query('SELECT NOW() AS ahora'); - console.log(`\n[APP] Conexión con ${TENANTS_DB_NAME} OK. Hora DB:`, rows[0].ahora); - client.release(); - } catch (error) { - console.error('[APP] Error al conectar con la base de datos al iniciar:', error.message); - console.error('[APP] Revisar credenciales, accesos de red y firewall.'); - } -} - - - -// ============================================= -// Registro de usuario (DB principal) -// ============================================= - - - //============================================= // ---------- Authentik (API & OIDC) ---------- //============================================= +// const { client, getAuthUrl, handleCallback, endSessionUrl } = await initOIDCFromEnv(); +await initOIDCFromEnv(); +const oidc = getOIDC(); -// =========================== -// GET /auth/users/register -// =========================== - -// =========================== -// POST /auth/login -// =========================== - -app.get("/auth/login", (req, res) => { - const { verifier, challenge } = genPKCE(); - const state = base64url(crypto.randomBytes(24)); - req.session.pkce_verifier = verifier; - req.session.oidc_state = state; - const url = authorizeUrl({ state, challenge }); - res.redirect(302, url); +app.get('/auth/debug/session', (req, res) => { + res.json({ sid: req.sessionID, user: req.session?.user ?? null }); }); +// =========================== +// GET /auth/login +// =========================== +/* +app.get('/auth/login', async (req, res) => { + const code_verifier = generators.codeVerifier(); + const code_challenge = generators.codeChallenge(code_verifier); + const state = generators.state(); + const nonce = generators.nonce(); + + const returnTo = typeof req.query.returnTo === 'string' ? req.query.returnTo : '/'; + + req.session.oidc = { code_verifier, state, nonce, returnTo }; + await new Promise(r => req.session.save(r)); + + const authUrl = getAuthUrl({ state, nonce, code_challenge }); + console.log('[OIDC] Redirect auth URL:', authUrl); + return res.redirect(authUrl); +}); +*/ + +app.get('/auth/login', async (req, res, next) => { + try { + const state = generators.state(); + const nonce = generators.nonce(); + const code_verifier = generators.codeVerifier(); + const code_challenge = generators.codeChallenge(code_verifier); + + // Guardamos artefactos para el callback + req.session.oidc = { state, nonce, code_verifier }; + + // Usamos la API del paquete @suitecoffee/oidc + const authUrl = oidc.getAuthUrl({ state, nonce, code_challenge }); + res.redirect(authUrl); + } catch (err) { + next(err); + } +}); + // =========================== // GET /auth/callback // =========================== +/* +app.get('/auth/callback', async (req, res) => { + const { oidc } = req.session || {}; + const code_verifier = oidc?.code_verifier; + const stateStored = oidc?.state; + const nonceStored = oidc?.nonce; + const returnTo = oidc?.returnTo || '/'; + if (!code_verifier || !stateStored) { + console.warn('[OIDC] Falta code_verifier/state en sesión; reiniciando login'); + return res.redirect(303, '/auth/login'); + } + + // helper para quitar guiones + const noDash = (v) => (typeof v === 'string' + ? v.replace(/-/g, '') + : String(v ?? '').replace(/-/g, '')); + + try { + const tokenSet = await handleCallback(req, { + code_verifier, + state: stateStored, + nonce: nonceStored + }); + + // Limpiar datos transitorios OIDC + req.session.oidc = undefined; + + // Claims del IdP + const claims = tokenSet.claims(); + const email = String(claims.email || '').toLowerCase(); + const sub = claims.sub; + + // 1) Asegurar usuario en CORE y tenant (si es primer login) + const { user, memberships, current_tenant } = + await ensureUserAndTenantOnFirstLogin(claims); + + // Normalizaciones sin guiones + const userUidNoDash = noDash(user.user_id); + const currentTenantNoDash = noDash(current_tenant); + + // Normalizar memberships + derivar schemaName cuando falte + const prefix = process.env.TENANT_SCHEMA_PREFIX || 'empresa_'; + const normalizedMemberships = (memberships || []).map(m => { + const tenantUidNoDash = noDash(m.tenant_id); + const schemaName = m.schema_name || `${prefix}${tenantUidNoDash}`; + return { + tenant_id: m.tenant_id, + schema_name: schemaName, + role: m.role, + // duplicados camelCase y sin guiones + tenantId: m.tenant_id, + schemaName, + tenant_uid_nodash: tenantUidNoDash, + tenantUidNoDash, + }; + }); + + // Membership activo (por current_tenant o primero) + const active = normalizedMemberships.find(m => String(m.tenant_id) === String(current_tenant)) + || normalizedMemberships[0] + || null; + + // 2) Regenerar sesión y guardar identidad + memberships/tenant actual + req.session.regenerate(err => { + if (err) { + console.warn('[OIDC] error al regenerar sesión:', err); + return res.redirect(303, '/auth/login'); + } + + req.session.user = { + sub, + email, + user_id: user.user_id, + name: user.name, + + // ids sin guiones (para comparar con schema_name, slugs, etc.) + user_uid_nodash: userUidNoDash, + userUidNoDash, + + // tenant activo (snake + camel + sin guiones) + current_tenant, // UUID + currentTenant: current_tenant, // UUID + current_tenant_nodash: currentTenantNoDash, + currentTenantNoDash: currentTenantNoDash, + + // esquema activo (muchos middlewares esperan esto) + active_schema: active?.schema_name || null, + activeSchema: active?.schemaName || null, + + // membresías normalizadas + memberships: normalizedMemberships, + + // id_token para logout federado + id_token: tokenSet.id_token, + }; + + req.session.save(() => { + const dest = returnTo.startsWith('/') ? returnTo : '/'; + return res.redirect(303, dest); + }); + }); + } catch (err) { + console.warn('[OIDC] callback error:', err?.message || err); + req.session.oidc = undefined; + req.session.save(() => res.redirect(303, '/auth/login')); + } +}); +*/ + +app.get('/auth/callback', async (req, res, next) => { + try { + const ctx = req.session.oidc ?? {}; + const { state, nonce, code_verifier } = ctx; + + if (!state || !nonce || !code_verifier) { + return res.status(400).json({ error: 'missing OIDC PKCE artifacts in session' }); + } + + // Intercambio del code por tokens (usa client.callbackParams internamente) + const tokenSet = await oidc.handleCallback(req, { state, nonce, code_verifier }); + + // Carga de claims complementarios (userinfo) + const userinfo = await oidc.client.userinfo(tokenSet.access_token); + + const claims = { + sub: userinfo.sub, + email: userinfo.email, + name: userinfo.name ?? userinfo.preferred_username ?? null, + }; + + // Bootstrap en BD CORE/TENANTS (IDs 32-hex, sin guiones) + const result = await ensureUserAndTenantOnFirstLogin(claims); + + // Guardar sesión para la App (sin hash/noHash) + req.session.user = { + sub: result.user.sub, + email: result.user.email, + name: result.user.name, + user_id: result.user.user_id, // 32-hex + default_tenant: result.user.default_tenant, // 32-hex + memberships: result.memberships.map(m => ({ + tenant_id: m.tenant_id, // 32-hex + role: m.role, + })), + }; + + // limpiar artefactos OIDC + delete req.session.oidc; + + // Redirige a la App + res.redirect(`${APP_BASE_URL}/inicio`); + } catch (err) { + next(err); + } +}); + + +// ============================== +// POST /auth/logout +// ============================== +/* +app.post('/auth/logout', (req, res) => { + const idToken = req.session?.user?.id_token; + const postLogout = `${APP_BASE_URL}${LOGGED_OUT_PATH}`; + + req.session.destroy(() => { + const url = endSessionUrl({ id_token_hint: idToken, post_logout_redirect_uri: postLogout }); + return url ? res.redirect(url) : res.redirect(postLogout); + }); +}); +*/ + +app.post('/auth/logout', (req, res, next) => { + req.session.destroy((e) => { + if (e) return next(e); + res.clearCookie(SESSION_NAME, { path: '/' }); + res.status(204).end(); + }); +}); // ----------------------------------------------------------------------------- // Healthcheck // ----------------------------------------------------------------------------- app.get('/health', (_req, res) => { - res.status(200).json({ status: 'ok'}), - console.log(`[AUTH] Saludable`) + res.status(200).json({ status: 'ok' }); }); - - -// ============================================= -// 404 + Manejo de errores -// ============================================= -app.use((req, res) => res.status(404).json({ error: 'Error 404, No se encontró la página', path: req.originalUrl })); - -app.use((err, _req, res, _next) => { - console.error('[AUTH] ', err); - if (res.headersSent) return; - res.status(500).json({ error: '¡Oh! A ocurrido un error en el servidor auth.', detail: err.stack || String(err) }); -}); - - - - // ----------------------------------------------------------------------------- // Arranque // ----------------------------------------------------------------------------- -app.listen(PORT, () => { +app.listen(PORT, async () => { console.log(`[AUTH] Servicio de autenticación escuchando en http://localhost:${PORT}`); - verificarConexionCore(); - verificarConexionTenants(); -}); \ No newline at end of file + await verificarConexionCore(); + await verificarConexionTenants(); + await verificarConexionRedisAuthentik(); +}); diff --git a/services/auth/src/pages/index.html.bak b/services/auth/src/pages/index.html.bak deleted file mode 100644 index 33ae362..0000000 --- a/services/auth/src/pages/index.html.bak +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - SuiteCoffee - Autenticación - - - - - -
-

Iniciar Sesión

- - - - - -
- - -
- -
-
- -
- - -
- -
- -
-
- - - - - - \ No newline at end of file diff --git a/services/auth/src/pages/pages.js b/services/auth/src/pages/pages.js deleted file mode 100644 index bbf228c..0000000 --- a/services/auth/src/pages/pages.js +++ /dev/null @@ -1,20 +0,0 @@ -// services/manso/src/api/v1/routes/routes.js - -import { Router } from 'express'; - -const router = Router(); - -// ---------------------------------------------------------- -// Rutas de UI -// ---------------------------------------------------------- - -/*router.get('/', (req, res) => { - res.locals.pageTitle = "Inicio"; // Título de pestaña - res.locals.pageId = "home"; // Sidebar contextual - res.render("dashboard"); // Archivo .ejs a renderizar - // res.json({ ok: true, route: '/inicio' }); // Debug json -});*/ - - - -export default router; \ No newline at end of file diff --git a/services/auth/src/registration/bootstrap.mjs b/services/auth/src/registration/bootstrap.mjs new file mode 100644 index 0000000..830eb11 --- /dev/null +++ b/services/auth/src/registration/bootstrap.mjs @@ -0,0 +1,147 @@ +// services/auth/src/registration/bootstrap.mjs +import { poolCore, poolTenants } from '@suitecoffee/db'; + +/** + * ensureUserAndTenantOnFirstLogin + * Crea/actualiza el usuario en CORE y, si no tiene membresías, + * provisiona su primer tenant (IDs 32-hex SIN guiones). + * + * @param {object} claims OIDC claims { sub, email, name? } + * @returns {Promise<{ user, memberships, current_tenant }>} + */ +export async function ensureUserAndTenantOnFirstLogin(claims) { + const { sub, email, name = null } = claims ?? {}; + if (!sub || !email) { + throw new Error('ensureUserAndTenantOnFirstLogin: faltan claims requeridos (sub, email)'); + } + + // 1) Upsert del usuario por sub + const core = await poolCore.connect(); + try { + await core.query('BEGIN'); + + // Existe? + const ures = await core.query( + `SELECT user_id, sub, email, name, default_tenant + FROM sc_users + WHERE sub = $1`, + [sub] + ); + + let userRow; + if (ures.rowCount === 0) { + // crea usando defaults de la BD (uuid_nodash()) + const ins = await core.query( + `INSERT INTO sc_users (sub, email, name) + VALUES ($1, $2, $3) + RETURNING user_id, sub, email, name, default_tenant`, + [sub, email, name] + ); + userRow = ins.rows[0]; + } else { + userRow = ures.rows[0]; + // actualización mínima de datos cambiantes + if (userRow.email !== email || userRow.name !== name) { + const upd = await core.query( + `UPDATE sc_users + SET email = $2, + name = $3 + WHERE sub = $1 + RETURNING user_id, sub, email, name, default_tenant`, + [sub, email, name] + ); + userRow = upd.rows[0]; + } + } + + // 2) ¿Tiene membresías? + const mres = await core.query( + `SELECT m.user_id, m.tenant_id, m.role, t.schema_name, t.state, t.created_at + FROM sc_memberships m + JOIN sc_tenants t ON t.tenant_id = m.tenant_id + WHERE m.user_id = $1 + ORDER BY t.created_at ASC`, + [userRow.user_id] + ); + + // Si ya tiene, salimos dejando todo igual + if (mres.rowCount > 0) { + await core.query('COMMIT'); + return { + user: { + user_id: userRow.user_id, sub: userRow.sub, email: userRow.email, + name: userRow.name, default_tenant: userRow.default_tenant + }, + memberships: mres.rows, + current_tenant: userRow.default_tenant ?? mres.rows[0].tenant_id + }; + } + + // 3) Crear primer tenant en CORE (IDs sin guiones) + // - Generamos tenant_id y derivamos schema_name/owner_role en una sola sentencia + const tins = await core.query( + `WITH g AS (SELECT uuid_nodash() AS tid) + INSERT INTO sc_tenants (tenant_id, schema_name, owner_role, state) + SELECT g.tid, 'empresa_' || g.tid, 'owner_' || g.tid, 'provisioning' + FROM g + RETURNING tenant_id, schema_name, owner_role, state`, + ); + const tenant = tins.rows[0]; + + // 4) Ejecutar provisión física en DB TENANTS + // - Crea el esquema empresa_ y objetos del tenant + await poolTenants.query( + `SELECT public.f_crear_empresa($1, $2)`, + [tenant.tenant_id, 'empresa_'] + ); + + // 5) Marcar tenant listo y setear default_tenant del usuario + await core.query( + `UPDATE sc_tenants SET state = 'ready' WHERE tenant_id = $1`, + [tenant.tenant_id] + ); + + await core.query( + `INSERT INTO sc_memberships (user_id, tenant_id, role) + VALUES ($1, $2, 'owner') + ON CONFLICT (user_id, tenant_id) DO NOTHING`, + [userRow.user_id, tenant.tenant_id] + ); + + const updUser = await core.query( + `UPDATE sc_users + SET default_tenant = $2 + WHERE user_id = $1 + RETURNING user_id, sub, email, name, default_tenant`, + [userRow.user_id, tenant.tenant_id] + ); + + userRow = updUser.rows[0]; + + // 6) Cargar membresías finales + const mres2 = await core.query( + `SELECT m.user_id, m.tenant_id, m.role, t.schema_name, t.state, t.created_at + FROM sc_memberships m + JOIN sc_tenants t ON t.tenant_id = m.tenant_id + WHERE m.user_id = $1 + ORDER BY t.created_at ASC`, + [userRow.user_id] + ); + + await core.query('COMMIT'); + + return { + user: { + user_id: userRow.user_id, sub: userRow.sub, email: userRow.email, + name: userRow.name, default_tenant: userRow.default_tenant + }, + memberships: mres2.rows, + current_tenant: userRow.default_tenant + }; + } catch (err) { + await core.query('ROLLBACK'); + throw err; + } finally { + core.release(); + } +} diff --git a/services/plugins/package-lock.json b/services/plugins/package-lock.json index 8051c8f..42edfe4 100644 --- a/services/plugins/package-lock.json +++ b/services/plugins/package-lock.json @@ -9,6 +9,9 @@ "version": "1.0.0", "license": "ISC", "dependencies": { + "@suitecoffee/db": "file:../../packages/core/db", + "@suitecoffee/redis": "file:../../packages/core/redis", + "@suitecoffee/scripts": "file:../../packages/core/scripts", "bcrypt": "^6.0.0", "chalk": "^5.6.0", "connect-redis": "^9.0.0", @@ -36,6 +39,27 @@ "nodemon": "^3.1.10" } }, + "../../packages/core/db": { + "name": "@suitecoffee/db", + "version": "1.0.0", + "peerDependencies": { + "pg": "^8.16.3" + } + }, + "../../packages/core/redis": { + "name": "@suitecoffee/redis", + "version": "1.0.0", + "peerDependencies": { + "pg": "^8.16.3" + } + }, + "../../packages/core/scripts": { + "name": "@suitecoffee/scripts", + "version": "1.0.0", + "peerDependencies": { + "pg": "^8.16.3" + } + }, "node_modules/@epic-web/invariant": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@epic-web/invariant/-/invariant-1.0.0.tgz", @@ -109,6 +133,18 @@ "@redis/client": "^5.8.3" } }, + "node_modules/@suitecoffee/db": { + "resolved": "../../packages/core/db", + "link": true + }, + "node_modules/@suitecoffee/redis": { + "resolved": "../../packages/core/redis", + "link": true + }, + "node_modules/@suitecoffee/scripts": { + "resolved": "../../packages/core/scripts", + "link": true + }, "node_modules/@types/body-parser": { "version": "1.19.6", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", diff --git a/services/plugins/package.json b/services/plugins/package.json index 700f3d9..faaf193 100644 --- a/services/plugins/package.json +++ b/services/plugins/package.json @@ -15,6 +15,12 @@ "nodemon": "^3.1.10" }, "dependencies": { + + "@suitecoffee/db": "file:../../packages/core/db", + "@suitecoffee/redis": "file:../../packages/core/redis", + "@suitecoffee/scripts": "file:../../packages/core/scripts", + "@suitecoffee/middlewares": "file:../../packages/core/middlewares", + "bcrypt": "^6.0.0", "chalk": "^5.6.0", "connect-redis": "^9.0.0", @@ -39,9 +45,8 @@ }, "imports": { "#v1Router": "./src/api/v1/routes/routes.js", - "#pages": "./src/pages/pages.js", - "#db": "./src/db/poolSingleton.js" + "#pages": "./src/pages/pages.js" }, "keywords": [], "description": "" -} +} \ No newline at end of file diff --git a/services/plugins/src/db/poolSingleton.js b/services/plugins/src/db/poolSingleton.js deleted file mode 100644 index 721722f..0000000 --- a/services/plugins/src/db/poolSingleton.js +++ /dev/null @@ -1,82 +0,0 @@ -// Coneción Singleton a base de datos. - -import { Pool } from 'pg'; - -class DatabaseCore { - constructor() { - - if (DatabaseCore.instance) { - return Database.instance; - } - - const config = { - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASS, - database: process.env.DB_NAME, - port: process.env.DB_LOCAL_PORT ? Number(process.env.DB_LOCAL_PORT) : undefined, - ssl: process.env.PGSSL === 'true' ? { rejectUnauthorized: false } : undefined, - }; - - this.connection = new Pool(config); - - DatabaseCore.instance = this; - } - async query(sql, params) { - return this.connection.query(sql,params); - } - - async connect() { /* Definida solo para evitar errores */ - return this.connection.connect(); - } - async getClient() { - return this.connection.connect(); - } - - async release() { - await this.connection.end(); - } -} -class DatabaseTenants { - constructor() { - - if (DatabaseTenants.instance) { - return Database.instance; - } - - const config = { - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASS, - database: process.env.DB_NAME, - port: process.env.DB_LOCAL_PORT ? Number(process.env.DB_LOCAL_PORT) : undefined, - ssl: process.env.PGSSL === 'true' ? { rejectUnauthorized: false } : undefined, - }; - - this.connection = new Pool(config); - - DatabaseTenants.instance = this; - } - async query(sql, params) { - return this.connection.query(sql,params); - } - - async connect() { /* Definida solo para evitar errores */ - return this.connection.connect(); - } - async getClient() { - return this.connection.connect(); - } - - async release() { - await this.connection.end(); - } -} - -// const db = new Database(); -// db.query('SELECT * FROM users'); - -const poolCore = new DatabaseCore(); -const poolTenants = new DatabaseTenants(); -export default {poolCore, poolTenants}; -export { poolCore, poolTenants }; \ No newline at end of file diff --git a/services/plugins/src/index.mjs b/services/plugins/src/index.mjs index 365a882..65ccaa2 100644 --- a/services/plugins/src/index.mjs +++ b/services/plugins/src/index.mjs @@ -9,7 +9,9 @@ import 'dotenv/config'; // Variables de Entorno import express from 'express'; import expressLayouts from 'express-ejs-layouts'; -import { poolCore, poolTenants } from '#db'; // dbCore y dbTenants +import { poolCore, poolTenants, verificarConexionCore, verificarConexionTenants } from '@suitecoffee/db'; // dbCore y dbTenants desde paquete +import { redisAuthentik, verificarConexionRedisAuthentik} from '@suitecoffee/redis'; +import { checkRequiredEnvVars } from '@suitecoffee/scripts'; import path from 'path'; import { fileURLToPath } from 'url'; @@ -23,35 +25,17 @@ const __dirname = path.dirname(__filename); // Validación de entorno mínimo (ajusta nombres si difieren) // ----------------------------------------------------------------------------- -// Función para verificar que ciertas variables de entorno estén definida -function checkRequiredEnvVars(...requiredKeys) { - const missingKeys = requiredKeys.filter((key) => !process.env[key]); // Filtramos las que NO existen en process.env - if (missingKeys.length > 0) { // Si falta alguna, mostramos una advertencia - console.warn( - `[PLUGIN] No se encontraron las siguientes variables de entorno: \n\n-> ${missingKeys.join('\n-> ')}`+ - `\n` - ); - } -} - checkRequiredEnvVars( - 'PORT', - 'CORE_DB_HOST', 'CORE_DB_PORT', 'CORE_DB_NAME', - 'TENANTS_DB_HOST', 'TENANTS_DB_PORT', 'TENANTS_DB_NAME' + 'PORT' ); + // ---------------------------------------------------------- // Variables del sistema // ---------------------------------------------------------- const PORT = process.env.PORT; -const CORE_DB_HOST = process.env.CORE_DB_HOST; -const CORE_DB_PORT = process.env.CORE_DB_PORT; -const CORE_DB_NAME = process.env.CORE_DB_NAME; -const TENANTS_DB_HOST = process.env.TENANTS_DB_HOST; -const TENANTS_DB_PORT = process.env.TENANTS_DB_PORT; -const TENANTS_DB_NAME = process.env.TENANTS_DB_NAME; // ---------------------------------------------------------- // App + Motor de vistas EJS @@ -72,38 +56,6 @@ app.use(expressLayouts); // Carga los layouts que usara el renderizado app.use(cookieParser(process.env.SESSION_SECRET)); -// ---------------------------------------------------------- -// Verificación de conexión -// ---------------------------------------------------------- - -async function verificarConexionCore() { - try { - console.log(`[PLUGINS] Comprobando accesibilidad a la db ${CORE_DB_NAME} del host ${CORE_DB_HOST} ...`); - const client = await poolCore.connect(); - const { rows } = await client.query('SELECT NOW() AS ahora'); - console.log(`\n[PLUGINS] Conexión con ${CORE_DB_NAME} OK. Hora DB:`, rows[0].ahora); - client.release(); - } catch (error) { - console.error('[PLUGINS] Error al conectar con la base de datos al iniciar:', error.message); - console.error('[PLUGINS] Revisar credenciales, accesos de red y firewall.'); - } -} -async function verificarConexionTenants() { - try { - console.log(`[PLUGINS] Comprobando accesibilidad a la db ${TENANTS_DB_NAME} del host ${TENANTS_DB_HOST} ...`); - const client = await poolTenants.connect(); - const { rows } = await client.query('SELECT NOW() AS ahora'); - console.log(`\n[PLUGINS] Conexión con ${TENANTS_DB_NAME} OK. Hora DB:`, rows[0].ahora); - client.release(); - } catch (error) { - console.error('[PLUGINS] Error al conectar con la base de datos al iniciar:', error.message); - console.error('[PLUGINS] Revisar credenciales, accesos de red y firewall.'); - } -} - - - - // ---------------------------------------------------------- @@ -123,10 +75,11 @@ app.use((req, res, next) => { // Inicio del servidor // ---------------------------------------------------------- -app.listen(PORT, () => { +app.listen(PORT, async () => { console.log(`[PLUGINS] http://localhost:${PORT}`); - verificarConexionCore(); - verificarConexionTenants(); + await verificarConexionCore(); + await verificarConexionTenants(); + await verificarConexionRedisAuthentik(); }); @@ -135,6 +88,6 @@ app.listen(PORT, () => { // Healthcheck // ----------------------------------------------------------------------------- app.get('/health', (_req, res) => { - res.status(200).json({ status: 'ok'}), - console.log(`[PLUGINS] Saludable`) + res.status(200).json({ status: 'ok'}) + // console.log(`[PLUGINS] Saludable`) }); \ No newline at end of file