StockProduct.php 1.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. namespace App\Models;
  3. use App\Services\HelperService;
  4. use Illuminate\Database\Eloquent\Casts\Attribute;
  5. use Illuminate\Database\Eloquent\Factories\HasFactory;
  6. use Illuminate\Database\Eloquent\Model;
  7. class StockProduct extends Model
  8. {
  9. use HasFactory;
  10. protected $fillable = [
  11. "purchase_number",
  12. "sale_number",
  13. "price",
  14. "qty",
  15. "product_number",
  16. ];
  17. protected function price(): Attribute
  18. {
  19. $ppn = Purchase::where("number", $this->purchase_number)->first()->ppn;
  20. return Attribute::make(
  21. get: fn($value) => HelperService::addPPN($value, $ppn)
  22. );
  23. }
  24. public function product()
  25. {
  26. return $this->belongsTo(Product::class, "product_number", "number");
  27. }
  28. public function scopeFilter($query, array $filters)
  29. {
  30. $query->when($filters["search"] ?? null, function ($query, $search) {
  31. $query->whereHas("product", function ($query) use ($search) {
  32. $query
  33. ->where("number", "like", "%" . $search . "%")
  34. ->orWhere("name", "like", "%" . $search . "%");
  35. });
  36. });
  37. }
  38. }