'int', 'product_id' => 'int', 'comp' => 'int', 'qty' => 'int', 'confirmed_qty' => 'int', 'confirmed_at' => 'datetime', 'price' => 'float', 'price_net' => 'float', 'tax_rate' => 'float', 'tax' => 'float', 'price_vk_net' => 'float', 'discount' => 'float', 'points' => 'int', 'status' => 'int', ]; protected $fillable = [ 'user_abo_id', 'product_id', 'comp', 'qty', 'confirmed_qty', 'confirmed_at', 'price', 'price_net', 'tax_rate', 'tax', 'price_vk_net', 'discount', 'points', 'status', ]; public function product(): BelongsTo { return $this->belongsTo(Product::class); } public function user_abo(): BelongsTo { return $this->belongsTo(UserAbo::class); } public function isConfirmed(): bool { return $this->confirmed_at !== null && $this->confirmed_qty === $this->qty; } public function getFormattedPrice(): string { return Util::formatNumber($this->price); } public function getFormattedTotalPrice(): string { return Util::formatNumber($this->price * $this->qty); } }