fase 3.2: compras y proveedores (modulo skeen_compras: proveedores, ordenes de compra con recepcion total/parcial, costo promedio ponderado con lote y caducidad, pagos a proveedor, cuentas por pagar con antiguedad, reportes de compras y margen por articulo); apagado por defecto
This commit is contained in:
@@ -46,6 +46,9 @@ const MENU_ROLES: Record<string, FrontendRole[]> = {
|
||||
'/pagos': ['admin', 'recepcion', 'gerencia'],
|
||||
'/monedero': ['admin', 'recepcion', 'lectura', 'gerencia'],
|
||||
'/inventario': ['admin', 'recepcion', 'lectura', 'gerencia'],
|
||||
// Compras (apagado por defecto: la sección solo se pinta con
|
||||
// compras.activo=true). Se lista aquí para que canSee la reconozca.
|
||||
'/compras': ['admin', 'recepcion', 'lectura', 'gerencia'],
|
||||
'/cortes': ['admin', 'recepcion', 'gerencia'],
|
||||
'/reportes': ['admin', 'recepcion', 'lectura', 'gerencia'],
|
||||
'/reportes?tab=adeudos': ['admin', 'recepcion', 'lectura', 'gerencia'],
|
||||
@@ -56,6 +59,8 @@ const MENU_ROLES: Record<string, FrontendRole[]> = {
|
||||
'/reportes?tab=vendedores': ['admin', 'recepcion', 'lectura', 'gerencia'],
|
||||
'/reportes?tab=concentrado': ['admin', 'recepcion', 'lectura', 'gerencia'],
|
||||
'/reportes?tab=recomendaciones': ['admin', 'recepcion', 'lectura', 'gerencia'],
|
||||
'/reportes?tab=compras': ['admin', 'recepcion', 'lectura', 'gerencia'],
|
||||
'/reportes?tab=margen': ['admin', 'recepcion', 'lectura', 'gerencia'],
|
||||
'/reportes?tab=exportar': ['admin', 'recepcion', 'lectura', 'gerencia'],
|
||||
'/configuracion': ['admin', 'gerencia'],
|
||||
'/cumpleanos': ['admin', 'recepcion', 'gerencia', 'marketing'],
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { useEffect, useState } from 'react';
|
||||
import { odooApi, type ClinicSettings, CLINIC_SETTINGS_DEFAULT, IMPUESTOS_DEFAULT, NOTIFICACIONES_DEFAULT, MEMBRESIAS_DEFAULT, RECURSOS_DEFAULT } from '../services/odoo';
|
||||
import { odooApi, type ClinicSettings, CLINIC_SETTINGS_DEFAULT, IMPUESTOS_DEFAULT, NOTIFICACIONES_DEFAULT, MEMBRESIAS_DEFAULT, RECURSOS_DEFAULT, COMPRAS_DEFAULT } from '../services/odoo';
|
||||
|
||||
// Ajustes de la clínica compartidos por la sesión (nombre, moneda e impuestos).
|
||||
// Se leen una sola vez del servidor y se avisa a quien los use cuando cambian.
|
||||
@@ -12,6 +12,7 @@ const normalizar = (settings?: Partial<ClinicSettings> | null): ClinicSettings =
|
||||
notificaciones: { ...NOTIFICACIONES_DEFAULT, ...(settings?.notificaciones || {}) },
|
||||
membresias: { ...MEMBRESIAS_DEFAULT, ...(settings?.membresias || {}) },
|
||||
recursos: { ...RECURSOS_DEFAULT, ...(settings?.recursos || {}) },
|
||||
compras: { ...COMPRAS_DEFAULT, ...(settings?.compras || {}) },
|
||||
});
|
||||
|
||||
let actual: ClinicSettings = normalizar(null);
|
||||
|
||||
@@ -23,6 +23,7 @@ export const MENU_ITEMS: MenuItem[] = [
|
||||
{ label: 'Pagos', href: '/pagos' },
|
||||
{ label: 'Monedero', href: '/monedero' },
|
||||
{ label: 'Inventario', href: '/inventario' },
|
||||
{ label: 'Compras', href: '/compras' },
|
||||
{ label: 'Cortes de Caja', href: '/cortes' },
|
||||
{ label: 'Reportes', href: '/reportes' },
|
||||
{ label: 'Comisiones', href: '/reportes?tab=comisiones' },
|
||||
|
||||
@@ -20,6 +20,8 @@ export const PERM_KEYS: string[] = [
|
||||
'formularios.ver', 'formularios.crear', 'formularios.editar', 'formularios.enviar',
|
||||
'membresias.ver', 'membresias.crear', 'membresias.cobrar', 'membresias.editar',
|
||||
'membresias.cancelar',
|
||||
'compras.ver', 'compras.crear', 'compras.recibir', 'compras.pagar',
|
||||
'compras.editar', 'compras.cancelar', 'proveedores.ver', 'proveedores.editar',
|
||||
'config.usuarios', 'config.roles', 'config.editar', 'config.auditoria',
|
||||
];
|
||||
|
||||
@@ -46,6 +48,8 @@ const READ_PERM_KEYS = new Set([
|
||||
'notificaciones.ver',
|
||||
'formularios.ver',
|
||||
'membresias.ver',
|
||||
'compras.ver',
|
||||
'proveedores.ver',
|
||||
]);
|
||||
|
||||
const DEFAULT_PERM_ROLES: Record<string, string[]> = {
|
||||
@@ -71,6 +75,11 @@ const DEFAULT_PERM_ROLES: Record<string, string[]> = {
|
||||
'membresias.ver': ALL, 'membresias.crear': ['admin', 'recepcion', 'gerencia'],
|
||||
'membresias.cobrar': ['admin', 'recepcion', 'gerencia'], 'membresias.editar': AG,
|
||||
'membresias.cancelar': AG,
|
||||
'compras.ver': ALL, 'compras.crear': ['admin', 'recepcion', 'gerencia'],
|
||||
'compras.recibir': ['admin', 'recepcion', 'gerencia'],
|
||||
'compras.pagar': ['admin', 'recepcion', 'gerencia'],
|
||||
'compras.editar': AG, 'compras.cancelar': AG,
|
||||
'proveedores.ver': ALL, 'proveedores.editar': AG,
|
||||
'config.usuarios': AG, 'config.roles': AG, 'config.editar': AG, 'config.auditoria': AD,
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user