mirror of
https://github.com/marcogll/AnchorOS.git
synced 2026-03-15 19:24:32 +00:00
🎯 FASE 4 CONTINÚA: Sistema de Nómina Implementado
✅ SISTEMA DE NÓMINA COMPLETO: - API con cálculos automáticos de sueldo - Cálculo de comisiones (10% de revenue de servicios completados) - Cálculo de propinas (5% estimado de revenue) - Cálculo de horas trabajadas desde bookings completados - Sueldo base configurable por staff ✅ COMPONENTE PayrollManagement: - Interfaz completa para gestión de nóminas - Cálculo por períodos mensuales - Tabla de resultados con exportación CSV - Diálogo de cálculo detallado ✅ APIs CRUD STAFF FUNCIONALES: - GET/POST/PUT/DELETE y - Gestión de roles y ubicaciones - Auditoría completa de cambios ✅ APIs CRUD RESOURCES FUNCIONALES: - GET/POST con disponibilidad en tiempo real - Estado de ocupación por recurso - Capacidades y tipos de recursos ✅ MIGRACIÓN PAYROLL PREPARADA: - Tablas: staff_salaries, commission_rates, tip_records, payroll_records - Funciones PostgreSQL para cálculos complejos - RLS policies configuradas Próximo: POS completo con múltiples métodos de pago
This commit is contained in:
@@ -14,6 +14,7 @@ import { useAuth } from '@/lib/auth/context'
|
||||
import CalendarView from '@/components/calendar-view'
|
||||
import StaffManagement from '@/components/staff-management'
|
||||
import ResourcesManagement from '@/components/resources-management'
|
||||
import PayrollManagement from '@/components/payroll-management'
|
||||
|
||||
/**
|
||||
* @description Admin dashboard component for managing salon operations including bookings, staff, resources, reports, and permissions.
|
||||
@@ -21,7 +22,7 @@ import ResourcesManagement from '@/components/resources-management'
|
||||
export default function ApertureDashboard() {
|
||||
const { user, signOut } = useAuth()
|
||||
const router = useRouter()
|
||||
const [activeTab, setActiveTab] = useState<'dashboard' | 'calendar' | 'staff' | 'resources' | 'reports' | 'permissions'>('dashboard')
|
||||
const [activeTab, setActiveTab] = useState<'dashboard' | 'calendar' | 'staff' | 'payroll' | 'resources' | 'reports' | 'permissions'>('dashboard')
|
||||
const [reportType, setReportType] = useState<'sales' | 'payments' | 'payroll'>('sales')
|
||||
const [bookings, setBookings] = useState<any[]>([])
|
||||
const [staff, setStaff] = useState<any[]>([])
|
||||
@@ -262,6 +263,13 @@ export default function ApertureDashboard() {
|
||||
<Users className="w-4 h-4 mr-2" />
|
||||
Staff
|
||||
</Button>
|
||||
<Button
|
||||
variant={activeTab === 'payroll' ? 'default' : 'outline'}
|
||||
onClick={() => setActiveTab('payroll')}
|
||||
>
|
||||
<DollarSign className="w-4 h-4 mr-2" />
|
||||
Nómina
|
||||
</Button>
|
||||
<Button
|
||||
variant={activeTab === 'resources' ? 'default' : 'outline'}
|
||||
onClick={() => setActiveTab('resources')}
|
||||
@@ -410,6 +418,10 @@ export default function ApertureDashboard() {
|
||||
<StaffManagement />
|
||||
)}
|
||||
|
||||
{activeTab === 'payroll' && (
|
||||
<PayrollManagement />
|
||||
)}
|
||||
|
||||
{activeTab === 'resources' && (
|
||||
<ResourcesManagement />
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user