+ +
+ +
diff --git a/app/Exports/Ansuran/AnsuranExport.php b/app/Exports/Ansuran/AnsuranExport.php new file mode 100644 index 0000000..cf1c819 --- /dev/null +++ b/app/Exports/Ansuran/AnsuranExport.php @@ -0,0 +1,51 @@ +cawangan_detail = $data['cawangan_detail']; + $this->query = $data['query']; + $this->ansuran = $data['total_ansuran']; + $this->summary_ansuran = $data['summary_ansuran']; + } + + public function sheets(): array + { + $sheets = []; + + // Use array_reduce to calculate the sum of values + $data = $this->ansuran; + $teller_with_gadaian_summary_data = array_reduce(array_keys($data), function ($accumulator, $key) use ($data) { + $accumulator[] = [ + 'teller' => $key, + 'summary_ansuran_teller' => $data[$key]['summary_ansuran_teller'], + ]; + return $accumulator; + }, []); + + + $sheets[] = new AnsuranSummaryExport($this->cawangan_detail, $this->query, $teller_with_gadaian_summary_data, $this->summary_ansuran); + + foreach ($this->ansuran as $teller => $data) { + + $teller_with_gadaian_data = [ + 'teller' => $teller, + 'data' => $data, + ]; + + $sheets[] = new AnsuranPerTellerExport($this->cawangan_detail, $this->query, $teller_with_gadaian_data); + } + + return $sheets; + } +} diff --git a/app/Exports/Ansuran/AnsuranPerTellerExport.php b/app/Exports/Ansuran/AnsuranPerTellerExport.php new file mode 100644 index 0000000..152b699 --- /dev/null +++ b/app/Exports/Ansuran/AnsuranPerTellerExport.php @@ -0,0 +1,124 @@ +cawangan_detail = $cawangan_detail; + $this->query = $query; + $this->teller_with_ansuran_data = $teller_with_ansuran_data; + } + + public function title(): string + { + return sprintf("TELLER %s", $this->teller_with_ansuran_data['teller']); + } + + public function bindValue(Cell $cell, $value) + { + if (is_numeric($value)) { + $cell->setValueExplicit($value, DataType::TYPE_NUMERIC); + + return true; + } + + + $datePattern = '/^\d{4}-\d{2}-\d{2}$/'; + if (preg_match($datePattern, $value)) { + $cell->setValueExplicit( (new Carbon($value))->format('d/m/Y'), DataType::TYPE_STRING); + return true; + } + + // else return default behavior + return parent::bindValue($cell, $value); + } + + public function columnWidths(): array + { + return [ + 'A' => 20.5, + 'B' => 42, + 'C' => 14.50, + 'D' => 21.33, + 'E' => 21.67, + 'F' => 20.50, + ]; + } + + public function columnFormats(): array + { + return [ + 'C' => NumberFormat::FORMAT_NUMBER, + 'D' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, + 'E' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, + 'F' => 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_ansuran_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.ansuran.cawangan', [ + 'cawangan_detail' => $this->cawangan_detail, + 'query' => $this->query, + 'teller_with_ansuran_data' => $this->teller_with_ansuran_data, + ]); + } +} diff --git a/app/Exports/Ansuran/AnsuranSummaryExport.php b/app/Exports/Ansuran/AnsuranSummaryExport.php new file mode 100644 index 0000000..ed833ad --- /dev/null +++ b/app/Exports/Ansuran/AnsuranSummaryExport.php @@ -0,0 +1,118 @@ +cawangan_detail = $cawangan_detail; + $this->query = $query; + $this->teller_with_ansuran_summary_data = $teller_with_ansuran_data; + $this->summary_ansuran = $summary_ansuran; + } + + public function title(): string + { + return 'SUMMARY ANSURAN'; + } + + 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' => 27, + 'B' => 21.30, + 'C' => 21.33, + 'D' => 24.67, + 'E' => 17.0, + ]; + } + + public function columnFormats(): array + { + return [ + 'B' => NumberFormat::FORMAT_NUMBER, + 'C' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, + 'D' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, + 'E' => 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_ansuran_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.ansuran.summary', [ + 'cawangan_detail' => $this->cawangan_detail, + 'query' => $this->query, + 'teller_with_ansuran_data' => $this->teller_with_ansuran_summary_data, + 'summary_ansuran' => $this->summary_ansuran, + ]); + } +} diff --git a/app/Exports/GadaianExport.php b/app/Exports/GadaianExport.php new file mode 100644 index 0000000..ac06b40 --- /dev/null +++ b/app/Exports/GadaianExport.php @@ -0,0 +1,53 @@ +cawangan_detail = $data['cawangan_detail']; + $this->query = $data['query']; + $this->gadaian = $data['gadaian']; + $this->summary_gadaian = $data['summary_gadaian']; + } + + public function sheets(): array + { + $sheets = []; + + // Use array_reduce to calculate the sum of values + $data = $this->gadaian; + $teller_with_gadaian_summary_data = array_reduce(array_keys($data), function ($accumulator, $key) use ($data) { + $accumulator[] = [ + 'teller' => $key, + 'summary_gadaian_teller' => $data[$key]['summary_gadaian_teller'], + ]; + return $accumulator; + }, []); + + + + + $sheets[] = new GadaianSummaryExport($this->cawangan_detail, $this->query, $teller_with_gadaian_summary_data, $this->summary_gadaian); + + foreach ($this->gadaian as $teller => $data) { + + $teller_with_gadaian_data = [ + 'teller' => $teller, + 'data' => $data, + ]; + + $sheets[] = new GadaianPerTellerExport($this->cawangan_detail, $this->query, $teller_with_gadaian_data); + } + + return $sheets; + } +} diff --git a/app/Exports/GadaianPerTellerExport.php b/app/Exports/GadaianPerTellerExport.php new file mode 100644 index 0000000..679bc9a --- /dev/null +++ b/app/Exports/GadaianPerTellerExport.php @@ -0,0 +1,119 @@ +cawangan_detail = $cawangan_detail; + $this->query = $query; + $this->teller_with_gadaian_data = $teller_with_gadaian_data; + } + + public function title(): string + { + return sprintf("TELLER %s", $this->teller_with_gadaian_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' => 60, + 'D' => 14.18, + 'E' => 9.19, + 'F' => 27.5, + ]; + } + + public function columnFormats(): array + { + return [ + 'D' => NumberFormat::FORMAT_NUMBER, + 'G' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, + 'H' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, + 'I' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, + 'J' => NumberFormat::FORMAT_NUMBER_00, + ]; + } + + 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_gadaian_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.gadaian.cawangan', [ + 'cawangan_detail' => $this->cawangan_detail, + 'query' => $this->query, + 'teller_with_gadaian_data' => $this->teller_with_gadaian_data, + ]); + } +} diff --git a/app/Exports/GadaianSummaryExport.php b/app/Exports/GadaianSummaryExport.php new file mode 100644 index 0000000..d2287ca --- /dev/null +++ b/app/Exports/GadaianSummaryExport.php @@ -0,0 +1,116 @@ +cawangan_detail = $cawangan_detail; + $this->query = $query; + $this->teller_with_gadaian_summary_data = $teller_with_gadaian_data; + $this->summary_gadaian = $summary_gadaian; + } + + public function title(): string + { + return 'SUMMARY GADAIAN'; + } + + 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 [ + 'B' => 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_gadaian_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.gadaian.summary', [ + 'cawangan_detail' => $this->cawangan_detail, + 'query' => $this->query, + 'teller_with_gadaian_data' => $this->teller_with_gadaian_summary_data, + 'summary_gadaian' => $this->summary_gadaian, + ]); + } +} diff --git a/app/Exports/Penebusan/PenebusanExport.php b/app/Exports/Penebusan/PenebusanExport.php new file mode 100644 index 0000000..616cb93 --- /dev/null +++ b/app/Exports/Penebusan/PenebusanExport.php @@ -0,0 +1,51 @@ +cawangan_detail = $data['cawangan_detail']; + $this->query = $data['query']; + $this->penebusan = $data['penebusan']; + $this->summary_penebusan = $data['summary_penebusan']; + } + + public function sheets(): array + { + $sheets = []; + + // Use array_reduce to calculate the sum of values + $data = $this->penebusan; + $teller_with_gadaian_summary_data = array_reduce(array_keys($data), function ($accumulator, $key) use ($data) { + $accumulator[] = [ + 'teller' => $key, + 'summary_penebusan_teller' => $data[$key]['summary_penebusan_teller'], + ]; + return $accumulator; + }, []); + + + $sheets[] = new PenebusanSummaryExport($this->cawangan_detail, $this->query, $teller_with_gadaian_summary_data, $this->summary_penebusan); + + foreach ($this->penebusan as $teller => $data) { + + $teller_with_gadaian_data = [ + 'teller' => $teller, + 'data' => $data, + ]; + + $sheets[] = new PenebusanPerTellerExport($this->cawangan_detail, $this->query, $teller_with_gadaian_data); + } + + return $sheets; + } +} diff --git a/app/Exports/Penebusan/PenebusanPerTellerExport.php b/app/Exports/Penebusan/PenebusanPerTellerExport.php new file mode 100644 index 0000000..31b1cd3 --- /dev/null +++ b/app/Exports/Penebusan/PenebusanPerTellerExport.php @@ -0,0 +1,128 @@ +cawangan_detail = $cawangan_detail; + $this->query = $query; + $this->teller_with_penebusan_data = $teller_with_penebusan_data; + } + + public function title(): string + { + return sprintf("TELLER %s", $this->teller_with_penebusan_data['teller']); + } + + public function bindValue(Cell $cell, $value) + { + if (is_numeric($value)) { + $cell->setValueExplicit($value, DataType::TYPE_NUMERIC); + + return true; + } + + + $datePattern = '/^\d{4}-\d{2}-\d{2}$/'; + if (preg_match($datePattern, $value)) { + $cell->setValueExplicit( (new Carbon($value))->format('d/m/Y'), DataType::TYPE_STRING); + return true; + } + + // else return default behavior + return parent::bindValue($cell, $value); + } + + public function columnWidths(): array + { + return [ + 'A' => 20.5, + 'B' => 42, + 'C' => 60, + 'D' => 14.18, + 'E' => 9.19, + 'F' => 27.5, + ]; + } + + public function columnFormats(): array + { + return [ + 'C' => NumberFormat::FORMAT_NUMBER, + 'D' => NumberFormat::FORMAT_DATE_DDMMYYYY, + '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, + ]; + } + + 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_penebusan_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.penebusan.cawangan', [ + 'cawangan_detail' => $this->cawangan_detail, + 'query' => $this->query, + 'teller_with_penebusan_data' => $this->teller_with_penebusan_data, + ]); + } +} diff --git a/app/Exports/Penebusan/PenebusanSummaryExport.php b/app/Exports/Penebusan/PenebusanSummaryExport.php new file mode 100644 index 0000000..05c34b3 --- /dev/null +++ b/app/Exports/Penebusan/PenebusanSummaryExport.php @@ -0,0 +1,119 @@ +cawangan_detail = $cawangan_detail; + $this->query = $query; + $this->teller_with_penebusan_summary_data = $teller_with_penebusan_data; + $this->summary_penebusan = $summary_penebusan; + } + + public function title(): string + { + return 'SUMMARY PENEBUSAN'; + } + + 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 [ + 'B' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, + 'C' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, + 'D' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, + 'E' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, + 'F' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, + 'G' => 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_penebusan_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.penebusan.summary', [ + 'cawangan_detail' => $this->cawangan_detail, + 'query' => $this->query, + 'teller_with_penebusan_data' => $this->teller_with_penebusan_summary_data, + 'summary_penebusan' => $this->summary_penebusan, + ]); + } +} diff --git a/app/Helper.php b/app/Helper.php new file mode 100644 index 0000000..2e165c1 --- /dev/null +++ b/app/Helper.php @@ -0,0 +1,49 @@ +format("d-m-Y"); + } + + public static function getActiveCawanganDbConnection() + { + + $all_active_db_keys = array_filter(array_keys(config('database.connections')), function ($connection) { + try { + DB::connection($connection)->getPdo(); + return true; + } catch (\Throwable $th) { + return false; + } + }); + + $non_cawangan_database = ['lelong', 'online_arrahn', 'kaunterpkb']; + + $all_cawangan_db = array_filter($all_active_db_keys, function ($db_key) use ($non_cawangan_database) { + $isNotCawangan = in_array(config('database.connections.' . $db_key . '.database'), $non_cawangan_database); + + if ($isNotCawangan) { + return false; + } + + return true; + }); + + return $all_cawangan_db; + + } +} diff --git a/app/Http/Controllers/Reports/AnsuranController.php b/app/Http/Controllers/Reports/AnsuranController.php new file mode 100644 index 0000000..d4a5f52 --- /dev/null +++ b/app/Http/Controllers/Reports/AnsuranController.php @@ -0,0 +1,70 @@ +toDateString(); + } + + return $date_string; + }; + + $request->hostname = config('api.url'); + + $data = Http::get($request->hostname . '/api/reports/ansuran', [ + 'startDate' => $getReportDate($request->startDate), + 'endDate' => $getReportDate($request->endDate), + ])->json(); + + $summary_ansuran_by_cawangan = $data['summary_ansuran_by_cawangan']; + $summary_ansuran = $data['summary_ansuran']; + + $startDate = $getReportDate($request->startDate); + $endDate = $getReportDate($request->endDate); + + return view('reports.ansuran.index', compact('summary_ansuran_by_cawangan', 'summary_ansuran', 'startDate', 'endDate')); + } + + public function downloadAnsuranCawanganExcel(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; + + $data = Http::get($request->hostname . '/api/reports/ansuran/' . $kod_cawangan, [ + 'startDate' => $getReportDate($request->startDate), + 'endDate' => $getReportDate($request->endDate), + ])->json(); + + $file_title = sprintf("LaporanAnsuran %s (%s - %s).xlsx", $kod_cawangan, $request->startDate, $request->endDate); + return Excel::download(new AnsuranExport($data), $file_title); + } +} diff --git a/app/Http/Controllers/Reports/GadaianController.php b/app/Http/Controllers/Reports/GadaianController.php new file mode 100644 index 0000000..ca625bc --- /dev/null +++ b/app/Http/Controllers/Reports/GadaianController.php @@ -0,0 +1,69 @@ +toDateString(); + } + + return $date_string; + }; + + $request->hostname = config('api.url'); + + $gadaian = Http::get($request->hostname . '/api/reports/gadaian', [ + 'startDate' => $getReportDate($request->startDate), + 'endDate' => $getReportDate($request->endDate), + ])->json(); + + $startDate = $getReportDate($request->startDate); + $endDate = $getReportDate($request->endDate); + + return view('reports.gadaian.index', compact('gadaian', 'startDate', 'endDate')); + } + + public function downloadGadaianCawanganExcel(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; + + $data = Http::get($request->hostname . '/api/reports/gadaian/' . $kod_cawangan, [ + 'startDate' => $getReportDate($request->startDate), + 'endDate' => $getReportDate($request->endDate), + ])->json(); + + + $file_title = sprintf("LaporanGadaian %s (%s - %s).xlsx", $kod_cawangan, $request->startDate, $request->endDate); + return Excel::download(new GadaianExport($data), $file_title); + } +} diff --git a/app/Http/Controllers/Reports/PenebusanController.php b/app/Http/Controllers/Reports/PenebusanController.php new file mode 100644 index 0000000..636dcb9 --- /dev/null +++ b/app/Http/Controllers/Reports/PenebusanController.php @@ -0,0 +1,67 @@ +toDateString(); + } + + return $date_string; + }; + + $request->hostname = config('api.url'); + + $penebusan = Http::get($request->hostname . '/api/reports/penebusan', [ + 'startDate' => $getReportDate($request->startDate), + 'endDate' => $getReportDate($request->endDate), + ])->json(); + + $startDate = $getReportDate($request->startDate); + $endDate = $getReportDate($request->endDate); + + return view('reports.penebusan.index', compact('penebusan', 'startDate', 'endDate')); + } + + public function downloadPenebusanCawanganExcel(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; + + $data = Http::get($request->hostname . '/api/reports/penebusan/' . $kod_cawangan, [ + 'startDate' => $getReportDate($request->startDate), + 'endDate' => $getReportDate($request->endDate), + ])->json(); + + $file_title = sprintf("LaporanPenebusan %s (%s - %s).xlsx", $kod_cawangan, $request->startDate, $request->endDate); + return Excel::download(new PenebusanExport($data), $file_title); + } +} diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 3bd3c81..e2ceefb 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -43,10 +43,17 @@ class RouteServiceProvider extends ServiceProvider ->namespace($this->namespace) ->group(base_path('routes/api.php')); + Route::middleware('web') + ->namespace($this->namespace) + ->prefix('reports') + ->group(base_path('routes/reports.php')); + Route::middleware('web') ->namespace($this->namespace) ->group(base_path('routes/web.php')); + }); + } /** diff --git a/resources/views/exports/Ansuran/cawangan.blade.php b/resources/views/exports/Ansuran/cawangan.blade.php new file mode 100644 index 0000000..c661a0f --- /dev/null +++ b/resources/views/exports/Ansuran/cawangan.blade.php @@ -0,0 +1,64 @@ +
| {{ $cawangan_detail['nama'] }} | +
| {{ $cawangan_detail['code'] }} | +
| {{ $cawangan_detail['alamat'] }} | +
| {{ $cawangan_detail['waktu_operasi'] }} | +
| + LAPORAN ANSURAN + | +|
| + TARIKH DARI {{ $query['startDate'] }} hingga {{ $query['endDate'] }} + | +|
| + TELLER : {{ $teller_with_ansuran_data['teller'] }} + | +
| No rujukan | +Nama | +No KP | +Bayaran Pembiayaan(RM) | +Bayaran Keuntungan(RM) | +Jumlah Ansuran(RM) | +
|---|---|---|---|---|---|
| {{ $ansuran_detail['norujukan'] }} | +{{ $ansuran_detail['nama'] }} | +{{ $ansuran_detail['no_kp'] }} | +{{ $ansuran_detail['bayaran_pembiayaan'] }} | +{{ $ansuran_detail['bayaran_keuntungan'] }} | +{{ $ansuran_detail['jumlah_ansuran'] }} | +
| Jumlah | +{{ $teller_with_ansuran_data['data']['summary_ansuran_teller']['sum_bayaran_pembiayaan'] }} | +{{ $teller_with_ansuran_data['data']['summary_ansuran_teller']['sum_bayaran_kos_keuntungan'] }} | +{{ $teller_with_ansuran_data['data']['summary_ansuran_teller']['sum_jumlah_bayaran'] }} | +||
| {{ $cawangan_detail['nama'] }} | +
| {{ $cawangan_detail['code'] }} | +
| {{ $cawangan_detail['alamat'] }} | +
| {{ $cawangan_detail['waktu_operasi'] }} | +
| + LAPORAN ANSURAN + | +|
| + TARIKH DARI {{ $query['startDate'] }} hingga {{ $query['endDate'] }} + | +|
| + | Jumlah Nombor Rujukan | +Bayaran Pembiayaan(RM) | +Bayaran Kos Keuntungan(RM) | +Jumlah Bayaran(RM) | +
|---|---|---|---|---|
| {{ $data['teller'] }} | +{{ $data['summary_ansuran_teller']['sum_norujukan'] }} | +{{ $data['summary_ansuran_teller']['sum_bayaran_pembiayaan'] }} | +{{ $data['summary_ansuran_teller']['sum_bayaran_kos_keuntungan'] }} | +{{ $data['summary_ansuran_teller']['sum_jumlah_bayaran'] }} | +
| + | {{ $summary_ansuran['sum_norujukan'] }} | +{{ $summary_ansuran['sum_bayaran_pembiayaan'] }} | +{{ $summary_ansuran['sum_bayaran_kos_keuntungan'] }} | +{{ $summary_ansuran['sum_jumlah_bayaran'] }} | +
| {{ $cawangan_detail['nama'] }} | +
| {{ $cawangan_detail['code'] }} | +
| {{ $cawangan_detail['alamat'] }} | +
| {{ $cawangan_detail['waktu_operasi'] }} | +
| + LAPORAN GADAI + | +|
| + TARIKH DARI {{ $query['startDate'] }} hingga {{ $query['endDate'] }} + | +|
| + TELLER : {{ $teller_with_gadaian_data['teller'] }} + | +
| No rujukan | +Nama | +Alamat | +No KP | +Masa | +Marhun | +Berat | +Nilai Marhun | +Pembiayaan | +% | +
|---|---|---|---|---|---|---|---|---|---|
| {{ $gadaian_detail['no_rujukan'] }} | +{{ $gadaian_detail['nama'] }} | +{{ $gadaian_detail['alamat'] }} | +{{ $gadaian_detail['no_kp'] }} | +{{ $gadaian_detail['masa'] }} | +{{ $gadaian_detail['marhun'] }} | +{{ $gadaian_detail['berat'] }} | +{{ $gadaian_detail['nilai_marhun'] }} | +{{ $gadaian_detail['pembiayaan'] }} | +{{ $gadaian_detail['peratusan_margin_pinjaman'] }} | +
| Jumlah | +{{ $teller_with_gadaian_data['data']['summary_gadaian_teller']['total_berat'] }} | +{{ $teller_with_gadaian_data['data']['summary_gadaian_teller']['total_nilai_marhun'] }} | +{{ $teller_with_gadaian_data['data']['summary_gadaian_teller']['total_pembiayaan'] }} | +||||||
| {{ $cawangan_detail['nama'] }} | +
| {{ $cawangan_detail['code'] }} | +
| {{ $cawangan_detail['alamat'] }} | +
| {{ $cawangan_detail['waktu_operasi'] }} | +
| + LAPORAN GADAI + | +|
| + TARIKH DARI {{ $query['startDate'] }} hingga {{ $query['endDate'] }} + | +|
| + | Berat | +N.Marhun | +Pembiayaan(RM) | +
|---|---|---|---|
| {{ $data['teller'] }} | +{{ $data['summary_gadaian_teller']['total_berat'] }} | +{{ $data['summary_gadaian_teller']['total_nilai_marhun'] }} | +{{ $data['summary_gadaian_teller']['total_pembiayaan'] }} | +
| + | {{ $summary_gadaian['total_berat'] }} | +{{ $summary_gadaian['total_nilai_marhun'] }} | +{{ $summary_gadaian['total_pembiayaan'] }} | +
| {{ $cawangan_detail['nama'] }} | +
| {{ $cawangan_detail['code'] }} | +
| {{ $cawangan_detail['alamat'] }} | +
| {{ $cawangan_detail['waktu_operasi'] }} | +
| + LAPORAN GADAI + | +|
| + TARIKH DARI {{ $query['startDate'] }} hingga {{ $query['endDate'] }} + | +|
| + TELLER : {{ $teller_with_penebusan_data['teller'] }} + | +
| No rujukan | +Nama | +No KP | +Tarikh Gadai | +JBG | +Nilai Pinjaman(RM) | +Baki Pinjaman(RM) | +Kos Keuntungan(RM) | +Kos Keuntungan Rebet(RM) | +Bayaran Penebusan(RM) | +Nilai Marhun(RM) | +Jenis Tebus | +
|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ $penebusan_detail['no_rujukan'] }} | +{{ $penebusan_detail['nama'] }} | +{{ $penebusan_detail['no_kp'] }} | +{{ $penebusan_detail['tarikh_gadai'] }} | +{{ $penebusan_detail['jbg'] }} | +{{ $penebusan_detail['nilai_pinjaman'] }} | +{{ $penebusan_detail['baki_pinjaman'] }} | +{{ $penebusan_detail['kos_keuntungan'] }} | +{{ $penebusan_detail['kos_keuntungan_rebet'] }} | +{{ $penebusan_detail['bayaran_penebusan'] }} | +{{ $penebusan_detail['nilai_marhun'] }} | +{{ $penebusan_detail['jenis_tebus'] }} | +
| Jumlah | +{{ $teller_with_penebusan_data['data']['summary_penebusan_teller']['nilai_pinjaman'] }} | +{{ $teller_with_penebusan_data['data']['summary_penebusan_teller']['baki_pinjaman'] }} | +{{ $teller_with_penebusan_data['data']['summary_penebusan_teller']['kos_keuntungan'] }} | +{{ $teller_with_penebusan_data['data']['summary_penebusan_teller']['kos_keuntungan_rebet'] }} | +{{ $teller_with_penebusan_data['data']['summary_penebusan_teller']['bayaran_penebusan'] }} | +{{ $teller_with_penebusan_data['data']['summary_penebusan_teller']['nilai_marhun'] }} | +|||||
| {{ $cawangan_detail['nama'] }} | +
| {{ $cawangan_detail['code'] }} | +
| {{ $cawangan_detail['alamat'] }} | +
| {{ $cawangan_detail['waktu_operasi'] }} | +
| + LAPORAN GADAI + | +|
| + TARIKH DARI {{ $query['startDate'] }} hingga {{ $query['endDate'] }} + | +|
| + | Nilai Pinjaman(RM) | +Baki Pinjaman(RM) | +Kos Keuntungan(RM) | +Kos Keuntungan Rebet(RM) | +Bayaran Penebusan(RM) | +Nilai Marhun(RM) | +
|---|---|---|---|---|---|---|
| {{ $data['teller'] }} | +{{ $data['summary_penebusan_teller']['nilai_pinjaman'] }} | +{{ $data['summary_penebusan_teller']['baki_pinjaman'] }} | +{{ $data['summary_penebusan_teller']['kos_keuntungan'] }} | +{{ $data['summary_penebusan_teller']['kos_keuntungan_rebet'] }} | +{{ $data['summary_penebusan_teller']['bayaran_penebusan'] }} | +{{ $data['summary_penebusan_teller']['nilai_marhun'] }} | +
| + | {{ $summary_penebusan['nilai_pinjaman'] }} | +{{ $summary_penebusan['baki_pinjaman'] }} | +{{ $summary_penebusan['kos_keuntungan'] }} | +{{ $summary_penebusan['kos_keuntungan_rebet'] }} | +{{ $summary_penebusan['bayaran_penebusan'] }} | +{{ $summary_penebusan['nilai_marhun'] }} | +
| + No + | ++ Kod Cawangan + | ++ Cawangan + | ++ Bil Ansuran + | ++ Bayaran Pembiayaan + | ++ Bayaran Kos Keuntungan + | ++ Jumlah Bayaran + | ++ Action + | +
|---|---|---|---|---|---|---|---|
|
+
+
+
+
+ {{ $loop->iteration }} + |
+
+
+
+
+
+ + {{ $ansuran['kod_cawangan'] }} + + |
+
+
+
+
+
+ + {{ $ansuran['cawangan_detail'] }} + + |
+
+
+
+
+
+ + {{ $ansuran['bilangan_ansuran'] }} + + |
+
+
+
+
+
+ + {{ number_format($ansuran['bayaran_pembiayaan'], 2) }} + + |
+
+
+
+
+
+ + {{ number_format($ansuran['bayaran_kos_keuntungan'], 2) }} + + |
+
+
+
+
+
+ + {{ number_format($ansuran['jumlah_bayaran'], 2) }} + + |
+
+
+
+
+
+ Download
+
+
+ |
+
|
+
+
+
+
+ Data not available + |
+ |||||||
| + |
+
+
+
+
+ + {{ $summary_ansuran['bilangan_ansuran'] }} + + |
+
+
+
+
+
+ + {{ number_format($summary_ansuran['bayaran_pembiayaan'], 2) }} + + |
+
+
+
+
+
+ + {{ number_format($summary_ansuran['bayaran_kos_keuntungan'], 2) }} + + |
+
+
+
+
+
+ + {{ number_format($summary_ansuran['jumlah_bayaran'], 2) }} + + |
+ + | ||
| + No + | ++ Kod Cawangan + | ++ Cawangan + | ++ Bil Gadai + | ++ Berat (g) + | ++ Nilai Marhun(RM) + | ++ Pinjaman(RM) + | ++ Action + | +
|---|---|---|---|---|---|---|---|
|
+
+
+
+
+ {{ $loop->iteration }} + |
+
+
+
+
+
+ {{ $gadai['kodcaw'] }} + |
+
+
+
+
+
+ {{ $gadai['details_caw'] }} + |
+
+
+
+
+
+ {{ $gadai['total_gadaian'] }} + + |
+
+
+
+
+
+ + {{ number_format($gadai['sum_berat'], 2) }} + |
+
+
+
+
+
+ + {{ number_format($gadai['sum_nilai_marhun'], 2) }} + |
+
+
+
+
+
+ + {{ number_format($gadai['sum_pinjaman'], 2) }} + |
+
+
+
+
+
+ Download
+
+
+ |
+
|
+
+
+
+
+ Data not available + |
+ |||||||
| + No + | ++ Kod Cawangan + | ++ Cawangan + | ++ Bil Tebus + | ++ Berat (g) + | ++ Nilai Marhun(RM) + | ++ Nilai Pinjaman(RM) + | ++ Baki Pinjaman(RM) + | ++ Keuntungan Asal(RM) + | ++ Keuntungan Rebet(RM) + | ++ Bayaran Penebusan(RM) + | ++ Action + | +
|---|---|---|---|---|---|---|---|---|---|---|---|
|
+
+
+
+
+ {{ $loop->iteration }} + |
+
+
+
+
+
+ {{ $tebus['kodcaw'] }} + |
+
+
+
+
+
+ {{ $tebus['details_caw'] }} + |
+
+
+
+
+
+ {{ $tebus['bilangan_tebus'] }} + + |
+
+
+
+
+
+ + {{ number_format($tebus['berat'], 2) }} + |
+
+
+
+
+
+ + {{ number_format($tebus['nilai_pinjaman'], 2) }} + |
+
+
+
+
+
+ + {{ number_format($tebus['baki_pinjaman'], 2) }} + |
+
+
+
+
+
+ + {{ number_format($tebus['nilai_marhun'], 2) }} + |
+
+
+
+
+
+ + {{ number_format($tebus['keuntungan_asal'], 2) }} + |
+
+
+
+
+
+ + {{ number_format($tebus['keuntungan_rebet'], 2) }} + |
+
+
+
+
+
+ + {{ number_format($tebus['bayaran_penebusan'], 2) }} + |
+
+
+
+
+
+ Download
+
+
+ |
+
|
+
+
+
+
+ Data not available + |
+ |||||||||||