302 lines
10 KiB
PHP
302 lines
10 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\Registrasi;
|
|
use App\Models\Transaksi;
|
|
use App\Models\TransaksiDetail;
|
|
use Barryvdh\DomPDF\Facade\Pdf;
|
|
use Exception;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Yajra\DataTables\Facades\DataTables;
|
|
|
|
class TransaksiController extends Controller
|
|
{
|
|
/**
|
|
* Display a listing of the resource.
|
|
*/
|
|
public function index()
|
|
{
|
|
//
|
|
$data['title'] = 'TRANSAKSI';
|
|
return view('transaksi.index', $data);
|
|
}
|
|
|
|
public function get_list_table(Request $request)
|
|
{
|
|
$registrasi = Transaksi::select([
|
|
'transaksis.tindakan_tarif_total',
|
|
'transaksis.biaya_tambahan',
|
|
DB::raw('(transaksis.tindakan_tarif_total + transaksis.biaya_tambahan) total'),
|
|
'registrasis.id',
|
|
'registrasis.nomor_urut',
|
|
'registrasis.registrasi_tanggal',
|
|
'registrasis.status',
|
|
'pasiens.pasien_name',
|
|
'pasiens.jenis_kelamin',
|
|
])
|
|
->leftJoin('registrasis', 'registrasis.id', '=', 'transaksis.registrasi_id')
|
|
->leftJoin('pasiens', 'pasiens.id', '=', 'registrasis.pasien_id')
|
|
->where('registrasis.registrasi_tanggal', date('Y-m-d'))
|
|
->whereIn('registrasis.status', [2, 3]);
|
|
|
|
return DataTables::of($registrasi)
|
|
->editColumn('total', function ($row) {
|
|
return number_format($row->total, 0, ',', '.');
|
|
})
|
|
->editColumn('status', function ($row) {
|
|
$str = '';
|
|
if($row->status == 2) {
|
|
$str = '<span class="badge badge-light-danger">Belum Bayar</span>';
|
|
} else if($row->status == 3){
|
|
$str = '<span class="badge badge-light-success">Sudah Bayar</span>';
|
|
}
|
|
|
|
return $str;
|
|
})
|
|
->addColumn('action', function ($row) {
|
|
if($row->status == 2){
|
|
return '<a href="' . url('/transaksi/invoice/' . $row->id) . '" class="btn btn-sm btn-success edit" data-id="' . $row->id . '">Buat Invoice</a>';
|
|
} else {
|
|
return '<a href="' . url('/transaksi/detail/' . $row->id) . '" class="btn btn-sm btn-primary edit" data-id="' . $row->id . '">Detail</a>';
|
|
}
|
|
})
|
|
->rawColumns(['action', 'status'])
|
|
->make(true);
|
|
}
|
|
|
|
public function invoice(string $id)
|
|
{
|
|
//
|
|
$transaksi = TransaksiDetail::select([
|
|
'transaksis.id',
|
|
'transaksis.tindakan_tarif_total',
|
|
'transaksis.biaya_tambahan',
|
|
'transaksis.catatan',
|
|
'registrasis.nomor_urut',
|
|
'registrasis.registrasi_tanggal',
|
|
'registrasis.pasien_id',
|
|
'pasiens.pasien_nik',
|
|
'pasiens.pasien_name',
|
|
'pasiens.tanggal_lahir',
|
|
'pasiens.jenis_kelamin',
|
|
'registrasis.asuransi_id',
|
|
'asuransis.asuransi_name',
|
|
'registrasis.asuransi_no',
|
|
'registrasis.pegawai_id',
|
|
'pegawais.pegawai_name',
|
|
'registrasis.ruang_pelayanan_id',
|
|
'ruang_pelayanans.ruang_pelayanan_name',
|
|
DB::raw('GROUP_CONCAT(tindakans.tindakan_name SEPARATOR ", ") as tindakan'),
|
|
DB::raw('COUNT(IF(transaksi_details.tindakan_id = -1, 1, null)) as tambahan'),
|
|
])
|
|
->leftJoin('transaksis', 'transaksis.id', '=', 'transaksi_details.transaksi_id')
|
|
->leftJoin('registrasis', 'registrasis.id', '=', 'transaksis.registrasi_id')
|
|
->leftJoin('pasiens', 'pasiens.id', '=', 'registrasis.pasien_id')
|
|
->leftJoin('asuransis', 'asuransis.id', '=', 'registrasis.asuransi_id')
|
|
->leftJoin('pegawais', 'pegawais.id', '=', 'registrasis.pegawai_id')
|
|
->leftJoin('ruang_pelayanans', 'ruang_pelayanans.id', '=', 'registrasis.ruang_pelayanan_id')
|
|
->leftJoin('tindakans', 'tindakans.id', '=', 'transaksi_details.tindakan_id')
|
|
->where('registrasis.id', $id)
|
|
->groupBy('transaksis.id')
|
|
->first();
|
|
|
|
if($transaksi){
|
|
$data['title'] = 'INVOICE FORM';
|
|
$data['transaksi'] = $transaksi;
|
|
|
|
return view('transaksi.invoice', $data);
|
|
} else {
|
|
abort(404);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Show the form for creating a new resource.
|
|
*/
|
|
public function create()
|
|
{
|
|
//
|
|
}
|
|
|
|
/**
|
|
* Store a newly created resource in storage.
|
|
*/
|
|
public function store(Request $request)
|
|
{
|
|
//
|
|
$id = $request->id;
|
|
$tarif_tambahan = $request->biaya_tambahan;
|
|
|
|
$transaksi = Transaksi::findorFail($id);
|
|
|
|
if (!$transaksi) {
|
|
$data_return = [
|
|
'status' => false,
|
|
'data' => null,
|
|
'msg' => 'Data Not Found!'
|
|
];
|
|
return response()->json($data_return, 404);
|
|
}
|
|
|
|
$registrasi_id = $transaksi->registrasi_id;
|
|
|
|
try {
|
|
DB::beginTransaction();
|
|
$registrasi = Registrasi::findorFail($registrasi_id);
|
|
$transaksi_detail = TransaksiDetail::where('transaksi_id', $id)->where('tindakan_id', -1);
|
|
|
|
$registrasi->update(['status' => 3]);
|
|
|
|
$transaksi->update(['biaya_tambahan' => $tarif_tambahan, 'is_pay' => 1]);
|
|
$transaksi_detail->update(['tarif' => $tarif_tambahan]);
|
|
|
|
|
|
DB::commit();
|
|
|
|
$data_return = [
|
|
'status' => true,
|
|
'data' => $id,
|
|
'msg' => null
|
|
];
|
|
return response()->json($data_return, 200);
|
|
} catch (Exception $e) {
|
|
//throw $th;
|
|
DB::rollBack();
|
|
$data_return = [
|
|
'status' => false,
|
|
'data' => null,
|
|
'msg' => 'something wrong!!',
|
|
'msg_for_dev' => $e->getMessage()
|
|
];
|
|
return response()->json($data_return, 500);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Display the specified resource.
|
|
*/
|
|
public function detail(string $id)
|
|
{
|
|
//
|
|
$transaksi = TransaksiDetail::select([
|
|
'transaksis.id',
|
|
'transaksis.tindakan_tarif_total',
|
|
'transaksis.biaya_tambahan',
|
|
'transaksis.catatan',
|
|
'registrasis.nomor_urut',
|
|
'registrasis.registrasi_tanggal',
|
|
'registrasis.pasien_id',
|
|
'pasiens.pasien_nik',
|
|
'pasiens.pasien_name',
|
|
'pasiens.tanggal_lahir',
|
|
'pasiens.jenis_kelamin',
|
|
'registrasis.asuransi_id',
|
|
'asuransis.asuransi_name',
|
|
'registrasis.asuransi_no',
|
|
'registrasis.pegawai_id',
|
|
'pegawais.pegawai_name',
|
|
'registrasis.ruang_pelayanan_id',
|
|
'ruang_pelayanans.ruang_pelayanan_name',
|
|
DB::raw('GROUP_CONCAT(tindakans.tindakan_name SEPARATOR ", ") as tindakan'),
|
|
DB::raw('(transaksis.tindakan_tarif_total + transaksis.biaya_tambahan) total')
|
|
])
|
|
->leftJoin('transaksis', 'transaksis.id', '=', 'transaksi_details.transaksi_id')
|
|
->leftJoin('registrasis', 'registrasis.id', '=', 'transaksis.registrasi_id')
|
|
->leftJoin('pasiens', 'pasiens.id', '=', 'registrasis.pasien_id')
|
|
->leftJoin('asuransis', 'asuransis.id', '=', 'registrasis.asuransi_id')
|
|
->leftJoin('pegawais', 'pegawais.id', '=', 'registrasis.pegawai_id')
|
|
->leftJoin('ruang_pelayanans', 'ruang_pelayanans.id', '=', 'registrasis.ruang_pelayanan_id')
|
|
->leftJoin('tindakans', 'tindakans.id', '=', 'transaksi_details.tindakan_id')
|
|
->where('registrasis.id', $id)
|
|
->groupBy('transaksis.id')
|
|
->first();
|
|
|
|
if($transaksi){
|
|
$data['title'] = 'INVOICE DETAIL';
|
|
$data['transaksi'] = $transaksi;
|
|
|
|
return view('transaksi.detail', $data);
|
|
} else {
|
|
abort(404);
|
|
}
|
|
}
|
|
|
|
public function download_pdf($id)
|
|
{
|
|
$transaksi = Transaksi::select([
|
|
'transaksis.id',
|
|
'transaksis.tindakan_tarif_total',
|
|
'transaksis.biaya_tambahan',
|
|
'transaksis.catatan',
|
|
'registrasis.nomor_urut',
|
|
'registrasis.registrasi_tanggal',
|
|
'registrasis.pasien_id',
|
|
'pasiens.pasien_nik',
|
|
'pasiens.pasien_name',
|
|
'pasiens.tanggal_lahir',
|
|
'pasiens.jenis_kelamin',
|
|
'registrasis.asuransi_id',
|
|
'asuransis.asuransi_name',
|
|
'registrasis.asuransi_no',
|
|
'registrasis.pegawai_id',
|
|
'pegawais.pegawai_name',
|
|
'registrasis.ruang_pelayanan_id',
|
|
'ruang_pelayanans.ruang_pelayanan_name',
|
|
DB::raw('(transaksis.tindakan_tarif_total + transaksis.biaya_tambahan) total'),
|
|
'transaksis.created_at'
|
|
])
|
|
->leftJoin('registrasis', 'registrasis.id', '=', 'transaksis.registrasi_id')
|
|
->leftJoin('pasiens', 'pasiens.id', '=', 'registrasis.pasien_id')
|
|
->leftJoin('asuransis', 'asuransis.id', '=', 'registrasis.asuransi_id')
|
|
->leftJoin('pegawais', 'pegawais.id', '=', 'registrasis.pegawai_id')
|
|
->leftJoin('ruang_pelayanans', 'ruang_pelayanans.id', '=', 'registrasis.ruang_pelayanan_id')
|
|
->where('transaksis.id', $id)
|
|
->first();
|
|
|
|
if($transaksi){
|
|
$transaksi_detail = TransaksiDetail::select([
|
|
'tindakans.tindakan_name',
|
|
'transaksi_details.tarif',
|
|
'transaksi_details.tindakan_id',
|
|
])
|
|
->leftJoin('tindakans', 'tindakans.id', '=', 'transaksi_details.tindakan_id')
|
|
->where('transaksi_id', $id)
|
|
->get();
|
|
|
|
$data['transaksi'] = $transaksi;
|
|
$data['transaksi_detail'] = $transaksi_detail;
|
|
// Render view to PDF
|
|
$pdf = Pdf::loadView('transaksi.pdf', $data);
|
|
return $pdf->stream('transaksi.pdf');
|
|
} else {
|
|
abort(404);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Show the form for editing the specified resource.
|
|
*/
|
|
public function edit(string $id)
|
|
{
|
|
//
|
|
}
|
|
|
|
/**
|
|
* Update the specified resource in storage.
|
|
*/
|
|
public function update(Request $request, string $id)
|
|
{
|
|
//
|
|
}
|
|
|
|
/**
|
|
* Remove the specified resource from storage.
|
|
*/
|
|
public function destroy(string $id)
|
|
{
|
|
//
|
|
}
|
|
}
|