update tgl 18 april2

This commit is contained in:
whywdd 2025-04-18 02:03:49 +07:00
parent ba94899fa2
commit 8358bb46b8
6 changed files with 348 additions and 34 deletions

View File

@ -15,13 +15,28 @@ class LaporanController extends Controller
public function index()
{
$laporan = LaporanModel::orderBy('Tanggal', 'desc')->get();
$totalUangMasuk = LaporanModel::sum('uang_masuk');
$totalUangKeluar = LaporanModel::sum('uang_keluar');
$totalGaji = LaporanModel::sum('gaji');
$totalKredit = $totalUangKeluar + $totalGaji;
// Hitung total uang masuk (termasuk uang_masuk2-5)
$totalUangMasuk = LaporanModel::selectRaw('SUM(uang_masuk) +
COALESCE(SUM(uang_masuk2), 0) +
COALESCE(SUM(uang_masuk3), 0) +
COALESCE(SUM(uang_masuk4), 0) +
COALESCE(SUM(uang_masuk5), 0) as total')
->value('total') ?? 0;
// Hitung total uang keluar (termasuk uang_keluar2-5)
$totalUangKeluar = LaporanModel::selectRaw('SUM(uang_keluar) +
COALESCE(SUM(uang_keluar2), 0) +
COALESCE(SUM(uang_keluar3), 0) +
COALESCE(SUM(uang_keluar4), 0) +
COALESCE(SUM(uang_keluar5), 0) as total')
->value('total') ?? 0;
// Tidak ada lagi kolom gaji, jadi kita menghilangkannya
$totalKredit = $totalUangKeluar; // Hanya menggunakan total uang keluar
$saldo = $totalUangMasuk - $totalKredit;
return view('Laporan', compact('laporan', 'totalUangMasuk', 'totalUangKeluar', 'totalGaji', 'totalKredit', 'saldo'));
return view('Laporan', compact('laporan', 'totalUangMasuk', 'totalUangKeluar', 'totalKredit', 'saldo'));
}
public function exportExcel()
@ -39,24 +54,38 @@ public function headings(): array
return [
'ID',
'Tanggal',
'Kode',
'Kategori',
'Keterangan',
'Nama Karyawan',
'Uang Masuk',
'Uang Keluar',
'Gaji',
'Uang Keluar'
];
}
public function map($laporan): array
{
// Hitung total uang masuk untuk baris ini
$totalUangMasuk = $laporan->uang_masuk +
($laporan->uang_masuk2 ?? 0) +
($laporan->uang_masuk3 ?? 0) +
($laporan->uang_masuk4 ?? 0) +
($laporan->uang_masuk5 ?? 0);
// Hitung total uang keluar untuk baris ini
$totalUangKeluar = $laporan->uang_keluar +
($laporan->uang_keluar2 ?? 0) +
($laporan->uang_keluar3 ?? 0) +
($laporan->uang_keluar4 ?? 0) +
($laporan->uang_keluar5 ?? 0);
return [
$laporan->id,
$laporan->Tanggal,
$laporan->kode,
$laporan->kategori,
$laporan->keterangan,
$laporan->nama_karyawan,
$laporan->uang_masuk,
$laporan->uang_keluar,
$laporan->gaji,
$totalUangMasuk,
$totalUangKeluar
];
}
};
@ -71,13 +100,26 @@ public function exportPDF()
{
try {
$laporan = LaporanModel::orderBy('Tanggal', 'desc')->get();
$totalUangMasuk = LaporanModel::sum('uang_masuk');
$totalUangKeluar = LaporanModel::sum('uang_keluar');
$totalGaji = LaporanModel::sum('gaji');
$totalKredit = $totalUangKeluar + $totalGaji;
// Hitung total uang masuk
$totalUangMasuk = LaporanModel::selectRaw('SUM(uang_masuk) +
COALESCE(SUM(uang_masuk2), 0) +
COALESCE(SUM(uang_masuk3), 0) +
COALESCE(SUM(uang_masuk4), 0) +
COALESCE(SUM(uang_masuk5), 0) as total')
->value('total') ?? 0;
// Hitung total uang keluar
$totalKredit = LaporanModel::selectRaw('SUM(uang_keluar) +
COALESCE(SUM(uang_keluar2), 0) +
COALESCE(SUM(uang_keluar3), 0) +
COALESCE(SUM(uang_keluar4), 0) +
COALESCE(SUM(uang_keluar5), 0) as total')
->value('total') ?? 0;
$saldo = $totalUangMasuk - $totalKredit;
// Generate PDF langsung menggunakan HTML inline
// Generate PDF
$html = '
<!DOCTYPE html>
<html>
@ -120,25 +162,39 @@ public function exportPDF()
<tr>
<th>No</th>
<th>Tanggal</th>
<th>Kode</th>
<th>Kategori</th>
<th>Keterangan</th>
<th>Nama Karyawan</th>
<th>Uang Masuk</th>
<th>Uang Keluar</th>
<th>Gaji</th>
</tr>
</thead>
<tbody>';
foreach($laporan as $index => $item) {
// Hitung total uang masuk untuk baris ini
$rowUangMasuk = $item->uang_masuk +
($item->uang_masuk2 ?? 0) +
($item->uang_masuk3 ?? 0) +
($item->uang_masuk4 ?? 0) +
($item->uang_masuk5 ?? 0);
// Hitung total uang keluar untuk baris ini
$rowUangKeluar = $item->uang_keluar +
($item->uang_keluar2 ?? 0) +
($item->uang_keluar3 ?? 0) +
($item->uang_keluar4 ?? 0) +
($item->uang_keluar5 ?? 0);
$html .= '
<tr>
<td>'.($index + 1).'</td>
<td>'.$item->Tanggal.'</td>
<td>'.$item->kode.'</td>
<td>'.$item->kategori.'</td>
<td>'.$item->keterangan.'</td>
<td>'.$item->nama_karyawan.'</td>
<td>Rp '.number_format($item->uang_masuk, 0, ',', '.').'</td>
<td>Rp '.number_format($item->uang_keluar, 0, ',', '.').'</td>
<td>Rp '.number_format($item->gaji, 0, ',', '.').'</td>
<td>Rp '.number_format($rowUangMasuk, 0, ',', '.').'</td>
<td>Rp '.number_format($rowUangKeluar, 0, ',', '.').'</td>
</tr>';
}
@ -155,14 +211,6 @@ public function exportPDF()
</tr>
<tr>
<td><strong>Total Uang Keluar</strong></td>
<td>Rp '.number_format($totalUangKeluar, 0, ',', '.').'</td>
</tr>
<tr>
<td><strong>Total Gaji</strong></td>
<td>Rp '.number_format($totalGaji, 0, ',', '.').'</td>
</tr>
<tr>
<td><strong>Total Kredit</strong></td>
<td>Rp '.number_format($totalKredit, 0, ',', '.').'</td>
</tr>
<tr>

View File

@ -0,0 +1,136 @@
<?php
namespace App\Http\Controllers;
use App\Models\NeracasaldoModel;
use Illuminate\Http\Request;
class NeracasaldoController extends Controller
{
public function index()
{
$rawTransaksis = NeracasaldoModel::orderBy('kode', 'asc')->get();
$transaksis = collect();
foreach ($rawTransaksis as $transaksi) {
// Menambahkan baris untuk kode utama
if ($transaksi->kode) {
$transaksis->push([
'kode' => $transaksi->kode,
'kategori' => $transaksi->kategori,
'keterangan' => $transaksi->keterangan,
'nama_karyawan' => $transaksi->nama_karyawan,
'debit' => $transaksi->uang_masuk,
'kredit' => $transaksi->uang_keluar,
'id' => $transaksi->id
]);
}
// Menambahkan baris untuk kode2
if ($transaksi->kode2) {
$transaksis->push([
'kode' => $transaksi->kode2,
'kategori' => $transaksi->kategori2,
'keterangan' => $transaksi->keterangan,
'nama_karyawan' => $transaksi->nama_karyawan,
'debit' => $transaksi->uang_masuk2,
'kredit' => $transaksi->uang_keluar2,
'id' => $transaksi->id
]);
}
// Menambahkan baris untuk kode3
if ($transaksi->kode3) {
$transaksis->push([
'kode' => $transaksi->kode3,
'kategori' => $transaksi->kategori3,
'keterangan' => $transaksi->keterangan,
'nama_karyawan' => $transaksi->nama_karyawan,
'debit' => $transaksi->uang_masuk3,
'kredit' => $transaksi->uang_keluar3,
'id' => $transaksi->id
]);
}
// Menambahkan baris untuk kode4
if ($transaksi->kode4) {
$transaksis->push([
'kode' => $transaksi->kode4,
'kategori' => $transaksi->kategori4,
'keterangan' => $transaksi->keterangan,
'nama_karyawan' => $transaksi->nama_karyawan,
'debit' => $transaksi->uang_masuk4,
'kredit' => $transaksi->uang_keluar4,
'id' => $transaksi->id
]);
}
// Menambahkan baris untuk kode5
if ($transaksi->kode5) {
$transaksis->push([
'kode' => $transaksi->kode5,
'kategori' => $transaksi->kategori5,
'keterangan' => $transaksi->keterangan,
'nama_karyawan' => $transaksi->nama_karyawan,
'debit' => $transaksi->uang_masuk5,
'kredit' => $transaksi->uang_keluar5,
'id' => $transaksi->id
]);
}
}
// Mengurutkan berdasarkan kode
$transaksis = $transaksis->sortBy('kode');
return view('Neracasaldo', compact('transaksis'));
}
public function create()
{
return view('neracasaldo.create');
}
public function store(Request $request)
{
$request->validate([
'Tanggal' => 'required|date',
'kode' => 'required|string',
'kategori' => 'required|string',
]);
NeracasaldoModel::create($request->all());
return redirect()->route('neracasaldo.index')
->with('success', 'Data berhasil ditambahkan');
}
public function edit($id)
{
$transaksi = NeracasaldoModel::findOrFail($id);
return view('neracasaldo.edit', compact('transaksi'));
}
public function update(Request $request, $id)
{
$request->validate([
'Tanggal' => 'required|date',
'kode' => 'required|string',
'kategori' => 'required|string',
]);
$transaksi = NeracasaldoModel::findOrFail($id);
$transaksi->update($request->all());
return redirect()->route('neracasaldo.index')
->with('success', 'Data berhasil diperbarui');
}
public function destroy($id)
{
$transaksi = NeracasaldoModel::findOrFail($id);
$transaksi->delete();
return redirect()->route('neracasaldo.index')
->with('success', 'Data berhasil dihapus');
}
}

View File

@ -25,12 +25,26 @@ class LaporanModel extends Model
protected $fillable = [
'Tanggal',
'kode',
'kode2',
'kode3',
'kode4',
'kode5',
'kategori',
'kategori2',
'kategori3',
'kategori4',
'kategori5',
'keterangan',
'nama_karyawan',
'uang_masuk',
'uang_masuk2',
'uang_masuk3',
'uang_masuk4',
'uang_masuk5',
'uang_keluar',
'gaji'
'uang_keluar2',
'uang_keluar3',
'uang_keluar4',
'uang_keluar5'
];
// Timestamps
@ -43,7 +57,14 @@ class LaporanModel extends Model
protected $casts = [
'Tanggal' => 'date',
'uang_masuk' => 'decimal:2',
'uang_masuk2' => 'decimal:2',
'uang_masuk3' => 'decimal:2',
'uang_masuk4' => 'decimal:2',
'uang_masuk5' => 'decimal:2',
'uang_keluar' => 'decimal:2',
'gaji' => 'decimal:2',
'uang_keluar2' => 'decimal:2',
'uang_keluar3' => 'decimal:2',
'uang_keluar4' => 'decimal:2',
'uang_keluar5' => 'decimal:2'
];
}

View File

@ -0,0 +1,36 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class NeracasaldoModel extends Model
{
protected $table = 'laporan_transaksis';
protected $fillable = [
'Tanggal',
'kode', 'kode2', 'kode3', 'kode4', 'kode5',
'kategori', 'kategori2', 'kategori3', 'kategori4', 'kategori5',
'keterangan',
'nama_karyawan',
'uang_masuk', 'uang_masuk2', 'uang_masuk3', 'uang_masuk4', 'uang_masuk5',
'uang_keluar', 'uang_keluar2', 'uang_keluar3', 'uang_keluar4', 'uang_keluar5',
'gaji'
];
protected $casts = [
'Tanggal' => 'date',
'uang_masuk' => 'decimal:2',
'uang_masuk2' => 'decimal:2',
'uang_masuk3' => 'decimal:2',
'uang_masuk4' => 'decimal:2',
'uang_masuk5' => 'decimal:2',
'uang_keluar' => 'decimal:2',
'uang_keluar2' => 'decimal:2',
'uang_keluar3' => 'decimal:2',
'uang_keluar4' => 'decimal:2',
'uang_keluar5' => 'decimal:2',
'gaji' => 'decimal:2'
];
}

View File

@ -0,0 +1,71 @@
@extends('Core.Sidebar')
@section('content')
<title>Buku Besar Perusahaan Dagang</title>
<!-- Tailwind CSS -->
<script src="https://cdn.tailwindcss.com"></script>
<!-- Font Awesome -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css">
<!-- CSRF Token -->
<meta name="csrf-token" content="{{ csrf_token() }}">
<div class="box p-4 intro-y mt-5">
<div class="intro-y">
<!-- Header -->
<div class="mb-4 bg-blue-600 text-white p-4 rounded-lg shadow-md">
<h1 class="text-2xl font-bold">Neraca Saldo Perusahaan Dagang</h1>
<p class="text-sm mt-1">Entri Neraca Saldo Budivespaendut</p>
<p class="text-sm">Anggrek</p>
</div>
<!-- Tabel Transaksi -->
<div class="overflow-x-auto">
<table class="w-full bg-white border border-gray-300">
<thead>
<tr class="bg-gray-100 text-gray-600 uppercase text-sm leading-normal">
<th class="py-3 px-4 text-left">Kode</th>
<th class="py-3 px-4 text-left">Kategori</th>
<th class="py-3 px-4 text-left">Keterangan</th>
<th class="py-3 px-4 text-right">Debit</th>
<th class="py-3 px-4 text-right">Kredit</th>
<th class="py-3 px-4 text-center">Aksi</th>
</tr>
</thead>
<tbody>
@foreach($transaksis as $transaksi)
<tr class="border-b border-gray-200 hover:bg-gray-100">
<td class="py-3 px-4">{{ $transaksi['kode'] }}</td>
<td class="py-3 px-4">{{ $transaksi['kategori'] }}</td>
<td class="py-3 px-4">{{ $transaksi['keterangan'] }}</td>
<td class="py-3 px-4 text-right">
@if($transaksi['debit'] > 0)
{{ number_format($transaksi['debit'], 2) }}
@endif
</td>
<td class="py-3 px-4 text-right">
@if($transaksi['kredit'] > 0)
{{ number_format($transaksi['kredit'], 2) }}
@endif
</td>
<td class="py-3 px-4 text-center">
<div class="flex item-center justify-center">
<a href="{{ route('neracasaldo.edit', $transaksi['id']) }}" class="w-4 mr-2 transform hover:text-purple-500 hover:scale-110">
<i class="fas fa-edit"></i>
</a>
<form action="{{ route('neracasaldo.destroy', $transaksi['id']) }}" method="POST" class="inline">
@csrf
@method('DELETE')
<button type="submit" class="w-4 mr-2 transform hover:text-red-500 hover:scale-110" onclick="return confirm('Apakah Anda yakin ingin menghapus data ini?')">
<i class="fas fa-trash"></i>
</button>
</form>
</div>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
@endsection

View File

@ -15,6 +15,7 @@
use App\Http\Controllers\UserController;
use App\Http\Controllers\AuthController;
use App\Http\Controllers\RekeningController;
use App\Http\Controllers\NeracasaldoController;
/*
|--------------------------------------------------------------------------
| Web Routes
@ -67,4 +68,5 @@
Route::delete('/rekening/{id}', [RekeningController::class, 'destroy'])->name('rekening.destroy');
Route::get('/rekening/export-excel', [RekeningController::class, 'exportExcel'])->name('rekening.export-excel');
Route::get('/rekening/export-pdf', [RekeningController::class, 'exportPDF'])->name('rekening.export-pdf');
Route::resource('neracasaldo', NeracasaldoController::class);
});