RejectedBillItem.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. namespace App;
  3. use Illuminate\Database\Eloquent\Builder;
  4. use Illuminate\Database\Eloquent\Collection;
  5. use Illuminate\Database\Eloquent\Model;
  6. use Illuminate\Database\Eloquent\Relations\BelongsTo;
  7. use Illuminate\Database\Eloquent\SoftDeletes;
  8. /**
  9. * @property mixed rejectedBill
  10. */use App\Traits\ModelTimeFormat;
  11. use App\Traits\ModelLogChanging;
  12. class RejectedBillItem extends Model
  13. {
  14. use ModelLogChanging;
  15. use ModelTimeFormat;
  16. use SoftDeletes;
  17. protected $fillable=['id_rejected_bill','barcode_goods','name_goods','amount','id_quality_label',
  18. 'batch_number','validity_at','made_at','is_checked','remark','is_loaded'];
  19. protected $appends = ['quality_label'];
  20. function barcode():BelongsTo
  21. {
  22. return $this->belongsTo(CommodityBarcode::class,'barcode_goods','code');
  23. }
  24. public function rejectedBill(){
  25. return $this->hasOne('App\RejectedBill', 'id', 'id_rejected_bill');
  26. }
  27. public function quality(){
  28. return $this->belongsTo(QualityLabel::class, 'id_quality_label', 'id');
  29. }
  30. public function uploadFiles(){
  31. return $this->hasMany(UploadFile::class,'table_id','id')->where('table_name','rejected_bill_items');
  32. }
  33. public function wmsReflectSku(){
  34. $bill=$this->rejectedBill()->first();
  35. $wmsReflectReceive=$bill->wmsReflectReceive()->first();
  36. if(!$wmsReflectReceive){
  37. $wmsReflectReceive=WMSReflectReceive::where('ASNREFERENCE3',$bill['logistic_number_return'])->orderBy('id','desc')->first();
  38. if(!$wmsReflectReceive)return null;
  39. }
  40. return $wmsReflectReceive->skus()->where('ALTERNATE_SKU1',$this['barcode_goods']);
  41. }
  42. public function injectCommodityName(){
  43. if(!$this['name_goods'])return;
  44. $barcode=$this['barcode_goods'];
  45. $name=$this['name_goods'];
  46. $owner=Owner::where('name',$this->rejectedBill->owner->name)->first();
  47. $commodity=Commodity::whereHas('barcodes', function (Builder $query)use($barcode){
  48. $query->where('code',$barcode);
  49. })->where('owner_id',$owner ? $owner['id'] : null)->first();
  50. if($commodity){
  51. if($commodity['name']!=$name){
  52. $commodity['name']=$name;
  53. }
  54. if(!$commodity['owner_id']){
  55. $commodity['owner_id']=$owner?$owner['id']:null;
  56. }
  57. $commodity->update();
  58. }
  59. else{
  60. $commodity = new Commodity();
  61. $commodity['name']=$name;
  62. $commodity['owner_id']=$owner?$owner['id']:null;
  63. $commodity->save();
  64. $commodity->newBarcode($barcode);
  65. }
  66. }
  67. public function getQualityLabelAttribute(){
  68. return $this->quality['name']??'';
  69. }
  70. }