update lagi tgl 26
This commit is contained in:
parent
6597e856c0
commit
7e6fa9d63b
|
@ -51,10 +51,10 @@ private function generateKode($kategori)
|
||||||
// Tentukan kode dasar berdasarkan kategori
|
// Tentukan kode dasar berdasarkan kategori
|
||||||
$kodeDasar = 0;
|
$kodeDasar = 0;
|
||||||
switch ($kategori) {
|
switch ($kategori) {
|
||||||
case 'utang_gaji':
|
case 'utang gaji':
|
||||||
$kodeDasar = 2;
|
$kodeDasar = 2;
|
||||||
break;
|
break;
|
||||||
case 'beban_gaji':
|
case 'beban gaji':
|
||||||
$kodeDasar = 5;
|
$kodeDasar = 5;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -6,7 +6,9 @@
|
||||||
use App\Models\LaporanModel;
|
use App\Models\LaporanModel;
|
||||||
use Barryvdh\DomPDF\Facade\Pdf;
|
use Barryvdh\DomPDF\Facade\Pdf;
|
||||||
use Maatwebsite\Excel\Facades\Excel;
|
use Maatwebsite\Excel\Facades\Excel;
|
||||||
use App\Exports\LaporanExport;
|
use Maatwebsite\Excel\Concerns\FromCollection;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithHeadings;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithMapping;
|
||||||
|
|
||||||
class LaporanController extends Controller
|
class LaporanController extends Controller
|
||||||
{
|
{
|
||||||
|
@ -24,27 +26,158 @@ public function index()
|
||||||
|
|
||||||
public function exportExcel()
|
public function exportExcel()
|
||||||
{
|
{
|
||||||
return Excel::download(new LaporanExport, 'laporan-keuangan-'.date('Y-m-d').'.xlsx');
|
try {
|
||||||
|
// Buat class export inline
|
||||||
|
$export = new class implements FromCollection, WithHeadings, WithMapping {
|
||||||
|
public function collection()
|
||||||
|
{
|
||||||
|
return LaporanModel::orderBy('Tanggal', 'desc')->get();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function headings(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'ID',
|
||||||
|
'Tanggal',
|
||||||
|
'Keterangan',
|
||||||
|
'Nama Karyawan',
|
||||||
|
'Uang Masuk',
|
||||||
|
'Uang Keluar',
|
||||||
|
'Gaji',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function map($laporan): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
$laporan->id,
|
||||||
|
$laporan->Tanggal,
|
||||||
|
$laporan->keterangan,
|
||||||
|
$laporan->nama_karyawan,
|
||||||
|
$laporan->uang_masuk,
|
||||||
|
$laporan->uang_keluar,
|
||||||
|
$laporan->gaji,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return Excel::download($export, 'laporan-keuangan-'.date('Y-m-d').'.xlsx');
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
return redirect()->back()->with('error', 'Gagal mengekspor Excel: ' . $e->getMessage());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function exportPDF()
|
public function exportPDF()
|
||||||
{
|
{
|
||||||
$laporan = LaporanModel::orderBy('Tanggal', 'desc')->get();
|
try {
|
||||||
$totalUangMasuk = LaporanModel::sum('uang_masuk');
|
$laporan = LaporanModel::orderBy('Tanggal', 'desc')->get();
|
||||||
$totalUangKeluar = LaporanModel::sum('uang_keluar');
|
$totalUangMasuk = LaporanModel::sum('uang_masuk');
|
||||||
$totalGaji = LaporanModel::sum('gaji');
|
$totalUangKeluar = LaporanModel::sum('uang_keluar');
|
||||||
$totalKredit = $totalUangKeluar + $totalGaji;
|
$totalGaji = LaporanModel::sum('gaji');
|
||||||
$saldo = $totalUangMasuk - $totalKredit;
|
$totalKredit = $totalUangKeluar + $totalGaji;
|
||||||
|
$saldo = $totalUangMasuk - $totalKredit;
|
||||||
$pdf = PDF::loadView('laporan-pdf', compact(
|
|
||||||
'laporan',
|
// Generate PDF langsung menggunakan HTML inline
|
||||||
'totalUangMasuk',
|
$html = '
|
||||||
'totalUangKeluar',
|
<!DOCTYPE html>
|
||||||
'totalGaji',
|
<html>
|
||||||
'totalKredit',
|
<head>
|
||||||
'saldo'
|
<title>Laporan Keuangan</title>
|
||||||
));
|
<style>
|
||||||
|
body {
|
||||||
return $pdf->download('laporan-keuangan-'.date('Y-m-d').'.pdf');
|
font-family: Arial, sans-serif;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
table {
|
||||||
|
width: 100%;
|
||||||
|
border-collapse: collapse;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
table, th, td {
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
}
|
||||||
|
th, td {
|
||||||
|
padding: 8px;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
th {
|
||||||
|
background-color: #f2f2f2;
|
||||||
|
}
|
||||||
|
.summary {
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
.summary table {
|
||||||
|
width: 300px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h2>Laporan Keuangan</h2>
|
||||||
|
<p>Tanggal: '.date('d-m-Y').'</p>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>No</th>
|
||||||
|
<th>Tanggal</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) {
|
||||||
|
$html .= '
|
||||||
|
<tr>
|
||||||
|
<td>'.($index + 1).'</td>
|
||||||
|
<td>'.$item->Tanggal.'</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>
|
||||||
|
</tr>';
|
||||||
|
}
|
||||||
|
|
||||||
|
$html .= '
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="summary">
|
||||||
|
<h3>Ringkasan</h3>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Total Uang Masuk</strong></td>
|
||||||
|
<td>Rp '.number_format($totalUangMasuk, 0, ',', '.').'</td>
|
||||||
|
</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>
|
||||||
|
<td><strong>Saldo</strong></td>
|
||||||
|
<td>Rp '.number_format($saldo, 0, ',', '.').'</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>';
|
||||||
|
|
||||||
|
$pdf = PDF::loadHTML($html);
|
||||||
|
return $pdf->download('laporan-keuangan-'.date('Y-m-d').'.pdf');
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
return redirect()->back()->with('error', 'Gagal mengekspor PDF: ' . $e->getMessage());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -54,16 +54,19 @@ private function generateKode($kategori)
|
||||||
case 'kas':
|
case 'kas':
|
||||||
$kodeDasar = 1;
|
$kodeDasar = 1;
|
||||||
break;
|
break;
|
||||||
case 'utang_usaha':
|
case 'utang usaha':
|
||||||
$kodeDasar = 2;
|
$kodeDasar = 2;
|
||||||
break;
|
break;
|
||||||
case 'utang_bank':
|
case 'utang bank':
|
||||||
$kodeDasar = 2;
|
$kodeDasar = 2;
|
||||||
break;
|
break;
|
||||||
case 'beban_listrik':
|
case 'modal usaha':
|
||||||
|
$kodeDasar = 3;
|
||||||
|
break;
|
||||||
|
case 'beban listrik':
|
||||||
$kodeDasar = 5;
|
$kodeDasar = 5;
|
||||||
break;
|
break;
|
||||||
case 'beban_sewa':
|
case 'beban sewa':
|
||||||
$kodeDasar = 5;
|
$kodeDasar = 5;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -54,13 +54,13 @@ private function generateKode($kategori)
|
||||||
case 'kas':
|
case 'kas':
|
||||||
$kodeDasar = 1;
|
$kodeDasar = 1;
|
||||||
break;
|
break;
|
||||||
case 'modal_pemilik':
|
case 'modal pemilik':
|
||||||
$kodeDasar = 3;
|
$kodeDasar = 3;
|
||||||
break;
|
break;
|
||||||
case 'pendapatan_penjualan':
|
case 'pendapatan penjualan':
|
||||||
$kodeDasar = 4;
|
$kodeDasar = 4;
|
||||||
break;
|
break;
|
||||||
case 'pendapatan_jasa':
|
case 'pendapatan jasa':
|
||||||
$kodeDasar = 4; // Jika ada kode yang sama, bisa disesuaikan
|
$kodeDasar = 4; // Jika ada kode yang sama, bisa disesuaikan
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -2,11 +2,11 @@
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
|
|
||||||
<div class="max-w-full bg-white rounded-lg shadow-sm dark:bg-gray-800 p-6">
|
<div class="max-w-full bg-gradient-to-br from-indigo-50 to-blue-50 rounded-lg shadow-md dark:bg-gray-800 p-6">
|
||||||
<!-- Menambahkan elemen select di atas tampilan -->
|
<!-- Menambahkan elemen select di atas tampilan dengan desain yang lebih menarik -->
|
||||||
<div class="flex justify-between items-center mb-4">
|
<div class="flex justify-between items-center mb-6">
|
||||||
<h2 class="text-xl font-semibold">Dashboard</h2>
|
<h2 class="text-xl font-bold text-indigo-700 dark:text-white">Dashboard</h2>
|
||||||
<select class="sm:ml-auto mt-3 sm:mt-0 sm:w-auto form-select box">
|
<select class="sm:ml-auto mt-3 sm:mt-0 sm:w-auto form-select box bg-white border border-indigo-200 rounded-lg text-indigo-600 font-medium focus:ring-2 focus:ring-indigo-300 focus:border-indigo-300">
|
||||||
<option value="daily">Daily</option>
|
<option value="daily">Daily</option>
|
||||||
<option value="weekly">Weekly</option>
|
<option value="weekly">Weekly</option>
|
||||||
<option value="monthly">Monthly</option>
|
<option value="monthly">Monthly</option>
|
||||||
|
@ -15,22 +15,23 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex justify-between pb-4 mb-4 border-b border-gray-200 dark:border-gray-700">
|
<!-- Card dengan desain yang lebih modern dan berwarna -->
|
||||||
|
<div class="flex justify-between pb-4 mb-4 border-b border-indigo-100 dark:border-gray-700 bg-white rounded-xl p-4 shadow-sm">
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
<div class="w-12 h-12 rounded-lg bg-gray-100 dark:bg-gray-700 flex items-center justify-center me-3">
|
<div class="w-12 h-12 rounded-lg bg-indigo-100 dark:bg-indigo-700 flex items-center justify-center me-3">
|
||||||
<svg class="w-6 h-6 text-gray-500 dark:text-gray-400" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 20 19">
|
<svg class="w-6 h-6 text-indigo-600 dark:text-indigo-300" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 20 19">
|
||||||
<path d="M14.5 0A3.987 3.987 0 0 0 11 2.1a4.977 4.977 0 0 1 3.9 5.858A3.989 3.989 0 0 0 14.5 0ZM9 13h2a4 4 0 0 1 4 4v2H5v-2a4 4 0 0 1 4-4Z"/>
|
<path d="M14.5 0A3.987 3.987 0 0 0 11 2.1a4.977 4.977 0 0 1 3.9 5.858A3.989 3.989 0 0 0 14.5 0ZM9 13h2a4 4 0 0 1 4 4v2H5v-2a4 4 0 0 1 4-4Z"/>
|
||||||
<path d="M5 19h10v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2ZM5 7a5.008 5.008 0 0 1 4-4.9 3.988 3.988 0 1 0-3.9 5.859A4.974 4.974 0 0 1 5 7Zm5 3a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm5-1h-.424a5.016 5.016 0 0 1-1.942 2.232A6.007 6.007 0 0 1 17 17h2a1 1 0 0 0 1-1v-2a5.006 5.006 0 0 0-5-5ZM5.424 9H5a5.006 5.006 0 0 0-5 5v2a1 1 0 0 0 1 1h2a6.007 6.007 0 0 1 4.366-5.768A5.016 5.016 0 0 1 5.424 9Z"/>
|
<path d="M5 19h10v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2ZM5 7a5.008 5.008 0 0 1 4-4.9 3.988 3.988 0 1 0-3.9 5.859A4.974 4.974 0 0 1 5 7Zm5 3a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm5-1h-.424a5.016 5.016 0 0 1-1.942 2.232A6.007 6.007 0 0 1 17 17h2a1 1 0 0 0 1-1v-2a5.006 5.006 0 0 0-5-5ZM5.424 9H5a5.006 5.006 0 0 0-5 5v2a1 1 0 0 0 1 1h2a6.007 6.007 0 0 1 4.366-5.768A5.016 5.016 0 0 1 5.424 9Z"/>
|
||||||
</svg>
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h5 class="leading-none text-2xl font-bold text-gray-900 dark:text-white pb-1">3.4k</h5>
|
<h5 class="leading-none text-2xl font-bold text-indigo-800 dark:text-white pb-1">3.4k</h5>
|
||||||
<p class="text-sm font-normal text-gray-500 dark:text-gray-400">Leads generated per week</p>
|
<p class="text-sm font-medium text-indigo-500 dark:text-indigo-300">Leads generated per week</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span class="bg-green-100 text-green-800 text-xs font-medium inline-flex items-center px-2.5 py-1 rounded-md dark:bg-green-900 dark:text-green-300">
|
<span class="bg-emerald-100 text-emerald-600 text-xs font-bold inline-flex items-center px-3 py-1.5 rounded-lg dark:bg-emerald-900 dark:text-emerald-300">
|
||||||
<svg class="w-2.5 h-2.5 me-1.5" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 10 14">
|
<svg class="w-3 h-3 me-1.5" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 10 14">
|
||||||
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13V1m0 0L1 5m4-4 4 4"/>
|
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13V1m0 0L1 5m4-4 4 4"/>
|
||||||
</svg>
|
</svg>
|
||||||
42.5%
|
42.5%
|
||||||
|
@ -38,20 +39,26 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Grid dengan cards metrics yang lebih menarik -->
|
||||||
<div class="grid grid-cols-2 gap-4 mb-6">
|
<div class="grid grid-cols-2 gap-4 mb-6">
|
||||||
<dl class="flex items-center">
|
<div class="bg-gradient-to-r from-purple-50 to-indigo-50 p-4 rounded-xl shadow-sm">
|
||||||
<dt class="text-gray-500 dark:text-gray-400 text-sm font-normal me-1">Money spent:</dt>
|
<dl class="flex items-center">
|
||||||
<dd class="text-gray-900 text-sm dark:text-white font-semibold">$3,232</dd>
|
<dt class="text-purple-500 dark:text-purple-300 text-sm font-medium me-1">Money spent:</dt>
|
||||||
</dl>
|
<dd class="text-purple-700 text-sm dark:text-white font-bold">$3,232</dd>
|
||||||
<dl class="flex items-center justify-end">
|
</dl>
|
||||||
<dt class="text-gray-500 dark:text-gray-400 text-sm font-normal me-1">Conversion rate:</dt>
|
</div>
|
||||||
<dd class="text-gray-900 text-sm dark:text-white font-semibold">1.2%</dd>
|
<div class="bg-gradient-to-r from-blue-50 to-cyan-50 p-4 rounded-xl shadow-sm">
|
||||||
</dl>
|
<dl class="flex items-center justify-end">
|
||||||
|
<dt class="text-blue-500 dark:text-blue-300 text-sm font-medium me-1">Conversion rate:</dt>
|
||||||
|
<dd class="text-blue-700 text-sm dark:text-white font-bold">1.2%</dd>
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex mt-6">
|
<div class="flex mt-6 flex-col md:flex-row gap-4">
|
||||||
<!-- Menambahkan elemen canvas untuk chart -->
|
<!-- Chart dengan background yang lebih menarik -->
|
||||||
<div class="flex-1">
|
<div class="flex-1 bg-white p-4 rounded-xl shadow-sm">
|
||||||
|
<h4 class="text-lg font-bold text-gray-700 mb-2">Sales Analytics</h4>
|
||||||
<canvas id="vertical-bar-chart-widget" height="200" class="mt-4"></canvas>
|
<canvas id="vertical-bar-chart-widget" height="200" class="mt-4"></canvas>
|
||||||
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
@ -60,19 +67,49 @@
|
||||||
const myChart = new Chart(ctx, {
|
const myChart = new Chart(ctx, {
|
||||||
type: 'bar',
|
type: 'bar',
|
||||||
data: {
|
data: {
|
||||||
labels: ['Label 1', 'Label 2', 'Label 3'],
|
labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'],
|
||||||
datasets: [{
|
datasets: [{
|
||||||
label: 'Dataset 1',
|
label: 'Sales',
|
||||||
data: [12, 19, 3],
|
data: [12, 19, 14, 24, 16, 28],
|
||||||
backgroundColor: 'rgba(75, 192, 192, 0.2)',
|
backgroundColor: [
|
||||||
borderColor: 'rgba(75, 192, 192, 1)',
|
'rgba(79, 70, 229, 0.7)',
|
||||||
borderWidth: 1
|
'rgba(59, 130, 246, 0.7)',
|
||||||
|
'rgba(16, 185, 129, 0.7)',
|
||||||
|
'rgba(236, 72, 153, 0.7)',
|
||||||
|
'rgba(245, 158, 11, 0.7)',
|
||||||
|
'rgba(139, 92, 246, 0.7)'
|
||||||
|
],
|
||||||
|
borderColor: [
|
||||||
|
'rgba(79, 70, 229, 1)',
|
||||||
|
'rgba(59, 130, 246, 1)',
|
||||||
|
'rgba(16, 185, 129, 1)',
|
||||||
|
'rgba(236, 72, 153, 1)',
|
||||||
|
'rgba(245, 158, 11, 1)',
|
||||||
|
'rgba(139, 92, 246, 1)'
|
||||||
|
],
|
||||||
|
borderWidth: 1,
|
||||||
|
borderRadius: 6
|
||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
options: {
|
options: {
|
||||||
|
responsive: true,
|
||||||
|
plugins: {
|
||||||
|
legend: {
|
||||||
|
position: 'top',
|
||||||
|
}
|
||||||
|
},
|
||||||
scales: {
|
scales: {
|
||||||
y: {
|
y: {
|
||||||
beginAtZero: true
|
beginAtZero: true,
|
||||||
|
grid: {
|
||||||
|
drawBorder: false,
|
||||||
|
color: 'rgba(226, 232, 240, 0.7)'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
x: {
|
||||||
|
grid: {
|
||||||
|
display: false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -81,26 +118,26 @@
|
||||||
</script>
|
</script>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Menambahkan elemen baru untuk laporan penjualan di samping chart -->
|
<!-- Card laporan penjualan dengan design yang lebih menarik -->
|
||||||
<div class="px-6 py-4 flex flex-col justify-center">
|
<div class="md:w-1/3 bg-gradient-to-br from-blue-600 to-indigo-700 rounded-xl p-6 flex flex-col justify-center text-white shadow-lg">
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-shopping-bag w-10 h-10 text-theme-12 mb-4">
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-shopping-bag w-12 h-12 text-white/80 mb-4">
|
||||||
<path d="M6 2L3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z"></path>
|
<path d="M6 2L3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z"></path>
|
||||||
<line x1="3" y1="6" x2="21" y2="6"></line>
|
<line x1="3" y1="6" x2="21" y2="6"></line>
|
||||||
<path d="M16 10a4 4 0 0 1-8 0"></path>
|
<path d="M16 10a4 4 0 0 1-8 0"></path>
|
||||||
</svg>
|
</svg>
|
||||||
<div class="relative text-3xl font-medium">
|
<div class="relative text-4xl font-bold mb-2">
|
||||||
<span class="absolute text-2xl font-medium top-0 left-0 -ml-0.5">$</span> 54.143
|
<span class="absolute text-2xl font-medium top-0 left-0 -ml-1">$</span> 54.143
|
||||||
</div>
|
</div>
|
||||||
<div class="report-box-2__indicator bg-theme-9 tooltip cursor-pointer mt-2">
|
<div class="bg-white/20 text-white px-3 py-1 rounded-full inline-flex items-center text-sm font-bold mt-2 w-fit">
|
||||||
47%
|
47%
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-up w-4 h-4 ml-0.5">
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-up w-4 h-4 ml-1">
|
||||||
<polyline points="18 15 12 9 6 15"></polyline>
|
<polyline points="18 15 12 9 6 15"></polyline>
|
||||||
</svg>
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
<div class="mt-4 text-gray-600 dark:text-gray-600">Sales earnings this month after associated author fees, & before taxes.</div>
|
<div class="mt-4 text-white/80 text-sm">Sales earnings this month after associated author fees, & before taxes.</div>
|
||||||
<button class="btn btn-outline-secondary relative justify-start rounded-full mt-4">
|
<button class="bg-white text-indigo-700 hover:bg-indigo-50 font-bold px-6 py-3 rounded-full mt-6 transition flex items-center justify-between">
|
||||||
Download Reports
|
Download Reports
|
||||||
<span class="w-8 h-8 absolute flex justify-center items-center bg-theme-1 text-white rounded-full right-0 top-0 bottom-0 my-auto ml-auto mr-0.5">
|
<span class="w-8 h-8 flex justify-center items-center bg-indigo-600 text-white rounded-full ml-2">
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-right w-4 h-4">
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-right w-4 h-4">
|
||||||
<line x1="5" y1="12" x2="19" y2="12"></line>
|
<line x1="5" y1="12" x2="19" y2="12"></line>
|
||||||
<polyline points="12 5 19 12 12 19"></polyline>
|
<polyline points="12 5 19 12 12 19"></polyline>
|
||||||
|
@ -110,45 +147,46 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="grid grid-cols-1 items-center border-gray-200 border-t dark:border-gray-700 justify-between mt-6">
|
<!-- Footer element dengan design yang lebih baik -->
|
||||||
<div class="flex justify-between items-center pt-5">
|
<div class="grid grid-cols-1 items-center border-gray-200 border-t dark:border-gray-700 justify-between mt-6 pt-4">
|
||||||
<!-- Button -->
|
<div class="flex justify-between items-center">
|
||||||
|
<!-- Button dengan design yang lebih menarik -->
|
||||||
<button
|
<button
|
||||||
id="dropdownDefaultButton"
|
id="dropdownDefaultButton"
|
||||||
data-dropdown-toggle="lastDaysdropdown"
|
data-dropdown-toggle="lastDaysdropdown"
|
||||||
data-dropdown-placement="bottom"
|
data-dropdown-placement="bottom"
|
||||||
class="text-sm font-medium text-gray-500 dark:text-gray-400 hover:text-gray-900 text-center inline-flex items-center dark:hover:text-white"
|
class="text-sm font-medium text-indigo-600 dark:text-indigo-400 hover:text-indigo-800 text-center inline-flex items-center dark:hover:text-white bg-indigo-50 px-4 py-2 rounded-lg hover:bg-indigo-100 transition"
|
||||||
type="button">
|
type="button">
|
||||||
Last 7 days
|
Last 7 days
|
||||||
<svg class="w-2.5 m-2.5 ms-1.5" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 10 6">
|
<svg class="w-3 h-3 ms-2" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 10 6">
|
||||||
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m1 1 4 4 4-4"/>
|
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m1 1 4 4 4-4"/>
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
<!-- Dropdown menu -->
|
<!-- Dropdown menu -->
|
||||||
<div id="lastDaysdropdown" class="z-10 hidden bg-white divide-y divide-gray-100 rounded-lg shadow-sm w-44 dark:bg-gray-700">
|
<div id="lastDaysdropdown" class="z-10 hidden bg-white divide-y divide-gray-100 rounded-lg shadow-md w-44 dark:bg-gray-700">
|
||||||
<ul class="py-2 text-sm text-gray-700 dark:text-gray-200" aria-labelledby="dropdownDefaultButton">
|
<ul class="py-2 text-sm text-gray-700 dark:text-gray-200" aria-labelledby="dropdownDefaultButton">
|
||||||
<li>
|
<li>
|
||||||
<a href="#" class="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white">Yesterday</a>
|
<a href="#" class="block px-4 py-2 hover:bg-indigo-50 dark:hover:bg-indigo-600 dark:hover:text-white">Yesterday</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="#" class="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white">Today</a>
|
<a href="#" class="block px-4 py-2 hover:bg-indigo-50 dark:hover:bg-indigo-600 dark:hover:text-white">Today</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="#" class="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white">Last 7 days</a>
|
<a href="#" class="block px-4 py-2 hover:bg-indigo-50 dark:hover:bg-indigo-600 dark:hover:text-white">Last 7 days</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="#" class="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white">Last 30 days</a>
|
<a href="#" class="block px-4 py-2 hover:bg-indigo-50 dark:hover:bg-indigo-600 dark:hover:text-white">Last 30 days</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="#" class="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white">Last 90 days</a>
|
<a href="#" class="block px-4 py-2 hover:bg-indigo-50 dark:hover:bg-indigo-600 dark:hover:text-white">Last 90 days</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<a
|
<a
|
||||||
href="#"
|
href="#"
|
||||||
class="uppercase text-sm font-semibold inline-flex items-center rounded-lg text-blue-600 hover:text-blue-700 dark:hover:text-blue-500 hover:bg-gray-100 dark:hover:bg-gray-700 dark:focus:ring-gray-700 dark:border-gray-700 px-3 py-2">
|
class="uppercase text-sm font-bold inline-flex items-center rounded-lg text-indigo-600 hover:text-indigo-700 dark:hover:text-indigo-400 bg-indigo-50 hover:bg-indigo-100 dark:hover:bg-indigo-700 dark:bg-indigo-800 px-4 py-2 transition">
|
||||||
Leads Report
|
Leads Report
|
||||||
<svg class="w-2.5 h-2.5 ms-1.5 rtl:rotate-180" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 6 10">
|
<svg class="w-3 h-3 ms-2 rtl:rotate-180" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 6 10">
|
||||||
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m1 9 4-4-4-4"/>
|
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m1 9 4-4-4-4"/>
|
||||||
</svg>
|
</svg>
|
||||||
</a>
|
</a>
|
||||||
|
|
|
@ -36,10 +36,10 @@ class="w-full border rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:
|
||||||
>
|
>
|
||||||
<option value="" disabled selected>Pilih Kategori Akun</option>
|
<option value="" disabled selected>Pilih Kategori Akun</option>
|
||||||
<optgroup label="Akun Kewajiban → Kategori untuk utang atau kewajiban perusahaan">
|
<optgroup label="Akun Kewajiban → Kategori untuk utang atau kewajiban perusahaan">
|
||||||
<option value="utang_gaji">Utang gaji</option>
|
<option value="utang gaji">Utang gaji</option>
|
||||||
</optgroup>
|
</optgroup>
|
||||||
<optgroup label="Akun Beban → Kategori untuk biaya operasional">
|
<optgroup label="Akun Beban → Kategori untuk biaya operasional">
|
||||||
<option value="beban_gaji">Beban gaji</option>
|
<option value="beban gaji">Beban gaji</option>
|
||||||
</optgroup>
|
</optgroup>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="bg-white p-4 rounded-lg shadow">
|
<div class="bg-white p-4 rounded-lg shadow">
|
||||||
<h3 class="text-gray-500 text-sm">Laba Bersih</h3>
|
<h3 class="text-gray-500 text-sm">Laba Bersih</h3>
|
||||||
<p class="text-2xl font-bold text-blue-600">Rp {{ number_format($saldo, 0, ',', '.') }}</p>
|
<p class="text-2xl font-bold text-blue-600">Rp {{ number_format(($saldo > 0) ? $saldo : 0, 0, ',', '.') }}</p>
|
||||||
|
|
||||||
@if(isset($persentasePeningkatan))
|
@if(isset($persentasePeningkatan))
|
||||||
<p class="text-sm {{ $persentasePeningkatan >= 0 ? 'text-green-500' : 'text-red-500' }}">
|
<p class="text-sm {{ $persentasePeningkatan >= 0 ? 'text-green-500' : 'text-red-500' }}">
|
||||||
|
@ -45,9 +45,9 @@
|
||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
<div class="bg-white p-4 rounded-lg shadow">
|
<div class="bg-white p-4 rounded-lg shadow">
|
||||||
<h3 class="text-gray-500 text-sm">Saldo Kas</h3>
|
<h3 class="text-gray-500 text-sm">Rugi</h3>
|
||||||
<p class="text-2xl font-bold text-gray-700">Rp 12.500.000</p>
|
<p class="text-2xl font-bold text-gray-700">Rp {{ number_format(($saldo < 0) ? $saldo : 0, 0, ',', '.') }}</p>
|
||||||
<p class="text-sm text-gray-400">Per tanggal hari ini</p>
|
<p class="text-sm text-gray-400">Data realtime keuangan</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -123,7 +123,7 @@
|
||||||
<td class="py-3 px-4">{{ $item->Tanggal->format('Y-m-d') }}</td>
|
<td class="py-3 px-4">{{ $item->Tanggal->format('Y-m-d') }}</td>
|
||||||
<td class="py-3 px-4">{{ $item->kode }}</td>
|
<td class="py-3 px-4">{{ $item->kode }}</td>
|
||||||
<td class="py-3 px-4">{{ $item->kategori }}</td>
|
<td class="py-3 px-4">{{ $item->kategori }}</td>
|
||||||
<td class="py-3 px-4">{{ $item->keterangan }}</td>
|
<td class="py-3 px-4">{{ $item->keterangan }} {{ $item->nama_karyawan }}</td>
|
||||||
<td class="py-3 px-4 text-right text-green-600">
|
<td class="py-3 px-4 text-right text-green-600">
|
||||||
@if($debit > 0)
|
@if($debit > 0)
|
||||||
Rp {{ number_format($debit, 0, ',', '.') }}
|
Rp {{ number_format($debit, 0, ',', '.') }}
|
||||||
|
|
|
@ -40,15 +40,19 @@ class="w-full border rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:
|
||||||
<option value="kas">Kas</option>
|
<option value="kas">Kas</option>
|
||||||
<option value="piutang">Piutang usaha</option>
|
<option value="piutang">Piutang usaha</option>
|
||||||
</optgroup>
|
</optgroup>
|
||||||
|
|
||||||
|
<optgroup label="Akun Ekuitas → Kategori untuk modal pemilik">
|
||||||
|
<option value="modal usaha" data-kode="MP">Modal usaha</option>
|
||||||
|
</optgroup>
|
||||||
|
|
||||||
<optgroup label="Akun Kewajiban → Kategori untuk utang atau kewajiban perusahaan">
|
<optgroup label="Akun Kewajiban → Kategori untuk utang atau kewajiban perusahaan">
|
||||||
<option value="utang_usaha">Utang usaha</option>
|
<option value="utang usaha">Utang usaha</option>
|
||||||
<option value="utang_bank">Utang bank</option>
|
<option value="utang bank">Utang bank</option>
|
||||||
</optgroup>
|
</optgroup>
|
||||||
|
|
||||||
<optgroup label="Akun Beban → Kategori untuk biaya operasional">
|
<optgroup label="Akun Beban → Kategori untuk biaya operasional">
|
||||||
<option value="beban_listrik">Beban listrik</option>
|
<option value="beban listrik">Beban listrik</option>
|
||||||
<option value="beban_sewa">Beban sewa</option>
|
<option value="beban sewa">Beban sewa</option>
|
||||||
</optgroup>
|
</optgroup>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -42,12 +42,12 @@ class="w-full border rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:
|
||||||
</optgroup>
|
</optgroup>
|
||||||
|
|
||||||
<optgroup label="Akun Ekuitas → Kategori untuk modal pemilik">
|
<optgroup label="Akun Ekuitas → Kategori untuk modal pemilik">
|
||||||
<option value="modal_pemilik" data-kode="MP">Modal pemilik</option>
|
<option value="modal pemilik" data-kode="MP">Modal pemilik</option>
|
||||||
</optgroup>
|
</optgroup>
|
||||||
|
|
||||||
<optgroup label="Akun Pendapatan → Kategori untuk pemasukan perusahaan">
|
<optgroup label="Akun Pendapatan → Kategori untuk pemasukan perusahaan">
|
||||||
<option value="pendapatan_penjualan" data-kode="PP">Pendapatan penjualan</option>
|
<option value="pendapatan penjualan" data-kode="PP">Pendapatan penjualan</option>
|
||||||
<option value="pendapatan_jasa" data-kode="PJ">Pendapatan jasa</option>
|
<option value="pendapatan jasa" data-kode="PJ">Pendapatan jasa</option>
|
||||||
</optgroup>
|
</optgroup>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -32,15 +32,15 @@
|
||||||
Route::get('/uang-keluar', [UangKeluarController::class, 'index'])->name('uang-keluar.index');
|
Route::get('/uang-keluar', [UangKeluarController::class, 'index'])->name('uang-keluar.index');
|
||||||
Route::post('/uang-keluar', [UangKeluarController::class, 'store'])->name('uangkeluar.store');
|
Route::post('/uang-keluar', [UangKeluarController::class, 'store'])->name('uangkeluar.store');
|
||||||
Route::get('/input-gaji', [InputGajiController::class, 'index'])->name('input-gaji.index');
|
Route::get('/input-gaji', [InputGajiController::class, 'index'])->name('input-gaji.index');
|
||||||
// Route::post('/input-gaji', [InputGajiController::class, 'store'])->name('input-gaji.store');
|
Route::post('/input-gaji', [InputGajiController::class, 'store'])->name('input-gaji.store');
|
||||||
|
|
||||||
//untuk Uang Gaji
|
//untuk Uang Gaji
|
||||||
Route::get('/gaji', [GajiController::class, 'index'])->name('gaji.index');
|
Route::get('/gaji', [GajiController::class, 'index'])->name('gaji.index');
|
||||||
|
|
||||||
//untuk Laporan
|
//untuk Laporan
|
||||||
Route::get('/Laporan', [LaporanController::class, 'index'])->name('Laporan.index');
|
Route::get('/Laporan', [LaporanController::class, 'index'])->name('Laporan.index');
|
||||||
Route::get('/laporan/export-excel', [LaporanController::class, 'exportExcel'])->name('laporan.export-excel');
|
Route::get('laporan/export-excel', [App\Http\Controllers\LaporanController::class, 'exportExcel'])->name('laporan.export-excel');
|
||||||
Route::get('/laporan/export-pdf', [LaporanController::class, 'exportPDF'])->name('laporan.export-pdf');
|
Route::get('laporan/export-pdf', [App\Http\Controllers\LaporanController::class, 'exportPDF'])->name('laporan.export-pdf');
|
||||||
|
|
||||||
//untuk Home
|
//untuk Home
|
||||||
Route::get('/home', [HomeController::class, 'index'])->name('home');
|
Route::get('/home', [HomeController::class, 'index'])->name('home');
|
||||||
|
|
Loading…
Reference in New Issue