OwnerSundryFeeDetailsController.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Filters\OwnerSundryFeeDetailFilters;
  4. use App\Owner;
  5. use App\OwnerBillReport;
  6. use App\OwnerBillReportArchive;
  7. use App\OwnerSundryFeeDetail;
  8. use App\Services\OwnerBillReportArchiveService;
  9. use App\Services\OwnerSundryFeeDetailService;
  10. use App\Traits\SettlementBillTrait;
  11. use Illuminate\Http\Request;
  12. use App\Http\Requests\OwnerSundryFeeDetailRequest;
  13. use Oursdreams\Export\Export;
  14. class OwnerSundryFeeDetailsController extends Controller
  15. {
  16. use SettlementBillTrait;
  17. /** @var OwnerBillReportArchiveService $archiveService */
  18. private $archiveService;
  19. /** @var OwnerSundryFeeDetailService $service */
  20. private $service;
  21. public function __construct()
  22. {
  23. $this->archiveService = app('OwnerBillReportArchiveService');
  24. $this->service = app('OwnerSundryFeeDetailService');
  25. $this->middleware('auth');
  26. }
  27. public function index(Request $request, OwnerSundryFeeDetailFilters $filters)
  28. {
  29. $paginateParams = $request->input();
  30. $owner_sundry_fee_details = OwnerSundryFeeDetail::query()
  31. ->filter($filters)->with('owner', 'logistic')
  32. ->orderByDesc('updated_at')
  33. ->paginate($request->paginate ?? 50);
  34. $owners = Owner::all();
  35. return view('customer.ownerSundryFee.index', compact('owner_sundry_fee_details', 'paginateParams', 'owners'));
  36. }
  37. public function show($owner_sundry_fee_detail)
  38. {
  39. $owner_sundry_fee_detail = OwnerSundryFeeDetail::find($owner_sundry_fee_detail);
  40. $owner_sundry_fee_detail->loadMissing('owner');
  41. return view('customer.ownerSundryFee.show', compact('owner_sundry_fee_detail'));
  42. }
  43. public function create(OwnerSundryFeeDetail $owner_sundry_fee_detail)
  44. {
  45. $types = [
  46. '材料',
  47. '垫付',
  48. '人工',
  49. '其他',
  50. ];
  51. $owners = Owner::all();
  52. $logistics = \App\Logistic::all();
  53. return view('customer.ownerSundryFee.create_and_edit', compact('owner_sundry_fee_detail', 'types', 'owners', 'logistics'));
  54. }
  55. public function store(OwnerSundryFeeDetailRequest $request)
  56. {
  57. $data = $request->all();
  58. $data['fee'] = $data['amount'] * $data['price'];
  59. $owner_sundry_fee_detail = OwnerSundryFeeDetail::create($data);
  60. return redirect()->route('ownerSundryFeeDetails.index', $owner_sundry_fee_detail->id)->with('success', '创建成功');
  61. }
  62. public function edit($owner_sundry_fee_detail)
  63. {
  64. $owner_sundry_fee_detail = OwnerSundryFeeDetail::find($owner_sundry_fee_detail);
  65. $owner_sundry_fee_detail->loadMissing('owner');
  66. $this->authorize('update', $owner_sundry_fee_detail);
  67. $types = [
  68. '材料',
  69. '垫付',
  70. '人工',
  71. '其他',
  72. ];
  73. $owners = Owner::all();
  74. $logistics = \App\Logistic::all();
  75. return view('customer.ownerSundryFee.create_and_edit', compact('owner_sundry_fee_detail', 'types', 'owners', 'logistics'));
  76. }
  77. public function update(OwnerSundryFeeDetailRequest $request, $owner_sundry_fee_detail)
  78. {
  79. $owner_sundry_fee_detail = OwnerSundryFeeDetail::find($owner_sundry_fee_detail);
  80. $this->authorize('update', $owner_sundry_fee_detail);
  81. $data = $request->all();
  82. $data['fee'] = $data['amount'] * $data['price'];
  83. $owner_sundry_fee_detail->update($data);
  84. return redirect()->route('ownerSundryFeeDetails.index', $owner_sundry_fee_detail->id)->with('success', '更新成功');
  85. }
  86. public function destroy($owner_sundry_fee_detail)
  87. {
  88. $owner_sundry_fee_detail = OwnerSundryFeeDetail::find($owner_sundry_fee_detail);
  89. $this->authorize('destroy', $owner_sundry_fee_detail);
  90. $owner_sundry_fee_detail->delete();
  91. return redirect()->route('ownerSundryFeeDetails.index')->with('success', '删除成功');
  92. }
  93. public function export(Request $request, OwnerSundryFeeDetailFilters $filters)
  94. {
  95. $query = OwnerSundryFeeDetail::query()
  96. ->filter($filters)->with('owner', 'logistic');
  97. $row = ['货主', '日期', '作业类型', '费用描述', '快递单号', '承运商', '数量', '单价', '收费金额', '备注'];
  98. if (!$request->exists('checkAllSign')) {
  99. $query->whereIn('id', explode(',', $request['data']));
  100. }
  101. $details = $query
  102. ->orderByDesc('updated_at')
  103. ->get();
  104. $json = [];
  105. foreach ($details as $detail) {
  106. $json[] = [
  107. $detail->owner->name ?? '',
  108. $detail->created_at ?? '',
  109. $detail->type ?? '',
  110. $detail->fee_explain ?? '',
  111. $detail->logistic_name ?? '',
  112. $detail->logistic->name ?? '',
  113. $detail->amount ?? '',
  114. $detail->price ?? '',
  115. $detail->fee ?? '',
  116. $detail->remark ?? '',
  117. ];
  118. }
  119. return Export::make($row, $json, "杂项费");
  120. }
  121. }