Procházet zdrojové kódy

采购--完善队列推送微信服务号模板消息

haozi před 5 roky
rodič
revize
84e2feb569

+ 36 - 43
app/Http/Controllers/ProcurementController.php

@@ -54,9 +54,9 @@ class ProcurementController extends Controller
         $procurement_code .= date ("ymd").str_pad($number_id>99999?$number_id%99999:$number_id,4,"0",STR_PAD_LEFT);
         /** @var ProcurementService $procurementService*/
         $procurementService=app(ProcurementService::class);
-        $deadline=$procurementService->computeDeadline($procurement->created_at);
+        $deadline=$procurementService->computeDeadline(Carbon::now()->toDateTimeString());
         $procurement->update(['code'=>$procurement_code,'deadline'=>$deadline]);
-        if ($procurement->type==0) dispatch(new ProcurementEnquiry($procurement))->delay($deadline); //采购单创建时 推送到队列中
+        if ($procurement->type==0)  dispatch(new ProcurementEnquiry($procurement))->delay(Carbon::parse($deadline)); //采购单创建时 推送到队列中
         dispatch(new ProcurementConfirmInform($procurement));  //推送发送订单通知消息模板  队列
         return $procurement;
     }
@@ -71,7 +71,11 @@ class ProcurementController extends Controller
             ->filter($filters)
             ->with(['initiator','ownerMaterial.file','ownerMaterial.material','ownerMaterial.owner'=>function($query)use($owner_ids){
                 $query->with('customer')->whereIn('id',$owner_ids);
-            }])->paginate($param['paginate'] ?? 50);
+            },'procurementDeliveries'])->paginate($param['paginate'] ?? 50);
+        foreach ($procurements as $procurement){
+            if (empty($procurement->procurementDeliveries))continue;
+            $procurement->deliver_amount=$procurement->procurementDeliveries->sum('amount');
+        }
         /** @var OwnerMaterialService $ownerMaterialService*/
         $ownerMaterialService=app(OwnerMaterialService::class);
         $owners=$ownerMaterialService->getOwnerPermittingWithMaterial();
@@ -275,31 +279,6 @@ class ProcurementController extends Controller
         if (!empty($collect)) return ['success' => true,'data' => $collect];
     }
 
-
-
-    public function show(Procurement $procurement)
-    {
-        //
-    }
-
-
-    public function edit(Procurement $procurement)
-    {
-        //
-    }
-
-
-    public function update(Request $request, Procurement $procurement)
-    {
-        //
-    }
-
-
-    public function destroy(Procurement $procurement)
-    {
-        //
-    }
-
     public function checkBill(Request $request,ProcurementCheckSheetFilters $filters)
     {
         if(!Gate::allows('采购管理-财务-对账单')){ return ["success"=>false,"data"=>"您无此权限操作!"];  }
@@ -312,7 +291,8 @@ class ProcurementController extends Controller
         $materials=Material::query()->select('id','name')->get();
         return view('procurement/finance/checkBill',compact('procurementCheckSheets','suppliers','paginateParams','materials'));
     }
-    public function fillInvoice(Request $request){
+    public function fillInvoice(Request $request): array
+    {
         $this->gate('采购管理-财务-对账单');
         $id=$request->input('procurementCheckSheetId');
         $invoice_number=$request->input('invoice_number');
@@ -338,12 +318,14 @@ class ProcurementController extends Controller
             ->with(['initiator','supplier','ownerMaterial.material','ownerMaterial.owner'=>function($query)use($owner_ids){
                 /** @var Builder $query */
                 $query->with('customer')->whereIn('id',$owner_ids);
-            },'procurementDeliveries'=>function($builder){
-                /** @var Builder $builder */
-                $builder->orderByDesc('id')->first();
-            }])
+            },'procurementDeliveries'])
             ->where('type',0) //只取采购单
             ->paginate($param['paginate'] ?? 50);
+        foreach ($procurements as $procurement){
+            if (empty($procurement->procurementDeliveries))continue;
+            $procurement->deliver_amount=$procurement->procurementDeliveries->sum('amount');
+            $procurement->signed_at=$procurement->procurementDeliveries->first()['signed_at'];
+        }
         return view('procurement/finance/procurementBill',compact('suppliers','materials','owners','paginateParams','procurements'));
     }
 
@@ -365,8 +347,11 @@ class ProcurementController extends Controller
             ->filter($filters)
             ->with(['initiator','ownerMaterial.material','ownerMaterial.owner'=>function($query)use($owner_ids){
                 $query->with('customer')->whereIn('id',$owner_ids);
-            }])->get();
-
+            },'procurementDeliveries'])->get();
+        foreach ($procurements as $procurement){
+            if (empty($procurement->procurementDeliveries))continue;
+            $procurement->deliver_amount=$procurement->procurementDeliveries->sum('amount');
+        }
         $procurementStatus=Procurement::status;
         $procurementType=Procurement::type;
         $row = ['采购编号','项目','单据类型','采购公司','耗材编号','耗材','尺寸大小','特殊要求','材质规格','采购数量','销售单价(元)','送货数量','销售总价(元)','采购单状态','联系方式'];
@@ -384,7 +369,7 @@ class ProcurementController extends Controller
                 $procurement->ownerMaterial ? $procurement->ownerMaterial->specification :'',
                 $procurement->quantity,
                 $procurement->unit_price,
-                '',//送货数量
+                $procurement->deliver_amount ?  $procurement->deliver_amount :'',//送货数量
                 $procurement->unit_price*$procurement->amount,//销售总价=销售数量*销售单价
                 is_null($procurement->status) ? '' :$procurementStatus[$procurement->status],
                 $procurement->ownerMaterial->owner->customer ? $procurement->ownerMaterial->owner->customer->phone :'',
@@ -427,9 +412,17 @@ class ProcurementController extends Controller
         $owner_ids=app('UserService')->getPermittingOwnerIds(auth()->user());
         $procurements = Procurement::query()
             ->filter($filters)
-            ->with(['initiator','supplier','ownerMaterial.material','ownerMaterial.owner'=>function($query)use($owner_ids){
+            ->with(['supplier','initiator','ownerMaterial.material','ownerMaterial.owner'=>function($query)use($owner_ids){
+                /** @var Builder $query */
                 $query->with('customer')->whereIn('id',$owner_ids);
-            }])->get();
+            },'procurementDeliveries'])
+            ->where('type',0) //只取采购单
+            ->paginate($param['paginate'] ?? 50);
+        foreach ($procurements as $procurement){
+            if (empty($procurement->procurementDeliveries))continue;
+            $procurement->receive_amount=$procurement->procurementDeliveries->sum('receipt_amount');
+            $procurement->signed_at=$procurement->procurementDeliveries->first()['signed_at'];
+        }
 
         $procurementStatus=Procurement::status;
         $row = ['采购编号','采购日期','接单日期','签收日期','项目名称','采购公司','供应商','耗材编号','耗材','尺寸大小','特殊要求',
@@ -439,8 +432,8 @@ class ProcurementController extends Controller
             $list[] = [
                 $procurement->code,
                 $procurement->created_at,
-                '',//接单日期
-                '',//签收日期
+                $procurement->deadline ? $procurement->deadline : '',//接单日期
+                $procurement->signed_at ? $procurement->signed_at : '',//签收日期
                 $procurement->ownerMaterial->owner ? $procurement->ownerMaterial->owner->name :'',
                 $procurement->ownerMaterial->owner->customer ? $procurement->ownerMaterial->owner->customer->company_name :'',
                 $procurement->supplier ? $procurement->supplier->name :'',
@@ -451,11 +444,11 @@ class ProcurementController extends Controller
                 $procurement->ownerMaterial ? $procurement->ownerMaterial->specification :'',
                 $procurement->quantity,
                 $procurement->amount,
-                '',//收货数量
+                $procurement->receive_amount ? $procurement->receive_amount : '',//收货数量
                 $procurement->cost_price,
                 $procurement->unit_price,
-                '',//应收金额
-                '',//应付金额
+                $procurement->amount*$procurement->cost_price,//应收金额
+                $procurement->quantity*$procurement->unit_price,//应付金额
                 is_null($procurement->status) ? '' :$procurementStatus[$procurement->status],
             ];
         }

+ 9 - 7
app/Jobs/ProcurementWaitConfirmInform.php

@@ -4,6 +4,7 @@ namespace App\Jobs;
 
 use App\Procurement;
 use App\Services\ProcurementWeiXinSendMessageService;
+use App\User;
 use Illuminate\Bus\Queueable;
 use Illuminate\Contracts\Queue\ShouldQueue;
 use Illuminate\Foundation\Bus\Dispatchable;
@@ -33,9 +34,10 @@ class ProcurementWaitConfirmInform implements ShouldQueue
      */
     public function handle()
     {
-        $pro=$this->procurement->loadMissing(['initiator','supplier.user.userDetail']);
-        foreach ($pro->supplier as $supplier) {
-            foreach ($supplier->user as $user){
+        $pro=$this->procurement->loadMissing(['supplier.user.userDetail']);
+        $initiator='';
+        if ($pro->initiator)$initiator=User::query()->where('id',$pro->initiator)->value('name');
+            foreach ($pro->supplier->user as $user){
                if ($user->userDetail->procurement_wechat_open_id){
                    $param['touser'] =$user->userDetail->procurement_wechat_open_id;
                    $param['mp_template_msg'] =[
@@ -55,15 +57,15 @@ class ProcurementWaitConfirmInform implements ShouldQueue
                                "color"=>"#173177"
                            ],
                            'keyword2' => [
-                               "value"=>$pro->initiator->name ?? '',
+                               "value"=> $initiator,
                                "color"=>"#173177"
                            ],
                            'keyword3' => [
-                               "value"=>$pro->cost_price*$pro->quantity>0 ? $pro->cost_price*$pro->quantity :0 .'元',
+                               "value"=>$pro->cost_price*$pro->quantity>0 ? $pro->cost_price*$pro->quantity.'元' :0 .'元',
                                "color"=>"#173177"
                            ],
                            'keyword4' => [
-                               "value"=>Carbon::now()->toDateTimeString(),
+                               "value"=>Carbon::now()->toDateString(),
                                "color"=>"#173177"
                            ],
                            'remark' => [
@@ -75,6 +77,6 @@ class ProcurementWaitConfirmInform implements ShouldQueue
                    app(ProcurementWeiXinSendMessageService::class)->sendWenChantTemplate($param);
                }
             }
-        }
+
     }
 }

+ 1 - 1
app/Procurement.php

@@ -71,7 +71,7 @@ class Procurement extends Model
     }
     public function procurementDeliveries(): \Illuminate\Database\Eloquent\Relations\HasMany
     {
-        return $this->hasMany('App\ProcurementDeliverie','procurement_id','id');
+        return $this->hasMany('App\ProcurementDeliverie','procurement_id','id')->orderByDesc('id');
     }
     public function procurementQuotations(): \Illuminate\Database\Eloquent\Relations\HasMany
     {

+ 9 - 9
app/Services/ConfigurationService.php

@@ -15,22 +15,22 @@ class ConfigurationService
 
     public function getEnquiryTime()
     {
-        $enquiry_time=Cache::get('询价延时时间')->value;
-        if (!$enquiry_time) $enquiry_time=Configuration::query()->where('name','询价延时时间')->value('value');
-        return $enquiry_time;
+        return Cache::remember('询价延时时间',null,function (){
+            return Configuration::query()->where('name','询价延时时间')->value('value');
+        });
     }
 
     public function getReceiveTime()
     {
-        $receive_time=Cache::get('接单延时时间')->value;
-        if (!$receive_time) $receive_time=Configuration::query()->where('name','接单延时时间')->value('value');
-        return $receive_time;
+        return Cache::remember('接单延时时间',null,function (){
+            return Configuration::query()->where('name','接单延时时间')->value('value');
+        });
     }
     public function getPriceCoefficient()
     {
-        $priceCoefficient=Cache::get('价格系数')->value;
-        if (!$priceCoefficient) $priceCoefficient=Configuration::query()->where('name','价格系数')->value('value');
-        return $priceCoefficient;
+        return Cache::remember('价格系数',null,function (){
+            return Configuration::query()->where('name','价格系数')->value('value');
+        });
     }
 
 

+ 3 - 3
app/Services/ProcurementService.php

@@ -34,9 +34,9 @@ class ProcurementService
         $configurationService=app(ConfigurationService::class);
         $enquiry_time=$configurationService->getEnquiryTime();
         $date=Carbon::parse($time)->toDateString();
-        if ($time<$date." 09:00:00")$deadline=Carbon::parse($date." 09:00:00")->subHours(-$enquiry_time)->toDateTimeString();
-        if($time>=$date." 09:00:00" && $time<$date." 14:00:00") $deadline=Carbon::parse($time)->subHours(-$enquiry_time)->toDateTimeString();
-        if ($time>=$date." 14:00:00")$deadline=Carbon::parse($time)->subHours(-15-$enquiry_time)->toDateTimeString();
+        if ($time<$date." 09:00:00")$deadline=Carbon::parse($date." 09:00:00")->subHours(-$enquiry_time);
+        if($time>=$date." 09:00:00" && $time<$date." 14:00:00") $deadline=Carbon::parse($time)->subHours(-$enquiry_time);
+        if ($time>=$date." 14:00:00")$deadline=Carbon::parse($time)->subHours(-15-$enquiry_time);
         if ($deadline) return $deadline;
     }
     public function screenSupplier($user,$material)

+ 3 - 3
resources/views/procurement/finance/procurementBill.blade.php

@@ -32,7 +32,7 @@
                 <td class="">@{{ procurement.code }}</td>
                 <td class="">@{{ procurement.created_at }}</td>
                 <td class=""><span v-if="procurement.supplier_id">@{{ procurement.deadline }}</span></td>
-                <td class=""></td>
+                <td class=""><span v-if="procurement.signed_at">@{{ procurement.signed_at }}</span></td>
                 <td v-if="procurement.owner_material.owner">@{{ procurement.owner_material.owner.name }}</td>
                 <td v-if="procurement.owner_material.owner.customer">@{{ procurement.owner_material.owner.customer.company_name }}</td>
                 <td ><span v-if="procurement.supplier">@{{ procurement.supplier.name }}</span></td>
@@ -43,7 +43,7 @@
                 <td class="text-muted" v-if="procurement.owner_material">@{{ procurement.owner_material.specification }}</td>
                 <td>@{{ procurement.quantity }}</td>{{--采购数量--}}
                 <td>@{{ procurement.amount }}</td> {{--销售数量--}}
-                <td></td>
+                <td><span v-if="procurement.receive_amount">@{{ procurement.receive_amount }}</span></td>
                 <td>@{{ procurement.cost_price }}</td> {{--采购单价--}}
                 <td>@{{ procurement.unit_price }}</td>  {{--销售单价--}}
                 <td>@{{ procurement.amount*procurement.cost_price }}</td> {{--应收--}}
@@ -140,7 +140,7 @@
                     {name: 'specification', value: '材质规格', class: 'text-muted'},
                     {name: 'quantity', value: '采购数量', neglect: true},
                     {name: '', value: '销售数量', neglect: true},
-                    {name: '', value: '收货数量', neglect: true},
+                    {name: 'deliver_amount', value: '收货数量', neglect: true},
                     {name: '', value: '采购单价(元)', neglect: true},
                     {name: 'unit_price', value: '销售单价(元)', neglect: true},
                     {name: '', value: '应收金额(元)', neglect: true},

+ 5 - 5
resources/views/procurement/procurement/index.blade.php

@@ -100,7 +100,7 @@
                 </td>
                 <td>@{{ procurement.quantity }}</td>
                 <td><span>@{{ procurement.unit_price }}</span></td>
-                <td><span></span></td>
+                <td><span v-if="procurement.deliver_amount">@{{ procurement.deliver_amount }}</span></td>
                 <td><span>@{{ procurement.quantity*procurement.unit_price }}</span></td>
                 <td><span>@{{ procurement_status[procurement.status] }}</span></td>
                 <td><span v-if="procurement.owner_material.owner.customer">@{{ procurement.owner_material.owner.customer.phone }}</span></td>
@@ -161,7 +161,7 @@
                 procurement_status:{!! json_encode(\App\Procurement::status,JSON_UNESCAPED_UNICODE) !!},
                 checkData: [],
                 sum:{!! $procurements->total() !!},
-                owner_id: '{{old('owner_id')}}',
+                owner_id: '',
                 owner_material_id: '{{old('owner_material_id')}}',
                 material_name: '{{old('material_name')}}',
                 customer_name: '{{old('customer_name')}}',
@@ -175,7 +175,8 @@
                 procurement_id:'',supplier:'',offer:'',supplier_id:'',
                 ownerMaterials: [],
                 errors: {},
-                selectTr:''
+                selectTr:'',
+                createdProcurement:{},
             },
             mounted: function () {
                 $(".tooltipTarget").tooltip({'trigger': 'hover'});
@@ -340,14 +341,13 @@
                     };
                     window.axios.post(url, params).then(function (res) {
                         if (!res.data.success) {
-                            _this.errors = res.data.errors;
+                            _this.errors = res.data.errors
                         } else {
                             _this.procurements.push(res.data.data);
                             $("#add-procurement").modal('hide');
                             _this.clearData();
                             tempTip.setDuration(3000);
                             tempTip.showSuccess('新增采购单成功!');
-
                         }
                     }).catch(function (err) {
                         tempTip.setDuration(3000);

+ 1 - 1
routes/web.php

@@ -32,7 +32,7 @@ Route::group(['prefix'=>'password'],function(){
 /** 全局 */
 Route::get('denied',function (){return view('exception.authority');});
 /** 基础设置 */
-Route::group(['prefix'=>'maintenance'],function(){
+Route::group(['prefix'=>'createProcurement'],function(){
 
     /** 商品 */
     Route::group(['prefix'=>'commodity'],function(){