'integer', 'quantity' => 'integer', 'updated_by' => 'integer', 'good_qty' => 'integer', 'needs_repair_qty' => 'integer', 'need_replace_qty' => 'integer', 'cannot_find_qty' => 'integer', 'preferred_supplier_id' => 'integer', 'last_purchase_price' => 'decimal:2', 'average_unit_cost' => 'decimal:2', 'reorder_point' => 'integer', 'reorder_quantity' => 'integer', 'lead_time_days' => 'integer', ]; /* Optional relationships */ public function category() { return $this->belongsTo(InventoryCategory::class, 'category_id'); } public function preferredSupplier() { return $this->belongsTo(Supplier::class, 'preferred_supplier_id'); } public function movements() { return $this->hasMany(InventoryMovement::class, 'item_id'); } public function scopeLowStock($query) { return $query->whereNotNull('reorder_point') ->whereColumn('quantity', '<=', 'reorder_point'); } public function scopeOutOfStock($query) { return $query->where('quantity', '<=', 0); } }