WMSReflectReceiveSku.php 2.1 KB

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