WMSReflectReceiveSku.php 2.2 KB

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