feat(F-157): completed feature

This commit is contained in:
chattie
2026-08-22 17:42:35 +02:00
parent e48577c61a
commit 7159baf851
18 changed files with 255 additions and 599 deletions

View File

@@ -37,15 +37,11 @@ export interface NavItem {
icon: string;
permission: Permission;
badge?: number;
parentHref?: string;
}
export const NAV_ITEMS: NavItem[] = [
{ href: '/', label: 'Dashboard', icon: '📊', permission: 'dashboard' },
{ href: '/reporting', label: 'Reporting', icon: '📈', permission: 'reporting.read' },
{ href: '/reporting/dashboard', label: 'Dashboard', icon: '📊', permission: 'reporting.read', parentHref: '/reporting' },
{ href: '/reporting/sales', label: 'Ventas', icon: '🧾', permission: 'reporting.read', parentHref: '/reporting' },
{ href: '/reporting/products', label: 'Productos', icon: '📦', permission: 'reporting.read', parentHref: '/reporting' },
{ href: '/products', label: 'Productos', icon: '📦', permission: 'products.read' },
{ href: '/orders', label: 'Pedidos', icon: '🧾', permission: 'orders.read' },
{ href: '/payments', label: 'Pagos', icon: '💳', permission: 'orders.read' },
@@ -64,10 +60,6 @@ export const NAV_ITEMS: NavItem[] = [
{ href: '/settings', label: 'Ajustes', icon: '⚙️', permission: 'dashboard' },
];
export function topNavItems(role: Role): NavItem[] {
return NAV_ITEMS.filter((item) => !item.parentHref && can(role, item.permission));
}
export function subNavItems(parentHref: string, role: Role): NavItem[] {
return NAV_ITEMS.filter((item) => item.parentHref === parentHref && can(role, item.permission));
export function visibleNavItems(role: Role): NavItem[] {
return NAV_ITEMS.filter((item) => can(role, item.permission));
}

View File

@@ -25,6 +25,7 @@ export interface ReportingFilters {
terminalId?: string | string[];
state?: string | string[];
groupBy?: GroupBy;
sort?: 'units' | 'revenue';
page?: number;
pageSize?: number;
}
@@ -138,6 +139,7 @@ function filtersToQueryString(filters: ReportingFilters): string {
if (filters.compare && filters.compare !== 'none') params.set('compare', filters.compare);
if (filters.channel && filters.channel !== 'all') params.set('channel', filters.channel);
if (filters.groupBy) params.set('groupBy', filters.groupBy);
if (filters.sort) params.set('sort', filters.sort);
if (filters.page) params.set('page', String(filters.page));
if (filters.pageSize) params.set('pageSize', String(filters.pageSize));
if (filters.storeId) {