ProcurementController.php 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Components\AsyncResponse;
  4. use App\Configuration;
  5. use App\Filters\ProcurementCheckSheetFilters;
  6. use App\Filters\ProcurementFilters;
  7. use App\Http\Requests\Procurement\EnquiryRequest;
  8. use App\Http\Requests\Procurement\ProcurementAmountRequest;
  9. use App\Http\Requests\Procurement\ProcurementRequest;
  10. use App\Http\Requests\Procurement\ProofRequest;
  11. use App\Jobs\ProcurementConfirmInform;
  12. use App\Jobs\ProcurementEnquiry;
  13. use App\Jobs\ProcurementReceive;
  14. use App\Jobs\ProcurementWaitConfirmInform;
  15. use App\Material;
  16. use App\Procurement;
  17. use App\ProcurementCheckSheet;
  18. use App\ProcurementDeliverie;
  19. use App\ProcurementTotalBill;
  20. use App\Services\common\ExportService;
  21. use App\Services\ConfigurationService;
  22. use App\Services\OwnerMaterialService;
  23. use App\Services\ProcurementService;
  24. use App\Services\ProcurementTotalBillService;
  25. use App\Supplier;
  26. use Carbon\Traits\Date;
  27. use Illuminate\Http\Request;
  28. use Illuminate\Support\Carbon;
  29. use Illuminate\Support\Facades\Auth;
  30. use Illuminate\Support\Facades\Cache;
  31. use Illuminate\Support\Facades\Gate;
  32. use Matrix\Builder;
  33. class ProcurementController extends Controller
  34. {
  35. use AsyncResponse;
  36. private function newProcurement($param,$userId,$type=0,$status=0): Procurement
  37. {
  38. $procurement=new Procurement([
  39. 'owner_material_id'=>$param['owner_material_id'],
  40. 'quantity'=>$param['quantity'],
  41. 'amount'=>$param['amount'],
  42. 'unit_price'=>$param['unit_price'],
  43. 'initiator'=>$userId,
  44. 'type'=>$type,
  45. 'status'=>$status,
  46. ]);
  47. $procurement->save();
  48. $number_id=$procurement['id'];
  49. $procurement_code='BSHC';
  50. $procurement_code .= date ("ymd").str_pad($number_id>99999?$number_id%99999:$number_id,4,"0",STR_PAD_LEFT);
  51. /** @var ProcurementService $procurementService*/
  52. $procurementService=app(ProcurementService::class);
  53. $deadline=$procurementService->computeDeadline($procurement->created_at);
  54. $procurement->update(['code'=>$procurement_code,'deadline'=>$deadline]);
  55. if ($procurement->type==0) dispatch(new ProcurementEnquiry($procurement))->delay($deadline); //采购单创建时 推送到队列中
  56. dispatch(new ProcurementConfirmInform($procurement)); //推送发送订单通知消息模板 队列
  57. return $procurement;
  58. }
  59. public function index(Request $request,ProcurementFilters $filters)
  60. {
  61. if(!Gate::allows('采购管理-采购-查询')){ return ["success"=>false,"data"=>"您无此权限操作!"]; }
  62. $paginateParams=$request->input();
  63. $owner_ids=app('UserService')->getPermittingOwnerIds(auth()->user());
  64. $procurements = Procurement::query()
  65. ->filter($filters)
  66. ->with(['initiator','ownerMaterial.file','ownerMaterial.material','ownerMaterial.owner'=>function($query)use($owner_ids){
  67. $query->with('customer')->whereIn('id',$owner_ids);
  68. }])->paginate($param['paginate'] ?? 50);
  69. /** @var OwnerMaterialService $ownerMaterialService*/
  70. $ownerMaterialService=app(OwnerMaterialService::class);
  71. $owners=$ownerMaterialService->getOwnerPermittingWithMaterial();
  72. $materials=Material::query()->select('id','name')->get();
  73. $date=date('Y-m-d');
  74. $countReceive=ProcurementDeliverie::query()->where('signed_at',$date)->count();
  75. $countProcurement=Procurement::query()->where('type',0)->where('created_at','like',$date.'%')->count();
  76. return view('procurement/procurement/index',compact('procurements','owners','materials','paginateParams','countReceive','countProcurement'));
  77. }
  78. public function create()
  79. {
  80. if(!Gate::allows('采购管理-采购-新建')){ return ["success"=>false,"data"=>"您无此权限操作!"]; }
  81. /** @var OwnerMaterialService $ownerMaterialService*/
  82. $ownerMaterialService=app(OwnerMaterialService::class);
  83. $owners=$ownerMaterialService->getOwnerPermittingWithMaterial();
  84. return view('procurement/procurement/create',compact('owners'));
  85. }
  86. public function store(Request $request)
  87. {
  88. $this->gate('采购管理-采购-新建');
  89. $param=$request->all(['owner_material_id','quantity','amount','unit_price']);
  90. $procurement=$this->newProcurement($param,Auth::user()['id']);
  91. return redirect('procurement/procurement/index')->with('successTip','新采购单“'.$procurement->code.'”添加成功');
  92. }
  93. public function createProcurement(ProcurementRequest $request): array
  94. {
  95. $this->gate('采购管理-采购-新建');
  96. $request->validated();
  97. $param=$request->all(['owner_material_id','quantity','amount','unit_price']);
  98. try {
  99. $procurement=$this->newProcurement($param,Auth::user()['id']);
  100. $procurement = $procurement->loadMissing(['initiator','ownerMaterial.material','ownerMaterial.owner.customer','ownerMaterial.file']);
  101. if ($procurement) return ['success' => true,'data' => $procurement];
  102. else return ['success' => false, 'message' => '添加失败'];
  103. } catch (\Exception $e) {
  104. return ['success' => false,'message' => $e->getMessage()];
  105. }
  106. }
  107. //新增询价
  108. public function createEnquiry(EnquiryRequest $request): array
  109. {
  110. $this->gate('采购管理-采购-新建');
  111. $request->validated();
  112. $param=$request->all(['owner_material_id']);
  113. try {
  114. $procurement=new Procurement([
  115. 'owner_material_id'=>$param['owner_material_id'],
  116. 'quantity'=>0,
  117. 'amount'=>0,
  118. 'unit_price'=>0,
  119. 'initiator'=>Auth::user()['id'],
  120. 'type'=>1,
  121. 'status'=>0,
  122. 'time'=>14400000,
  123. ]);
  124. $procurement->save();
  125. $number_id=$procurement['id'];
  126. $procurement_code='BSHC';
  127. $procurement_code .= date ("ymd").str_pad($number_id>99999?$number_id%99999:$number_id,4,"0",STR_PAD_LEFT);
  128. /** @var ProcurementService $procurementService*/
  129. $procurementService=app(ProcurementService::class);
  130. $deadline=$procurementService->computeDeadline($procurement->created_at);
  131. $procurement->update(['code'=>$procurement_code,'deadline'=>$deadline]);
  132. dispatch(new ProcurementConfirmInform($procurement)); //推送发送订单通知消息模板 队列
  133. $procurement = $procurement->loadMissing(['initiator','ownerMaterial.material','ownerMaterial.owner.customer','ownerMaterial.file']);
  134. if ($procurement) return ['success' => true,'data' => $procurement];
  135. else return ['success' => false, 'message' => '添加失败'];
  136. } catch (\Exception $e) {
  137. return ['success' => false,'message' => $e->getMessage()];
  138. }
  139. }
  140. //新增打样
  141. public function createProof(ProofRequest $request): array
  142. {
  143. $this->gate('采购管理-采购-新建');
  144. $request->validated();
  145. $param=$request->all(['owner_material_id']);
  146. try {
  147. $procurement=new Procurement([
  148. 'owner_material_id'=>$param['owner_material_id'],
  149. 'quantity'=>1,
  150. 'amount'=>0,
  151. 'unit_price'=>0,
  152. 'initiator'=>Auth::user()['id'],
  153. 'type'=>2,
  154. 'status'=>2,
  155. ]);
  156. $procurement->save();
  157. $number_id=$procurement['id'];
  158. $procurement_code='BSHC';
  159. $procurement_code .= date ("ymd").str_pad($number_id>99999?$number_id%99999:$number_id,4,"0",STR_PAD_LEFT);
  160. /** @var ProcurementService $procurementService*/
  161. $procurementService=app(ProcurementService::class);
  162. $deadline=$procurementService->computeDeadline($procurement->created_at);
  163. $procurement->update(['code'=>$procurement_code,'deadline'=>$deadline]);
  164. dispatch(new ProcurementConfirmInform($procurement)); //推送发送订单通知消息模板 队列
  165. $procurement = $procurement->loadMissing(['initiator','ownerMaterial.material','ownerMaterial.owner.customer','ownerMaterial.file']);
  166. if ($procurement) return ['success' => true,'data' => $procurement];
  167. else return ['success' => false, 'message' => '添加失败'];
  168. } catch (\Exception $e) {
  169. return ['success' => false,'message' => $e->getMessage()];
  170. }
  171. }
  172. //取消采购单
  173. public function cancel($id): array
  174. {
  175. $this->gate('采购管理-采购-编辑');
  176. try {
  177. $procurement=Procurement::query()->find($id);
  178. $procurement->update(['status'=>10]);
  179. $procurement = $procurement->loadMissing(['initiator','ownerMaterial.material','ownerMaterial.owner.customer']);
  180. if ($procurement) return ['success' => true,'data' => $procurement];
  181. else return ['success' => false, 'message' => '取消失败'];
  182. } catch (\Exception $e) {
  183. return ['success' => false,'message' => $e->getMessage()];
  184. }
  185. }
  186. //询价单提交采购申请
  187. public function submitProcurement(ProcurementAmountRequest $request): array
  188. {
  189. $this->gate('采购管理-采购-编辑');
  190. $request->validated();
  191. $param=$request->all();
  192. /**@var ConfigurationService $configurationService */
  193. $configurationService=app(ConfigurationService::class);
  194. $receive_time=$configurationService->getReceiveTime();
  195. $priceCoefficient=$configurationService->getPriceCoefficient();
  196. try {
  197. /** @var Procurement $procurement */
  198. $procurement=Procurement::query()->find($param['id']);
  199. $unit_price=$param['unit_price'];
  200. if (!$unit_price) $unit_price=$priceCoefficient*$param['offer'];
  201. $procurement->update([
  202. 'type'=>0,
  203. 'status'=>2,
  204. 'quantity'=>$param['quantity'],
  205. 'amount'=>$param['amount'],
  206. 'unit_price'=>$unit_price,
  207. 'cost_price'=>$param['offer'],
  208. 'supplier_id'=>$param['supplier_id'],
  209. 'deadline'=>Carbon::parse(Carbon::now()->toDateTimeString())->subHours(-$receive_time)->toDateTimeString(),
  210. ]);
  211. dispatch(new ProcurementReceive($procurement))->delay(now()->addHours($receive_time)); //可从系统配置获取
  212. dispatch(new ProcurementWaitConfirmInform($procurement));
  213. $procurement = $procurement->loadMissing(['initiator','ownerMaterial.material','ownerMaterial.owner.customer','ownerMaterial.file']);
  214. if ($procurement) return ['success' => true,'data' => $procurement];
  215. else return ['success' => false, 'message' => '发起采购失败'];
  216. } catch (\Exception $e) {
  217. return ['success' => false,'message' => $e->getMessage()];
  218. }
  219. }
  220. public function initiateProcurement(Request $request): array
  221. {
  222. $this->gate('采购管理-采购-编辑');
  223. $id=$request->input('id');
  224. /** @var ProcurementService $procurementService*/
  225. $procurementService=app(ProcurementService::class);
  226. try {
  227. $procurementQuotation=$procurementService->screenLowestQuotation($id);
  228. if ($procurementQuotation) return ['success' => true,'data' => $procurementQuotation];
  229. else return ['success' => false, 'message' => '暂无供应商报价!'];
  230. } catch (\Exception $e) {
  231. return ['success' => false,'message' => $e->getMessage()];
  232. }
  233. }
  234. public function costPrice(Request $request): array
  235. {
  236. $this->gate('采购管理-财务-采购账单');
  237. $id=$request->input('id');
  238. $cost_price=$request->input('cost_price');
  239. try {
  240. $procurement=Procurement::query()->find($id);
  241. if ($procurement->cost_price!=$cost_price)$procurement->update(['cost_price'=>$cost_price]);
  242. $procurement = $procurement->loadMissing(['initiator','supplier','ownerMaterial.material','ownerMaterial.owner.customer','ownerMaterial.file']);
  243. if ($procurement) return ['success' => true,'data' => $procurement];
  244. else return ['success' => false, 'message' => '修改采购单价失败!'];
  245. } catch (\Exception $e) {
  246. return ['success' => false,'message' => $e->getMessage()];
  247. }
  248. }
  249. public function createAnew(Request $request): array
  250. {
  251. $this->gate('采购管理-采购-新建');
  252. $ids=$request->input('checkData');
  253. if (empty($ids)) return ['success' => false, 'message' => '当前未勾选指定订单!'];
  254. $collect=collect();
  255. $procurements=Procurement::query()->whereIn('id',$ids)->get();
  256. foreach ($procurements as $procurement){
  257. if ($procurement->type==2){
  258. $pro=$this->newProcurement($procurement,Auth::user()['id'],$procurement->type,2);
  259. }else{
  260. $pro=$this->newProcurement($procurement,Auth::user()['id'],$procurement->type);
  261. }
  262. $pro->loadMissing(['initiator','ownerMaterial.material','ownerMaterial.owner.customer','ownerMaterial.file']);
  263. $collect->add($pro);
  264. }
  265. if (!empty($collect)) return ['success' => true,'data' => $collect];
  266. }
  267. public function show(Procurement $procurement)
  268. {
  269. //
  270. }
  271. public function edit(Procurement $procurement)
  272. {
  273. //
  274. }
  275. public function update(Request $request, Procurement $procurement)
  276. {
  277. //
  278. }
  279. public function destroy(Procurement $procurement)
  280. {
  281. //
  282. }
  283. public function checkBill(Request $request,ProcurementCheckSheetFilters $filters)
  284. {
  285. if(!Gate::allows('采购管理-财务-对账单')){ return ["success"=>false,"data"=>"您无此权限操作!"]; }
  286. $paginateParams=$request->input();
  287. $procurementCheckSheets=ProcurementCheckSheet::query()
  288. ->filter($filters)
  289. ->with(['procurementDelivery.procurement.supplier','procurementDelivery.procurement.ownerMaterial.material','procurementDelivery.receiver'])
  290. ->paginate($param['paginate'] ?? 50);
  291. $suppliers=Supplier::query()->select('id','name')->get();
  292. $materials=Material::query()->select('id','name')->get();
  293. return view('procurement/finance/checkBill',compact('procurementCheckSheets','suppliers','paginateParams','materials'));
  294. }
  295. public function fillInvoice(Request $request){
  296. $this->gate('采购管理-财务-对账单');
  297. $id=$request->input('procurementCheckSheetId');
  298. $invoice_number=$request->input('invoice_number');
  299. try {
  300. $procurementCheckSheet=ProcurementCheckSheet::query()->where('id',$id)->update(['invoice_number'=>$invoice_number]);
  301. if ($procurementCheckSheet) return ['success' => true,'data' => $invoice_number];
  302. else return ['success' => false, 'message' => '添加失败'];
  303. } catch (\Exception $e) {
  304. return ['success' => false,'message' => $e->getMessage()];
  305. }
  306. }
  307. public function procurementBill(Request $request,ProcurementFilters $filters)
  308. {
  309. if(!Gate::allows('采购管理-财务-采购账单')){ return ["success"=>false,"data"=>"您无此权限操作!"]; }
  310. $paginateParams=$request->input();
  311. $owner_ids=app('UserService')->getPermittingOwnerIds(auth()->user());
  312. $owners=app("OwnerService")->getIntersectPermitting();
  313. $materials=Material::query()->select('id','name')->get();
  314. $suppliers=Supplier::query()->select('id','name')->get();
  315. $procurements = Procurement::query()
  316. ->filter($filters)
  317. ->with(['initiator','supplier','ownerMaterial.material','ownerMaterial.owner'=>function($query)use($owner_ids){
  318. /** @var Builder $query */
  319. $query->with('customer')->whereIn('id',$owner_ids);
  320. },'procurementDeliveries'=>function($builder){
  321. /** @var Builder $builder */
  322. $builder->orderByDesc('id')->first();
  323. }])
  324. ->where('type',0) //只取采购单
  325. ->paginate($param['paginate'] ?? 50);
  326. return view('procurement/finance/procurementBill',compact('suppliers','materials','owners','paginateParams','procurements'));
  327. }
  328. public function monthlyBillReport(Request $request)
  329. {
  330. if(!Gate::allows('采购管理-财务-月账单报表')){ return ["success"=>false,"data"=>"您无此权限操作!"]; }
  331. $paginateParams=$request->input();
  332. /** @var ProcurementTotalBillService $procurementTotalBillService*/
  333. $procurementTotalBillService=app(ProcurementTotalBillService::class);
  334. $procurementTotalBills=$procurementTotalBillService->paginate($paginateParams);
  335. $suppliers=Supplier::query()->select('id','name')->get();
  336. return view('procurement/finance/monthlyBillReport',compact('suppliers','procurementTotalBills','paginateParams'));
  337. }
  338. //采购导出
  339. public function procurementExport(Request $request,ProcurementFilters $filters){
  340. $this->gate('采购管理-采购-查询');
  341. $owner_ids=app('UserService')->getPermittingOwnerIds(auth()->user());
  342. $procurements = Procurement::query()
  343. ->filter($filters)
  344. ->with(['initiator','ownerMaterial.material','ownerMaterial.owner'=>function($query)use($owner_ids){
  345. $query->with('customer')->whereIn('id',$owner_ids);
  346. }])->get();
  347. $procurementStatus=Procurement::status;
  348. $procurementType=Procurement::type;
  349. $row = ['采购编号','项目','单据类型','采购公司','耗材编号','耗材','尺寸大小','特殊要求','材质规格','采购数量','销售单价(元)','送货数量','销售总价(元)','采购单状态','联系方式'];
  350. $list = [];
  351. foreach ($procurements as $procurement){
  352. $list[] = [
  353. $procurement->code,
  354. $procurement->ownerMaterial->owner ? $procurement->ownerMaterial->owner->name :'',
  355. is_null($procurement->type) ? '' :$procurementType[$procurement->type],
  356. $procurement->ownerMaterial->owner->customer ? $procurement->ownerMaterial->owner->customer->company_name :'',
  357. $procurement->ownerMaterial->material ? $procurement->ownerMaterial->material->code :'',
  358. $procurement->ownerMaterial->material ? $procurement->ownerMaterial->material->name :'',
  359. $procurement->ownerMaterial ? $procurement->ownerMaterial->size :'',
  360. $procurement->ownerMaterial ? $procurement->ownerMaterial->special :'',
  361. $procurement->ownerMaterial ? $procurement->ownerMaterial->specification :'',
  362. $procurement->quantity,
  363. $procurement->unit_price,
  364. '',//送货数量
  365. $procurement->unit_price*$procurement->amount,//销售总价=销售数量*销售单价
  366. is_null($procurement->status) ? '' :$procurementStatus[$procurement->status],
  367. $procurement->ownerMaterial->owner->customer ? $procurement->ownerMaterial->owner->customer->phone :'',
  368. ];
  369. }
  370. return app(ExportService::class)->json($row,$list,"采购管理-采购报表记录");
  371. }
  372. //对账单报表导出
  373. public function checkBillExport(Request $request,ProcurementCheckSheetFilters $filters){
  374. $this->gate('采购管理-财务-对账单');
  375. $procurementCheckSheets=ProcurementCheckSheet::query()
  376. ->filter($filters)
  377. ->with(['procurementDelivery.procurement.supplier','procurementDelivery.procurement.ownerMaterial.material','procurementDelivery.receiver'])
  378. ->get();
  379. $procurementCheckSheetStatus=ProcurementCheckSheet::status;
  380. $row = ['采购编号','采购日期','送货日期','供应商名称','耗材编号','耗材','采购数量','送货数量','签收人','签收日期','应付金额','发票号','状态'];
  381. $list = [];
  382. foreach ($procurementCheckSheets as $procurementCheckSheet){
  383. $list[] = [
  384. $procurementCheckSheet->procurementDelivery->procurement ? $procurementCheckSheet->procurementDelivery->procurement->code : '',
  385. $procurementCheckSheet->procurementDelivery->procurement ? $procurementCheckSheet->procurementDelivery->procurement->created_at :'',
  386. $procurementCheckSheet->procurementDelivery ? $procurementCheckSheet->procurementDelivery->created_at :'',
  387. $procurementCheckSheet->procurementDelivery->procurement->supplier ? $procurementCheckSheet->procurementDelivery->procurement->supplier->name :'',
  388. $procurementCheckSheet->procurementDelivery->procurement->ownerMaterial->material ? $procurementCheckSheet->procurementDelivery->procurement->ownerMaterial->material->code :'',
  389. $procurementCheckSheet->procurementDelivery->procurement->ownerMaterial->material ? $procurementCheckSheet->procurementDelivery->procurement->ownerMaterial->material->name :'',
  390. $procurementCheckSheet->procurementDelivery->procurement ? $procurementCheckSheet->procurementDelivery->procurement->quantity :'',
  391. $procurementCheckSheet->procurementDelivery ? $procurementCheckSheet->procurementDelivery->amount :'',
  392. $procurementCheckSheet->procurementDelivery->receiver ? $procurementCheckSheet->procurementDelivery->receiver->name :'',
  393. $procurementCheckSheet->procurementDelivery ? $procurementCheckSheet->procurementDelivery->signed_at :'',
  394. $procurementCheckSheet->account_payable,
  395. $procurementCheckSheet->invoice_number,
  396. is_null($procurementCheckSheet->status) ? '' :$procurementCheckSheetStatus[$procurementCheckSheet->status],
  397. ];
  398. }
  399. return app(ExportService::class)->json($row,$list,"采购管理-对账单报表记录");
  400. }
  401. //采购账单导出
  402. public function procurementBillExport(Request $request,ProcurementFilters $filters){
  403. $this->gate('采购管理-财务-采购账单');
  404. $owner_ids=app('UserService')->getPermittingOwnerIds(auth()->user());
  405. $procurements = Procurement::query()
  406. ->filter($filters)
  407. ->with(['initiator','supplier','ownerMaterial.material','ownerMaterial.owner'=>function($query)use($owner_ids){
  408. $query->with('customer')->whereIn('id',$owner_ids);
  409. }])->get();
  410. $procurementStatus=Procurement::status;
  411. $row = ['采购编号','采购日期','接单日期','签收日期','项目名称','采购公司','供应商','耗材编号','耗材','尺寸大小','特殊要求',
  412. '材质规格','采购数量','销售数量','收货数量','采购单价(元)','销售单价(元)','应收金额(元)','应付金额(元)','状态'];
  413. $list = [];
  414. foreach ($procurements as $procurement){
  415. $list[] = [
  416. $procurement->code,
  417. $procurement->created_at,
  418. '',//接单日期
  419. '',//签收日期
  420. $procurement->ownerMaterial->owner ? $procurement->ownerMaterial->owner->name :'',
  421. $procurement->ownerMaterial->owner->customer ? $procurement->ownerMaterial->owner->customer->company_name :'',
  422. $procurement->supplier ? $procurement->supplier->name :'',
  423. $procurement->ownerMaterial->material ? $procurement->ownerMaterial->material->code :'',
  424. $procurement->ownerMaterial->material ? $procurement->ownerMaterial->material->name :'',
  425. $procurement->ownerMaterial ? $procurement->ownerMaterial->size :'',
  426. $procurement->ownerMaterial ? $procurement->ownerMaterial->special :'',
  427. $procurement->ownerMaterial ? $procurement->ownerMaterial->specification :'',
  428. $procurement->quantity,
  429. $procurement->amount,
  430. '',//收货数量
  431. $procurement->cost_price,
  432. $procurement->unit_price,
  433. '',//应收金额
  434. '',//应付金额
  435. is_null($procurement->status) ? '' :$procurementStatus[$procurement->status],
  436. ];
  437. }
  438. return app(ExportService::class)->json($row,$list,"采购账单报表记录");
  439. }
  440. //月账单报表导出
  441. public function procurementTotalBillExport(Request $request){
  442. $this->gate('采购管理-财务-月账单报表');
  443. /** @var ProcurementTotalBillService $procurementTotalBillService*/
  444. $procurementTotalBillService=app(ProcurementTotalBillService::class);
  445. if ($request->input('checkAllSign')){
  446. $params = $request->input();
  447. unset($params["checkAllSign"]);
  448. $procurementTotalBills=$procurementTotalBillService->get($params);
  449. }else{
  450. $procurementTotalBills=$procurementTotalBillService->get(["id"=>$request->data]);
  451. }
  452. $procurementTotalBillStatus=ProcurementTotalBill::status;
  453. $row = ['对账编号','账单日期','提交日期','供应商','总金额','状态'];
  454. $list = [];
  455. foreach ($procurementTotalBills as $procurementTotalBill){
  456. $list[] = [
  457. $procurementTotalBill->id,
  458. $procurementTotalBill->counting_month,
  459. $procurementTotalBill->created_at,
  460. $procurementTotalBill->supplier ? $procurementTotalBill->supplier :'',
  461. $procurementTotalBill->total_payable,
  462. $procurementTotalBill->status ? $procurementTotalBillStatus[$procurementTotalBill->status] :'',
  463. ];
  464. }
  465. return app(ExportService::class)->json($row,$list,"采购管理-月账单报表记录");
  466. }
  467. }