pengeluaran

main-gitea-akuncoa
Zelda Ababil 2024-02-01 15:29:34 +07:00
parent 78e6e30a60
commit 52a37b0bc6
6 changed files with 298 additions and 137 deletions

View File

@ -6,6 +6,7 @@ use App\Http\Controllers\Controller;
use App\Models\BukuBesar; use App\Models\BukuBesar;
use App\Models\Pengeluaran; use App\Models\Pengeluaran;
use App\Models\RekeningCoa; use App\Models\RekeningCoa;
use Carbon\Carbon;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
@ -14,14 +15,16 @@ class PengeluaranController extends Controller
/** /**
* Display a listing of the resource. * Display a listing of the resource.
*/ */
public function index(){ public function index()
{
$coaBiaya = RekeningCoa::where('kode_coa', 5)->get(); $coaBiaya = RekeningCoa::where('kode_coa', 5)->get();
$rekeningCoaTf = RekeningCoa::where('kode_coa', 1)->where('sub_kode_coa', 200)->get(); $rekeningCoaTf = RekeningCoa::where('kode_coa', 1)->where('sub_kode_coa', 200)->get();
return view('pages.admin.pengeluaran.index', compact('coaBiaya', 'rekeningCoaTf')); return view('pages.admin.pengeluaran.index', compact('coaBiaya', 'rekeningCoaTf'));
} }
public function simpan(Request $request){ public function simpan(Request $request)
{
try { try {
DB::beginTransaction(); DB::beginTransaction();
@ -90,7 +93,8 @@ class PengeluaranController extends Controller
} }
} }
public function laporan(Request $request){ public function laporan(Request $request)
{
$mpdf = new \Mpdf\Mpdf([ $mpdf = new \Mpdf\Mpdf([
'mode' => 'utf-8', 'mode' => 'utf-8',
'format' => 'A4', 'format' => 'A4',
@ -117,4 +121,35 @@ class PengeluaranController extends Controller
$mpdf->Output('Laporan_Pengeluaran.pdf', 'I'); $mpdf->Output('Laporan_Pengeluaran.pdf', 'I');
return response()->header('Content-Type', 'application/pdf'); 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);
}
} }

View File

@ -20,8 +20,6 @@
<ul aria-labelledby="dropdownSubMenu1" class="dropdown-menu border-0 shadow"> <ul aria-labelledby="dropdownSubMenu1" class="dropdown-menu border-0 shadow">
<li><a href="#" class="dropdown-item">Order </a></li> <li><a href="#" class="dropdown-item">Order </a></li>
<li><a href="{{ route('pengeluaran.index') }}" class="dropdown-item">Pengeluaran</a></li> <li><a href="{{ route('pengeluaran.index') }}" class="dropdown-item">Pengeluaran</a></li>
<li class="dropdown-divider"></li>
<li><a href="{{ route('laporan.index') }}" class="dropdown-item">Laporan</a></li>
</ul> </ul>
</li> </li>
@canany(['users.index', 'menu.index'], auth()->user()) @canany(['users.index', 'menu.index'], auth()->user())

View File

@ -36,7 +36,8 @@
<input type="date" class="form-control form-control-sm" id="filter_tanggal_2"> <input type="date" class="form-control form-control-sm" id="filter_tanggal_2">
</div> </div>
<div class="col-md-2"> <div class="col-md-2">
<a href="javascript:void(0)" class="btn btn-sm btn-primary" id="btn_filter"><i class="fas fa-search mr-1"></i>Filter data</a> <a href="javascript:void(0)" class="btn btn-sm btn-primary" id="btn_filter"><i
class="fas fa-search mr-1"></i>Filter data</a>
</div> </div>
</div> </div>
</div> </div>
@ -79,4 +80,3 @@
@include('pages.History.style') @include('pages.History.style')
@include('pages.History.js') @include('pages.History.js')

View File

@ -34,7 +34,8 @@
</div> </div>
<div class="col-md-6 mt-3"> <div class="col-md-6 mt-3">
<label>Tanggal</label> <label>Tanggal</label>
<input type="date" class="form-control" id="tanggal" value="{{ date('Y-m-d') }}"> <input type="date" class="form-control" id="tanggal"
value="{{ date('Y-m-d') }}">
</div> </div>
<div class="col-md-6 mt-3"> <div class="col-md-6 mt-3">
<label>Jenis Transaksi</label> <label>Jenis Transaksi</label>
@ -61,7 +62,8 @@
</div> </div>
<div class="col-md-6 mt-3"> <div class="col-md-6 mt-3">
<label>Nominal</label> <label>Nominal</label>
<input type="number" min="0" class="form-control" id="nominal" placeholder="Nominal Pengeluaran"> <input type="number" min="0" class="form-control" id="nominal"
placeholder="Nominal Pengeluaran">
</div> </div>
<div class="col-md-6 mt-3"> <div class="col-md-6 mt-3">
<label>Keterangan</label> <label>Keterangan</label>
@ -75,7 +77,8 @@
@if ($coaTf->status == 0) @if ($coaTf->status == 0)
<optgroup label="{{ $coaTf->coa }} | {{ $coaTf->keterangan_coa }}"> <optgroup label="{{ $coaTf->coa }} | {{ $coaTf->keterangan_coa }}">
@else @else
<option value="{{ $biaya->id }}|{{ $coaTf->coa }}|{{ $coaTf->keterangan_coa }}"> <option
value="{{ $biaya->id }}|{{ $coaTf->coa }}|{{ $coaTf->keterangan_coa }}">
{{ $coaTf->coa }} | {{ $coaTf->keterangan_coa }}</option> {{ $coaTf->coa }} | {{ $coaTf->keterangan_coa }}</option>
@endif @endif
@endforeach @endforeach
@ -103,19 +106,55 @@
</div> </div>
<div class="col-md-4 mt-3"> <div class="col-md-4 mt-3">
<label>Dari Tanggal</label> <label>Dari Tanggal</label>
<input type="date" class="form-control" name="filter_tanggal_1" value="{{ date('Y-m-d') }}"> <input type="date" class="form-control" name="filter_tanggal_1"
id="filter_tanggal_1" value="{{ date('Y-m-d') }}">
</div> </div>
<div class="col-md-4 mt-3"> <div class="col-md-4 mt-3">
<label>Sampai Tanggal</label> <label>Sampai Tanggal</label>
<input type="date" class="form-control" name="filter_tanggal_2" value="{{ date('Y-m-d') }}"> <input type="date" class="form-control" name="filter_tanggal_2"
id="filter_tanggal_2" value="{{ date('Y-m-d') }}">
</div> </div>
<div class="col-md-4 mt-5"> <div class="col-md-4 mt-5">
<button type="submit" class="btn btn-warning" id="filter_laporan">Preview</button> <div class="row">
<a href="javascript:void(0)" class="btn btn-sm btn-primary"
id="btn_filter"><i class="fas fa-search mr-1"></i>Filter
data</a>
<button class="btn btn-sm btn-warning" type="submit" id="filter_laporan"><i
class="fas fa-print mr-1"></i>Cetak</button>
</div> </div>
</div> </div>
</form> </form>
</div> </div>
</div> </div>
<div class="col-md-12">
<div class="table-responsive mt-3">
<table id="tabelku" class="table table-hover display" style="width: 100%">
<thead>
<tr>
<th class="text-center">No</th>
<th>Faktur</th>
<th>Kebutuhan</th>
<th>Jenis Transaksi</th>
<th>Jenis Transaksi</th>
<th>Tanggal Transaksi</th>
<th>User</th>
<th>Nominal</th>
<th class="text-center"><i class="fas fa-cog"></i></th>
</tr>
</thead>
<tfoot>
<tr>
<th class="text-right"></th>
<th class="text-right"></th>
<th class="text-right" colspan="4">Total</th>
<th class="text-right"></th>
<th class="text-center"><i class="fas fa-cog"></i></th>
</tr>
</tfoot>
</table>
</div>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,5 +1,104 @@
@push('scripts') @push('scripts')
<script src="{{ asset('assets/datatables/datatables.min.js') }}"></script>
<script src="{{ asset('assets/plugins/toastr/toastr.min.js') }}"></script> <script src="{{ asset('assets/plugins/toastr/toastr.min.js') }}"></script>
<script>
$(document).ready(function() {
let dataTable = $('#tabelku').DataTable({
aLengthMenu: [
[25, 50, 100, 200, -1],
[25, 50, 100, 200, "All"]
],
processing: true,
serverSide: true,
ajax: {
url: '{{ route('pengeluaran.getDataPengeluaran') }}',
data: function(d) {
d.filter_tanggal_1 = $("#filter_tanggal_1").val();
d.filter_tanggal_2 = $("#filter_tanggal_2").val();
}
},
columns: [{
data: 'nomor',
name: 'nomor',
orderable: false,
className: 'text-center'
},
{
data: 'faktur',
name: 'faktur'
},
{
data: 'keterangan',
name: 'keterangan'
},
{
data: 'jenis_trasaksi',
name: 'jenis_trasaksi',
className: 'text-center',
render: function(data) {
if (data == 1) {
return "Tunai"
} else {
return "Transfer"
}
}
},
{
data: 'tanggal',
name: 'tanggal'
},
{
data: 'user.name',
name: 'user.name'
},
{
data: 'nominal',
name: 'nominal',
className: 'text-right',
render: function(data) {
// change to IDR
return 'Rp. ' + data.toString().replace(/\B(?=(\d{3})+(?!\d))/g, '.');
}
},
{
data: 'ubah',
name: 'ubah',
className: 'text-center'
},
],
footerCallback: function(row, data, start, end, display) {
let api = this.api();
// Remove the formatting to get integer data for summation
let intVal = function(i) {
return typeof i === 'string' ?
i.replace(/[\$,]/g, '') * 1 :
typeof i === 'number' ?
i :
0;
};
// GrandTotal over all pages
totalAll = api
.column(6)
.data()
.reduce((a, b) => intVal(a) + intVal(b), 0);
// Update footer
api.column(6).footer().innerHTML =
'Rp. ' + totalAll.toString().replace(/\B(?=(\d{3})+(?!\d))/g, '.');
}
})
$('#btn_filter').on('click', function() {
if ($("#filter_tanggal_1").val() == "" || $("#filter_tanggal_2").val() == "") {
alert("Input pencarian tidak boleh kosong")
} else {
dataTable.ajax.reload();
}
});
})
</script>
<script> <script>
$(document).ready(function() { $(document).ready(function() {
$('#jenis_transaksi').on('change', function() { $('#jenis_transaksi').on('change', function() {

View File

@ -95,21 +95,11 @@ Route::group(['middleware' => ['auth', 'permission']], function () {
Route::get('/refresh-routes', [RoleController::class, 'refreshRoutes'])->name('roles.refresh-routes')->comment('Refresh Permission Routes'); Route::get('/refresh-routes', [RoleController::class, 'refreshRoutes'])->name('roles.refresh-routes')->comment('Refresh Permission Routes');
}); });
// Roles
Route::group(['prefix' => 'laporan'], function () {
Route::get('/', [LaporanController::class, 'index'])->name('laporan.index')->comment('Halaman Laporan');
Route::get('/create', [LaporanController::class, 'create'])->name('laporan.create')->comment('Halaman Tambah Laporan');
Route::post('/', [LaporanController::class, 'store'])->name('laporan.store')->comment('Tambah Laporan');
Route::get('/edit/{id}', [LaporanController::class, 'edit'])->name('laporan.edit')->comment('Halaman Edit Laporan');
Route::put('/update/{id}', [LaporanController::class, 'update'])->name('laporan.update')->comment('Perbarui Laporan');
Route::delete('/delete/{id}', [LaporanController::class, 'destroy'])->name('laporan.delete')->comment('Menghapus Laporan');
Route::get('/refresh-routes', [LaporanController::class, 'refreshRoutes'])->name('laporan.refresh-routes')->comment('Refresh Permission Routes');
});
// Pengeluaran // Pengeluaran
Route::group(['prefix' => 'pengeluaran'], function () { Route::group(['prefix' => 'pengeluaran'], function () {
Route::get('/', [PengeluaranController::class, 'index'])->name('pengeluaran.index')->comment('Halaman Pengeluaran'); Route::get('/', [PengeluaranController::class, 'index'])->name('pengeluaran.index')->comment('Halaman Pengeluaran');
Route::post('/simpan', [PengeluaranController::class, 'simpan'])->name('pengeluaran.simpan')->comment('Halaman Simpan Pengeluaran'); Route::post('/simpan', [PengeluaranController::class, 'simpan'])->name('pengeluaran.simpan')->comment('Halaman Simpan Pengeluaran');
Route::post('/laporan', [PengeluaranController::class, 'laporan'])->name('pengeluaran.laporan')->comment('Halaman Laporan'); Route::post('/laporan', [PengeluaranController::class, 'laporan'])->name('pengeluaran.laporan')->comment('Halaman Laporan');
Route::get('/getDatapengeluaran', [PengeluaranController::class, 'getDatapengeluaran'])->name('pengeluaran.getDataPengeluaran')->comment("Ambil data Riwayat Transaksi");
}); });
}); });