Merge remote main

This commit is contained in:
Afiq Hamzah
2026-06-24 15:45:05 +08:00
89 changed files with 9539 additions and 815 deletions
@@ -0,0 +1,130 @@
<?php
namespace App\Exports;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\WithStyles;
use Maatwebsite\Excel\Concerns\WithCustomStartCell;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
class DataPelangganBycawDetailExport implements
FromCollection,
WithHeadings,
WithMapping,
WithStyles,
WithCustomStartCell
{
protected $pelanggan;
protected $year;
protected $no = 0;
public function __construct($pelanggan, $year)
{
$this->pelanggan = collect($pelanggan);
$this->year = $year;
}
/**
* Data source
*/
public function collection(): Collection
{
return $this->pelanggan;
}
/**
* Start data from row 5 (sebab ada tajuk)
*/
public function startCell(): string
{
return 'A5';
}
/**
* Header column
*/
public function headings(): array
{
return [
'No',
'Cawangan',
'No.Pelanggan',
'Umur',
'Jantina',
'Pekerjaan',
'Lokasi',
'Tempoh Pajakan',
'Tarikh Mula',
'Tarikh Tamat',
'Hari Sejak Transaksi Terakhir',
'Bil Transaksi',
'Bil Outstanding',
'Bil Tebus',
'Jumlah Pinjaman (RM)',
'Jumlah Ujrah (RM)',
'Tujuan Gadaian',
'Status Aktif',
'Cara Bayaran',
'Tarikh Lelong',
];
}
/**
* Map setiap row
*/
public function map($row): array
{
return [
++$this->no,
$row['cawangan'],
$row['nopelanggan'],
$row['umur'],
$row['jantina'],
$row['pekerjaan'],
$row['daerah'],
$row['tempoh_pajakan'],
$row['tarikh_mula'],
$row['tarikh_tamat'],
$row['hari_sejak_transaksi'],
$row['bil_transaksi'],
$row['bil_outstanding'],
$row['bil_tebus'],
number_format($row['jumlah_pinjaman'], 2),
number_format($row['jumlah_ujrah'], 2),
$row['tujuan_gadai'],
$row['status_aktif'],
$row['cara_bayaran'],
$row['tarikh_lelong'] ?? '-',
];
}
/**
* Styling Excel
*/
public function styles(Worksheet $sheet)
{
// Tajuk utama
$sheet->mergeCells('A1:R1');
$sheet->setCellValue('A1', 'LAPORAN DATA PELANGGAN MENGIKUT CAWANGAN');
$sheet->getStyle('A1')->getFont()->setBold(true)->setSize(14);
$sheet->getStyle('A1')->getAlignment()->setHorizontal('center');
// Tahun
$sheet->mergeCells('A2:R2');
$sheet->setCellValue('A2', 'TAHUN : ' . $this->year);
$sheet->getStyle('A2')->getFont()->setBold(true);
$sheet->getStyle('A2')->getAlignment()->setHorizontal('center');
// Header table
$sheet->getStyle('A5:R5')->getFont()->setBold(true);
$sheet->getStyle('A5:R5')->getAlignment()->setHorizontal('center');
// Auto width
foreach (range('A', 'R') as $col) {
$sheet->getColumnDimension($col)->setAutoSize(true);
}
}
}
+130
View File
@@ -0,0 +1,130 @@
<?php
namespace App\Exports;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\WithStyles;
use Maatwebsite\Excel\Concerns\WithCustomStartCell;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
class DataPelangganDetailExport implements
FromCollection,
WithHeadings,
WithMapping,
WithStyles,
WithCustomStartCell
{
protected $pelanggan;
protected $year;
protected $no = 0;
public function __construct($pelanggan, $year)
{
$this->pelanggan = collect($pelanggan);
$this->year = $year;
}
/**
* Data source
*/
public function collection(): Collection
{
return $this->pelanggan;
}
/**
* Start data from row 5 (sebab ada tajuk)
*/
public function startCell(): string
{
return 'A5';
}
/**
* Header column
*/
public function headings(): array
{
return [
'No',
'Nama Pelanggan',
'No.Pelanggan',
'Umur',
'Jantina',
'Pekerjaan',
'Lokasi',
'Tempoh Pajakan',
'Tarikh Mula',
'Tarikh Tamat',
'Hari Sejak Transaksi Terakhir',
'Bil Transaksi',
'Bil Outstanding',
'Bil Tebus',
'Jumlah Pinjaman (RM)',
'Jumlah Ujrah (RM)',
'Tujuan Gadaian',
'Status Aktif',
'Cara Bayaran',
'Tarikh Lelong',
];
}
/**
* Map setiap row
*/
public function map($row): array
{
return [
++$this->no,
strtoupper($row['nama']),
$row['nopelanggan'],
$row['umur'],
$row['jantina'],
$row['pekerjaan'],
$row['daerah'],
$row['tempoh_pajakan'],
$row['tarikh_mula'],
$row['tarikh_tamat'],
$row['hari_sejak_transaksi'],
$row['bil_transaksi'],
$row['bil_outstanding'],
$row['bil_tebus'],
number_format($row['jumlah_pinjaman'], 2),
number_format($row['jumlah_ujrah'], 2),
$row['tujuan_gadai'],
$row['status_aktif'],
$row['cara_bayaran'],
$row['tarikh_lelong'] ?? '-',
];
}
/**
* Styling Excel
*/
public function styles(Worksheet $sheet)
{
// Tajuk utama
$sheet->mergeCells('A1:R1');
$sheet->setCellValue('A1', 'LAPORAN DATA PELANGGAN');
$sheet->getStyle('A1')->getFont()->setBold(true)->setSize(14);
$sheet->getStyle('A1')->getAlignment()->setHorizontal('center');
// Tahun
$sheet->mergeCells('A2:R2');
$sheet->setCellValue('A2', 'TAHUN : ' . $this->year);
$sheet->getStyle('A2')->getFont()->setBold(true);
$sheet->getStyle('A2')->getAlignment()->setHorizontal('center');
// Header table
$sheet->getStyle('A5:R5')->getFont()->setBold(true);
$sheet->getStyle('A5:R5')->getAlignment()->setHorizontal('center');
// Auto width
foreach (range('A', 'R') as $col) {
$sheet->getColumnDimension($col)->setAutoSize(true);
}
}
}
+80
View File
@@ -0,0 +1,80 @@
<?php
namespace App\Exports;
use Illuminate\Contracts\View\View;
use Maatwebsite\Excel\Concerns\FromView;
use Illuminate\Support\Facades\Http;
class GadaianDetailExport implements FromView
{
protected $kodcaw;
protected $startDate;
protected $endDate;
public function __construct($kodcaw, $startDate, $endDate)
{
$this->kodcaw = $kodcaw;
$this->startDate = $startDate;
$this->endDate = $endDate;
}
public function view(): View
{
$generatedAt = now()->format('d-m-Y');
$data = Http::get(config('api.url') . '/api/reports/saringan/gadaian', [
'startDate' => $this->startDate,
'endDate' => $this->endDate,
])->json();
$branch = collect($data)->firstWhere('kodcaw', $this->kodcaw);
$details = collect($branch['details'] ?? []);
$tgb_lelong = $details->where('jenis', 'TGB_LELONG')->values();
$tgb_biasa = $details->where('jenis', 'TGB_BIASA')->values();
$gadai_biasa = $details->where('jenis', 'GADAI_BIASA')->values();
$subtotal = [
'tgb_lelong' => [
'berat' => $tgb_lelong->sum('berat'),
'nilai' => $tgb_lelong->sum('nilaimarhun'),
'pinjaman' => $tgb_lelong->sum('pinjaman'),
],
'tgb_biasa' => [
'berat' => $tgb_biasa->sum('berat'),
'nilai' => $tgb_biasa->sum('nilaimarhun'),
'pinjaman' => $tgb_biasa->sum('pinjaman'),
],
'gadai_biasa' => [
'berat' => $gadai_biasa->sum('berat'),
'nilai' => $gadai_biasa->sum('nilaimarhun'),
'pinjaman' => $gadai_biasa->sum('pinjaman'),
],
];
$grandTotal = [
'berat' => $subtotal['tgb_lelong']['berat']
+ $subtotal['tgb_biasa']['berat']
+ $subtotal['gadai_biasa']['berat'],
'nilai' => $subtotal['tgb_lelong']['nilai']
+ $subtotal['tgb_biasa']['nilai']
+ $subtotal['gadai_biasa']['nilai'],
'pinjaman' => $subtotal['tgb_lelong']['pinjaman']
+ $subtotal['tgb_biasa']['pinjaman']
+ $subtotal['gadai_biasa']['pinjaman'],
];
return view('reports.saringan-gadaian.excel', compact(
'branch',
'generatedAt',
'tgb_lelong',
'tgb_biasa',
'gadai_biasa',
'subtotal',
'grandTotal'
));
}
}
@@ -0,0 +1,222 @@
<?php
namespace App\Exports\LaporanKeseluruhan;
use Maatwebsite\Excel\Concerns\FromArray;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithCustomValueBinder;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithStrictNullComparison;
use PhpOffice\PhpSpreadsheet\Cell\Cell;
use PhpOffice\PhpSpreadsheet\Cell\DataType;
use PhpOffice\PhpSpreadsheet\Cell\DefaultValueBinder;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
use Maatwebsite\Excel\Concerns\WithMultipleSheets;
use Maatwebsite\Excel\Concerns\WithCustomStartCell;
use Maatwebsite\Excel\Events\AfterSheet;
use Maatwebsite\Excel\Concerns\WithEvents;
class AgingTebusAllExportExcel extends DefaultValueBinder implements
FromArray,
WithStrictNullComparison,
WithHeadings,
ShouldAutoSize,
WithCustomValueBinder,
WithColumnFormatting,
WithEvents,
WithCustomStartCell
{
protected $aging;
protected $startDate;
protected $endDate;
public function __construct($aging,$startDate,$endDate)
{
$this->aging = $aging;
$this->startDate = $startDate;
$this->endDate = $endDate;
}
public function array(): array
{
$rows = [];
$totals = [];
foreach ($this->aging as $branch) {
$row = [$branch['cawangan']];
$i = 0;
foreach ($branch['summary_by_tempoh'] as $summary) {
$row[] = $summary['count'];
$row[] = $summary['sum_bayaran_keuntungan_rebet'];
// Totals per column
$totals[$i]['count'] = ($totals[$i]['count'] ?? 0) + $summary['count'];
$totals[$i]['sum_bayaran_keuntungan_rebet'] = ($totals[$i]['sum_bayaran_keuntungan_rebet'] ?? 0) + $summary['sum_bayaran_keuntungan_rebet'];
$i++;
}
// Total per row (cawangan)
$jumlahBil = collect($branch['summary_by_tempoh'])->sum('count');
$jumlahRM = collect($branch['summary_by_tempoh'])->sum('sum_bayaran_keuntungan_rebet');
$row[] = $jumlahBil;
$row[] = $jumlahRM;
// Add to column totals
$totals['jumlah']['count'] = ($totals['jumlah']['count'] ?? 0) + $jumlahBil;
$totals['jumlah']['sum_bayaran_keuntungan_rebet'] = ($totals['jumlah']['sum_bayaran_keuntungan_rebet'] ?? 0) + $jumlahRM;
$rows[] = $row;
}
// Add final total row
$totalRow = ['Jumlah'];
foreach ($totals as $key => $val) {
$totalRow[] = $val['count'];
$totalRow[] = $val['sum_bayaran_keuntungan_rebet'];
}
$rows[] = $totalRow;
return $rows;
}
/**
* Multi-row headings (2 rows)
*/
public function headings(): array
{
$row1 = ['Cawangan'];
$row2 = [''];
if (!empty($this->aging[0]['summary_by_tempoh'])) {
foreach ($this->aging[0]['summary_by_tempoh'] as $summary) {
$row1[] = $summary['label'];
$row1[] = ''; // empty to allow merged cell
$row2[] = 'Bil';
$row2[] = 'RM';
}
}
$row1[] = 'Jumlah';
$row1[] = ''; // for merged "Jumlah" cell
$row2[] = 'Bil';
$row2[] = 'RM';
return [$row1, $row2];
}
public function columnFormats(): array
{
$formats = [];
$colIndex = 2; // Start at column B (Cawangan is A)
$tempohCount = count($this->aging[0]['summary_by_tempoh'] ?? []);
for ($i = 0; $i < $tempohCount; $i++) {
// Bil column
$bilCol = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex($colIndex++);
$formats[$bilCol] = NumberFormat::FORMAT_NUMBER; // ✅ No decimal
// RM column
$rmCol = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex($colIndex++);
$formats[$rmCol] = NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1; // RM with comma and decimals
}
// Jumlah Bil
$jumlahBilCol = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex($colIndex++);
$formats[$jumlahBilCol] = NumberFormat::FORMAT_NUMBER; // ✅ No decimal
// Jumlah RM
$jumlahRMCol = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex($colIndex++);
$formats[$jumlahRMCol] = NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1;
return $formats;
}
public function bindValue(Cell $cell, $value)
{
if (is_numeric($value)) {
$cell->setValueExplicit($value, DataType::TYPE_NUMERIC);
return true;
}
return parent::bindValue($cell, $value);
}
/**
* Merge heading cells using AfterSheet event
*/
public function registerEvents(): array
{
return [
AfterSheet::class => function(AfterSheet $event) {
$sheet = $event->sheet->getDelegate();
// Tajuk laporan
$sheet->setCellValue('A1', 'KEUNTUNGAN PENYELESAIAN PEMBIAYAAN BY TEMPOH');
// Tarikh laporan
$sheet->setCellValue(
'A2',
'Tarikh : ' .
\Carbon\Carbon::parse($this->startDate)->format('d/m/Y') .
' hingga ' .
\Carbon\Carbon::parse($this->endDate)->format('d/m/Y')
);
// Merge tajuk
$lastColumn = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex(
(count($this->aging[0]['summary_by_tempoh'] ?? []) * 2) + 3
);
$sheet->mergeCells("A1:{$lastColumn}1");
// Style tajuk
$sheet->getStyle("A1:{$lastColumn}1")->applyFromArray([
'font' => [
'bold' => true,
'size' => 14,
],
'alignment' => [
'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,
],
]);
// Merge header tempoh
$colIndex = 2; // Start from column B
$tempohCount = count($this->aging[0]['summary_by_tempoh'] ?? []);
$headingRow = 3;
for ($i = 0; $i < $tempohCount; $i++) {
$startCol = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex($colIndex);
$endCol = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex($colIndex + 1);
$sheet->mergeCells("{$startCol}{$headingRow}:{$endCol}{$headingRow}");
$colIndex += 2;
}
// Merge Jumlah
$startCol = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex($colIndex);
$endCol = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex($colIndex + 1);
$sheet->mergeCells("{$startCol}{$headingRow}:{$endCol}{$headingRow}");
},
];
}
// Mulakan sel untuk data bermula dari A4 (Baris 3 adalah header)
public function startCell(): string
{
return 'A3'; // Data bermula dari baris 4
}
}
@@ -34,6 +34,7 @@ class LelonganAllExportExcel extends DefaultValueBinder implements FromArray, Wi
'Baki Pembiayaan (RM)',
'Keuntungan (RM)',
'Caj Lelong (RM)',
'Harga Asas (RM)',
'Harga Jual (RM)',
'Baki (RM)',
];
@@ -57,6 +58,7 @@ class LelonganAllExportExcel extends DefaultValueBinder implements FromArray, Wi
$sum_pinjaman = 0;
$sum_bakiupah = 0;
$sum_cajlelong = 0;
$sum_hargaasas = 0;
$sum_hargajual = 0;
$sum_baki = 0;
@@ -73,6 +75,7 @@ class LelonganAllExportExcel extends DefaultValueBinder implements FromArray, Wi
number_format((float) ($data['sum_bakipjm'] ?? 0), 2),
number_format((float) ($data['sum_bakiupah'] ?? 0), 2),
number_format((float) ($data['sum_cajlelong'] ?? 0), 2),
number_format((float) ($data['sum_hargaasas'] ?? 0), 2),
number_format((float) ($data['sum_hargajual'] ?? 0), 2),
number_format((float) ($data['sum_baki'] ?? 0), 2),
@@ -87,6 +90,7 @@ class LelonganAllExportExcel extends DefaultValueBinder implements FromArray, Wi
$sum_bakipjm += (float) $data['sum_bakipjm'];
$sum_bakiupah += (float) $data['sum_bakiupah'];
$sum_cajlelong += (float) $data['sum_cajlelong'];
$sum_hargaasas += (float) $data['sum_hargaasas'];
$sum_hargajual += (float) $data['sum_hargajual'];
$sum_baki += (float) $data['sum_baki'];
@@ -102,6 +106,7 @@ class LelonganAllExportExcel extends DefaultValueBinder implements FromArray, Wi
number_format($sum_bakipjm, 2),
number_format($sum_bakiupah, 2),
number_format($sum_cajlelong, 2),
number_format($sum_hargaasas, 2),
number_format($sum_hargajual, 2),
number_format($sum_baki, 2),
@@ -128,6 +133,7 @@ class LelonganAllExportExcel extends DefaultValueBinder implements FromArray, Wi
(float) str_replace(',', '', $data[7] ?? 0), // Total Untung 1%
(float) str_replace(',', '', $data[8] ?? 0), // Total Ujrah
(float) str_replace(',', '', $data[9] ?? 0), // Total Ujrah
(float) str_replace(',', '', $data[10] ?? 0), // Total Ujrah
];
}
@@ -24,6 +24,8 @@ class OutstandingAllExportExcel implements FromCollection, WithHeadings
return [
'Kod Cawangan',
'Cawangan',
'Bil Pembiayaan (BRG KES)',
'Jumlah Pembiayaan (RM)',
'Bil Pembiayaan (SAG LAMA)',
'Jumlah Pembiayaan (RM)',
'Bil Pembiayaan (SAG BARU)',
+18
View File
@@ -48,6 +48,24 @@ class LelonganExport implements WithMultipleSheets
$sheets[] = new LelonganPerTellerExport($this->cawangan_detail, $this->query, $teller_with_lelongan_data);
}
// Sheet untuk senarai penuh lelongan (gabung semua teller)
$full_lelongan_data = [];
foreach ($this->lelongan as $teller => $data) {
if (isset($data['lelongan']) && is_array($data['lelongan'])) {
foreach ($data['lelongan'] as $item) {
$item['teller'] = $teller; // optional: simpan info teller
$full_lelongan_data[] = $item;
}
}
}
$sheets[] = new LelonganFullExport(
$this->cawangan_detail,
$this->query,
$full_lelongan_data
);
return $sheets;
}
}
+56
View File
@@ -0,0 +1,56 @@
<?php
namespace App\Exports;
use Illuminate\Contracts\View\View;
use Maatwebsite\Excel\Concerns\FromView;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithTitle;
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
class LelonganFullExport implements FromView, ShouldAutoSize, WithTitle, WithColumnFormatting
{
protected $cawangan_detail;
protected $query;
protected $lelongan_full_data;
public function __construct($cawangan_detail, $query, $lelongan_full_data)
{
$this->cawangan_detail = $cawangan_detail;
$this->query = $query;
$this->lelongan_full_data = $lelongan_full_data;
}
public function view(): View
{
return view('exports.lelongan.full', [
'cawangan_detail' => $this->cawangan_detail,
'query' => $this->query,
'lelongan_data' => $this->lelongan_full_data,
]);
}
public function title(): string
{
return 'SENARAI LELONGAN PENUH';
}
public function columnFormats(): array
{
return [
'E' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, // Berat
'F' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, // Nilai Marhun
'G' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, // Pinjaman
'H' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, // Keuntungan
'I' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, // caj lelong
'J' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, // baki
'K' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, // baki
'L' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, // baki
'M' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, // baki
'N' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, // baki
'O' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, // baki
];
}
}
+1
View File
@@ -71,6 +71,7 @@ class LelonganPerTellerExport extends DefaultValueBinder implements FromView, Sh
'J' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1,
'K' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1,
'L' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1,
'M' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1,
];
}
+1
View File
@@ -68,6 +68,7 @@ class LelonganSummaryExport extends DefaultValueBinder implements FromView, Shou
'J' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1,
'C' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1,
'D' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1,
'K' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1,
];
}
+189
View File
@@ -0,0 +1,189 @@
<?php
namespace App\Exports;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithTitle;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\WithStyles;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
use Maatwebsite\Excel\Concerns\WithCustomStartCell;
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
use PhpOffice\PhpSpreadsheet\Style\Border;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
class SAExportAudit implements FromCollection, WithHeadings, WithTitle, WithMapping, WithStyles, WithCustomStartCell, WithColumnFormatting
{
protected $stokaudit;
protected $jenisLaporan;
protected $tebus_date;
protected $namacaw;
public function __construct($stokaudit, $jenisLaporan = 'LAPORAN STOK AUDIT', $tebus_date, $namacaw)
{
$this->stokaudit = $stokaudit;
$this->jenisLaporan = strtoupper($jenisLaporan);
$this->tebus_date = $tebus_date;
$this->namacaw = $namacaw;
}
public function collection()
{
$data = collect($this->stokaudit);
$totals = [
'No Rujukan' => 'TOTAL',
'No KP' => '',
'Marhun' => '',
'Tempoh' => '',
'Berat (g)' => $data->sum(fn($row) => floatval($row['Berat (g)'] ?? 0)),
'Nilai Marhun' => $data->sum(fn($row) => floatval($row['Nilai Marhun'] ?? 0)),
'Pinjaman' => $data->sum(fn($row) => floatval($row['Pinjaman'] ?? 0)),
'Baki Pinjaman' => $data->sum(fn($row) => floatval($row['Baki Pinjaman'] ?? 0)),
];
$data->push($totals);
return $data;
}
public function headings(): array
{
return [
['LAPORAN STOK AUDIT'],
["CAWANGAN:", $this->namacaw],
["TARIKH:", $this->tebus_date],
[],
[
'BIL',
'NORUJUKAN',
'NO KP',
'MARHUN',
'BERAT (G)',
'BERAT AUDIT',
'NILAI MARHUN (RM)',
'PEMBIAYAAN (RM)',
'BAKI PEMBIAYAAN (RM)',
'JBG',
'CATATAN'
]
];
}
public function startCell(): string
{
return 'A1';
}
public function map($row): array
{
static $counter = 1;
if (($row['No Rujukan'] ?? '') === 'TOTAL') {
return [
'',
'JUMLAH',
'',
'',
$row['Berat (g)'] ?? 0,
'',
$row['Nilai Marhun'] ?? 0,
$row['Pinjaman'] ?? 0,
$row['Baki Pinjaman'] ?? 0,
'',
'',
];
}
return [
$row['Bil'] ?? $counter++,
$row['No Rujukan'] ?? '',
isset($row['No KP']) ? "'" . $row['No KP'] : '',
$row['Marhun'] ?? '',
$row['Berat (g)'] ?? 0,
'',
$row['Nilai Marhun'] ?? 0,
$row['Pinjaman'] ?? 0,
$row['Baki Pinjaman'] ?? 0,
$row['Tempoh'] ?? '',
'',
];
}
public function title(): string
{
return $this->jenisLaporan;
}
public function styles(Worksheet $sheet)
{
$sheet->mergeCells('A1:K1');
$sheet->getStyle('A1')->getFont()->setBold(true)->setSize(16);
$sheet->getStyle('A1')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->getStyle('A5:K5')->getFont()->setBold(true);
$lastRow = $sheet->getHighestRow();
$lastCol = 'K';
// Border untuk semua data
$sheet->getStyle("A5:{$lastCol}{$lastRow}")
->getBorders()
->getAllBorders()
->setBorderStyle(Border::BORDER_THIN);
// Bold TOTAL row
$sheet->getStyle("A{$lastRow}:{$lastCol}{$lastRow}")->getFont()->setBold(true);
// Align center untuk column tertentu
$sheet->getStyle("A5:A{$lastRow}")->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->getStyle("B5:B{$lastRow}")->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->getStyle("C5:C{$lastRow}")->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->getStyle("D5:D{$lastRow}")->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
// Wrap text untuk semua column
$sheet->getStyle("A5:{$lastCol}{$lastRow}")->getAlignment()->setWrapText(true);
// Auto-fit semua column kecuali Marhun
foreach (range('A', $lastCol) as $col) {
if ($col !== 'D') { // skip Marhun
$sheet->getColumnDimension($col)->setAutoSize(true);
}
}
// Untuk column Marhun (D), kita boleh set width minimum supaya tak terlalu besar
$sheet->getColumnDimension('D')->setWidth(18); // boleh adjust ikut perlu
return [];
}
public function columnWidths(): array
{
return [
'A' => 5,
'B' => 20,
'C' => 18,
'D' => 18,
'E' => 12,
'F' => 15,
'G' => 18,
'H' => 18,
'I' => 18,
'J' => 12,
'K' => 15,
];
}
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,
];
}
}
+41
View File
@@ -0,0 +1,41 @@
<?php
namespace App\Exports;
use Illuminate\Contracts\View\View;
use Maatwebsite\Excel\Concerns\FromView;
use Illuminate\Support\Facades\Http;
class WTDDetailExport implements FromView
{
protected $kodcaw;
protected $startDate;
protected $endDate;
public function __construct($kodcaw, $startDate, $endDate)
{
$this->kodcaw = $kodcaw;
$this->startDate = $startDate;
$this->endDate = $endDate;
}
public function view(): View
{
$data = Http::get(config('api.url') . '/admin/wtd/summaryWtd', [
'startDate' => $this->startDate,
'endDate' => $this->endDate,
])->json();
$branch = collect($data)->firstWhere('kodcaw', $this->kodcaw);
$details = collect($branch['details'] ?? []);
return view('reports.wtd.excel', [
'details' => $details, // data WTD
'branch' => $branch,
'generatedAt' => now()->format('d/m/Y H:i'),
'startDate' => $this->startDate,
'endDate' => $this->endDate,
]);
}
}
@@ -0,0 +1,57 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Http;
use Illuminate\Http\Request;
class AccountStatementController extends Controller
{
/**
* Display the bank statement view with mock data.
*
* @return \Illuminate\View\View
*/
public function showStatement(Request $request)
{
$gadaian = Http::get(config('api.url').'/api/gadai/norujukan/'.$request->norujukan)->json()[0][0];
$transaction = Http::get(config('api.url').'/portal/transaksipelanggan',['norujukan' => $request->norujukan])->json();
$cawangan=Http::get(config('api.url').'/api/cawangan/detail/'. $gadaian['kodcaw'])->json()[0];
$customer = Http::get(config('api.url') . '/api/customers/' . $gadaian['nokp'])->json();
$poskod = Http::get(config('api.url') . '/api/poskod/' . $customer['poskod'])->json();
$accountHolder = [
'name' => $customer['nama'],
'address' => $customer['alamat1'] . '<br>' . $customer['alamat2'],
'city_state_zip' => $customer['poskod'] . ', ' . $poskod['daerah']['namadaerah'] . ', ' . $poskod['negeri']['negeri'],
];
$bankDetails = [
'name' => $cawangan['cawangan'],
'address' => $cawangan['alamat1'] . '<br>' . $cawangan['alamat2'],
'branch' => $cawangan['namacaw'],
];
$transaction_count = count(array_filter($transaction, fn($trans) => $trans['trans_type'] == 'A'));
$totalPages = ceil($transaction_count / 10);
$ansuranTransaction = array_values(array_filter($transaction, fn($trans) => $trans['trans_type'] == 'A'));
$originLoan = $gadaian['pinjaman'];
$bakipinjaman = $originLoan;
$ansuranTransaction = array_map(function($trans) use(&$bakipinjaman) {
$bakipinjaman -= $trans['bayaran_pembiayaan'];
return array_merge($trans, ['bakipinjaman' => $bakipinjaman]);
}, $ansuranTransaction);
$tebusTransaction = array_values(array_filter($transaction, fn($trans) => $trans['trans_type'] == 'T'))[0];
return view('accounts-statements', compact('tebusTransaction','ansuranTransaction','transaction_count','gadaian','transaction','accountHolder', 'bankDetails'));
}
/**
* Helper function to format currency.
* In a real app, this would be a Blade helper or filter.
* We'll format it directly in the view for simplicity in this example.
*/
}
+176 -50
View File
@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\DB;
use Carbon\Carbon;
use Barryvdh\DomPDF\Facade as PDF;
@@ -22,6 +23,7 @@ use Maatwebsite\Excel\Facades\Excel;
use App\Exports\PendSerExport;
use App\Exports\SAExport;
use App\Exports\SAcombineExport;
use App\Exports\SAExportAudit;
class AkaunController extends Controller
{
@@ -314,7 +316,7 @@ class AkaunController extends Controller
// return view('akaun.laporan_imbanduga',compact('tarikh_imbangan', 'tarikh_imbangan2','hartasemasa','untungrugifield','tanggungansemasa','totalhartasemasa','totaluntungrugi','totaltanggungansemasa','tarikh_cetak','cawangan_info','cawangan','api_url','cawangan_detail'));
}
////ainizazi
public function cetakLaporanGadai(Request $request){
$api_url = $request->hostname;
$auth_user = Auth::user();
@@ -337,10 +339,20 @@ class AkaunController extends Controller
}
// $gadai = Http::get($request->hostname. '/api/gadai/laporan/'. $request->kodcaw .'/'. $gadai_date)->json();
$gadai = Http::get($request->hostname. '/api/gadailaporanRangeDate/'. $request->kodcaw,['mula' => $tarikh_mula,'akhir' => $tarikh_akhir])->json();
$reportGadai = Http::get($request->hostname. '/api/gadailaporanRangeDate/'. $request->kodcaw,['mula' => $tarikh_mula,'akhir' => $tarikh_akhir])->json();
$gadai = $reportGadai['gadai'];
// dd($reportsGadai);
$statistik =$reportGadai['statistik'];
$reportPembiayaan= $statistik['reportPembiayaan'];
$reportLoanAmount=$statistik['reportLoanAmount'];
$reportMarhunValue=$statistik['reportMarhunValue'];
$reportMarhunMargin=$statistik['reportMarhunMargin'];
$reportCustomerJob=$statistik['reportCustomerJob'];
$reportCustomerRace=$statistik['reportCustomerRace'];
$cawangan=Http::get($request->hostname.'/api/cawangan/detail/'.$request->kodcaw)->json();
$cawangan_detail=$cawangan[0];
$cawangan_detail=$cawangan[0];
if(isset($request->jenis))
{
@@ -349,10 +361,9 @@ class AkaunController extends Controller
$pdf = PDF::loadView('akaun.laporan_gadaian', compact('gadai','cawangan_detail','tarikh_cetak','tarikh_mula','tarikh_akhir','api_url'))->setPaper('a4', 'landscape');
return $pdf->download('laporan_gadaian_' . $request->kodcaw .'_'. $tarikh_mula .'-'. $tarikh_akhir .'.pdf');
}else{
return view('akaun.laporan_gadaian', compact('gadai','cawangan_detail','tarikh_cetak','tarikh_mula','tarikh_akhir','api_url'));
return view('akaun.laporan_gadaian', compact('gadai','cawangan_detail','tarikh_cetak','tarikh_mula','tarikh_akhir','api_url','reportGadai','gadai','statistik','reportPembiayaan','reportLoanAmount','reportMarhunValue','reportMarhunMargin','reportCustomerJob','reportCustomerRace'));
}
}
}
}
public function cetakLaporanPenebusan(Request $request){
@@ -416,8 +427,6 @@ class AkaunController extends Controller
return view('akaun.laporan_ansuran', compact('tebus','cawangan_detail','tarikh_cetak','tebus_date','api_url'));
}
}
}
@@ -492,7 +501,7 @@ class AkaunController extends Controller
return view('akaun.laporan_petibesi', compact('petibesi','cawangan_detail','tarikh_cetak','tebus_date','api_url','hutang'));
}
public function cetaklaporan_laporan_pendserahan(Request $request)
{
@@ -572,9 +581,9 @@ class AkaunController extends Controller
$request->hostname = config('app.env') == 'production' ? 'http://apiujrah.arrahn' : $request->hostname;
$tuntutbaki = Http::get($request->hostname. '/api/TuntutBakiRangeDate/'. $request->kodcaw,['mula' => $tarikh_mula,'akhir' => $tarikh_akhir])->json();
$tuntutbaki = Http::get($api_url. '/api/TuntutBakiRangeDate/'. $request->kodcaw,['mula' => $tarikh_mula,'akhir' => $tarikh_akhir])->json();
$cawangan=Http::get($request->hostname.'/api/cawangan/detail/'.$request->kodcaw)->json();
$cawangan=Http::get($api_url.'/api/cawangan/detail/'.$request->kodcaw)->json();
$cawangan_detail=$cawangan[0];
if(isset($request->jenis))
@@ -760,6 +769,49 @@ class AkaunController extends Controller
$cawangan_detail['namacaw']// ✅ Use the correct branch name from API
), 'laporan_stokaudit_' . $request->kodcaw . '_' . $tebus_date . '.xlsx');
}
elseif ($request->jenis == 'excelaudit') {
if ($request->radaktif === 'aktif') {
$stokaudit = Http::get($api_url . '/api/stokaudit/aktif/' . $request->kodcaw, [
'tarikh' => $tebus_date
])->json();
} else {
$stokaudit = Http::get($api_url . '/api/stokaudit/takaktif/' . $request->kodcaw, [
'tarikh' => $tebus_date
])->json();
}
$stokauditRecords = $stokaudit['rekod'] ?? [];
if (empty($stokauditRecords)) {
return back()->with('error', 'No records found to export.');
}
// pilih column untuk audit sahaja
$auditRecords = collect($stokauditRecords)->values()->map(function ($item, $index) {
return [
'Bil' => $index + 1,
'No Rujukan' => $item['norujukan'] ?? '',
'No KP' => $item['nokp'] ?? '',
'Marhun' => $item['marhun'] ?? '',
'Berat (g)' => $item['berat'] ?? '',
'Nilai Marhun' => $item['nilaimarhun'] ?? '',
'Pinjaman' => $item['pinjaman'] ?? '',
'Baki Pinjaman' => $item['bakipjm'] ?? '',
'Tempoh' => $item['tempoh'] ?? '',
];
});
return Excel::download(
new SAExportAudit(
$auditRecords,
'Laporan Stok Audit',
$tebus_date,
$cawangan_detail['namacaw']
),
'laporan_stokaudit_audit_' . $request->kodcaw . '_' . $tebus_date . '.xlsx'
);
}
else {
if ($request->radaktif === 'aktif') {
$stokaudit = Http::get($api_url . '/api/stokaudit/aktif/' . $request->kodcaw, ['tarikh' => $tebus_date])->json();
@@ -831,7 +883,6 @@ class AkaunController extends Controller
// ])->json();
// $laporan_ringkasan = $laporan_ringkasan[0];
$cawangan=Http::get(config('api.url').'/api/cawangan/detail/'.$request->kodcaw)->json();
$cawangan_detail=$cawangan[0];
@@ -860,9 +911,8 @@ class AkaunController extends Controller
$petibesi = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url'). '/api/laporanpetibesi/'. $request->kodcaw .'/'. $tebus_date)->json();
if(!$petibesi)
{
return redirect()->back()->with('errormessage', 'Tiada data pada tarikh tersebut.');
if (($petibesi['error'] ?? null) === 'Tiada data pada tarikh tersebut') {
return redirect()->back()->with('peti_besi_error_message', 'Tiada data pada tarikh tersebut.');
}
if(isset($request->jenis))
@@ -1656,44 +1706,71 @@ class AkaunController extends Controller
}
public function cetakLaporanAnsuranRangeDate(Request $request){
$api_url = $request->hostname;
$auth_user = Auth::user();
$current = Carbon::now();
$current = new Carbon();
$tarikh_cetak = $current->toDateString();
if($request->datemula == null){
$mula_date = $current->toDateString();
}else{
$split_date = explode('-',$request->datemula);
$mula_date = $request->datemula;
}
if($request->datehingga == null){
$hingga_date = $current->toDateString();
}else{
$split_date2 = explode('-',$request->datehingga);
$hingga_date = $request->datehingga;
}
$request->hostname = config('app.env') == 'production' ? 'http://apiujrah.arrahn' : $request->hostname;
$tebus = Http::get($request->hostname. '/api/ansuranujrah/laporan/'. $request->kodcaw,['mula' => $mula_date,'akhir' => $hingga_date])->json();
$cawangan=Http::get($request->hostname.'/api/cawangan/detail/'.$request->kodcaw)->json();
$cawangan_detail=$cawangan[0];
if(isset($request->jenis))
{
if($request->jenis == 'pdf')
{
$pdf = PDF::loadView('akaun.laporan_ansuran', compact('tebus','cawangan_detail','tarikh_cetak','mula_date','hingga_date','api_url'))->setPaper('a4', 'potrait');
return $pdf->download('laporan_ansuran_' . $request->kodcaw .'_'. $mula_date .'-'. $hingga_date .'.pdf');
}else{
return view('akaun.laporan_ansuran', compact('tebus','cawangan_detail','tarikh_cetak','api_url','mula_date','hingga_date'));
}
}
public function cetakLaporanAnsuranRangeDate(Request $request){
$api_url = $request->hostname;
$auth_user = Auth::user();
$current = Carbon::now();
$tarikh_cetak = $current->toDateString();
// Tarikh mula
if ($request->datemula == null) {
$mula_date = $current->toDateString();
} else {
$mula_date = $request->datemula;
}
// Tarikh hingga
if ($request->datehingga == null) {
$hingga_date = $current->toDateString();
} else {
$hingga_date = $request->datehingga;
}
// Tetapkan hostname ikut environment
$request->hostname = config('app.env') == 'production' ? 'http://apiujrah.arrahn' : $request->hostname;
$response = Http::get($api_url . '/api/ansuranujrah/laporan/' . $request->kodcaw, [
'mula' => $mula_date,
'akhir' => $hingga_date,
'jenis' => $request->laporanansuran
]);
if ($response->failed() || !$response->json()) {
$tebus = []; // fallback elak error di view
} else {
$tebus = $response->json();
}
$cawangan = Http::get($api_url . '/api/cawangan/detail/' . $request->kodcaw)->json();
$cawangan_detail = $cawangan[0] ?? ['nama' => 'Tiada data'];
// Tajuk laporan ikut jenis
$reportTitles = [
'online' => 'Laporan Ansuran Pembiayaan (Arrahn Pay)',
'kaunter' => 'Laporan Ansuran Pembiayaan (Kaunter aros)',
'all' => 'Laporan Ansuran Pembiayaan Semua'
];
$jenisLaporan = $request->laporanansuran;
$fileTitle = $reportTitles[$jenisLaporan] ?? 'Laporan_Tidak_Diketahui';
// PDF atau view biasa
if (isset($request->jenis)) {
if ($request->jenis == 'pdf') {
$pdf = PDF::loadView('akaun.laporan_ansuran', compact(
'tebus', 'cawangan_detail', 'tarikh_cetak', 'mula_date', 'hingga_date', 'api_url', 'jenisLaporan'
))->setPaper('a4', 'potrait');
return $pdf->download('laporan_ansuran_' . $request->kodcaw . '_' . $mula_date . '-' . $hingga_date . '.pdf');
} else {
return view('akaun.laporan_ansuran', compact(
'tebus', 'cawangan_detail', 'tarikh_cetak', 'api_url', 'jenisLaporan', 'mula_date', 'hingga_date'
));
}
}
}
public function cetakLaporanPenebusanRangeDate(Request $request){
$api_url = $request->hostname;
$auth_user = Auth::user();
@@ -1890,6 +1967,55 @@ class AkaunController extends Controller
));
}
public function cetak_laporanbarangkes(Request $request)
{
$api_url = $request->hostname;
// $api_url = ($request->hostname) ? $request->hostname : config('api.url');
$auth_user = Auth::user();
$current = Carbon::now();
$current = new Carbon();
$tarikh_cetak = $current->toDateString();
if($request->datemula == null){
$mula_date = '2017-01-01';
}else{
$mula_date = $request->datemula;
}
if($request->datehingga == null){
$hingga_date = $current->toDateString();
}else{
$hingga_date = $request->datehingga;
}
$status = $request->status ?? 'all';
// $barangkes = Http::get($request->hostname . '/api/barangkes/laporan/', ['kodcaw' => $request->kodcaw,'alasan' => $request->sltalasan,'tarikh_mula' => $mula_date,'tarikh_akhir' => $hingga_date, 'status' => $status,])->json();
$palsu = Http::get($request->hostname . '/api/palsu/laporan/', ['kodcaw' => $request->kodcaw,'tarikh_mula' => $mula_date,'tarikh_akhir' => $hingga_date, 'status' => $status,])->json();
if (!is_array($palsu)) {
$palsu = []; // utk nak tengok data tubik ke dok
}
$cawangan_info = Http::get($request->hostname . '/api/cawangan/'. $request->kodcaw)->json();
$cawangan = Http::get($request->hostname . '/api/cawangan/detail/'. $request->kodcaw)->json();
$cawangan_detail=$cawangan[0];
$hostname = $request->hostname;
if(isset($request->jenis))
{
if($request->jenis == 'pdf')
{
$pdf = PDF::loadView('akaun.laporan_brgkes', compact('hostname','palsu','cawangan_detail','tarikh_cetak','mula_date','hingga_date','api_url','status'))->setPaper('a4', 'potrait');
return $pdf->download('laporan_brgkes' . $request->kodcaw .'_'. $mula_date .'_'. $hingga_date . '.pdf');
}else{
return view('akaun.laporan_brgkes', compact('hostname','palsu','cawangan_detail','tarikh_cetak','mula_date','hingga_date','api_url','status'));
}
}
return view('akaun.laporan_brgkes', compact('hostname','cawangan_detail','mula_date','hingga_date','tarikh_cetak','api_url','palsu','status'));
}
}
@@ -0,0 +1,56 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Http;
use Carbon\Carbon;
class BarangkesController extends Controller
{
// lebih kurg mcm index
public function AdminBarangKes(Request $request)
{
$api_url = config('api.url');
$auth_user = Auth::user();
// dd($api_url);
return view('barangkes.barangkes',compact('api_url','auth_user'));
// return view('barangkes.index', compact('data'));
}
public function Detailssag(Request $request, $id)
{
$api_url = config('api.url');
$auth_user = Auth::user();
// ambil customer info
$customer_info = Http::get($api_url . '/admin/Customers/' . $id)->json();
// dd($customer_info);
// ambil gadai info (by kodcaw + norujukan dari route)
// $gadai = null;
if (!empty($customer_info['kodcaw']) && !empty($norujukan)) {
$gadai = Http::get($api_url . '/api/gadai/norujukan/'
. $customer_info['kodcaw'] . '/' . $norujukan)->json();
}
$gadai = Http::get($api_url . '/api/gadai/norujukan/' . $request->kodcaw . '/' . $request->norujukan)->json();
$gadai = $gadai[0];
return view('pelanggan.detailssag', compact('api_url', 'auth_user', 'customer_info', 'gadai'));
}
public function store(Request $request, $id){
$api_url = config('api.url');
$customer_info = Http::get($api_url . '/admin/Customers/' . $id)->json();
// $auth_user = Auth::user();
// dd($customer_info);
return view('pelanggan.detailssag', ['customer' => $customer_info,'kodcaw' => $request->query('kodcaw'),'norujukan' => $request->query('norujukan'),
]);
}
}
@@ -9,7 +9,7 @@ use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Http;
use Maatwebsite\Excel\Facades\Excel;
use Illuminate\Support\Facades\Auth;
use App\Exports\LaporanKeseluruhan\AgingAllExportExcel;
use App\Exports\LaporanKeseluruhan\AgingTebusAllExportExcel;
class AgingController extends Controller
{
@@ -81,4 +81,77 @@ class AgingController extends Controller
}
return view('reports.aging.index', compact('aging', 'endDate'));
}
public function agingtebus(Request $request)
{
$current = new Carbon();
$request->hostname = config('api.url');
// dd($request->hostname );
$kod_cawangan = $request->kod_cawangan;
$action = $request->input('action', 'search');
// dd($action);
$getReportDate = function ($date_string) use ($current) {
if ($date_string == null) {
return $current->toDateString();
}
return $date_string;
};
$request->hostname = config('api.url');
$startDate = $getReportDate($request->startDate);
$endDate = $getReportDate($request->endDate);
$aging = Http::get($request->hostname . '/api/reports/agingtebus', [
'startDate' => $startDate,
'endDate' => $endDate,
])->json();
$aging = $aging ?? [];
if ($action === 'excel') {
$file_title = sprintf("LaporanAging(%s).xlsx", $kod_cawangan, $startDate, $endDate);
return Excel::download(new AgingTebusAllExportExcel($aging,$startDate,$endDate), $file_title);
}
return view('reports.agingtebus.index', compact('aging', 'startDate', 'endDate'));
}
public function showagingtebus(Request $request)
{
$current = Carbon::now();
$action = $request->input('action', 'search');
$getReportDate = function ($date_string) use ($current) {
return $date_string ? $date_string : $current->toDateString();
};
$hostname = config('api.url');
$startDate = $getReportDate($request->startDate);
$endDate = $getReportDate($request->endDate);
$response = Http::get("$hostname/api/reports/agingtebus", [
'startDate' => $startDate,
'endDate' => $endDate,
]);
$aging = $response->json() ?? []; // Ensure it's an array
// Debugging: Check the response before using it
if (empty($aging)) {
return back()->with('error', 'Failed to fetch data from API.');
}
if ($action === 'excel') {
// Ensure $kod_cawangan is defined (Modify as per your data structure)
$kod_cawangan = $request->input('kod_cawangan', 'DEFAULT');
$file_title = sprintf("LaporanAgingTebus(%s).xlsx", $kod_cawangan, $startDate, $endDate);
return Excel::download(new AgingTebusAllExportExcel($aging, $startDate, $endDate), $file_title);
}
return view('reports.agingtebus.index', compact('aging', 'startDate', 'endDate'));
}
}
@@ -11,6 +11,8 @@ use Maatwebsite\Excel\Facades\Excel;
use Illuminate\Support\Facades\Auth;
use App\Exports\LaporanKeseluruhan\PelangganbaruAllExportExcel;
use App\Exports\LaporanKeseluruhan\PelangganaktifAllExportExcel;
use App\Exports\DataPelangganDetailExport;
use App\Exports\DataPelangganBycawDetailExport;
class AnalisaController extends Controller
{
@@ -90,5 +92,114 @@ class AnalisaController extends Controller
return view('reports.pelangganaktif.index', compact('pelangganaktif', 'startDate', 'endDate'));
}
public function dataPelanggan(Request $request)
{
$request->hostname = config('api.url');
$current = new Carbon();
$month = $request->filled('month') ? $request->month : $current->month;
$year = $request->filled('year') ? $request->year : $current->year;
return view('reports.data-pelanggan.index', compact('month', 'year'));
}
public function dataPelangganShow(Request $request)
{
$validated = $request->validate([
'year' => 'required|digits:4'
]);
$year = $validated['year'];
$tarikh_cetak = now()->format('d/m/Y');
$tebus_date = 'Tahun ' . $year;
$request->hostname = config('api.url');
$response = Http::get($request->hostname . '/api/reports/data-pelanggan', [
'year' => $year,
])->json();
$summary = $response['summary'];
$pelanggan = $response['pelanggan'];
if ($request->generateType === 'pdf') {
return view(
'reports.data-pelanggan.show',
compact('summary','pelanggan','tarikh_cetak','tebus_date','year')
);
}
elseif ($request->generateType === 'excel') {
return Excel::download(
new DataPelangganDetailExport($pelanggan, $year),
"Laporan-Data-Pelanggan-{$year}.xlsx"
);
}
}
public function dataPelangganBycaw(Request $request)
{
$request->hostname = config('api.url');
$current = new Carbon();
$month = $request->filled('month') ? $request->month : $current->month;
$year = $request->filled('year') ? $request->year : $current->year;
return view('reports.data-pelanggan-bycaw.index', compact('month', 'year'));
}
public function dataPelangganBycawShow(Request $request)
{
$validated = $request->validate([
'year' => 'required|digits:4',
'cawangan' => 'required|array|min:1'
]);
$year = $validated['year'];
$cawangan = $validated['cawangan']; // array kod cawangan
$tarikh_cetak = now()->format('d/m/Y');
$tebus_date = 'Tahun ' . $year;
$request->hostname = config('api.url');
// 🔑 Forward ke API
$response = Http::get(
$request->hostname . '/api/reports/data-pelanggan-bycaw',
[
'year' => $year,
'cawangan' => $cawangan, // array terus
]
)->json();
if (!isset($response['summary'], $response['pelanggan'])) {
abort(500, 'Data API tidak sah');
}
$summary = $response['summary'];
$pelanggan = $response['pelanggan'];
if ($request->generateType === 'pdf') {
return view(
'reports.data-pelanggan-bycaw.show',
compact('summary','pelanggan','tarikh_cetak','tebus_date','year','cawangan')
);
}
if ($request->generateType === 'excel') {
return Excel::download(
new DataPelangganBycawDetailExport($pelanggan, $year, $cawangan),
"Laporan-Data-Pelanggan-Bycaw-{$year}.xlsx"
);
}
abort(400, 'Jenis laporan tidak sah');
}
}
@@ -25,38 +25,53 @@ class StokAuditController extends Controller
public function show(Request $request)
{
$tarikh_cetak = Carbon::now()->toDateString(); // tarikh cetak
if ($request->dateOption === 'current') {
$date = Carbon::now();
$tebus_date = $date->format('d-m-Y'); // tarikh semasa
$monthName = $date->translatedFormat('F'); // bulan semasa
} else {
$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
$date = Carbon::createFromDate($year, $month, 1); // set day = 1
$monthName = $date->translatedFormat('F');
$tebus_date = $monthName . ' ' . $year;
}
$month = $date->month;
$year = $date->year;
$request->hostname = config('api.url');
$stokAudit = Http::get($request->hostname . '/api/reports/stok-audit', [
'month' => $month,
'year' => $year,
'dateOption' => $request->dateOption
])->json();
$tebus_date = $monthName . ' ' . $year;
$file_title = sprintf("Laporan-StokAudit %s (%s - %s).xlsx", 'Semua cawangan', $monthName, $year);
$file_title = sprintf(
"Laporan-StokAudit %s (%s).xlsx",
'Semua cawangan',
$tebus_date
);
if ($request->generateType === 'pdf') {
return view('reports.stok-audit.show', compact('tebus_date', 'tarikh_cetak', 'stokAudit', 'month', 'year'));
return view('reports.stok-audit.show', compact(
'stokAudit',
'month',
'year',
'monthName',
'tarikh_cetak',
'tebus_date'
));
} else {
return Excel::download(new StokAuditExport($stokAudit), $file_title);
}
+33 -6
View File
@@ -2,6 +2,7 @@
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Session;
@@ -17,7 +18,7 @@ class ResitController extends Controller
public function resit($id)
{
$auth_user = Auth::user();
$totaltransaction = 0;
$transaction = Http::get(config('api.url') . '/api/transaction/id/'. $id)->json();
@@ -32,7 +33,16 @@ class ResitController extends Controller
$customers_info = Http::get(config('api.url') . '/api/customers/'. $gadai['nokp'])->json();
return view('resit.resitansuran',compact('transaction','gadai','customers_info'));
$cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/' . $gadai['kodcaw'])->json();
$wakil = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/getwakil/' . $auth_user['cawangan'] . '/code/' . $transaction['nowakil'])->json();
if($gadai['tagbaru'] == 1){
return view('resit.resitansuran_ujrah',compact('transaction','gadai','customers_info','cawangan_info','wakil'));
}else{
return view('resit.resitansuran',compact('transaction','gadai','customers_info','cawangan_info','wakil'));
}
}
public function resittebusseparuh($id)
@@ -114,7 +124,7 @@ class ResitController extends Controller
public function resittebus($id)
{
$auth_user = Auth::user();
$gadai = Http::get(config('api.url') . '/api/gadai/norujukan/'. $id)->json();
if(sizeof($gadai) != 0)
@@ -126,6 +136,8 @@ class ResitController extends Controller
$transaction = Http::get(config('api.url') . '/api/transaction/'. $id)->json();
$transaction_tebus = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaction/one/'. $id)->json();
foreach($transaction as $trans)
{
$totaltransaction += $trans['duit_masuk'];
@@ -142,10 +154,25 @@ class ResitController extends Controller
$totalBayaranAnsuran = Http::get(config('api.url') . '/api/transaction/norujukan/total/ansuran',['norujukan'=>$id])->json();
if(sizeof($wakil) != 0)
$wakil = $wakil[0];
// $totalrebate = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/reports/totalrebate',['norujukan'=>$id])->json();
$surat_wakil = [];
if(sizeof($wakil) != 0) {
$wakil = $wakil[0];
$surat_wakil = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/getsuratwakil/' . $auth_user['cawangan'] . '/' . $id)->json();
}
return view('resit.resittebus',compact('transaction','gadai','cawangan_info','customers_info','penebusan','wakil','totaltransaction','totalBayaranAnsuran'));
$transaction_tebus = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaction/one/'. $id)->json();
$totalrebate = ['ujrah' => ($transaction_tebus['ujrah'] - $transaction_tebus['ujrah_rebet']), 'onepercent' => ($transaction_tebus['onepercent'] - $transaction_tebus['onepercent_rebet'])];
$khazanah_user = User::where('role_harian', 'khazanah')->where('cawangan', $auth_user['cawangan'])->select('name')->first();
if($gadai['tagbaru'] == 1){
return view('resit.resittebus_ujrah',compact('transaction','transaction_tebus','totalrebate','khazanah_user','gadai','cawangan_info','customers_info','penebusan','wakil','totaltransaction','totalBayaranAnsuran'));
}else{
return view('resit.resittebus',compact('transaction','transaction_tebus','totalrebate','khazanah_user','gadai','cawangan_info','customers_info','penebusan','wakil','totaltransaction','totalBayaranAnsuran'));
}
}
public function resitbelumtebus($id)
@@ -0,0 +1,115 @@
<?php
namespace App\Http\Controllers;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
use Maatwebsite\Excel\Facades\Excel;
use App\Exports\GadaianDetailExport;
class SaringanGadaianController extends Controller
{
public function index(Request $request)
{
$current = Carbon::now();
$getReportDate = function ($date_string) use ($current) {
return $date_string ? $date_string : $current->toDateString();
};
$request->hostname = config('api.url');
$startDate = $getReportDate($request->startDate);
$endDate = $getReportDate($request->endDate);
$gadaian = Http::get($request->hostname . '/api/reports/saringan/gadaian', [
'startDate' => $startDate,
'endDate' => $endDate,
])->json();
return view('reports.saringan-gadaian.index', compact('gadaian', 'startDate', 'endDate'));
}
public function exportExcel(Request $request, $kodcaw)
{
return Excel::download(
new GadaianDetailExport(
$kodcaw,
$request->startDate,
$request->endDate
),
"Saringan_Gadaian_{$kodcaw}.xlsx"
);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
@@ -0,0 +1,105 @@
<?php
namespace App\Http\Controllers;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
use Maatwebsite\Excel\Facades\Excel;
use App\Exports\GadaianDetailExport;
class StatistikController extends Controller
{
public function index(Request $request)
{
$current = Carbon::now();
$getReportDate = function ($date_string) use ($current) {
return $date_string ? $date_string : $current->toDateString();
};
$request->hostname = config('api.url');
$startDate = $getReportDate($request->startDate);
$endDate = $getReportDate($request->endDate);
$gadaian = Http::get($request->hostname . '/api/statistik', [
'startDate' => $startDate,
'endDate' => $endDate,
])->json();
dd($gadaian);
return view('akaun.laporan_gadaian', compact('gadaian', 'startDate', 'endDate'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
+201 -28
View File
@@ -2,7 +2,6 @@
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Session;
@@ -10,7 +9,8 @@ use Illuminate\Support\Facades\Http;
use Carbon\Carbon;
use PDF;
use Maatwebsite\Excel\Excel;
use Maatwebsite\Excel\Facades\Excel;
use App\Exports\WTDDetailExport;
class WTDController extends Controller
{
@@ -19,8 +19,8 @@ class WTDController extends Controller
// $this->middleware('auth');
// }
public function index(){
public function index()
{
return view('wtd.index');
}
@@ -30,27 +30,25 @@ class WTDController extends Controller
$norujukan = json_decode($request->norujukan);
$tuntutbaki = Http::get(config('api.url').'/admin/wtd/senarai',['norujukan' => $norujukan,'kodcaw' => $request->cawangan])->json();
$tuntutbaki = Http::get(config('api.url') . '/admin/wtd/senarai', ['norujukan' => $norujukan, 'kodcaw' => $request->cawangan])->json();
$cawangan=Http::get(config('api.url').'/api/cawangan/detail/'. $request->cawangan)->json();
$cawangan_detail=$cawangan[0];
$cawangan = Http::get(config('api.url') . '/api/cawangan/detail/' . $request->cawangan)->json();
$cawangan_detail = $cawangan[0];
$current = Carbon::now();
$tarikh_cetak = $current->toDateString();
$api_url = config('api.url');
$mula = $request->mula;
$mula = $request->mula;
$hingga = $request->hingga;
// $myDateTime = DateTime::createFromFormat('Y-m-d', $tarikh_cetak);
// $tarikhcetakan = $myDateTime->format('d-m-Y');
if(isset($request->jenis))
{
if($request->jenis == 'pdf')
{
$pdf = PDF::loadView('wtd.cetakan', compact('tuntutbaki','cawangan_detail','tarikh_cetak','api_url','mula','hingga'))->setPaper('a4', 'potrait');
return $pdf->download('wtd_' . $request->cawangan .'_'. $tarikh_cetak . '.pdf');
}else{
return view('wtd.cetakanexcel', compact('tuntutbaki','cawangan_detail','tarikh_cetak','api_url','mula','hingga'));
if (isset($request->jenis)) {
if ($request->jenis == 'pdf') {
$pdf = PDF::loadView('wtd.cetakan', compact('tuntutbaki', 'cawangan_detail', 'tarikh_cetak', 'api_url', 'mula', 'hingga'))->setPaper('a4', 'potrait');
return $pdf->download('wtd_' . $request->cawangan . '_' . $tarikh_cetak . '.pdf');
} else {
return view('wtd.cetakanexcel', compact('tuntutbaki', 'cawangan_detail', 'tarikh_cetak', 'api_url', 'mula', 'hingga'));
}
}
}
@@ -61,21 +59,196 @@ class WTDController extends Controller
$current = Carbon::now();
$tarikh_cetak = $current->toDateString();
$cawangan=Http::get(config('api.url').'/api/cawangan/detail/'. $request->cawangan)->json();
$cawangan_detail=$cawangan[0];
$cawangan = Http::get(config('api.url') . '/api/cawangan/detail/' . $request->cawangan)->json();
$cawangan_detail = $cawangan[0];
$wtdDalamProses = Http::get(config('api.url'). '/admin/wtd/dalamproses' ,['batchno' => $request->batchno,'kodcaw' => $request->cawangan])->json();
if(isset($request->jenis))
{
if($request->jenis == 'pdf')
{
$pdf = PDF::loadView('wtd.dalamprosespdf', compact('tarikh_cetak','cawangan_detail','wtdDalamProses','api_url'))->setPaper('a4', 'landscape');
return $pdf->download('wtd_' . $request->cawangan .'_'. $tarikh_cetak . '.pdf');
}else{
$wtdDalamProses = Http::get(config('api.url') . '/admin/wtd/dalamproses', ['batchno' => $request->batchno, 'kodcaw' => $request->cawangan])->json();
if (isset($request->jenis)) {
if ($request->jenis == 'pdf') {
$pdf = PDF::loadView('wtd.dalamprosespdf', compact('tarikh_cetak', 'cawangan_detail', 'wtdDalamProses', 'api_url'))->setPaper('a4', 'landscape');
return $pdf->download('wtd_' . $request->cawangan . '_' . $tarikh_cetak . '.pdf');
} else {
return view('wtd.dalamprosesexcel', compact('tarikh_cetak','cawangan_detail','wtdDalamProses','api_url'));
return view('wtd.dalamprosesexcel', compact('tarikh_cetak', 'cawangan_detail', 'wtdDalamProses', 'api_url'));
}
}
}
public function janaSimulasi(Request $request)
{
$cawangan = Http::get(config('api.url') . '/api/cawangan/')->json();
return view('wtd.simulasi.janaSimulasi', compact('cawangan'));
}
public function showSimulasi(Request $request)
{
$request->validate([
'kodcaw' => 'required',
'tahun' => 'required',
], [
'kodcaw.required' => 'Sila Pilih Cawangan Terlebih Dahulu.',
'tahun.required' => 'Sila Masukkan Tahun Terlebih Dahulu.',
]);
$senaraiSimulasi = Http::get(config('api.url') . '/admin/wtd/janaSimulasi', ['kodcaw' => $request->kodcaw, 'tahun' => $request->tahun])->json();
$year = $request->tahun;
// dd($senaraiSimulasi, $request->kodcaw, $request->tahun);
return view('wtd.simulasi.show', compact('senaraiSimulasi', 'year'));
}
public function showRekod(Request $request)
{
$bulan = $request->input('month');
$bulanNumber = date('n', strtotime($bulan));
$rekod = Http::get(config('api.url') . '/admin/wtd/rekodSimulasi', ['kodcaw' => $request->kodcaw, 'month' => $bulanNumber, 'year' => $request->year])->json();
$totalBaki = collect($rekod)->sum('baki');
// dd($rekod, $bulanNumber, $totalBaki, $bulan);
return view('wtd.simulasi.rekod', compact('bulan', 'rekod', 'totalBaki'));
}
public function prosesWTD(Request $request)
{
// dd($request->input());
$request->validate([
'data.*.bulan' => 'required|string',
'data.*.jumlah_norujukan' => 'required|numeric',
'data.*.pembiayaan' => 'required|numeric',
'data.*.baki' => 'required|numeric',
'data.*.selected' => 'nullable',
]);
// Process the selected data
$data = $request->input('data', []);
$insertedRecords = [];
$kodcaw = $request->data[0]['kodcaw'];
foreach ($data as $item) {
if (isset($item['selected'])) {
$insertedRecords[] = [
'bulan' => $item['bulan'],
'tahun' => $request->tahun,
'kodcaw' => $kodcaw,
'jumlah_sag' => $item['jumlah_norujukan'],
'pembiayaan' => $item['pembiayaan'],
'baki' => $item['baki'],
'created_at' => now(),
'updated_at' => now(),
];
}
}
$response = Http::post(config('api.url') . '/admin/wtd/prosesSimulasi', [
'input' => $insertedRecords
])->json();
// dd($data, $insertedRecords, $kodcaw, $response);
return view('wtd.simulasi.pengesahan', compact('insertedRecords', 'response', 'kodcaw'));
}
public function pengesahanSimulasi(Request $request)
{
$response = Http::post(config('api.url') . '/admin/wtd/pengesahanSimulasi', [
'records' => $request->records,
'kodcaw' => $request->kodcaw,
])->json();
return view('wtd.index');
}
public function serahbaki()
{
return view('wtd.simulasi.serahbaki');
}
public function simulasiToDraft(Request $request)
{
$response = Http::post(config('api.url') . '/admin/wtd/simulasiToDraft', [
'bulan' => $request->bulan,
])->json();
dd($response);
}
public function summaryWtd(Request $request)
{
$current = Carbon::now();
$getReportDate = function ($date_string) use ($current) {
return $date_string ? $date_string : $current->toDateString();
};
$request->hostname = config('api.url');
$startDate = $getReportDate($request->startDate);
$endDate = $getReportDate($request->endDate);
// $summarywtd = Http::get($request->hostname . '/admin/wtd/summaryWtd', [
// 'startDate' => $startDate,
// 'endDate' => $endDate,
// ])->effectiveUri()->__toString();
$summarywtd = Http::get($request->hostname . '/admin/wtd/summaryWtd', [
'startDate' => $startDate,
'endDate' => $endDate,
])->json();
if (!is_array($summarywtd)) {
$summarywtd = [];
}
return view('reports.wtd.index', compact('summarywtd', 'startDate', 'endDate'));
}
public function exportExcel(Request $request, $kodcaw)
{
return Excel::download(
new WTDDetailExport(
$kodcaw,
$request->startDate,
$request->endDate
),"Detail_Laporan_WTD_{$kodcaw}.xlsx");
}
public function home()
{
return view('wtd.debug.home');
}
public function trail(Request $request)
{
$current = Carbon::now();
$getReportDate = function ($date_string) use ($current) {
return $date_string ? $date_string : $current->toDateString();
};
$request->hostname = config('api.url');
$startDate = $getReportDate($request->startDate);
$endDate = $getReportDate($request->endDate);
$debugwtd = Http::get($request->hostname . '/admin/wtd/debugWtd', [
'startDate' => $startDate,
'endDate' => $endDate,
])->json();
if (!is_array($debugwtd)) {
$debugwtd = [];
}
return view('wtd.debug.index', compact('debugwtd', 'startDate', 'endDate'));
}
}
+4 -2
View File
@@ -277,10 +277,12 @@ class ImbangdugaServices
{
if($variable !== 'recno' && $variable !== 'kodcaw' && $variable !== 'tarikh' && $variable !== 'totalharta' && $variable !== 'totaltanggungan' && $variable !== 'tagtally' && $variable !== 'created_at' && $variable !== 'updated_at'){
if($variable == 'bakilelong'){
$imbangdugadata = ImbangDuga::orderBy('glcode')->where([['single_var',$variable],['variable',$variable]])->first()->toArray();
$imbangdugaRow = ImbangDuga::orderBy('glcode')->where([['single_var',$variable],['variable',$variable]])->first();
}else{
$imbangdugadata = ImbangDuga::orderBy('glcode')->where('variable',$variable)->orWhere('single_var',$variable)->first()->toArray();
$imbangdugaRow = ImbangDuga::orderBy('glcode')->where('variable',$variable)->orWhere('single_var',$variable)->first();
}
if(!$imbangdugaRow) continue;
$imbangdugadata = $imbangdugaRow->toArray();
if($imbangdugadata['jenis'] == 'harta'){
array_push($array_harta,['glcode' => $imbangdugadata['glcode'],'descpt' => $imbangdugadata['descpt'],'amaun' => $res]);
}else{
+28
View File
@@ -0,0 +1,28 @@
<?php
namespace App\View\Components;
use Illuminate\View\Component;
class JanaSimulasi extends Component
{
/**
* Create a new component instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Get the view / contents that represent the component.
*
* @return \Illuminate\Contracts\View\View|\Closure|string
*/
public function render()
{
return view('components.jana-simulasi');
}
}
+28
View File
@@ -0,0 +1,28 @@
<?php
namespace App\View\Components;
use Illuminate\View\Component;
class SenaraiSimulasi extends Component
{
/**
* Create a new component instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Get the view / contents that represent the component.
*
* @return \Illuminate\Contracts\View\View|\Closure|string
*/
public function render()
{
return view('components.senarai-simulasi');
}
}