"采购单", 1 => "询价单", 2 => "打样单", ]; const status=[ 0 => "待报价", 1 => "已报价", 2 => "待接单", 3 => "已失效", 4 => "生成中", 5 => "待收货", 6 => "待确定", 7 => "待出账", 8 => "已出账", 9 => "完结", 10 => "订单取消", 11 => "下单失败", ]; protected $fillable=[ 'code','owner_material_id', 'supplier_id', 'quantity','amount','unit_price','cost_price','status','initiator','type','is_enquiry','deadline' ]; public function ownerMaterial(): \Illuminate\Database\Eloquent\Relations\HasOne { return $this->hasOne('App\OwnerMaterial','id','owner_material_id'); } public function supplier(): \Illuminate\Database\Eloquent\Relations\HasOne { return $this->hasOne('App\Supplier','id','supplier_id'); } public function initiator(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(User::class,'initiator','id'); } public function procurementDeliveries(): \Illuminate\Database\Eloquent\Relations\HasMany { return $this->hasMany('App\ProcurementDeliverie','procurement_id','id')->orderByDesc('id'); } public function procurementQuotations(): \Illuminate\Database\Eloquent\Relations\HasMany { return $this->hasMany('App\ProcurementQuotation','procurement_id','id'); } public function scopeFilter($query, $filters) { return $filters->apply($query); } protected static function booted() { /** @var User $user */ $user = Auth::user(); if (Gate::allows('供应商-可见全部'))return; if ($user && !$user->isSuperAdmin()){ /** @var \stdClass $user */ $ids = array_column(DB::select(DB::raw("SELECT supplier_id FROM supplier_user WHERE user_id = ?"),[$user->id]),"supplier_id"); if (count($ids)>0){ static::addGlobalScope('supplier', function (Builder $builder)use ($ids) { $builder->where(function (Builder $query)use($ids){ $query->where(function (Builder $query)use($ids){ $query->whereNull("supplier_id")->orWhereIn('supplier_id',$ids)->orWhere("type",1); })->orWhereHas("ownerMaterial",function (Builder $query)use($ids){ $query->whereHas("material",function (Builder $query)use($ids){ $query->whereHas("supplier",function (Builder $query)use($ids){ $query->whereIn('id',$ids); }); }); }); }); });//采购单 供应商为空 -》 耗材的供应商存在于IDS 供应商存在 -》 供应商本身存在于IDS } } } }