WMSReflectReceiveSku.php 2.2 KB

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