WMSReflectReceive.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. namespace App;
  3. use Illuminate\Database\Eloquent\Model;
  4. use Illuminate\Support\Collection;
  5. use App\Traits\ModelTimeFormat;
  6. use App\Traits\ModelLogChanging;
  7. class WMSReflectReceive extends Model
  8. {
  9. use ModelLogChanging;
  10. use ModelTimeFormat;
  11. protected $fillable=['id_rejected_bill','is_uploaded','ASNNO','WAREHOUSEID','CUSTOMERID','ASNTYPE','ASNREFERENCE1',
  12. 'ASNREFERENCE2','ASNREFERENCE3','NOTES','USERDEFINE1','USERDEFINE2','USERDEFINE3'];
  13. function skus(){
  14. return $this->hasMany('App\WMSReflectReceiveSku','wms_receive_id','id');
  15. }
  16. function bill(){
  17. return $this->belongsTo('App\RejectedBill','id_rejected_bill','id');
  18. }
  19. /**
  20. * @param $logisticNumberReturn
  21. * @param bool $withOutUploaded
  22. * @return Collection
  23. */
  24. static function downloadedSkus($logisticNumberReturn, $withOutUploaded=false){
  25. $wmsReceives=WMSReflectReceive::with('skus')->where('ASNREFERENCE3',$logisticNumberReturn);
  26. if($withOutUploaded)
  27. $wmsReceives=$wmsReceives->where('is_uploaded',0);
  28. $wmsReceives=$wmsReceives->get();
  29. $downloadedItems=[];
  30. foreach ($wmsReceives as $wmsReceive){
  31. $wmsReceive->skus()->each(function (WMSReflectReceiveSku $sku)use(&$downloadedItems){
  32. $repeated=false;
  33. foreach($downloadedItems as $item){
  34. if($item['id']==$sku['id']){
  35. $repeated=true;
  36. break;
  37. }
  38. }
  39. if(!$repeated){
  40. $downloadedItems[]=$sku;
  41. }
  42. });
  43. }
  44. return new Collection($downloadedItems);
  45. }
  46. }