Procurement.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. namespace App;
  3. use App\Services\api\UserService;
  4. use App\Traits\ModelTimeFormat;
  5. use Carbon\Carbon;
  6. use Illuminate\Database\Eloquent\Builder;
  7. use Illuminate\Database\Eloquent\Model;
  8. use App\Traits\ModelLogChanging;
  9. use Illuminate\Support\Facades\Auth;
  10. use Illuminate\Support\Facades\DB;
  11. class Procurement extends Model
  12. {
  13. use ModelLogChanging;
  14. use ModelTimeFormat;
  15. const type=[
  16. 0 => "采购单",
  17. 1 => "询价单",
  18. 2 => "打样单",
  19. ];
  20. const status=[
  21. 0 => "待报价",
  22. 1 => "已报价",
  23. 2 => "待接单",
  24. 3 => "已失效",
  25. 4 => "生成中",
  26. 5 => "待收货",
  27. 6 => "待确定",
  28. 7 => "待出账",
  29. 8 => "已出账",
  30. 9 => "完结",
  31. 10 => "订单取消",
  32. ];
  33. protected $fillable=[
  34. 'code','owner_material_id', 'supplier_id', 'quantity','amount','unit_price','cost_price','status','initiator','type','is_enquiry','deadline'
  35. ];
  36. protected static function booted()
  37. {
  38. /** @var User $user */
  39. $user = Auth::user();
  40. if ($user && !$user->isSuperAdmin()) {
  41. /** @var \stdClass $user */
  42. $ids = array_column(DB::select(DB::raw("SELECT supplier_id FROM supplier_user WHERE user_id = ?"),[$user->id]),"supplier_id");
  43. if (count($ids)>0){
  44. static::addGlobalScope('supplier', function (Builder $builder)use ($ids) {
  45. $builder->whereIn('supplier_id', $ids);
  46. });
  47. }
  48. }
  49. }
  50. public function ownerMaterial(): \Illuminate\Database\Eloquent\Relations\HasOne
  51. {
  52. return $this->hasOne('App\OwnerMaterial','id','owner_material_id');
  53. }
  54. public function supplier(): \Illuminate\Database\Eloquent\Relations\HasOne
  55. {
  56. return $this->hasOne('App\Supplier','id','supplier_id');
  57. }
  58. public function initiator(): \Illuminate\Database\Eloquent\Relations\BelongsTo
  59. {
  60. return $this->belongsTo(User::class,'initiator','id');
  61. }
  62. public function procurementDeliveries(): \Illuminate\Database\Eloquent\Relations\HasMany
  63. {
  64. return $this->hasMany('App\ProcurementDeliverie','procurement_id','id')->orderByDesc('id');
  65. }
  66. public function procurementQuotations(): \Illuminate\Database\Eloquent\Relations\HasMany
  67. {
  68. return $this->hasMany('App\ProcurementQuotation','procurement_id','id');
  69. }
  70. public function scopeFilter($query, $filters)
  71. {
  72. return $filters->apply($query);
  73. }
  74. }