*/ protected $fillable = [ 'user_id', 'name', 'year', 'status', 'isr_table_id', ]; /** * Los atributos que deben ser convertidos. * * @return array */ protected function casts(): array { return [ 'year' => 'integer', ]; } /** * Relación con usuario */ public function user(): BelongsTo { return $this->belongsTo(User::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); } /** * Relación con tabla ISR */ public function isrTable(): BelongsTo { return $this->belongsTo(IsrTable::class); } /** * Obtener el nombre del mes con formato */ public function getDisplayNameAttribute(): string { return $this->name . ' ' . $this->year; } /** * Calcular ventas totales del mes */ public function getTotalUserSalesAttribute(): float { return $this->dailySales()->sum('user_sales'); } /** * Calcular ventas del sistema */ public function getTotalSystemSalesAttribute(): float { return $this->dailySales()->sum('system_sales'); } /** * Calcular gastos totales del mes */ public function getTotalExpensesAttribute(): float { return $this->expenses()->sum('amount'); } }