WMSReflectReceiveSku.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. namespace App;
  3. use App\Http\Controllers\Controller;
  4. use Illuminate\Database\Eloquent\Model;
  5. use App\Traits\ModelTimeFormat;
  6. class WMSReflectReceiveSku extends ModelExtended
  7. {
  8. use ModelTimeFormat;
  9. protected $fillable=['ASNLINENO','SKU','ALTERNATE_SKU1','SKUDESCRC','EXPECTEDQTY_EACH',
  10. 'LOTATT05','USERDEFINE4','USERDEFINE5','USERDEFINE6'];
  11. function receives(){
  12. return $this->belongsTo('App\WMSReflectReceive','wms_receive_id');
  13. }
  14. static function isItemsOverDownloadedSkus($actualGotItems, $downloadedItems){
  15. //将同条形码的商品合并为一个元素计数
  16. $combine=function($targetItems){
  17. $combinedItems=[];
  18. foreach ($targetItems as $item){
  19. $isActualCounted=false;
  20. foreach ($combinedItems as $key=>$combined){
  21. if(($combined['barcode_goods']??$combined['ALTERNATE_SKU1'])
  22. ==($item['barcode_goods']??$item['ALTERNATE_SKU1'])){
  23. $combinedItems[$key]['amount'] += $item['amount'];
  24. $combinedItems[$key]['EXPECTEDQTY_EACH'] += $item['EXPECTEDQTY_EACH'];
  25. $isActualCounted=true;
  26. }
  27. }
  28. if(!$isActualCounted)
  29. $combinedItems[] = $item;
  30. }
  31. return $combinedItems;
  32. };
  33. $combinedActualItems=$combine($actualGotItems);
  34. $combinedDownloadedItems=$combine($downloadedItems);;
  35. //比较实收有没有超出下发,有则true
  36. foreach ($combinedActualItems as $item){
  37. $isInDownloaded=false;
  38. foreach ($combinedDownloadedItems as $sku){
  39. if($item&&$item['is_loaded']=='已入库'){
  40. $isInDownloaded=true;
  41. break;
  42. }
  43. if($item['barcode_goods']==$sku['ALTERNATE_SKU1']){
  44. if($item['amount']<=$sku['EXPECTEDQTY_EACH']){
  45. $isInDownloaded=true;
  46. break;
  47. }
  48. }
  49. }
  50. if(!$isInDownloaded){
  51. return true;
  52. }
  53. }
  54. return false;
  55. }
  56. }