RejectedBillItem.php 2.1 KB

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