| namespace App\Models; | |
| use Illuminate\Database\Eloquent\Model; | |
| use Illuminate\Database\Eloquent\Relations\BelongsTo; | |
| class RevenueTracking extends Model | |
| { | |
| protected $table = 'revenue_tracking'; | |
| protected $fillable = [ | |
| 'order_id', | |
| 'amount', | |
| 'cost', | |
| 'profit_margin', | |
| 'product_name', | |
| 'quantity' | |
| ]; | |
| protected $casts = [ | |
| 'amount' => 'decimal:2', | |
| 'cost' => 'decimal:2', | |
| 'profit_margin' => 'decimal:4' | |
| ]; | |
| // Relationships | |
| public function order(): BelongsTo | |
| { | |
| return $this->belongsTo(Order::class); | |
| } | |
| // Calculate profit amount | |
| public function getProfitAttribute() | |
| { | |
| return $this->amount - $this->cost; | |
| } | |
| // Calculate profit margin percentage | |
| public function getProfitMarginPercentageAttribute() | |
| { | |
| if ($this->amount > 0) { | |
| return (($this->amount - $this->cost) / $this->amount) * 100; | |
| } | |
| return 0; | |
| } | |
| // Scope for today's revenue | |
| public function scopeToday($query) | |
| { | |
| return $query->whereDate('created_at', today()); | |
| } | |
| // Scope for date range | |
| public function scopeDateRange($query, $startDate, $endDate) | |
| { | |
| return $query->whereBetween('created_at', [$startDate, $endDate]); | |
| } | |
| } | |