*/ use HasFactory; use \Spatie\Activitylog\Traits\LogsActivity; protected $fillable = [ 'po_number', 'vendor_id', 'warehouse_id', 'user_id', 'order_date', 'expected_delivery_date', 'status', 'total_amount', 'notes', ]; protected $casts = [ 'order_date' => 'date', 'expected_delivery_date' => 'date', 'total_amount' => 'decimal:2', ]; public function getActivitylogOptions(): \Spatie\Activitylog\LogOptions { return \Spatie\Activitylog\LogOptions::defaults() ->logAll() ->logOnlyDirty() ->dontSubmitEmptyLogs(); } public function tapActivity(\Spatie\Activitylog\Contracts\Activity $activity, string $eventName) { $snapshot = $activity->properties['snapshot'] ?? []; $snapshot['po_number'] = $this->po_number; if ($this->vendor) { $snapshot['vendor_name'] = $this->vendor->name; } if ($this->warehouse) { $snapshot['warehouse_name'] = $this->warehouse->name; } $activity->properties = $activity->properties->merge([ 'snapshot' => $snapshot ]); } public function vendor(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Vendor::class); } public function warehouse(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Warehouse::class); } public function user(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(User::class); } public function items(): \Illuminate\Database\Eloquent\Relations\HasMany { return $this->hasMany(PurchaseOrderItem::class); } }