mirror of
https://origin.cursor.com/mrdevmx/panels.git
synced 2026-10-09 19:43:18 +00:00
<!-- CURSOR_AGENT_PR_BODY_BEGIN --> ## Resumen Implementa las observaciones de facturas, nómina e IMSS sobre el catálogo de proveedores y la nómina semanal que ya existían. ## Qué queda disponible - Proveedores: régimen fiscal, código postal, estatus activo/inactivo y filtro por nombre o RFC. - Facturas recibidas y emitidas: Excel, UUID, revisión si el RFC no está en el catálogo, clasificación a obra/concepto y gasto `source = invoice` solo para la recibida clasificada. - Nómina: bono, descuento con observación, horas y día festivo dentro del armado semanal. La semana pagada no acepta cambios. - Préstamos: edición (libre sin pagos; con pagos solo nota y cuota) y estado de cuenta con saldo = entregado + comisión − pagos. - Finiquitos y liquidaciones: conceptos, neto descontando descuentos vigentes y saldo de préstamo, y gasto al pagar. - Dispersión: corte semanal, corrección antes de definitiva y comprobante. - Historial de alta, baja y reingreso en la ficha, más movimientos IMSS. - Reporte por periodo en Excel y PDF. - Jornal IMSS distinto del jornal real y consulta de cuotas exportable a Excel. ## Verificación `deno check` de la API pasó. En este entorno no hay Postgres, así que `api/pendientes_test.ts` queda listo para correr cuando la base tenga las migraciones 042–050 y el permiso IAM 007. <!-- CURSOR_AGENT_PR_BODY_END --> <div><a href="https://cursor.com/agents/bc-5e23dc3b-921e-4091-9650-7091d3a52bbf?cursor_ref=pr_footer&cursor_cta=open_in_web"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-web-light.png"><img alt="Open in Web" width="114" height="28" src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a> <a href="https://cursor.com/background-agent?bcId=bc-5e23dc3b-921e-4091-9650-7091d3a52bbf&cursor_ref=pr_footer&cursor_cta=open_in_cursor"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-cursor-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-cursor-light.png"><img alt="Open in Cursor" width="131" height="28" src="https://cursor.com/assets/images/open-in-cursor-dark.png"></picture></a> </div>
29 lines
1.1 KiB
SQL
29 lines
1.1 KiB
SQL
--liquibase formatted sql
|
|
-- PANELS · iam · permisos de facturas
|
|
|
|
--changeset panel:iam-007a-invoices endDelimiter:; splitStatements:true
|
|
INSERT INTO iam.permissions (code, label, module, verb, perm_group) VALUES
|
|
('invoices.view', 'Ver facturas', 'invoices', 'view', NULL),
|
|
('invoices.create', 'Importar facturas', 'invoices', 'create', NULL),
|
|
('invoices.update', 'Clasificar facturas', 'invoices', 'update', NULL)
|
|
ON CONFLICT (code) DO UPDATE SET
|
|
label = EXCLUDED.label,
|
|
module = EXCLUDED.module,
|
|
verb = EXCLUDED.verb,
|
|
perm_group = EXCLUDED.perm_group;
|
|
|
|
INSERT INTO iam._legacy_perm_map (legacy_code, v2_code) VALUES
|
|
('manage_expenses', 'invoices.view'),
|
|
('manage_expenses', 'invoices.create'),
|
|
('manage_expenses', 'invoices.update'),
|
|
('view_expenses', 'invoices.view')
|
|
ON CONFLICT (legacy_code, v2_code) DO NOTHING;
|
|
|
|
INSERT INTO iam.role_permissions (role_id, permission_code)
|
|
SELECT sr.id, p.code
|
|
FROM iam.roles sr
|
|
JOIN iam.permissions p ON p.code IN ('invoices.view', 'invoices.create', 'invoices.update')
|
|
WHERE sr.code = 'tenant_admin'
|
|
AND sr.is_system
|
|
AND sr.tenant_id IS NULL
|
|
ON CONFLICT DO NOTHING;
|