resto-dhepot/app/Http/Controllers/Admins/Pengeluaran/PengeluaranController.php

156 lines
6.0 KiB
PHP

<?php
namespace App\Http\Controllers\Admins\Pengeluaran;
use App\Http\Controllers\Controller;
use App\Models\BukuBesar;
use App\Models\Pengeluaran;
use App\Models\RekeningCoa;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class PengeluaranController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
$coaBiaya = RekeningCoa::where('kode_coa', 5)->get();
$rekeningCoaTf = RekeningCoa::where('kode_coa', 1)->where('sub_kode_coa', 200)->get();
return view('pages.admin.pengeluaran.index', compact('coaBiaya', 'rekeningCoaTf'));
}
public function simpan(Request $request)
{
try {
DB::beginTransaction();
$user = request()->user();
Pengeluaran::create([
'faktur' => "PG-" . date('YmdHis'),
'tanggal' => $request->tanggal,
'jenis_transaksi' => $request->jenis_transaksi,
'nominal' => $request->nominal,
'keterangan' => $request->keterangan,
'user_id' => $user->id
]);
if ($request->jenis_transaksi == "1") {
BukuBesar::create([
'faktur' => "PG-" . date('YmdHis'),
'tanggal' => $request->tanggal,
'rekening_coa_id' => "2",
'kode_rekening_coa' => "1.100.01",
'keterangan_coa' => "Kas Kasir",
'keterangan' => $request->keterangan,
'debet' => 0,
'kredit' => $request->nominal
]);
BukuBesar::create([
'faktur' => "PG-" . date('YmdHis'),
'tanggal' => $request->tanggal,
'rekening_coa_id' => $request->id_rekening_coa,
'kode_rekening_coa' => $request->kode_coa,
'keterangan_coa' => $request->keterangan_coa,
'keterangan' => $request->keterangan,
'debet' => $request->nominal,
'kredit' => 0,
]);
} else {
BukuBesar::create([
'faktur' => "PG-" . date('YmdHis'),
'tanggal' => $request->tanggal,
'rekening_coa_id' => $request->id_rekening_coa_transfer,
'kode_rekening_coa' => $request->kode_coa_transfer,
'keterangan_coa' => $request->keterangan_coa_transfer,
'keterangan' => $request->keterangan,
'debet' => 0,
'kredit' => $request->nominal
]);
BukuBesar::create([
'faktur' => "PG-" . date('YmdHis'),
'tanggal' => $request->tanggal,
'rekening_coa_id' => $request->id_rekening_coa,
'kode_rekening_coa' => $request->kode_coa,
'keterangan_coa' => $request->keterangan_coa,
'keterangan' => $request->keterangan,
'debet' => $request->nominal,
'kredit' => 0,
]);
}
DB::commit();
return response()->json(['status' => true, 'message' => 'Data berhasil tersimpan']);
} catch (\Throwable $th) {
DB::rollBack();
dd($th->getMessage());
return response()->json(['status' => false, 'message' => 'Kesalahan menyimpan data']);
}
}
public function laporan(Request $request)
{
$mpdf = new \Mpdf\Mpdf([
'mode' => 'utf-8',
'format' => 'A4',
'orientation' => 'portrait',
'margin_left' => 15,
'margin_right' => 15,
'margin_top' => 10,
'margin_bottom' => 10,
'default_font_size' => 9,
'default_font' => 'arial',
]);
$mpdf->AddPage();
$mpdf->setFooter('{PAGENO}');
$data = Pengeluaran::with('user')->whereDate('tanggal', '>=', $request->filter_tanggal_1)
->whereDate('tanggal', '<=', $request->filter_tanggal_2)
->get();
$html = view('pages.admin.pengeluaran.laporan', [
'data' => $data,
'filter_tanggal_1' => $request->filter_tanggal_1,
'filter_tanggal_2' => $request->filter_tanggal_2,
]);
$mpdf->writeHTML($html);
$mpdf->Output('Laporan_Pengeluaran.pdf', 'I');
return response()->header('Content-Type', 'application/pdf');
}
public function getDatapengeluaran(Request $request)
{
$nomor = 1;
$filter_tanggal_1 = $request->filter_tanggal_1;
$filter_tanggal_2 = $request->filter_tanggal_2;
$data = Pengeluaran::with('user')
->when($filter_tanggal_1, function ($query) use ($filter_tanggal_1) {
return $query->whereDate('tanggal', '>=', $filter_tanggal_1);
})
->when($filter_tanggal_2, function ($query) use ($filter_tanggal_2) {
return $query->whereDate('tanggal', '<=', $filter_tanggal_2);
})
->when(!$filter_tanggal_1 && !$filter_tanggal_2, function ($query) {
return $query->whereDate('tanggal', Carbon::today());
})
->orderBy('tanggal', 'desc')
->get();
return datatables()
->of($data)
->addColumn('nomor', function ($data) use (&$nomor) {
return $nomor++;
})
->addColumn('ubah', function ($data) {
return '<div class="btn-group">
<a href="javascript:void(0)" onclick="detail(\'' . $data->id . '\')"><span class="btn btn-xs btn-warning mr-1"><i class="fas fa-eye"></i></span></a>
<a href="javascript:void(0)" onclick="print(\'' . $data->id . '\')"><span class="btn btn-xs btn-success"><i class="fas fa-print"></i></span></a></div>';
})
->rawColumns(['ubah'])
->make(true);
}
}