Explorar el Código

退货系统相关BUG修复

LD hace 6 años
padre
commit
45a4d79767

+ 22 - 0
app/Http/Controllers/RejectedBillController.php

@@ -2,6 +2,8 @@
 
 namespace App\Http\Controllers;
 
+use App\Events\InformWMSReceivedEvent;
+use App\Http\Controllers\Api\thirdPart\flux\ReceiveController;
 use App\Logistic;
 use App\Owner;
 use App\QualityLabel;
@@ -106,6 +108,26 @@ class RejectedBillController extends Controller
         $this->log(__METHOD__,__FUNCTION__.'_'.$rejectedBill['id'],json_encode($request->toArray()),Auth::user()['id']);
         return ['success'=>'true'];
     }
+    public function apiConfirmBeStored(Request $request)
+    {
+        if(!Gate::allows('退货管理-编辑')){
+            return ['success'=>'false','fail_info'=>'没有权限'];
+        }
+        $rejectedBill = RejectedBill::find($request->input('id'));
+
+        if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"人工确认入库。退单号:".$rejectedBill['logistic_number_return'],Auth::user()['id']);
+        $result_TransferToWMS=ReceiveController::accomplishToWMS($rejectedBill);
+
+        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        switch ($result_TransferToWMS){
+            case 'success':
+                $rejectedBill['is_loaded']=1;
+                $rejectedBill->update();
+                return ['success'=>true];
+            case 'fail':
+            case 'exception':return ['success'=>false];
+        }
+    }
 
 
     protected function validator(array $data,$isUpdate=false)

+ 10 - 10
app/Http/Controllers/RejectedBillItemController.php

@@ -170,9 +170,9 @@ class RejectedBillItemController extends Controller
             && !($rejectedBill['is_loaded']==1||$rejectedBill['is_loaded']===null)//并且不是已入库或无需入库
             &&config('api.api_switch_receive_to_wms')){ //并且配置开
             if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,'满足条件,准备从网页主动请求富勒入库:'.$rejectedBill['logistic_number_return'],Auth::user()['id']);
-            $result_transferToWms=(new InformWMSReceivedEvent($rejectedBill))->directRun();  //!!!!
-            if($result_transferToWms=='fail')return ['success'=>'false','fail_info'=>'提交至WMS错误,请重试并通知相关人员'];
-            if($result_transferToWms=='exception')return ['success'=>'exception','fail_info'=>'提交至WMS部分成功,存在异常情况,请留意校对'];
+            $result_transferToWms=(new InformWMSReceivedEvent($rejectedBill))->directRun();
+            if($result_transferToWms=='fail')return ['success'=>'false','fail_info'=>'提交至WMS错误,请手动校验、操作WMS并通知相关人员'];
+            if($result_transferToWms=='exception')return ['success'=>'exception','fail_info'=>'提交至WMS部分成功,存在异常情况,请校对WMS'];
             $isLoaded=false;
             if($isJianshang){
                 $isLoaded=true;
@@ -222,7 +222,7 @@ class RejectedBillItemController extends Controller
         return true;
     }
 
-    public function sendRejectedToThirdPart2(Collection $items,$rejectedBill):bool {
+    public function sendRejectedToThirdPart2(Collection $items,$rejectedBill) {
         if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"进入发送方法,发送给笕尚处理,退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']);
         if($rejectedBill['is_loaded']!=0){
             if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"进入发送方法,但退单已入库,跳出!退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']);
@@ -257,12 +257,12 @@ class RejectedBillItemController extends Controller
 
             if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"标记退单和商品为待推单!退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']);
             //标记WMS所有该退单下的作废(为已上传) 。应检查这里是否正确!
-            $receives=WMSReflectReceive::where('ASNREFERENCE3',$rejectedBill['logistic_number_return'])->where('is_uploaded',0)->get();
-            $receives->each(function ($receive){
-                $receive['is_uploaded']=1;
-                $receive->save();
-            });
-            if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"标记退单在WMS映表为已上传!退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']);
+//            $receives=WMSReflectReceive::where('ASNREFERENCE3',$rejectedBill['logistic_number_return'])->where('is_uploaded',0)->get();
+//            $receives->each(function ($receive){
+//                $receive['is_uploaded']=1;
+//                $receive->save();
+//            });
+//            if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"标记退单在WMS映表为已上传!退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']);
         }
         if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"处理完成,返回前端入库状态,标记笕尚取得结果是:{$resultStr}!退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']);
         return $resultStr;

+ 4 - 1
app/Http/Controllers/TestController.php

@@ -48,7 +48,10 @@ class TestController extends Controller
         return call_user_func([$this, $method],$request);
     }
     function t1(Request $request){ //x
-        if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"123",null);
+        $bills=RejectedBill::where('logistic_number_return','like','45jh56jk%')->get();
+        $bills->each(function(RejectedBill $bill){
+            $bill->setIsLoaded_toWaitConfirm();
+        });
     }
     function tj(Request $request){
         $bills=RejectedBill::where('is_loaded',2)->where('created_at','<',Carbon::now()->subHours(10)->toDateTimeString());

+ 5 - 2
app/Http/Controllers/api/thirdPart/flux/ReceiveController.php

@@ -146,6 +146,7 @@ class ReceiveController extends Controller
             return $result;
         })();
         $successed=$wmsReceiveds->count();
+        $exceptionMessages=[];
         $wmsReceiveds->each(function ($wmsReceived)use(&$bill,&$amountsItem,$items,&$successed){
             if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"循环WMS映射表(WMS入库接口中)。ASN号:{$wmsReceived['ASNNO']},退单号:".$wmsReceived['ASNREFERENCE3'],Auth::user()['id']);
             if(!$bill && $bill['is_loaded']!=0){
@@ -251,11 +252,13 @@ class ReceiveController extends Controller
 //                    return true;
 //                }
                 if(isset($json['Response']['return']['returnDesc'])&&strpos($json['Response']['return']['returnDesc'],'唯一约束')!==false){
-                    Controller::logS(__METHOD__,'exception_'.__FUNCTION__,"违反唯一约束, WMS返回不正常!按成功跳过。退单号:{$wmsReceived['ASNREFERENCE3']}}",Auth::user()['id']);
+                    $successed-=1;
+                    Controller::logS(__METHOD__,'exception_'.__FUNCTION__,"违反唯一约束, WMS返回不正常!按失败计。退单号:{$wmsReceived['ASNREFERENCE3']}}",Auth::user()['id']);
                     return true;
                 }
                 if(isset($json['Response']['return']['errordescr'])&&strpos($json['Response']['return']['errordescr'],'已完成')!==false){
-                    Controller::logS(__METHOD__,'exception_'.__FUNCTION__,"退单之前已完成, WMS返回不正常!按成功跳过。退单号:{$wmsReceived['ASNREFERENCE3']}}",Auth::user()['id']);
+                    $successed-=1;
+                    Controller::logS(__METHOD__,'exception_'.__FUNCTION__,"退单之前已完成, WMS返回不正常!按失败计。退单号:{$wmsReceived['ASNREFERENCE3']}}",Auth::user()['id']);
                     return true;
                 }
             }

+ 19 - 0
app/Http/Controllers/api/thirdPart/flux/WaybillController.php

@@ -0,0 +1,19 @@
+<?php
+
+namespace App\Http\Controllers\Api\thirdPart\flux;
+
+use App\Http\Controllers\Controller;
+use App\RejectedBillItem;
+use App\Store;
+use App\WMSReflectReceive;
+use App\WMSReflectReceiveSku;
+use Zttp\Zttp;
+
+class WaybillController extends Controller
+{
+
+    public function accomplishToWMS(Store $store,array $inputs)
+    {
+    }
+
+}

+ 21 - 9
app/Listeners/InformWMSReceivedListener.php

@@ -31,25 +31,37 @@ class InformWMSReceivedListener
      */
     public function handle(InformWMSReceivedEvent $event)
     {
-        $rejectedBill=$event->rejectedBill;
+        $rejectedBill = RejectedBill::find($event->rejectedBill['id']);
         if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,'推送WMS入库事件进入,退单号:'.$rejectedBill['logistic_number_return'],Auth::user()['id']);
+        if($rejectedBill['is_loaded']==2){
+            if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"推送WMS入库,仅将待推单修改为待确认! 字段状态:{$rejectedBill['is_loaded']},退单号:".$rejectedBill['logistic_number_return'],Auth::user()['id']);
+            $rejectedBill->setIsLoaded_toWaitConfirm();
+            return 'toBeConfirm';
+        }
+        if($rejectedBill['is_loaded']==4){
+            if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,'推送WMS入库,重复提交,状态已经待确认! 退单号:'.$rejectedBill['logistic_number_return'],Auth::user()['id']);
+            return 'alreadyBeWaitConfirm';
+        }
+        if( $rejectedBill['is_loaded']==1){
+            if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,'推送WMS入库,重复提交,状态已经是入库! 退单号:'.$rejectedBill['logistic_number_return'],Auth::user()['id']);
+            return 'alreadyStored';
+        }
         $result_TransferToWMS=ReceiveController::accomplishToWMS($rejectedBill);
         if ($result_TransferToWMS=='fail'){
             if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,'error_'.__FUNCTION__,'推送WMS入库失败!!退单号:'.$rejectedBill['logistic_number_return'],Auth::user()['id']);
             return $result_TransferToWMS;
         }
-        $rejectedBill = RejectedBill::find($rejectedBill['id']);
         if ($result_TransferToWMS=='exception'){
-            if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,'error_'.__FUNCTION__,'推送WMS入库异常!!退单号:'.$rejectedBill['logistic_number_return'],Auth::user()['id']);
-            $rejectedBill->is_loaded=3;
-            $rejectedBill->save();
-            $rejectedBill['is_loaded']=3; //奇怪,出现过要重保存才成功的情况,未知原因的保险
+//            $rejectedBill->is_loaded=3;//奇怪,出现过要重保存才成功的情况,未知原因的保险
+//            $rejectedBill->save();
+            $rejectedBill['is_loaded']=3;
             $rejectedBill->update();
+            if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,'error_'.__FUNCTION__,"推送WMS入库异常!!字段状态:{$rejectedBill['is_loaded']},退单号:".$rejectedBill['logistic_number_return'],Auth::user()['id']);
             return $result_TransferToWMS;
         }
-        $rejectedBill->is_loaded=1;
-        $rejectedBill->save();
-        $rejectedBill['is_loaded']=1; //奇怪,出现过要重保存才成功的情况,未知原因的保险
+//        $rejectedBill->is_loaded=1;//奇怪,出现过要重保存才成功的情况,未知原因的保险
+//        $rejectedBill->save();
+        $rejectedBill['is_loaded']=1;
         $rejectedBill->update();
         if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"推送WMS后退单改为已入库, 真实状态:{$rejectedBill['is_loaded']},退单号:".$rejectedBill['logistic_number_return'],Auth::user()['id']);
         $rejectedBill->items->each(function(RejectedBillItem $item){

+ 5 - 5
app/Listeners/WmsReceiveNewListener.php

@@ -58,7 +58,7 @@ class WmsReceiveNewListener
     private function handleJianshang($logisticNumberReturn, $downloadedSkuItems, $wmsReceives){
         if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"进入笕尚退单处理事件,退单号:{$logisticNumberReturn}",null);
         $bills=RejectedBill::where('logistic_number_return',$logisticNumberReturn)->
-        whereIn('is_loaded',[0,2])->get();
+            whereIn('is_loaded',[0,2])->get();
         if($bills->isEmpty()){//没有本地货单
             Controller::logS(__METHOD__,__FUNCTION__,"退单搁置,没有本地对应退单,退单号:{$logisticNumberReturn}",null);
             return;
@@ -84,7 +84,8 @@ class WmsReceiveNewListener
             if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"退单事件中,入库触发(实收小于等于下发),退单号:{$logisticNumberReturn}",null);
             foreach ($bills as $bill){
                 if($bill['is_loaded']!==1){
-                    event(new InformWMSReceivedEvent($bill));
+                    $bill->setIsLoaded_toWaitConfirm();
+//                    event(new InformWMSReceivedEvent($bill)); //暂时关闭下发途迳的入库,不管是录入后才下发,延时处理发现待推单,该入的都改为人工确定
                 }
             }
             if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"退单事件中,入库完成并结束事件,退单号:{$logisticNumberReturn}",null);
@@ -98,9 +99,8 @@ class WmsReceiveNewListener
         $lastReceive=$wmsReceives->first();
         if($lastReceive&&$lastReceive['created_at'])
             if(Carbon::now()->greaterThan(Carbon::make($lastReceive['created_at'])->addHours(6))){
-                if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"退单事件中,6小时内WMS下发的该退单,将不入库的单推给笕尚,准备进入推送接口,退单号:{$logisticNumberReturn}",null);
-                (new RejectedBillItemController())->sendRejectedToThirdPart2($actualGotItems,$bills->first());  //!!!
-                if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"退单事件中,完成推单给笕尚,准备进入推送接口,退单号:{$logisticNumberReturn}",null);
+                if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"退单事件中,下发小于实收。6小时前WMS下发的该退单,将不入库的单推给笕尚,未来不再处理该单!退单号:{$logisticNumberReturn}",null);
+                (new RejectedBillItemController())->sendRejectedToThirdPart2($actualGotItems,$bills->first());
                 return;
             }
 

+ 8 - 0
app/RejectedBill.php

@@ -2,11 +2,13 @@
 
 namespace App;
 
+use App\Http\Controllers\Controller;
 use App\Http\Controllers\LogisticNumberFeatureController;
 use Carbon\Carbon;
 use Illuminate\Database\Eloquent\Collection;
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Database\Eloquent\SoftDeletes;
+use Illuminate\Support\Facades\Auth;
 use Overtrue\LaravelPinyin\Facades\Pinyin;
 
 /**
@@ -37,6 +39,12 @@ class RejectedBill extends Model
     function wmsReflectReceive(){
         return $this->belongsTo('App\WMSReflectReceive','id','id_rejected_bill');
     }
+    function setIsLoaded_toWaitConfirm(){
+        if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"将待推单修改为待确认! 退单号:".$this['logistic_number_return'],Auth::user()['id']);
+        $bill=RejectedBill::find($this['id']);
+        $bill['is_loaded']=4;
+        $bill->save();
+    }
     function logisticName(){
         $logistic=$this->hasOne('App\Logistic','id','id_logistic_return')->first();
         return $logistic?$logistic['name']:'';

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 198 - 170
composer.lock


+ 1 - 1
database/migrations/2020_03_05_080123_add_weigh_excepted_authority.php

@@ -37,7 +37,7 @@ class AddWeighExceptedAuthority extends Migration
     public function down()
     {
         foreach ($this->authNames as $name){
-            Authority::where('name','$name')->delete();
+            Authority::where('name',$name)->delete();
         }
     }
 

+ 3 - 3
public/js/app.js

@@ -61178,7 +61178,7 @@ var datetime = {
       time.target.value = time.target.value.replace(/^([3-9])([\d]{1})/, "2$2");
       time.target.value = time.target.value.replace(/^([2-9]{1})([4-9]{1})/, "$13");
       time.target.value = time.target.value.replace(/^([\d]{1})([\d]{1}):([6-9]{1})/, "$1$2:5");
-    }, 1);
+    }, 10);
   }
 };
 module.exports = datetime;
@@ -61384,8 +61384,8 @@ module.exports = tempTip;
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
-__webpack_require__(/*! D:\Demo\bswas\resources\js\app.js */"./resources/js/app.js");
-module.exports = __webpack_require__(/*! D:\Demo\bswas\resources\sass\app.scss */"./resources/sass/app.scss");
+__webpack_require__(/*! D:\Reald\desktop\BsWAS\src\resources\js\app.js */"./resources/js/app.js");
+module.exports = __webpack_require__(/*! D:\Reald\desktop\BsWAS\src\resources\sass\app.scss */"./resources/sass/app.scss");
 
 
 /***/ }),

+ 24 - 0
resources/js/singles/rejectedIndex.js

@@ -272,6 +272,28 @@ let vueList=new Vue({
                 console.log(e);
             })
         },
+        confirmBeStored:function($e,id){
+            let _this=this;
+            axios.post(ajaxConfirmBeStoredUrl,{id:id}).then(function(response){
+                if(response.data.success){
+                    _this.rejectedBills.forEach(function(rejectedBill){
+                        if(rejectedBill.id===id){
+                            rejectedBill.is_loaded=1;
+                        }
+                    });
+                    tempTip.setDuration(1000);
+                    tempTip.showSuccess('确认入库成功');
+                }else{
+                    tempTip.setDuration(2500);
+                    tempTip.okWindow('数据异常无法确认!请在WMS确定入库状态后,勾选该条目手动修改相应入库状态!','知道了')
+                }
+            }).catch(function (e) {
+                alert('确认失败,网络连接错误:'+e);
+                tempTip.setDuration(2500);
+                tempTip.show('确认失败,网络连接错误:'+e);
+                console.log(e);
+            })
+        },
         finishAll:function(){
             let _this=this;
             if(_this.rejectedBills_checkBoxes.length===0){
@@ -356,6 +378,8 @@ let vueList=new Vue({
                 case 0:case '0':return '否';
                 case 1:case '1':return '是';
                 case 2:case '2':return '待推单';
+                case 3:case '3':return '交互异常';
+                case 4:case '4':return '待确认';
                 case null:case 'null':return '无需入库';
             }
             return '';

+ 10 - 3
resources/views/rejected/index.blade.php

@@ -130,6 +130,7 @@
                                         <option value="0">否</option>
                                         <option value="null">无需入库</option>
                                         <option value="2">待推单</option>
+                                        <option value="4">待确认</option>
                                     </select>
                                 </td>
                                 <td></td>
@@ -240,12 +241,17 @@
                             <span v-if="rejectedBill.is_checked==1" class="text-success">
                                 <span class="fa fa-check-square"></span> @{{ rejectedBill.checked_numbers }}
                             </span>
-                            <span v-else class="text-muted">
+                            <span v-else>
                                 未审核
                             </span>
                         </td>
                         <td class="" :class="[rejectedBill.is_finished!=0?'text-success':'text-muted']">@{{rejectedBill.is_finished | yesNo}}</td>
-                        <td class="" :class="[rejectedBill.is_loaded==1?'text-success':'text-muted']">@{{rejectedBill.is_loaded | yesNoIsLoaded}}</td>
+                        <td class="" :class="[rejectedBill.is_loaded==1?'text-success':'text-muted']">
+                            <span v-if="rejectedBill.is_loaded==4">
+                                <button class="btn btn-sm btn-info" @click="confirmBeStored($event,rejectedBill.id)">确定入库</button>
+                            </span>
+                            <span v-else>@{{rejectedBill.is_loaded | yesNoIsLoaded}}</span>
+                        </td>
                         <td class="text-muted">@{{rejectedBill.created_at}}</td>
                         <td>@{{rejectedBill.owner.name}}</td>
                         <td>@{{rejectedBill.logistic_number_return}}</td>
@@ -334,6 +340,7 @@
         let total='{{$rejectedBills->total()}}';
         let editUrl = "{{url('rejectedBill')}}/";
         let destroyUrl = "{{url('rejectedBill')}}/";
+        let ajaxConfirmBeStoredUrl = '{{url("apiLocal/rejectedBill/apiConfirmBeStored")}}';
         let ajaxCheckUrl = '{{url("apiLocal/rejectedBill/apiSetIsLoadedAll")}}';
         let ajaxCheckAllURL = '{{url("rejected/ajaxCheckAll")}}';
         let ajaxFinishAllUrl='{{url("rejected/ajaxFinishAll")}}';
@@ -341,5 +348,5 @@
         let exportExcelOnFilterParamsURL='{{url("rejected/exportExcelOnFilterParams")}}';
         let csrfInput='@csrf';
     </script>
-    <script src="{{asset('js/singles/rejectedIndex200310.js')}}"></script>
+    <script src="{{asset('js/singles/rejectedIndex200424.js')}}"></script>
 @endsection

+ 1 - 0
routes/apiLocal.php

@@ -16,6 +16,7 @@ Route::post('rejectedBill/store', 'RejectedBillController@apiStore');
 Route::post('rejectedBill/update', 'RejectedBillController@apiUpdate');
 Route::post('rejectedBill/apiGetRecent', 'RejectedBillController@apiGetRecent');
 Route::post('rejectedBill/apiSetIsLoadedAll', 'RejectedBillController@apiSetIsLoadedAll');
+Route::post('rejectedBill/apiConfirmBeStored', 'RejectedBillController@apiConfirmBeStored');
 
 Route::post('logistic/numberFeatures/computeLogisticByNumber', 'LogisticNumberFeatureController@apiComputeLogisticByNumber');
 Route::post('logistic/logisticNumberReturnIsUnique', 'RejectedBillController@apiLogisticNumberReturnIsUnique');

+ 1 - 1
webpack.mix.js

@@ -13,7 +13,7 @@ const mix = require('laravel-mix');
 
 mix.js('resources/js/app.js', 'public/js')
     .sass('resources/sass/app.scss', 'public/css');
-mix.js('resources/js/singles/rejectedIndex.js', 'public/js/singles/rejectedIndex200310.js');
+mix.js('resources/js/singles/rejectedIndex.js', 'public/js/singles/rejectedIndex200424.js');
 mix.copy('resources/sass/fonts/','public/fonts');
 mix.copy('resources/icon','public/icon');
 mix.copy('resources/images','public/images');

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio