Merged in izzati-feat-laporan-lelong-all (pull request #74)

add laporan lelong keseluruhan
This commit is contained in:
izzati zulkifli
2025-03-02 08:38:37 +00:00
9 changed files with 943 additions and 0 deletions
+53
View File
@@ -0,0 +1,53 @@
<?php
namespace App\Exports;
use Maatwebsite\Excel\Concerns\WithMultipleSheets;
class LelonganExport implements WithMultipleSheets
{
public $cawangan_detail;
public $query;
public $lelongan;
public $summary_lelongan;
public function __construct($data)
{
$this->cawangan_detail = $data['cawangan_detail'];
$this->query = $data['query'];
$this->lelongan = $data['lelongan'];
$this->summary_lelongan = $data['summary_lelongan'];
}
public function sheets(): array
{
$sheets = [];
// Use array_reduce to calculate the sum of values
$data = $this->lelongan;
$teller_with_lelongan_summary_data = array_reduce(array_keys($data), function ($accumulator, $key) use ($data) {
$accumulator[] = [
'teller' => $key,
'summary_lelongan_teller' => $data[$key]['summary_lelongan_teller'],
];
return $accumulator;
}, []);
$sheets[] = new LelonganSummaryExport($this->cawangan_detail, $this->query, $teller_with_lelongan_summary_data, $this->summary_lelongan);
foreach ($this->lelongan as $teller => $data) {
$teller_with_lelongan_data = [
'teller' => $teller,
'data' => $data,
];
$sheets[] = new LelonganPerTellerExport($this->cawangan_detail, $this->query, $teller_with_lelongan_data);
}
return $sheets;
}
}
+123
View File
@@ -0,0 +1,123 @@
<?php
namespace App\Exports;
use Illuminate\Contracts\View\View;
use Maatwebsite\Excel\Concerns\FromView;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
use Maatwebsite\Excel\Concerns\WithColumnWidths;
use Maatwebsite\Excel\Concerns\WithCustomValueBinder;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Concerns\WithMultipleSheets;
use Maatwebsite\Excel\Events\AfterSheet;
use PhpOffice\PhpSpreadsheet\Cell\Cell;
use PhpOffice\PhpSpreadsheet\Cell\DataType;
use PhpOffice\PhpSpreadsheet\Cell\DefaultValueBinder;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
use Maatwebsite\Excel\Concerns\WithTitle;
class LelonganPerTellerExport extends DefaultValueBinder implements FromView, ShouldAutoSize, WithCustomValueBinder, WithColumnWidths, WithEvents, WithColumnFormatting, WithTitle
{
public $cawangan_detail;
public $query;
public $teller_with_lelongan_data;
public function __construct($cawangan_detail, $query, $teller_with_lelongan_data)
{
$this->cawangan_detail = $cawangan_detail;
$this->query = $query;
$this->teller_with_lelongan_data = $teller_with_lelongan_data;
}
public function title(): string
{
return sprintf("TELLER %s", $this->teller_with_lelongan_data['teller']);
}
public function bindValue(Cell $cell, $value)
{
if (is_numeric($value)) {
$cell->setValueExplicit($value, DataType::TYPE_NUMERIC);
return true;
}
// else return default behavior
return parent::bindValue($cell, $value);
}
public function columnWidths(): array
{
return [
'A' => 20.5,
'B' => 42,
'C' => 14.18,
'D' => 14.18,
'E' => 9.19,
'F' => 27.5,
];
}
public function columnFormats(): array
{
return [
'D' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1,
'E' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1,
'F' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1,
'G' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1,
'H' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1,
'I' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1,
'J' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1,
'K' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1,
'L' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1,
];
}
public function registerEvents(): array
{
$table_style = [
'borders' => [
'allBorders' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
'color' => ['argb' => '#000000'],
],
],
];
$main_table_row_count = count($this->teller_with_lelongan_data) + 1;
$main_table_start_at_row = 9;
$main_table_range = 'A' . $main_table_start_at_row . ':J' . ($main_table_row_count + $main_table_start_at_row);
$summary_table_row_count = 1;
$summary_table_start_at_row = $main_table_row_count + $main_table_start_at_row + 5;
$summary_table_range = 'A' . $summary_table_start_at_row . ':I' . ($summary_table_row_count + $summary_table_start_at_row);
$summary_table_column_head = 'A' . $summary_table_start_at_row . ':F' . $summary_table_start_at_row;
// return [
// AfterSheet::class => function (AfterSheet $event) use ($main_table_range, $summary_table_range, $summary_table_column_head, $table_style) {
// $event->sheet->getStyle($main_table_range)->applyFromArray($table_style);
// $event->sheet->getStyle($summary_table_range)->applyFromArray($table_style);
// $event->sheet->mergeCells($summary_table_column_head);
// },
// ];
return [];
}
public function view(): View
{
return view('exports.lelongan.cawangan', [
'cawangan_detail' => $this->cawangan_detail,
'query' => $this->query,
'teller_with_lelongan_data' => $this->teller_with_lelongan_data,
]);
}
}
+121
View File
@@ -0,0 +1,121 @@
<?php
namespace App\Exports;
use Illuminate\Contracts\View\View;
use Maatwebsite\Excel\Concerns\FromView;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
use Maatwebsite\Excel\Concerns\WithColumnWidths;
use Maatwebsite\Excel\Concerns\WithCustomValueBinder;
use Maatwebsite\Excel\Concerns\WithEvents;
use PhpOffice\PhpSpreadsheet\Cell\Cell;
use PhpOffice\PhpSpreadsheet\Cell\DataType;
use PhpOffice\PhpSpreadsheet\Cell\DefaultValueBinder;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
use Maatwebsite\Excel\Concerns\WithTitle;
class LelonganSummaryExport extends DefaultValueBinder implements FromView, ShouldAutoSize, WithCustomValueBinder, WithColumnWidths, WithEvents, WithColumnFormatting, WithTitle
{
public $cawangan_detail;
public $query;
public $teller_with_lelongan_summary_data;
public $summary_lelongan;
public function __construct($cawangan_detail, $query, $teller_with_lelongan_data, $summary_lelongan)
{
$this->cawangan_detail = $cawangan_detail;
$this->query = $query;
$this->teller_with_lelongan_summary_data = $teller_with_lelongan_data;
$this->summary_lelongan = $summary_lelongan;
}
public function title(): string
{
return 'SUMMARY LELONGAN';
}
public function bindValue(Cell $cell, $value)
{
if (is_numeric($value)) {
$cell->setValueExplicit($value, DataType::TYPE_NUMERIC);
return true;
}
// else return default behavior
return parent::bindValue($cell, $value);
}
public function columnWidths(): array
{
return [
'A' => 28,
'B' => 14.67,
'C' => 16.00,
'D' => 14.18,
];
}
public function columnFormats(): array
{
return [
'E' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1,
'F' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1,
'G' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1,
'H' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1,
'I' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1,
'J' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1,
'C' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1,
'D' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1,
];
}
public function registerEvents(): array
{
$table_style = [
'borders' => [
'allBorders' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
'color' => ['argb' => '#000000'],
],
],
];
$main_table_row_count = count($this->teller_with_lelongan_summary_data) + 1;
$main_table_start_at_row = 9;
$main_table_range = 'A' . $main_table_start_at_row . ':J' . ($main_table_row_count + $main_table_start_at_row);
$summary_table_row_count = 1;
$summary_table_start_at_row = $main_table_row_count + $main_table_start_at_row + 5;
$summary_table_range = 'A' . $summary_table_start_at_row . ':I' . ($summary_table_row_count + $summary_table_start_at_row);
$summary_table_column_head = 'A' . $summary_table_start_at_row . ':F' . $summary_table_start_at_row;
// return [
// AfterSheet::class => function (AfterSheet $event) use ($main_table_range, $summary_table_range, $summary_table_column_head, $table_style) {
// $event->sheet->getStyle($main_table_range)->applyFromArray($table_style);
// $event->sheet->getStyle($summary_table_range)->applyFromArray($table_style);
// $event->sheet->mergeCells($summary_table_column_head);
// },
// ];
return [];
}
public function view(): View
{
return view('exports.lelongan.summary', [
'cawangan_detail' => $this->cawangan_detail,
'query' => $this->query,
'teller_with_lelongan_data' => $this->teller_with_lelongan_summary_data,
'summary_lelongan' => $this->summary_lelongan,
]);
}
}
@@ -0,0 +1,111 @@
<?php
namespace App\Http\Controllers\Reports;
use App\Http\Controllers\Controller;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Http;
use App\Exports\LelonganExport;
use Maatwebsite\Excel\Facades\Excel;
use Illuminate\Support\Facades\Auth;
class LelonganController extends Controller
{
public function index(Request $request)
{
$current = new Carbon();
$getReportDate = function ($date_string) use ($current) {
if ($date_string == null) {
return $current->toDateString();
}
return $date_string;
};
$request->hostname = config('api.url');
$lelongan = Http::get($request->hostname . '/api/reports/lelongan', [
'startDate' => $getReportDate($request->startDate),
'endDate' => $getReportDate($request->endDate),
])->json();
// dd($lelongan);
$startDate = $getReportDate($request->startDate);
$endDate = $getReportDate($request->endDate);
return view('reports.laporan-lelong.index', compact('lelongan', 'startDate', 'endDate'));
}
public function show(Request $request)
{
$validated = $request->validate(
['monthYear' => 'required'],
['monthYear.required' => 'Sila isi tarikh sebelum hantar',
]);
$current = Carbon::now();
$tarikh_cetak = $current->toDateString();
$tokens = explode('-', $validated['monthYear']);
$month = ltrim($tokens[0], '0');
$year = $tokens[1];
// Set the locale to Malaysian
App::setLocale('ms');
// Create a Carbon instance representing the date
$date = Carbon::createFromDate($year, $month, 1); // Set the day to 1st of the month
// Get the name of the month in Malaysian local
$monthName = $date->translatedFormat('F');
$request->hostname = config('api.url');
$stokAudit = Http::get($request->hostname . '/api/reports/stok-audit', [
'month' => $month,
'year' => $year,
])->json();
$tebus_date = $monthName . ' ' . $year;
$file_title = sprintf("Laporan-StokAudit %s (%s - %s).xlsx", 'Semua cawanangan', $monthName, $year);
if ($request->generateType === 'pdf') {
return view('reports.stok-audit.show', compact('tebus_date', 'tarikh_cetak', 'stokAudit', 'month', 'year'));
} else {
return Excel::download(new StokAuditExport($stokAudit), $file_title);
}
}
public function downloadLelonganCawanganExcel(Request $request)
{
$api_url = $request->hostname;
$auth_user = Auth::user();
$current = Carbon::now();
$current = new Carbon();
$tarikh_cetak = $current->toDateString();
$getReportDate = function ($date_string) use ($current) {
if ($date_string == null) {
return $current->toDateString();
}
return $date_string;
};
$request->hostname = config('api.url');
$kod_cawangan = $request->kod_cawangan;
// dd($kod_cawangan);
$data = Http::get($request->hostname . '/api/reports/lelongan/' . $kod_cawangan, [
'startDate' => $getReportDate($request->startDate),
'endDate' => $getReportDate($request->endDate),
])->json();
// dd($data);
$file_title = sprintf("LaporanLelongan %s (%s - %s).xlsx", $kod_cawangan, $request->startDate, $request->endDate);
return Excel::download(new LelonganExport($data), $file_title);
}
}
@@ -0,0 +1,95 @@
<table>
<tr>
<td>{{ $cawangan_detail['nama'] }}</td>
</tr>
<tr>
<td>{{ $cawangan_detail['code'] }}</td>
</tr>
<tr>
<td>{{ $cawangan_detail['alamat'] }}</td>
</tr>
<tr>
<td>{{ $cawangan_detail['waktu_operasi'] }}</td>
</tr>
</table>
<table>
<tr>
<td colspan="2">
<strong>LAPORAN LELONGAN</strong>
</td>
</tr>
<tr>
<td>
TARIKH DARI {{ $query['startDate'] }} hingga {{ $query['endDate'] }}
</td>
</tr>
</table>
<table>
<td colspan="2">
<strong>TELLER : {{ $teller_with_lelongan_data['teller'] }}</strong>
</td>
</table>
<table>
<thead>
<tr>
<th>No rujukan</th>
<th>Nama</th>
<!-- <th>Alamat</th> -->
<th>No KP</th>
<!-- <th>Masa</th> -->
<th>Marhun</th>
<th>Berat</th>
<th>Nilai Marhun (RM)</th>
<th>Pembiayaan (RM)</th>
<th>%</th>
<th>Baki Pembiayaan (RM)</th>
<th>Keuntungan (RM)</th>
<th>Caj Lelong (RM)</th>
<th>Harga Jual (RM)</th>
<th>Baki(RM)</th>
</tr>
</thead>
<tbody>
@foreach ($teller_with_lelongan_data['data']['lelongan'] as $lelongan_detail)
<tr>
<td>{{ $lelongan_detail['no_rujukan'] }}</td>
<td>{{ $lelongan_detail['nama'] }}</td>
<!-- <td>{{ $lelongan_detail['alamat'] }}</td> -->
<td>'{{ $lelongan_detail['no_kp'] }}</td>
<!-- <td>{{ $lelongan_detail['masa'] }}</td> -->
<td>{{ $lelongan_detail['marhun'] }}</td>
<td>{{ $lelongan_detail['berat'] }}</td>
<td>{{ $lelongan_detail['nilai_marhun'] }}</td>
<td>{{ $lelongan_detail['pinjaman'] }}</td>
<td>{{ $lelongan_detail['peratusan_margin_pinjaman'] }}</td>
<td>{{ $lelongan_detail['bakipjm'] }}</td>
<td>{{ $lelongan_detail['keuntungan'] }}</td>
<td>{{ $lelongan_detail['cajlelong'] }}</td>
<td>{{ $lelongan_detail['hargajual'] }}</td>
<td>{{ $lelongan_detail['baki'] }}</td>
</tr>
@endforeach
<tr>
<td></td>
<td></td>
<td></td>
<td>Jumlah</td>
<td>{{ $teller_with_lelongan_data['data']['summary_lelongan_teller']['total_berat'] }}</td>
<td>{{ $teller_with_lelongan_data['data']['summary_lelongan_teller']['total_nilai_marhun'] }}</td>
<td>{{ $teller_with_lelongan_data['data']['summary_lelongan_teller']['total_pembiayaan'] }}</td>
<td></td>
<td>{{ $teller_with_lelongan_data['data']['summary_lelongan_teller']['total_bakipjm'] }}</td>
<td>{{ $teller_with_lelongan_data['data']['summary_lelongan_teller']['total_keuntungan'] }}</td>
<td>{{ $teller_with_lelongan_data['data']['summary_lelongan_teller']['total_cajlelong'] }}</td>
<td>{{ $teller_with_lelongan_data['data']['summary_lelongan_teller']['total_hargajual'] }}</td>
<td>{{ $teller_with_lelongan_data['data']['summary_lelongan_teller']['total_baki'] }}</td>
</tr>
</tbody>
</table>
@@ -0,0 +1,72 @@
<table>
<tr>
<td>{{ $cawangan_detail['nama'] }}</td>
</tr>
<tr>
<td>{{ $cawangan_detail['code'] }}</td>
</tr>
<tr>
<td>{{ $cawangan_detail['alamat'] }}</td>
</tr>
<tr>
<td>{{ $cawangan_detail['waktu_operasi'] }}</td>
</tr>
</table>
<table>
<tr>
<td colspan="2">
<strong>LAPORAN LELONGAN</strong>
</td>
</tr>
<tr>
<td>
TARIKH DARI {{ $query['startDate'] }} hingga {{ $query['endDate'] }}
</td>
</tr>
</table>
<table>
<tr>
<th>Teller</th>
<th>Bil</th>
<th>Berat</th>
<th>N.Marhun</th>
<th>Pembiayaan(RM)</th>
<th>Baki Pembiayaan(RM)</th>
<th>Keuntungan(RM)</th>
<th>Caj Lelong(RM)</th>
<th>Harga Jual(RM)</th>
<th>Baki(RM)</th>
</tr>
@foreach ($teller_with_lelongan_data as $data)
<tr>
<td>{{ $data['teller'] }}</td>
<td>{{ $data['summary_lelongan_teller']['total_lelongan'] }}</td>
<td>{{ $data['summary_lelongan_teller']['total_berat'] }}</td>
<td>{{ $data['summary_lelongan_teller']['total_nilai_marhun'] }}</td>
<td>{{ $data['summary_lelongan_teller']['total_pembiayaan'] }}</td>
<td>{{ $data['summary_lelongan_teller']['total_bakipjm'] }}</td>
<td>{{ $data['summary_lelongan_teller']['total_keuntungan'] }}</td>
<td>{{ $data['summary_lelongan_teller']['total_cajlelong'] }}</td>
<td>{{ $data['summary_lelongan_teller']['total_hargajual'] }}</td>
<td>{{ $data['summary_lelongan_teller']['total_baki'] }}</td>
</tr>
@endforeach
<tr>
<td></td>
<td>{{ $summary_lelongan['total_lelongan'] }}</td>
<td>{{ $summary_lelongan['total_berat'] }}</td>
<td>{{ $summary_lelongan['total_nilai_marhun'] }}</td>
<td>{{ $summary_lelongan['total_pembiayaan'] }}</td>
<td>{{ $summary_lelongan['total_bakipjm'] }}</td>
<td>{{ $summary_lelongan['total_keuntungan'] }}</td>
<td>{{ $summary_lelongan['total_cajlelong'] }}</td>
<td>{{ $summary_lelongan['total_hargajual'] }}</td>
<td>{{ $summary_lelongan['total_baki'] }}</td>
</tr>
</table>
@@ -43,6 +43,12 @@
<h2 class="mx-auto text-center font-bold text-2xl uppercase">Stok Audit</h2>
</a>
</div>
<div
class="bg-white ml-2 shadow border border-solid px-6 py-4 rounded-lg hover:bg-yellow-300 hover:transition-all mb-2 cursor-pointer">
<a href="{{ route('reports.lelongan.index', ['startDate' => now()->toDateString(), 'endDate' => now()->toDateString()]) }}" class="">
<h2 class="mx-auto text-center font-bold text-2xl uppercase">Laporan Lelongan</h2>
</a>
</div>
</div>
</div>
</div>
@@ -0,0 +1,359 @@
@extends('layouts.app')
@section('content')
<div class="bg-gray-900 opacity-50 hidden fixed inset-0 z-10" id="sidebarBackdrop"></div>
<div id="main-content" class="h-full w-full bg-gray-50 relative overflow-y-auto">
<main>
<div class="pt-6 px-4">
<breadcrumb
:items="[{ 'title': 'Laporan Keseluruhan', 'icon': 'fas fa-users', 'url': '{{ route('reports') }}' }, { 'title': 'Lelongan', 'icon': 'fas fa-users' }]">
</breadcrumb>
<div class="container">
<div class="flex w-full">
<div class="xl:w-2/3 2xl:w-1/2 p-8 mx-auto">
<div class="bg-yellow-600 text-gray-200 text-lg px-6 py-4 rounded-t-lg"><a href="/reports"
class="router-link-active"><i class="fas fa-backspace text-white"></i></a> <span
class="text-center mx-auto text-white font-bold">Laporan Lelongan</span></div>
<form method="get" id="formlelongan" action="{{ route('reports.lelongan.index') }}">
<div class="rounded bg-white shadow p-6">
<div class="pb-6"><label for="username"
class="font-semibold text-gray-700 block pb-1">Tarikh</label>
<div class="flex">
<span
class="text-gray-600 border border-2 rounded-l px-4 py-2 whitespace-no-wrap"
style="background-color: rgb(249, 250, 251);">Mula</span>
<input id="tarikhmula" name="startDate" type="date"
value="{{ request()->startDate ?? $startDate }}"
class="border border-2 border-l-0 rounded-r px-4 py-2 w-80r mr-2">
<span
class="text-gray-600 border border-2 rounded-l px-4 py-2 whitespace-no-wrap"
style="background-color: rgb(249, 250, 251);">Hingga</span>
<input id="tarikhhingga" name="endDate" type="date"
value="{{ request()->endDate ?? $endDate }}"
class="border border-2 border-l-0 rounded-r px-4 py-2 w-80r mr-2">
<button
class="border border-yellow-600 text-yellow-600 font-montserrat py-2 px-8 font-medium rounded-xl hover:bg-yellow-600 hover:text-white transition-all duration-300 ml-5">
<i class="fas fa-magnifying-glass mr-2"></i>Search
</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
<div kodcaw="operasi">
<div>
<!---->
<!---->
</div>
<div>
<!---->
<!---->
</div>
<div class="flex justify-between mb-2">
</div>
<table class="min-w-full leading-normal">
<thead class="text-center">
<tr>
<th
class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
No
</th>
<th
class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Kod Cawangan
</th>
<th
class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Cawangan
</th>
<th
class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Bil
</th>
<th
class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Berat (g)
</th>
<th
class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Nilai Marhun(RM)
</th>
<th
class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Pembiayaan(RM)
</th>
<th
class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Baki Pembiayaan(RM)
</th>
<th
class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Keuntungan(RM)
</th>
<th
class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Caj Lelong(RM)
</th>
<th
class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Harga Jual(RM)
</th>
<th
class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Baki(RM)
</th>
<th
class="px-5 py-3 border-b-2 border-gray-200 bg-gray-100 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">
Action
</th>
</tr>
</thead>
@php
$totalbillelong = 0;
$totalberat = 0;
$totalnm = 0;
$totalpinjaman = 0;
$totalbakipjm = 0;
$totalkeuntungan = 0;
$totalcajlelong = 0;
$totalhargajual= 0;
$totalbaki= 0;
@endphp
<tbody>
@forelse ($lelongan as $lelong)
@php
$totalbillelong += $lelong['total_lelongan'];
$totalberat += $lelong['sum_berat'];
$totalnm += $lelong['sum_nilai_marhun'];
$totalpinjaman += $lelong['sum_pinjaman'];
$totalbakipjm += $lelong['sum_bakipjm'];
$totalkeuntungan += $lelong['sum_bakiupah'];
$totalcajlelong+= $lelong['sum_cajlelong'];
$totalhargajual+= $lelong['sum_hargajual'];
$totalbaki+= $lelong['sum_baki'];
@endphp
<tr>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap">{{ $loop->iteration }}</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap">{{ $lelong['kodcaw'] }}</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap">{{ $lelong['details_caw'] }}</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap">{{ $lelong['total_lelongan'] }}
</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap">
{{ number_format($lelong['sum_berat'], 2) }}</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap">
{{ number_format($lelong['sum_nilai_marhun'], 2) }}</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap">
{{ number_format($lelong['sum_pinjaman'], 2) }}</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap">
{{ number_format($lelong['sum_bakipjm'], 2) }}</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap">
{{ number_format($lelong['sum_bakiupah'], 2) }}</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap">
{{ number_format($lelong['sum_cajlelong'], 2) }}</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap">
{{ number_format($lelong['sum_hargajual'], 2) }}</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap">
{{ number_format($lelong['sum_baki'], 2) }}</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<a href="{{ route('reports.lelongan.cawangan.excel', [$lelong['kodcaw'], 'startDate' => request()->startDate, 'endDate' => request()->endDate]) }}"
target="_blank" rel="noopener noreferrer"
class="border border-blue-600 text-blue-600 font-montserrat py-2 px-4 font-medium rounded-xl hover:bg-blue-600 hover:text-white transition-all duration-300">
<i class="fas fa-download mr-2"></i>Download
</a>
</div>
</div>
</td>
</tr>
@empty
<tr>
<td colspan="6" class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap">Data not available</p>
</div>
</div>
</td>
</tr>
@endforelse
<tr>
<td colspan="3" class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap">Jumlah Keseluruhan</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap">{{ $totalbillelong}}
</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap">
{{ number_format($totalberat,2) }}</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap">
{{ number_format($totalnm,2) }}</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap">
{{ number_format($totalpinjaman,2) }}</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap">
{{ number_format($totalbakipjm,2) }}</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap">
{{ number_format($totalkeuntungan,2) }}</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap">
{{ number_format($totalcajlelong,2) }}</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap">
{{ number_format($totalhargajual,2) }}</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap">
{{ number_format($totalbaki,2) }}</p>
</div>
</div>
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap">
</p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</main>
@include('layouts.footer')
</div>
@endsection
+3
View File
@@ -5,6 +5,7 @@ use App\Http\Controllers\Reports\PenebusanController;
use App\Http\Controllers\Reports\AnsuranController;
use App\Http\Controllers\Reports\RingkasanHarianController;
use App\Http\Controllers\Reports\StokAuditController;
use App\Http\Controllers\Reports\LelonganController;
use Illuminate\Support\Facades\Route;
Route::middleware(['roleChecker:admin,akaun,operasi,kpo, null'])->group(function () {
@@ -19,4 +20,6 @@ Route::middleware(['roleChecker:admin,akaun,operasi,kpo, null'])->group(function
Route::get('ringkasan-harian/{kod_cawangan}', [RingkasanHarianController::class, 'downloadRingkasanHarianPdf'])->name('reports.ringkasan-harian.cawangan.pdf');
Route::get('stok-audit', [StokAuditController::class, 'index'])->name('reports.stok-audit.index');
Route::get('stok-audit/view', [StokAuditController::class, 'show'])->name('reports.stok-audit.show');
Route::get('laporan-lelong', [LelonganController::class, 'index'])->name('reports.lelongan.index');
Route::get('lelongan/{kod_cawangan}', [LelonganController::class, 'downloadLelonganCawanganExcel'])->name('reports.lelongan.cawangan.excel');
});