Procurement.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?php
  2. namespace App;
  3. use App\Services\api\UserService;
  4. use App\Traits\ModelTimeFormat;
  5. use Carbon\Carbon;
  6. use Illuminate\Support\Facades\Gate;
  7. use Illuminate\Database\Eloquent\Builder;
  8. use Illuminate\Database\Eloquent\Model;
  9. use App\Traits\ModelLogChanging;
  10. use Illuminate\Support\Facades\Auth;
  11. use Illuminate\Support\Facades\DB;
  12. class Procurement extends Model
  13. {
  14. use ModelLogChanging;
  15. use ModelTimeFormat;
  16. const type=[
  17. 0 => "采购单",
  18. 1 => "询价单",
  19. 2 => "打样单",
  20. ];
  21. const status=[
  22. 0 => "待报价",
  23. 1 => "已报价",
  24. 2 => "待接单",
  25. 3 => "已失效",
  26. 4 => "生产中",
  27. 5 => "待收货",
  28. 6 => "待确定",
  29. 7 => "待出账",
  30. 8 => "已出账",
  31. 9 => "完结",
  32. 10 => "订单取消",
  33. 11 => "下单失败",
  34. ];
  35. protected $fillable=[
  36. 'code','owner_material_id', 'supplier_id', 'quantity','amount','unit_price','cost_price','status','initiator','type','is_enquiry','deadline'
  37. ];
  38. public function ownerMaterial(): \Illuminate\Database\Eloquent\Relations\HasOne
  39. {
  40. return $this->hasOne('App\OwnerMaterial','id','owner_material_id');
  41. }
  42. public function supplier(): \Illuminate\Database\Eloquent\Relations\HasOne
  43. {
  44. return $this->hasOne('App\Supplier','id','supplier_id');
  45. }
  46. public function initiator(): \Illuminate\Database\Eloquent\Relations\BelongsTo
  47. {
  48. return $this->belongsTo(User::class,'initiator','id');
  49. }
  50. public function procurementDeliveries(): \Illuminate\Database\Eloquent\Relations\HasMany
  51. {
  52. return $this->hasMany('App\ProcurementDeliverie','procurement_id','id')->orderByDesc('id');
  53. }
  54. public function procurementQuotations(): \Illuminate\Database\Eloquent\Relations\HasMany
  55. {
  56. return $this->hasMany('App\ProcurementQuotation','procurement_id','id');
  57. }
  58. public function scopeFilter($query, $filters)
  59. {
  60. return $filters->apply($query);
  61. }
  62. // protected static function booted()
  63. // {
  64. // /** @var User $user */
  65. // $user = Auth::user();
  66. // if (Gate::allows('供应商-可见全部'))return;
  67. // if ($user && !$user->isSuperAdmin()){
  68. // /** @var \stdClass $user */
  69. // $ids = array_column(DB::select(DB::raw("SELECT supplier_id FROM supplier_user WHERE user_id = ?"),[$user->id]),"supplier_id");
  70. // if (count($ids)>0){
  71. // static::addGlobalScope('supplier', function (Builder $builder)use ($ids) {
  72. // $builder->where(function (Builder $query)use($ids){
  73. // $query->where(function (Builder $query)use($ids){
  74. // $query->whereNull("supplier_id")->orWhereIn('supplier_id',$ids)->orWhere("type",1);
  75. // })->WhereHas("ownerMaterial",function (Builder $query)use($ids){
  76. // $query->whereHas("material",function (Builder $query)use($ids){
  77. // $query->whereHas("supplier",function (Builder $query)use($ids){
  78. // $query->whereIn('id',$ids);
  79. // });
  80. // });
  81. // });
  82. // });
  83. // });//采购单 供应商为空 -》 耗材的供应商存在于IDS 供应商存在 -》 供应商本身存在于IDS
  84. // }
  85. // }
  86. // }
  87. // protected static function booted()
  88. // {
  89. // /** @var User $user */
  90. // $user = Auth::user();
  91. // if ($user && !$user->isSuperAdmin()) {
  92. // /** @var \stdClass $user */
  93. // $ids = array_column(DB::select(DB::raw("SELECT supplier_id FROM supplier_user WHERE user_id = ?"),[$user->id]),"supplier_id");
  94. // if (count($ids)>0){
  95. // static::addGlobalScope('supplier', function (Builder $builder)use ($ids) {
  96. // $builder->whereIn('supplier_id',$ids);
  97. // });
  98. // }
  99. // }
  100. // }
  101. }