RejectedBillItem.php 2.4 KB

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