panels-origin/db/iam/changesets/003-expenses-warehouse-permissions.sql
Cursor Agent ab89727522
feat: gastos, almacén central/obra y control presupuestal
Implementa el módulo integral de costos según el plan acordado:

- Esquema Liquibase: expense_entries, almacén (central + obra), IVA,
  tenant_cost_settings, permisos IAM y RLS
- Funciones RPC core: gastos, almacén, control presupuestal, sync nómina,
  cierre de almacén al concluir proyecto
- API HTTP: expenses_http, warehouse_http, cost_control_http, iam_http
- Middleware requirePermission con matriz IAM
- UI web-panel: /gastos, /almacen, /control-presupuesto, /usuarios
- Componentes BudgetItemPicker, CostSemaphore y semáforos CSS
- Smoke tests extendidos para gastos/almacén/control

Co-authored-by: alberto.martinez <alberto.martinez@mrdev.mx>
2026-09-04 04:04:17 +00:00

27 lines
1.2 KiB
SQL

--liquibase formatted sql
-- PANELS · iam · permisos gastos, almacén y control de costos
--changeset panel:iam-003a-permissions endDelimiter:; splitStatements:true
INSERT INTO iam.permissions (code, label) VALUES
('view_expenses', 'Ver gastos y reportes de costos'),
('manage_expenses', 'Capturar y editar gastos'),
('view_warehouse', 'Ver almacén global y de obra'),
('manage_warehouse', 'Entradas, salidas y transferencias de almacén'),
('close_warehouse', 'Cerrar almacén de obra'),
('manage_cost_settings', 'Configurar umbrales de alerta presupuestal')
ON CONFLICT (code) DO NOTHING;
--changeset panel:iam-003b-tenant-admin-permissions endDelimiter:; splitStatements:true
INSERT INTO iam.role_permissions (role_code, permission_code)
SELECT 'tenant_admin', code FROM iam.permissions
WHERE code IN (
'view_expenses', 'manage_expenses', 'view_warehouse', 'manage_warehouse',
'close_warehouse', 'manage_cost_settings'
)
ON CONFLICT DO NOTHING;
--changeset panel:iam-003c-user-view-permissions endDelimiter:; splitStatements:true
INSERT INTO iam.role_permissions (role_code, permission_code) VALUES
('user', 'view_expenses'),
('user', 'view_warehouse')
ON CONFLICT DO NOTHING;