*/ use HasFactory, Notifiable; protected $guarded = []; /** * Get the attributes that should be cast. * * @return array */ protected function casts(): array { return [ 'email_verified_at' => 'datetime', 'password' => 'hashed', 'commission_percentage' => 'decimal:2', 'monthly_salary' => 'decimal:2', 'sueldo_integro_diario' => 'decimal:2', 'fecha_ingreso' => 'date', 'is_active' => 'boolean', ]; } /** * Relación con cuenta de Telegram */ public function telegramAccount(): HasOne { return $this->hasOne(TelegramAccount::class); } /** * Relación con meses de trabajo */ public function months(): HasMany { return $this->hasMany(Month::class); } /** * Relación con ventas diarias */ public function dailySales(): HasMany { return $this->hasMany(DailySale::class); } /** * Relación con gastos */ public function expenses(): HasMany { return $this->hasMany(Expense::class); } /** * Obtener el mes activo (si existe) */ public function getCurrentMonth(): ?Month { return $this->months() ->where('status', 'open') ->orderBy('year', 'desc') ->orderByRaw("FIELD(name, 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre')") ->first(); } }