ProcurementController.php 24 KB

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