Files
expense/resources/views/backend/pages/report/generate_jurnal.blade.php
T

276 lines
14 KiB
PHP
Raw Normal View History

2025-01-14 14:15:32 +07:00
@extends('layouts.app')
@section('title')
{{ $pageInfo['title'] }}
@endsection
@section('admin-content')
2026-06-01 15:01:03 +07:00
<section class="content-header">
<div class="container-fluid">
<div class="row mb-3">
2025-01-14 14:15:32 +07:00
<div class="col-sm-6">
2026-06-01 15:01:03 +07:00
<h1 class="fw-bold">{{ $pageInfo['title'] }}</h1>
2025-01-14 14:15:32 +07:00
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
2026-06-01 15:01:03 +07:00
<li class="breadcrumb-item"><a href="{{ route('admin.dashboard') }}">{{ __('Dashboard') }}</a></li>
<li class="breadcrumb-item active">{{ $pageInfo['title'] }}</li>
2025-01-14 14:15:32 +07:00
</ol>
</div>
</div>
2026-06-01 15:01:03 +07:00
<div class="row mt-4">
<div class="col-12">
<div class="card shadow-sm" style="border-radius: 15px;">
2025-01-14 14:15:32 +07:00
<div class="card-body">
2026-06-01 15:01:03 +07:00
<div class="row">
<div class="col-md-8">
<ul class="list-unstyled">
<li><b>Cabang:</b> {{ $cabang->name }}</li>
<li>
<b>Periode:</b> {{ ucfirst($month) }} {{ $year }}
<span class="ml-4"><b>Periode Accounting:</b> {{ request()->accounting_period ?? '-' }}</span>
</li>
<li><b>Cost Centre:</b> {{ $cabang->cost->code }}</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
2025-01-14 14:15:32 +07:00
2026-06-01 15:01:03 +07:00
@php
/**
* PEMBARUAN LOGIKA:
* 1. Building Maintenance Dihapus
* 2. Presentation Ditambahkan di urutan ke-7
* 3. Account Number disesuaikan dengan image_01e273.png
*/
$configJurnal = [
['name' => 'Telp./ Fax / Email', 'account' => '800 104 00'],
['name' => 'Listrik', 'account' => '800 105 00'],
['name' => 'Postages / Courier', 'account' => '800 107 00'],
['name' => 'Office Supplies / Bank Changes / Interest', 'account' => '800 108 00'],
['name' => 'Relokasi', 'account' => '800 111 00'],
['name' => 'Meeting / Seminar', 'account' => '800 201 00'],
['name' => 'Presentation', 'account' => '800 304 00'], // Urutan ke-7
['name' => 'Up Country', 'account' => '800 305 00'],
['name' => 'Vehicle Running Cost', 'account' => '800 306 00'],
['name' => 'Field Force', 'account' => '800 308 00'],
['name' => 'Entertainment', 'account' => '800 309 00'],
['name' => 'Rumah Tangga', 'account' => '800 213 00'],
];
2025-01-14 14:15:32 +07:00
2026-06-01 15:01:03 +07:00
$totalDr = 0;
$totalCr = 0;
$counter = 1;
2025-10-12 18:29:07 +07:00
2026-06-01 15:01:03 +07:00
// Mencari ID Kategori berdasarkan nama untuk mengambil nilai dari array $nominals
$kategoriCollection = collect($kategori);
@endphp
2025-10-12 18:29:07 +07:00
2026-06-01 15:01:03 +07:00
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card shadow-sm" style="border-radius: 15px;">
<div class="card-body">
<div class="table-responsive">
@include('backend.layouts.partials.messages')
<table id="dataTable-table" class="table table-hover w-100">
<thead class="bg-light text-capitalize">
<tr>
<th>#</th>
<th>Type</th>
<th>Account Number</th>
<th>Dr</th>
<th>Cr</th>
</tr>
</thead>
<tbody>
{{-- 1 - 12: Loop berdasarkan config yang sudah diurutkan --}}
@foreach ($configJurnal as $conf)
@php
// Ambil objek kategori dari database yang namanya cocok
$katObj = $kategoriCollection->where('name', $conf['name'])->first();
$drValue = $katObj ? ($nominals[$katObj->id] ?? 0) : 0;
$totalDr += $drValue;
@endphp
<tr>
<td>{{ $counter++ }}</td>
<td>{{ $conf['name'] }}</td>
<td>{{ $conf['account'] }}</td>
<td class="text-right">{{ $drValue == 0 ? '' : number_format($drValue, 0, ',', '.') }}</td>
<td></td>
</tr>
@endforeach
2025-01-14 14:15:32 +07:00
2026-06-01 15:01:03 +07:00
{{-- 13: Cash in Bank BCA --}}
@php
$cashInBankValue = $pettyCashAmount - $totalKategori;
@endphp
<tr>
<td>{{ $counter++ }}</td>
<td>Cash in Bank BCA</td>
<td>170 600 00</td>
@if ($cashInBankValue >= 0)
@php $totalDr += $cashInBankValue; @endphp
<td class="text-right">{{ $cashInBankValue == 0 ? '' : number_format($cashInBankValue, 0, ',', '.') }}</td>
<td></td>
@else
@php $totalCr += abs($cashInBankValue); @endphp
<td></td>
<td class="text-right">{{ number_format(abs($cashInBankValue), 0, ',', '.') }}</td>
@endif
</tr>
2025-01-15 22:29:07 +07:00
2026-06-01 15:01:03 +07:00
{{-- 14: Petty Cash --}}
<tr>
<td>{{ $counter++ }}</td>
<td>Petty Cash</td>
<td></td>
<td></td>
<td class="text-right">
@php $totalCr += $pettyCashAmount; @endphp
{{ $pettyCashAmount == 0 ? '' : number_format($pettyCashAmount, 0, ',', '.') }}
</td>
</tr>
2025-01-14 14:15:32 +07:00
2026-06-01 15:01:03 +07:00
{{-- 15: Cash Advance (Opening) --}}
<tr>
<td>{{ $counter++ }}</td>
<td>Cash Advance (Opening Balance)</td>
<td>170 600 00</td>
<td></td>
<td class="text-right">
@php $totalCr += 500000; @endphp
{{ number_format(500000, 0, ',', '.') }}
</td>
</tr>
2025-01-14 14:15:32 +07:00
2026-06-01 15:01:03 +07:00
{{-- 16: Cash Advance (Ending) --}}
<tr>
<td>{{ $counter++ }}</td>
<td>Cash Advance (Ending Balance)</td>
<td>170 600 00</td>
<td class="text-right">
@php $totalDr += 500000; @endphp
{{ number_format(500000, 0, ',', '.') }}
</td>
<td></td>
</tr>
</tbody>
<tfoot class="bg-light">
<tr>
<td colspan="3" class="text-right"><strong>Total</strong></td>
<td class="text-right"><strong>{{ number_format($totalDr, 0, ',', '.') }}</strong></td>
<td class="text-right"><strong>{{ number_format($totalCr, 0, ',', '.') }}</strong></td>
</tr>
</tfoot>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
2025-01-14 14:15:32 +07:00
@endsection
@section('scripts')
<script>
2026-06-01 15:01:03 +07:00
$(document).ready(function() {
if ($('#dataTable-table').length) {
$('#dataTable-table').DataTable({
responsive: false,
dom: 'Blfrtip',
paging: false,
info: false,
buttons: [
{
extend: 'excelHtml5',
text: '<i class="fas fa-file-excel mr-1"></i> Export Excel',
className: 'btn-success',
title: 'Generate Reports For Jurnal',
exportOptions: {
columns: [0, 1, 2, 3, 4],
format: {
body: function (data, row, column, node) {
// Bersihkan titik ribuan agar jadi angka murni di Excel
if (column === 3 || column === 4) {
return data ? data.replace(/[.]/g, '') : '';
}
return data;
}
}
},
customize: function (xlsx) {
var sheet = xlsx.xl.worksheets['sheet1.xml'];
var numrows = 5; // Jumlah baris yang akan ditambahkan di atas
var clRow = $('row', sheet);
2025-01-19 14:57:01 +07:00
2026-06-01 15:01:03 +07:00
// Update index baris yang sudah ada
clRow.each(function () {
var attr = $(this).attr('r');
var ind = parseInt(attr);
$(this).attr('r', ind + numrows);
});
2025-01-19 15:39:31 +07:00
2026-06-01 15:01:03 +07:00
// Update referensi cell (A1 -> A6, dsb)
$('row c', sheet).each(function () {
var attr = $(this).attr('r');
var pre = attr.substring(0, 1);
var ind = parseInt(attr.substring(1));
$(this).attr('r', pre + (ind + numrows));
});
2025-01-19 15:39:31 +07:00
2026-06-01 15:01:03 +07:00
// Fungsi untuk membuat baris XML baru
function createRow(index, value) {
return '<row r="' + index + '"><c r="A' + index + '" t="inlineStr"><is><t>' + value + '</t></is></c></row>';
}
2025-01-19 15:39:31 +07:00
2026-06-01 15:01:03 +07:00
// Tambahkan data informasi di baris atas
var r1 = createRow(1, 'Cabang: {{ $cabang->name }}');
var r2 = createRow(2, 'Periode: {{ ucfirst($month) }} {{ $year }}');
var r3 = createRow(3, 'Periode Accounting: {{ request()->accounting_period ?? "-" }}');
var r4 = createRow(4, 'Cost Centre: {{ $cabang->cost->code }}');
var r5 = createRow(5, ''); // Baris kosong sebagai pemisah
2025-03-06 16:24:55 +07:00
2026-06-01 15:01:03 +07:00
var sheetData = $(sheet).find('sheetData');
sheetData.prepend(r1 + r2 + r3 + r4 + r5);
2025-01-18 15:26:50 +07:00
}
2026-06-01 15:01:03 +07:00
},
{
extend: 'pdfHtml5',
text: '<i class="fas fa-file-pdf mr-1"></i> Export PDF',
className: 'btn-danger',
orientation: 'landscape',
pageSize: 'A4',
title: 'Generate Reports For Jurnal',
exportOptions: { columns: [0, 1, 2, 3, 4] },
customize: function (doc) {
// Menambahkan metadata di atas tabel PDF
doc.content.splice(0, 0, {
margin: [0, 0, 0, 12],
alignment: 'left',
text: [
{ text: 'Cabang: {{ $cabang->name }}\n', bold: true },
{ text: 'Periode: {{ ucfirst($month) }} {{ $year }}\n' },
{ text: 'Periode Accounting: {{ request()->accounting_period ?? "-" }}\n' },
{ text: 'Cost Centre: {{ $cabang->cost->code }}\n' }
]
});
}
},
{ extend: 'print', text: 'Print', className: 'btn-dark' },
'colvis'
]
});
}
});
2025-01-15 20:33:51 +07:00
</script>
2026-06-01 15:01:03 +07:00
@endsection