WMSReflectReceive.php 1.6 KB

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