Merge remote-tracking branch 'origin/prod-kopkb' into test/merge-prod-kopkb
This commit is contained in:
@@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class Anggota extends Model
|
||||||
|
{
|
||||||
|
protected $table = 'anggota';
|
||||||
|
protected $connection = 'mysql7';
|
||||||
|
|
||||||
|
protected $fillable = [
|
||||||
|
'no_anggota',
|
||||||
|
'nama',
|
||||||
|
'noic',
|
||||||
|
'no_tel',
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class ApprovalWithdrawal extends Model
|
||||||
|
{
|
||||||
|
protected $table = 'approval_withdrawal';
|
||||||
|
public $timestamps = true;
|
||||||
|
protected $primaryKey = 'id';
|
||||||
|
/**
|
||||||
|
* The attributes that are mass assignable.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $fillable = [
|
||||||
|
'kodcaw',
|
||||||
|
'pc_name',
|
||||||
|
'operasi_name',
|
||||||
|
'amount',
|
||||||
|
'approval_status',
|
||||||
|
'updated_serahan_v2',
|
||||||
|
'updated_pendahuluan_v3',
|
||||||
|
'denopendser_id_v2',
|
||||||
|
'gldetail_id_v2',
|
||||||
|
'denopendser_id_v3',
|
||||||
|
'gldetail_id_v3',
|
||||||
|
'action',
|
||||||
|
'approval_timestamp',
|
||||||
|
];
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,82 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Console\Commands;
|
||||||
|
|
||||||
|
use Exception;
|
||||||
|
use Illuminate\Console\Command;
|
||||||
|
use Illuminate\Support\Facades\Artisan;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
|
class CloneDatabase extends Command
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The name and signature of the console command.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $signature = 'migrate:clone';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The console command description.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $description = 'Generate Laravel migrations from an existing database';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Execute the console command.
|
||||||
|
*
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function handle()
|
||||||
|
{
|
||||||
|
$tables = DB::connection('mysql7')->select("SHOW TABLES");
|
||||||
|
|
||||||
|
$namedatabase = DB::connection('mysql7')->getDatabaseName();
|
||||||
|
|
||||||
|
if (empty($tables)) {
|
||||||
|
$this->error("No tables found in database");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$boolreject = false;
|
||||||
|
$list_of_rejected = ($boolreject) ? $this->rejected_table() : [];
|
||||||
|
// Get table names
|
||||||
|
$tableNames = array_map(fn($table) => is_array($table) ? array_values($table) : $table, $tables);
|
||||||
|
$tableString = collect($tables)->pluck('Tables_in_' .$namedatabase)->reject(fn($table) => in_array($table, $list_of_rejected))->implode(',');
|
||||||
|
// Run migration generator
|
||||||
|
Artisan::call("migrate:generate --path=database/migrations --tables=" .$tableString);
|
||||||
|
// Artisan::call("migrate:status");
|
||||||
|
|
||||||
|
$this->info("Migrations generated successfully for database");
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function rejected_table() : Array{
|
||||||
|
return [
|
||||||
|
'alert','auditbarcode','auditdaftar',
|
||||||
|
'auditrekodsemakan','audtrail','bakipelanggan',
|
||||||
|
'bandar','batchlel_xtra','bayaranpenebusan','belian',
|
||||||
|
'brand','checker','configkaunter','gadaisimulasi','gadaitemp',
|
||||||
|
'gadaixtra','hapusgadaionline','hargaemasbeli',
|
||||||
|
'hargaemasjual','imbangan','inoutmarxtra',
|
||||||
|
'jemas00', 'jemasbeli','jemasxtra',
|
||||||
|
'jenisakaun','jualan','jualemas','jumlahtebus',
|
||||||
|
'karat','karatbeli','karatjual','karatxtra',
|
||||||
|
'ku_nm', 'ku_nmbaru', 'ku_nmxtra', 'kumpulan',
|
||||||
|
'kurangxtra', 'lapringkasan', 'laptebus', 'lapterkumpul',
|
||||||
|
'lapterkumpulharian','lelkarat','lelmarhun_xtra', 'marhunbeli',
|
||||||
|
'marhunjual', 'marhunsimulasi', 'marhunxtra', 'model',
|
||||||
|
'outmarhun', 'outmarhunxtra', 'palsu', 'pemeriksaan',
|
||||||
|
'pengesahangadai', ' peratusan', 'percentonline',
|
||||||
|
'polisxtra','product','ramalan', 'rekodtangguh', 'sahabat',
|
||||||
|
'simpanan', 'simulasi_batchlel', 'simulasi_batchlelxtra',
|
||||||
|
'simulasi_lelmarhun', 'simulasi_lelong', 'simulasi_lelongxtra',
|
||||||
|
'tagpelanggan', 'tangguhlelong', 'taraf',
|
||||||
|
'tebus_xtra', 'tebuslelong', 'temp_ic', 'tempimbang',
|
||||||
|
'tempnosiri', 'tempnosirixtra', 'temppwd', 'temptarikhaging',
|
||||||
|
'tunaigadteb', 'tuntutbakixtra', 'ubs_code', 'ugama',
|
||||||
|
'updateserver', 'zparameter', 'zparameterxtra','ZPARAMETER1'];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,95 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Console\Commands;
|
||||||
|
|
||||||
|
use App\Cawangan;
|
||||||
|
use Illuminate\Console\Command;
|
||||||
|
use Illuminate\Support\Facades\Artisan;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
|
class ImportCsv extends Command
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The name and signature of the console command.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $signature = 'csv:import';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The console command description.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $description = 'Import CSV file to MySQL table';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new command instance.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
parent::__construct();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Execute the console command.
|
||||||
|
*
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function handle()
|
||||||
|
{
|
||||||
|
$file = resource_path('data/anggota.csv');
|
||||||
|
$handle = fopen($file, 'r');
|
||||||
|
$header = fgetcsv($handle);
|
||||||
|
|
||||||
|
$columnMap = [
|
||||||
|
'no_anggota' => 'no_anggota',
|
||||||
|
'nama' => 'nama',
|
||||||
|
'no_kp' => 'noic',
|
||||||
|
'telefon' => 'no_tel',
|
||||||
|
];
|
||||||
|
|
||||||
|
$chunk = [];
|
||||||
|
$chunkSize = 1000;
|
||||||
|
$totalRows = 0;
|
||||||
|
|
||||||
|
$bar = $this->output->createProgressBar();
|
||||||
|
$bar->start();
|
||||||
|
|
||||||
|
try {
|
||||||
|
while (($row = fgetcsv($handle)) !== false) {
|
||||||
|
$csvData = array_combine($header, $row);
|
||||||
|
$data = [];
|
||||||
|
|
||||||
|
foreach ($columnMap as $csvCol => $dbCol) {
|
||||||
|
$data[$dbCol] = $csvData[$csvCol] ?? null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$data['status'] = 1;
|
||||||
|
$chunk[] = $data;
|
||||||
|
|
||||||
|
if (count($chunk) >= $chunkSize) {
|
||||||
|
DB::table('anggota')->insertOrIgnore($chunk);
|
||||||
|
$totalRows += count($chunk);
|
||||||
|
$chunk = [];
|
||||||
|
$bar->advance($chunkSize);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($chunk)) {
|
||||||
|
DB::table('anggota')->insertOrIgnore($chunk);
|
||||||
|
$totalRows += count($chunk);
|
||||||
|
}
|
||||||
|
|
||||||
|
$bar->finish();
|
||||||
|
$this->info("\n✅ Successfully imported {$totalRows} rows");
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
$this->error("\n❌ Error: " . $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose($handle);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,345 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Console\Commands;
|
||||||
|
|
||||||
|
use App\Cawangan;
|
||||||
|
use Illuminate\Console\Command;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
|
class InsertSempornaData extends Command
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The name and signature of the console command.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $signature = 'palsu:insert-data {kodcaw=011237 : The kodcaw value to insert data for}';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The console command description.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $description = 'Insert sample data into palsu table for specific kodcaw';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Execute the console command.
|
||||||
|
*
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function handle()
|
||||||
|
{
|
||||||
|
$kodcaw = $this->argument('kodcaw');
|
||||||
|
|
||||||
|
$this->info("Inserting data for kodcaw: {$kodcaw}");
|
||||||
|
|
||||||
|
// Validate if kodcaw exists in Cawangan table
|
||||||
|
$cawangan = DB::connection('mysql7')->table('arrahn_master_db')->where('kodcaw', $kodcaw)->first();
|
||||||
|
|
||||||
|
if (!$cawangan) {
|
||||||
|
$this->error("Error: kodcaw '{$kodcaw}' not found in Cawangan table!");
|
||||||
|
return Command::FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert stdClass to array if needed
|
||||||
|
$cawangan = (array) $cawangan;
|
||||||
|
|
||||||
|
if (!isset($cawangan['mysql']) || empty($cawangan['mysql'])) {
|
||||||
|
$this->error("Error: Database connection not found for kodcaw '{$kodcaw}'!");
|
||||||
|
return Command::FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->info("Using database connection: {$cawangan['mysql']}");
|
||||||
|
|
||||||
|
$data = [
|
||||||
|
[
|
||||||
|
'kodcaw' => $kodcaw,
|
||||||
|
'tarikh' => '2024-11-28',
|
||||||
|
'norujukan' => '011237240808-0003',
|
||||||
|
'teller' => 'DM',
|
||||||
|
'nota' => 'Barang Kes Semporna 28/11/24',
|
||||||
|
'nilaimarhun' => 1748.20,
|
||||||
|
'jbg' => 4,
|
||||||
|
'untung' => 78.00,
|
||||||
|
'untungonepercent' => 52.00,
|
||||||
|
'untungcajlain' => 26.00,
|
||||||
|
'pembiayaan' => 1300.00,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'kodcaw' => $kodcaw,
|
||||||
|
'tarikh' => '2024-11-28',
|
||||||
|
'norujukan' => '011237240719-0015',
|
||||||
|
'teller' => 'DM',
|
||||||
|
'nota' => 'Barang Kes Semporna 28/11/24',
|
||||||
|
'nilaimarhun' => 8499.80,
|
||||||
|
'jbg' => 4.5,
|
||||||
|
'untung' => 519.30,
|
||||||
|
'untungonepercent' => 305.55,
|
||||||
|
'untungcajlain' => 213.75,
|
||||||
|
'pembiayaan' => 6790.00,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'kodcaw' => $kodcaw,
|
||||||
|
'tarikh' => '2024-11-28',
|
||||||
|
'norujukan' => '011237240806-0011',
|
||||||
|
'teller' => 'DM',
|
||||||
|
'nota' => 'Barang Kes Semporna 28/11/24',
|
||||||
|
'nilaimarhun' => 8740.98,
|
||||||
|
'jbg' => 4,
|
||||||
|
'untung' => 475.40,
|
||||||
|
'untungonepercent' => 279.60,
|
||||||
|
'untungcajlain' => 195.80,
|
||||||
|
'pembiayaan' => 6990.00,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'kodcaw' => $kodcaw,
|
||||||
|
'tarikh' => '2024-11-28',
|
||||||
|
'norujukan' => '011237240828-0001',
|
||||||
|
'teller' => 'DM',
|
||||||
|
'nota' => 'Barang Kes Semporna 28/11/24',
|
||||||
|
'nilaimarhun' => 8121.20,
|
||||||
|
'jbg' => 3,
|
||||||
|
'untung' => 316.65,
|
||||||
|
'untungonepercent' => 182.70,
|
||||||
|
'untungcajlain' => 133.95,
|
||||||
|
'pembiayaan' => 6090.00,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'kodcaw' => $kodcaw,
|
||||||
|
'tarikh' => '2024-11-28',
|
||||||
|
'norujukan' => '011237240904-0007',
|
||||||
|
'teller' => 'DM',
|
||||||
|
'nota' => 'Barang Kes Semporna 28/11/24',
|
||||||
|
'nilaimarhun' => 16135.20,
|
||||||
|
'jbg' => 3,
|
||||||
|
'untung' => 617.10,
|
||||||
|
'untungonepercent' => 363.00,
|
||||||
|
'untungcajlain' => 254.10,
|
||||||
|
'pembiayaan' => 12100.00,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'kodcaw' => $kodcaw,
|
||||||
|
'tarikh' => '2024-11-28',
|
||||||
|
'norujukan' => '011237240904-0008',
|
||||||
|
'teller' => 'DM',
|
||||||
|
'nota' => 'Barang Kes Semporna 28/11/24',
|
||||||
|
'nilaimarhun' => 12101.40,
|
||||||
|
'jbg' => 3,
|
||||||
|
'untung' => 462.60,
|
||||||
|
'untungonepercent' => 272.10,
|
||||||
|
'untungcajlain' => 190.50,
|
||||||
|
'pembiayaan' => 9070.00,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'kodcaw' => $kodcaw,
|
||||||
|
'tarikh' => '2024-11-28',
|
||||||
|
'norujukan' => '011237240904-0009',
|
||||||
|
'teller' => 'DM',
|
||||||
|
'nota' => 'Barang Kes Semporna 28/11/24',
|
||||||
|
'nilaimarhun' => 6050.70,
|
||||||
|
'jbg' => 3,
|
||||||
|
'untung' => 231.00,
|
||||||
|
'untungonepercent' => 135.90,
|
||||||
|
'untungcajlain' => 95.10,
|
||||||
|
'pembiayaan' => 4530.00,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'kodcaw' => $kodcaw,
|
||||||
|
'tarikh' => '2024-11-28',
|
||||||
|
'norujukan' => '011237240719-0023',
|
||||||
|
'teller' => 'DM',
|
||||||
|
'nota' => 'Barang Kes Semporna 28/11/24',
|
||||||
|
'nilaimarhun' => 19001.24,
|
||||||
|
'jbg' => 4.5,
|
||||||
|
'untung' => 149.18,
|
||||||
|
'untungonepercent' => 87.75,
|
||||||
|
'untungcajlain' => 61.43,
|
||||||
|
'pembiayaan' => 1950.00,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'kodcaw' => $kodcaw,
|
||||||
|
'tarikh' => '2024-11-28',
|
||||||
|
'norujukan' => '011237240719-0024',
|
||||||
|
'teller' => 'DM',
|
||||||
|
'nota' => 'Barang Kes Semporna 28/11/24',
|
||||||
|
'nilaimarhun' => 8499.80,
|
||||||
|
'jbg' => 4.5,
|
||||||
|
'untung' => 65.03,
|
||||||
|
'untungonepercent' => 38.25,
|
||||||
|
'untungcajlain' => 26.78,
|
||||||
|
'pembiayaan' => 850.00,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'kodcaw' => $kodcaw,
|
||||||
|
'tarikh' => '2024-11-28',
|
||||||
|
'norujukan' => '011237240719-0025',
|
||||||
|
'teller' => 'DM',
|
||||||
|
'nota' => 'Barang Kes Semporna 28/11/24',
|
||||||
|
'nilaimarhun' => 15972.57,
|
||||||
|
'jbg' => 4.5,
|
||||||
|
'untung' => 122.40,
|
||||||
|
'untungonepercent' => 72.00,
|
||||||
|
'untungcajlain' => 50.40,
|
||||||
|
'pembiayaan' => 1600.00,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'kodcaw' => $kodcaw,
|
||||||
|
'tarikh' => '2024-11-28',
|
||||||
|
'norujukan' => '011237240618-0026',
|
||||||
|
'teller' => 'DM',
|
||||||
|
'nota' => 'Barang Kes Semporna 28/11/24',
|
||||||
|
'nilaimarhun' => 8552.90,
|
||||||
|
'jbg' => 5.5,
|
||||||
|
'untung' => 187.00,
|
||||||
|
'untungonepercent' => 110.00,
|
||||||
|
'untungcajlain' => 77.00,
|
||||||
|
'pembiayaan' => 2000.00,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'kodcaw' => $kodcaw,
|
||||||
|
'tarikh' => '2024-11-28',
|
||||||
|
'norujukan' => '011237240719-0027',
|
||||||
|
'teller' => 'DM',
|
||||||
|
'nota' => 'Barang Kes Semporna 28/11/24',
|
||||||
|
'nilaimarhun' => 42923.11,
|
||||||
|
'jbg' => 4.5,
|
||||||
|
'untung' => 328.95,
|
||||||
|
'untungonepercent' => 193.50,
|
||||||
|
'untungcajlain' => 135.45,
|
||||||
|
'pembiayaan' => 4300.00,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'kodcaw' => $kodcaw,
|
||||||
|
'tarikh' => '2024-11-28',
|
||||||
|
'norujukan' => '011237240719-0028',
|
||||||
|
'teller' => 'DM',
|
||||||
|
'nota' => 'Barang Kes Semporna 28/11/24',
|
||||||
|
'nilaimarhun' => 41872.04,
|
||||||
|
'jbg' => 4.5,
|
||||||
|
'untung' => 321.30,
|
||||||
|
'untungonepercent' => 189.00,
|
||||||
|
'untungcajlain' => 132.30,
|
||||||
|
'pembiayaan' => 4200.00,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'kodcaw' => $kodcaw,
|
||||||
|
'tarikh' => '2024-11-28',
|
||||||
|
'norujukan' => '011237240618-0020',
|
||||||
|
'teller' => 'DM',
|
||||||
|
'nota' => 'Barang Kes Semporna 28/11/24',
|
||||||
|
'nilaimarhun' => 15495.86,
|
||||||
|
'jbg' => 5.5,
|
||||||
|
'untung' => 280.50,
|
||||||
|
'untungonepercent' => 165.00,
|
||||||
|
'untungcajlain' => 115.50,
|
||||||
|
'pembiayaan' => 3000.00,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'kodcaw' => $kodcaw,
|
||||||
|
'tarikh' => '2024-11-28',
|
||||||
|
'norujukan' => '011237240719-0030',
|
||||||
|
'teller' => 'DM',
|
||||||
|
'nota' => 'Barang Kes Semporna 28/11/24',
|
||||||
|
'nilaimarhun' => 17483.01,
|
||||||
|
'jbg' => 4.5,
|
||||||
|
'untung' => 133.88,
|
||||||
|
'untungonepercent' => 78.75,
|
||||||
|
'untungcajlain' => 55.13,
|
||||||
|
'pembiayaan' => 1750.00,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'kodcaw' => $kodcaw,
|
||||||
|
'tarikh' => '2024-11-28',
|
||||||
|
'norujukan' => '011237240618-0029',
|
||||||
|
'teller' => 'DM',
|
||||||
|
'nota' => 'Barang Kes Semporna 28/11/24',
|
||||||
|
'nilaimarhun' => 10062.25,
|
||||||
|
'jbg' => 5.5,
|
||||||
|
'untung' => 280.50,
|
||||||
|
'untungonepercent' => 165.00,
|
||||||
|
'untungcajlain' => 115.50,
|
||||||
|
'pembiayaan' => 3000.00,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'kodcaw' => $kodcaw,
|
||||||
|
'tarikh' => '2024-11-28',
|
||||||
|
'norujukan' => '011237240731-0026',
|
||||||
|
'teller' => 'DM',
|
||||||
|
'nota' => 'Barang Kes Semporna 28/11/24',
|
||||||
|
'nilaimarhun' => 10283.50,
|
||||||
|
'jbg' => 4.5,
|
||||||
|
'untung' => 558.45,
|
||||||
|
'untungonepercent' => 328.50,
|
||||||
|
'untungcajlain' => 229.95,
|
||||||
|
'pembiayaan' => 7300.00,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'kodcaw' => $kodcaw,
|
||||||
|
'tarikh' => '2024-11-28',
|
||||||
|
'norujukan' => '011237240715-0027',
|
||||||
|
'teller' => 'DM',
|
||||||
|
'nota' => 'Barang Kes Semporna 28/11/24',
|
||||||
|
'nilaimarhun' => 29624.77,
|
||||||
|
'jbg' => 4.5,
|
||||||
|
'untung' => 1147.50,
|
||||||
|
'untungonepercent' => 675.00,
|
||||||
|
'untungcajlain' => 472.50,
|
||||||
|
'pembiayaan' => 15000.00,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'kodcaw' => $kodcaw,
|
||||||
|
'tarikh' => '2024-11-28',
|
||||||
|
'norujukan' => '011237240912-0009',
|
||||||
|
'teller' => 'DM',
|
||||||
|
'nota' => 'Barang Kes Semporna 28/11/24',
|
||||||
|
'nilaimarhun' => 12654.35,
|
||||||
|
'jbg' => 3,
|
||||||
|
'untung' => 428.40,
|
||||||
|
'untungonepercent' => 252.00,
|
||||||
|
'untungcajlain' => 176.40,
|
||||||
|
'pembiayaan' => 8400.00,
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
$insertedCount = 0;
|
||||||
|
$skippedCount = 0;
|
||||||
|
|
||||||
|
// Start database transaction
|
||||||
|
DB::connection($cawangan['mysql'])->beginTransaction();
|
||||||
|
|
||||||
|
try {
|
||||||
|
foreach ($data as $record) {
|
||||||
|
// Check if record already exists
|
||||||
|
$exists = DB::connection($cawangan['mysql'])->table('palsu')
|
||||||
|
->where('kodcaw', $record['kodcaw'])
|
||||||
|
->where('norujukan', $record['norujukan'])
|
||||||
|
->exists();
|
||||||
|
|
||||||
|
if (!$exists) {
|
||||||
|
DB::connection($cawangan['mysql'])->table('palsu')->insert($record);
|
||||||
|
$insertedCount++;
|
||||||
|
$this->line("✓ Inserted: {$record['norujukan']}");
|
||||||
|
} else {
|
||||||
|
$skippedCount++;
|
||||||
|
$this->line("- Skipped: {$record['norujukan']} (already exists)");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Commit the transaction if everything is successful
|
||||||
|
DB::connection($cawangan['mysql'])->commit();
|
||||||
|
$this->info("✓ Transaction committed successfully!");
|
||||||
|
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
// Rollback the transaction if any error occurs
|
||||||
|
DB::connection($cawangan['mysql'])->rollback();
|
||||||
|
$this->error("✗ Transaction failed and rolled back: " . $e->getMessage());
|
||||||
|
return Command::FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->info("\nSummary:");
|
||||||
|
$this->info("Inserted: {$insertedCount} records");
|
||||||
|
$this->info("Skipped: {$skippedCount} records");
|
||||||
|
|
||||||
|
return Command::SUCCESS;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -7,6 +7,7 @@ use Illuminate\Console\Scheduling\Schedule;
|
|||||||
use Laravel\Lumen\Console\Kernel as ConsoleKernel;
|
use Laravel\Lumen\Console\Kernel as ConsoleKernel;
|
||||||
|
|
||||||
use App\Jobs\WhatsappUnsoldCommodityScanner;
|
use App\Jobs\WhatsappUnsoldCommodityScanner;
|
||||||
|
use Faker\Provider\ar_SA\Color;
|
||||||
use Illuminate\Console\Command;
|
use Illuminate\Console\Command;
|
||||||
|
|
||||||
class Kernel extends ConsoleKernel
|
class Kernel extends ConsoleKernel
|
||||||
@@ -22,6 +23,8 @@ class Kernel extends ConsoleKernel
|
|||||||
Commands\CawanganDebugConnections::class,
|
Commands\CawanganDebugConnections::class,
|
||||||
Commands\ClearCachesAll::class,
|
Commands\ClearCachesAll::class,
|
||||||
Commands\RestartSupervisor::class,
|
Commands\RestartSupervisor::class,
|
||||||
|
Commands\InsertSempornaData::class,
|
||||||
|
//Commands\ImportCsv::class,
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -61,7 +61,8 @@ class Customer extends Model
|
|||||||
'kumpulan',
|
'kumpulan',
|
||||||
'telefon2',
|
'telefon2',
|
||||||
'nota_pekerjaan',
|
'nota_pekerjaan',
|
||||||
'tagpelanggan'
|
'tagpelanggan',
|
||||||
|
'tag_anggota'
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+2
-1
@@ -23,7 +23,8 @@ class GlDetail extends Model
|
|||||||
'amaun',
|
'amaun',
|
||||||
'pendahuluan',
|
'pendahuluan',
|
||||||
'serahan',
|
'serahan',
|
||||||
'teller'
|
'teller',
|
||||||
|
'date_created'
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ use App\Status;
|
|||||||
use App\LookupStatus;
|
use App\LookupStatus;
|
||||||
use App\ARFiles;
|
use App\ARFiles;
|
||||||
use App\WTDDraft;
|
use App\WTDDraft;
|
||||||
|
use App\WTDSimulasi;
|
||||||
use App\SerahBaki;
|
use App\SerahBaki;
|
||||||
use App\WTD;
|
use App\WTD;
|
||||||
use App\StokAudit1;
|
use App\StokAudit1;
|
||||||
@@ -2363,19 +2364,84 @@ class AdminPageController extends Controller
|
|||||||
|
|
||||||
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$request->kodcaw)->first();
|
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$request->kodcaw)->first();
|
||||||
|
|
||||||
$latestbatch = SerahBaki::on($cawangan['mysql'])->where('norujukan','baru')->get()->toArray();
|
//$latestbatch = SerahBaki::on($cawangan['mysql'])->where('norujukan','baru')->get()->toArray();
|
||||||
|
//new added
|
||||||
|
$serahBaki = SerahBaki::on($cawangan['mysql'])
|
||||||
|
->where('norujukan', 'baru')
|
||||||
|
->get();
|
||||||
|
|
||||||
|
$allBatchNo = $serahBaki->pluck('batchno')->unique()->toArray();
|
||||||
|
|
||||||
|
$wtddraftData = WTDDraft::on('mysql7')
|
||||||
|
->selectRaw("
|
||||||
|
batchno_serah,
|
||||||
|
YEAR(t_jual) as tahun,
|
||||||
|
GROUP_CONCAT(
|
||||||
|
DISTINCT MONTH(t_jual)
|
||||||
|
ORDER BY MONTH(t_jual)
|
||||||
|
SEPARATOR ','
|
||||||
|
) as bulan
|
||||||
|
")
|
||||||
|
->where('kodcaw', $request->kodcaw)
|
||||||
|
->whereIn('batchno_serah', $allBatchNo)
|
||||||
|
->groupBy('batchno_serah', DB::raw('YEAR(t_jual)'))
|
||||||
|
->get()
|
||||||
|
->groupBy('batchno_serah')
|
||||||
|
->map(function ($rows) {
|
||||||
|
return $rows->map(function ($row) {
|
||||||
|
return [
|
||||||
|
'tahun' => $row->tahun,
|
||||||
|
'bulan' => $row->bulan
|
||||||
|
];
|
||||||
|
})->values();
|
||||||
|
});
|
||||||
|
|
||||||
|
$finalData = $serahBaki->map(function ($item) use ($wtddraftData) {
|
||||||
|
$batchno = $item->batchno;
|
||||||
|
|
||||||
|
$tahun = null;
|
||||||
|
$bulan = [];
|
||||||
|
|
||||||
|
if (!empty($wtddraftData[$batchno])) {
|
||||||
|
// ambil tahun pertama (kebiasaannya satu tahun sahaja)
|
||||||
|
$tahun = $wtddraftData[$batchno][0]['tahun'];
|
||||||
|
|
||||||
|
// convert string "2,3,4,5" → array
|
||||||
|
$bulan = explode(',', $wtddraftData[$batchno][0]['bulan']);
|
||||||
|
}
|
||||||
|
|
||||||
|
return [
|
||||||
|
'batchno' => $batchno,
|
||||||
|
'norujukan' => $item->norujukan,
|
||||||
|
'tarikh' => $item->tarikh,
|
||||||
|
't_jual' => $item->t_jual,
|
||||||
|
'baki' => $item->baki,
|
||||||
|
't_htr_ag' => $item->t_htr_ag,
|
||||||
|
'aktif' => $item->aktif,
|
||||||
|
'tahun' => $tahun,
|
||||||
|
'bulan' => implode(',',$bulan),
|
||||||
|
// field lain kekal
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
$finalDataArray = $finalData->toArray();
|
||||||
|
//end new added
|
||||||
|
|
||||||
$batch_old = WTDDraft::on('mysql7')->select('kodcaw')->where('batchno_serah',0)->where('kodcaw',$request->kodcaw)
|
$batch_old = WTDDraft::on('mysql7')->select('kodcaw')->where('batchno_serah',0)->where('kodcaw',$request->kodcaw)
|
||||||
->groupBy('kodcaw')->get();
|
->groupBy('kodcaw')->get();
|
||||||
|
|
||||||
$batch_old_noruj = WTDDraft::on('mysql7')->where('batchno_serah',0)->where('kodcaw',$request->kodcaw)->pluck('norujukan');
|
$batch_old_noruj = WTDDraft::on('mysql7')->where('batchno_serah',0)->where('kodcaw',$request->kodcaw)->pluck('norujukan');
|
||||||
$lelong_data = Lelong::on($cawangan['mysql'])->whereIn('norujukan',$batch_old_noruj)->get();
|
$lelong_data = Lelong::on($cawangan['mysql'])->whereIn('norujukan',$batch_old_noruj)->get();
|
||||||
|
|
||||||
foreach($batch_old as $index=>$bo)
|
foreach($batch_old as $index=>$bo)
|
||||||
{
|
{
|
||||||
array_push($latestbatch,['recno' => 0,'norujukan' => 'lama','batchno' => 0,'baki' => $lelong_data->sum('baki'),'aktif' => 1]);
|
//array_push($latestbatch,['recno' => 0,'norujukan' => 'lama','batchno' => 0,'baki' => $lelong_data->sum('baki'),'aktif' => 1]);
|
||||||
|
array_push($finalDataArray,['recno' => 0,'norujukan' => 'lama','batchno' => 0,'baki' => $lelong_data->sum('baki'),'aktif' => 1]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$data = $this->paginate($latestbatch,8);
|
//$data = $this->paginate($latestbatch,8);
|
||||||
|
$data = $this->paginate($finalDataArray,8);
|
||||||
|
|
||||||
return response()->json($data,200);
|
return response()->json($data,200);
|
||||||
|
|
||||||
@@ -2697,8 +2763,9 @@ class AdminPageController extends Controller
|
|||||||
't_update' => $current->toDateString()));
|
't_update' => $current->toDateString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
$serahbakiupdate = SerahBaki::on($cawangan['mysql'])->where('batchno',$batchno)->update(array('aktif' => 1,'t_jual' => $current->toDateString(),'nopelanggan' => $request->nocek));;
|
//$serahbakiupdate = SerahBaki::on($cawangan['mysql'])->where('batchno',$batchno)->update(array('aktif' => 1,'t_jual' => $current->toDateString(),'nopelanggan' => $request->nocek));;
|
||||||
|
$serahbakiupdate = SerahBaki::on($cawangan['mysql'])->where('batchno',$batchno)->update(array('aktif' => 1,'t_jual' => $current->toDateString(),'nopelanggan' => $request->nocek,'t_htr_ag' => $request->tarikhAG));
|
||||||
|
|
||||||
return response()->json('success',200);
|
return response()->json('success',200);
|
||||||
|
|
||||||
}catch (\Throwable $e){
|
}catch (\Throwable $e){
|
||||||
@@ -3080,34 +3147,83 @@ class AdminPageController extends Controller
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
public function BilanganPengadai(Request $request){
|
public function BilanganPengadai(Request $request)
|
||||||
|
{
|
||||||
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$request->kodcaw)->first();
|
$cawangan = Cawangan::on('mysql7')->where('kodcaw', $request->kodcaw)->first();
|
||||||
|
|
||||||
|
$gadai = Gadai::on($cawangan['mysql'])
|
||||||
$gadai = Gadai::on($cawangan['mysql'])
|
->where('t_gadai', '>=', $request->mula)
|
||||||
->where([['t_gadai','>=',$request->mula],['t_gadai','<=',$request->hingga]])
|
->where('t_gadai', '<=', $request->hingga)
|
||||||
->where('sttebus','=','')
|
->where('sttebus', '')
|
||||||
->select('nokp','sttebus')
|
->select('nokp')
|
||||||
->groupBy('nokp')->get();
|
->groupBy('nokp')
|
||||||
|
->get();
|
||||||
$gadai_pluck_nokp = $gadai->pluck('nokp');
|
|
||||||
|
$gadai_pluck_nokp = $gadai->pluck('nokp');
|
||||||
if($request->jenis == 'pekerja'){
|
$jenis = $request->jenis;
|
||||||
|
$filter_value = $request->value ?? null;
|
||||||
$customers = Customer::on('mysql7')
|
|
||||||
->selectRaw('COUNT(*) AS bilangangadai')
|
$customers = [];
|
||||||
->addSelect(DB::connection($cawangan['mysql'])
|
|
||||||
->raw('keterangan as keterangan'))
|
if ($jenis === 'pekerja') {
|
||||||
->whereIn('kpbaru', $gadai_pluck_nokp)
|
$customers = Customer::on('mysql7')
|
||||||
->orWhereIn('kplama', $gadai_pluck_nokp)
|
->selectRaw('pekerjaan.keterangan, COUNT(*) AS bilangangadai')
|
||||||
->join('pekerjaan','customer.kodkerja','=','pekerjaan.kodkerja')
|
->whereIn('kpbaru', $gadai_pluck_nokp)
|
||||||
->groupBy('pekerjaan.kodkerja')
|
->orWhereIn('kplama', $gadai_pluck_nokp)
|
||||||
->get();
|
->join('pekerjaan', 'customer.kodkerja', '=', 'pekerjaan.kodkerja')
|
||||||
|
->groupBy('pekerjaan.kodkerja')
|
||||||
|
->get();
|
||||||
|
|
||||||
|
} elseif ($jenis === 'agama') {
|
||||||
|
$agamaMap = [
|
||||||
|
'01' => 'Islam',
|
||||||
|
'02' => 'Hindu',
|
||||||
|
'03' => 'Buddha',
|
||||||
|
'04' => 'Kristian',
|
||||||
|
'05' => 'Lain-lain',
|
||||||
|
'' => 'Tiada Data',
|
||||||
|
];
|
||||||
|
|
||||||
|
$query = Customer::on('mysql7')
|
||||||
|
->selectRaw('kodugama as keterangan, COUNT(*) as bilangangadai')
|
||||||
|
->whereIn('kpbaru', $gadai_pluck_nokp)
|
||||||
|
->orWhereIn('kplama', $gadai_pluck_nokp);
|
||||||
|
|
||||||
|
if ($filter_value) {
|
||||||
|
$query->where('kodugama', $filter_value); // contoh: '01'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$customers = $query->groupBy('kodugama')->get();
|
||||||
|
|
||||||
|
foreach ($customers as $customer) {
|
||||||
|
$customer->keterangan = $agamaMap[$customer->keterangan] ?? $customer->keterangan;
|
||||||
|
}
|
||||||
|
|
||||||
|
} elseif ($jenis === 'bangsa') {
|
||||||
|
$bangsaMap = [
|
||||||
|
'M' => 'Melayu',
|
||||||
|
'C' => 'Cina',
|
||||||
|
'I' => 'India',
|
||||||
|
'L' => 'Lain-lain',
|
||||||
|
'' => 'Tiada Data',
|
||||||
|
];
|
||||||
|
|
||||||
|
$query = Customer::on('mysql7')
|
||||||
|
->selectRaw('bangsa as keterangan, COUNT(*) as bilangangadai')
|
||||||
|
->whereIn('kpbaru', $gadai_pluck_nokp)
|
||||||
|
->orWhereIn('kplama', $gadai_pluck_nokp);
|
||||||
|
|
||||||
|
if ($filter_value) {
|
||||||
|
$query->where('bangsa', $filter_value); // contoh: 'M'
|
||||||
|
}
|
||||||
|
|
||||||
|
$customers = $query->groupBy('bangsa')->get();
|
||||||
|
|
||||||
|
foreach ($customers as $customer) {
|
||||||
|
$customer->keterangan = $bangsaMap[$customer->keterangan] ?? $customer->keterangan;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return response()->json($customers);
|
return response()->json($customers);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3708,16 +3824,16 @@ class AdminPageController extends Controller
|
|||||||
|
|
||||||
$get_imbangduga = imbangdugabackup::on($cawangan['mysql'])->where('tarikh', $lastDayOfYear)->first();
|
$get_imbangduga = imbangdugabackup::on($cawangan['mysql'])->where('tarikh', $lastDayOfYear)->first();
|
||||||
$get_imbangduga = optional($get_imbangduga)->toArray() ?? [];
|
$get_imbangduga = optional($get_imbangduga)->toArray() ?? [];
|
||||||
if(empty($get_imbangduga)){
|
// if(empty($get_imbangduga)){
|
||||||
$requestData = new Request([
|
// $requestData = new Request([
|
||||||
'tarikh' => $request->tarikh,
|
// 'tarikh' => $request->tarikh,
|
||||||
'kodcaw' => $kodcaw,
|
// 'kodcaw' => $kodcaw,
|
||||||
]);
|
// ]);
|
||||||
$exception_case = $this->AkruKeuntunganSebenar($requestData);
|
// $exception_case = $this->AkruKeuntunganSebenar($requestData);
|
||||||
}
|
// }
|
||||||
|
|
||||||
$backdate_keun_sebenar += isset($get_imbangduga['keun_sebenar']) ? $get_imbangduga['keun_sebenar'] : 0;
|
$backdate_keun_sebenar += isset($get_imbangduga['keun_sebenar']) ? $get_imbangduga['keun_sebenar'] : 0;
|
||||||
$backdate_keun_sebenar += $exception_case;
|
$backdate_keun_sebenar += (float) ($exception_case ?? 0);
|
||||||
$recentDate->subYear()->startOfYear();
|
$recentDate->subYear()->startOfYear();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3906,4 +4022,222 @@ class AdminPageController extends Controller
|
|||||||
'result' => $status === 'completed' ? $result : null,
|
'result' => $status === 'completed' ? $result : null,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//function wtd baru
|
||||||
|
public function janaSimulasiWTD(Request $request)
|
||||||
|
{
|
||||||
|
$cawangan = Cawangan::on('mysql7')->where('kodcaw', '=', $request->kodcaw)->first();
|
||||||
|
|
||||||
|
//listing sag belum tuntut cwgn
|
||||||
|
$sag_cwgn = collect(
|
||||||
|
Lelong::on($cawangan['mysql'])
|
||||||
|
->selectRaw('norujukan')
|
||||||
|
->whereYear('t_jual', $request->tahun)
|
||||||
|
->whereNull('trkhtuntut')
|
||||||
|
->where('baki', '>', 0)
|
||||||
|
->pluck('norujukan') // lebih bersih
|
||||||
|
);
|
||||||
|
|
||||||
|
//listing sag blocked
|
||||||
|
$sag_online = collect(
|
||||||
|
WTDDraft::on('mysql7')
|
||||||
|
->selectRaw('norujukan')
|
||||||
|
->where('kodcaw', '=', $request->kodcaw)
|
||||||
|
->pluck('norujukan')
|
||||||
|
);
|
||||||
|
//dd($sag_online);
|
||||||
|
//filter sag yg tk wujud dlm wtd_draft
|
||||||
|
$filtersag = $sag_cwgn->diff($sag_online);
|
||||||
|
|
||||||
|
//query baru
|
||||||
|
$tarikh_belum_tuntut = Lelong::on($cawangan['mysql'])
|
||||||
|
->selectRaw('
|
||||||
|
MONTH(t_jual) as bulan,
|
||||||
|
SUM(pinjaman) as pembiayaan,
|
||||||
|
ABS(SUM(baki)) as baki,
|
||||||
|
COUNT(DISTINCT norujukan) as jumlah_norujukan,
|
||||||
|
kodcaw
|
||||||
|
')
|
||||||
|
->whereIn('norujukan', $filtersag)
|
||||||
|
->groupBy('bulan', 'kodcaw')
|
||||||
|
->orderBy('bulan')
|
||||||
|
->get();
|
||||||
|
|
||||||
|
$tarikh_belum_tuntut = $tarikh_belum_tuntut->map(function ($item) {
|
||||||
|
$item->bulan = \Carbon\Carbon::create()->month($item->bulan)->format('F');
|
||||||
|
return $item;
|
||||||
|
});
|
||||||
|
|
||||||
|
return response()->json($tarikh_belum_tuntut);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function RekodSimulasiWTD(Request $request)
|
||||||
|
{
|
||||||
|
$cawangan = Cawangan::on('mysql7')->where('kodcaw', '=', $request->kodcaw)->first();
|
||||||
|
|
||||||
|
$rekod_simulasi = Lelong::on($cawangan['mysql'])
|
||||||
|
->join('gadai','lelong.norujukan','=','gadai.norujukan')
|
||||||
|
->selectRaw('ABS(lelong.baki) as baki, lelong.t_lelong, lelong.pinjaman, lelong.norujukan, gadai.nokp')
|
||||||
|
->whereMonth('lelong.t_jual', $request->month)
|
||||||
|
->whereYear('lelong.t_jual', $request->year)
|
||||||
|
->whereNull('lelong.trkhtuntut')
|
||||||
|
->where('lelong.baki', '>', 0)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
return response()->json($rekod_simulasi);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function prosesSimulasiWTD(Request $request)
|
||||||
|
{
|
||||||
|
$proses = $request->input;
|
||||||
|
|
||||||
|
// dd($proses, $cawangan);
|
||||||
|
|
||||||
|
$baki = 0;
|
||||||
|
$jumlahPembiayaan = 0;
|
||||||
|
$simulasi = WTDSimulasi::max('simulasi')+1;
|
||||||
|
|
||||||
|
foreach ($proses as $item) {
|
||||||
|
WTDSimulasi::create([
|
||||||
|
'bulan' => $item['bulan'],
|
||||||
|
'tahun' => $item['tahun'],
|
||||||
|
'kodcaw' => $item['kodcaw'],
|
||||||
|
'jumlah_sag' => $item['jumlah_sag'],
|
||||||
|
'pembiayaan'=> $item['pembiayaan'],
|
||||||
|
'baki'=> $item['baki'],
|
||||||
|
'simulasi' => $simulasi,
|
||||||
|
]);
|
||||||
|
$baki += $item['baki'];
|
||||||
|
$jumlahPembiayaan = $item['pembiayaan'];
|
||||||
|
}
|
||||||
|
|
||||||
|
return response()->json(['status' => 'success','simulasi' => $simulasi,'baki' => $baki,'pinjaman' => $jumlahPembiayaan]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function pengesahanSimulasiWTD(Request $request)
|
||||||
|
{
|
||||||
|
// Decode the JSON records from the request
|
||||||
|
$records = json_decode($request->records, true);
|
||||||
|
|
||||||
|
// Retrieve and clean 'kodcaw' from the request
|
||||||
|
$kodcaw = $request->kodcaw;
|
||||||
|
$kodcaw_clean = str_replace('"', '', $kodcaw);
|
||||||
|
|
||||||
|
// Get the database connection for the branch (cawangan)
|
||||||
|
$cawangan = Cawangan::where('kodcaw', $kodcaw_clean)->first();
|
||||||
|
|
||||||
|
// Check if 'Cawangan' exists
|
||||||
|
if (!$cawangan) {
|
||||||
|
return response()->json(['status' => 'error', 'message' => 'Invalid branch code (kodcaw).'], 404);
|
||||||
|
}
|
||||||
|
|
||||||
|
$cawangan_connection = $cawangan->mysql;
|
||||||
|
|
||||||
|
// Get the latest batch number and increment it
|
||||||
|
$latestBatch = SerahBaki::on($cawangan_connection)->max('batchno') + 1;
|
||||||
|
|
||||||
|
// Initialize total variables
|
||||||
|
$totalPembiayaan = 0;
|
||||||
|
$totalBaki = 0;
|
||||||
|
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Iterate through the records and save them to the WTDDraft table
|
||||||
|
foreach ($records as $record) {
|
||||||
|
// Check if 'bulan' and 'tahun' exist in the record
|
||||||
|
if (!isset($record['bulan']) || !isset($record['tahun'])) {
|
||||||
|
return response()->json(['status' => 'error', 'message' => 'Missing bulan or tahun in records.'], 400);
|
||||||
|
}
|
||||||
|
$month = DateTime::createFromFormat('F', $record["bulan"])->format('n');
|
||||||
|
|
||||||
|
|
||||||
|
// Query norujukan records from the database
|
||||||
|
$query_norujukan = Lelong::on($cawangan_connection)
|
||||||
|
->join('gadai', 'lelong.norujukan', '=', 'gadai.norujukan')
|
||||||
|
->selectRaw('ABS(lelong.baki) as baki, lelong.t_lelong, lelong.pinjaman, lelong.norujukan, gadai.nokp, lelong.t_jual')
|
||||||
|
->whereMonth('lelong.t_jual', $month)
|
||||||
|
->whereYear('lelong.t_jual', $record["tahun"])
|
||||||
|
->whereNull('lelong.trkhtuntut')
|
||||||
|
->where('lelong.baki', '>', 0)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
// Save each record to the WTDDraft table
|
||||||
|
foreach ($query_norujukan as $query) {
|
||||||
|
$wtddraft = new WTDDraft();
|
||||||
|
$wtddraft->nokp = $query['nokp'];
|
||||||
|
$wtddraft->kodcaw = $kodcaw_clean;
|
||||||
|
$wtddraft->norujukan = $query['norujukan'];
|
||||||
|
$wtddraft->t_jual = $query['t_jual'];
|
||||||
|
$wtddraft->t_gadai = $query['t_gadai'] ?? null; // Optional: ensure 't_gadai' exists
|
||||||
|
$wtddraft->t_lelong = $query['t_lelong'];
|
||||||
|
$wtddraft->batchno_serah = $latestBatch;
|
||||||
|
$wtddraft->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Accumulate totals
|
||||||
|
$totalPembiayaan += $record['pembiayaan'] ?? 0;
|
||||||
|
$totalBaki += $record['baki'] ?? 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create a new record in the SerahBaki table
|
||||||
|
SerahBaki::on($cawangan_connection)->create([
|
||||||
|
'norujukan' => 'baru',
|
||||||
|
'batchno' => $latestBatch,
|
||||||
|
'hargajual' => 0.00,
|
||||||
|
'pinjaman' => $totalPembiayaan,
|
||||||
|
'upah' => 0.00,
|
||||||
|
'cajlel' => 0.00,
|
||||||
|
'gst_cl' => 0.00,
|
||||||
|
'gst_hj' => 0.00,
|
||||||
|
'baki' => $totalBaki,
|
||||||
|
'tarikh' => Carbon::now()->toDateString(),
|
||||||
|
't_jual' => Carbon::now()->toDateString(),
|
||||||
|
'nopelanggan' => '',
|
||||||
|
'aktif' => 0,
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Return a success response with the new batch number
|
||||||
|
return response()->json(['status' => 'success', 'batchno' => $latestBatch], 200);
|
||||||
|
|
||||||
|
} catch (\Throwable $e) {
|
||||||
|
// Log the error and return a failure response
|
||||||
|
Log::error($e->getMessage());
|
||||||
|
Log::error($e->getLine());
|
||||||
|
return response()->json(['status' => 'error', 'message' => $e->getMessage()], 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public function simulasiToDraft(Request $request)
|
||||||
|
{
|
||||||
|
$bulan = $request->bulan;
|
||||||
|
|
||||||
|
if (!$bulan || count($bulan) === 0) {
|
||||||
|
return response()->json(['error' => 'Sila pilih sekurang-kurangnya satu bulan.'], 400);
|
||||||
|
}
|
||||||
|
|
||||||
|
$simulasi = WTDSimulasi::whereIn('bulan', $bulan)->get();
|
||||||
|
|
||||||
|
if ($simulasi->isEmpty()) {
|
||||||
|
return response()->json(['error' => 'Tiada data untuk bulan yang dipilih.'], 404);
|
||||||
|
}
|
||||||
|
|
||||||
|
// foreach ($simulasi as $data) {
|
||||||
|
// WTDDraft::create([
|
||||||
|
// 'nokp' => $data->nokp ?? null,
|
||||||
|
// 'kodcaw' => $data->kodcaw ?? null,
|
||||||
|
// 'norujukan' => $data->norujukan ?? null,
|
||||||
|
// 't_jual' => $data->t_jual ?? null,
|
||||||
|
// 't_gadai' => $data->t_gadai ?? null,
|
||||||
|
// 't_lelong' => $data->t_lelong ?? null,
|
||||||
|
// 'batchno_serah' => $data->simulasi, // Simpan sebagai rujukan
|
||||||
|
// ]);
|
||||||
|
// }
|
||||||
|
|
||||||
|
//dd($bulan, $simulasi);
|
||||||
|
|
||||||
|
return response()->json(['message' => 'Data berjaya dipindahkan ke WTD Draft!']);
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,43 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Audit;
|
||||||
|
use App\Polis;
|
||||||
|
use App\Cawangan;
|
||||||
|
use App\LookupAlasan;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
use Carbon\Carbon;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
|
class BarangkesController extends Controller
|
||||||
|
{
|
||||||
|
public function LaporanBarangKes(Request $request)
|
||||||
|
{
|
||||||
|
|
||||||
|
$cawangan = Cawangan::on('mysql7')->where('kodcaw', $request->kodcaw)->first();
|
||||||
|
|
||||||
|
if (!$cawangan) {
|
||||||
|
return response()->json(['error' => 'Invalid kodcaw'], 403);
|
||||||
|
}
|
||||||
|
|
||||||
|
$query = DB::connection($cawangan['mysql'])->table('palsu')
|
||||||
|
->select([
|
||||||
|
'tarikh',
|
||||||
|
'norujukan',
|
||||||
|
'nota',
|
||||||
|
'pembiayaan',
|
||||||
|
'nilaimarhun',
|
||||||
|
'jbg',
|
||||||
|
'untung',
|
||||||
|
'untungonepercent',
|
||||||
|
'untungcajlain'
|
||||||
|
])
|
||||||
|
->whereBetween('tarikh', [$request->tarikh_mula, $request->tarikh_akhir]);
|
||||||
|
|
||||||
|
$result = $query->get();
|
||||||
|
|
||||||
|
return response()->json($result);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -462,7 +462,7 @@ class CallCenterController extends Controller
|
|||||||
if($fasa == 1){
|
if($fasa == 1){
|
||||||
|
|
||||||
$datagadai = Gadai::on($cawangan['mysql'])
|
$datagadai = Gadai::on($cawangan['mysql'])
|
||||||
->where([['t_matang','<=',$monthscoming],['lelong_tawarruq','=',1],['tempoh','>=',5],['tempoh','<=',5.5],['tagpalsu','=',0],['sttebus','=',''],['taglel','=',0],['tagnotis','=',0]])
|
->where([['t_matang','<=',$monthscoming],['lelong_tawarruq','=',1],['tempoh','>=',5],['tempoh','<=',7],['tagpalsu','=',0],['sttebus','=',''],['taglel','=',0],['tagnotis','=',0]])
|
||||||
->orderBy('t_gadai', 'ASC')
|
->orderBy('t_gadai', 'ASC')
|
||||||
->orderBy('sirig', 'ASC');
|
->orderBy('sirig', 'ASC');
|
||||||
// ->get();
|
// ->get();
|
||||||
@@ -470,7 +470,7 @@ class CallCenterController extends Controller
|
|||||||
|
|
||||||
}elseif($fasa == 2){
|
}elseif($fasa == 2){
|
||||||
$datagadai = Gadai::on($cawangan['mysql'])
|
$datagadai = Gadai::on($cawangan['mysql'])
|
||||||
->where([['t_matang1','<=',$monthscoming],['lelong_tawarruq','=',0],['tempoh','>=',11],['tempoh','<=',11.5],['tagpalsu','=',0],['sttebus','=',''],['taglel','=',0],['tagnotis','=',0]])
|
->where([['t_matang1','<=',$monthscoming],['lelong_tawarruq','=',0],['tempoh','>=',11],['tagpalsu','=',0],['sttebus','=',''],['taglel','=',0],['tagnotis','=',0]])
|
||||||
->orderBy('t_gadai', 'ASC')
|
->orderBy('t_gadai', 'ASC')
|
||||||
->orderBy('sirig', 'ASC');
|
->orderBy('sirig', 'ASC');
|
||||||
// ->get();
|
// ->get();
|
||||||
@@ -510,12 +510,12 @@ class CallCenterController extends Controller
|
|||||||
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first();
|
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first();
|
||||||
if($fasa == 1){
|
if($fasa == 1){
|
||||||
$datagadai = Gadai::on($cawangan['mysql'])
|
$datagadai = Gadai::on($cawangan['mysql'])
|
||||||
->where([['t_matang','<=',$monthscoming],['lelong_tawarruq','=',1],['tempoh','>=',5],['tempoh','<=',5.5],['tagpalsu','=',0],['sttebus','=',''],['taglel','=',0],['tagnotis','=',0]])
|
->where([['t_matang','<=',$monthscoming],['lelong_tawarruq','=',1],['tempoh','>=',5],['tempoh','<=',7],['tagpalsu','=',0],['sttebus','=',''],['taglel','=',0],['tagnotis','=',0]])
|
||||||
->orderBy('t_gadai', 'ASC')
|
->orderBy('t_gadai', 'ASC')
|
||||||
->orderBy('sirig', 'ASC');
|
->orderBy('sirig', 'ASC');
|
||||||
}elseif($fasa == 2){
|
}elseif($fasa == 2){
|
||||||
$datagadai = Gadai::on($cawangan['mysql'])
|
$datagadai = Gadai::on($cawangan['mysql'])
|
||||||
->where([['t_matang1','<=',$monthscoming],['lelong_tawarruq','=',0],['tempoh','>=',11],['tempoh','<=',11.5],['tagpalsu','=',0],['sttebus','=',''],['taglel','=',0]])
|
->where([['t_matang1','<=',$monthscoming],['lelong_tawarruq','=',0],['tempoh','>=',11],['tagpalsu','=',0],['sttebus','=',''],['taglel','=',0]])
|
||||||
->orderBy('t_gadai', 'ASC')
|
->orderBy('t_gadai', 'ASC')
|
||||||
->orderBy('sirig', 'ASC');
|
->orderBy('sirig', 'ASC');
|
||||||
}
|
}
|
||||||
@@ -530,7 +530,7 @@ class CallCenterController extends Controller
|
|||||||
$caw_notis->kodcaw = $kodcaw;
|
$caw_notis->kodcaw = $kodcaw;
|
||||||
$caw_notis->peringatan = 1;
|
$caw_notis->peringatan = 1;
|
||||||
$caw_notis->daritempoh = 5;
|
$caw_notis->daritempoh = 5;
|
||||||
$caw_notis->hinggatempoh = 5;
|
$caw_notis->hinggatempoh = 7;
|
||||||
$caw_notis->status = 1;
|
$caw_notis->status = 1;
|
||||||
$caw_notis->save();
|
$caw_notis->save();
|
||||||
|
|
||||||
@@ -540,7 +540,7 @@ class CallCenterController extends Controller
|
|||||||
$caw_notis->kodcaw = $kodcaw;
|
$caw_notis->kodcaw = $kodcaw;
|
||||||
$caw_notis->peringatan = 1;
|
$caw_notis->peringatan = 1;
|
||||||
$caw_notis->daritempoh = 11;
|
$caw_notis->daritempoh = 11;
|
||||||
$caw_notis->hinggatempoh = 11;
|
$caw_notis->hinggatempoh = 12;
|
||||||
$caw_notis->status = 1;
|
$caw_notis->status = 1;
|
||||||
$caw_notis->save();
|
$caw_notis->save();
|
||||||
|
|
||||||
@@ -599,7 +599,7 @@ class CallCenterController extends Controller
|
|||||||
$notis = Notis::create([
|
$notis = Notis::create([
|
||||||
'tarikh_notis' => $tarikh_notis,
|
'tarikh_notis' => $tarikh_notis,
|
||||||
'daritempoh' => 5,
|
'daritempoh' => 5,
|
||||||
'hinggatempoh' => 5,
|
'hinggatempoh' => 7,
|
||||||
'sts_notis' => 1,
|
'sts_notis' => 1,
|
||||||
'peringatan' => 1
|
'peringatan' => 1
|
||||||
]);
|
]);
|
||||||
@@ -607,7 +607,7 @@ class CallCenterController extends Controller
|
|||||||
$notis = Notis::create([
|
$notis = Notis::create([
|
||||||
'tarikh_notis' => $tarikh_notis,
|
'tarikh_notis' => $tarikh_notis,
|
||||||
'daritempoh' => 11,
|
'daritempoh' => 11,
|
||||||
'hinggatempoh' => 11,
|
'hinggatempoh' => 12,
|
||||||
'sts_notis' => 1,
|
'sts_notis' => 1,
|
||||||
'peringatan' => 1
|
'peringatan' => 1
|
||||||
]);
|
]);
|
||||||
@@ -1564,4 +1564,162 @@ class CallCenterController extends Controller
|
|||||||
}
|
}
|
||||||
return response()->json($cawnotis_all);
|
return response()->json($cawnotis_all);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function rekodgadai(Request $request)
|
||||||
|
{
|
||||||
|
$nokp = $request->nokp;
|
||||||
|
$kodcaw = $request->kodcaw;
|
||||||
|
// Dapatkan maklumat cawangan
|
||||||
|
$cawangan = Cawangan::on('mysql7')
|
||||||
|
->where('kodcaw', $kodcaw)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
if (!$cawangan || empty($cawangan->mysql)) {
|
||||||
|
return response()->json([
|
||||||
|
'status' => false,
|
||||||
|
'message' => 'Cawangan tidak dijumpai atau konfigurasi DB tidak lengkap',
|
||||||
|
'data' => []
|
||||||
|
], 404);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Query rekod gadai dari DB cawangan yang betul
|
||||||
|
$gadai = Gadai::on($cawangan->mysql)
|
||||||
|
->where('nokp', $nokp)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
return response()->json([
|
||||||
|
'status' => !$gadai->isEmpty(),
|
||||||
|
'message' => $gadai->isEmpty() ? 'Tiada rekod gadai' : 'Rekod gadai dijumpai',
|
||||||
|
'data' => $gadai
|
||||||
|
]);
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
return response()->json([
|
||||||
|
'status' => false,
|
||||||
|
'message' => 'Ralat semasa ambil data: ' . $e->getMessage(),
|
||||||
|
'data' => []
|
||||||
|
], 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function rekodgadaiBatch(Request $request)
|
||||||
|
{
|
||||||
|
$nokpList = $request->input('nokp_list', []);
|
||||||
|
$kodcaw = $request->input('kodcaw');
|
||||||
|
|
||||||
|
if (empty($nokpList) || empty($kodcaw)) {
|
||||||
|
return response()->json([
|
||||||
|
'status' => false,
|
||||||
|
'message' => 'Parameter tidak lengkap',
|
||||||
|
'data' => []
|
||||||
|
], 400);
|
||||||
|
}
|
||||||
|
|
||||||
|
$cawangan = Cawangan::on('mysql7')
|
||||||
|
->where('kodcaw', $kodcaw)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
if (!$cawangan || empty($cawangan->mysql)) {
|
||||||
|
return response()->json([
|
||||||
|
'status' => false,
|
||||||
|
'message' => 'Cawangan tidak dijumpai',
|
||||||
|
'data' => []
|
||||||
|
], 404);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
$gadai = Gadai::on($cawangan->mysql)
|
||||||
|
->whereIn('nokp', $nokpList)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
return response()->json([
|
||||||
|
'status' => !$gadai->isEmpty(),
|
||||||
|
'message' => $gadai->isEmpty() ? 'Tiada rekod gadai' : 'Rekod gadai dijumpai',
|
||||||
|
'data' => $gadai
|
||||||
|
]);
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
return response()->json([
|
||||||
|
'status' => false,
|
||||||
|
'message' => 'Ralat semasa ambil data: ' . $e->getMessage(),
|
||||||
|
'data' => []
|
||||||
|
], 500);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public function customerUpdate($nokp,Request $request){
|
||||||
|
$poskod = Poskod::on('mysql7')->where('poskod','=',$request->poskod)->first();
|
||||||
|
$customer_update = Customer::on('mysql7')
|
||||||
|
->where('kplama','=',$nokp)
|
||||||
|
->orWhere('kpbaru','=',$nokp)
|
||||||
|
->update(array(
|
||||||
|
'nota_arcc'=>$request->nota_arcc,
|
||||||
|
));
|
||||||
|
|
||||||
|
return response()->json($customer_update, 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function customerUpdateKaunter($nokp,$kodcaw, Request $request){
|
||||||
|
$current = Carbon::now();
|
||||||
|
|
||||||
|
DB::connection('mysql7')->beginTransaction();
|
||||||
|
|
||||||
|
try{
|
||||||
|
$poskod = Poskod::on('mysql7')->where('poskod','=',$request->poskod)->first();
|
||||||
|
|
||||||
|
$customer_info = DB::connection('mysql7')->table('customer')
|
||||||
|
->select('kodcaw','kodkerja','nota_pekerjaan','nota_arcc','tarikhdaftar','nopelanggan','kpbaru','kplama','nama','t_lahir','jantina','poskod')
|
||||||
|
->where('kplama','=',$nokp)
|
||||||
|
->orWhere('kpbaru','=',$nokp)
|
||||||
|
->get()->toArray();
|
||||||
|
|
||||||
|
|
||||||
|
$old_data = json_encode($customer_info);
|
||||||
|
|
||||||
|
$customer_update = Customer::on('mysql7')
|
||||||
|
->where('kplama','=',$nokp)
|
||||||
|
->orWhere('kpbaru','=',$nokp)
|
||||||
|
->update(array(
|
||||||
|
'nota_arcc' => $request->nota_arcc,
|
||||||
|
));
|
||||||
|
|
||||||
|
if($customer_update)
|
||||||
|
{
|
||||||
|
$customer_info_new = DB::connection('mysql7')->table('customer')
|
||||||
|
->select('kodcaw','kodkerja','nota_pekerjaan','nota_arcc','tarikhdaftar','nopelanggan','kpbaru','kplama','nama','t_lahir','jantina','alamat1','poskod')
|
||||||
|
->where('kplama','=',$nokp)
|
||||||
|
->orWhere('kpbaru','=',$nokp)
|
||||||
|
->get()->toArray();
|
||||||
|
|
||||||
|
$new_data = json_encode($customer_info_new);
|
||||||
|
|
||||||
|
$audit_customer = DB::connection('mysql7')
|
||||||
|
->table('audit_customer')
|
||||||
|
->insert([
|
||||||
|
'username' => $request->namateller,
|
||||||
|
'old_data' => $old_data,
|
||||||
|
'new_data' => $new_data,
|
||||||
|
'kodcaw' => $customer_info[0]->kodcaw,
|
||||||
|
'created_at' => Carbon::now()->toDateTimeString(),
|
||||||
|
'updated_at' => Carbon::now()->toDateTimeString(),
|
||||||
|
'customer_name' => $customer_info[0]->nama,
|
||||||
|
'customer_nokp' => $nokp,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
DB::connection('mysql7')->commit();
|
||||||
|
|
||||||
|
return response()->json($customer_update, 200);
|
||||||
|
|
||||||
|
}catch (\Exception $e) {
|
||||||
|
DB::connection('mysql7')->rollback();
|
||||||
|
return response()->json($e->getMessage(),400);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -14,6 +14,7 @@ use App\Blacklist;
|
|||||||
use App\AuditCustomer;
|
use App\AuditCustomer;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\TuntutBaki;
|
use App\TuntutBaki;
|
||||||
|
use App\Anggota;
|
||||||
|
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
@@ -23,11 +24,27 @@ use DB;
|
|||||||
class CustomerController extends Controller
|
class CustomerController extends Controller
|
||||||
{
|
{
|
||||||
|
|
||||||
public function showAllCustomers(){
|
public function showAllCustomers(Request $request)
|
||||||
$customer = Customer::on('mysql7')->get();
|
{
|
||||||
|
$nama = $request->query('nama');
|
||||||
|
$kodcaw = $request->query('kodcaw');
|
||||||
|
|
||||||
|
$query = Customer::on('mysql7');
|
||||||
|
|
||||||
|
if ($nama) {
|
||||||
|
$query->where('nama', 'LIKE', '%' . $nama . '%');
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($kodcaw) {
|
||||||
|
$query->where('kodcaw', $kodcaw);
|
||||||
|
}
|
||||||
|
|
||||||
|
$customer = $query->get();
|
||||||
|
|
||||||
return response()->json($customer);
|
return response()->json($customer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function getLatestCustomer($kodcaw){
|
public function getLatestCustomer($kodcaw){
|
||||||
$customer = Customer::on('mysql7')->orderBy('tarikhdaftar','desc')->orderBy('nosiri','desc')->first();
|
$customer = Customer::on('mysql7')->orderBy('tarikhdaftar','desc')->orderBy('nosiri','desc')->first();
|
||||||
|
|
||||||
@@ -346,6 +363,7 @@ class CustomerController extends Controller
|
|||||||
'nota'=>$request->nota,
|
'nota'=>$request->nota,
|
||||||
'kodkerja'=>$request->kodkerja,
|
'kodkerja'=>$request->kodkerja,
|
||||||
'nota_pekerjaan'=>$request->nota_pekerjaan,
|
'nota_pekerjaan'=>$request->nota_pekerjaan,
|
||||||
|
// 'nota_arcc'=>$request->nota_arcc,
|
||||||
'tujuangadai'=>$request->tujuangadai
|
'tujuangadai'=>$request->tujuangadai
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@@ -374,13 +392,40 @@ class CustomerController extends Controller
|
|||||||
'kodnegeri' => $poskod['kodnegeri'],
|
'kodnegeri' => $poskod['kodnegeri'],
|
||||||
'kodkerja'=>$request->kodkerja,
|
'kodkerja'=>$request->kodkerja,
|
||||||
'nota_pekerjaan'=>$request->nota_pekerjaan,
|
'nota_pekerjaan'=>$request->nota_pekerjaan,
|
||||||
|
// 'nota_arcc'=>$request->nota_arcc,
|
||||||
'telefon' => $request->telefon1,
|
'telefon' => $request->telefon1,
|
||||||
'telefon2' => $request->telefon2
|
'telefon2' => $request->telefon2,
|
||||||
));
|
));
|
||||||
|
|
||||||
return response()->json($customer_update, 200);
|
return response()->json($customer_update, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function assignAnggota($noic, Request $request)
|
||||||
|
{
|
||||||
|
// Semak sama ada pelanggan wujud
|
||||||
|
$customer = Customer::on('mysql7')
|
||||||
|
->where('kpbaru', $noic)
|
||||||
|
->orWhere('kplama', $noic)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
if (!$customer) {
|
||||||
|
return response()->json([
|
||||||
|
'success' => false,
|
||||||
|
'message' => 'Pelanggan tidak dijumpai.'
|
||||||
|
], 404);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Kemaskini tag_anggota
|
||||||
|
$customer->tag_anggota = 1;
|
||||||
|
$customer->save();
|
||||||
|
|
||||||
|
return response()->json([
|
||||||
|
'success' => true,
|
||||||
|
'message' => 'Tag anggota berjaya dikemaskini.',
|
||||||
|
'data' => $customer
|
||||||
|
], 200);
|
||||||
|
}
|
||||||
|
|
||||||
public function customerUpdateKaunter($nokp,$kodcaw, Request $request){
|
public function customerUpdateKaunter($nokp,$kodcaw, Request $request){
|
||||||
$current = Carbon::now();
|
$current = Carbon::now();
|
||||||
|
|
||||||
@@ -408,6 +453,7 @@ class CustomerController extends Controller
|
|||||||
'kodkerja' => $request->kodkerja,
|
'kodkerja' => $request->kodkerja,
|
||||||
// 'nota_pekerjaan' => $request->nota_pekerjaan,
|
// 'nota_pekerjaan' => $request->nota_pekerjaan,
|
||||||
'nota_pekerjaan' => $request->kodkerja === '6' ? $request->nota_pekerjaan : null,
|
'nota_pekerjaan' => $request->kodkerja === '6' ? $request->nota_pekerjaan : null,
|
||||||
|
// 'nota_arcc' => $request->nota_arcc,
|
||||||
'noakaun' => $request->noakaun,
|
'noakaun' => $request->noakaun,
|
||||||
'nota' => $request->nota,
|
'nota' => $request->nota,
|
||||||
'alamat1' => $request->alamat,
|
'alamat1' => $request->alamat,
|
||||||
@@ -485,6 +531,7 @@ class CustomerController extends Controller
|
|||||||
'kodbank' => $request->kodbank,
|
'kodbank' => $request->kodbank,
|
||||||
'kodkerja' => $request->kodkerja,
|
'kodkerja' => $request->kodkerja,
|
||||||
'nota_pekerjaan' => $request->nota_pekerjaan,
|
'nota_pekerjaan' => $request->nota_pekerjaan,
|
||||||
|
// 'nota_arcc' => $request->nota_arcc,
|
||||||
'noakaun' => $request->noakaun,
|
'noakaun' => $request->noakaun,
|
||||||
'nota' => $request->nota,
|
'nota' => $request->nota,
|
||||||
'nama' => $request->nama,
|
'nama' => $request->nama,
|
||||||
@@ -805,6 +852,14 @@ class CustomerController extends Controller
|
|||||||
return response()->json($blacklist);
|
return response()->json($blacklist);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function anggotaKoperasi(Request $request){
|
||||||
|
|
||||||
|
$anggota = Anggota::where('noic',$request->noic)->first();
|
||||||
|
|
||||||
|
return response()->json($anggota);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public function showCustomerByEachCawangan($ic)
|
public function showCustomerByEachCawangan($ic)
|
||||||
{
|
{
|
||||||
$cawangan_all = Cawangan::on('mysql7')->get();
|
$cawangan_all = Cawangan::on('mysql7')->get();
|
||||||
@@ -962,4 +1017,41 @@ class CustomerController extends Controller
|
|||||||
return json_encode(['status'=> 'success']);
|
return json_encode(['status'=> 'success']);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function searchByName(Request $request)
|
||||||
|
{
|
||||||
|
$nama = $request->query('nama');
|
||||||
|
$kodcaw = $request->query('kodcaw');
|
||||||
|
|
||||||
|
$query = Customer::query();
|
||||||
|
|
||||||
|
if ($kodcaw) {
|
||||||
|
$query->where('kodcaw', $kodcaw);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($nama) {
|
||||||
|
$query->where('nama', 'like', '%' . $nama . '%');
|
||||||
|
}
|
||||||
|
|
||||||
|
$results = $query->get();
|
||||||
|
|
||||||
|
return response()->json($results);
|
||||||
|
}
|
||||||
|
|
||||||
|
// public function createNotaArcc($kodcaw, Request $request)
|
||||||
|
// {
|
||||||
|
// $current = Carbon::now();
|
||||||
|
|
||||||
|
// $customer = Customer::on('mysql7')->create([
|
||||||
|
// 'kodcaw' => $kodcaw,
|
||||||
|
// 'tarikhdaftar' => $current->toDateString(),
|
||||||
|
// 'nota_arcc' => $request->nota_arcc,
|
||||||
|
// 'teller' => $request->teller,
|
||||||
|
// 'aktif' => 'A'
|
||||||
|
// ]);
|
||||||
|
|
||||||
|
// return response()->json($customer, 201);
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -120,6 +120,25 @@ class GadaiController extends Controller
|
|||||||
return response()->json($gadai_all);
|
return response()->json($gadai_all);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function showOneGadaiByNorujukanKodcaw($kodcaw,$norujukan){
|
||||||
|
|
||||||
|
$cawangan_all = Cawangan::on('mysql7')
|
||||||
|
->where('kodcaw','=',$kodcaw)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
$gadai_all = [];
|
||||||
|
|
||||||
|
foreach($cawangan_all as $index=>$cawangan){
|
||||||
|
$gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->get();
|
||||||
|
if(sizeof($gadai) != 0){
|
||||||
|
array_push($gadai_all,$gadai);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return response()->json($gadai_all);
|
||||||
|
}
|
||||||
|
|
||||||
public function showOneGadaiByCawanganOnly($kodcaw,$tarikh){
|
public function showOneGadaiByCawanganOnly($kodcaw,$tarikh){
|
||||||
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first();
|
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first();
|
||||||
$gadai = Gadai::on($cawangan['mysql'])
|
$gadai = Gadai::on($cawangan['mysql'])
|
||||||
@@ -981,77 +1000,188 @@ class GadaiController extends Controller
|
|||||||
return response()->json($ansuran);
|
return response()->json($ansuran);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getLaporanAnsuranUjrah($kodcaw,Request $request){
|
|
||||||
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first();
|
public function getLaporanAnsuranUjrah($kodcaw, Request $request)
|
||||||
|
{
|
||||||
|
$cawangan = Cawangan::on('mysql7')->where('kodcaw', '=', $kodcaw)->first();
|
||||||
|
|
||||||
$ansuran_data = Transaction::on('mysql7')
|
// Bina query asas dahulu
|
||||||
->select('transaction.norujukan',
|
$query = Transaction::on('mysql7')
|
||||||
'trans.tarikh_bayaran',
|
->select(
|
||||||
'transaction.nokp',
|
'transaction.norujukan',
|
||||||
'transaction.kodcaw',
|
'trans.tarikh_bayaran',
|
||||||
'transaction.trans_type',
|
'transaction.nokp',
|
||||||
'cust.nama','trans.bayaran_pembiayaan',
|
'transaction.kodcaw',
|
||||||
'transaction.duit_masuk',
|
'transaction.trans_type',
|
||||||
'trans.bayaran_keuntungan',
|
'cust.nama',
|
||||||
'transaction.teller',
|
'trans.bayaran_pembiayaan',
|
||||||
'trans.ujrah',
|
'transaction.duit_masuk',
|
||||||
'trans.onepercent')
|
'trans.bayaran_keuntungan',
|
||||||
->leftJoin('transaksi_keuntungan as trans', function($join)
|
'transaction.teller',
|
||||||
{
|
'trans.ujrah',
|
||||||
$join->on('transaction.norujukan', '=', 'trans.norujukan');
|
'trans.onepercent'
|
||||||
$join->on('transaction.created_at', '=', 'trans.tarikh_bayaran');
|
)
|
||||||
})
|
->leftJoin('transaksi_keuntungan as trans', function ($join) {
|
||||||
->leftJoin('customer as cust', function($join)
|
$join->on('transaction.norujukan', '=', 'trans.norujukan');
|
||||||
{
|
$join->on('transaction.created_at', '=', 'trans.tarikh_bayaran');
|
||||||
$join->on('transaction.nokp', '=', 'cust.kpbaru');
|
})
|
||||||
$join->orOn('transaction.nokp', '=', 'cust.kplama');
|
->leftJoin('customer as cust', function ($join) {
|
||||||
})
|
$join->on('transaction.nokp', '=', 'cust.kpbaru');
|
||||||
->where('transaction.kodcaw','=',$kodcaw)
|
$join->orOn('transaction.nokp', '=', 'cust.kplama');
|
||||||
->where('transaction.trans_type','=','A')
|
})
|
||||||
->whereDate('transaction.created_at', '>=', $request->mula)
|
->where('transaction.kodcaw', '=', $kodcaw)
|
||||||
->whereDate('transaction.created_at', '<=', $request->akhir)
|
->where('transaction.trans_type', '=', 'A')
|
||||||
->orderBy('transaction.teller')
|
->whereDate('transaction.created_at', '>=', $request->mula)
|
||||||
->orderBy('trans.tarikh_bayaran')
|
->whereDate('transaction.created_at', '<=', $request->akhir);
|
||||||
->get();
|
|
||||||
|
|
||||||
$ansuran = [];
|
// Tambah filter berdasarkan jenis
|
||||||
|
if ($request->jenis == 'arrahnpay') {
|
||||||
|
$query->where('transaction.teller', '=', 'Online');
|
||||||
|
} elseif ($request->jenis == 'kaunter') {
|
||||||
|
$query->where('transaction.teller', '!=', 'Online');
|
||||||
|
}
|
||||||
|
|
||||||
if($ansuran_data){
|
// Dapatkan data selepas filter
|
||||||
foreach($ansuran_data as $index=>$ansuranData){
|
$ansuran_data = $query
|
||||||
$gadai = Gadai::on($cawangan['mysql'])->where('norujukan',$ansuranData['norujukan'])->first();
|
->orderBy('transaction.teller')
|
||||||
|
->orderBy('trans.tarikh_bayaran')
|
||||||
|
->get();
|
||||||
|
|
||||||
array_push($ansuran,[
|
$ansuran = [];
|
||||||
"norujukan" => $ansuranData['norujukan'],
|
|
||||||
"tarikh_bayaran" => $ansuranData['tarikh_bayaran'],
|
// Loop data dan tambahkan maklumat dari jadual gadai
|
||||||
"nokp" => $ansuranData['nokp'],
|
if ($ansuran_data) {
|
||||||
"kodcaw" => $ansuranData['kodcaw'],
|
foreach ($ansuran_data as $index => $ansuranData) {
|
||||||
"trans_type" => $ansuranData['trans_type'],
|
$gadai = Gadai::on($cawangan['mysql'])->where('norujukan', $ansuranData['norujukan'])->first();
|
||||||
"nama" => $ansuranData['nama'],
|
|
||||||
"tempoh" => $gadai['tempoh'],
|
array_push($ansuran, [
|
||||||
"bakipjm" => $gadai['bakipjm'],
|
"norujukan" => $ansuranData['norujukan'],
|
||||||
"bayaran_pembiayaan" => $ansuranData['bayaran_pembiayaan'],
|
"tarikh_bayaran" => $ansuranData['tarikh_bayaran'],
|
||||||
"duit_masuk" => $ansuranData['duit_masuk'],
|
"nokp" => $ansuranData['nokp'],
|
||||||
"bayaran_keuntungan" => $ansuranData['bayaran_keuntungan'],
|
"kodcaw" => $ansuranData['kodcaw'],
|
||||||
"teller" => $ansuranData['teller'],
|
"trans_type" => $ansuranData['trans_type'],
|
||||||
"ansuranujrah" => $ansuranData['ujrah'],
|
"nama" => $ansuranData['nama'],
|
||||||
"ansuranonepercent" => $ansuranData['onepercent'],
|
"tempoh" => optional($gadai)->tempoh,
|
||||||
"t_gadai" => $gadai['t_gadai'],
|
"bakipjm" => optional($gadai)->bakipjm,
|
||||||
]);
|
"bayaran_pembiayaan" => $ansuranData['bayaran_pembiayaan'],
|
||||||
}
|
"duit_masuk" => $ansuranData['duit_masuk'],
|
||||||
|
"bayaran_keuntungan" => $ansuranData['bayaran_keuntungan'],
|
||||||
|
"teller" => $ansuranData['teller'],
|
||||||
|
"ansuranujrah" => $ansuranData['ujrah'],
|
||||||
|
"ansuranonepercent" => $ansuranData['onepercent'],
|
||||||
|
"t_gadai" => optional($gadai)->t_gadai,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Susun ikut teller dan tarikh bayar
|
||||||
|
usort($ansuran, function ($a, $b) {
|
||||||
|
$compare_teller = strcmp($a['teller'], $b['teller']);
|
||||||
|
|
||||||
|
if ($compare_teller === 0) {
|
||||||
|
return strcmp($a['tarikh_bayaran'], $b['tarikh_bayaran']);
|
||||||
}
|
}
|
||||||
|
|
||||||
usort($ansuran, function ($a, $b) {
|
return $compare_teller;
|
||||||
$compare_teller = strcmp($a['teller'], $b['teller']);
|
});
|
||||||
|
|
||||||
if ($compare_teller === 0) {
|
return response()->json($ansuran);
|
||||||
return strcmp($a['tarikh_bayaran'], $b['tarikh_bayaran']);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return $compare_teller;
|
|
||||||
});
|
|
||||||
|
|
||||||
return response()->json($ansuran);
|
// public function getLaporanAnsuranUjrah($kodcaw, Request $request)
|
||||||
}
|
// {
|
||||||
|
// $cawangan = Cawangan::on('mysql7')->where('kodcaw', '=', $kodcaw)->first();
|
||||||
|
// $semuaDescpt = Transaction::on('mysql7')
|
||||||
|
// ->where('kodcaw', '=', $kodcaw)
|
||||||
|
// ->pluck('descpt');
|
||||||
|
|
||||||
|
// dd($semuaDescpt);
|
||||||
|
|
||||||
|
// Dapatkan connection cawangan
|
||||||
|
// $connection = $cawangan['mysql'];
|
||||||
|
|
||||||
|
// // Mula query utama ansuran
|
||||||
|
// $query = Transaction::on('mysql7')
|
||||||
|
// ->select(
|
||||||
|
// 'transaction.norujukan',
|
||||||
|
// 'trans.tarikh_bayaran',
|
||||||
|
// 'transaction.nokp',
|
||||||
|
// 'transaction.kodcaw',
|
||||||
|
// 'transaction.trans_type',
|
||||||
|
// 'cust.nama',
|
||||||
|
// 'trans.bayaran_pembiayaan',
|
||||||
|
// 'transaction.duit_masuk',
|
||||||
|
// 'trans.bayaran_keuntungan',
|
||||||
|
// 'transaction.teller',
|
||||||
|
// 'trans.ujrah',
|
||||||
|
// 'trans.onepercent'
|
||||||
|
// )
|
||||||
|
// ->leftJoin('transaksi_keuntungan as trans', function ($join) {
|
||||||
|
// $join->on('transaction.norujukan', '=', 'trans.norujukan');
|
||||||
|
// $join->on('transaction.created_at', '=', 'trans.tarikh_bayaran');
|
||||||
|
// })
|
||||||
|
// ->leftJoin('customer as cust', function ($join) {
|
||||||
|
// $join->on('transaction.nokp', '=', 'cust.kpbaru');
|
||||||
|
// $join->orOn('transaction.nokp', '=', 'cust.kplama');
|
||||||
|
// })
|
||||||
|
// ->where('transaction.kodcaw', '=', $kodcaw)
|
||||||
|
// ->where('transaction.trans_type', '=', 'A')
|
||||||
|
// ->whereDate('transaction.created_at', '>=', $request->mula)
|
||||||
|
// ->whereDate('transaction.created_at', '<=', $request->akhir);
|
||||||
|
|
||||||
|
|
||||||
|
// // 💡 Tambah filter ikut jenis
|
||||||
|
// if ($request->jenis == 'online') {
|
||||||
|
// $query->where('transaction.descpt', 'LIKE', 'Laporan Ansuran Pembiayaan (Arrahn Pay)%');
|
||||||
|
// } elseif ($request->jenis == 'kaunter') {
|
||||||
|
// $query->where('transaction.descpt', 'LIKE', 'Laporan Ansuran Pembiayaan (Kaunter aros)%');
|
||||||
|
// } else {
|
||||||
|
// $query->where('transaction.descpt', 'LIKE', 'Laporan Ansuran Pembiayaan%');
|
||||||
|
// }
|
||||||
|
|
||||||
|
// // Order by
|
||||||
|
// $query->orderBy('transaction.teller')->orderBy('trans.tarikh_bayaran');
|
||||||
|
|
||||||
|
// // Dapatkan data
|
||||||
|
// $ansuran_data = $query->get();
|
||||||
|
|
||||||
|
// // Proses data
|
||||||
|
// $ansuran = [];
|
||||||
|
// if ($ansuran_data) {
|
||||||
|
// foreach ($ansuran_data as $index => $ansuranData) {
|
||||||
|
// $gadai = Gadai::on($connection)->where('norujukan', $ansuranData['norujukan'])->first();
|
||||||
|
|
||||||
|
// array_push($ansuran, [
|
||||||
|
// "norujukan" => $ansuranData['norujukan'],
|
||||||
|
// "tarikh_bayaran" => $ansuranData['tarikh_bayaran'],
|
||||||
|
// "nokp" => $ansuranData['nokp'],
|
||||||
|
// "kodcaw" => $ansuranData['kodcaw'],
|
||||||
|
// "trans_type" => $ansuranData['trans_type'],
|
||||||
|
// "nama" => $ansuranData['nama'],
|
||||||
|
// "tempoh" => $gadai['tempoh'] ?? null,
|
||||||
|
// "bakipjm" => $gadai['bakipjm'] ?? null,
|
||||||
|
// "bayaran_pembiayaan" => $ansuranData['bayaran_pembiayaan'],
|
||||||
|
// "duit_masuk" => $ansuranData['duit_masuk'],
|
||||||
|
// "bayaran_keuntungan" => $ansuranData['bayaran_keuntungan'],
|
||||||
|
// "teller" => $ansuranData['teller'],
|
||||||
|
// "ansuranujrah" => $ansuranData['ujrah'],
|
||||||
|
// "ansuranonepercent" => $ansuranData['onepercent'],
|
||||||
|
// "t_gadai" => $gadai['t_gadai'] ?? null,
|
||||||
|
// ]);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// // Susun data
|
||||||
|
// usort($ansuran, function ($a, $b) {
|
||||||
|
// $compare_teller = strcmp($a['teller'], $b['teller']);
|
||||||
|
// return $compare_teller === 0
|
||||||
|
// ? strcmp($a['tarikh_bayaran'], $b['tarikh_bayaran'])
|
||||||
|
// : $compare_teller;
|
||||||
|
// });
|
||||||
|
|
||||||
|
// return response()->json($ansuran);
|
||||||
|
// }
|
||||||
|
|
||||||
public function getAnsuranSummary($kodcaw,Request $request){
|
public function getAnsuranSummary($kodcaw,Request $request){
|
||||||
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first();
|
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first();
|
||||||
@@ -3802,4 +3932,11 @@ class GadaiController extends Controller
|
|||||||
|
|
||||||
return response()->json($view);
|
return response()->json($view);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getApprovalFromOperation(Request $request){
|
||||||
|
$ansuranserv = new AnsServ($request->kodcaw);
|
||||||
|
$view = $ansuranserv->getApprovalFromOperation($request);
|
||||||
|
|
||||||
|
return response()->json($view);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,10 +6,13 @@ use App\Audit;
|
|||||||
use App\Mohon;
|
use App\Mohon;
|
||||||
use App\Cawangan;
|
use App\Cawangan;
|
||||||
use App\Mohonid;
|
use App\Mohonid;
|
||||||
|
use App\MohonAnggota;
|
||||||
|
use App\Customer;
|
||||||
|
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
|
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
class KelulusanController extends Controller
|
class KelulusanController extends Controller
|
||||||
{
|
{
|
||||||
@@ -201,6 +204,98 @@ class KelulusanController extends Controller
|
|||||||
return response()->json($kelulusan,201);
|
return response()->json($kelulusan,201);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function updateAnggota($kodcaw, Request $request)
|
||||||
|
{
|
||||||
|
$harini = Carbon::now();
|
||||||
|
|
||||||
|
// Dapatkan sambungan database cawangan
|
||||||
|
$cawangan = Cawangan::on('mysql7')
|
||||||
|
->where('kodcaw', '=', $kodcaw)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
if (!$cawangan) {
|
||||||
|
return response()->json(['success' => false, 'message' => 'Kod cawangan tidak sah'], 404);
|
||||||
|
}
|
||||||
|
|
||||||
|
$nokp = $request->nokp;
|
||||||
|
$komen = $request->komenkelulusan;
|
||||||
|
$namaoperasi = $request->namaoperasi;
|
||||||
|
$status = $request->sahkan; // 1 = Lulus, 2 = Batal
|
||||||
|
|
||||||
|
// Debug log masuk
|
||||||
|
Log::info('UpdateKelulusanAnggota triggered', [
|
||||||
|
'kodcaw' => $kodcaw,
|
||||||
|
'nokp' => $nokp,
|
||||||
|
'status' => $status,
|
||||||
|
'komen' => $komen,
|
||||||
|
'namaoperasi' => $namaoperasi
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Kalau LULUS
|
||||||
|
if ($status == 1) {
|
||||||
|
$kelulusan = MohonAnggota::on($cawangan['mysql'])
|
||||||
|
->where('nokp', '=', $nokp)
|
||||||
|
->update([
|
||||||
|
'status' => 'DILULUSKAN',
|
||||||
|
'komen' => $komen,
|
||||||
|
'peloperasi' => $namaoperasi,
|
||||||
|
'datetime_pelulus' => $harini,
|
||||||
|
'updated_at' => $harini,
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Update CUSTOMER di pusat (mysql7)
|
||||||
|
Customer::on('mysql7')
|
||||||
|
->where('kpbaru', '=', $nokp)
|
||||||
|
->update([
|
||||||
|
'tag_anggota' => 1,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
// Kalau BATAL / TOLAK
|
||||||
|
else if ($status == 2) {
|
||||||
|
$kelulusan = MohonAnggota::on($cawangan['mysql'])
|
||||||
|
->where('nokp', '=', $nokp)
|
||||||
|
->update([
|
||||||
|
'status' => 'DITOLAK',
|
||||||
|
'komen' => $komen,
|
||||||
|
'peloperasi' => $namaoperasi,
|
||||||
|
'datetime_pelulus' => $harini,
|
||||||
|
'updated_at' => $harini,
|
||||||
|
]);
|
||||||
|
} else {
|
||||||
|
return response()->json(['success' => false, 'message' => 'Status tidak sah'], 400);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 🧾 Simpan audit log
|
||||||
|
$audit = new Audit();
|
||||||
|
$audit->users = $namaoperasi;
|
||||||
|
$audit->actions = ($status == 1)
|
||||||
|
? "Kelulusan anggota oleh operasi (tag_anggota=1)"
|
||||||
|
: "Pembatalan / tolak anggota oleh operasi";
|
||||||
|
$audit->new_data = json_encode([
|
||||||
|
'nokp' => $nokp,
|
||||||
|
'status' => $status,
|
||||||
|
'komen' => $komen,
|
||||||
|
]);
|
||||||
|
$audit->kodcaw = $kodcaw;
|
||||||
|
$audit->created_at = $harini;
|
||||||
|
$audit->updated_at = $harini;
|
||||||
|
$audit->save();
|
||||||
|
|
||||||
|
Log::info('Kelulusan anggota dikemas kini', [
|
||||||
|
'nokp' => $nokp,
|
||||||
|
'status' => $status,
|
||||||
|
'updated_tag_anggota' => ($status == 1) ? 1 : 0
|
||||||
|
]);
|
||||||
|
|
||||||
|
return response()->json([
|
||||||
|
'success' => true,
|
||||||
|
'status' => ($status == 1) ? 'DILULUSKAN' : 'DITOLAK',
|
||||||
|
'updated_rows' => $kelulusan
|
||||||
|
], 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public function updatekomen($kodcaw,$norujukan,Request $request)
|
public function updatekomen($kodcaw,$norujukan,Request $request)
|
||||||
{
|
{
|
||||||
$harini = Carbon::now();
|
$harini = Carbon::now();
|
||||||
@@ -284,6 +379,64 @@ public function create(REQUEST $request,$kodcaw,$norujukan,$roles)
|
|||||||
return response()->json($kelulusan);
|
return response()->json($kelulusan);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function createKelulusanAnggota(Request $request, $kodcaw)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$harini = Carbon::now();
|
||||||
|
|
||||||
|
// ✅ Dapatkan maklumat cawangan (database connection)
|
||||||
|
$cawangan = Cawangan::on('mysql7')->where('kodcaw', $kodcaw)->first();
|
||||||
|
|
||||||
|
if (!$cawangan) {
|
||||||
|
return response()->json(['success' => false, 'message' => 'Cawangan tidak dijumpai'], 404);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ✅ Simpan ke dalam model MohonAnggota
|
||||||
|
$kelulusan = new MohonAnggota();
|
||||||
|
$kelulusan->setConnection($cawangan['mysql']); // guna connection cawangan dinamik
|
||||||
|
$kelulusan->tarikh = $harini->toDateString();
|
||||||
|
$kelulusan->nokp = $request->nokp;
|
||||||
|
$kelulusan->nama = $request->nama ?? null;
|
||||||
|
$kelulusan->status = 'MENUNGGU OPERASI';
|
||||||
|
$kelulusan->komen = $request->komen;
|
||||||
|
$kelulusan->teller = $request->teller;
|
||||||
|
$kelulusan->peloperasi = null;
|
||||||
|
$kelulusan->created_at = $harini;
|
||||||
|
$kelulusan->updated_at = $harini;
|
||||||
|
$kelulusan->save();
|
||||||
|
|
||||||
|
// ✅ Simpan audit trail
|
||||||
|
$audit = new Audit();
|
||||||
|
$audit->users = $request->teller;
|
||||||
|
$audit->actions = 'Mohon kelulusan anggota';
|
||||||
|
$audit->new_data = json_encode(['mohon_anggota_id' => $kelulusan->id]);
|
||||||
|
$audit->kodcaw = $kodcaw;
|
||||||
|
$audit->created_at = $harini;
|
||||||
|
$audit->updated_at = $harini;
|
||||||
|
$audit->save();
|
||||||
|
|
||||||
|
// ✅ Return JSON response ke frontend
|
||||||
|
return response()->json([
|
||||||
|
'success' => true,
|
||||||
|
'message' => 'Permohonan kelulusan anggota berjaya dihantar kepada operasi.',
|
||||||
|
'data' => [
|
||||||
|
'id' => $kelulusan->id,
|
||||||
|
'nokp' => $kelulusan->nokp,
|
||||||
|
'status' => $kelulusan->status,
|
||||||
|
'komen' => $kelulusan->komen,
|
||||||
|
'teller' => $kelulusan->teller,
|
||||||
|
],
|
||||||
|
], 201);
|
||||||
|
|
||||||
|
} catch (\Throwable $th) {
|
||||||
|
Log::error('❌ createKelulusanAnggota error: ' . $th->getMessage());
|
||||||
|
return response()->json([
|
||||||
|
'success' => false,
|
||||||
|
'message' => $th->getMessage(),
|
||||||
|
], 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//KEPOHONAN EDIT DAN HAPUS
|
//KEPOHONAN EDIT DAN HAPUS
|
||||||
|
|
||||||
public function kepohonancreate(REQUEST $request,$kodcaw,$norujukan)
|
public function kepohonancreate(REQUEST $request,$kodcaw,$norujukan)
|
||||||
@@ -298,13 +451,16 @@ public function create(REQUEST $request,$kodcaw,$norujukan,$roles)
|
|||||||
'tarikh'=> $harini->toDateString(),
|
'tarikh'=> $harini->toDateString(),
|
||||||
'mohon' => $request->mohon,
|
'mohon' => $request->mohon,
|
||||||
'norujukan' => $norujukan,
|
'norujukan' => $norujukan,
|
||||||
'katalaluan' => '',
|
'katalaluan' => $request->komen,
|
||||||
'pinjaman' => $request->pinjaman,
|
'pinjaman' => $request->pinjaman,
|
||||||
'nilaimarhun' => $request->nilaimarhun,
|
'nilaimarhun' => $request->nilaimarhun,
|
||||||
'berat' => $request->berat,
|
'berat' => $request->berat,
|
||||||
'margin' => $request->margin,
|
'margin' => $request->margin,
|
||||||
'benar' => '0',
|
'benar' => '0',
|
||||||
'teller' => $request->teller
|
'teller' => $request->teller,
|
||||||
|
'tagoperasi'=> ($request->tagoperasi) ? true : false,
|
||||||
|
'masa' => $harini->toTimeString(),
|
||||||
|
'ansuran' => ($request->ansuran) ? $request->ansuran : 0.00,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return response()->json($mohonid,201);
|
return response()->json($mohonid,201);
|
||||||
@@ -322,18 +478,24 @@ public function create(REQUEST $request,$kodcaw,$norujukan,$roles)
|
|||||||
$kelulusan=Mohonid::on($cawangan['mysql'])
|
$kelulusan=Mohonid::on($cawangan['mysql'])
|
||||||
->where('tarikh','=',$harini->toDateString())
|
->where('tarikh','=',$harini->toDateString())
|
||||||
->where('norujukan','=',$norujukan)
|
->where('norujukan','=',$norujukan)
|
||||||
|
->where('recno','=',$request->recno)
|
||||||
->update(array(
|
->update(array(
|
||||||
'katalaluan' => $request->komen,
|
'katalaluan' => $request->komen,
|
||||||
'benar' => '2',
|
'benar' => '2',
|
||||||
'id' => $request->khazanah
|
'id' => $request->khazanah,
|
||||||
|
'timestamp_approved_by_pc' => $harini,
|
||||||
));
|
));
|
||||||
}else{
|
}else{
|
||||||
|
$benar = ($request->tagoperasi == 1) ? 0 : 1;
|
||||||
|
|
||||||
$kelulusan=Mohonid::on($cawangan['mysql'])
|
$kelulusan=Mohonid::on($cawangan['mysql'])
|
||||||
->where('tarikh','=',$harini->toDateString())
|
->where('tarikh','=',$harini->toDateString())
|
||||||
->where('norujukan','=',$norujukan)
|
->where('norujukan','=',$norujukan)
|
||||||
|
->where('recno','=',$request->recno)
|
||||||
->update(array(
|
->update(array(
|
||||||
'benar' => '1',
|
'benar' => $benar,
|
||||||
'id' => $request->khazanah
|
'id' => $request->khazanah,
|
||||||
|
'timestamp_approved_by_pc' => $harini,
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -381,16 +543,30 @@ public function create(REQUEST $request,$kodcaw,$norujukan,$roles)
|
|||||||
$arraykelulusan = [];
|
$arraykelulusan = [];
|
||||||
|
|
||||||
foreach($cawangan_all as $index=>$cawangan){
|
foreach($cawangan_all as $index=>$cawangan){
|
||||||
$kelulusan=Mohon::on($cawangan['mysql'])
|
$kelulusan = Mohon::on($cawangan['mysql'])
|
||||||
->where('tarikh','=',$harini->toDateString())
|
->where('tarikh','=',$harini->toDateString())
|
||||||
->where('masalulus','=','')
|
->where('masalulus','=','')
|
||||||
->where('pelulus','=','operasi')
|
->where('pelulus','=','operasi')
|
||||||
->get();
|
->get();
|
||||||
|
|
||||||
if(sizeof($kelulusan) != 0){
|
$mohonid_data = Mohonid::on($cawangan['mysql'])
|
||||||
array_push($arraykelulusan,["kelulusanall" => $kelulusan,"cawangan" => $cawangan['details_caw'],"cawangankod" => $cawangan['kodcaw']]);
|
->where('tarikh','=',$harini->toDateString())
|
||||||
|
->whereNotNull('id')
|
||||||
|
->whereNotNull('timestamp_approved_by_pc')
|
||||||
|
->where('tagoperasi', '1')
|
||||||
|
->whereNull('operasi')
|
||||||
|
->get();
|
||||||
|
|
||||||
|
// Check if EITHER has data (not just $kelulusan)
|
||||||
|
if(sizeof($kelulusan) != 0 || sizeof($mohonid_data) != 0){
|
||||||
|
array_push($arraykelulusan,[
|
||||||
|
"kelulusanall" => $kelulusan,
|
||||||
|
"kelulusanMohonid" => $mohonid_data,
|
||||||
|
"cawangan" => $cawangan['details_caw'],
|
||||||
|
"cawangankod" => $cawangan['kodcaw']
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return response()->json($arraykelulusan,200);
|
return response()->json($arraykelulusan,200);
|
||||||
}
|
}
|
||||||
@@ -417,4 +593,124 @@ public function create(REQUEST $request,$kodcaw,$norujukan,$roles)
|
|||||||
return response()->json($arraykelulusan,200);
|
return response()->json($arraykelulusan,200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function UpdateHapusAnsuranOperasi(Request $request){
|
||||||
|
$harini = Carbon::now();
|
||||||
|
|
||||||
|
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$request->kodcaw)->first();
|
||||||
|
|
||||||
|
if($request->sahkan === 1){
|
||||||
|
$kelulusan=Mohonid::on($cawangan['mysql'])
|
||||||
|
->where('tarikh','=',$harini->toDateString())
|
||||||
|
->where('norujukan','=',$request->norujukan)
|
||||||
|
->where('recno','=',$request->siri)
|
||||||
|
->where('tagoperasi', '=', 1)
|
||||||
|
->update(array(
|
||||||
|
'operasi' => $request->namaoperasi,
|
||||||
|
'timestamp_approved_by_operasi' => $harini,
|
||||||
|
'benar' => 1,
|
||||||
|
));
|
||||||
|
}else if($request->sahkan === 2){
|
||||||
|
$kelulusan=Mohonid::on($cawangan['mysql'])
|
||||||
|
->where('tarikh','=',$harini->toDateString())
|
||||||
|
->where('norujukan','=',$request->norujukan)
|
||||||
|
->where('recno','=',$request->siri)
|
||||||
|
->where('tagoperasi', '=', 1)
|
||||||
|
->update(array(
|
||||||
|
'operasi' => $request->namaoperasi,
|
||||||
|
'timestamp_approved_by_operasi' => $harini,
|
||||||
|
'benar' => 2,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
return response()->json($kelulusan,202);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getApproval(Request $request){
|
||||||
|
$harini = Carbon::now();
|
||||||
|
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$request->kodcaw)->first();
|
||||||
|
$kelulusan = Mohonid::on($cawangan['mysql'])
|
||||||
|
->where('tarikh','=',$harini->toDateString())
|
||||||
|
->where('teller','=',$request->teller)
|
||||||
|
->where('mohon','=',$request->mohon)
|
||||||
|
->where('benar','=',0)
|
||||||
|
->latest('masa')
|
||||||
|
->first();
|
||||||
|
|
||||||
|
return response()->json($kelulusan, 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getApprovalList(Request $request){
|
||||||
|
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$request->kodcaw)->first();
|
||||||
|
$kelulusan = Mohonid::on($cawangan['mysql'])
|
||||||
|
->groupBy('mohon')
|
||||||
|
->pluck('mohon');
|
||||||
|
|
||||||
|
return response()->json($kelulusan, 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getApprovalLaporan(Request $request){
|
||||||
|
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$request->kodcaw)->first();
|
||||||
|
$kelulusan = Mohonid::on($cawangan['mysql'])
|
||||||
|
->selectRaw('recno, benar, tarikh, onlineid, mohon, norujukan, id, katalaluan, benar, operasi, pinjaman, ansuran, nilaimarhun, berat, margin, teller ,masa, timestamp_approved_by_pc, timestamp_approved_by_operasi')
|
||||||
|
->whereBetween('tarikh', [$request->tarikh_mula, $request->tarikh_akhir])
|
||||||
|
->where('mohon', $request->mohon)
|
||||||
|
->orderBy('tarikh', 'desc')
|
||||||
|
->orderBy('masa', 'desc')
|
||||||
|
->get();
|
||||||
|
|
||||||
|
|
||||||
|
return response()->json($kelulusan, 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function listKelulusanAnggota(Request $request)
|
||||||
|
{
|
||||||
|
$harini = Carbon::now();
|
||||||
|
Log::info($request->all());
|
||||||
|
$cawangan = Cawangan::on('mysql7')->get();
|
||||||
|
|
||||||
|
$array_kelulusan = [];
|
||||||
|
|
||||||
|
foreach ($cawangan as $caw) {
|
||||||
|
|
||||||
|
$kelulusan = MohonAnggota::on($caw['mysql'])
|
||||||
|
->whereDate('tarikh', $harini->toDateString())
|
||||||
|
->where(function ($query) {
|
||||||
|
$query->where('peloperasi', '=', 0)
|
||||||
|
->orWhereNull('peloperasi');
|
||||||
|
})
|
||||||
|
->orderBy('id', 'desc')
|
||||||
|
->get();
|
||||||
|
|
||||||
|
if ($kelulusan->isNotEmpty()) {
|
||||||
|
|
||||||
|
// Kumpul semua nokp daripada senarai kelulusan
|
||||||
|
$nokpList = $kelulusan->pluck('nokp')->unique()->toArray();
|
||||||
|
|
||||||
|
// Ambil semua nama daripada table customer (main DB)
|
||||||
|
$customers = Customer::whereIn('kpbaru', $nokpList)
|
||||||
|
->pluck('nama', 'kpbaru')
|
||||||
|
->toArray();
|
||||||
|
|
||||||
|
// Masukkan nama ke dalam setiap item kelulusan
|
||||||
|
$kelulusan = $kelulusan->map(function ($item) use ($customers) {
|
||||||
|
$item->nama = $customers[$item->nokp] ?? '-';
|
||||||
|
return $item;
|
||||||
|
});
|
||||||
|
|
||||||
|
// Tambah ke array utama
|
||||||
|
$array_kelulusan[] = [
|
||||||
|
"kelulusanall" => $kelulusan,
|
||||||
|
"cawangan" => $caw['details_caw'],
|
||||||
|
"cawangankod" => $caw['kodcaw']
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return response()->json($array_kelulusan, 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ use Carbon\Carbon;
|
|||||||
use App\imbangdugalama;
|
use App\imbangdugalama;
|
||||||
use App\Services\Reports\ImbangDugaService;
|
use App\Services\Reports\ImbangDugaService;
|
||||||
use App\Services\Reports\Account\GeneralLedger;
|
use App\Services\Reports\Account\GeneralLedger;
|
||||||
|
use App\Mohonid;
|
||||||
|
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
@@ -845,7 +846,8 @@ $date = new Carbon($request->tarikh);
|
|||||||
$bilangan_gadai = $gadai->count();
|
$bilangan_gadai = $gadai->count();
|
||||||
$bilangan_tebus = $tebus->count();
|
$bilangan_tebus = $tebus->count();
|
||||||
// $bilangan_ansuran = $ansuran->count();
|
// $bilangan_ansuran = $ansuran->count();
|
||||||
$bilangan_customer_baru = Customer::on($cawangan['mysql'])->where([['tarikhdaftar','>=',$request->mula],['tarikhdaftar','<=',$request->akhir]])->count();
|
//$bilangan_customer_baru = Customer::on($cawangan['mysql'])->where([['tarikhdaftar','>=',$request->mula],['tarikhdaftar','<=',$request->akhir]])->count();
|
||||||
|
$bilangan_customer_baru = Customer::on('mysql7')->whereBetween('tarikhdaftar', [$request->mula, $request->akhir])->where('kodcaw', $request->kodcaw)->count();
|
||||||
|
|
||||||
//f
|
//f
|
||||||
$data_lelong = Lelong::on($cawangan['mysql'])->where([['t_jual','>=',$request->mula],['t_jual','<=',$request->akhir]])->get();
|
$data_lelong = Lelong::on($cawangan['mysql'])->where([['t_jual','>=',$request->mula],['t_jual','<=',$request->akhir]])->get();
|
||||||
@@ -1698,4 +1700,47 @@ $date = new Carbon($request->tarikh);
|
|||||||
|
|
||||||
return response()->json($array_imbangduga,200);
|
return response()->json($array_imbangduga,200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getLaporanKelulusan(Request $request){
|
||||||
|
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$request->kodcaw)->first();
|
||||||
|
|
||||||
|
$laporan_kelulusan = Mohonid::on($cawangan['mysql'])
|
||||||
|
->whereBetween('tarikh', [$request->mula, $request->akhir])
|
||||||
|
->when($request->mohon, function($query, $mohon) {
|
||||||
|
return $query->where('mohon', $mohon);
|
||||||
|
})
|
||||||
|
->get();
|
||||||
|
|
||||||
|
if($laporan_kelulusan->isEmpty()){
|
||||||
|
return response()->json(['message' => 'No data found'], 404);
|
||||||
|
}
|
||||||
|
|
||||||
|
return response()->json([
|
||||||
|
'success' => true,
|
||||||
|
'message' => 'Laporan kelulusan retrieved successfully',
|
||||||
|
'data' => $laporan_kelulusan,
|
||||||
|
'count' => $laporan_kelulusan->count(),
|
||||||
|
'timestamp' => Carbon::now()->toISOString()
|
||||||
|
], 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getListofKelulusan(Request $request){
|
||||||
|
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$request->kodcaw)->first();
|
||||||
|
|
||||||
|
$laporan_kelulusan = Mohonid::on($cawangan['mysql'])
|
||||||
|
->groupBy('mohon')
|
||||||
|
->pluck('mohon');
|
||||||
|
|
||||||
|
if($laporan_kelulusan->isEmpty()){
|
||||||
|
return response()->json(['message' => 'No data found'], 404);
|
||||||
|
}
|
||||||
|
|
||||||
|
return response()->json([
|
||||||
|
'success' => true,
|
||||||
|
'message' => 'List of Type Kelulusan retrieved successfully',
|
||||||
|
'data' => $laporan_kelulusan,
|
||||||
|
'count' => $laporan_kelulusan->count(),
|
||||||
|
'timestamp' => Carbon::now()->toISOString()
|
||||||
|
], 200);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,6 +32,8 @@ use App\Services\RingkasanHarianServices;
|
|||||||
use App\Services\OnePercentServices;
|
use App\Services\OnePercentServices;
|
||||||
use App\Services\MasterServices;
|
use App\Services\MasterServices;
|
||||||
use App\Support\v2\Calculation;
|
use App\Support\v2\Calculation;
|
||||||
|
use Illuminate\Support\Facades\Validator;
|
||||||
|
|
||||||
|
|
||||||
use Log;
|
use Log;
|
||||||
use DB;
|
use DB;
|
||||||
@@ -223,16 +225,12 @@ class LelongController extends Controller
|
|||||||
|
|
||||||
$rugitotal=$rugilelong + $ansrugi;
|
$rugitotal=$rugilelong + $ansrugi;
|
||||||
|
|
||||||
if($kodcaw == 'APM')
|
|
||||||
// $bakilelong += 4498.1;
|
|
||||||
$bakilelong += 1228.07;
|
|
||||||
|
|
||||||
if($kodcaw == '010617')
|
if($kodcaw == '010617')
|
||||||
$rugitotal -= 6.1;
|
$rugitotal -= 6.1;
|
||||||
|
|
||||||
if($kodcaw == '011229'){
|
if($kodcaw == '011229'){
|
||||||
$rugitotal -= 919.7;
|
$rugitotal -= 919.7;
|
||||||
$bakilelong -= 144;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if($kodcaw == '011412')
|
if($kodcaw == '011412')
|
||||||
@@ -240,31 +238,13 @@ class LelongController extends Controller
|
|||||||
|
|
||||||
if($kodcaw == '020303')
|
if($kodcaw == '020303')
|
||||||
{
|
{
|
||||||
$bakilelong -= 542.6;
|
|
||||||
$rugitotal += 0.01;
|
$rugitotal += 0.01;
|
||||||
}
|
}
|
||||||
|
|
||||||
if($kodcaw === '011232')
|
|
||||||
{
|
|
||||||
$bakilelong += 6;
|
|
||||||
}
|
|
||||||
|
|
||||||
if($kodcaw === 'ARP'){
|
if($kodcaw === 'ARP'){
|
||||||
$rugitotal += 119;
|
$rugitotal += 119;
|
||||||
}
|
}
|
||||||
|
|
||||||
if($kodcaw == '020301'){
|
|
||||||
$bakilelong -= 719.50;
|
|
||||||
}
|
|
||||||
|
|
||||||
if($kodcaw == '011227'){
|
|
||||||
$bakilelong -= 896.65;
|
|
||||||
}
|
|
||||||
|
|
||||||
if($kodcaw == 'GC'){
|
|
||||||
$bakilelong += 2135.75;
|
|
||||||
$bakilelong -= 3; //added 15/10/2024 sebab ada kemusykilan 3 ringgit daripada rugi lelong
|
|
||||||
}
|
|
||||||
|
|
||||||
$arraylelong = ['bakilelong' => $bakilelong, 'rugilelong' => $rugitotal];
|
$arraylelong = ['bakilelong' => $bakilelong, 'rugilelong' => $rugitotal];
|
||||||
|
|
||||||
@@ -625,9 +605,9 @@ class LelongController extends Controller
|
|||||||
|
|
||||||
if($cawangan['tagarrahnbid'] == 1){
|
if($cawangan['tagarrahnbid'] == 1){
|
||||||
if(env('APP_ENV') != 'production'){
|
if(env('APP_ENV') != 'production'){
|
||||||
$link = 'http://niklah.arrahn.com.my/api/portalApi';
|
$link = 'https://adminbid-kopkb.erahn.com.my/api/portalApi';
|
||||||
}else{
|
}else{
|
||||||
$link = 'http://adminbid.arrahn/api/portalApi';
|
$link = 'https://adminbid-kopkb.erahn.com.my/api/portalApi';
|
||||||
}
|
}
|
||||||
|
|
||||||
$lelong = Http::withOptions(['verify' => true])->get($link,[
|
$lelong = Http::withOptions(['verify' => true])->get($link,[
|
||||||
@@ -1772,5 +1752,147 @@ class LelongController extends Controller
|
|||||||
return response()->json($tuntutbaki,200);
|
return response()->json($tuntutbaki,200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function LaporanLelong(Request $request)
|
||||||
|
{
|
||||||
|
// Validate required input
|
||||||
|
$validator = Validator::make($request->all(), [
|
||||||
|
'kodcaw' => 'required|string',
|
||||||
|
'tarikhmula' => 'required|date',
|
||||||
|
'tarikhhingga' => 'required|date|after_or_equal:tarikhmula',
|
||||||
|
'batchno' => 'nullable|string'
|
||||||
|
]);
|
||||||
|
|
||||||
|
if ($validator->fails()) {
|
||||||
|
return response()->json(['error' => $validator->errors()], 400);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Get cawangan details
|
||||||
|
$cawangan = Cawangan::on('mysql7')->where('kodcaw', $request->kodcaw)->first();
|
||||||
|
|
||||||
|
if (!$cawangan) {
|
||||||
|
return response()->json(['error' => 'Invalid kodcaw'], 403);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Query lelong data
|
||||||
|
$lelong_query = Lelong::on($cawangan['mysql'])
|
||||||
|
->leftJoin('gadai', 'gadai.norujukan', '=', 'lelong.norujukan')
|
||||||
|
->join('lelmarhun', 'lelmarhun.norujukan', '=', 'lelong.norujukan')
|
||||||
|
->join('pembeli', 'pembeli.nopembeli', '=', 'lelong.nopembeli')
|
||||||
|
->whereBetween('lelong.t_lelong', [$request->tarikhmula, $request->tarikhhingga]);
|
||||||
|
|
||||||
|
// Optional: Filter by batch number
|
||||||
|
if ($request->has('batchno') && !empty($request->batchno)) {
|
||||||
|
$lelong_query->where('lelong.batchno', $request->batchno);
|
||||||
|
}
|
||||||
|
// Select required fields
|
||||||
|
$lelong_data = $lelong_query->select(
|
||||||
|
'lelong.batchno', 'lelong.t_lelong', 'gadai.t_gadai', 'gadai.nokp', 'lelong.pinjaman',
|
||||||
|
'lelong.baki', 'lelong.norujukan', 'gadai.marhun', 'lelong.nilaimarhun',
|
||||||
|
'lelong.bakiupah', 'lelong.cajlelong', 'lelong.hargajual', 'lelong.hargaasas',
|
||||||
|
'pembeli.nama', 'pembeli.nokp AS nokppembeli', 'lelong.tagujrah', 'lelong.ujrah',
|
||||||
|
'lelong.onepercent', 'lelong.teller'
|
||||||
|
)
|
||||||
|
->distinct()
|
||||||
|
->orderByRaw("
|
||||||
|
SUBSTRING_INDEX(SUBSTRING_INDEX(lelong.norujukan, '-', 1), '^[A-Za-z]+', -1),
|
||||||
|
CAST(SUBSTRING_INDEX(lelong.norujukan, '-', -1) AS UNSIGNED)
|
||||||
|
")
|
||||||
|
->get();
|
||||||
|
// dd($lelong_data);
|
||||||
|
|
||||||
|
// If no data found, return a message
|
||||||
|
if ($lelong_data->isEmpty()) {
|
||||||
|
return response()->json([
|
||||||
|
'message' => 'Tiada lelongan dalam tarikh dipilih.',
|
||||||
|
'data' => [],
|
||||||
|
'totals' => [
|
||||||
|
'total_pinjaman' => 0,
|
||||||
|
'total_nilaimarhun' => 0,
|
||||||
|
'total_keuntungan' => 0,
|
||||||
|
'total_onepercent' => 0,
|
||||||
|
'total_ujrah' => 0,
|
||||||
|
'total_cajlelong' => 0,
|
||||||
|
'total_hargajual' => 0,
|
||||||
|
'total_baki' => 0,
|
||||||
|
'total_hargaasas' => 0
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Calculate totals safely (prevent null values)
|
||||||
|
$totals = [
|
||||||
|
'total_pinjaman' => $lelong_data->sum(fn($item) => $item->pinjaman ?? 0),
|
||||||
|
'total_nilaimarhun' => $lelong_data->sum(fn($item) => $item->nilaimarhun ?? 0),
|
||||||
|
'total_keuntungan' => $lelong_data->sum(fn($item) => $item->bakiupah ?? 0),
|
||||||
|
'total_onepercent' => $lelong_data->sum(fn($item) => $item->onepercent ?? 0),
|
||||||
|
'total_ujrah' => $lelong_data->sum(fn($item) => $item->ujrah ?? 0),
|
||||||
|
'total_cajlelong' => $lelong_data->sum(fn($item) => $item->cajlelong ?? 0),
|
||||||
|
'total_hargajual' => $lelong_data->sum(fn($item) => $item->hargajual ?? 0),
|
||||||
|
'total_baki' => $lelong_data->sum(fn($item) => $item->baki ?? 0),
|
||||||
|
'total_hargaasas' => $lelong_data->sum(fn($item) => $item->hargaasas ?? 0)
|
||||||
|
];
|
||||||
|
|
||||||
|
$tarikh_lelongs = $lelong_data->pluck('t_lelong')->first(); // Get first date
|
||||||
|
|
||||||
|
// Return JSON response
|
||||||
|
return response()->json([
|
||||||
|
'data' => $lelong_data,
|
||||||
|
'totals' => $totals,
|
||||||
|
'tarikh_lelong' => $tarikh_lelongs
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function LookupBatchLel($kodcaw,Request $request)
|
||||||
|
{
|
||||||
|
$harini = Carbon::now();
|
||||||
|
$harini = new Carbon;
|
||||||
|
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first();
|
||||||
|
|
||||||
|
$batchlel = BatchLel::on($cawangan['mysql'])
|
||||||
|
->select('batchno','tarikh')
|
||||||
|
->when($kodcaw, function ($query, $kodcaw) {
|
||||||
|
return $query->where('kodcaw', $kodcaw);
|
||||||
|
})
|
||||||
|
->orderBy('tarikh', 'DESC')
|
||||||
|
->get();
|
||||||
|
|
||||||
|
return response()->json($batchlel);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function showBelumTuntutBakiRangeDate($kodcaw,Request $request){
|
||||||
|
|
||||||
|
$current = Carbon::now();
|
||||||
|
$current = new Carbon();
|
||||||
|
|
||||||
|
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first();
|
||||||
|
|
||||||
|
$belumtuntutbaki = Lelong::on($cawangan['mysql'])
|
||||||
|
->select('lelong.t_jual','lelong.norujukan','lelong.baki','gadai.nokp','gadai.pinjaman','lelong.bakiupah','lelong.cajlelong','lelong.hargajual','lelong.hargaasas','lelong.nilaimarhun')
|
||||||
|
->leftJoin('gadai', 'gadai.norujukan', '=', 'lelong.norujukan')
|
||||||
|
->where('t_jual','>=',$request->mula)
|
||||||
|
->where('t_jual','<=',$request->akhir)
|
||||||
|
->where('baki','>',0)
|
||||||
|
->whereNull('trkhtuntut');
|
||||||
|
|
||||||
|
$belumtuntut = $belumtuntutbaki->get();
|
||||||
|
|
||||||
|
$arrayblm = [];
|
||||||
|
foreach($belumtuntut as $index=>$blm)
|
||||||
|
{
|
||||||
|
$customer = Customer::on('mysql7')
|
||||||
|
->select('nama','telefon','telefon2','alamat1','alamat2','poskod','koddaerah')
|
||||||
|
->where('kpbaru','=',$blm['nokp'])
|
||||||
|
->orWhere('kplama','=',$blm['nokp'])
|
||||||
|
->first();
|
||||||
|
array_push($arrayblm,['nama'=>$customer['nama'],'nokp'=>$blm['nokp'],'norujukan'=>$blm['norujukan'],'t_jual'=>$blm['t_jual'],'hargajual'=>$blm['hargajual'],'pinjaman'=>$blm['pinjaman'],'bakiupah'=>$blm['bakiupah'],'cajlelong'=>$blm['cajlelong'],'baki'=>$blm['baki'],'hargaasas'=>$blm['hargaasas'],'nilaimarhun'=>$blm['nilaimarhun']]);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return response()->json($arrayblm);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -94,16 +94,19 @@ class PendahuluanSerahanController extends Controller
|
|||||||
->where('pendahuluan','>',0)
|
->where('pendahuluan','>',0)
|
||||||
->orderby('tarikh','desc')
|
->orderby('tarikh','desc')
|
||||||
->get();
|
->get();
|
||||||
}else if($request->jenis == 'serahan'){
|
}else if($request->jenis == 'serahan'){
|
||||||
|
$gldetail = GlDetail::on($cawangan['mysql'])
|
||||||
$gldetail=GlDetail::on($cawangan['mysql'])
|
->where('kodcaw', '=', $kodcaw)
|
||||||
->where('kodcaw','=',$kodcaw)
|
->whereBetween('tarikh', [$request->mula, $request->hingga])
|
||||||
->where([['tarikh','>=',$request->mula],['tarikh','<=',$request->hingga]])
|
->where(function ($query) {
|
||||||
->where('descpt','NOT LIKE','SERAHAN BAYAR ONLINE%')
|
$query->where('descpt', 'NOT LIKE', 'SERAHAN BAYAR ONLINE%')
|
||||||
->where('serahan','>',0)
|
->where('descpt', 'NOT LIKE', 'SERAHAN LELONG%'); // Using AND instead of OR
|
||||||
->orderby('tarikh','desc')
|
})
|
||||||
->get();
|
->where('serahan', '>', 0)
|
||||||
}else{
|
->orderBy('tarikh', 'desc')
|
||||||
|
->get();
|
||||||
|
|
||||||
|
}else if($request->jenis == 'online'){
|
||||||
$gldetail=GlDetail::on($cawangan['mysql'])
|
$gldetail=GlDetail::on($cawangan['mysql'])
|
||||||
->where('kodcaw','=',$kodcaw)
|
->where('kodcaw','=',$kodcaw)
|
||||||
->where([['tarikh','>=',$request->mula],['tarikh','<=',$request->hingga]])
|
->where([['tarikh','>=',$request->mula],['tarikh','<=',$request->hingga]])
|
||||||
@@ -111,7 +114,43 @@ class PendahuluanSerahanController extends Controller
|
|||||||
->where('serahan','>',0)
|
->where('serahan','>',0)
|
||||||
->orderby('tarikh','desc')
|
->orderby('tarikh','desc')
|
||||||
->get();
|
->get();
|
||||||
}
|
}else if($request->jenis == 'serahanlelong'){
|
||||||
|
$gldetail=GlDetail::on($cawangan['mysql'])
|
||||||
|
->where('kodcaw','=',$kodcaw)
|
||||||
|
->where([['tarikh','>=',$request->mula],['tarikh','<=',$request->hingga]])
|
||||||
|
->where('descpt','LIKE','SERAHAN LELONG%')
|
||||||
|
->where('serahan','>',0)
|
||||||
|
->orderby('tarikh','desc')
|
||||||
|
->get();
|
||||||
|
}else if($request->jenis == 'serahankepadav3'){
|
||||||
|
$gldetail=GlDetail::on($cawangan['mysql'])
|
||||||
|
->where('kodcaw','=',$kodcaw)
|
||||||
|
->where([['tarikh','>=',$request->mula],['tarikh','<=',$request->hingga]])
|
||||||
|
->where('descpt','LIKE','Serahan Kepada V3%')
|
||||||
|
->where('teller','LIKE','%AUTO%')
|
||||||
|
->where('serahan','>',0)
|
||||||
|
->orderby('tarikh','desc')
|
||||||
|
->get();
|
||||||
|
|
||||||
|
}else if($request->jenis == 'serahanonline'){
|
||||||
|
$gldetail = GlDetail::on($cawangan['mysql'])
|
||||||
|
->where('kodcaw', '=', $kodcaw)
|
||||||
|
->whereBetween('tarikh', [$request->mula, $request->hingga])
|
||||||
|
->where(function ($query) {
|
||||||
|
$query->where('descpt', 'LIKE', 'SERAHAN%')
|
||||||
|
->orWhere('descpt', 'LIKE', 'Serahan%')
|
||||||
|
->orWhere('descpt', 'LIKE', 'serahan%'); // Add more variations if needed
|
||||||
|
})
|
||||||
|
->where('serahan', '>', 0)
|
||||||
|
->orderBy('tarikh', 'desc')
|
||||||
|
->get();
|
||||||
|
}else{
|
||||||
|
$gldetail = GlDetail::on($cawangan['mysql'])
|
||||||
|
->where('kodcaw', '=', $kodcaw)
|
||||||
|
->whereBetween('tarikh', [$request->mula, $request->hingga])
|
||||||
|
->orderBy('tarikh', 'desc')
|
||||||
|
->get();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return response()->json($gldetail,200);
|
return response()->json($gldetail,200);
|
||||||
|
|||||||
@@ -0,0 +1,239 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Reports;
|
||||||
|
|
||||||
|
use App\Cawangan;
|
||||||
|
use App\Gadai;
|
||||||
|
use App\Helper;
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Services\Reports\AgingService as ReportAgingService;
|
||||||
|
use App\Transaction;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Carbon\Carbon;
|
||||||
|
use App\StokAudit1;
|
||||||
|
use App\StokAudit2;
|
||||||
|
use App\StokAudit3;
|
||||||
|
use App\StokAudit4;
|
||||||
|
use App\StokAudit5;
|
||||||
|
use App\StokAudit6;
|
||||||
|
use App\StokAudit7;
|
||||||
|
use App\StokAudit8;
|
||||||
|
use App\StokAudit9;
|
||||||
|
use App\StokAudit10;
|
||||||
|
use App\StokAudit11;
|
||||||
|
use App\StokAudit12;
|
||||||
|
|
||||||
|
class AgingController extends Controller
|
||||||
|
{
|
||||||
|
|
||||||
|
public function getLaporanCawangan(string $kod_cawangan, Request $request)
|
||||||
|
{
|
||||||
|
$reportAgingService = new ReportAgingService($kod_cawangan, $request);
|
||||||
|
return $reportAgingService->getCawanganReport();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getSummaryLaporanAgingbackup(Request $request)
|
||||||
|
{
|
||||||
|
$online_array_db_connection = Helper::getOnlineArrahnConnection();
|
||||||
|
$cawangan_available = Cawangan::on($online_array_db_connection)->select('kodcaw', 'details_caw', 'mysql')->get();
|
||||||
|
|
||||||
|
$kodcaw_array = array_column($cawangan_available->toArray(), 'kodcaw');
|
||||||
|
$kod_caw_with_cawangan_detail_array = $cawangan_available->pluck('details_caw', 'kodcaw')->toArray();
|
||||||
|
|
||||||
|
// Step 1: Fetch the ansuran data grouped by cawangan
|
||||||
|
$ansuran_query = Transaction::on($online_array_db_connection)
|
||||||
|
->leftJoin('transaksi_keuntungan', function ($join) {
|
||||||
|
$join->on('transaction.norujukan', '=', 'transaksi_keuntungan.norujukan');
|
||||||
|
$join->on('transaction.created_at', '=', 'transaksi_keuntungan.tarikh_bayaran');
|
||||||
|
})
|
||||||
|
->where('transaction.trans_type', '=', 'A')
|
||||||
|
->whereDate('transaction.created_at', '>=', date($request->startDate))
|
||||||
|
->whereDate('transaction.created_at', '<=', date($request->endDate))
|
||||||
|
->selectRaw('
|
||||||
|
transaction.kodcaw as kod_cawangan,
|
||||||
|
count(transaction.norujukan) as bilangan_ansuran,
|
||||||
|
sum(transaksi_keuntungan.bayaran_pembiayaan) as bayaran_pembiayaan,
|
||||||
|
sum(transaksi_keuntungan.bayaran_keuntungan) as bayaran_kos_keuntungan,
|
||||||
|
sum(transaction.duit_masuk) as jumlah_bayaran,
|
||||||
|
GROUP_CONCAT(transaction.norujukan) as norujukan_list
|
||||||
|
')
|
||||||
|
->groupBy('transaction.kodcaw')
|
||||||
|
->get();
|
||||||
|
|
||||||
|
$total_nilai_marhun_by_cawangan = [];
|
||||||
|
|
||||||
|
// Step 2: Loop through ansuran_query and fetch nilai_marhun per kodcaw
|
||||||
|
foreach ($ansuran_query as $ansuran_cawangan) {
|
||||||
|
$kodcaw = $ansuran_cawangan->kod_cawangan;
|
||||||
|
$norujukan_list = explode(',', $ansuran_cawangan->norujukan_list); // Convert to array
|
||||||
|
|
||||||
|
// Get database connection for this branch
|
||||||
|
$mysql_connection = $cawangan_available->where('kodcaw', $kodcaw)->first()->mysql ?? null;
|
||||||
|
if (!$mysql_connection) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sum nilai_marhun for matching norujukan in gadai table
|
||||||
|
$total_nilai_marhun_by_cawangan[$kodcaw] = Gadai::on($mysql_connection)
|
||||||
|
->whereIn('norujukan', $norujukan_list)
|
||||||
|
->sum('nilaimarhun');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Step 3: Merge ansuran summary with total_nilai_marhun
|
||||||
|
$summary_ansuran_by_cawangan = $ansuran_query
|
||||||
|
->filter(function ($ansuran_cawangan) use ($kodcaw_array) {
|
||||||
|
return in_array($ansuran_cawangan['kod_cawangan'], $kodcaw_array);
|
||||||
|
})
|
||||||
|
->map(function ($ansuran_cawangan) use ($kod_caw_with_cawangan_detail_array, $total_nilai_marhun_by_cawangan) {
|
||||||
|
$kodcaw = $ansuran_cawangan->kod_cawangan;
|
||||||
|
$ansuran_cawangan->cawangan_detail = $kod_caw_with_cawangan_detail_array[$kodcaw] ?? 'Unknown';
|
||||||
|
$ansuran_cawangan->total_nilai_marhun = $total_nilai_marhun_by_cawangan[$kodcaw] ?? 0;
|
||||||
|
unset($ansuran_cawangan->norujukan_list); // Remove unnecessary field
|
||||||
|
return $ansuran_cawangan;
|
||||||
|
})
|
||||||
|
->values();
|
||||||
|
|
||||||
|
// Step 4: Calculate overall totals
|
||||||
|
$total_summary = [
|
||||||
|
'bilangan_ansuran' => 0,
|
||||||
|
'bayaran_pembiayaan' => 0,
|
||||||
|
'bayaran_kos_keuntungan' => 0,
|
||||||
|
'jumlah_bayaran' => 0,
|
||||||
|
'total_nilai_marhun' => 0,
|
||||||
|
];
|
||||||
|
|
||||||
|
foreach ($summary_ansuran_by_cawangan as $ansuran_cawangan) {
|
||||||
|
$total_summary['bilangan_ansuran'] += $ansuran_cawangan->bilangan_ansuran ?? 0;
|
||||||
|
$total_summary['bayaran_pembiayaan'] += $ansuran_cawangan->bayaran_pembiayaan ?? 0;
|
||||||
|
$total_summary['bayaran_kos_keuntungan'] += $ansuran_cawangan->bayaran_kos_keuntungan ?? 0;
|
||||||
|
$total_summary['jumlah_bayaran'] += $ansuran_cawangan->jumlah_bayaran ?? 0;
|
||||||
|
$total_summary['total_nilai_marhun'] += $ansuran_cawangan->total_nilai_marhun ?? 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Step 5: Prepare the overall ansuran summary
|
||||||
|
$summary_ansuran = [
|
||||||
|
'bilangan_ansuran' => $total_summary['bilangan_ansuran'],
|
||||||
|
'bayaran_pembiayaan' => $total_summary['bayaran_pembiayaan'],
|
||||||
|
'bayaran_kos_keuntungan' => $total_summary['bayaran_kos_keuntungan'],
|
||||||
|
'jumlah_bayaran' => $total_summary['jumlah_bayaran'],
|
||||||
|
'total_nilai_marhun' => $total_summary['total_nilai_marhun'],
|
||||||
|
];
|
||||||
|
|
||||||
|
$response = [
|
||||||
|
'summary_aging_by_cawangan' => $summary_ansuran_by_cawangan,
|
||||||
|
'summary_aging' => $summary_ansuran, // Now contains the grand totals
|
||||||
|
];
|
||||||
|
|
||||||
|
return json_encode($response);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getSummaryLaporanAging(Request $request)
|
||||||
|
{
|
||||||
|
$online_array_db_connection = Helper::getOnlineArrahnConnection();
|
||||||
|
$cawangan_available = Cawangan::on($online_array_db_connection)
|
||||||
|
->select('kodcaw', 'details_caw', 'mysql')->get();
|
||||||
|
|
||||||
|
$kod_caw_with_cawangan_detail_array = $cawangan_available->pluck('details_caw', 'kodcaw')->toArray();
|
||||||
|
|
||||||
|
$current = Carbon::now();
|
||||||
|
$endDate = Carbon::parse($request->endDate);
|
||||||
|
$bulan = $endDate->month;
|
||||||
|
$tahun = $endDate->year;
|
||||||
|
|
||||||
|
$result = [];
|
||||||
|
|
||||||
|
foreach ($kod_caw_with_cawangan_detail_array as $kodcaw => $details_caw) {
|
||||||
|
$cawangan = $cawangan_available->firstWhere('kodcaw', $kodcaw);
|
||||||
|
if (!$cawangan) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Determine which table to query
|
||||||
|
if ($current->month == $bulan && $current->year == $tahun) {
|
||||||
|
$audit = Gadai::on($cawangan->mysql)
|
||||||
|
->where(function ($q) use ($endDate) {
|
||||||
|
$q->where([
|
||||||
|
['tagpalsu', '=', 0],
|
||||||
|
['t_gadai', '<=', $endDate->toDateString()],
|
||||||
|
['sttebus', '=', '']
|
||||||
|
])
|
||||||
|
->orWhere([
|
||||||
|
['tagpalsu', '=', 0],
|
||||||
|
['t_update', '>', $endDate->toDateString()],
|
||||||
|
['sttebus', '!=', ''],
|
||||||
|
['t_gadai', '<=', $endDate->toDateString()]
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
$tableMap = [
|
||||||
|
1 => StokAudit1::class, 2 => StokAudit2::class, 3 => StokAudit3::class,
|
||||||
|
4 => StokAudit4::class, 5 => StokAudit5::class, 6 => StokAudit6::class,
|
||||||
|
7 => StokAudit7::class, 8 => StokAudit8::class, 9 => StokAudit9::class,
|
||||||
|
10 => StokAudit10::class, 11 => StokAudit11::class, 12 => StokAudit12::class,
|
||||||
|
];
|
||||||
|
|
||||||
|
$model = $tableMap[$bulan] ?? null;
|
||||||
|
if (!$model) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$audit = $model::on($cawangan->mysql)->where('tahun', $tahun);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Categorize data by tempoh
|
||||||
|
$summary = [];
|
||||||
|
|
||||||
|
for ($i = 1; $i <= 13; $i++) {
|
||||||
|
$query = clone $audit;
|
||||||
|
|
||||||
|
if ($i == 13) {
|
||||||
|
$filtered = $query->where('tempoh', '>', 12);
|
||||||
|
} elseif ($i == 1) {
|
||||||
|
$filtered = $query->whereBetween('tempoh', [0.01, 1.5]);
|
||||||
|
} elseif ($i == 12) {
|
||||||
|
$filtered = $query->where('tempoh', 12);
|
||||||
|
} else {
|
||||||
|
$filtered = $query->where([['tempoh','>',$i-(0.5)],['tempoh','<=',$i+(0.5)]]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$labelMap = [
|
||||||
|
1 => '1 Bulan',
|
||||||
|
2 => '2 Bulan',
|
||||||
|
3 => '3 Bulan',
|
||||||
|
4 => '4 Bulan',
|
||||||
|
5 => '5 Bulan',
|
||||||
|
6 => '6 Bulan',
|
||||||
|
7 => '7 bulan',
|
||||||
|
8 => '8 Bulan',
|
||||||
|
9 => '9 Bulan',
|
||||||
|
10 => '10 Bulan',
|
||||||
|
11 => '11 Bulan',
|
||||||
|
12 => '12 Bulan',
|
||||||
|
13 => '> 12 Bulan'
|
||||||
|
];
|
||||||
|
|
||||||
|
$summary[] = [
|
||||||
|
'label' => $labelMap[$i],
|
||||||
|
'count' => $filtered->count(),
|
||||||
|
'sum_bakipjm' => $filtered->sum('bakipjm'),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
$result[] = [
|
||||||
|
'kodcaw' => $kodcaw,
|
||||||
|
'cawangan' => $details_caw,
|
||||||
|
'tahun' => $tahun,
|
||||||
|
'bulan' => $bulan,
|
||||||
|
'summary_by_tempoh' => $summary
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
return response()->json($result);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,172 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Reports;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Cawangan;
|
||||||
|
use App\Gadai;
|
||||||
|
use App\Customer;
|
||||||
|
use App\Tebus;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use App\Services\Reports\GadaianService as ReportGadaianService;
|
||||||
|
use App\Helper;
|
||||||
|
use App\Services\Reports\RingkasanHarianService as ReportRingkasanHarianService;
|
||||||
|
|
||||||
|
|
||||||
|
class AnalisaController extends Controller
|
||||||
|
{
|
||||||
|
public function getLaporanCawangan(string $kod_cawangan, Request $request)
|
||||||
|
{
|
||||||
|
$reportGadaianService = new ReportGadaianService($kod_cawangan, $request);
|
||||||
|
return $reportGadaianService->getCawanganReport();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getSummaryLaporanPelangganBaru(Request $request)
|
||||||
|
{
|
||||||
|
$startDate = $request->startDate;
|
||||||
|
$endDate = $request->endDate;
|
||||||
|
|
||||||
|
// Get active branch DBs from helper
|
||||||
|
$active_cawangan_db_connection = Helper::getActiveCawanganDbConnection();
|
||||||
|
|
||||||
|
// Fetch branch details with mysql info
|
||||||
|
$cawangan_available = Cawangan::select('kodcaw', 'details_caw', 'mysql')
|
||||||
|
->whereIn('mysql', $active_cawangan_db_connection)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
$active_cawangan_db_connection = array_column($cawangan_available->toArray(), 'mysql');
|
||||||
|
|
||||||
|
$active_cawangan_detail = $cawangan_available->map(function ($c) {
|
||||||
|
return [
|
||||||
|
'kodcaw' => $c->kodcaw,
|
||||||
|
'details_caw' => $c->details_caw,
|
||||||
|
];
|
||||||
|
})->values()->toArray();
|
||||||
|
|
||||||
|
// Iterate through each branch and get data
|
||||||
|
$response = array_map(function ($db_connection, $cawangan_detail) use ($request) {
|
||||||
|
// Pass the required parameters to the service constructor
|
||||||
|
$reportRingkasanHarianService = new ReportRingkasanHarianService($cawangan_detail['kodcaw'], $request);
|
||||||
|
|
||||||
|
// Get the customer count from the service
|
||||||
|
$bilangan_customer_baru = $reportRingkasanHarianService->getCustomerSummary(); // Call public method
|
||||||
|
|
||||||
|
// Return the response
|
||||||
|
return [
|
||||||
|
'kodcaw' => $cawangan_detail['kodcaw'],
|
||||||
|
'details_caw' => $cawangan_detail['details_caw'],
|
||||||
|
'total_pelanggan_baru' => $bilangan_customer_baru,
|
||||||
|
];
|
||||||
|
}, $active_cawangan_db_connection, $active_cawangan_detail);
|
||||||
|
|
||||||
|
return response()->json($response);
|
||||||
|
}
|
||||||
|
|
||||||
|
// public function getSummaryLaporanPelangganAktif(Request $request)
|
||||||
|
// {
|
||||||
|
// $startDate = $request->startDate;
|
||||||
|
// $endDate = $request->endDate;
|
||||||
|
|
||||||
|
// // Dapatkan senarai cawangan aktif
|
||||||
|
// $active_cawangan_db_connection = Helper::getActiveCawanganDbConnection();
|
||||||
|
|
||||||
|
// // Dapatkan maklumat cawangan
|
||||||
|
// $cawangan_available = Cawangan::select('kodcaw', 'details_caw', 'mysql')
|
||||||
|
// ->whereIn('mysql', $active_cawangan_db_connection)
|
||||||
|
// ->get();
|
||||||
|
|
||||||
|
// $active_cawangan_detail = $cawangan_available->map(function ($c) {
|
||||||
|
// return [
|
||||||
|
// 'kodcaw' => $c->kodcaw,
|
||||||
|
// 'details_caw' => $c->details_caw,
|
||||||
|
// 'mysql' => $c->mysql,
|
||||||
|
// ];
|
||||||
|
// })->toArray();
|
||||||
|
|
||||||
|
// $response = array_map(function ($cawangan) use ($startDate, $endDate) {
|
||||||
|
// $db_connection = $cawangan['mysql'];
|
||||||
|
|
||||||
|
// $total_aktif = Gadai::on($db_connection)
|
||||||
|
// ->where(function ($query) use ($startDate) {
|
||||||
|
// $query->where('sttebus', '')
|
||||||
|
// ->where('t_update', '>=', $startDate);
|
||||||
|
// })
|
||||||
|
// ->where('t_gadai', '<=', $endDate)
|
||||||
|
// ->distinct('nokp')
|
||||||
|
// ->count('nokp');
|
||||||
|
|
||||||
|
// return [
|
||||||
|
// 'kodcaw' => $cawangan['kodcaw'],
|
||||||
|
// 'details_caw' => $cawangan['details_caw'],
|
||||||
|
// 'total_pelanggan_aktif' => $total_aktif,
|
||||||
|
// ];
|
||||||
|
// }, $active_cawangan_detail);
|
||||||
|
|
||||||
|
|
||||||
|
// return response()->json($response);
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
public function getSummaryLaporanPelangganAktif(Request $request)
|
||||||
|
{
|
||||||
|
$startDate = $request->startDate;
|
||||||
|
$endDate = $request->endDate;
|
||||||
|
|
||||||
|
$active_cawangan = Cawangan::select('kodcaw', 'details_caw', 'mysql')
|
||||||
|
->whereIn('mysql', Helper::getActiveCawanganDbConnection())
|
||||||
|
->get();
|
||||||
|
|
||||||
|
$response = $active_cawangan->map(function ($cawangan) use ($startDate, $endDate) {
|
||||||
|
$db = $cawangan->mysql;
|
||||||
|
|
||||||
|
// Ambil nokp dari Gadai
|
||||||
|
$nokp_gadai = DB::connection($db)->table('gadai')
|
||||||
|
->whereBetween('t_gadai', [$startDate, $endDate])
|
||||||
|
->pluck('nokp')
|
||||||
|
->toArray();
|
||||||
|
|
||||||
|
// Ambil nokp dari Tebus
|
||||||
|
$nokp_tebus = DB::connection($db)->table('tebus as t')
|
||||||
|
->join('gadai as g', 't.norujukan', '=', 'g.norujukan')
|
||||||
|
->whereBetween('t.t_tebus', [$startDate, $endDate])
|
||||||
|
->pluck('g.nokp')
|
||||||
|
->toArray();
|
||||||
|
|
||||||
|
// Gabung semua nokp
|
||||||
|
$semua_nokp = collect(array_merge($nokp_gadai, $nokp_tebus))
|
||||||
|
->filter(fn($item) => !empty($item))
|
||||||
|
->unique()
|
||||||
|
->values();
|
||||||
|
|
||||||
|
if ($semua_nokp->isEmpty()) {
|
||||||
|
// Jika array kosong, kita kembalikan hasil kosong
|
||||||
|
$pelanggan_aktif = collect();
|
||||||
|
} else {
|
||||||
|
$pelanggan_aktif = Customer::on($db)
|
||||||
|
->where(function ($query) use ($semua_nokp) {
|
||||||
|
$query->whereIn('kpbaru', $semua_nokp)
|
||||||
|
->orWhereIn('kplama', $semua_nokp);
|
||||||
|
})
|
||||||
|
->get(['nama', 'kpbaru', 'kplama'])
|
||||||
|
->toArray();;
|
||||||
|
}
|
||||||
|
|
||||||
|
return [
|
||||||
|
'kodcaw' => $cawangan->kodcaw,
|
||||||
|
'details_caw' => $cawangan->details_caw,
|
||||||
|
'total_pelanggan_aktif' => count($semua_nokp),
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
return response()->json($response);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -3,6 +3,7 @@
|
|||||||
namespace App\Http\Controllers\Reports;
|
namespace App\Http\Controllers\Reports;
|
||||||
|
|
||||||
use App\Cawangan;
|
use App\Cawangan;
|
||||||
|
use App\Gadai;
|
||||||
use App\Helper;
|
use App\Helper;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Services\Reports\AnsuranService as ReportAnsuranService;
|
use App\Services\Reports\AnsuranService as ReportAnsuranService;
|
||||||
@@ -19,46 +20,99 @@ class AnsuranController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function getSummaryLaporanAnsuran(Request $request)
|
public function getSummaryLaporanAnsuran(Request $request)
|
||||||
{
|
{
|
||||||
$online_array_db_connection = Helper::getOnlineArrahnConnection();
|
$online_array_db_connection = Helper::getOnlineArrahnConnection();
|
||||||
|
$cawangan_available = Cawangan::on($online_array_db_connection)->select('kodcaw', 'details_caw', 'mysql')->get();
|
||||||
|
|
||||||
$ansuran_query = Transaction::on($online_array_db_connection)
|
$kodcaw_array = array_column($cawangan_available->toArray(), 'kodcaw');
|
||||||
->leftJoin('transaksi_keuntungan', function ($join) {
|
$kod_caw_with_cawangan_detail_array = $cawangan_available->pluck('details_caw', 'kodcaw')->toArray();
|
||||||
$join->on('transaction.norujukan', '=', 'transaksi_keuntungan.norujukan');
|
|
||||||
$join->on('transaction.created_at', '=', 'transaksi_keuntungan.tarikh_bayaran');
|
|
||||||
})
|
|
||||||
->where('transaction.trans_type', '=', 'A')
|
|
||||||
->whereDate('transaction.created_at', '>=', date($request->startDate))
|
|
||||||
->whereDate('transaction.created_at', '<=', date($request->endDate))
|
|
||||||
->selectRaw('
|
|
||||||
count(transaction.norujukan) as bilangan_ansuran,
|
|
||||||
sum(transaksi_keuntungan.bayaran_pembiayaan) as bayaran_pembiayaan,
|
|
||||||
sum(transaksi_keuntungan.bayaran_keuntungan) as bayaran_kos_keuntungan,
|
|
||||||
sum(transaction.duit_masuk) as jumlah_bayaran
|
|
||||||
');
|
|
||||||
|
|
||||||
$summary_ansuran = (clone $ansuran_query)->get()->toArray()[0];
|
// Step 1: Fetch the ansuran data grouped by cawangan
|
||||||
|
$ansuran_query = Transaction::on($online_array_db_connection)
|
||||||
|
->leftJoin('transaksi_keuntungan', function ($join) {
|
||||||
|
$join->on('transaction.norujukan', '=', 'transaksi_keuntungan.norujukan');
|
||||||
|
$join->on('transaction.created_at', '=', 'transaksi_keuntungan.tarikh_bayaran');
|
||||||
|
})
|
||||||
|
->where('transaction.trans_type', '=', 'A')
|
||||||
|
->whereDate('transaction.created_at', '>=', date($request->startDate))
|
||||||
|
->whereDate('transaction.created_at', '<=', date($request->endDate))
|
||||||
|
->selectRaw('
|
||||||
|
transaction.kodcaw as kod_cawangan,
|
||||||
|
count(transaction.norujukan) as bilangan_ansuran,
|
||||||
|
sum(transaksi_keuntungan.bayaran_pembiayaan) as bayaran_pembiayaan,
|
||||||
|
sum(transaksi_keuntungan.bayaran_keuntungan) as bayaran_kos_keuntungan,
|
||||||
|
sum(transaction.duit_masuk) as jumlah_bayaran,
|
||||||
|
GROUP_CONCAT(transaction.norujukan) as norujukan_list
|
||||||
|
')
|
||||||
|
->groupBy('transaction.kodcaw')
|
||||||
|
->get();
|
||||||
|
|
||||||
$summary_ansuran_by_cawangan = (clone $ansuran_query)
|
$total_nilai_marhun_by_cawangan = [];
|
||||||
->addSelect('transaction.kodcaw as kod_cawangan')
|
|
||||||
->groupBy('transaction.kodcaw')
|
|
||||||
->get();
|
|
||||||
|
|
||||||
$cawangan_available = Cawangan::on($online_array_db_connection)->select('kodcaw', 'details_caw')->get()->toArray();
|
// Step 2: Loop through ansuran_query and fetch nilai_marhun per kodcaw
|
||||||
$kodcaw_array = array_column($cawangan_available, 'kodcaw');
|
foreach ($ansuran_query as $ansuran_cawangan) {
|
||||||
$cawangan_detail_array = array_column($cawangan_available, 'details_caw');
|
$kodcaw = $ansuran_cawangan->kod_cawangan;
|
||||||
$kod_caw_with_cawangan_detail_array = array_combine($kodcaw_array, $cawangan_detail_array);
|
$norujukan_list = explode(',', $ansuran_cawangan->norujukan_list); // Convert to array
|
||||||
|
|
||||||
$summary_ansuran_by_cawangan = $summary_ansuran_by_cawangan->map(function ($ansuran_cawangan) use ($kod_caw_with_cawangan_detail_array) {
|
// Get database connection for this branch
|
||||||
$ansuran_cawangan->cawangan_detail = $kod_caw_with_cawangan_detail_array[$ansuran_cawangan['kod_cawangan']];
|
$mysql_connection = $cawangan_available->where('kodcaw', $kodcaw)->first()->mysql ?? null;
|
||||||
return $ansuran_cawangan;
|
if (!$mysql_connection) {
|
||||||
});
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
$response = [
|
// Sum nilai_marhun for matching norujukan in gadai table
|
||||||
'summary_ansuran_by_cawangan' => $summary_ansuran_by_cawangan,
|
$total_nilai_marhun_by_cawangan[$kodcaw] = Gadai::on($mysql_connection)
|
||||||
'summary_ansuran' => $summary_ansuran,
|
->whereIn('norujukan', $norujukan_list)
|
||||||
];
|
->sum('nilaimarhun');
|
||||||
|
|
||||||
return json_encode($response);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Step 3: Merge ansuran summary with total_nilai_marhun
|
||||||
|
$summary_ansuran_by_cawangan = $ansuran_query
|
||||||
|
->filter(function ($ansuran_cawangan) use ($kodcaw_array) {
|
||||||
|
return in_array($ansuran_cawangan['kod_cawangan'], $kodcaw_array);
|
||||||
|
})
|
||||||
|
->map(function ($ansuran_cawangan) use ($kod_caw_with_cawangan_detail_array, $total_nilai_marhun_by_cawangan) {
|
||||||
|
$kodcaw = $ansuran_cawangan->kod_cawangan;
|
||||||
|
$ansuran_cawangan->cawangan_detail = $kod_caw_with_cawangan_detail_array[$kodcaw] ?? 'Unknown';
|
||||||
|
$ansuran_cawangan->total_nilai_marhun = $total_nilai_marhun_by_cawangan[$kodcaw] ?? 0;
|
||||||
|
unset($ansuran_cawangan->norujukan_list); // Remove unnecessary field
|
||||||
|
return $ansuran_cawangan;
|
||||||
|
})
|
||||||
|
->values();
|
||||||
|
|
||||||
|
// Step 4: Calculate overall totals
|
||||||
|
$total_summary = [
|
||||||
|
'bilangan_ansuran' => 0,
|
||||||
|
'bayaran_pembiayaan' => 0,
|
||||||
|
'bayaran_kos_keuntungan' => 0,
|
||||||
|
'jumlah_bayaran' => 0,
|
||||||
|
'total_nilai_marhun' => 0,
|
||||||
|
];
|
||||||
|
|
||||||
|
foreach ($summary_ansuran_by_cawangan as $ansuran_cawangan) {
|
||||||
|
$total_summary['bilangan_ansuran'] += $ansuran_cawangan->bilangan_ansuran ?? 0;
|
||||||
|
$total_summary['bayaran_pembiayaan'] += $ansuran_cawangan->bayaran_pembiayaan ?? 0;
|
||||||
|
$total_summary['bayaran_kos_keuntungan'] += $ansuran_cawangan->bayaran_kos_keuntungan ?? 0;
|
||||||
|
$total_summary['jumlah_bayaran'] += $ansuran_cawangan->jumlah_bayaran ?? 0;
|
||||||
|
$total_summary['total_nilai_marhun'] += $ansuran_cawangan->total_nilai_marhun ?? 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Step 5: Prepare the overall ansuran summary
|
||||||
|
$summary_ansuran = [
|
||||||
|
'bilangan_ansuran' => $total_summary['bilangan_ansuran'],
|
||||||
|
'bayaran_pembiayaan' => $total_summary['bayaran_pembiayaan'],
|
||||||
|
'bayaran_kos_keuntungan' => $total_summary['bayaran_kos_keuntungan'],
|
||||||
|
'jumlah_bayaran' => $total_summary['jumlah_bayaran'],
|
||||||
|
'total_nilai_marhun' => $total_summary['total_nilai_marhun'],
|
||||||
|
];
|
||||||
|
|
||||||
|
$response = [
|
||||||
|
'summary_ansuran_by_cawangan' => $summary_ansuran_by_cawangan,
|
||||||
|
'summary_ansuran' => $summary_ansuran, // Now contains the grand totals
|
||||||
|
];
|
||||||
|
|
||||||
|
return json_encode($response);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Reports;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use App\TransactionOnline;
|
||||||
|
|
||||||
|
class BayaranOnlineController extends Controller
|
||||||
|
{
|
||||||
|
|
||||||
|
public function __invoke(Request $request)
|
||||||
|
{
|
||||||
|
$transactionOnlineQuery = TransactionOnline::filter($request);
|
||||||
|
|
||||||
|
$formatMoney = fn($x) => number_format($x, 2, '.', ',');
|
||||||
|
|
||||||
|
$sumTotalPayments = (clone $transactionOnlineQuery)->sum('total_payment');
|
||||||
|
$sumTotalPayments = $formatMoney($sumTotalPayments);
|
||||||
|
$nosPayments = (clone $transactionOnlineQuery)->count('total_payment');
|
||||||
|
|
||||||
|
$transactions = (clone $transactionOnlineQuery)->select('kodcaw', DB::raw('sum(total_payment) as totalCawanganPayment'), DB::raw('count(reference_no) as totalReferenceNo'))
|
||||||
|
->groupBy('kodcaw')
|
||||||
|
->get()
|
||||||
|
->map(function($x) use($formatMoney) {
|
||||||
|
$x['totalCawanganPayment'] = $formatMoney($x['totalCawanganPayment']);
|
||||||
|
return $x;
|
||||||
|
});
|
||||||
|
|
||||||
|
return response()->json([
|
||||||
|
'nosPayments' => $nosPayments,
|
||||||
|
'sumTotalPayments' => $sumTotalPayments,
|
||||||
|
'transactions' => $transactions,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Reports;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use App\TransactionOnline;
|
||||||
|
|
||||||
|
class BayaranOnlineDetailController extends Controller
|
||||||
|
{
|
||||||
|
|
||||||
|
public function __invoke(Request $request)
|
||||||
|
{
|
||||||
|
|
||||||
|
$transactionOnlineQuery = TransactionOnline::filter($request);
|
||||||
|
|
||||||
|
$formatMoney = fn($x) => number_format($x, 2, '.', ',');
|
||||||
|
|
||||||
|
$sumTotalPayments = (clone $transactionOnlineQuery)->sum('total_payment');
|
||||||
|
$sumTotalPayments = $formatMoney($sumTotalPayments);
|
||||||
|
$sumPaymentNos = (clone $transactionOnlineQuery)->count('total_payment');
|
||||||
|
|
||||||
|
$transactions = (clone $transactionOnlineQuery)->select('nokp', 'customer_name', 'norujukan', 'reference_no', 'kodcaw', 'total_payment', 'tarikh', 'masa', 'status')
|
||||||
|
->get()
|
||||||
|
->groupBy('nokp')
|
||||||
|
->map(fn($x) => $x->groupBy('cawangan.details_caw'))
|
||||||
|
->map(function ($cawangan) {
|
||||||
|
|
||||||
|
$all_entries = $cawangan->collapse();
|
||||||
|
|
||||||
|
$first = $all_entries->first();
|
||||||
|
|
||||||
|
$payment_details = $cawangan->map(function ($cawangan_payments) {
|
||||||
|
return [
|
||||||
|
'paymentNos' => $cawangan_payments->count(),
|
||||||
|
'paymentSum' => $cawangan_payments->sum('total_payment'),
|
||||||
|
'paymentDetails' => $cawangan_payments->map(function ($x) {
|
||||||
|
|
||||||
|
$payment_details = collect($x)->except('nokp', 'customer_name', 'kodcaw', 'cawangan');
|
||||||
|
|
||||||
|
return $payment_details;
|
||||||
|
}),
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
return [
|
||||||
|
'customer_name' => $first->customer_name,
|
||||||
|
'nokp' => $first->nokp,
|
||||||
|
'payments' => $payment_details,
|
||||||
|
];
|
||||||
|
})
|
||||||
|
->values();
|
||||||
|
|
||||||
|
|
||||||
|
return response()->json([
|
||||||
|
'sumTotalPayments' => $sumTotalPayments,
|
||||||
|
'sumPaymentNos' => $sumPaymentNos,
|
||||||
|
'transactions' => $transactions,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -26,18 +26,29 @@ class GadaianController extends Controller
|
|||||||
$startDate = $request->startDate;
|
$startDate = $request->startDate;
|
||||||
$endDate = $request->endDate;
|
$endDate = $request->endDate;
|
||||||
|
|
||||||
|
// Get active branch DBs from helper
|
||||||
$active_cawangan_db_connection = Helper::getActiveCawanganDbConnection();
|
$active_cawangan_db_connection = Helper::getActiveCawanganDbConnection();
|
||||||
|
|
||||||
$active_cawangan_db_name = array_map(function ($db_connection) {
|
// Fetch branch details with mysql info
|
||||||
return config('database.connections' . '.' . $db_connection . '.' . 'database');
|
$cawangan_available = Cawangan::select('kodcaw', 'details_caw', 'mysql')
|
||||||
}, $active_cawangan_db_connection);
|
->whereIn('mysql', $active_cawangan_db_connection)
|
||||||
|
->get();
|
||||||
$active_cawangan_detail = Cawangan::select('kodcaw', 'details_caw')->whereIn('db_name', $active_cawangan_db_name)->get()->toArray();
|
|
||||||
|
// Get db connections
|
||||||
|
$active_cawangan_db_connection = array_column($cawangan_available->toArray(), 'mysql');
|
||||||
|
|
||||||
|
// Map branch info for response
|
||||||
|
$active_cawangan_detail = $cawangan_available->map(function ($c) {
|
||||||
|
return [
|
||||||
|
'kodcaw' => $c->kodcaw,
|
||||||
|
'details_caw' => $c->details_caw,
|
||||||
|
];
|
||||||
|
})->values()->toArray();
|
||||||
|
|
||||||
$summary_gadaian_data = array_map(function ($db_connection) use ($request) {
|
$summary_gadaian_data = array_map(function ($db_connection) use ($request) {
|
||||||
$query = Gadai::on($db_connection);
|
$query = Gadai::on($db_connection);
|
||||||
|
|
||||||
$query->select(DB::raw('count(norujukan) as total_gadaian, sum(berat) as sum_berat, sum(nilaimarhun) as sum_nilai_marhun, sum(pinjaman) as sum_pinjaman'));
|
$query->select(DB::raw('count(norujukan) as total_gadaian, sum(berat) as sum_berat, sum(nilaimarhun) as sum_nilai_marhun, sum(pinjaman) as sum_pinjaman, sum(upah12) as sum_upah_12'));
|
||||||
|
|
||||||
$query->when($request->filled('startDate') and $request->filled('endDate'), function ($q) use ($request) {
|
$query->when($request->filled('startDate') and $request->filled('endDate'), function ($q) use ($request) {
|
||||||
return $q->where('t_gadai', '>=', $request->startDate)
|
return $q->where('t_gadai', '>=', $request->startDate)
|
||||||
@@ -54,4 +65,131 @@ class GadaianController extends Controller
|
|||||||
|
|
||||||
return json_encode($response);
|
return json_encode($response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getSummaryLaporanGadaiTebus(Request $request)
|
||||||
|
{
|
||||||
|
$startDate = $request->startDate;
|
||||||
|
$endDate = $request->endDate;
|
||||||
|
|
||||||
|
// Get active branch DBs from helper
|
||||||
|
$active_cawangan_db_connection = Helper::getActiveCawanganDbConnection();
|
||||||
|
|
||||||
|
// Fetch branch details with mysql info
|
||||||
|
$cawangan_available = Cawangan::select('kodcaw', 'details_caw', 'mysql')
|
||||||
|
->whereIn('mysql', $active_cawangan_db_connection)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
// Get db connections
|
||||||
|
$active_cawangan_db_connection = array_column($cawangan_available->toArray(), 'mysql');
|
||||||
|
|
||||||
|
// Map branch info for response
|
||||||
|
$active_cawangan_detail = $cawangan_available->map(function ($c) {
|
||||||
|
return [
|
||||||
|
'kodcaw' => $c->kodcaw,
|
||||||
|
'details_caw' => $c->details_caw,
|
||||||
|
];
|
||||||
|
})->values()->toArray();
|
||||||
|
|
||||||
|
// Loop through each DB
|
||||||
|
$summary_data = array_map(function ($db_connection) use ($startDate, $endDate) {
|
||||||
|
$result = DB::connection($db_connection)->table('gadai as g')
|
||||||
|
->join('tebus as t', function ($join) {
|
||||||
|
$join->on(DB::raw('DATE(g.t_gadai)'), '=', DB::raw('DATE(t.t_tebus)'))
|
||||||
|
->on('g.norujukan', '=', 't.norujukan');
|
||||||
|
})
|
||||||
|
->whereDate('g.t_gadai', '>=', $startDate)
|
||||||
|
->whereDate('g.t_gadai', '<=', $endDate)
|
||||||
|
->whereDate('t.t_tebus', '>=', $startDate)
|
||||||
|
->whereDate('t.t_tebus', '<=', $endDate)
|
||||||
|
->where('g.upah12', '>=', 0.00)
|
||||||
|
->selectRaw('
|
||||||
|
COUNT(DISTINCT g.norujukan) as total_gadai_tebus_samahari,
|
||||||
|
SUM(g.pinjaman) as jumlah_pinjaman
|
||||||
|
')
|
||||||
|
->first(); // ambil satu hasil, bukan collection
|
||||||
|
|
||||||
|
return (array) $result ?: [
|
||||||
|
'total_gadai_tebus_samahari' => 0,
|
||||||
|
'jumlah_pinjaman' => 0.00
|
||||||
|
];
|
||||||
|
}, $active_cawangan_db_connection);
|
||||||
|
|
||||||
|
|
||||||
|
// Gabung cawangan + hasil
|
||||||
|
$response = array_map(function ($cawangan_detail, $summary_row) {
|
||||||
|
return array_merge($cawangan_detail, $summary_row ?: [
|
||||||
|
'total_gadai_tebus_samahari' => 0,
|
||||||
|
'jumlah_pinjaman' => 0.00
|
||||||
|
]);
|
||||||
|
}, $active_cawangan_detail, $summary_data);
|
||||||
|
|
||||||
|
return response()->json($response);
|
||||||
|
}
|
||||||
|
public function getSummaryLaporanGadaiTebusMasa(Request $request)
|
||||||
|
{
|
||||||
|
$startDate = $request->startDate;
|
||||||
|
$endDate = $request->endDate;
|
||||||
|
|
||||||
|
// Ambil connection aktif
|
||||||
|
$active_cawangan_db_connection = Helper::getActiveCawanganDbConnection();
|
||||||
|
|
||||||
|
// Dapatkan butiran cawangan
|
||||||
|
$cawangan_available = Cawangan::select('kodcaw', 'details_caw', 'mysql')
|
||||||
|
->whereIn('mysql', $active_cawangan_db_connection)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
$active_cawangan_db_connection = array_column($cawangan_available->toArray(), 'mysql');
|
||||||
|
|
||||||
|
// Map branch info for response
|
||||||
|
$active_cawangan_detail = $cawangan_available->map(function ($c) {
|
||||||
|
return [
|
||||||
|
'kodcaw' => $c->kodcaw,
|
||||||
|
'details_caw' => $c->details_caw,
|
||||||
|
];
|
||||||
|
})->values()->toArray();
|
||||||
|
|
||||||
|
// Loop through each DB
|
||||||
|
$summary_data = array_map(function ($db_connection) use ($startDate, $endDate) {
|
||||||
|
$result = DB::connection($db_connection)->table('gadai as g')
|
||||||
|
->join('tebus as t', function ($join) {
|
||||||
|
$join->on(DB::raw('DATE(g.t_gadai)'), '=', DB::raw('DATE(t.t_tebus)'))
|
||||||
|
->on('g.norujukan', '=', 't.norujukan');
|
||||||
|
})
|
||||||
|
->whereDate('g.t_gadai', '>=', $startDate)
|
||||||
|
->whereDate('g.t_gadai', '<=', $endDate)
|
||||||
|
->whereDate('t.t_tebus', '>=', $startDate)
|
||||||
|
->whereDate('t.t_tebus', '<=', $endDate)
|
||||||
|
->where('g.upah12', '>=', 0.00)
|
||||||
|
->selectRaw('
|
||||||
|
COUNT(DISTINCT g.norujukan) as total_gadai_tebus_samahari,
|
||||||
|
SUM(g.pinjaman) as jumlah_pinjaman
|
||||||
|
')
|
||||||
|
->first(); // ambil satu hasil, bukan collection
|
||||||
|
|
||||||
|
return (array) $result ?: [
|
||||||
|
'total_gadai_tebus_samahari' => 0,
|
||||||
|
'jumlah_pinjaman' => 0.00
|
||||||
|
];
|
||||||
|
}, $active_cawangan_db_connection);
|
||||||
|
|
||||||
|
|
||||||
|
// Gabung cawangan + hasil
|
||||||
|
$response = array_map(function ($cawangan_detail, $summary_row) {
|
||||||
|
return array_merge($cawangan_detail, $summary_row ?: [
|
||||||
|
'total_gadai_tebus_samahari' => 0,
|
||||||
|
'jumlah_pinjaman' => 0.00
|
||||||
|
]);
|
||||||
|
}, $active_cawangan_detail, $summary_data);
|
||||||
|
|
||||||
|
return response()->json($response);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getLaporanGadaiTebusMasaCawangan(string $kod_cawangan, Request $request)
|
||||||
|
{
|
||||||
|
$ReportGadaianService = new ReportGadaianService($kod_cawangan, $request);
|
||||||
|
return $ReportGadaianService->getCawanganReportGadaiTebusMasa();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,165 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Reports;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Cawangan;
|
||||||
|
use App\Lelong;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use App\Services\Reports\LelonganService as ReportLelonganService;
|
||||||
|
use App\Helper;
|
||||||
|
|
||||||
|
|
||||||
|
class LelonganController extends Controller
|
||||||
|
{
|
||||||
|
|
||||||
|
public function getLaporanCawangan(string $kod_cawangan, Request $request)
|
||||||
|
{
|
||||||
|
$reportLelonganService = new ReportLelonganService($kod_cawangan, $request);
|
||||||
|
return $reportLelonganService->getCawanganReport();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getSummaryLaporanLelong(Request $request)
|
||||||
|
{
|
||||||
|
$onDate = $request->onDate;
|
||||||
|
$startDate = $request->startDate;
|
||||||
|
$endDate = $request->endDate;
|
||||||
|
|
||||||
|
// Get active branches in the order we want
|
||||||
|
$active_cawangan_db_connection = Helper::getActiveCawanganDbConnection();
|
||||||
|
|
||||||
|
// Preserve keys while mapping database names
|
||||||
|
$active_cawangan_db_name = array_combine(
|
||||||
|
$active_cawangan_db_connection,
|
||||||
|
array_map(function ($db_connection) {
|
||||||
|
return config('database.connections.' . $db_connection . '.database');
|
||||||
|
}, $active_cawangan_db_connection)
|
||||||
|
);
|
||||||
|
// dd($active_cawangan_db_name);
|
||||||
|
|
||||||
|
// Retrieve branch details and re-index by db_name
|
||||||
|
$active_cawangan_detail = Cawangan::select('kodcaw', 'details_caw', 'db_name')
|
||||||
|
->whereIn('db_name', array_values($active_cawangan_db_name))
|
||||||
|
->get()
|
||||||
|
->keyBy('db_name')
|
||||||
|
->toArray();
|
||||||
|
// dd($active_cawangan_detail);
|
||||||
|
|
||||||
|
// Retrieve lelong summary data and re-index by db_connection
|
||||||
|
$summary_lelongan_data = [];
|
||||||
|
foreach ($active_cawangan_db_connection as $db_connection) {
|
||||||
|
$query = Lelong::on($db_connection)
|
||||||
|
->join('gadai', 'gadai.norujukan', '=', 'lelong.norujukan')
|
||||||
|
->select(DB::raw('count(lelong.norujukan) as total_lelongan,
|
||||||
|
sum(lelong.berat) as sum_berat,
|
||||||
|
sum(lelong.nilaimarhun) as sum_nilai_marhun,
|
||||||
|
sum(gadai.pinjaman) as sum_pinjaman,
|
||||||
|
sum(lelong.pinjaman) as sum_bakipjm,
|
||||||
|
sum(lelong.bakiupah) as sum_bakiupah,
|
||||||
|
sum(lelong.cajlain) as sum_cajlain,
|
||||||
|
sum(lelong.cajlelong) as sum_cajlelong,
|
||||||
|
sum(lelong.hargajual) as sum_hargajual,
|
||||||
|
sum(lelong.baki) as sum_baki'));
|
||||||
|
|
||||||
|
|
||||||
|
if ($request->filled('startDate') && $request->filled('endDate')) {
|
||||||
|
$query->whereBetween('lelong.t_jual', [$request->startDate, $request->endDate]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$summary_lelongan_data[$db_connection] = $query->first()->toArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ensure data is sorted according to getActiveCawanganDbConnection()
|
||||||
|
$response = [];
|
||||||
|
foreach ($active_cawangan_db_connection as $db_connection) {
|
||||||
|
$db_name = $active_cawangan_db_name[$db_connection] ?? null;
|
||||||
|
if ($db_name && isset($active_cawangan_detail[$db_name])) {
|
||||||
|
$response[] = array_merge(
|
||||||
|
$active_cawangan_detail[$db_name],
|
||||||
|
$summary_lelongan_data[$db_connection] ?? []
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return json_encode($response);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getSummaryLaporanBakiLelongBelumTuntut(Request $request)
|
||||||
|
{
|
||||||
|
$onDate = $request->onDate;
|
||||||
|
$startDate = $request->startDate;
|
||||||
|
$endDate = $request->endDate;
|
||||||
|
|
||||||
|
// Get active branches in the order we want
|
||||||
|
$active_cawangan_db_connection = Helper::getActiveCawanganDbConnection();
|
||||||
|
|
||||||
|
// Preserve keys while mapping database names
|
||||||
|
$active_cawangan_db_name = array_combine(
|
||||||
|
$active_cawangan_db_connection,
|
||||||
|
array_map(function ($db_connection) {
|
||||||
|
return config('database.connections.' . $db_connection . '.database');
|
||||||
|
}, $active_cawangan_db_connection)
|
||||||
|
);
|
||||||
|
// dd($active_cawangan_db_name);
|
||||||
|
|
||||||
|
// Retrieve branch details and re-index by db_name
|
||||||
|
$active_cawangan_detail = Cawangan::select('kodcaw', 'details_caw', 'db_name')
|
||||||
|
->whereIn('db_name', array_values($active_cawangan_db_name))
|
||||||
|
->get()
|
||||||
|
->keyBy('db_name')
|
||||||
|
->toArray();
|
||||||
|
// dd($active_cawangan_detail);
|
||||||
|
|
||||||
|
// Retrieve lelong summary data and re-index by db_connection
|
||||||
|
$summary_lelongan_data = [];
|
||||||
|
foreach ($active_cawangan_db_connection as $db_connection) {
|
||||||
|
$query = Lelong::on($db_connection)
|
||||||
|
->join('gadai', 'gadai.norujukan', '=', 'lelong.norujukan')
|
||||||
|
->select(DB::raw('count(lelong.norujukan) as total_lelongan,
|
||||||
|
sum(lelong.berat) as sum_berat,
|
||||||
|
sum(lelong.nilaimarhun) as sum_nilai_marhun,
|
||||||
|
sum(gadai.pinjaman) as sum_pinjaman,
|
||||||
|
sum(lelong.pinjaman) as sum_bakipjm,
|
||||||
|
sum(lelong.bakiupah) as sum_bakiupah,
|
||||||
|
sum(lelong.cajlain) as sum_cajlain,
|
||||||
|
sum(lelong.cajlelong) as sum_cajlelong,
|
||||||
|
sum(lelong.hargajual) as sum_hargajual,
|
||||||
|
sum(lelong.baki) as sum_baki'))
|
||||||
|
->where(function ($query) use ($request) {
|
||||||
|
$query->whereNull('lelong.trkhtuntut')
|
||||||
|
->orWhere('lelong.trkhtuntut', '>', $request->endDate); // or use a specific date: '2025-06-01'
|
||||||
|
})
|
||||||
|
->where('lelong.baki', '>', 0.00)
|
||||||
|
->orderBy('lelong.norujukan', 'asc');
|
||||||
|
|
||||||
|
|
||||||
|
if ($request->filled('startDate') && $request->filled('endDate')) {
|
||||||
|
$query->whereBetween('lelong.t_lelong', [$request->startDate, $request->endDate]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$summary_lelongan_data[$db_connection] = $query->first()->toArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ensure data is sorted according to getActiveCawanganDbConnection()
|
||||||
|
$response = [];
|
||||||
|
foreach ($active_cawangan_db_connection as $db_connection) {
|
||||||
|
$db_name = $active_cawangan_db_name[$db_connection] ?? null;
|
||||||
|
if ($db_name && isset($active_cawangan_detail[$db_name])) {
|
||||||
|
$response[] = array_merge(
|
||||||
|
$active_cawangan_detail[$db_name],
|
||||||
|
$summary_lelongan_data[$db_connection] ?? []
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return json_encode($response);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getLaporanBakiLelongBelumTuntutCawangan(string $kod_cawangan, Request $request)
|
||||||
|
{
|
||||||
|
$reportLelonganService = new ReportLelonganService($kod_cawangan, $request);
|
||||||
|
return $reportLelonganService->getCawanganReportBakiLelongBelumTuntut();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,137 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Reports;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Cawangan;
|
||||||
|
use App\Gadai;
|
||||||
|
use App\Vault;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use App\Services\Reports\OutstandingService as ReportOutstandingService;
|
||||||
|
use App\Helper;
|
||||||
|
|
||||||
|
|
||||||
|
class OutstandingController extends Controller
|
||||||
|
{
|
||||||
|
|
||||||
|
public function getLaporanCawangan(string $kod_cawangan, Request $request)
|
||||||
|
{
|
||||||
|
$reportOutstandingService = new ReportOutstandingService($kod_cawangan, $request);
|
||||||
|
return $reportOutstandingService->getCawanganReport();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getSummaryLaporanOutstanding(Request $request)
|
||||||
|
{
|
||||||
|
$endDate = $request->endDate;
|
||||||
|
|
||||||
|
// Get active branch DBs from helper
|
||||||
|
$active_cawangan_db_connection = Helper::getActiveCawanganDbConnection();
|
||||||
|
|
||||||
|
// Fetch branch details with mysql info
|
||||||
|
$cawangan_available = Cawangan::select('kodcaw', 'details_caw', 'mysql')
|
||||||
|
->whereIn('mysql', $active_cawangan_db_connection)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
// Get db connections
|
||||||
|
$active_cawangan_db_connection = array_column($cawangan_available->toArray(), 'mysql');
|
||||||
|
|
||||||
|
// Map branch info for response
|
||||||
|
$active_cawangan_detail = $cawangan_available->map(function ($c) {
|
||||||
|
return [
|
||||||
|
'kodcaw' => $c->kodcaw,
|
||||||
|
'details_caw' => $c->details_caw,
|
||||||
|
];
|
||||||
|
})->values()->toArray();
|
||||||
|
|
||||||
|
// Query outstanding summary for each branch
|
||||||
|
$summary_Outstanding_data = array_map(function ($db_connection) use ($endDate) {
|
||||||
|
// SAG LAMA
|
||||||
|
$queryLama = Gadai::on($db_connection)
|
||||||
|
->selectRaw('COUNT(norujukan) as total_gadaian, SUM(pinjaman) as sum_pinjaman')
|
||||||
|
->where('tagbaru', 0)
|
||||||
|
->where('sttebus', '');
|
||||||
|
|
||||||
|
// SAG BARU
|
||||||
|
$queryBaru = Gadai::on($db_connection)
|
||||||
|
->selectRaw('COUNT(norujukan) as total_gadaian2, SUM(pinjaman) as sum_pinjaman2')
|
||||||
|
->where('tagbaru', 1)
|
||||||
|
->where('sttebus', '');
|
||||||
|
|
||||||
|
// SEMUA
|
||||||
|
$queryAll = Gadai::on($db_connection)
|
||||||
|
->selectRaw('COUNT(norujukan) as total_gadaian_all, SUM(pinjaman) as sum_pinjaman_all')
|
||||||
|
->where('sttebus', '');
|
||||||
|
|
||||||
|
if (!empty($endDate)) {
|
||||||
|
$queryLama->where('t_gadai', '<=', $endDate);
|
||||||
|
$queryBaru->where('t_gadai', '<=', $endDate);
|
||||||
|
$queryAll->where('t_gadai', '<=', $endDate);
|
||||||
|
}
|
||||||
|
|
||||||
|
return array_merge(
|
||||||
|
$queryLama->first()->toArray(),
|
||||||
|
$queryBaru->first()->toArray(),
|
||||||
|
$queryAll->first()->toArray()
|
||||||
|
);
|
||||||
|
}, $active_cawangan_db_connection);
|
||||||
|
|
||||||
|
// Combine data with branch info
|
||||||
|
$response = array_map(function ($cawangan_detail, $outstanding_data) {
|
||||||
|
return array_merge($cawangan_detail, $outstanding_data);
|
||||||
|
}, $active_cawangan_detail, $summary_Outstanding_data);
|
||||||
|
|
||||||
|
return response()->json($response);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getSummaryLaporanPetibesi(Request $request)
|
||||||
|
{
|
||||||
|
$endDate = $request->endDate;
|
||||||
|
|
||||||
|
// Get active branch DBs from helper
|
||||||
|
$active_cawangan_db_connection = Helper::getActiveCawanganDbConnection();
|
||||||
|
|
||||||
|
// Fetch branch details with mysql info
|
||||||
|
$cawangan_available = Cawangan::select('kodcaw', 'details_caw', 'mysql')
|
||||||
|
->whereIn('mysql', $active_cawangan_db_connection)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
// Get db connections
|
||||||
|
$active_cawangan_db_connection = array_column($cawangan_available->toArray(), 'mysql');
|
||||||
|
|
||||||
|
// Map branch info for response
|
||||||
|
$active_cawangan_detail = $cawangan_available->map(function ($c) {
|
||||||
|
return [
|
||||||
|
'kodcaw' => $c->kodcaw,
|
||||||
|
'details_caw' => $c->details_caw,
|
||||||
|
];
|
||||||
|
})->values()->toArray();
|
||||||
|
|
||||||
|
// Query petibesi summary for each branch
|
||||||
|
$summary_petibesi_data = array_map(function ($db_connection) use ($endDate) {
|
||||||
|
|
||||||
|
|
||||||
|
// SEMUA
|
||||||
|
$queryAll = Vault::on($db_connection)
|
||||||
|
->selectRaw('bakieod');
|
||||||
|
|
||||||
|
if (!empty($endDate)) {
|
||||||
|
$queryAll->where('tarikh', '=', $endDate);
|
||||||
|
}
|
||||||
|
|
||||||
|
return array_merge(
|
||||||
|
$queryAll->first()->toArray()
|
||||||
|
);
|
||||||
|
}, $active_cawangan_db_connection);
|
||||||
|
|
||||||
|
// Combine data with branch info
|
||||||
|
$response = array_map(function ($cawangan_detail, $petibesi_data) {
|
||||||
|
return array_merge($cawangan_detail, $petibesi_data);
|
||||||
|
}, $active_cawangan_detail, $summary_petibesi_data);
|
||||||
|
|
||||||
|
return response()->json($response);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -21,14 +21,24 @@ class PenebusanController extends Controller
|
|||||||
|
|
||||||
public function getSummaryLaporanTebus(Request $request)
|
public function getSummaryLaporanTebus(Request $request)
|
||||||
{
|
{
|
||||||
|
// Get active branch DBs from helper
|
||||||
$active_cawangan_db_connection = Helper::getActiveCawanganDbConnection();
|
$active_cawangan_db_connection = Helper::getActiveCawanganDbConnection();
|
||||||
|
|
||||||
$active_cawangan_db_name = array_map(function ($db_connection) {
|
// Fetch branch details with mysql info
|
||||||
return config('database.connections' . '.' . $db_connection . '.' . 'database');
|
$cawangan_available = Cawangan::select('kodcaw', 'details_caw', 'mysql')
|
||||||
}, $active_cawangan_db_connection);
|
->whereIn('mysql', $active_cawangan_db_connection)
|
||||||
|
->get();
|
||||||
$active_cawangan_detail = Cawangan::select('kodcaw', 'details_caw')->whereIn('db_name', $active_cawangan_db_name)->get()->toArray();
|
|
||||||
|
// Get db connections
|
||||||
|
$active_cawangan_db_connection = array_column($cawangan_available->toArray(), 'mysql');
|
||||||
|
|
||||||
|
// Map branch info for response
|
||||||
|
$active_cawangan_detail = $cawangan_available->map(function ($c) {
|
||||||
|
return [
|
||||||
|
'kodcaw' => $c->kodcaw,
|
||||||
|
'details_caw' => $c->details_caw,
|
||||||
|
];
|
||||||
|
})->values()->toArray();
|
||||||
|
|
||||||
$summary_penebusan_data = array_map(function ($db_connection) use ($request) {
|
$summary_penebusan_data = array_map(function ($db_connection) use ($request) {
|
||||||
$penebusan = Tebus::on($db_connection)
|
$penebusan = Tebus::on($db_connection)
|
||||||
@@ -39,8 +49,8 @@ class PenebusanController extends Controller
|
|||||||
->select(DB::raw('
|
->select(DB::raw('
|
||||||
count(tebus.norujukan) as bilangan_tebus,
|
count(tebus.norujukan) as bilangan_tebus,
|
||||||
sum(gadai.berat) as berat,
|
sum(gadai.berat) as berat,
|
||||||
sum(gadai.bakipjm) as nilai_pinjaman,
|
sum(gadai.pinjaman) as nilai_pinjaman,
|
||||||
sum(tebus.pinjaman) as baki_pinjaman,
|
sum(gadai.bakipjm) as baki_pinjaman,
|
||||||
sum(tebus.nilaimarhun) as nilai_marhun,
|
sum(tebus.nilaimarhun) as nilai_marhun,
|
||||||
sum(tebus.bakiupah) as keuntungan_asal,
|
sum(tebus.bakiupah) as keuntungan_asal,
|
||||||
sum(tebus.bakipjm - gadai.bakipjm) as keuntungan_rebet,
|
sum(tebus.bakipjm - gadai.bakipjm) as keuntungan_rebet,
|
||||||
|
|||||||
@@ -51,16 +51,66 @@ class StokAuditController extends Controller
|
|||||||
// dd($request->kodcaw);
|
// dd($request->kodcaw);
|
||||||
$daritempoh = $request->daritempoh;
|
$daritempoh = $request->daritempoh;
|
||||||
$hinggatempoh = $request->hinggatempoh;
|
$hinggatempoh = $request->hinggatempoh;
|
||||||
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$request->kodcaw)->first();
|
$cawangan = Cawangan::on('mysql7')->where('kodcaw', '=', $request->kodcaw)->first();
|
||||||
|
|
||||||
|
// Query asal gadai
|
||||||
$audit = Gadai::on($cawangan['mysql'])
|
$audit = Gadai::on($cawangan['mysql'])
|
||||||
->where([['tagpalsu','=',0],['tempoh','>=',$daritempoh],['tempoh','<=',$hinggatempoh],['sttebus','=',''],['taglel','=',0]])
|
->where([
|
||||||
|
['tagpalsu', '=', 0],
|
||||||
|
['tempoh', '>=', $daritempoh],
|
||||||
|
['tempoh', '<=', $hinggatempoh],
|
||||||
|
['sttebus', '=', ''],
|
||||||
|
['taglel', '=', 0],
|
||||||
|
])
|
||||||
->orderBy('t_gadai', 'ASC')
|
->orderBy('t_gadai', 'ASC')
|
||||||
->orderBy('sirig', 'ASC');
|
->orderBy('sirig', 'ASC')
|
||||||
// ->get();
|
->get();
|
||||||
// dd($audit);
|
|
||||||
|
// Dapatkan semua norujukan awal
|
||||||
$arraynorujukan = $audit->pluck('norujukan')->toArray();
|
$arraynorujukan = $audit->pluck('norujukan')->toArray();
|
||||||
$rekodaudit = $audit->get();
|
|
||||||
|
// Dapatkan tarikh terkini untuk setiap norujukan ikut trans_type T
|
||||||
|
$tarikhTerkiniT = Transaction::on('mysql7')
|
||||||
|
->select('norujukan', DB::raw('MAX(created_at) as tarikh_max'))
|
||||||
|
->where('trans_type', 'T')
|
||||||
|
->whereIn('norujukan', $arraynorujukan)
|
||||||
|
->groupBy('norujukan')
|
||||||
|
->pluck('tarikh_max', 'norujukan')
|
||||||
|
->toArray();
|
||||||
|
|
||||||
|
// Dapatkan tarikh terkini untuk setiap norujukan ikut trans_type A
|
||||||
|
$tarikhTerkiniA = Transaction::on('mysql7')
|
||||||
|
->select('norujukan', DB::raw('MAX(created_at) as tarikh_max'))
|
||||||
|
->where('trans_type', 'A')
|
||||||
|
->whereIn('norujukan', $arraynorujukan)
|
||||||
|
->groupBy('norujukan')
|
||||||
|
->pluck('tarikh_max', 'norujukan')
|
||||||
|
->toArray();
|
||||||
|
|
||||||
|
// Filter audit ikut tarikh masing-masing
|
||||||
|
$rekodaudit = $audit->filter(function ($item) use ($tarikhTerkiniT, $tarikhTerkiniA) {
|
||||||
|
$norujukan = $item->norujukan;
|
||||||
|
|
||||||
|
$adaTebusTerkini = isset($tarikhTerkiniT[$norujukan]) &&
|
||||||
|
Transaction::on('mysql7')
|
||||||
|
->where('norujukan', $norujukan)
|
||||||
|
->where('trans_type', 'T')
|
||||||
|
->whereDate('created_at', '>=', date('Y-m-d', strtotime($tarikhTerkiniT[$norujukan])))
|
||||||
|
->exists();
|
||||||
|
|
||||||
|
$adaAnsuranTerkini = isset($tarikhTerkiniA[$norujukan]) &&
|
||||||
|
Transaction::on('mysql7')
|
||||||
|
->where('norujukan', $norujukan)
|
||||||
|
->where('trans_type', 'A')
|
||||||
|
->whereDate('created_at', '>=', date('Y-m-d', strtotime($tarikhTerkiniA[$norujukan])))
|
||||||
|
->exists();
|
||||||
|
|
||||||
|
return !$adaTebusTerkini && !$adaAnsuranTerkini;
|
||||||
|
})->values();
|
||||||
|
|
||||||
|
// Gunakan hanya norujukan yang dah ditapis
|
||||||
|
$arraynorujukan = $rekodaudit->pluck('norujukan')->toArray();
|
||||||
|
|
||||||
$gadainokp = Gadai::on($cawangan['mysql'])->whereIn('norujukan', $arraynorujukan)
|
$gadainokp = Gadai::on($cawangan['mysql'])->whereIn('norujukan', $arraynorujukan)
|
||||||
->select('nokp')
|
->select('nokp')
|
||||||
->groupBy('nokp')
|
->groupBy('nokp')
|
||||||
@@ -68,28 +118,23 @@ class StokAuditController extends Controller
|
|||||||
|
|
||||||
// dd($gadainokp);
|
// dd($gadainokp);
|
||||||
|
|
||||||
foreach($gadainokp as $index1=>$cal){
|
foreach ($gadainokp as $index1 => $cal) {
|
||||||
$customer = Customer::on('mysql7')->where('kpbaru','=',$cal['nokp'])
|
$customer = Customer::on('mysql7')->where('kpbaru', '=', $cal['nokp'])
|
||||||
->orWhere('kplama','=',$cal['nokp'])
|
->orWhere('kplama', '=', $cal['nokp'])
|
||||||
->first();
|
->first();
|
||||||
|
|
||||||
$listsag = Gadai::on($cawangan['mysql'])->whereIn('norujukan', $arraynorujukan)
|
$listsag = Gadai::on($cawangan['mysql'])->whereIn('norujukan', $arraynorujukan)
|
||||||
// ->where('nokp','=',$cal['nokp'])
|
->where('nokp', 'like', '%' . $cal['nokp'] . '%')
|
||||||
->where('nokp', 'like', '%'.$cal['nokp'].'%')
|
|
||||||
->get();
|
->get();
|
||||||
|
|
||||||
foreach($listsag as $index2=>$cal2){
|
$checkingnokp = null;
|
||||||
|
foreach ($listsag as $index2 => $cal2) {
|
||||||
if($cal2){
|
if ($cal2) {
|
||||||
$checkingnokp = BlastWasap::on('mysql7')
|
$checkingnokp = BlastWasap::on('mysql7')
|
||||||
->where('nokp','=',$cal['nokp'])
|
->where('nokp', '=', $cal['nokp'])
|
||||||
->where('norujukan','=',$cal2['norujukan'])
|
->where('norujukan', '=', $cal2['norujukan'])
|
||||||
->where('kodcaw','=',$kodcaw)
|
->where('kodcaw', '=', $kodcaw)
|
||||||
->first();
|
->first();
|
||||||
|
|
||||||
// $gadainokp[$index1]['blasted'] = $checkingnokp;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -97,17 +142,24 @@ class StokAuditController extends Controller
|
|||||||
$gadainokp[$index1]['listsag'] = $listsag;
|
$gadainokp[$index1]['listsag'] = $listsag;
|
||||||
$gadainokp[$index1]['blasted'] = $checkingnokp;
|
$gadainokp[$index1]['blasted'] = $checkingnokp;
|
||||||
}
|
}
|
||||||
|
// Total dikira berdasarkan hasil audit yang telah ditapis
|
||||||
$totalrekod = $audit->sum('pinjaman');
|
$totalrekod = $rekodaudit->sum('pinjaman');
|
||||||
$totalberat = $audit->sum('berat');
|
$totalberat = $rekodaudit->sum('berat');
|
||||||
$totalnilaimarhun = $audit->sum('nilaimarhun');
|
$totalnilaimarhun = $rekodaudit->sum('nilaimarhun');
|
||||||
$totalpinjaman = $audit->sum('pinjaman');
|
$totalpinjaman = $rekodaudit->sum('pinjaman');
|
||||||
$totalbakipjm = $audit->sum('bakipjm');
|
$totalbakipjm = $rekodaudit->sum('bakipjm');
|
||||||
$totaltunggakan = $audit->sum('tunggakan');
|
$totaltunggakan = $rekodaudit->sum('tunggakan');
|
||||||
|
|
||||||
$arrayrekod = ['rekod' => $gadainokp, 'total' => $totalrekod,'totalberat' => $totalberat,'totalnilaimarhun' => $totalnilaimarhun,'totalpinjaman'=>$totalpinjaman,'totalbakipjm'=>$totalbakipjm,'totaltunggakan'=>$totaltunggakan];
|
$arrayrekod = [
|
||||||
// dd($arrayrekod);
|
'rekod' => $gadainokp,
|
||||||
return response()->json($arrayrekod,200);
|
'total' => $totalrekod,
|
||||||
|
'totalberat' => $totalberat,
|
||||||
|
'totalnilaimarhun' => $totalnilaimarhun,
|
||||||
|
'totalpinjaman' => $totalpinjaman,
|
||||||
|
'totalbakipjm' => $totalbakipjm,
|
||||||
|
'totaltunggakan' => $totaltunggakan,
|
||||||
|
];
|
||||||
|
return response()->json($arrayrekod, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -380,4 +432,151 @@ class StokAuditController extends Controller
|
|||||||
'totaltunggakan'=>$totaltunggakan ?? null];
|
'totaltunggakan'=>$totaltunggakan ?? null];
|
||||||
return response()->json($arrayrekod,200);
|
return response()->json($arrayrekod,200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function LaporanAuditKhasByNorujukan($kodcaw, Request $request)
|
||||||
|
{
|
||||||
|
$daritempoh = $request->daritempoh;
|
||||||
|
$hinggatempoh = $request->hinggatempoh;
|
||||||
|
|
||||||
|
$cawangan = Cawangan::on('mysql7')->where('kodcaw', '=', $request->kodcaw)->first();
|
||||||
|
|
||||||
|
// Ambil semua rekod gadai asas
|
||||||
|
$audit = Gadai::on($cawangan['mysql'])
|
||||||
|
->where([
|
||||||
|
['tagpalsu', '=', 0],
|
||||||
|
['tempoh', '>=', $daritempoh],
|
||||||
|
['tempoh', '<=', $hinggatempoh],
|
||||||
|
['sttebus', '=', ''],
|
||||||
|
['taglel', '=', 0],
|
||||||
|
])
|
||||||
|
->orderBy('norujukan', 'ASC') // susun ikut norujukan
|
||||||
|
->get();
|
||||||
|
|
||||||
|
$arraynorujukan = $audit->pluck('norujukan')->toArray();
|
||||||
|
|
||||||
|
// Tarikh terkini ikut trans_type T
|
||||||
|
$tarikhTerkiniT = Transaction::on('mysql7')
|
||||||
|
->select('norujukan', DB::raw('MAX(created_at) as tarikh_max'))
|
||||||
|
->where('trans_type', 'T')
|
||||||
|
->whereIn('norujukan', $arraynorujukan)
|
||||||
|
->groupBy('norujukan')
|
||||||
|
->pluck('tarikh_max', 'norujukan')
|
||||||
|
->toArray();
|
||||||
|
|
||||||
|
// Tarikh terkini ikut trans_type A
|
||||||
|
$tarikhTerkiniA = Transaction::on('mysql7')
|
||||||
|
->select('norujukan', DB::raw('MAX(created_at) as tarikh_max'))
|
||||||
|
->where('trans_type', 'A')
|
||||||
|
->whereIn('norujukan', $arraynorujukan)
|
||||||
|
->groupBy('norujukan')
|
||||||
|
->pluck('tarikh_max', 'norujukan')
|
||||||
|
->toArray();
|
||||||
|
|
||||||
|
// Filter audit
|
||||||
|
$rekodaudit = $audit->filter(function ($item) use ($tarikhTerkiniT, $tarikhTerkiniA) {
|
||||||
|
$norujukan = $item->norujukan;
|
||||||
|
|
||||||
|
$adaTebusTerkini = isset($tarikhTerkiniT[$norujukan]) &&
|
||||||
|
Transaction::on('mysql7')
|
||||||
|
->where('norujukan', $norujukan)
|
||||||
|
->where('trans_type', 'T')
|
||||||
|
->whereDate('created_at', '>=', date('Y-m-d', strtotime($tarikhTerkiniT[$norujukan])))
|
||||||
|
->exists();
|
||||||
|
|
||||||
|
$adaAnsuranTerkini = isset($tarikhTerkiniA[$norujukan]) &&
|
||||||
|
Transaction::on('mysql7')
|
||||||
|
->where('norujukan', $norujukan)
|
||||||
|
->where('trans_type', 'A')
|
||||||
|
->whereDate('created_at', '>=', date('Y-m-d', strtotime($tarikhTerkiniA[$norujukan])))
|
||||||
|
->exists();
|
||||||
|
|
||||||
|
return !$adaTebusTerkini && !$adaAnsuranTerkini;
|
||||||
|
})->values();
|
||||||
|
|
||||||
|
// Attach customer info + blast untuk setiap norujukan
|
||||||
|
foreach ($rekodaudit as $index => $rekod) {
|
||||||
|
$customer = Customer::on('mysql7')
|
||||||
|
->where('kpbaru', '=', $rekod->nokp)
|
||||||
|
->orWhere('kplama', '=', $rekod->nokp)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
$rekodaudit[$index]['customer'] = $customer;
|
||||||
|
|
||||||
|
$rekodaudit[$index]['blasted'] = BlastWasap::on('mysql7')
|
||||||
|
->where('nokp', $rekod->nokp)
|
||||||
|
->where('norujukan', $rekod->norujukan)
|
||||||
|
->where('kodcaw', $kodcaw)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
// 👉 Kira keuntungan (tunggakan sebenar) guna function
|
||||||
|
$upah = $this->kiraupahUjrahOnePercent($kodcaw, $rekod->norujukan);
|
||||||
|
$keuntungan = $upah['ujrah'] + $upah['onepercent'];
|
||||||
|
|
||||||
|
// Save ke dalam rekod
|
||||||
|
$rekodaudit[$index]['tunggakan'] = $this->floorTo5SenFrom2dp($keuntungan);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Summary total
|
||||||
|
$summary = [
|
||||||
|
'totalrekod' => $rekodaudit->count(),
|
||||||
|
'totalberat' => $rekodaudit->sum('berat'),
|
||||||
|
'totalnilaimarhun'=> $rekodaudit->sum('nilaimarhun'),
|
||||||
|
'totalpinjaman' => $rekodaudit->sum('pinjaman'),
|
||||||
|
'totalbakipjm' => $rekodaudit->sum('bakipjm'),
|
||||||
|
'totaltunggakan' => $rekodaudit->sum('tunggakan'),
|
||||||
|
];
|
||||||
|
|
||||||
|
return response()->json([
|
||||||
|
'rekod' => $rekodaudit,
|
||||||
|
'summary' => $summary,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function kiraupahUjrahOnePercent($kodcaw,$norujukan){
|
||||||
|
$onepercentservices = new OnePercentServices();
|
||||||
|
|
||||||
|
$cawangan = Cawangan::on('mysql7')
|
||||||
|
->where('kodcaw','=',$kodcaw)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
$gadai_data = Gadai::on($cawangan['mysql'])
|
||||||
|
->where('norujukan','=',$norujukan)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
if($gadai_data['tempoh'] >= 12.0){
|
||||||
|
$tempoh = 12;
|
||||||
|
}else{
|
||||||
|
$tempoh = $gadai_data['tempoh'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$bilang_bln = $tempoh - $gadai_data['tempohbayar'];
|
||||||
|
$array_upah = $onepercentservices->kiraanKeuntunganSebenar($gadai_data['pinjaman'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['percentpinj']);
|
||||||
|
$ujrah = $bilang_bln * $array_upah['ujrah'];
|
||||||
|
$onepercent = $bilang_bln * $array_upah['onepercent'];
|
||||||
|
$onepercent_semasa = $onepercent;
|
||||||
|
$ujrah_semasa = $ujrah;
|
||||||
|
|
||||||
|
return ['ujrah' => $ujrah_semasa, 'onepercent' => $onepercent_semasa];
|
||||||
|
}
|
||||||
|
|
||||||
|
// dalam Controller (private/protected)
|
||||||
|
private function floorTo5SenFrom2dp($amount)
|
||||||
|
{
|
||||||
|
// pastikan numeric
|
||||||
|
$amount = (float) $amount;
|
||||||
|
|
||||||
|
// 1) Tukar ke sen dan buang sebarang pecahan sen (hanya baca 2 dp)
|
||||||
|
// tambah epsilon kecil untuk elak isu floating point
|
||||||
|
$cents = (int) floor($amount * 100 + 0.0000001);
|
||||||
|
|
||||||
|
// 2) Floor ke gandaan 5 sen
|
||||||
|
$cents5 = (int) (floor($cents / 5) * 5);
|
||||||
|
|
||||||
|
// balik ke ringgit
|
||||||
|
return $cents5 / 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -669,11 +669,45 @@ class TebusController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function listhistorypenebusan($kodcaw,Request $request){
|
public function listhistorypenebusan($kodcaw,Request $request){
|
||||||
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first();
|
$cawangan = Cawangan::on('mysql7')->where('kodcaw', $kodcaw)->first();
|
||||||
|
|
||||||
$listtebus = Tebus::on($cawangan['mysql'])
|
$listtebus = Tebus::on($cawangan['mysql'])
|
||||||
->where('norujukan','=',$request->norujukan)
|
->where('norujukan', $request->norujukan)
|
||||||
->get();
|
->get();
|
||||||
|
|
||||||
|
foreach ($listtebus as $tebus) {
|
||||||
|
// Cari transaction padan berdasarkan norujukan dan trans_type = 'A'
|
||||||
|
$transaction = \DB::connection('mysql7')
|
||||||
|
->table('transaction')
|
||||||
|
->where('norujukan', $tebus->norujukan)
|
||||||
|
->whereIn('trans_type', ['T', 'AT'])
|
||||||
|
->first();
|
||||||
|
|
||||||
|
// Jika wujud, cari transaksi_keuntungan yang padan ikut tarikh
|
||||||
|
if ($transaction) {
|
||||||
|
$createdDate = Carbon::parse($transaction->created_at)->toDateString();
|
||||||
|
|
||||||
|
$keuntungan = \DB::connection('mysql7')
|
||||||
|
->table('transaksi_keuntungan')
|
||||||
|
->where('norujukan', $tebus->norujukan)
|
||||||
|
->whereDate('tarikh_bayaran', $createdDate)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
if ($transaction->trans_type == 'T') {
|
||||||
|
$tebus->bayaran_keuntungan = number_format($keuntungan->keuntungan_rebet ?? 0, 2);
|
||||||
|
} elseif ($transaction->trans_type == 'AT') {
|
||||||
|
$tebus->bayaran_keuntungan = number_format($keuntungan->bayaran_keuntungan ?? 0, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
$tebus->bayaran_pembiayaan = number_format($keuntungan->bayaran_pembiayaan ?? 0, 2);
|
||||||
|
$tebus->duit_masuk = number_format($transaction->duit_masuk ?? 0, 2);
|
||||||
|
$tebus->trans_type = $transaction->trans_type ?? null;
|
||||||
|
} else {
|
||||||
|
$tebus->bayaran_keuntungan = null;
|
||||||
|
$tebus->bayaran_pembiayaan = null;
|
||||||
|
$tebus->duit_masuk = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return response()->json($listtebus);
|
return response()->json($listtebus);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,9 +57,24 @@ class TransactionController extends Controller
|
|||||||
|
|
||||||
public function getTransactionByRujukan($norujukan){
|
public function getTransactionByRujukan($norujukan){
|
||||||
|
|
||||||
$transaction = Transaction::on('mysql7')->where([['norujukan','=',$norujukan],['trans_type','=','A']])->get();
|
$transactions = Transaction::on('mysql7')
|
||||||
|
->where('norujukan', $norujukan)
|
||||||
|
->where('trans_type', 'A')
|
||||||
|
->get();
|
||||||
|
|
||||||
return response()->json($transaction);
|
foreach ($transactions as $transaction) {
|
||||||
|
$createdDate = Carbon::parse($transaction->created_at)->toDateString();
|
||||||
|
|
||||||
|
$keuntungan = \DB::connection('mysql7')
|
||||||
|
->table('transaksi_keuntungan')
|
||||||
|
->whereDate('tarikh_bayaran', $createdDate)
|
||||||
|
->where('norujukan', $transaction->norujukan)
|
||||||
|
->first(); // ambil seluruh rekod
|
||||||
|
|
||||||
|
$transaction->bayaran_keuntungan = number_format($keuntungan->bayaran_keuntungan ?? 0, 2);
|
||||||
|
$transaction->bayaran_pembiayaan = number_format($keuntungan->bayaran_pembiayaan ?? 0, 2);
|
||||||
|
}
|
||||||
|
return response()->json($transactions);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getTransactionByid($id){
|
public function getTransactionByid($id){
|
||||||
|
|||||||
@@ -25,8 +25,7 @@ class TransactionOnlineController extends Controller
|
|||||||
{
|
{
|
||||||
public function getTransactionOnline(Request $request)
|
public function getTransactionOnline(Request $request)
|
||||||
{
|
{
|
||||||
$transactionOnline = TransactionOnline::on('mysql7')->where('billplz_id', $request->billplz_id)->first();
|
$transactionOnline = TransactionOnline::on('mysql7')->where('norujukan',$request->norujukan)->where('billplz_id', $request->billplz_id)->first();
|
||||||
|
|
||||||
return response()->json($transactionOnline);
|
return response()->json($transactionOnline);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -117,6 +116,13 @@ class TransactionOnlineController extends Controller
|
|||||||
$transactions = TransactionOnline::on('mysql7')->where([['status', '=', 'PAID'], ['update_status', 0]])->get();
|
$transactions = TransactionOnline::on('mysql7')->where([['status', '=', 'PAID'], ['update_status', 0]])->get();
|
||||||
$current = Carbon::now();
|
$current = Carbon::now();
|
||||||
$current = new Carbon();
|
$current = new Carbon();
|
||||||
|
|
||||||
|
$checkTime = $this->checkTime();
|
||||||
|
|
||||||
|
if($checkTime == 'rejected'){
|
||||||
|
return response()->json('rejected-time');
|
||||||
|
}
|
||||||
|
|
||||||
foreach ($transactions as $index => $transaction) {
|
foreach ($transactions as $index => $transaction) {
|
||||||
$cawangan = Cawangan::on('mysql7')
|
$cawangan = Cawangan::on('mysql7')
|
||||||
->where('kodcaw', '=', $transaction['kodcaw'])
|
->where('kodcaw', '=', $transaction['kodcaw'])
|
||||||
@@ -138,6 +144,7 @@ class TransactionOnlineController extends Controller
|
|||||||
'descpt' => 'SERAHAN BAYAR ONLINE - ' . $transaction['norujukan'],
|
'descpt' => 'SERAHAN BAYAR ONLINE - ' . $transaction['norujukan'],
|
||||||
'serahan' => $transaction['total_payment'],
|
'serahan' => $transaction['total_payment'],
|
||||||
'teller' => 'ONLINE',
|
'teller' => 'ONLINE',
|
||||||
|
'date_created' => $current
|
||||||
];
|
];
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -451,8 +458,10 @@ class TransactionOnlineController extends Controller
|
|||||||
$ujrah_calculation = $this->getUjrah($kodcaw, $norujukan);
|
$ujrah_calculation = $this->getUjrah($kodcaw, $norujukan);
|
||||||
|
|
||||||
$onepercent = new Calculation();
|
$onepercent = new Calculation();
|
||||||
|
$ujrahasal = $onepercent->getRoundedMethod($ujrahasal);
|
||||||
|
$onepercentasal = $onepercent->getRoundedMethod($onepercentasal);
|
||||||
$ujrah = $onepercent->getRoundedMethod($ujrahasal * $bilang_bln);
|
$ujrah = $onepercent->getRoundedMethod($ujrahasal * $bilang_bln);
|
||||||
$ujrah_rebate = $onepercent->getRoundedMethod($ujrah_calculation['ujrah_sebenar'] - $ujrah_calculation['ujrah_rebet']);
|
$ujrah_rebate = $onepercent->getRoundedMethod($keuntungan['ujrah'] * $bilang_bln);
|
||||||
$keun = $onepercent->getRoundedMethod($onepercentasal * $bilang_bln);
|
$keun = $onepercent->getRoundedMethod($onepercentasal * $bilang_bln);
|
||||||
$keuntungan_rebate = $onepercent->getRoundedMethod($keuntungan['onepercent'] * $bilang_bln);
|
$keuntungan_rebate = $onepercent->getRoundedMethod($keuntungan['onepercent'] * $bilang_bln);
|
||||||
|
|
||||||
@@ -745,5 +754,21 @@ class TransactionOnlineController extends Controller
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function checkTime(){
|
||||||
|
$current = Carbon::now();
|
||||||
|
|
||||||
|
$startRange1 = Carbon::today()->setTime(19, 0);
|
||||||
|
$endRange1 = Carbon::today()->setTime(19, 30);
|
||||||
|
|
||||||
|
$startRange2 = Carbon::today()->setTime(23, 0);
|
||||||
|
$endRange2 = Carbon::today()->setTime(23, 30);
|
||||||
|
|
||||||
|
if ($current->between($startRange1, $endRange1) || $current->between($startRange2, $endRange2)) {
|
||||||
|
return 'rejected';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,9 @@ use App\Vault;
|
|||||||
use App\Cawangan;
|
use App\Cawangan;
|
||||||
use App\Tunai;
|
use App\Tunai;
|
||||||
use App\AddTunai;
|
use App\AddTunai;
|
||||||
|
use App\ApprovalWithdrawal;
|
||||||
use App\Audit;
|
use App\Audit;
|
||||||
|
use App\DenoPendSer;
|
||||||
use App\GlDetail;
|
use App\GlDetail;
|
||||||
use App\imbangdugalama;
|
use App\imbangdugalama;
|
||||||
use App\GlCode;
|
use App\GlCode;
|
||||||
@@ -14,6 +16,7 @@ use App\Tebus;
|
|||||||
|
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
class VaultController extends Controller
|
class VaultController extends Controller
|
||||||
{
|
{
|
||||||
@@ -283,7 +286,8 @@ class VaultController extends Controller
|
|||||||
'ktacct' => '1000/010',
|
'ktacct' => '1000/010',
|
||||||
'descpt' => 'SERAHAN BAYAR ONLINE',
|
'descpt' => 'SERAHAN BAYAR ONLINE',
|
||||||
'serahan' => $request->amaun,
|
'serahan' => $request->amaun,
|
||||||
'teller' => 'ONLINE'
|
'teller' => 'ONLINE',
|
||||||
|
'date_created' => $current
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// $audit = new Audit();
|
// $audit = new Audit();
|
||||||
@@ -314,7 +318,8 @@ class VaultController extends Controller
|
|||||||
'ktacct' => $request->ktacct,
|
'ktacct' => $request->ktacct,
|
||||||
'descpt' => $request->keterangan,
|
'descpt' => $request->keterangan,
|
||||||
'pendahuluan' => $request->amaun,
|
'pendahuluan' => $request->amaun,
|
||||||
'teller' => $request->teller
|
'teller' => $request->teller,
|
||||||
|
'date_created' => $current
|
||||||
]);
|
]);
|
||||||
}else if($request->jenisgldetail == 'serahan')
|
}else if($request->jenisgldetail == 'serahan')
|
||||||
{
|
{
|
||||||
@@ -325,7 +330,9 @@ class VaultController extends Controller
|
|||||||
'ktacct' => $request->ktacct,
|
'ktacct' => $request->ktacct,
|
||||||
'descpt' => $request->keterangan,
|
'descpt' => $request->keterangan,
|
||||||
'serahan' => $request->amaun,
|
'serahan' => $request->amaun,
|
||||||
'teller' => $request->teller
|
'teller' => $request->teller,
|
||||||
|
'date_created' => $current
|
||||||
|
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -718,6 +725,4 @@ class VaultController extends Controller
|
|||||||
return response()->json($vault);
|
return response()->json($vault);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class MohonAnggota extends Model
|
||||||
|
{
|
||||||
|
protected $table = 'mohon_anggota';
|
||||||
|
protected $connection = 'mysql7';
|
||||||
|
|
||||||
|
protected $fillable = [
|
||||||
|
'tarikh', 'nokp', 'status', 'komen', 'siri', 'teller', 'pelulus', 'peloperasi'
|
||||||
|
];
|
||||||
|
}
|
||||||
+11
-1
@@ -27,7 +27,17 @@ class Mohonid extends Model
|
|||||||
'nilaimarhun',
|
'nilaimarhun',
|
||||||
'berat',
|
'berat',
|
||||||
'margin',
|
'margin',
|
||||||
'teller'
|
'teller',
|
||||||
|
'masa',
|
||||||
|
'tagoperasi',
|
||||||
|
'ansuran',
|
||||||
|
'operasi',
|
||||||
|
'timestamp_approved_by_pc',
|
||||||
|
'timestamp_approved_by_operasi',
|
||||||
|
];
|
||||||
|
|
||||||
|
protected $casts = [
|
||||||
|
'id' => 'string',
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -0,0 +1,90 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||||
|
use App\Audit;
|
||||||
|
use Illuminate\Support\Carbon;
|
||||||
|
|
||||||
|
class Palsu extends Model
|
||||||
|
{
|
||||||
|
protected $table = 'palsu';
|
||||||
|
protected $primaryKey = 'recno';
|
||||||
|
public $timestamps = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The attributes that are mass assignable.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $fillable = [
|
||||||
|
'recno',
|
||||||
|
'kodcaw',
|
||||||
|
'norujukan',
|
||||||
|
'teller',
|
||||||
|
'nota',
|
||||||
|
'nilaimarhun',
|
||||||
|
'jbg',
|
||||||
|
'untung',
|
||||||
|
'untungonepercent',
|
||||||
|
'untungcajlain',
|
||||||
|
'pembiayaan',
|
||||||
|
];
|
||||||
|
|
||||||
|
// public static function boot()
|
||||||
|
// {
|
||||||
|
// parent::boot();
|
||||||
|
|
||||||
|
// $current = Carbon::now();
|
||||||
|
// $current = new Carbon();
|
||||||
|
|
||||||
|
// static::created(function (Poskod $poskod) use($current){
|
||||||
|
|
||||||
|
// Audit::create([
|
||||||
|
// 'users' => request()->all()['user']['name'],
|
||||||
|
// 'actions' => 'Tambah poskod',
|
||||||
|
// 'norujukan' => $poskod->recno,
|
||||||
|
// 'new_data' => $poskod->toJson(),
|
||||||
|
// 'old_data' => '',
|
||||||
|
// 'kodcaw' => request()->all()['user']['cawangan'],
|
||||||
|
// 'created_at' => $current,
|
||||||
|
// 'updated_at' => $current,
|
||||||
|
// ]);
|
||||||
|
|
||||||
|
// });
|
||||||
|
|
||||||
|
|
||||||
|
// static::updated(function (Poskod $poskod) use($current) {
|
||||||
|
|
||||||
|
// Audit::create([
|
||||||
|
// 'users' => request()->all()['user']['name'],
|
||||||
|
// 'actions' => 'Kemaskini poskod',
|
||||||
|
// 'norujukan' => $poskod->recno,
|
||||||
|
// 'new_data' => $poskod->toJson(),
|
||||||
|
// 'old_data' => json_encode($poskod->getOriginal()),
|
||||||
|
// 'kodcaw' => request()->all()['user']['cawangan'],
|
||||||
|
// 'created_at' => $current,
|
||||||
|
// 'updated_at' => $current,
|
||||||
|
// ]);
|
||||||
|
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The attributes excluded from the model's JSON form.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
// protected $hidden = [],
|
||||||
|
|
||||||
|
// public function negeri(): BelongsTo
|
||||||
|
// {
|
||||||
|
// return $this->belongsTo(Negeri::class, 'kodnegeri', 'kodnegeri');
|
||||||
|
// }
|
||||||
|
|
||||||
|
// public function daerah(): BelongsTo
|
||||||
|
// {
|
||||||
|
// return $this->belongsTo(Daerah::class, 'koddaerah', 'koddaerah');
|
||||||
|
// }
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class Penyelarasan extends Model
|
||||||
|
{
|
||||||
|
protected $table = 'penyelarasan';
|
||||||
|
// public $timestamps = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The attributes that are mass assignable.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
|
||||||
|
protected $fillable = [
|
||||||
|
'kodcaw',
|
||||||
|
'rugilelong',
|
||||||
|
'bakilelong',
|
||||||
|
'lain-lain',
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The attributes excluded from the model's JSON form.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
// protected $hidden = [];
|
||||||
|
}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\QueryBuilders;
|
||||||
|
|
||||||
|
use App\TransactionOnline;
|
||||||
|
use Carbon\Carbon;
|
||||||
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class TransactionOnlineBuilder extends Builder
|
||||||
|
{
|
||||||
|
public function filter(Request $request)
|
||||||
|
{
|
||||||
|
return $this->with('cawangan')
|
||||||
|
->whereDatePaidBetween($request)
|
||||||
|
->when($request->filled('kodcaw'), fn($query) => $query->whereCawanganCode($request->kodcaw))
|
||||||
|
->when($request->filled('status'), fn($query) => $query->whereStatus($request->status))
|
||||||
|
->when($request->isNotFilled('status'), fn($query) => $query->whereStatus('PAID'))
|
||||||
|
->when($request->filled('orderBy'), fn($query) => $query->orderByColumn($request->orderBy));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function whereDatePaidBetween(Request $request): self
|
||||||
|
{
|
||||||
|
$startDate = $request->filled('startDate') ?
|
||||||
|
Carbon::parse($request->startDate)->startOfDay() :
|
||||||
|
Carbon::now()->startOfDay();
|
||||||
|
|
||||||
|
$endDate = $request->filled('endDate') ?
|
||||||
|
Carbon::parse($request->endDate)->endOfDay() :
|
||||||
|
Carbon::now()->endOfDay();
|
||||||
|
|
||||||
|
return $this->whereBetween('paid_at', [$startDate, $endDate]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function whereCawanganCode(string $kodcaw): self
|
||||||
|
{
|
||||||
|
return $this->where('kodcaw', $kodcaw);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function whereStatus(string $status): self
|
||||||
|
{
|
||||||
|
return $this->where('status', $status);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function orderByColumn(string $orderBy): self
|
||||||
|
{
|
||||||
|
return $this->orderBy($orderBy, 'desc');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -21,7 +21,8 @@ class OnePercentServices
|
|||||||
$formula_margin = ($this->maks_margin - $margin) / $this->maks_margin;
|
$formula_margin = ($this->maks_margin - $margin) / $this->maks_margin;
|
||||||
$ujrah_margin = $formula_margin * $kadarujrah;
|
$ujrah_margin = $formula_margin * $kadarujrah;
|
||||||
$rebate_ujrah = $nilaimarhun*($ujrah_margin/100);
|
$rebate_ujrah = $nilaimarhun*($ujrah_margin/100);
|
||||||
$ujrah_sebenar = $ujrah;
|
// $ujrah_sebenar = $ujrah;
|
||||||
|
$ujrah_sebenar = $ujrah - $rebate_ujrah;
|
||||||
|
|
||||||
return $ujrah_sebenar;
|
return $ujrah_sebenar;
|
||||||
}
|
}
|
||||||
@@ -57,6 +58,9 @@ class OnePercentServices
|
|||||||
$onepercent = $this->kiraanOnePercent($pembiayaan);
|
$onepercent = $this->kiraanOnePercent($pembiayaan);
|
||||||
$ujrah_sebenar = $this->kiraanUjrahSebenar($nilaimarhun,$kadarujrah,$margin);
|
$ujrah_sebenar = $this->kiraanUjrahSebenar($nilaimarhun,$kadarujrah,$margin);
|
||||||
|
|
||||||
|
$onepercent = (!empty($onepercent)) ? $this->getRoundedMethod($onepercent) : 0;
|
||||||
|
$ujrah_sebenar = (!empty($ujrah_sebenar)) ? $this->getRoundedMethod($ujrah_sebenar) : 0;
|
||||||
|
|
||||||
$keuntungan = $onepercent + $ujrah_sebenar;
|
$keuntungan = $onepercent + $ujrah_sebenar;
|
||||||
|
|
||||||
return ['keuntungan' => $keuntungan,'onepercent' => $onepercent, 'ujrah' => $ujrah_sebenar];
|
return ['keuntungan' => $keuntungan,'onepercent' => $onepercent, 'ujrah' => $ujrah_sebenar];
|
||||||
@@ -67,6 +71,9 @@ class OnePercentServices
|
|||||||
$onepercent = $this->kiraanOnePercent($pembiayaan);
|
$onepercent = $this->kiraanOnePercent($pembiayaan);
|
||||||
$ujrah_sebenar = $this->kiraanUjrah($nilaimarhun,$kadarujrah,$margin);
|
$ujrah_sebenar = $this->kiraanUjrah($nilaimarhun,$kadarujrah,$margin);
|
||||||
|
|
||||||
|
$onepercent = (!empty($onepercent)) ? $this->getRoundedMethod($onepercent) : 0;
|
||||||
|
$ujrah_sebenar = (!empty($ujrah_sebenar)) ? $this->getRoundedMethod($ujrah_sebenar) : 0;
|
||||||
|
|
||||||
$keuntungan = $onepercent + $ujrah_sebenar;
|
$keuntungan = $onepercent + $ujrah_sebenar;
|
||||||
|
|
||||||
return ['keuntungan' => $keuntungan,'onepercent' => $onepercent, 'ujrah' => $ujrah_sebenar];
|
return ['keuntungan' => $keuntungan,'onepercent' => $onepercent, 'ujrah' => $ujrah_sebenar];
|
||||||
@@ -78,4 +85,26 @@ class OnePercentServices
|
|||||||
|
|
||||||
return isset($kadarujrah[0]) ? $kadarujrah[0]['kadarujrah'] : 0;
|
return isset($kadarujrah[0]) ? $kadarujrah[0]['kadarujrah'] : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getRoundedMethod(float $number = 0.0) : Float{
|
||||||
|
$number_string = number_format(floor($number * 100)/100,2);
|
||||||
|
|
||||||
|
$rounded = substr($number_string, 0, -1);
|
||||||
|
$lastDigit = substr($number_string, -1);
|
||||||
|
|
||||||
|
if ($lastDigit >= 0 && $lastDigit <= 2) {
|
||||||
|
if(strpos($rounded,',')){
|
||||||
|
$rounded = str_replace(',','',$rounded);
|
||||||
|
}
|
||||||
|
return $rounded;
|
||||||
|
} elseif ($lastDigit >= 3 && $lastDigit <= 7) {
|
||||||
|
$rounded = $rounded . '5';
|
||||||
|
if(strpos($rounded,',')){
|
||||||
|
$rounded = str_replace(',','',$rounded);
|
||||||
|
}
|
||||||
|
return $rounded;
|
||||||
|
} else {
|
||||||
|
return round($number,PHP_ROUND_HALF_UP);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -518,7 +518,7 @@ class GeneralLedger
|
|||||||
$mulaCarbon = new Carbon($this->mula);
|
$mulaCarbon = new Carbon($this->mula);
|
||||||
$hinggaCarbon = new Carbon($this->hingga);
|
$hinggaCarbon = new Carbon($this->hingga);
|
||||||
|
|
||||||
if($this->isFullMonth($this->mula,$this->hingga) && $mulaCarbon->month < 10){
|
if($this->isFullMonth($this->mula,$this->hingga) && $mulaCarbon->month < 10 && $mulaCarbon->year == 2024){
|
||||||
$lastDayOfPreviousMonth = $mulaCarbon->subMonth()->endOfMonth();
|
$lastDayOfPreviousMonth = $mulaCarbon->subMonth()->endOfMonth();
|
||||||
|
|
||||||
$balancesheet_previousmonth = imbangdugabackup::on($cawangan['mysql'])->where('tarikh',$lastDayOfPreviousMonth->toDateString())->first()->toArray();
|
$balancesheet_previousmonth = imbangdugabackup::on($cawangan['mysql'])->where('tarikh',$lastDayOfPreviousMonth->toDateString())->first()->toArray();
|
||||||
@@ -714,7 +714,7 @@ class GeneralLedger
|
|||||||
$t_gadai = Carbon::parse($gadai->t_gadai);
|
$t_gadai = Carbon::parse($gadai->t_gadai);
|
||||||
$t_bayaran = Carbon::parse($trans->tarikh_bayaran);
|
$t_bayaran = Carbon::parse($trans->tarikh_bayaran);
|
||||||
|
|
||||||
if ($t_gadai->month === $t_bayaran->month) {
|
if ($t_gadai->month === $t_bayaran->month && $t_gadai->year === $t_bayaran->year) {
|
||||||
return false;
|
return false;
|
||||||
}else{
|
}else{
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -61,6 +61,18 @@ class AnsuranService
|
|||||||
];
|
];
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// **Tidak Group By Teller** untuk keseluruhan laporan
|
||||||
|
$total_ansuran_keseluruhan = $total_ansuran->map(function ($ansuran) {
|
||||||
|
return [
|
||||||
|
'norujukan' => $ansuran['norujukan'],
|
||||||
|
'nama' => $ansuran['nama'],
|
||||||
|
'no_kp' => $ansuran['no_kp'],
|
||||||
|
'bayaran_pembiayaan' => $ansuran['bayaran_pembiayaan'],
|
||||||
|
'bayaran_keuntungan' => $ansuran['bayaran_keuntungan'],
|
||||||
|
'jumlah_ansuran' => $ansuran['jumlah_ansuran'],
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
$total_ansuran = $total_ansuran->groupBy('teller');
|
$total_ansuran = $total_ansuran->groupBy('teller');
|
||||||
|
|
||||||
$ansuran_tellers = $total_ansuran->keys();
|
$ansuran_tellers = $total_ansuran->keys();
|
||||||
@@ -86,6 +98,7 @@ class AnsuranService
|
|||||||
],
|
],
|
||||||
'cawangan_detail' => $cawangan_detail,
|
'cawangan_detail' => $cawangan_detail,
|
||||||
'total_ansuran' => $total_ansuran,
|
'total_ansuran' => $total_ansuran,
|
||||||
|
'total_ansuran_keseluruhan' => $total_ansuran_keseluruhan, // Tambahkan keseluruhan laporan
|
||||||
'summary_ansuran' => $total_summary_ansuran,
|
'summary_ansuran' => $total_summary_ansuran,
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ use App\Marhun;
|
|||||||
use Illuminate\Database\Eloquent\Builder;
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Helper;
|
use App\Helper;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
class GadaianService
|
class GadaianService
|
||||||
{
|
{
|
||||||
@@ -191,4 +192,213 @@ class GadaianService
|
|||||||
|
|
||||||
return $marhun_gadaian;
|
return $marhun_gadaian;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getCawanganReportGadaiTebusMasa()
|
||||||
|
{
|
||||||
|
$cawangan_connection = Cawangan::where('kodcaw', $this->kod_cawangan)->firstOrFail()->mysql;
|
||||||
|
$online_connection = Helper::getOnlineArrahnConnection();
|
||||||
|
$startDate = $this->startDate;
|
||||||
|
$endDate = $this->endDate;
|
||||||
|
|
||||||
|
// 1. Ambil data gadai dari cawangan
|
||||||
|
$gadai_data = DB::connection($cawangan_connection)->table('gadai')
|
||||||
|
->whereBetween('t_gadai', [$startDate, $endDate])
|
||||||
|
->get();
|
||||||
|
|
||||||
|
if ($gadai_data->isEmpty()) {
|
||||||
|
return response()->json([
|
||||||
|
'query' => [
|
||||||
|
'startDate' => Helper::formatDate($startDate),
|
||||||
|
'endDate' => Helper::formatDate($endDate),
|
||||||
|
],
|
||||||
|
'cawangan_detail' => $this->getCawanganDetail($cawangan_connection),
|
||||||
|
'gadaian' => [],
|
||||||
|
'summary_gadaian' => [],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. Ambil norujukan & tarikh dari gadai
|
||||||
|
$norujukans = $gadai_data->pluck('norujukan')->unique();
|
||||||
|
$tarikh_set = $gadai_data->pluck('t_gadai')->map(fn($d) => date('Y-m-d', strtotime($d)))->unique();
|
||||||
|
|
||||||
|
// 3. Ambil transaksi tebus dari online server
|
||||||
|
$transaksi_tebus = DB::connection($online_connection)->table('transaction')
|
||||||
|
->whereIn('trans_type', ['T', 'AT'])
|
||||||
|
->whereIn('norujukan', $norujukans)
|
||||||
|
->whereIn(DB::raw('DATE(created_at)'), $tarikh_set)
|
||||||
|
->get()
|
||||||
|
->groupBy(fn($trans) => $trans->norujukan . '|' . date('Y-m-d', strtotime($trans->created_at)));
|
||||||
|
|
||||||
|
// 4. Padankan
|
||||||
|
$matched = collect();
|
||||||
|
|
||||||
|
foreach ($gadai_data as $item) {
|
||||||
|
$tarikh = date('Y-m-d', strtotime($item->t_gadai));
|
||||||
|
$key = $item->norujukan . '|' . $tarikh;
|
||||||
|
|
||||||
|
if ($transaksi_tebus->has($key)) {
|
||||||
|
$trans = $transaksi_tebus[$key]->first(); // satu transaksi je
|
||||||
|
|
||||||
|
$masa_gadai = $item->masa;
|
||||||
|
$masa_tebus = date('H:i:s', strtotime($trans->created_at));
|
||||||
|
$beza_saat = abs(strtotime($masa_tebus) - strtotime($masa_gadai));
|
||||||
|
$beza_masa = gmdate("H:i:s", $beza_saat);
|
||||||
|
|
||||||
|
$matched->push((object)[
|
||||||
|
't_gadai' => $item->t_gadai,
|
||||||
|
'norujukan' => $item->norujukan,
|
||||||
|
'nokp' => $item->nokp,
|
||||||
|
'semakbarcode' => $item->semakbarcode,
|
||||||
|
'masa' => $masa_gadai,
|
||||||
|
'masa_tebus' => $masa_tebus,
|
||||||
|
'beza_minit' => $beza_masa,
|
||||||
|
'berat' => $item->berat,
|
||||||
|
'nilaimarhun' => $item->nilaimarhun,
|
||||||
|
'pinjaman' => $item->pinjaman,
|
||||||
|
'upah12' => $item->upah12,
|
||||||
|
'percentpinj' => $item->percentpinj,
|
||||||
|
'teller' => $item->teller,
|
||||||
|
'bakipjm' => $item->bakipjm,
|
||||||
|
'bakiupah' => $item->bakiupah,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 5. Data tambahan
|
||||||
|
$customer_info = $this->getCustomerInfo($matched);
|
||||||
|
$marhun_info = $this->getMarhunGadaiTebusMasa($matched, $cawangan_connection);
|
||||||
|
$cawangan_detail = $this->getCawanganDetail($cawangan_connection);
|
||||||
|
$summary = $this->getTotalSummaryGadaiTebusMasa($matched);
|
||||||
|
|
||||||
|
// 6. Gabung akhir
|
||||||
|
$report_data = $matched->zip($customer_info, $marhun_info)->map(function ($data) {
|
||||||
|
[$gadai, $customer, $marhun] = $data;
|
||||||
|
|
||||||
|
return [
|
||||||
|
'no_rujukan' => $gadai->norujukan,
|
||||||
|
'nama' => $customer['nama'] ?? '-',
|
||||||
|
'alamat' => $customer['alamat1'] ?? '-',
|
||||||
|
'no_kp' => $gadai->nokp,
|
||||||
|
'masa' => $gadai->masa,
|
||||||
|
'masa_tebus' => $gadai->masa_tebus,
|
||||||
|
'beza_minit' => $gadai->beza_minit,
|
||||||
|
'marhun' => $marhun,
|
||||||
|
'berat' => $gadai->berat,
|
||||||
|
'nilai_marhun' => $gadai->nilaimarhun,
|
||||||
|
'pinjaman' => $gadai->pinjaman,
|
||||||
|
'peratusan_margin_pinjaman' => $gadai->percentpinj,
|
||||||
|
'bakipjm' => $gadai->bakipjm,
|
||||||
|
'keuntungan' => $gadai->bakiupah,
|
||||||
|
'teller' => $gadai->teller,
|
||||||
|
't_gadai' => $gadai->t_gadai,
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
$report_data = $report_data->sortBy(function ($item) {
|
||||||
|
list($hours, $minutes, $seconds) = explode(':', $item['beza_minit']);
|
||||||
|
return ((int)$hours * 3600) + ((int)$minutes * 60) + (int)$seconds;
|
||||||
|
})->values();
|
||||||
|
|
||||||
|
return response()->json([
|
||||||
|
'query' => [
|
||||||
|
'startDate' => Helper::formatDate($startDate),
|
||||||
|
'endDate' => Helper::formatDate($endDate),
|
||||||
|
],
|
||||||
|
'cawangan_detail' => $cawangan_detail,
|
||||||
|
'gadaian' => $report_data,
|
||||||
|
'summary_gadaian' => $summary,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function formatBezaMinit($minit)
|
||||||
|
{
|
||||||
|
if (is_null($minit)) {
|
||||||
|
return '-';
|
||||||
|
}
|
||||||
|
|
||||||
|
$abs = abs($minit);
|
||||||
|
$jam = floor($abs / 60);
|
||||||
|
$baki = $abs % 60;
|
||||||
|
$tanda = $minit < 0 ? '-' : '';
|
||||||
|
|
||||||
|
return "{$tanda}{$jam} jam {$baki} minit";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private function getTotalGadaiTebusMasa($query_total_gadaitebusmasa)
|
||||||
|
{
|
||||||
|
$total_gadaitebusmasa = (clone $query_total_gadaitebusmasa)
|
||||||
|
->select('gadai.t_gadai',
|
||||||
|
'gadai.norujukan',
|
||||||
|
'gadai.nokp',
|
||||||
|
'gadai.semakbarcode',
|
||||||
|
'gadai.masa',
|
||||||
|
'gadai.berat',
|
||||||
|
'gadai.nilaimarhun',
|
||||||
|
'gadai.pinjaman',
|
||||||
|
'gadai.upah12',
|
||||||
|
'gadai.percentpinj',
|
||||||
|
'gadai.teller',
|
||||||
|
'gadai.nokp',
|
||||||
|
'gadai.bakipjm',
|
||||||
|
'gadai.bakiupah',
|
||||||
|
DB::raw('TIMEDIFF(TIME(trans.created_at), gadai.masa) as beza_minit'))
|
||||||
|
->where('gadai.upah12', '>=', 0.00)
|
||||||
|
->orderBy('gadai.teller')
|
||||||
|
->orderBy('gadai.sirig')
|
||||||
|
->get();
|
||||||
|
return $total_gadaitebusmasa;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getTotalSummaryGadaiTebusMasa($collection)
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'total_gadaitebusmasa' => $collection->count(),
|
||||||
|
'total_berat' => $collection->sum('berat'),
|
||||||
|
'total_nilai_marhun' => $collection->sum('nilaimarhun'),
|
||||||
|
'total_pembiayaan' => $collection->sum('pinjaman'),
|
||||||
|
'total_bakipjm' => $collection->sum('bakipjm'),
|
||||||
|
'total_keuntungan' => $collection->sum('bakiupah'),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getTotalSummaryGadaiTebusMasaGroupByTeller($query_total_gadaitebusmasa)
|
||||||
|
{
|
||||||
|
|
||||||
|
$total_summary_gadaian_groupByTeller = (clone $query_total_gadaitebusmasa)
|
||||||
|
->selectRaw('count(gadai.norujukan) as total_gadaitebusmasa,
|
||||||
|
sum(gadai.berat) as total_berat,
|
||||||
|
sum(gadai.nilaimarhun) as total_nilai_marhun,
|
||||||
|
sum(gadai.pinjaman) as total_pembiayaan,
|
||||||
|
sum(gadai.bakipjm) as total_bakipjm,
|
||||||
|
sum(gadai.bakiupah) as total_keuntungan')
|
||||||
|
->where('gadai.upah12', '>=', 0.00)
|
||||||
|
->groupBy('gadai.teller')
|
||||||
|
->get();
|
||||||
|
return $total_summary_gadaian_groupByTeller;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getMarhunGadaiTebusMasa($total_gadaitebusmasa, $cawangan_connection)
|
||||||
|
{
|
||||||
|
|
||||||
|
$extract_norujukan = $total_gadaitebusmasa->pluck('norujukan');
|
||||||
|
|
||||||
|
$marhun_gadaitebusmasa = Marhun::on($cawangan_connection)
|
||||||
|
->select('norujukan', 'bil', 'marhun')
|
||||||
|
->whereIn('norujukan', $extract_norujukan)
|
||||||
|
->get()
|
||||||
|
->groupBy('norujukan')
|
||||||
|
->toArray();
|
||||||
|
|
||||||
|
$marhun_gadaitebusmasa = array_map(function ($gadaian) {
|
||||||
|
return array_map(function ($norujukan) {
|
||||||
|
return $norujukan['bil'] . ' ' . $norujukan['marhun'];
|
||||||
|
}, $gadaian);
|
||||||
|
}, $marhun_gadaitebusmasa);
|
||||||
|
|
||||||
|
$marhun_gadaitebusmasa = array_map(function ($gadaian) {
|
||||||
|
return implode(',', $gadaian);
|
||||||
|
}, $marhun_gadaitebusmasa);
|
||||||
|
return $marhun_gadaitebusmasa;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -223,7 +223,7 @@ class ImbangDugaService
|
|||||||
$t_gadai = Carbon::parse($gadai->t_gadai);
|
$t_gadai = Carbon::parse($gadai->t_gadai);
|
||||||
$t_bayaran = Carbon::parse($trans->tarikh_bayaran);
|
$t_bayaran = Carbon::parse($trans->tarikh_bayaran);
|
||||||
|
|
||||||
if ($t_gadai->month === $t_bayaran->month) {
|
if ($t_gadai->month === $t_bayaran->month && $t_gadai->year === $t_bayaran->year) {
|
||||||
return false;
|
return false;
|
||||||
}else{
|
}else{
|
||||||
return true;
|
return true;
|
||||||
@@ -239,8 +239,17 @@ class ImbangDugaService
|
|||||||
$ujrah_rebet = $this->filterCollection($keuntungan_semasa_collection, 'T', 'ujrah_rebet');
|
$ujrah_rebet = $this->filterCollection($keuntungan_semasa_collection, 'T', 'ujrah_rebet');
|
||||||
$onepercent_rebet = $this->filterCollection($keuntungan_semasa_collection, 'T', 'onepercent_rebet');
|
$onepercent_rebet = $this->filterCollection($keuntungan_semasa_collection, 'T', 'onepercent_rebet');
|
||||||
|
|
||||||
$total_onepercent = $onepercent + $onepercent_rebet;
|
$upahlelong = Lelong::on($cawangan['mysql'])
|
||||||
$total_ujrah = $ujrah + $ujrah_rebet;
|
->selectRaw('SUM(ujrah) as ujrah,SUM(onepercent) as onepercent')
|
||||||
|
->where([['tagujrah','=',1],['t_jual','>=',$start],['t_jual','<=',$end]])
|
||||||
|
->whereYear('t_jual','=',$year)
|
||||||
|
->get()->toArray();
|
||||||
|
|
||||||
|
$ujrah_lelong = (empty($upahlelong)) ? 0 : $upahlelong[0]['ujrah'];
|
||||||
|
$onepercent_lelong = (empty($upahlelong)) ? 0 : $upahlelong[0]['onepercent'];
|
||||||
|
|
||||||
|
$total_onepercent = $onepercent + $onepercent_rebet + $onepercent_lelong;
|
||||||
|
$total_ujrah = $ujrah + $ujrah_rebet + $ujrah_lelong;
|
||||||
|
|
||||||
return ['ujrah' => $total_ujrah, 'onepercent' => $total_onepercent];
|
return ['ujrah' => $total_ujrah, 'onepercent' => $total_onepercent];
|
||||||
}
|
}
|
||||||
@@ -318,8 +327,17 @@ class ImbangDugaService
|
|||||||
$month = (clone $tarikh)->month;
|
$month = (clone $tarikh)->month;
|
||||||
|
|
||||||
$lastDayPreviousMonth = $tarikh->subMonthsNoOverflow()->endOfMonth()->toDateString();
|
$lastDayPreviousMonth = $tarikh->subMonthsNoOverflow()->endOfMonth()->toDateString();
|
||||||
|
$lastEndYear = $tarikh->subMonthsNoOverflow()->endOfMonth();
|
||||||
|
$lastYear = Carbon::now()->subYear()->year;
|
||||||
|
|
||||||
$get_imbangduga = imbangdugabackup::on($cawangan['mysql'])->where('tarikh',$lastDayPreviousMonth)->first()->toArray();
|
//$get_imbangduga = imbangdugabackup::on($cawangan['mysql'])->where('tarikh',$lastDayPreviousMonth)->first()->toArray();
|
||||||
|
|
||||||
|
/* Added because if the last month is not the same year */
|
||||||
|
if($lastEndYear->year != $lastYear){
|
||||||
|
$get_imbangduga = imbangdugabackup::on($cawangan['mysql'])->where('tarikh',$lastDayPreviousMonth)->first()->toArray();
|
||||||
|
}else{
|
||||||
|
$get_imbangduga['keun_sebenar'] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
$collection_trans = Transaction::on('mysql7')
|
$collection_trans = Transaction::on('mysql7')
|
||||||
->leftJoin('transaksi_keuntungan as trans', function ($join) {
|
->leftJoin('transaksi_keuntungan as trans', function ($join) {
|
||||||
@@ -608,6 +626,51 @@ class ImbangDugaService
|
|||||||
$current = Carbon::now();
|
$current = Carbon::now();
|
||||||
$current = new Carbon();
|
$current = new Carbon();
|
||||||
|
|
||||||
|
if($this->kodcaw == 'GC'){
|
||||||
|
$transaksi_data = [];
|
||||||
|
TransaksiKeuntungan::on('mysql7')
|
||||||
|
->where('tarikh_bayaran', '<=', $daterequest)
|
||||||
|
->where('kodcaw', $this->kodcaw)
|
||||||
|
->chunk(1000, function ($transactions) use (&$transaksi_data) {
|
||||||
|
$transaksi_data = array_merge($transaksi_data, $transactions->pluck('norujukan')->toArray());
|
||||||
|
});
|
||||||
|
|
||||||
|
$gadaiData = [];
|
||||||
|
$chunkedTransaksiData = array_chunk($transaksi_data, 1000);
|
||||||
|
|
||||||
|
foreach ($chunkedTransaksiData as $chunk) {
|
||||||
|
Gadai::on($cawangan['mysql'])
|
||||||
|
->whereIn('norujukan', $chunk)
|
||||||
|
->where(function ($query) {
|
||||||
|
$query->where([
|
||||||
|
['sttebus', '=', ''],
|
||||||
|
['hargajualan', '<>', null]
|
||||||
|
])
|
||||||
|
->orWhere([
|
||||||
|
['sttebus', '!=', ''],
|
||||||
|
['t_update', '>', $this->tarikh],
|
||||||
|
['hargajualan', '<>', null]
|
||||||
|
]);
|
||||||
|
})
|
||||||
|
->orderBy('norujukan')
|
||||||
|
->chunk(1000, function ($gadaiChunk) use (&$gadaiData) {
|
||||||
|
$gadaiData = array_merge($gadaiData, $gadaiChunk->pluck('norujukan')->toArray());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
$totalPembiayaan = 0;
|
||||||
|
$chunkedGadaiData = array_chunk($gadaiData, 1000);
|
||||||
|
|
||||||
|
foreach ($chunkedGadaiData as $chunk) {
|
||||||
|
$totalPembiayaan += TransaksiKeuntungan::on('mysql7')
|
||||||
|
->whereIn('norujukan', $chunk)
|
||||||
|
->where('tarikh_bayaran', '<=', $daterequest)
|
||||||
|
->sum('bayaran_pembiayaan');
|
||||||
|
}
|
||||||
|
|
||||||
|
return $totalPembiayaan;
|
||||||
|
}
|
||||||
|
|
||||||
$transaksi_data = TransaksiKeuntungan::on('mysql7')
|
$transaksi_data = TransaksiKeuntungan::on('mysql7')
|
||||||
->where('tarikh_bayaran' ,'<=', $daterequest)
|
->where('tarikh_bayaran' ,'<=', $daterequest)
|
||||||
->where('kodcaw',$this->kodcaw)
|
->where('kodcaw',$this->kodcaw)
|
||||||
|
|||||||
@@ -0,0 +1,353 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Services\Reports;
|
||||||
|
|
||||||
|
use App\Cawangan;
|
||||||
|
use App\CawanganDetail;
|
||||||
|
use App\Customer;
|
||||||
|
use App\Lelong;
|
||||||
|
use App\Marhun;
|
||||||
|
use App\LelMarhun;
|
||||||
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use App\Helper;
|
||||||
|
|
||||||
|
class LelonganService
|
||||||
|
{
|
||||||
|
|
||||||
|
public $kod_cawangan;
|
||||||
|
public $startDate;
|
||||||
|
public $endDate;
|
||||||
|
|
||||||
|
public function __construct($kod_cawangan, Request $request)
|
||||||
|
{
|
||||||
|
$this->kod_cawangan = $kod_cawangan;
|
||||||
|
$this->startDate = $request->startDate;
|
||||||
|
$this->endDate = $request->endDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCawanganReport()
|
||||||
|
{
|
||||||
|
$cawangan_connection = Cawangan::where('kodcaw', $this->kod_cawangan)->first()->mysql;
|
||||||
|
|
||||||
|
$query_total_lelongan = Lelong::on($cawangan_connection)
|
||||||
|
->join('gadai', 'gadai.norujukan', '=', 'lelong.norujukan') // Joining gadai table
|
||||||
|
->select(
|
||||||
|
'lelong.norujukan',
|
||||||
|
'gadai.nokp',
|
||||||
|
'gadai.masa',
|
||||||
|
'lelong.berat',
|
||||||
|
'lelong.nilaimarhun',
|
||||||
|
'gadai.pinjaman',
|
||||||
|
'gadai.percentpinj',
|
||||||
|
'lelong.teller',
|
||||||
|
'gadai.bakipjm', // Fetch pinjaman from gadai
|
||||||
|
'gadai.marhun' // Fetch marhun from gadai
|
||||||
|
);
|
||||||
|
|
||||||
|
$query_total_lelongan->when(!empty($this->startDate) and !empty($this->endDate), function ($q) {
|
||||||
|
return $q->where('lelong.t_jual', '>=', $this->startDate)
|
||||||
|
->where('lelong.t_jual', '<=', $this->endDate);
|
||||||
|
});
|
||||||
|
|
||||||
|
$total_lelongan = $this->getTotalLelongan($query_total_lelongan);
|
||||||
|
// dd($total_lelongan);
|
||||||
|
$total_summary_lelongan_teller = $this->getTotalSummaryLelonganGroupByTeller($query_total_lelongan);
|
||||||
|
$total_summary_lelongan = $this->getTotalSummaryLelongan($query_total_lelongan);
|
||||||
|
$customer_info = $this->getCustomerInfo($total_lelongan);
|
||||||
|
$marhun_lelongan = $this->getMarhunLelongan($total_lelongan, $cawangan_connection);
|
||||||
|
$cawangan_detail = $this->getCawanganDetail($cawangan_connection);
|
||||||
|
|
||||||
|
$total_lelongan = $total_lelongan->zip($customer_info, $marhun_lelongan)->map(function ($data) {
|
||||||
|
|
||||||
|
[$lelong, $customer_info, $marhun_lelongan] = $data;
|
||||||
|
|
||||||
|
return [
|
||||||
|
'no_rujukan' => $lelong['norujukan'],
|
||||||
|
'nama' => $customer_info['nama'],
|
||||||
|
'alamat' => $customer_info['alamat1'],
|
||||||
|
'no_kp' => $lelong['nokp'],
|
||||||
|
'masa' => $lelong['masa'],
|
||||||
|
'marhun' => $marhun_lelongan,
|
||||||
|
'berat' => $lelong['berat'],
|
||||||
|
'nilai_marhun' => $lelong['nilaimarhun'],
|
||||||
|
'pinjaman' => $lelong['pinjaman'],
|
||||||
|
'peratusan_margin_pinjaman' => $lelong['percentpinj'],
|
||||||
|
'bakipjm' => $lelong['bakipjm'],
|
||||||
|
'keuntungan' => $lelong['bakiupah'],
|
||||||
|
'cajlelong' => $lelong['cajlelong'],
|
||||||
|
'hargajual' => $lelong['hargajual'],
|
||||||
|
'baki' => $lelong['baki'],
|
||||||
|
'teller' => $lelong['teller'],
|
||||||
|
];
|
||||||
|
dd($data);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
$total_lelongan = $total_lelongan->groupBy('teller');
|
||||||
|
|
||||||
|
$lelongan_tellers = $total_lelongan->keys();
|
||||||
|
|
||||||
|
$total_lelongan = $total_lelongan
|
||||||
|
->zip($total_summary_lelongan_teller)
|
||||||
|
->map(function ($data) {
|
||||||
|
|
||||||
|
[$lelongan, $summary] = $data;
|
||||||
|
|
||||||
|
return [
|
||||||
|
'lelongan' => $lelongan,
|
||||||
|
'summary_lelongan_teller' => $summary,
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
$total_lelongan = $lelongan_tellers->combine($total_lelongan);
|
||||||
|
|
||||||
|
$data = [
|
||||||
|
'query' => [
|
||||||
|
'startDate' => Helper::formatDate($this->startDate),
|
||||||
|
'endDate' => Helper::formatDate($this->endDate),
|
||||||
|
],
|
||||||
|
'cawangan_detail' => $cawangan_detail,
|
||||||
|
'lelongan' => $total_lelongan,
|
||||||
|
'summary_lelongan' => $total_summary_lelongan,
|
||||||
|
];
|
||||||
|
|
||||||
|
return json_encode($data);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getCawanganDetail($cawangan_connection)
|
||||||
|
{
|
||||||
|
$cawangan_detail = CawanganDetail::on($cawangan_connection)->get()
|
||||||
|
->map(function ($detail) {
|
||||||
|
return [
|
||||||
|
'nama' => $detail['namacaw'],
|
||||||
|
'code' => $detail['kodcaw'] . ' Ar-Rahn ' . $detail['cawangan'],
|
||||||
|
'alamat' => $detail['alamat1'],
|
||||||
|
'waktu_operasi' => $detail['alamat4'],
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
return $cawangan_detail[0];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getTotalSummaryLelongan(Builder $query_total_lelongan)
|
||||||
|
{
|
||||||
|
|
||||||
|
$total_summary_lelongan = (clone $query_total_lelongan)
|
||||||
|
->selectRaw('count(lelong.norujukan) as total_lelongan,
|
||||||
|
sum(lelong.berat) as total_berat,
|
||||||
|
sum(lelong.nilaimarhun) as total_nilai_marhun,
|
||||||
|
sum(lelong.pinjaman) as total_pembiayaan,
|
||||||
|
sum(gadai.bakipjm) as total_bakipjm,
|
||||||
|
sum(lelong.bakiupah) as total_keuntungan,
|
||||||
|
sum(lelong.cajlelong) as total_cajlelong,
|
||||||
|
sum(lelong.hargajual) as total_hargajual,
|
||||||
|
sum(lelong.baki) as total_baki')
|
||||||
|
->get()
|
||||||
|
->map(function ($x) {
|
||||||
|
return [
|
||||||
|
'total_lelongan' => $x['total_lelongan'],
|
||||||
|
'total_berat' => $x['total_berat'],
|
||||||
|
'total_nilai_marhun' => $x['total_nilai_marhun'],
|
||||||
|
'total_pembiayaan' => $x['total_pembiayaan'],
|
||||||
|
'total_bakipjm' => $x['total_bakipjm'],
|
||||||
|
'total_keuntungan' => $x['total_keuntungan'],
|
||||||
|
'total_cajlelong' => $x['total_cajlelong'],
|
||||||
|
'total_hargajual' => $x['total_hargajual'],
|
||||||
|
'total_baki' => $x['total_baki']
|
||||||
|
];
|
||||||
|
});
|
||||||
|
// dd($total_summary_lelongan);
|
||||||
|
|
||||||
|
return $total_summary_lelongan[0];
|
||||||
|
}
|
||||||
|
private function getTotalSummaryLelonganGroupByTeller(Builder $query_total_lelongan)
|
||||||
|
{
|
||||||
|
|
||||||
|
$total_summary_lelongan_groupByTeller = (clone $query_total_lelongan)
|
||||||
|
->selectRaw('count(lelong.norujukan) as total_lelongan,
|
||||||
|
sum(lelong.berat) as total_berat,
|
||||||
|
sum(lelong.nilaimarhun) as total_nilai_marhun,
|
||||||
|
sum(lelong.pinjaman) as total_pembiayaan,
|
||||||
|
sum(gadai.bakipjm) as total_bakipjm,
|
||||||
|
sum(lelong.bakiupah) as total_keuntungan,
|
||||||
|
sum(lelong.cajlelong) as total_cajlelong,
|
||||||
|
sum(lelong.hargajual) as total_hargajual,
|
||||||
|
sum(lelong.baki) as total_baki')
|
||||||
|
->groupBy('lelong.teller')
|
||||||
|
->get();
|
||||||
|
return $total_summary_lelongan_groupByTeller;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getTotalLelongan(Builder $query_total_lelongan)
|
||||||
|
{
|
||||||
|
$total_lelongan = (clone $query_total_lelongan)
|
||||||
|
->select('lelong.t_lelong',
|
||||||
|
'lelong.norujukan',
|
||||||
|
'gadai.nokp',
|
||||||
|
'gadai.semakbarcode',
|
||||||
|
'gadai.masa',
|
||||||
|
'lelong.berat',
|
||||||
|
'lelong.nilaimarhun',
|
||||||
|
'lelong.pinjaman',
|
||||||
|
'gadai.upah12',
|
||||||
|
'gadai.percentpinj',
|
||||||
|
'lelong.teller',
|
||||||
|
'gadai.nokp',
|
||||||
|
'gadai.bakipjm',
|
||||||
|
'lelong.bakiupah',
|
||||||
|
'lelong.cajlelong',
|
||||||
|
'lelong.hargajual',
|
||||||
|
'lelong.baki')
|
||||||
|
->orderBy('lelong.teller')
|
||||||
|
->orderBy('gadai.sirig')
|
||||||
|
->get();
|
||||||
|
return $total_lelongan;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getCustomerInfo($total_lelongan)
|
||||||
|
{
|
||||||
|
|
||||||
|
$extract_nokp = $total_lelongan->pluck('nokp');
|
||||||
|
// dd($extract_nokp);
|
||||||
|
|
||||||
|
$customer_info = Customer::on('mysql7')
|
||||||
|
->select(['nama', 'alamat1', 'kpbaru', 'kplama'])
|
||||||
|
->where(function ($query) use ($extract_nokp) {
|
||||||
|
$query->whereIn('kpbaru', $extract_nokp)
|
||||||
|
->orWhereIn('kplama', $extract_nokp);
|
||||||
|
})
|
||||||
|
->get();
|
||||||
|
// dd($customer_info);
|
||||||
|
|
||||||
|
$customer_info = collect($extract_nokp)->map(function ($nokp) use ($customer_info) {
|
||||||
|
return $customer_info->where('kpbaru', $nokp)->first() ?? $customer_info->where('kplama', $nokp)->first();
|
||||||
|
})->toArray();
|
||||||
|
|
||||||
|
return $customer_info;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getMarhunLelongan($total_lelongan, $cawangan_connection)
|
||||||
|
{
|
||||||
|
|
||||||
|
$extract_norujukan = $total_lelongan->pluck('norujukan');
|
||||||
|
|
||||||
|
$marhun_lelongan = LelMarhun::on($cawangan_connection)
|
||||||
|
->select('norujukan', 'bil', 'marhun')
|
||||||
|
->whereIn('norujukan', $extract_norujukan)
|
||||||
|
->get()
|
||||||
|
->groupBy('norujukan')
|
||||||
|
->toArray();
|
||||||
|
|
||||||
|
$marhun_lelongan = array_map(function ($lelongan) {
|
||||||
|
return array_map(function ($norujukan) {
|
||||||
|
return $norujukan['bil'] . ' ' . $norujukan['marhun'];
|
||||||
|
}, $lelongan);
|
||||||
|
}, $marhun_lelongan);
|
||||||
|
|
||||||
|
$marhun_lelongan = array_map(function ($lelongan) {
|
||||||
|
return implode(',', $lelongan);
|
||||||
|
}, $marhun_lelongan);
|
||||||
|
return $marhun_lelongan;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCawanganReportBakiLelongBelumTuntut()
|
||||||
|
{
|
||||||
|
$cawangan_connection = Cawangan::where('kodcaw', $this->kod_cawangan)->first()->mysql;
|
||||||
|
$endDate = $this->endDate;
|
||||||
|
$query_total_lelongan = Lelong::on($cawangan_connection)
|
||||||
|
->join('gadai', 'gadai.norujukan', '=', 'lelong.norujukan') // Joining gadai table
|
||||||
|
->select(
|
||||||
|
'lelong.t_lelong',
|
||||||
|
'lelong.norujukan',
|
||||||
|
'gadai.nokp',
|
||||||
|
'gadai.masa',
|
||||||
|
'lelong.berat',
|
||||||
|
'lelong.nilaimarhun',
|
||||||
|
'gadai.pinjaman',
|
||||||
|
'gadai.percentpinj',
|
||||||
|
'lelong.teller',
|
||||||
|
'gadai.bakipjm', // Fetch pinjaman from gadai
|
||||||
|
'gadai.marhun' // Fetch marhun from gadai
|
||||||
|
)
|
||||||
|
->where(function ($query) use ($endDate) {
|
||||||
|
$query->whereNull('lelong.trkhtuntut')
|
||||||
|
->orWhere('lelong.trkhtuntut', '>', $endDate); // or use a specific date: '2025-06-01'
|
||||||
|
})
|
||||||
|
->where('lelong.baki', '>', 0.00)
|
||||||
|
->orderBy('lelong.norujukan', 'asc');
|
||||||
|
|
||||||
|
|
||||||
|
$query_total_lelongan->when(!empty($this->startDate) and !empty($this->endDate), function ($q) {
|
||||||
|
return $q->where('lelong.t_lelong', '>=', $this->startDate)
|
||||||
|
->where('lelong.t_lelong', '<=', $this->endDate);
|
||||||
|
});
|
||||||
|
|
||||||
|
$total_lelongan = $this->getTotalLelongan($query_total_lelongan);
|
||||||
|
// dd($total_lelongan);
|
||||||
|
$total_summary_lelongan_teller = $this->getTotalSummaryLelonganGroupByTeller($query_total_lelongan);
|
||||||
|
$total_summary_lelongan = $this->getTotalSummaryLelongan($query_total_lelongan);
|
||||||
|
$customer_info = $this->getCustomerInfo($total_lelongan);
|
||||||
|
$marhun_lelongan = $this->getMarhunLelongan($total_lelongan, $cawangan_connection);
|
||||||
|
$cawangan_detail = $this->getCawanganDetail($cawangan_connection);
|
||||||
|
|
||||||
|
$total_lelongan = $total_lelongan->zip($customer_info, $marhun_lelongan)->map(function ($data) {
|
||||||
|
|
||||||
|
[$lelong, $customer_info, $marhun_lelongan] = $data;
|
||||||
|
|
||||||
|
return [
|
||||||
|
'no_rujukan' => $lelong['norujukan'],
|
||||||
|
'nama' => $customer_info['nama'] ?? '-',
|
||||||
|
'alamat' => $customer_info['alamat1'] ?? '-',
|
||||||
|
'no_kp' => $lelong['nokp'],
|
||||||
|
'masa' => $lelong['masa'],
|
||||||
|
'marhun' => $marhun_lelongan,
|
||||||
|
'berat' => $lelong['berat'],
|
||||||
|
'nilai_marhun' => $lelong['nilaimarhun'],
|
||||||
|
'pinjaman' => $lelong['pinjaman'],
|
||||||
|
'peratusan_margin_pinjaman' => $lelong['percentpinj'],
|
||||||
|
'bakipjm' => $lelong['bakipjm'],
|
||||||
|
'keuntungan' => $lelong['bakiupah'],
|
||||||
|
'cajlelong' => $lelong['cajlelong'],
|
||||||
|
'hargajual' => $lelong['hargajual'],
|
||||||
|
'baki' => $lelong['baki'],
|
||||||
|
'teller' => $lelong['teller'],
|
||||||
|
't_lelong' => $lelong['t_lelong'],
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
$total_lelongan = $total_lelongan->groupBy('teller');
|
||||||
|
|
||||||
|
$lelongan_tellers = $total_lelongan->keys();
|
||||||
|
|
||||||
|
$total_lelongan = $total_lelongan
|
||||||
|
->zip($total_summary_lelongan_teller)
|
||||||
|
->map(function ($data) {
|
||||||
|
|
||||||
|
[$lelongan, $summary] = $data;
|
||||||
|
|
||||||
|
return [
|
||||||
|
'lelongan' => $lelongan,
|
||||||
|
'summary_lelongan_teller' => $summary,
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
$total_lelongan = $lelongan_tellers->combine($total_lelongan);
|
||||||
|
|
||||||
|
$data = [
|
||||||
|
'query' => [
|
||||||
|
'startDate' => Helper::formatDate($this->startDate),
|
||||||
|
'endDate' => Helper::formatDate($this->endDate),
|
||||||
|
],
|
||||||
|
'cawangan_detail' => $cawangan_detail,
|
||||||
|
'lelongan' => $total_lelongan,
|
||||||
|
'summary_lelongan' => $total_summary_lelongan,
|
||||||
|
];
|
||||||
|
|
||||||
|
return json_encode($data);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -398,7 +398,7 @@ class OnePercentService
|
|||||||
$t_gadai = Carbon::parse($gadai->t_gadai);
|
$t_gadai = Carbon::parse($gadai->t_gadai);
|
||||||
$t_bayaran = Carbon::parse($trans->tarikh_bayaran);
|
$t_bayaran = Carbon::parse($trans->tarikh_bayaran);
|
||||||
|
|
||||||
if ($t_gadai->month === $t_bayaran->month) {
|
if (($t_gadai->month == $t_bayaran->month) && ($t_gadai->year == $t_bayaran->year)) {
|
||||||
return false;
|
return false;
|
||||||
}else{
|
}else{
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -266,6 +266,12 @@ class RingkasanHarianService
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Public method that calls the private method
|
||||||
|
public function getCustomerSummary()
|
||||||
|
{
|
||||||
|
return $this->getBilanganCustomerBaru(); // Access the private method here
|
||||||
|
}
|
||||||
|
|
||||||
private function getBayarRugiLelong()
|
private function getBayarRugiLelong()
|
||||||
{
|
{
|
||||||
$bayarRugiLelong = TuntutBaki::on($this->connectionCawangan)
|
$bayarRugiLelong = TuntutBaki::on($this->connectionCawangan)
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ use App\Tunai;
|
|||||||
use App\Transaction;
|
use App\Transaction;
|
||||||
use App\TransaksiKeuntungan;
|
use App\TransaksiKeuntungan;
|
||||||
use App\Cawangan;
|
use App\Cawangan;
|
||||||
|
use App\Mohon;
|
||||||
|
use App\Mohonid;
|
||||||
use App\TransaksiGadai;
|
use App\TransaksiGadai;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
@@ -39,7 +41,14 @@ class AnsuranServices
|
|||||||
$tarikh = Carbon::now();
|
$tarikh = Carbon::now();
|
||||||
$harisemasa = $tarikh->toDateString();
|
$harisemasa = $tarikh->toDateString();
|
||||||
|
|
||||||
|
$audit = new Audit();
|
||||||
|
$audit->users = $request->teller;
|
||||||
|
$audit->actions = 'Hapus Ansuran';
|
||||||
|
$audit->norujukan = $request->norujukan;
|
||||||
|
$audit->new_data = '';
|
||||||
|
|
||||||
if($harisemasa !== $tarikh_request->toDateString()){
|
if($harisemasa !== $tarikh_request->toDateString()){
|
||||||
|
Log::debug('Date mismatch: ' . $harisemasa . ' vs ' . $tarikh_request->toDateString());
|
||||||
return 'date not equal';
|
return 'date not equal';
|
||||||
}
|
}
|
||||||
$transaction_gadai = TransaksiGadai::on('mysql7')->where('id',$request->tg_id)->first();
|
$transaction_gadai = TransaksiGadai::on('mysql7')->where('id',$request->tg_id)->first();
|
||||||
@@ -49,8 +58,11 @@ class AnsuranServices
|
|||||||
return 'wrong teller';
|
return 'wrong teller';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$audit->old_data = $transaction_gadai;
|
||||||
|
|
||||||
|
|
||||||
try{
|
try{
|
||||||
DB::connection('mysql7')->transaction(function () use($cawangan,$request,$harisemasa,$transaction,$transaction_gadai){
|
DB::connection('mysql7')->transaction(function () use($cawangan,$request,$harisemasa,$transaction,$transaction_gadai,$audit){
|
||||||
|
|
||||||
try{
|
try{
|
||||||
DB::connection($cawangan['mysql'])->transaction(function () use($cawangan,$request,$transaction_gadai,$harisemasa,$transaction){
|
DB::connection($cawangan['mysql'])->transaction(function () use($cawangan,$request,$transaction_gadai,$harisemasa,$transaction){
|
||||||
@@ -91,6 +103,17 @@ class AnsuranServices
|
|||||||
'softDelete' => 1,
|
'softDelete' => 1,
|
||||||
));
|
));
|
||||||
|
|
||||||
|
$gadai_updated = Gadai::on($cawangan['mysql'])
|
||||||
|
->select('percentpinj','bakipjm','tempoh','t_update','bakihargajualan','tempohbayar','lelong_tawarruq','margin_semasa','tunggakanujrah','tunggakanonepercent')
|
||||||
|
->where('norujukan',$request->norujukan)->first();
|
||||||
|
|
||||||
|
$tarikh_audit = Carbon::now();
|
||||||
|
$audit->new_data = $gadai_updated;
|
||||||
|
$audit->kodcaw = $this->cawangan;
|
||||||
|
$audit->created_at = $tarikh_audit;
|
||||||
|
$audit->updated_at = $tarikh_audit;
|
||||||
|
$audit->save();
|
||||||
|
|
||||||
|
|
||||||
return 'success';
|
return 'success';
|
||||||
|
|
||||||
@@ -103,18 +126,6 @@ class AnsuranServices
|
|||||||
}
|
}
|
||||||
|
|
||||||
return 'success';
|
return 'success';
|
||||||
|
|
||||||
// $audit = new Audit();
|
|
||||||
// $audit->users = $request->teller;
|
|
||||||
// $audit->actions = 'Hapus Ansuran';
|
|
||||||
// $audit->norujukan = $norujukan;
|
|
||||||
// $audit->new_data = $new_data;
|
|
||||||
// $audit->old_data = $old_data;
|
|
||||||
// $audit->kodcaw = $kodcaw;
|
|
||||||
// $audit->created_at = $current;
|
|
||||||
// $audit->updated_at = $current;
|
|
||||||
// $audit->save();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getLatestAdvanceWithoutDelete(Request $request){
|
public function getLatestAdvanceWithoutDelete(Request $request){
|
||||||
@@ -125,5 +136,21 @@ class AnsuranServices
|
|||||||
return $latest;
|
return $latest;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getApprovalFromOperation(Request $request){
|
||||||
|
$tarikh = Carbon::now();
|
||||||
|
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$this->cawangan)->first();
|
||||||
|
|
||||||
|
$latest = Mohon::on($cawangan['mysql'])
|
||||||
|
->whereDate('tarikh',$tarikh->toDateString())
|
||||||
|
->where('teller',$request->teller)
|
||||||
|
->where('masalulus','=','')
|
||||||
|
->where('operasi','=','')
|
||||||
|
->where('status','Hapus Ansuran')
|
||||||
|
->latest('tarikh')
|
||||||
|
->first();
|
||||||
|
|
||||||
|
return $latest;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ use Illuminate\Http\Request as HttpRequest;
|
|||||||
use App\Support\v2\GadaiV2 as Version2Gadai;
|
use App\Support\v2\GadaiV2 as Version2Gadai;
|
||||||
use App\Support\v2\Penebusan;
|
use App\Support\v2\Penebusan;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
class OnePercent extends MasterServices
|
class OnePercent extends MasterServices
|
||||||
{
|
{
|
||||||
protected $kodcaw;
|
protected $kodcaw;
|
||||||
@@ -61,18 +63,30 @@ class OnePercent extends MasterServices
|
|||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getKadarUjrah(HttpRequest $request){
|
public function getKadarUjrah(HttpRequest $request)
|
||||||
$cawangan = Cawangan::on('mysql7')->where('kodcaw',$request->kodcaw)->first();
|
{
|
||||||
$onePercentServices = new Calculation();
|
// Log::info('[DEBUG-CONTROLLER] Data request', [
|
||||||
$kadarujrah = $onePercentServices->getKadarUjrah($request->nilaimarhun,$cawangan['group_id']);
|
// 'nokp' => $request->nokp,
|
||||||
|
// 'kodcaw' => $request->kodcaw,
|
||||||
|
// 'nilaimarhun' => $request->nilaimarhun
|
||||||
|
// ]);
|
||||||
|
|
||||||
return $kadarujrah;
|
$cawangan = Cawangan::on('mysql7')->where('kodcaw', $request->kodcaw)->first();
|
||||||
}
|
$onePercentServices = new Calculation();
|
||||||
|
|
||||||
|
$kadarujrah = $onePercentServices->getKadarUjrah(
|
||||||
|
$request->nilaimarhun,
|
||||||
|
$cawangan['group_id'],
|
||||||
|
$request->nokp
|
||||||
|
);
|
||||||
|
|
||||||
|
return $kadarujrah;
|
||||||
|
}
|
||||||
|
|
||||||
public function getOnePercent(HttpRequest $request){
|
public function getOnePercent(HttpRequest $request){
|
||||||
$margin = (!is_numeric($request->margin)) ? 0 : $request->margin;
|
$margin = (!is_numeric($request->margin)) ? 0 : $request->margin;
|
||||||
$onePercentServices = new Calculation();
|
$onePercentServices = new Calculation();
|
||||||
$keuntungan = $onePercentServices->kiraanKeuntunganSebenar($request->pembiayaan,$request->nilaimarhun,$request->kadarujrah,$margin);
|
$keuntungan = $onePercentServices->kiraanKeuntunganSebenar($request->pembiayaan,$request->nilaimarhun,$request->kadarujrah,$margin, $request->nokp);
|
||||||
|
|
||||||
return $keuntungan;
|
return $keuntungan;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ namespace App\Support\v2;
|
|||||||
|
|
||||||
use App\Audit;
|
use App\Audit;
|
||||||
use App\Cawangan;
|
use App\Cawangan;
|
||||||
|
use App\Customer;
|
||||||
use App\KadarUpah;
|
use App\KadarUpah;
|
||||||
use App\Support\v2\Calculation;
|
use App\Support\v2\Calculation;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
@@ -57,6 +58,34 @@ class GadaiV2
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function getKadarUpahAnggota($nokp, $total_nilai_marhun = 0, $groupid = 2): ?float
|
||||||
|
{
|
||||||
|
if (!$nokp) {
|
||||||
|
return null; // tiada nokp = tak boleh tentukan kadar
|
||||||
|
}
|
||||||
|
|
||||||
|
$customer = Customer::on('mysql7')
|
||||||
|
->select('tag_anggota')
|
||||||
|
->where(function ($q) use ($nokp) {
|
||||||
|
$q->where('kpbaru', $nokp)
|
||||||
|
->orWhere('kplama', $nokp);
|
||||||
|
})
|
||||||
|
->first();
|
||||||
|
|
||||||
|
$customer = $customer ? $customer->toArray() : [];
|
||||||
|
|
||||||
|
if (isset($customer['tag_anggota']) && $customer['tag_anggota'] == 1) {
|
||||||
|
return 0.00; // ahli — kadar 0.00 memang sah
|
||||||
|
}
|
||||||
|
|
||||||
|
$kadar = KadarUpah::where('min', '<=', $total_nilai_marhun)
|
||||||
|
->where('max', '>=', $total_nilai_marhun)
|
||||||
|
->where('group_id', $groupid)
|
||||||
|
->value('kadarujrah');
|
||||||
|
|
||||||
|
return is_null($kadar) ? null : (float) $kadar; // tak jumpa row = null (block)
|
||||||
|
}
|
||||||
|
|
||||||
public function createMarhun($norujukan,HttpRequest $request){
|
public function createMarhun($norujukan,HttpRequest $request){
|
||||||
$current = Carbon::now();
|
$current = Carbon::now();
|
||||||
$current = new Carbon();
|
$current = new Carbon();
|
||||||
@@ -82,15 +111,24 @@ class GadaiV2
|
|||||||
$total_nilai_marhun = Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->sum('n_marhun');
|
$total_nilai_marhun = Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->sum('n_marhun');
|
||||||
$total_berat = Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->sum('berat');
|
$total_berat = Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->sum('berat');
|
||||||
|
|
||||||
//query kadar upah baru
|
$kadar_raw = $this->getKadarUpahAnggota($request->nokp, $total_nilai_marhun, $cawangan['group_id']);
|
||||||
$kadar_raw = KadarUpah::where('min','<=',$total_nilai_marhun)->where('max','>=',$total_nilai_marhun)->where('group_id',$cawangan['group_id'])->first();
|
|
||||||
|
if (is_null($kadar_raw)) {
|
||||||
|
Log::error('[BLOCKED] Kadar upah tidak dijumpai', [
|
||||||
|
'nokp' => $request->nokp,
|
||||||
|
'total_nilai_marhun' => $total_nilai_marhun,
|
||||||
|
'group_id' => $cawangan['group_id'],
|
||||||
|
]);
|
||||||
|
throw new \Exception("Kadar upah tidak dijumpai, transaksi dibatalkan!");
|
||||||
|
}
|
||||||
|
|
||||||
|
// $kadar_raw = 0.00 (ahli) akan lepas ke sini dan diteruskan
|
||||||
|
|
||||||
|
|
||||||
// query kadar upah lama
|
// query kadar upah lama
|
||||||
// $kadar_raw = KadarUpah::where('min','<=',$total_nilai_marhun)->where('max','>=',$total_nilai_marhun)->first();
|
// $kadar_raw = KadarUpah::where('min','<=',$total_nilai_marhun)->where('max','>=',$total_nilai_marhun)->first();
|
||||||
|
|
||||||
$onepercentservices = new Calculation();
|
$onepercentservices = new Calculation();
|
||||||
$keuntungan = $onepercentservices->kiraanKeuntunganSebenar($request->pinjaman,$total_nilai_marhun,$kadar_raw['kadarujrah'],$margin_pinjam);
|
$keuntungan = $onepercentservices->kiraanKeuntunganSebenar($request->pinjaman,$total_nilai_marhun,$kadar_raw,$margin_pinjam);
|
||||||
// $upah1 = $request->pinjaman * ($kadar_raw['kadarupdah']/100);
|
// $upah1 = $request->pinjaman * ($kadar_raw['kadarupdah']/100);
|
||||||
// $upah6 = $upah1 * 6;
|
// $upah6 = $upah1 * 6;
|
||||||
// $upah12 = $upah1 * 12;
|
// $upah12 = $upah1 * 12;
|
||||||
@@ -105,7 +143,7 @@ class GadaiV2
|
|||||||
|
|
||||||
$hargajualan = $request->pinjaman + $upah12;
|
$hargajualan = $request->pinjaman + $upah12;
|
||||||
|
|
||||||
$akrual = $this->kiraupahTawarruqStokAuditUjrahOnePercent(0.5,0,$kadar_raw['kadarujrah'],$request->pinjaman,$total_nilai_marhun,$margin_pinjam);
|
$akrual = $this->kiraupahTawarruqStokAuditUjrahOnePercent(0.5,0,$kadar_raw,$request->pinjaman,$total_nilai_marhun,$margin_pinjam);
|
||||||
|
|
||||||
$gadai = Gadai::on($cawangan['mysql'])
|
$gadai = Gadai::on($cawangan['mysql'])
|
||||||
->where('norujukan','=',$norujukan)
|
->where('norujukan','=',$norujukan)
|
||||||
@@ -113,7 +151,7 @@ class GadaiV2
|
|||||||
'nilaimarhun' => $total_nilai_marhun,
|
'nilaimarhun' => $total_nilai_marhun,
|
||||||
'berat'=> $total_berat,
|
'berat'=> $total_berat,
|
||||||
'pinjaman' => $request->pinjaman,
|
'pinjaman' => $request->pinjaman,
|
||||||
'kadarupah' => $kadar_raw['kadarujrah'],
|
'kadarupah' => $kadar_raw,
|
||||||
'marhun' => $request->marhun,
|
'marhun' => $request->marhun,
|
||||||
'percentpinj' => $margin_pinjam,
|
'percentpinj' => $margin_pinjam,
|
||||||
'teller' => $request->teller,
|
'teller' => $request->teller,
|
||||||
@@ -134,7 +172,7 @@ class GadaiV2
|
|||||||
'upahdibayar' => 0.00,
|
'upahdibayar' => 0.00,
|
||||||
'tempohbayar' => 0.00,
|
'tempohbayar' => 0.00,
|
||||||
'lelong_tawarruq' => 1,
|
'lelong_tawarruq' => 1,
|
||||||
'kadarujrah' => $kadar_raw['kadarujrah'],
|
'kadarujrah' => $kadar_raw,
|
||||||
'ujrah' => $ujrah,
|
'ujrah' => $ujrah,
|
||||||
'onepercent' => $onepercent,
|
'onepercent' => $onepercent,
|
||||||
'margin_semasa' => $margin_pinjam,
|
'margin_semasa' => $margin_pinjam,
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App;
|
namespace App;
|
||||||
|
|
||||||
|
use App\QueryBuilders\TransactionOnlineBuilder;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
class TransactionOnline extends Model
|
class TransactionOnline extends Model
|
||||||
@@ -24,4 +25,14 @@ class TransactionOnline extends Model
|
|||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
// protected $hidden = [];
|
// protected $hidden = [];
|
||||||
|
|
||||||
|
public function cawangan()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(Cawangan::class, 'kodcaw', 'kodcaw');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function newEloquentBuilder($query)
|
||||||
|
{
|
||||||
|
return new TransactionOnlineBuilder($query);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-3
@@ -1,7 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'excluded_cawangan' => [
|
'excluded_cawangan' => []
|
||||||
'lahad datu',
|
|
||||||
]
|
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class CreateApprovalWithdrawal extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::create('approval_withdrawal', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->char('kodcaw', 20);
|
||||||
|
$table->string('action', 50);
|
||||||
|
$table->string('pc_name', 100);
|
||||||
|
$table->string('operasi_name', 100)->nullable();
|
||||||
|
$table->decimal('amount', 10, 2)->default(0);
|
||||||
|
$table->string('approval_status',20);
|
||||||
|
$table->timestamp('approval_timestamp')->nullable();
|
||||||
|
$table->integer('gldetail_id_v3')->nullable()->default(0);
|
||||||
|
$table->integer('denopendser_id_v3')->nullable()->default(0);
|
||||||
|
$table->integer('gldetail_id_v2')->nullable()->default(0);
|
||||||
|
$table->integer('denopendser_id_v2')->nullable()->default(0);
|
||||||
|
$table->boolean('updated_serahan_v2')->default(false);
|
||||||
|
$table->boolean('updated_pendahuluan_v3')->default(false);
|
||||||
|
$table->timestamps();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('approval_withdrawal');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
|
class AddTimestampToGldetailTable extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
|
||||||
|
public function getActiveDB(){
|
||||||
|
$config_db = array_keys(config("database.connections"));
|
||||||
|
|
||||||
|
$db_connection = array_filter($config_db,function($connection){
|
||||||
|
try{
|
||||||
|
if($connection == 'mysql7')
|
||||||
|
return false;
|
||||||
|
|
||||||
|
$db = DB::connection($connection)->getPdo();
|
||||||
|
return true;
|
||||||
|
} catch(\Exception $e){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return $db_connection;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
$db_connection = $this->getActiveDB();
|
||||||
|
|
||||||
|
foreach($db_connection as $dbase){
|
||||||
|
Schema::connection($dbase)->table('gldetail', function (Blueprint $table) use($dbase) {
|
||||||
|
|
||||||
|
$dateCreated = Schema::connection($dbase)->hasColumn('gldetail', 'date_created');
|
||||||
|
|
||||||
|
|
||||||
|
if (!$dateCreated) {
|
||||||
|
$table->timestamp('date_created');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+148
@@ -0,0 +1,148 @@
|
|||||||
|
<?php
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
|
class AddHapusAnsuranPropertiesToMohonidTable extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
|
||||||
|
protected $db_connection;
|
||||||
|
|
||||||
|
public function getActiveDB()
|
||||||
|
{
|
||||||
|
$connections = array_keys(config("database.connections"));
|
||||||
|
$excluded = config('database.excluded_connections', ['mysql7']);
|
||||||
|
|
||||||
|
$active = [];
|
||||||
|
|
||||||
|
foreach ($connections as $connection) {
|
||||||
|
if (in_array($connection, $excluded)) {
|
||||||
|
Log::debug("Skipping excluded connection: {$connection}");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
DB::connection($connection)->select('SELECT 1');
|
||||||
|
$active[] = $connection;
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $active;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
$databases = $this->getActiveDB();
|
||||||
|
Log::info("Active databases: " . implode(', ', $databases));
|
||||||
|
foreach ($databases as $database) {
|
||||||
|
Log::info("Migrating database: {$database}");
|
||||||
|
$this->safeAddProperties($database, 'mohonid');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function safeAddProperties($database, $table_name)
|
||||||
|
{
|
||||||
|
// Skip if table doesn't exist
|
||||||
|
if (!Schema::connection($database)->hasTable($table_name)) {
|
||||||
|
Log::warning("Table {$table_name} does not exist in database {$database}. Skipping migration.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Get existing columns once
|
||||||
|
$existing_columns = Schema::connection($database)->getColumnListing($table_name);
|
||||||
|
|
||||||
|
$columns_to_add = [
|
||||||
|
'tagoperasi' => 'boolean',
|
||||||
|
'ansuran' => 'decimal',
|
||||||
|
'masa' => 'time',
|
||||||
|
'operasi' => 'string',
|
||||||
|
'timestamp_approved_by_pc' => 'timestamp',
|
||||||
|
'timestamp_approved_by_operasi' => 'timestamp',
|
||||||
|
];
|
||||||
|
|
||||||
|
// Find missing columns (this was missing!)
|
||||||
|
$missing_columns = array_diff(array_keys($columns_to_add), $existing_columns);
|
||||||
|
|
||||||
|
// Add all missing columns in one schema call
|
||||||
|
if (!empty($missing_columns)) {
|
||||||
|
Schema::connection($database)->table($table_name, function (Blueprint $table) use ($existing_columns) {
|
||||||
|
// Add ansuran column - decimal with default 0
|
||||||
|
if( !in_array('tagoperasi', $existing_columns)) {
|
||||||
|
$table->boolean('tagoperasi')->default(0)->comment('Tag Operasi');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!in_array('ansuran', $existing_columns)) {
|
||||||
|
$table->decimal('ansuran', 10, 2)->default(0.00)->after('pinjaman')->comment('Ansuran Amount');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add masa column - TIME type
|
||||||
|
if (!in_array('masa', $existing_columns)) {
|
||||||
|
$table->time('masa')->nullable()->after('tarikh')->comment('Time period');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add operasi column - string
|
||||||
|
if (!in_array('operasi', $existing_columns)) {
|
||||||
|
$table->string('operasi')->nullable()->comment('Nama Operasi');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add approval timestamp columns (changed from boolean to timestamp)
|
||||||
|
if (!in_array('timestamp_approved_by_pc', $existing_columns)) {
|
||||||
|
$table->timestamp('timestamp_approved_by_pc')->nullable()->after('id')->comment('Time Approved by PC');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!in_array('timestamp_approved_by_operasi', $existing_columns)) {
|
||||||
|
$table->timestamp('timestamp_approved_by_operasi')->nullable()->comment('Time approved by Operasi');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
// Don't fail entire migration for one database
|
||||||
|
Log::error("Migration failed for database {$database}: " . $e->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
$databases = $this->getActiveDB();
|
||||||
|
|
||||||
|
foreach ($databases as $database) {
|
||||||
|
if (Schema::connection($database)->hasTable('mohonid')) {
|
||||||
|
try {
|
||||||
|
Schema::connection($database)->table('mohonid', function (Blueprint $table) use ($database) {
|
||||||
|
// Check each column before dropping
|
||||||
|
if (Schema::connection($database)->hasColumn('mohonid', 'ansuran')) {
|
||||||
|
$table->dropColumn('ansuran');
|
||||||
|
}
|
||||||
|
if (Schema::connection($database)->hasColumn('mohonid', 'masa')) {
|
||||||
|
$table->dropColumn('masa');
|
||||||
|
}
|
||||||
|
if (Schema::connection($database)->hasColumn('mohonid', 'operasi')) {
|
||||||
|
$table->dropColumn('operasi');
|
||||||
|
}
|
||||||
|
if (Schema::connection($database)->hasColumn('mohonid', 'is_approved_by_pc')) {
|
||||||
|
$table->dropColumn('is_approved_by_pc');
|
||||||
|
}
|
||||||
|
if (Schema::connection($database)->hasColumn('mohonid', 'is_approved_by_operasi')) {
|
||||||
|
$table->dropColumn('is_approved_by_operasi');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
\Log::error("Rollback failed for database {$database}: " . $e->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
+122
@@ -0,0 +1,122 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
|
class AddNmJbgUntungPembiayaanColumnsToPalsuTable extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
|
||||||
|
private function getActiveDB() : array
|
||||||
|
{
|
||||||
|
$config_db = array_keys(config("database.connections"));
|
||||||
|
|
||||||
|
$db_connection = array_filter($config_db, function($connection) {
|
||||||
|
try {
|
||||||
|
if ($connection == 'mysql7') {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
DB::connection($connection)->select('SELECT 1');
|
||||||
|
return true;
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return $db_connection ? array_values($db_connection) : [];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
$db_connection = $this->getActiveDB();
|
||||||
|
|
||||||
|
foreach ($db_connection as $dbase) {
|
||||||
|
Schema::connection($dbase)->table('palsu', function (Blueprint $table) use ($dbase) {
|
||||||
|
|
||||||
|
if (!Schema::connection($dbase)->hasColumn('palsu', 'pembiayaan')) {
|
||||||
|
$table->decimal('pembiayaan', 11, 2)->nullable()->comment('Pembiayaan amount');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Schema::connection($dbase)->hasColumn('palsu', 'nilaimarhun')) {
|
||||||
|
$table->decimal('nilaimarhun', 11, 2)->nullable()->comment('Nilai marhun amount');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Schema::connection($dbase)->hasColumn('palsu', 'jbg')) {
|
||||||
|
$table->float('jbg', 4, 2)->nullable()->comment('JBG value');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Schema::connection($dbase)->hasColumn('palsu', 'untung')) {
|
||||||
|
$table->decimal('untung', 11, 2)->nullable()->comment('Untung amount');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Schema::connection($dbase)->hasColumn('palsu', 'untungonepercent')) {
|
||||||
|
$table->decimal('untungonepercent', 11, 2)->nullable()->comment('Satu Persen amount');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Schema::connection($dbase)->hasColumn('palsu', 'untungcajlain')) {
|
||||||
|
$table->decimal('untungcajlain', 11, 2)->nullable()->comment('Caj Lain-Lain amount');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add index and foreign key constraint to existing norujukan column
|
||||||
|
if (Schema::connection($dbase)->hasColumn('palsu', 'norujukan')) {
|
||||||
|
// Add index to norujukan column for better performance
|
||||||
|
$table->index('norujukan');
|
||||||
|
|
||||||
|
// Add foreign key constraint named 'norujukan'
|
||||||
|
$table->foreign('norujukan', 'norujukan')->references('norujukan')->on('gadai');
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
$db_connection = $this->getActiveDB();
|
||||||
|
|
||||||
|
foreach ($db_connection as $dbase) {
|
||||||
|
Schema::connection($dbase)->table('palsu', function (Blueprint $table) use ($dbase) {
|
||||||
|
|
||||||
|
// Drop foreign key constraint and index from norujukan column
|
||||||
|
if (Schema::connection($dbase)->hasColumn('palsu', 'norujukan')) {
|
||||||
|
try {
|
||||||
|
$table->dropForeign('norujukan');
|
||||||
|
echo "Dropped foreign key 'norujukan' on connection '{$dbase}'\n";
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
echo "Warning: Could not drop foreign key 'norujukan' on connection '{$dbase}': " . $e->getMessage() . "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
$table->dropIndex(['norujukan']);
|
||||||
|
echo "Dropped index on 'norujukan' column on connection '{$dbase}'\n";
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
echo "Warning: Could not drop index on 'norujukan' on connection '{$dbase}': " . $e->getMessage() . "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Drop other columns if they exist
|
||||||
|
$columnsToCheck = ['nilaimarhun', 'jbg', 'untung','untungonepercent','untungcajlain', 'pembiayaan'];
|
||||||
|
|
||||||
|
foreach ($columnsToCheck as $column) {
|
||||||
|
if (Schema::connection($dbase)->hasColumn('palsu', $column)) {
|
||||||
|
try {
|
||||||
|
$table->dropColumn($column);
|
||||||
|
echo "Dropped column '{$column}' on connection '{$dbase}'\n";
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
echo "Warning: Could not drop column '{$column}' on connection '{$dbase}': " . $e->getMessage() . "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class CreatePenyelarasanTable extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
|
||||||
|
Schema::create('penyelarasan', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->char('kodcaw', 20);
|
||||||
|
$table->decimal('rugilelong', 10, 2)->default(0);
|
||||||
|
$table->decimal('bakilelong', 10, 2)->default(0);
|
||||||
|
$table->decimal('lain-lain', 10, 2)->default(0);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('penyelarasan');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class AddNotaArccToCustomerTable extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::table('customer', function (Blueprint $table) {
|
||||||
|
$table->string('nota_arcc')->nullable();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::table('customer', function (Blueprint $table) {
|
||||||
|
$table->dropColumn('nota_arcc');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class CreateAnggotaTable extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::create('anggota', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->string('no_anggota')->unique()->nullable(); // No keahlian
|
||||||
|
$table->string('nama');
|
||||||
|
$table->string('noic')->unique(); // IC wajib unik
|
||||||
|
$table->string('no_tel')->nullable();
|
||||||
|
$table->timestamps();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('anggota');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class AddStatusToAnggotaTable extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::table('anggota', function (Blueprint $table) {
|
||||||
|
$table->tinyInteger('status')
|
||||||
|
->default(1)
|
||||||
|
->comment('1 = aktif, 0 = tidak aktif')
|
||||||
|
->after('no_tel');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::table('anggota', function (Blueprint $table) {
|
||||||
|
//
|
||||||
|
$table->dropColumn('status');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class AddTagAnggotaToCustomerTable extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::table('customer', function (Blueprint $table) {
|
||||||
|
$table->boolean('tag_anggota')->default(0)->after('ahli');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::table('customer', function (Blueprint $table) {
|
||||||
|
$table->dropColumn('tag_anggota');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
|
class CreateMohonAnggotaTable extends Migration
|
||||||
|
{
|
||||||
|
// Dapatkan semua sambungan DB aktif (kecuali mysql7 pusat)
|
||||||
|
public function getActiveDB()
|
||||||
|
{
|
||||||
|
$config_db = array_keys(config("database.connections"));
|
||||||
|
|
||||||
|
$db_connection = array_filter($config_db, function($connection) {
|
||||||
|
try {
|
||||||
|
if ($connection == 'mysql7') return false; // skip pusat
|
||||||
|
DB::connection($connection)->getPdo();
|
||||||
|
return true;
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return $db_connection;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Jalankan migration
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
$db_connection = $this->getActiveDB();
|
||||||
|
|
||||||
|
foreach ($db_connection as $dbase) {
|
||||||
|
if (!Schema::connection($dbase)->hasTable('mohon_anggota')) {
|
||||||
|
Schema::connection($dbase)->create('mohon_anggota', function (Blueprint $table) {
|
||||||
|
$table->bigIncrements('id');
|
||||||
|
$table->date('tarikh')->nullable();
|
||||||
|
$table->string('nokp', 20)->nullable();
|
||||||
|
$table->string('nama', 100)->nullable();
|
||||||
|
$table->string('status', 50)->default('MENUNGGU OPERASI');
|
||||||
|
$table->text('komen')->nullable();
|
||||||
|
$table->string('teller', 100)->nullable();
|
||||||
|
$table->string('peloperasi', 100)->nullable();
|
||||||
|
$table->dateTime('datetime_pelulus')->nullable();
|
||||||
|
$table->timestamps();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undur migration
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
$db_connection = $this->getActiveDB();
|
||||||
|
|
||||||
|
foreach ($db_connection as $dbase) {
|
||||||
|
Schema::connection($dbase)->dropIfExists('mohon_anggota');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,20 +1,28 @@
|
|||||||
APP_NAME=Lumen
|
APP_NAME=Lumen
|
||||||
APP_ENV=local
|
APP_ENV=localhost
|
||||||
APP_KEY=WbPGkYNmXZ6ZQplGlvl0iZ7zyW1b09xa
|
APP_KEY=WbPGkYNmXZ6ZQplGlvl0iZ7zyW1b09xa
|
||||||
APP_DEBUG=true
|
APP_DEBUG=true
|
||||||
APP_URL=https://api.arrahn.com.my
|
APP_URL=http://apiujrah.arrahn
|
||||||
APP_TIMEZONE=Asia/Kuala_Lumpur
|
APP_TIMEZONE=Asia/Kuala_Lumpur
|
||||||
|
|
||||||
|
|
||||||
LOG_CHANNEL=stack
|
LOG_CHANNEL=stack
|
||||||
LOG_SLACK_WEBHOOK_URL=
|
LOG_SLACK_WEBHOOK_URL=
|
||||||
|
|
||||||
DB_CONNECTION=mysql
|
#tukar 12-09-23
|
||||||
DB_HOST=database_zone1
|
#DB_CONNECTION=mysql
|
||||||
DB_PORT=3306
|
#DB_HOST=127.0.0.1
|
||||||
DB_DATABASE=arrahn_kb2
|
#DB_PORT=3306
|
||||||
DB_USERNAME=root
|
#DB_DATABASE=arrahn_kb2
|
||||||
DB_PASSWORD=secret
|
#DB_USERNAME=root
|
||||||
|
#DB_PASSWORD=secret
|
||||||
|
|
||||||
|
DB_CONNECTION_36=mysql
|
||||||
|
DB_HOST_36=database_zone1
|
||||||
|
DB_PORT_36=3306
|
||||||
|
DB_DATABASE_36=arrahn_kb2
|
||||||
|
DB_USERNAME_36=root
|
||||||
|
DB_PASSWORD_36=secret
|
||||||
|
|
||||||
DB_CONNECTION_2=mysql
|
DB_CONNECTION_2=mysql
|
||||||
DB_HOST_2=database_zone1
|
DB_HOST_2=database_zone1
|
||||||
@@ -240,6 +248,14 @@ DB_DATABASE_33=arrahn_tmlh
|
|||||||
DB_USERNAME_33=root
|
DB_USERNAME_33=root
|
||||||
DB_PASSWORD_33=secret
|
DB_PASSWORD_33=secret
|
||||||
|
|
||||||
|
|
||||||
|
DB_CONNECTION_34=mysql
|
||||||
|
DB_HOST_34=database_zone2
|
||||||
|
DB_PORT_34=3306
|
||||||
|
DB_DATABASE_34=arrahn_semporna
|
||||||
|
DB_USERNAME_34=root
|
||||||
|
DB_PASSWORD_34=secret
|
||||||
|
|
||||||
DB_CONNECTION_35=mysql
|
DB_CONNECTION_35=mysql
|
||||||
DB_HOST_35=database_zone1
|
DB_HOST_35=database_zone1
|
||||||
DB_PORT_35=3306
|
DB_PORT_35=3306
|
||||||
@@ -247,19 +263,12 @@ DB_DATABASE_35=arrahn_kb1
|
|||||||
DB_USERNAME_35=root
|
DB_USERNAME_35=root
|
||||||
DB_PASSWORD_35=secret
|
DB_PASSWORD_35=secret
|
||||||
|
|
||||||
DB_CONNECTION_34=mysql
|
#DB_CONNECTION_37=mysql
|
||||||
DB_HOST_34=database_zone1
|
#DB_HOST_37=database_zone2
|
||||||
DB_PORT_34=3306
|
#DB_PORT_37=3306
|
||||||
DB_DATABASE_34=arrahn_tm
|
#DB_DATABASE_37=arrahn_ld
|
||||||
DB_USERNAME_34=root
|
#DB_USERNAME_37=root
|
||||||
DB_PASSWORD_34=secret
|
#DB_PASSWORD_37=secret
|
||||||
|
|
||||||
DB_CONNECTION_36=mysql
|
|
||||||
DB_HOST_36=database_zone1
|
|
||||||
DB_PORT_36=3306
|
|
||||||
DB_DATABASE_36=arrahn_kb2
|
|
||||||
DB_USERNAME_36=root
|
|
||||||
DB_PASSWORD_36=secret
|
|
||||||
|
|
||||||
DB_CONNECTION_38=mysql
|
DB_CONNECTION_38=mysql
|
||||||
DB_HOST_38=database_zone2
|
DB_HOST_38=database_zone2
|
||||||
@@ -269,4 +278,9 @@ DB_USERNAME_38=root
|
|||||||
DB_PASSWORD_38=secret
|
DB_PASSWORD_38=secret
|
||||||
|
|
||||||
CACHE_DRIVER=file
|
CACHE_DRIVER=file
|
||||||
QUEUE_CONNECTION=sync
|
QUEUE_CONNECTION=database
|
||||||
|
|
||||||
|
WABOT_API=https://app.wabot.my/api/send.php
|
||||||
|
WABOT_INSTANCES_ID=67B69A20D329B
|
||||||
|
WABOT_TOKEN_KEYS=66a08339284bc
|
||||||
|
ACTIVE_JOB_SERVER=true
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
APP_NAME=Lumen
|
||||||
|
APP_ENV=localhost
|
||||||
|
APP_KEY=WbPGkYNmXZ6ZQplGlvl0iZ7zyW1b09xa
|
||||||
|
APP_DEBUG=true
|
||||||
|
APP_URL=http://apiujrah.arrahn
|
||||||
|
APP_TIMEZONE=Asia/Kuala_Lumpur
|
||||||
|
|
||||||
|
|
||||||
|
LOG_CHANNEL=stack
|
||||||
|
LOG_SLACK_WEBHOOK_URL=
|
||||||
|
|
||||||
|
#tukar 12-09-23
|
||||||
|
#DB_CONNECTION=mysql
|
||||||
|
#DB_HOST=127.0.0.1
|
||||||
|
#DB_PORT=3306
|
||||||
|
#DB_DATABASE=arrahn_kb2
|
||||||
|
#DB_USERNAME=root
|
||||||
|
#DB_PASSWORD=secret
|
||||||
|
|
||||||
|
DB_CONNECTION_2=mysql
|
||||||
|
DB_HOST_2=database_zone_franchise
|
||||||
|
DB_PORT_2=3306
|
||||||
|
DB_DATABASE_2=kguru_kb
|
||||||
|
DB_USERNAME_2=root
|
||||||
|
DB_PASSWORD_2=secret
|
||||||
|
|
||||||
|
DB_CONNECTION_3=mysql
|
||||||
|
DB_HOST_3=database_zone_franchise
|
||||||
|
DB_PORT_3=3306
|
||||||
|
DB_DATABASE_3=Kguru_melor
|
||||||
|
DB_USERNAME_3=root
|
||||||
|
DB_PASSWORD_3=secret
|
||||||
|
|
||||||
|
DB_CONNECTION_4=mysql
|
||||||
|
DB_HOST_4=database_zone_franchise
|
||||||
|
DB_PORT_4=3306
|
||||||
|
DB_DATABASE_4=kguru_tumpat
|
||||||
|
DB_USERNAME_4=root
|
||||||
|
DB_PASSWORD_4=secret
|
||||||
|
|
||||||
|
DB_CONNECTION_7=mysql
|
||||||
|
DB_HOST_7=database_zone_franchise
|
||||||
|
DB_PORT_7=3306
|
||||||
|
DB_DATABASE_7=master_koopguru
|
||||||
|
DB_USERNAME_7=root
|
||||||
|
DB_PASSWORD_7=secret
|
||||||
|
|
||||||
|
CACHE_DRIVER=file
|
||||||
|
QUEUE_CONNECTION=database
|
||||||
|
|
||||||
|
WABOT_API=https://app.wabot.my/api/send.php
|
||||||
|
WABOT_INSTANCES_ID=67B69A20D329B
|
||||||
|
WABOT_TOKEN_KEYS=66a08339284bc
|
||||||
|
ACTIVE_JOB_SERVER=true
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
APP_NAME=Lumen
|
||||||
|
APP_ENV=localhost
|
||||||
|
APP_KEY=WbPGkYNmXZ6ZQplGlvl0iZ7zyW1b09xa
|
||||||
|
APP_DEBUG=true
|
||||||
|
APP_URL=http://apiujrah.arrahn
|
||||||
|
APP_TIMEZONE=Asia/Kuala_Lumpur
|
||||||
|
|
||||||
|
|
||||||
|
LOG_CHANNEL=stack
|
||||||
|
LOG_SLACK_WEBHOOK_URL=
|
||||||
|
|
||||||
|
#tukar 12-09-23
|
||||||
|
#DB_CONNECTION=mysql
|
||||||
|
#DB_HOST=127.0.0.1
|
||||||
|
#DB_PORT=3306
|
||||||
|
#DB_DATABASE=arrahn_kb2
|
||||||
|
#DB_USERNAME=root
|
||||||
|
#DB_PASSWORD=secret
|
||||||
|
|
||||||
|
DB_CONNECTION_3=mysql
|
||||||
|
DB_HOST_3=database-zone-franchise
|
||||||
|
DB_PORT_3=3306
|
||||||
|
DB_DATABASE_3=krk_losong
|
||||||
|
DB_USERNAME_3=root
|
||||||
|
DB_PASSWORD_3=secret
|
||||||
|
|
||||||
|
DB_CONNECTION_4=mysql
|
||||||
|
DB_HOST_4=database-zone-franchise
|
||||||
|
DB_PORT_4=3306
|
||||||
|
DB_DATABASE_4=krk_kemaman
|
||||||
|
DB_USERNAME_4=root
|
||||||
|
DB_PASSWORD_4=secret
|
||||||
|
|
||||||
|
DB_CONNECTION_5=mysql
|
||||||
|
DB_HOST_5=database-zone-franchise
|
||||||
|
DB_PORT_5=3306
|
||||||
|
DB_DATABASE_5=krk_tokbali
|
||||||
|
DB_USERNAME_5=root
|
||||||
|
DB_PASSWORD_5=secret
|
||||||
|
|
||||||
|
DB_CONNECTION_7=mysql
|
||||||
|
DB_HOST_7=database-zone-franchise
|
||||||
|
DB_PORT_7=3306
|
||||||
|
DB_DATABASE_7=master_krk
|
||||||
|
DB_USERNAME_7=root
|
||||||
|
DB_PASSWORD_7=secret
|
||||||
|
|
||||||
|
CACHE_DRIVER=file
|
||||||
|
QUEUE_CONNECTION=database
|
||||||
|
|
||||||
|
WABOT_API=https://app.wabot.my/api/send.php
|
||||||
|
WABOT_INSTANCES_ID=67B69A20D329B
|
||||||
|
WABOT_TOKEN_KEYS=66a08339284bc
|
||||||
|
ACTIVE_JOB_SERVER=true
|
||||||
@@ -0,0 +1,417 @@
|
|||||||
|
id,nama,no_kp,telefon,no_anggota
|
||||||
|
9,WAN ZULKIFLY B WAN MOHAMED,680509035997,010-8995997,1
|
||||||
|
13,HASANAH MOHAMAD,740325036196,1169670585,2
|
||||||
|
14,HASLINA HASBULLAH,630216035760,1111473265,3
|
||||||
|
16,NURWIDAD BINTI AZLY,891020035246,134040289,4
|
||||||
|
19,ZULAILA BINTI CHE MAT,840313035290,1137707081,5
|
||||||
|
25,MUHAMMAD HAFIFI BIN ABD RAHMAN,970403035003,1114884900,6
|
||||||
|
33,FARAHAIN FATIN BINTI MOHD FAUZI,940624035560,169877154,7
|
||||||
|
45,NURHANA BINTI FARHAN,910508125764,1137425769,8
|
||||||
|
51,CHE FAHMI AMIRUL BIN CHE MOHAMAD ZAID,930702035381,1139239497,9
|
||||||
|
53,KELVIN @ MOHD NAJIB BIN KEREAN,900420125525,146750406,10
|
||||||
|
55,MUHAMMAD NAZIF BIN ABDULLAH,840830025541,166892948,11
|
||||||
|
56,SUHAIBAH BINTI JUSOH,931212035148,199128698,12
|
||||||
|
58,ELMA HARFAZLYANA BINTI BAHAR,990827126556,198782708,13
|
||||||
|
59,MARINAH MAZNAH BINTI AMAT @ ABD RAHMAN,961109126102,1128686033,14
|
||||||
|
60,SITI NUR ATHIRAH BINTI ZULKIFLI,980222036786,128108084,15
|
||||||
|
61,MOHAMAD HAFIZUL BIN SANUAR,930619036201,149246474,16
|
||||||
|
63,MUHAMAD MUSLIM BIN MADIRAN,970326035551,179726697,17
|
||||||
|
64,EQA NURFITRIANA BINTI ALIMUDDIN,980202126442,1112085474,18
|
||||||
|
65,ZULKARNAIN BIN MOHD JAMAL,980203126321,1139237021,19
|
||||||
|
68,IRFAHANNA EMIRAH BINTI MOHD ALWI,10506031090,1110311820,20
|
||||||
|
70,NURAIN SYAFIKA BINTI BURHAN,20828030380,179016282,21
|
||||||
|
71,NUR FADHILAH AFIFAH BINTI MOHD NAZMI,980827035268,1117821334,22
|
||||||
|
75,MOHD HAFIZUDDIN BIN HARUN,930822115351,134986658,23
|
||||||
|
76,MUHAMMAD AMMAR FIRDAUS BIN RIDZUAN,970826035291,109253592,24
|
||||||
|
77,MOHAMAD AFDHAL BIN ANWAR,890818075031,012 2017437,25
|
||||||
|
78,NOR AIN BINTI ABDULLAH AZID,920411035470,1131590164,26
|
||||||
|
79,SITI NOORAINI BINTI LAZIM,900617025042,1140794473,27
|
||||||
|
82,FATIN AFIQAH BINTI MOHD SHAH,920322036084,199084590,28
|
||||||
|
84,NUR ASIAH BINTI MUHAMMAD,950324035840,010-4152116,29
|
||||||
|
85,AHMAD NAZRI BIN ISMAIL,700601035039,199179559,30
|
||||||
|
86,TUAN NURHAFIZA BINTI TUAN ZULKIFLI,890624035306,133925842,31
|
||||||
|
87,MOHAMAD NAZMI BIN MOHD SUKRI,980131035999,139245295,32
|
||||||
|
88,AMIRUL HISHAM AIMI BIN CHE AMRAN,940515035545,139622447,33
|
||||||
|
90,MUHAMMAD HAFIZI WAJDI BIN HASSAN,951103036043,1125509097,34
|
||||||
|
91,NUR AMIRAH BINTI ZULKIPLI,980422036502,134863252,35
|
||||||
|
92,WAN NOR AZIAN WAN ABDUL MANAF,740428035008,179142365,36
|
||||||
|
94,SITI MARIAM BINTI MUHAMMAD AZHAR,800123035154,199288851,37
|
||||||
|
95,TUAN NOR DIANA BT TUAN AZHAN,940401035870,193770187,38
|
||||||
|
96,MOHAMMAD IZFAN BIN MAT IZANI,970805036113,137884588,39
|
||||||
|
97,NUR IZZAH IWANI BT MOHD RAZDI,970624035146,179189543,40
|
||||||
|
98,WAN ROZARINA BT WAN ZAIN,801210035368,129616201,41
|
||||||
|
100,SYAHADAL AUZAEAIN BIN ZULKARNAIN,961020855069,169324952,42
|
||||||
|
101,SYARIFAH AL QURAISYAH BT SAYED MUSTAPHA,970319035596,105750423,43
|
||||||
|
106,MOHAMAD HAFIZ BIN CHE SOH,890905035337,199720813,44
|
||||||
|
110,NIK NUREN SYAFIKAH BT NIK MOHAMED NAZRI,950501035164,179406274,45
|
||||||
|
121,SITI FATIMAH SALWANI BT ROSMAN,891222035658,126209004,46
|
||||||
|
122,AHMAD AFKAR BIN MOHD NOOR,10626030957,108847563,47
|
||||||
|
123,MOHD THAQAFI BIN SHAMSUDDIN,920409036669,179162486,48
|
||||||
|
124,NUR AYUNI BINTI AHMAD FAUZI,971101035686,1111433401,49
|
||||||
|
127,NOR AZILA BT CHE SOH,751005035980,1110742242,50
|
||||||
|
153,ALILYHAYATIE BINTI MOHAMED,840101036822,123015583,51
|
||||||
|
162,ERNINGSIH BINTI JUNAIDI,900705125262,1139238537,52
|
||||||
|
165,FATIN NADIA BINTI ZAIDI,920114-03-6346,199405259,53
|
||||||
|
168,ISMAIL BIN ZAKARIA,870210035359,105681405,54
|
||||||
|
171,KAMSAH BIN LINGGISAN,870513496697,146555718,55
|
||||||
|
179,MOHAMAD FAIZ MOHAMED ASRI,850922035543,139938243,56
|
||||||
|
207,RAZAKI BIN MAMAT,770215035851,199178946,57
|
||||||
|
208,HAFEIZAH BT . AB KADIR,790918035426,129897112,58
|
||||||
|
219,MOHD HAYYUL ILTIZAM BIN OTHMAN,851018035793,133929331,59
|
||||||
|
232,MOHD SHAHMIN BIN SA'ARI,861130295121,196438873,60
|
||||||
|
237,MUHAMAD FARIZ BIN ABDULLAH,871004035205,179268308,61
|
||||||
|
245,MUHAMMAD SYAKIRIN BIN MOHD AMINUDDIN,880425065327,129077963,62
|
||||||
|
262,MOHAMED AZMI MAHMOOD,840511035443,199731345,63
|
||||||
|
264,MOHD RAZANI A. RAHIM,670930106593,199099713,64
|
||||||
|
272,NOROSMINI BT. MAT NOOR,821001035984,129493588,65
|
||||||
|
280,WAN MOHAMMAD ARMANI WAN SHARIFUDIN,870119035091,189022406,66
|
||||||
|
312,NORALINA MOHD YUSOFF,630106035380,182269464,67
|
||||||
|
319,NOR'AINI AH KOM BT ABDULLAH,631231675058,1112301671,68
|
||||||
|
320,AZLY BIN OTHMAN,620809035425,199598184,69
|
||||||
|
324,FARIDAH BT. MAMAT,600813035112,139492226,70
|
||||||
|
325,MOHD NAIM MOHAMAD,570805035441,169214503,71
|
||||||
|
327,NUR IZZATI HUSNA BINTI ABD RAHMAN,880417035750,194166991,72
|
||||||
|
328,NORAZERA BINTI ADIN,930513126372,143560193,73
|
||||||
|
343,NOR AZIAH BINTI AHMAD,770716035702,129521803,74
|
||||||
|
354,SITI ANIZA BT HARDAH,890801125848,143751889,75
|
||||||
|
358,RUFAIDA BINTI HAJIHIL,861221125160,178317763,76
|
||||||
|
363,MUHAMMAD AMIN BIN RIFFIN,950626035483,132747420,77
|
||||||
|
364,MUHAMMAD RASIHI BIN ABD KARIM,830401035435,134487279,78
|
||||||
|
366,LIYANA FARIEHA BINTI BAKHORI,960209025136,194622615,79
|
||||||
|
367,AFA HUSNA BINTI MD RADZI,921018025748,103737560,80
|
||||||
|
369,NOR INTAN MARLINI BT NOR AZLAN,851124035914,139269494,81
|
||||||
|
370,NUR AIN SOFIA BINTI ROSLI,960131035018,169409127,82
|
||||||
|
376,MOHD FAIZUL AZAHA BIN UMANAH,840502035417,199992928,83
|
||||||
|
378,MOHD FAIZAL BIN SAFIE,871129295529,139922275,84
|
||||||
|
380,HASWATI BINTI KARIMIN .,820421126036,1119544351,85
|
||||||
|
381,JURINA BINTI MADAYA,880609125224,168178634,86
|
||||||
|
383,NURFARAHIM BT MOHD OMAR,900427035418,1126220662,87
|
||||||
|
386,SHAZRINA BINTI AZLIND,970518125682,128373831,88
|
||||||
|
388,HASANUDDIN BIN HUSAING,980814126339,128376008,89
|
||||||
|
390,SITI ANNA SHAHEERA BINTI ALI,921121125026,146567467,90
|
||||||
|
397,NUR AFRINA BINTI ALIMI,990616065714,137969408,91
|
||||||
|
398,ABDUL HALIM BIN TALIB,901025065707,1111313873,92
|
||||||
|
399,NUR IZZATI BINTI ZULKIFLI,890123035826,178916936,93
|
||||||
|
400,NUR LIANA SYAFIKAH BINTI SALAM,940605035186,148478780,94
|
||||||
|
401,AHMAD SYAHMI BIN AHMAD IZANI,870828035545,1111706484,95
|
||||||
|
402,ROZALMI BIN RAZALI,820101035629,138973594,96
|
||||||
|
403,SHAMSURIATI BINTI HASSAN,880826035444,133605298,97
|
||||||
|
404,MOHD AMIRRUDDIN BIN ARZAMI,840417025943,137868197,98
|
||||||
|
405,MOHD AZIZI BIN AB RASHID,870112295165,148983787,99
|
||||||
|
406,SUHAIRAH BINTI SULIMAN,840615036280,139463484,100
|
||||||
|
407,MOHD FARID BIN IBRAHIM,790406035393,199499704,101
|
||||||
|
408,MOHD FAIZUL BIN HUSSAIN,850910035837,139090920,102
|
||||||
|
409,MOHD KHAIDIR BIN AWANG,880606035899,139742581,103
|
||||||
|
410,NOR AZIAH BINTI AHMAD,770716-03-5702,129521803,104
|
||||||
|
411,FATIHA BINTI CHE ABDULLAH,950102915068,129698210,105
|
||||||
|
412,NIK ABDULLAH BIN NIK MUHAMMAD,630411035213,148125345,106
|
||||||
|
413,MAHNUN BINTI HUSSIN,740530035352,1155061673,107
|
||||||
|
414,SYUKRI BIN ARIFFIN,771218715013,183416221,108
|
||||||
|
415,ARMIN BIN MANDANGAN,981019126449,169369704,109
|
||||||
|
416,ZAID BIN ZAKARIA,670108035479,199179138,110
|
||||||
|
417,MOHD FIRDAUS BIN MAHAMOOD,900202035513,145075069,111
|
||||||
|
419,NORAZANI BINTI HUSAIN,721203035204,179818808,112
|
||||||
|
420,AZURAWATY BINTI AHMAD,840821025208,175800844,113
|
||||||
|
421,WAN RUSLAILE BINTI WAN MOHD ZAIN,841118035644,145060899,114
|
||||||
|
422,NOOR HAFIZI BIN MOHAMAD,890922095155,1133406383,115
|
||||||
|
423,ISMAIL BIN ZAKARIA,870201035359,010 5681405,116
|
||||||
|
424,MOHAMMAD FARIZ BIN MUSTAPHA,850115035969,196017695,117
|
||||||
|
425,ABDUL HAKIM BIN AHMAD AB.NASHIR,901116025225,143464266,118
|
||||||
|
426,AZIRIN BIN RIFFIN,730605035551,199104757,119
|
||||||
|
427,KATHERINE RUMBANG,770421125700,1139025242,120
|
||||||
|
428,MUHAMAD SHAHARIL BIN SIDIK,860104035049,199868018,121
|
||||||
|
429,AMIRAH FARHAN BINTI MOHD ASRI,890711035566,136246932,122
|
||||||
|
430,MUHAMAD HAZLAN BIN RAMLI,940225036443,148030664,123
|
||||||
|
431,MOHD FARIS BIN RUSLEE,870812035081,179119982,124
|
||||||
|
433,RIDHUAN BIN ABDULLAH,840612125739,1116518794,125
|
||||||
|
434,MANIAH BINTI ASUN,840331126284,105897892,126
|
||||||
|
435,NORFISHAH BINTI MUSTAFFA,870406026294,124478826,127
|
||||||
|
436,NOR AZIAM BINTI JUSOH,830621035488,179627003,128
|
||||||
|
437,HAFIZUL RAHMAN BIN MOHD FAUZI,830521035683,129397958,129
|
||||||
|
438,NIK NOR SHAHIRAH BINTI NIK YUSOFF,950923035690,109510068,130
|
||||||
|
439,MOHAMMED SHAZWAN BIN NORDIN,850729036165,1111683685,131
|
||||||
|
440,MOHD REDZUAN BIN SHAARANI,870710085395,179022324,132
|
||||||
|
441,Noor Azlan bin md noor,841201035127,199034008,133
|
||||||
|
442,SITI RAIHAN BINTI MAT SAN,890907115154,197284647,134
|
||||||
|
443,NIK MOHAMAD HAZIM AQMAL BIN NIK ALIM AMIRAH,920609035353,104473383,135
|
||||||
|
445,RAJA NOR AIDAH BINTI RAJA AHMAD,901012065900,139515155,136
|
||||||
|
447,NORLIN BINTI SAIMAN,871205235350,1160575580,137
|
||||||
|
448,MUHAMMAD KHAIRUL BIN ALI,841212035595,179484638,138
|
||||||
|
449,ROSLINA BINTI MOHD RAMLI,820804034326,139824757,139
|
||||||
|
450,NUR AIN FARINA PANAI ABDULLAH,870728125228,146557037,140
|
||||||
|
451,SUZIANA BINTI YUSOF,840822035520,104568684,141
|
||||||
|
452,KAMSAH BIN LINGGISAN,870513 49 6697,014 655 5718,142
|
||||||
|
453,MOHD. RAMDHAN BIN WARIMIN,890430125629,109430138,143
|
||||||
|
454,MUHAMMAD DAUD BIN ABDULLAH,930921017159,1119526732,144
|
||||||
|
455,NIK MUHAMMAD ARASH PUTRA BIN AZIHAN,981109036041,179003770,145
|
||||||
|
456,MUHAMMAD IQABAL ZUEL,831202035533,149404101,146
|
||||||
|
457,MOHD FAHMI BIN MAT LUDIN,801104115567,1121039021,147
|
||||||
|
458,MOHD ARIFIN BIN ISMAIL,680229035095,109262869,148
|
||||||
|
461,MOHD NOR BIN OSMAN,830601035405,129247270,149
|
||||||
|
462,NURFARAHIAH BINTI MAT JUSOH,891028035718,199403985,150
|
||||||
|
463,NURUL NISHA BINTI MUHAMMAD,841218035676,1110948404,151
|
||||||
|
464,MUHAMAD IZZUWAN BIN MD SHUKRI,910607035537,179515004,152
|
||||||
|
465,NORALINA BINTI MOHD YUSOFF,630106-03-5380,018-2269464,153
|
||||||
|
466,NUR AININA BINTI MOHAMMAD,961010036086,1119723793,154
|
||||||
|
467,TUAN MOHD NOR NAZRIM BIN TUAN MOHAMMAD,820527115175,122428020,155
|
||||||
|
469,MUHAMMAD FAQIH AMRI BIN JAILANI,980917035229,166138478,156
|
||||||
|
470,SITI NOORAAINI BINTI DAUD,761026035532,129602691,157
|
||||||
|
471,MOHAMAD DAWAWI BIN IBRAHIM,810215035505,179415892,158
|
||||||
|
472,RAKIAH BINTI YAACOB,590208035476,145177720,159
|
||||||
|
473,ASMA BINTI AHMAD,871129295094,135675063,160
|
||||||
|
474,AHMAD AZIMAN BIN CHE ALIAS,970425035485,1137999991,161
|
||||||
|
475,MOHD SYAHMIE SYAWAL BIN MOHD BAKRI,900503036069,145144451,162
|
||||||
|
476,MARJUNI BIN MOHD ALI,840503126521,1116027090,163
|
||||||
|
477,AINIE HAYATIE HAMAZAH,880122115024,1116168995,164
|
||||||
|
478,MUHAMMAD IZWAN BIN IBRAHIM,890601035127,1129079797,165
|
||||||
|
480,FARIDAH BINTI MAMAT,600813-03-5112,139492226,166
|
||||||
|
481,MOHD SABRI BIN ABDULLAH,530502035069,199813353,167
|
||||||
|
482,MOHD KHALID BIN ABDUL RAHMAN,630807035295,145036476,168
|
||||||
|
483,AZMADI B. HJ. OMAR,681028035093,199803003,169
|
||||||
|
484,RUSMAWATI MAMAT,660827035548,104559409,170
|
||||||
|
485,AZIMAH BT. ABDULLAH,580910035282,018770 4639,171
|
||||||
|
486,MIHAMIDAH BT. HAMAT,680930035552,1127486160,172
|
||||||
|
488,NOR AISAH BT. RAMELI,720723035748,1115469653,173
|
||||||
|
490,RAZAKI B. CHE OMAR,681228035207,148131565,174
|
||||||
|
491,SULAINI BT. JAAFAR @ MAT ZIN,740628035916,199058471,175
|
||||||
|
492,TUAN RAZAK B. TUAN MUDA,670301035817,129695589,176
|
||||||
|
493,AMINUDDIN MD NOR,690217035097,199975353,177
|
||||||
|
494,ROHANA MAEL,711021035730,129249968,178
|
||||||
|
495,WAN NOR AZIAN WAN ABDUL MANAF,720428035008,179142365,179
|
||||||
|
496,ZAILILAH BT. HASSAN,700825035062,189163000,180
|
||||||
|
497,NARWATI BT. LUPIN,740110035874,10416116,181
|
||||||
|
498,CHE SOH B. HASSAN,591010035935,139070565,182
|
||||||
|
499,MOHD EZANEE B. MOHD NOOR,610916035317,199815500,183
|
||||||
|
500,MASTURA MUHAMMAD,761003035214,139856061,184
|
||||||
|
501,HASSAN SHUKRI B. HUSSEIN,660604035049,139026550,185
|
||||||
|
502,MOHD RAMLI B. YAACOB,570601035001,145091165,186
|
||||||
|
504,NIK NOOR MASTURA BT NIK SOH,750607035174,183134464,187
|
||||||
|
506,ROSEMALIZA BT. MUHAMAD,700224035542,199092277,188
|
||||||
|
507,ROSHAFIZA B MAMAT,800619035051,179653635,189
|
||||||
|
508,FATIMAH BTE MAT ZIN,821025036084,139360958,190
|
||||||
|
509,MOHD SAHARUDIN B AB RAHMAN,810310035757,1131056099,191
|
||||||
|
510,KAMARUL IRWAN BIN ABDUL RAZAK,780508035619,199195969,192
|
||||||
|
511,MOHD BIN YAACOB,580925115015,129623355,193
|
||||||
|
512,ANIS ISMAIL,720504035190,199105226,194
|
||||||
|
513,HAFEIZAH BT. AB KADIR,790918035246,129897112,195
|
||||||
|
514,MOHD FAIZAL B. MOHAMMAD,790118035305,139521113,196
|
||||||
|
515,KAMRUL HISAN BIN MOHD KAMSON,650127035003,139817419,197
|
||||||
|
516,SAFINAH BT MAHAT,620212065058,189832242,198
|
||||||
|
517,NIK JAWAHIR BT NIK ISMAIL,700602035276,129599499,199
|
||||||
|
518,ASMAH LAILY HUSSEIN,710328035204,139636908,200
|
||||||
|
519,W.M. AZHARI B WAN ABDULLAH,700325035605,139821822,201
|
||||||
|
520,WAN AZKAN BIN WAN HASSAN,660304035653,199825653,202
|
||||||
|
521,ZAITON MAT ADAM,600821035462,179631848,203
|
||||||
|
522,WAN MOHAMED SHARIF B WAN MUSA,540704035365,199115365,204
|
||||||
|
523,RAMELAH BINTI DERAMAN,650629035046,196953070,205
|
||||||
|
524,NORLY BINTI DERAMAN @ IBRAHIM,691213035190,169243019,206
|
||||||
|
525,MUHAMAD SUKRI BIN SEMAN,740906035335,179702750,207
|
||||||
|
526,ZAILANI YAACOB,681215035179,103346695,208
|
||||||
|
527,AMIRIZA HAMZAH,680919035447,199806158,209
|
||||||
|
528,MUHD NASROM SHAH B. YUSUF,720208035305,199505505,210
|
||||||
|
529,A'SRI CHE ALI,610820035873,1111255604,211
|
||||||
|
530,FARIDAH CHE ALI,690103035478,1139190727,212
|
||||||
|
531,ABDUL RAHMAN ALI,701112086323,129516256,213
|
||||||
|
532,RAMILAN ABDUL RAHMAN,650207035433,199583737,214
|
||||||
|
533,MD AZHARI ABD RAHMAN,640406035111,139676728,215
|
||||||
|
534,NOR FAZILLAWATI MOHAMED,830720035328,199475444,216
|
||||||
|
535,SARINA MOHD ZAIN,700926035096,137617588,217
|
||||||
|
536,ROSELINA MOHD MAHIDDIN,651027035588,129535394,218
|
||||||
|
537,AMRAN MOHAMAD,720417035475,199448955,219
|
||||||
|
538,ROZIANI BT. AHAMED KAMIL,750101039848,011 26403553,220
|
||||||
|
539,MOHD YAMIN ISMAIL,630904035043,199602549,221
|
||||||
|
540,AZIZAH KAMARUL ZAMAN,680615035210,179594611,222
|
||||||
|
541,MOHD FIRDAUS JAMALUDIN,880218035387,129540047,223
|
||||||
|
542,NOR AZLIMAH RAMLI,850708035112,179722326,224
|
||||||
|
543,MOHD AZRUL FAIZAL ABU BAKAR,821105035735,194458020,225
|
||||||
|
544,ABDULLAH ZAWAWI BIN MAMAT,730119035695,145042276,226
|
||||||
|
545,AZIMAT MAMAT,650501035629,148098787,227
|
||||||
|
546,NORHAYATI YAACOB,670110035304,179191617,228
|
||||||
|
547,MOHD NORIKHWAN BIN SHAHIMI,850216035415,179730779,229
|
||||||
|
548,ASHAMDI ASAARI,810910035427,173332616,230
|
||||||
|
549,NIK NABIHAH NIK YUSOFF,880923035956,172989264,231
|
||||||
|
550,MUHAMAD BUKHARI ABD RAHIM,820112035587,129469118,232
|
||||||
|
551,MOHD ZANI MD ZAIN,650519035491,139972365,233
|
||||||
|
552,NURHAIDA ABD SAMAD,821230015194,139321786,234
|
||||||
|
553,MUHAMAD FARKIAMI AB. RAHIM,761216035621,133999602,235
|
||||||
|
554,MOHD FAIZUL AZAHA UMANAH,840502038417,199992928,236
|
||||||
|
555,SAIDITINA AISHAH MAHAMUD,891128065084,139278425,237
|
||||||
|
556,MOHD HAFIZ YAHAYA,820209035567,199087605,238
|
||||||
|
557,AHMAD KHALLIFA MOHD HANAPI,870217035167,179238977,239
|
||||||
|
558,NUR RASHIHAH SALLEH,851117035318,139089829,240
|
||||||
|
559,NIK FADHLINEE NIK MARWAN @ NIK FAUZI,841217035308,129578497,241
|
||||||
|
560,ROSLINA MOHD RAMLI,820804035326,139824757,242
|
||||||
|
561,WAN RAMLAH WAN DERAMAN,770227035840,1125712878,243
|
||||||
|
562,MOHD ROSLAN MOHD ALI,610821035779,146455992,244
|
||||||
|
563,ZANJABILA MOHD SALEH,851020035522,199859436,245
|
||||||
|
564,NORAI MAT DAUD,750607035262,146060678,246
|
||||||
|
565,MARIYANI MUDA,801209035512,129900535,247
|
||||||
|
566,ABDULLAH HAKIM AB. ALIM,821128035885,199497979,248
|
||||||
|
567,NOR HAFIZUDIN MOHAMED,861115296249,179274383,249
|
||||||
|
568,NORMALA MOHD NOOR,850827035270,133267027,250
|
||||||
|
569,SHAHILLA CHE RAZALI,830131075006,145297313,251
|
||||||
|
570,NUR IDAYU MAT NASIR,861008295152,139019799,252
|
||||||
|
571,MOHAMED AZMI MAHMOOD,840511-03-5443,199731345,253
|
||||||
|
572,ABDUL RAZAK OMAR,640822035671,1111929667,254
|
||||||
|
573,MOHD EKHWAN ZAKARIA,880422065567,1151667076,255
|
||||||
|
574,ABDUL HAFIZ NAWAWI,870526025085,176755443,256
|
||||||
|
575,FARAH AWANIS EDRUS,831209035296,129229523,257
|
||||||
|
576,SADEED MUHDHAR MOHD ZAIN,870621035767,139121305,258
|
||||||
|
577,NURUL AINI HARUN,860606296396,1137504434,259
|
||||||
|
578,WAN MOHD RAZIS WAN SUHAIMI,831220035721,139839010,260
|
||||||
|
579,NIK LOKMAN NIK MAN,830209035013,137440221,261
|
||||||
|
580,MOHD SHAHRUL RIDZUAN ABDULLAH,850316035383,126865723,262
|
||||||
|
581,WAN MOHD RIDHUAN WAN MAT LUDIN,861016296219,179717099,263
|
||||||
|
582,MOHAMAD FAIZ MOHAMED ASRI,850922-03-5543,139347720,264
|
||||||
|
583,MUHAMMAD FERDAUS NOOR ABAS,870119065071,179704287,265
|
||||||
|
584,NUR FARAZLIN ROSLI,880611035172,196132336,266
|
||||||
|
585,OTHMAN BIN DAUD,740522035889,139504781,267
|
||||||
|
586,NOOR HAFIZI BIN MOHAMMAD,890922035155,174677645,268
|
||||||
|
587,SITI ZALEHA HARUN,840731036042,1137550567,269
|
||||||
|
588,FATIN FAUZANA BT. MOHD RAMLI,870615035568,1110109118,270
|
||||||
|
589,AZID @ ABDUL AZID BIN SULAIMAN,700618035799,199271623,271
|
||||||
|
590,MOHD SHAFIK AFFANDIE BIN MAMAT,870725035323,173550586,272
|
||||||
|
591,HAZRUL BIN HUSSIN,831219035169,139697822,273
|
||||||
|
592,NUR ADNIN BINTI MOHAMED,830725035298,109333696,274
|
||||||
|
593,SAMSIANA BINTI RAHENG,840808035516,199900575,275
|
||||||
|
594,MOHD FAIZ BIN MOHD WARDI,850817035955,1111617548,276
|
||||||
|
595,MOHD ZAIRY BIN MOHD ROSLI,810118035503,173594115,277
|
||||||
|
596,MOHD ASRI BIN MUKHTAR,791007035681,199721640,278
|
||||||
|
597,NORHAPIZAH BINTI MOHAMMED @ AZIZ,871120035544,199329511,279
|
||||||
|
598,NURUL ZATUR NAJAHAH BT YUNUS,870717065020,132128673,280
|
||||||
|
599,MOHD EZUAN BIN ISMAIL,840324035077,137745031,281
|
||||||
|
600,CHE RUSLI BIN MUHAMMAD,721110035459,139462647,282
|
||||||
|
601,AHMAD AMIN BIN RASHID,850606035525,104515525,283
|
||||||
|
602,MOHD HAFIZ BIN MOHAMMAD,840515035141,129394353,284
|
||||||
|
603,MUZANI BIN IBRAHIM,680518035841,1140297681,285
|
||||||
|
604,WAN AZMEER BIN WAN MAHMOOD,900114035839,133136965,286
|
||||||
|
605,KHAIRUL ANUAR BIN YAACOB,850127035333,199618159,287
|
||||||
|
606,AZHAN BIN MAT,870802035651,199117990,288
|
||||||
|
607,SAKRI BIN MAT NOR,720104036207,129295955,289
|
||||||
|
608,NASRUL HAFEZ B. MAT NASIR,831220035975,1110105975,290
|
||||||
|
609,ARJUNAIDEY AZWAR BIN AB RAHMAN,830113035019,148284946,291
|
||||||
|
610,MOHAMAD AZIZI BIN MOHAMED NOOR,870824295657,013 9109873,292
|
||||||
|
611,MUHAMAD HAFIZ BIN ZAKARIA,871115035873,179156428,293
|
||||||
|
612,MUHAMMAD ARIEZ BIN AZMAN,910504035219,179808962,294
|
||||||
|
613,MOHAMAD RIDZWAN BIN MOHAMAD,920720035749,169357949,295
|
||||||
|
614,ATHIRAH AZRI BINTI AZMI,870619035426,179235024,296
|
||||||
|
615,MOHD ZULFADLI BIN IBRAHIM,860216035481,1129276057,297
|
||||||
|
616,AIDAMARNI BINTI SALLEH,810123035890,139131328,298
|
||||||
|
617,NORMAHWATI BT BELUDTU,840301125854,198405462,299
|
||||||
|
618,NURHUSIN BIN APAN,831010127337,178190102,300
|
||||||
|
619,MUHAMMAD NAFIS B ZAINUDIN,870509035089,194714564,301
|
||||||
|
620,MOHD HAFIZUL FIKRI BIN SIDI MOHAMED NOOR,880422035149,179514823,302
|
||||||
|
621,AHMAD ZULKHAIRI BIN ZULKFLI,890910036289,102911183,303
|
||||||
|
622,MOHD AL-AMIN BIN YUSOFF,870516295487,1133301744,304
|
||||||
|
623,CHE KHAIRUL AZLI CHE HASHIM,920827035829,179008827,305
|
||||||
|
624,MOHD FIRDAUS BIN MOHAMAD,850127035237,139440200,306
|
||||||
|
625,MOHD AYUB BIN SUHAIMI,871231675069,189650520,307
|
||||||
|
626,MD AZWAN BIN NORDIN,900826125883,109313914,308
|
||||||
|
627,MOHD HAFIZ FAHMI BIN SAHAK,871104125355,198955381,309
|
||||||
|
628,SITI MASHITA BINTI MARIJIN,860930495944,019 5324767,310
|
||||||
|
629,RIDZAN NURLINA BT MOHAMED NASIR,850119065698,189160395,311
|
||||||
|
630,MOHAMAD FURQANUL AIZAT BIN FAUZI,900728035593,1120722721,312
|
||||||
|
631,MUHAMMAD IZZUDDIN BIN MOKHTAR,890209035333,199011095,313
|
||||||
|
632,MOHAMAD SHAKIR BIN ABDUL MANAN,901105035591,1110630511,314
|
||||||
|
633,NOOR SUHAILA BINTI IBRAHIM,940423035150,104164407,315
|
||||||
|
634,SITI NORAZNI BINTI HASSAN,900515036058,145268580,316
|
||||||
|
635,MOHD HANIF BIN MAT ROF,811107035721,129637776,317
|
||||||
|
636,ASMARIHAN BINTI AB GHANI,880205035150,1110970931,318
|
||||||
|
637,HADAFI BIN MOHD ZUKIPELI,890302035071,1110104559,319
|
||||||
|
638,MOHD SHAHLAN B. ANUAR,900728035913,179872315,320
|
||||||
|
639,MOHD FAIZAL BIN IBRAHIM,870504295017,194178298,321
|
||||||
|
640,MOHAMMAD KHAIRULNIZAN BIN JUSOF,910218036157,179600102,322
|
||||||
|
641,MUHAMAD HAFIZ SHAR'E BIN HANAFI,940607035497,136749495,323
|
||||||
|
642,ROHAYA BINTI MUHAMAD,620101038014,1117932057,324
|
||||||
|
644,MAHARI BUKHARI BIN MAT,891115035169,145161951,325
|
||||||
|
645,MOHAMAD AZUHAIDIE BIN AHMAD,940801035677,145116331,326
|
||||||
|
646,MOHD ZULKIFLIE BIN MOHD ZAIN,841120035977,139559841,327
|
||||||
|
647,IRMA SYUHADA BT IBRAHIM,840229145446,139403344,328
|
||||||
|
648,MUHAMMAD SHAKIL BIN HAMIDIN,901226035221,179864356,329
|
||||||
|
649,MARIATI BINTI MADAN,850919125118,198122726,330
|
||||||
|
650,NOOR ATIQAH BT AHMAD,881228125268,102025862,331
|
||||||
|
652,WAN MANITA BT HAMAD@ WAN MOHD,890711035662,179545432,332
|
||||||
|
653,WAN NURHAFIZOL BIN WAN MANSOR,850127035739,179676792,333
|
||||||
|
654,LUQMAN HAKIM BIN MOHD YAHAYA,911129035421,193458235,334
|
||||||
|
655,MUHAMAD ASYWAM BIN A'SRI,940908036063,199016835,335
|
||||||
|
656,MOHD HISYAM KHAIRIE BIN MOHD YUSNI,900713035689,132829323,336
|
||||||
|
657,WAN NURUL AMIRA BINTI WAN HARON,881119035132,1110764243,337
|
||||||
|
658,MOHD ZARIM BIN MOHD ZAMRI,930609125147,143595362,338
|
||||||
|
659,MUHAMMAD FAIZUL HAKIMI BIN MUSTAPA,880711035225,197523023,339
|
||||||
|
660,MOHD FAHMIE BIN ZAKARIA,910721036285,1116507469,340
|
||||||
|
661,PG. SITI KADIZAH BINTI PG. ABDULLAH,800705125272,146510936,341
|
||||||
|
662,SAFITERI BINTI TARNO,901121125730,168137928,342
|
||||||
|
663,MUHAMMAD KHAIRUL AMIRIN BIN MOHD ROSLI,940425036165,129536020,343
|
||||||
|
664,NUR FAKHIRA BINTI AHMAD KAMIL,950711035138,149693382,344
|
||||||
|
665,MUHAMMAD HAZIM BIN MOHD ASRI,950310145475,196154087,345
|
||||||
|
666,NURUL HIDAYAH BINTI MUSTAPA@DERAMAN,910729035308,199419472,346
|
||||||
|
667,MOHD MUSTAKIM BIN YUSOFF,850213035911,1110814060,347
|
||||||
|
668,NORIZAN BINTI AWANG,701017035288,1137589963,348
|
||||||
|
669,NAZIRAH BINTI MOHAMED,911116036150,179413710,349
|
||||||
|
670,MOHD NAWITAR BIN MOHD,780825035663,179763812,350
|
||||||
|
671,WAN NORHISHAM BIN WAN JAAFAR,700908035391,197293648,351
|
||||||
|
672,MOHAMAD HAMIRUL BIN HALID,901202146381,195126381,352
|
||||||
|
673,MUNAWIR BIN MD NASIR,931019125045,198449355,353
|
||||||
|
674,MOHD FHAEIS BIN MUHAMMAD,940413035755,187730960,354
|
||||||
|
675,SARIP BIN SALANI,881022125297,168269145,355
|
||||||
|
676,WAN AHMAD KAMAL BIN MOHD NOR,930530036037,173267793,356
|
||||||
|
677,ABDUL MUHAIMIN BIN AHMAD,891218036009,136444757,357
|
||||||
|
678,NUR ALISSYA BINTI MOHD HAZMAN,941128035232,1117806234,358
|
||||||
|
679,DATO' DR WAN ZAWAWI BIN WAN ISMAIL,610613035547,199889217,359
|
||||||
|
680,ABDUL MUHAIMIN BIN ABDULLAH,870129295153,1128005291,360
|
||||||
|
681,FATIN NADIA BINTI ZAIDI,920114036346,199405259,361
|
||||||
|
682,MOHAMMAD ASWAT BIN PATEK MOHD,850514065129,129742514,362
|
||||||
|
683,ASMADI BIN ABDUL WAHED,900702035683,139072135,363
|
||||||
|
684,AHMAD TARZIDIE BIN AB MANAF,851223035055,0112-6018916,364
|
||||||
|
685,NURUL ALIA BINTI MOHAMAD KAMAL,940726035326,105705470,365
|
||||||
|
686,JUNAIDI BIN BAKRI,890128125249,1136662466,366
|
||||||
|
687,ASHIKIN ABDULLAH,590406035258,1111420604,367
|
||||||
|
688,NIK NUREN SYAFIKAH BT NIK MOHAMED NAZRI,950101035164,179406274,368
|
||||||
|
689,NOORHISHAM B. SAMAT @ MAT JURI,751016125447,139449192,369
|
||||||
|
690,NIK MOHD NASIRUDDIN BIN NIK COB,740714036093,148007363,370
|
||||||
|
691,AB AZIZ BIN YUNUS,600410035193,199891913,371
|
||||||
|
692,MOHAMAD HAFIZ BIN CHE SOH,890905035331,199720813,372
|
||||||
|
693,NIK NISREEN BT MUHAMMAD FITRI,961201855068,148471010,373
|
||||||
|
694,FAIZAL BIN MOKTAR,920721125455,1162289550,374
|
||||||
|
695,FATHIAH BT TAIP,921127126396,1133145854,375
|
||||||
|
696,ABD MUHAIMIN BIN TURIDI,920126855015,184664503,376
|
||||||
|
697,MUHAMMAD HIZHAM BIN ZAKARIA,930817035701,179442383,377
|
||||||
|
698,ZALIHA BT MD ZAIN,870215295360,173831225,378
|
||||||
|
699,MOHD FADZLI BIN MOHD NASRAH,950712035797,1160860255,379
|
||||||
|
700,HASWATI BT KARIMIN,820421036036,1119544351,380
|
||||||
|
701,NURATIKAH BINTI AJANI,940111125392,196946450,381
|
||||||
|
702,MOHD FADILLAH BIN MATLIN,930711125549,178958563,382
|
||||||
|
704,NAFISAH BINTI MUHAMADIN,950827125784,189602088,383
|
||||||
|
706,WAN NUR FATIN NATASYA BT W M AZHARI,970113035574,136652264,384
|
||||||
|
707,HAZNINA AINI BINTI HASSAN,880608295176,139973524,385
|
||||||
|
708,MUHAMAD SHAUQI BIN SHAHAPUDIN,931013036439,148340734,386
|
||||||
|
709,NUR FARAHIM BT MOHD OMAR,900427045418,1126220662,387
|
||||||
|
710,NORAZRINA BINTI KAMIN,921214125834,128668241,388
|
||||||
|
711,MOHD AMIRUDDIN BIN AZAMI,840417025942,137868197,389
|
||||||
|
712,SRI NUR FARHANA BINTI KASIM,931114086208,010 8816543,390
|
||||||
|
713,NOR AMYLIA EZATY BT ISMAIL,980315036312,142144227,391
|
||||||
|
714,WAN NOR IZYAN BINTI WAN HISHAM,990415105986,1140201378,392
|
||||||
|
715,U'WAIMAR BIN ZULHAZMI,950819885011,139984700,393
|
||||||
|
716,MUHAMMAD AMMAR BIN ISMAIL,203030737,193517702,394
|
||||||
|
717,AMIR THAQIF THARIY BIN SHAMSUDDIN,980822036069,1114932463,395
|
||||||
|
718,MOHD AIZAD SALIM BIN AGUS SALIM,1126121073,136613176,396
|
||||||
|
719,FADZLYEENA BINTI SAIREN,900204126128,149550642,397
|
||||||
|
720,NURUL AIN IZAZI BINTI ABD AZIZ,10528030056,1112908502,398
|
||||||
|
721,ARMAN SHARIF IBRAHIM BIN HISHAMUDIN,990624106475,129018250,399
|
||||||
|
722,MUHAMMAD AFIQ BIN HAMZAH,910130035045,1159983870,400
|
||||||
|
723,ZULKIFLI BIN AB HAMID,850102035679,179475958,401
|
||||||
|
724,MUHAMAD AIMAN BIN MAZLAN,990808035309,138399913,402
|
||||||
|
725,MOHAMAD HAFIZUDIN BIN ABDUL SATAR,910917035997,139577319,403
|
||||||
|
726,ZULIYANA BINTI TAJUDIN,911117015992,197591920,404
|
||||||
|
727,WAN MUHAMMAD SHAHRIL BIN WAN MOHD FADZLI,970824036039,143342577,405
|
||||||
|
728,MUHAMMAD AIMAN HAKIM BIN MOHD RODHI,961010465075,105116144,406
|
||||||
|
729,WAM MUHAMMAD JAMALUL'AQIL BIN WAN ZAKARIA,961117036035,169315308,407
|
||||||
|
730,MUHAMMAD YAZID BIN OSMAN,20506040041,165276449,408
|
||||||
|
731,PUTERI NUR AISHAH BINTI WAGIMIN,20528010740,177315254,409
|
||||||
|
732,NURFARHANA BINTI ALIRNOR,911112065034,148160691,410
|
||||||
|
733,AHMAD SUHAIL IRFAN BIN ZAMRI,10629030979,129607215,411
|
||||||
|
734,NUR HUSNINA BT LUKMAN,961226035322,199652655,412
|
||||||
|
735,CHE SOH B HASSAN,591010035395,139070565,413
|
||||||
|
736,NUR MUZIERA SHAZRINA BINTI MUHAMAD,1024030736,172604369,414
|
||||||
|
737,FAZILA BINTI TOMAS,951226126794,1169309126,415
|
||||||
|
738,RIDZUAN BIN AMRAN,911118125691,1173376044,416
|
||||||
|
+32
-5
@@ -1,5 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use App\TransactionOnline;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
$router->group(['prefix' => 'api/reports'], function () use ($router) {
|
$router->group(['prefix' => 'api/reports'], function () use ($router) {
|
||||||
$router->group(['namespace' => 'Reports'], function () use ($router) {
|
$router->group(['namespace' => 'Reports'], function () use ($router) {
|
||||||
$router->get('gadaian', ['uses' => 'GadaianController@getSummaryLaporanGadai']);
|
$router->get('gadaian', ['uses' => 'GadaianController@getSummaryLaporanGadai']);
|
||||||
@@ -21,14 +24,38 @@ $router->group(['prefix' => 'api/reports'], function () use ($router) {
|
|||||||
$router->get('rounded/ledger/{kod_cawangan}', ['uses' => 'OnePercentController@getRoundedLejerAm']);
|
$router->get('rounded/ledger/{kod_cawangan}', ['uses' => 'OnePercentController@getRoundedLejerAm']);
|
||||||
$router->get('totalrebate', ['uses' => 'OnePercentController@getTotalRebate']);
|
$router->get('totalrebate', ['uses' => 'OnePercentController@getTotalRebate']);
|
||||||
$router->get('getaccrualincome', ['uses' => 'OnePercentController@getAccruedincome']);
|
$router->get('getaccrualincome', ['uses' => 'OnePercentController@getAccruedincome']);
|
||||||
$router->get('getaccrualincome/all',['uses' => 'OnePercentController@getAllCawanganAccruedIncome']);
|
$router->get('getaccrualincome/all', ['uses' => 'OnePercentController@getAllCawanganAccruedIncome']);
|
||||||
$router->get('getTotalCurrentProfit/{kod_cawangan}', ['uses' => 'OnePercentController@getCurrentProfit']);
|
$router->get('getTotalCurrentProfit/{kod_cawangan}', ['uses' => 'OnePercentController@getCurrentProfit']);
|
||||||
|
|
||||||
$router->get('stokaudit/get',['uses' => 'OnePercentController@getStokAuditBackdate']);
|
$router->get('stokaudit/get', ['uses' => 'OnePercentController@getStokAuditBackdate']);
|
||||||
|
|
||||||
|
$router->get('balancesheets/get', ['uses' => 'BalanceSheetsController@getBalanceSheetsList']);
|
||||||
|
|
||||||
|
$router->get('updateig', ['uses' => 'BalanceSheetsController@insertBalanceSheets']);
|
||||||
|
$router->get('updateigall', ['uses' => 'BalanceSheetsController@updateIGBalanceSheets']);
|
||||||
|
|
||||||
|
$router->get('lelongan', ['uses' => 'LelonganController@getSummaryLaporanLelong']);
|
||||||
|
$router->get('lelongan/{kod_cawangan}', ['uses' => 'LelonganController@getLaporanCawangan']);
|
||||||
|
|
||||||
|
$router->get('aging', ['uses' => 'AgingController@getSummaryLaporanAging']);
|
||||||
|
|
||||||
|
$router->get('outstanding', ['uses' => 'OutstandingController@getSummaryLaporanOutstanding']);
|
||||||
|
|
||||||
|
$router->get('petibesi', ['uses' => 'OutstandingController@getSummaryLaporanPetibesi']);
|
||||||
|
|
||||||
|
$router->get('pelangganbaru', ['uses' => 'AnalisaController@getSummaryLaporanPelangganBaru']);
|
||||||
|
|
||||||
|
$router->get('pelangganaktif', ['uses' => 'AnalisaController@getSummaryLaporanPelangganAktif']);
|
||||||
|
|
||||||
|
$router->get('bakilelongbelumtuntut', ['uses' => 'LelonganController@getSummaryLaporanBakiLelongBelumTuntut']);
|
||||||
|
$router->get('bakilelongbelumtuntut/{kod_cawangan}', ['uses' => 'LelonganController@getLaporanBakiLelongBelumTuntutCawangan']);
|
||||||
|
$router->get('bayaran-online', ['uses' => 'BayaranOnlineController']);
|
||||||
|
$router->get('bayaran-online-detail', ['uses' => 'BayaranOnlineDetailController']);
|
||||||
|
|
||||||
|
$router->get('gadaitebus', ['uses' => 'GadaianController@getSummaryLaporanGadaiTebus']);
|
||||||
|
$router->get('gadaitebusmasa', ['uses' => 'GadaianController@getSummaryLaporanGadaiTebusMasa']);
|
||||||
|
$router->get('gadaitebusmasa/{kod_cawangan}', ['uses' => 'GadaianController@getLaporanGadaiTebusMasaCawangan']);
|
||||||
|
|
||||||
$router->get('balancesheets/get',['uses' => 'BalanceSheetsController@getBalanceSheetsList']);
|
|
||||||
|
|
||||||
$router->get('updateig',['uses' => 'BalanceSheetsController@insertBalanceSheets']);
|
|
||||||
$router->get('updateigall',['uses' => 'BalanceSheetsController@updateIGBalanceSheets']);
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
+47
-1
@@ -59,7 +59,18 @@ $router->group(['prefix'=>'api'], function () use ($router){
|
|||||||
$router->put('customers/information/update/admin', ['uses' => 'CustomerController@customerUpdateAdmin']);
|
$router->put('customers/information/update/admin', ['uses' => 'CustomerController@customerUpdateAdmin']);
|
||||||
$router->get('admin/customers/nokp/search',['uses'=>'CustomerController@showOneCustomerByICAdmin']);
|
$router->get('admin/customers/nokp/search',['uses'=>'CustomerController@showOneCustomerByICAdmin']);
|
||||||
$router->get('customer/blacklist',['uses'=>'CustomerController@blacklistCustomer']);
|
$router->get('customer/blacklist',['uses'=>'CustomerController@blacklistCustomer']);
|
||||||
|
$router->get('customer/anggota',['uses'=>'CustomerController@anggotaKoperasi']);
|
||||||
$router->get('customer/eachcawangan/{ic}',['uses'=>'CustomerController@showCustomerByEachCawangan']);
|
$router->get('customer/eachcawangan/{ic}',['uses'=>'CustomerController@showCustomerByEachCawangan']);
|
||||||
|
$router->put('customers/{noic}/assign-anggota', ['uses' => 'CustomerController@assignAnggota']);
|
||||||
|
|
||||||
|
//arcc
|
||||||
|
$router->get('customer/searchbyname',['uses'=>'CustomerController@searchByName']);
|
||||||
|
// Route::get('/api/customers/searchbyname', [CustomerController::class, 'searchByName']);
|
||||||
|
// $router->put('customers/update/{nokp}', ['uses' => 'CallCenterController@customerUpdate']); //kena tengok api ni
|
||||||
|
// $router->put('customers/update/kaunter/{nokp}/{kodcaw}', ['uses' => 'CallCenterController@customerUpdateKaunter']);
|
||||||
|
$router->put('callcenter/customers/update/{nokp}', ['uses' => 'CallCenterController@customerUpdate']); //kena tengok api ni
|
||||||
|
$router->put('callcenter/customers/update/kaunter/{nokp}/{kodcaw}', ['uses' => 'CallCenterController@customerUpdateKaunter']);
|
||||||
|
|
||||||
|
|
||||||
//Change Password
|
//Change Password
|
||||||
$router->post('changepassword/{kodcaw}/{id}',['uses'=>'CustomerController@changepassword']);
|
$router->post('changepassword/{kodcaw}/{id}',['uses'=>'CustomerController@changepassword']);
|
||||||
@@ -78,6 +89,7 @@ $router->group(['prefix'=>'api'], function () use ($router){
|
|||||||
$router->get('gadai/{noic}',['uses'=>'GadaiController@showOneGadai']);
|
$router->get('gadai/{noic}',['uses'=>'GadaiController@showOneGadai']);
|
||||||
$router->get('gadai/cawangan/{kodcaw}/{tarikh}',['uses'=>'GadaiController@showOneGadaiByCawanganOnly']);
|
$router->get('gadai/cawangan/{kodcaw}/{tarikh}',['uses'=>'GadaiController@showOneGadaiByCawanganOnly']);
|
||||||
$router->get('gadai/norujukan/{norujukan}',['uses'=>'GadaiController@showOneGadaiByNorujukan']);
|
$router->get('gadai/norujukan/{norujukan}',['uses'=>'GadaiController@showOneGadaiByNorujukan']);
|
||||||
|
$router->get('gadai/norujukankodcaw/{kodcaw}/{norujukan}',['uses'=>'GadaiController@showOneGadaiByNorujukanKodcaw']);
|
||||||
$router->get('gadai/norujukan/{kodcaw}/{norujukan}',['uses'=>'GadaiController@showOneGadaibyRujukanAndCawangan']);
|
$router->get('gadai/norujukan/{kodcaw}/{norujukan}',['uses'=>'GadaiController@showOneGadaibyRujukanAndCawangan']);
|
||||||
$router->post('gadai/{kodcaw}',['uses'=>'GadaiController@create']);
|
$router->post('gadai/{kodcaw}',['uses'=>'GadaiController@create']);
|
||||||
$router->post('gadaiold/{kodcaw}',['uses'=>'GadaiController@createold']);
|
$router->post('gadaiold/{kodcaw}',['uses'=>'GadaiController@createold']);
|
||||||
@@ -381,15 +393,20 @@ $router->group(['prefix'=>'api'], function () use ($router){
|
|||||||
$router->get('SenaraiDahLulus/{kodcaw}/{norujukan}',['uses'=>'KelulusanController@listdahlulus']);
|
$router->get('SenaraiDahLulus/{kodcaw}/{norujukan}',['uses'=>'KelulusanController@listdahlulus']);
|
||||||
$router->get('ListLatestLulus/{kodcaw}/{norujukan}',['uses'=>'KelulusanController@listlatestlulus']);
|
$router->get('ListLatestLulus/{kodcaw}/{norujukan}',['uses'=>'KelulusanController@listlatestlulus']);
|
||||||
$router->put('UpdateKelulusan/{kodcaw}/{norujukan}',['uses'=>'KelulusanController@update']);
|
$router->put('UpdateKelulusan/{kodcaw}/{norujukan}',['uses'=>'KelulusanController@update']);
|
||||||
|
$router->put('UpdateKelulusanAnggota/{kodcaw}',['uses'=>'KelulusanController@updateAnggota']);
|
||||||
$router->put('UpdateKelulusanKomen/{kodcaw}/{norujukan}',['uses'=>'KelulusanController@updatekomen']);
|
$router->put('UpdateKelulusanKomen/{kodcaw}/{norujukan}',['uses'=>'KelulusanController@updatekomen']);
|
||||||
|
|
||||||
$router->post('CreateKelulusan/{kodcaw}/{norujukan}/roles/{roles}',['uses'=>'KelulusanController@create']);
|
$router->post('CreateKelulusan/{kodcaw}/{norujukan}/roles/{roles}',['uses'=>'KelulusanController@create']);
|
||||||
|
$router->post('CreateKelulusanAnggota/{kodcaw}/roles/{roles}',['uses'=>'KelulusanController@createKelulusanAnggota']);
|
||||||
$router->post('CreateLulus/{kodcaw}/{norujukan}',['uses'=>'KelulusanController@kepohonancreate']);
|
$router->post('CreateLulus/{kodcaw}/{norujukan}',['uses'=>'KelulusanController@kepohonancreate']);
|
||||||
$router->get('GetLulus/{kodcaw}/',['uses'=>'KelulusanController@kepohonangetteller']);
|
$router->get('GetLulus/{kodcaw}/',['uses'=>'KelulusanController@kepohonangetteller']);
|
||||||
$router->put('UpdateKelulusan/kepohonan/{kodcaw}/{norujukan}',['uses'=>'KelulusanController@updatekepohonankhazanah']);
|
$router->put('UpdateKelulusan/kepohonan/{kodcaw}/{norujukan}',['uses'=>'KelulusanController@updatekepohonankhazanah']);
|
||||||
$router->get('GetLulusAll/{kodcaw}/',['uses'=>'KelulusanController@listkepohonan']);
|
$router->get('GetLulusAll/{kodcaw}/',['uses'=>'KelulusanController@listkepohonan']);
|
||||||
$router->get('ListOperasi/',['uses'=>'KelulusanController@listoperasi']);
|
$router->get('ListOperasi/',['uses'=>'KelulusanController@listoperasi']);
|
||||||
$router->get('ListOperasiKelulusan/',['uses'=>'KelulusanController@listoperasikelulusan']);
|
$router->get('ListOperasiKelulusan/',['uses'=>'KelulusanController@listoperasikelulusan']);
|
||||||
|
$router->get('list/approval/anggota',['uses'=>'KelulusanController@listKelulusanAnggota']);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//API REQUEST TELLER
|
//API REQUEST TELLER
|
||||||
@@ -448,7 +465,11 @@ $router->group(['prefix'=>'api'], function () use ($router){
|
|||||||
$router->get('lookupalasan',['uses' => 'PolisController@LookupAlasan']);
|
$router->get('lookupalasan',['uses' => 'PolisController@LookupAlasan']);
|
||||||
$router->get('polis/laporan',['uses' => 'PolisController@LaporanPolis']);
|
$router->get('polis/laporan',['uses' => 'PolisController@LaporanPolis']);
|
||||||
|
|
||||||
|
//laporanlelong adminportal
|
||||||
|
$router->get('laporan/lelong',['uses' => 'LelongController@LaporanLelong']);
|
||||||
|
$router->get('lookupbatchlel/{kodcaw}',['uses' => 'LelongController@LookupBatchLel']);
|
||||||
|
|
||||||
|
$router->get('palsu/laporan', ['uses' => 'BarangkesController@LaporanBarangKes']);
|
||||||
|
|
||||||
|
|
||||||
//update tagterima Tebus
|
//update tagterima Tebus
|
||||||
@@ -474,6 +495,7 @@ $router->group(['prefix'=>'api'], function () use ($router){
|
|||||||
$router->post('Tuntutbakisimpan/{kodcaw}',['uses'=>'LelongController@simpantuntutbaki']);
|
$router->post('Tuntutbakisimpan/{kodcaw}',['uses'=>'LelongController@simpantuntutbaki']);
|
||||||
$router->put('tuntutbakiupdate/{kodcaw}/{norujukan}',['uses'=>'LelongController@updatetagtbaki']);
|
$router->put('tuntutbakiupdate/{kodcaw}/{norujukan}',['uses'=>'LelongController@updatetagtbaki']);
|
||||||
$router->get('TuntutBakiTarikh/{kodcaw}',['uses'=>'LelongController@showTuntutBakiTarikh']);
|
$router->get('TuntutBakiTarikh/{kodcaw}',['uses'=>'LelongController@showTuntutBakiTarikh']);
|
||||||
|
$router->get('BelumTuntutBakiRangeDate/{kodcaw}',['uses'=>'LelongController@showBelumTuntutBakiRangeDate']);
|
||||||
|
|
||||||
//API KOD PRODUK
|
//API KOD PRODUK
|
||||||
$router->get('getProduct/{kodcaw}',['uses'=>'ProductController@getProduct']); //add 2021-02-11
|
$router->get('getProduct/{kodcaw}',['uses'=>'ProductController@getProduct']); //add 2021-02-11
|
||||||
@@ -655,6 +677,7 @@ $router->group(['prefix'=>'api'], function () use ($router){
|
|||||||
|
|
||||||
//STOKAUDITKHAS
|
//STOKAUDITKHAS
|
||||||
$router->get('stokauditkhas/aktif/{kodcaw}',['uses'=>'StokAuditController@LaporanAuditKhasAktif']);
|
$router->get('stokauditkhas/aktif/{kodcaw}',['uses'=>'StokAuditController@LaporanAuditKhasAktif']);
|
||||||
|
$router->get('stokauditkhasbynorujukan/aktif/{kodcaw}',['uses'=>'StokAuditController@LaporanAuditKhasByNorujukan']);
|
||||||
|
|
||||||
//API BLAST WASAP
|
//API BLAST WASAP
|
||||||
$router->post('blastwasap/{kodcaw}',['uses'=>'StokAuditController@blastwasap']);
|
$router->post('blastwasap/{kodcaw}',['uses'=>'StokAuditController@blastwasap']);
|
||||||
@@ -677,6 +700,26 @@ $router->group(['prefix'=>'api'], function () use ($router){
|
|||||||
/* Endpoint for Account Statements */
|
/* Endpoint for Account Statements */
|
||||||
$router->get('record/accountstatement/{kodcaw}',['uses'=>'TunaiController@getAccStatement']);
|
$router->get('record/accountstatement/{kodcaw}',['uses'=>'TunaiController@getAccStatement']);
|
||||||
|
|
||||||
|
/* Endpoint for Auto Serahan */
|
||||||
|
$router->get('autoserahan/list',['uses'=>'AutoSerahanController@getAutoSerahan']);
|
||||||
|
$router->put('autoserahan/approve',['uses'=>'AutoSerahanController@autoSerahanApproval']);
|
||||||
|
$router->post('autoserahan/delete',['uses'=>'AutoSerahanController@deleteAutoSerahan']);
|
||||||
|
$router->post('autoserahan/create',['uses'=>'AutoSerahanController@createAutoSerahan']);
|
||||||
|
$router->post('autoserahan/delete',['uses'=>'AutoSerahanController@deleteAutoSerahan']);
|
||||||
|
$router->put('autoserahan/pendahuluan',['uses'=>'AutoSerahanController@pendahuluanAutoSerahan']);
|
||||||
|
$router->put('autoserahan/serahan',['uses'=>'AutoSerahanController@serahanAutoSerahan']);
|
||||||
|
$router->put('autoserahan/delete/pendahuluan',['uses'=>'AutoSerahanController@removeAutoPendahuluan']);
|
||||||
|
$router->put('autoserahan/delete/serahan',['uses'=>'AutoSerahanController@removeAutoSerahan']);
|
||||||
|
$router->put('autoserahan/setapproval',['uses'=>'AutoSerahanController@SetApprovalWithdrawal']);
|
||||||
|
$router->get('autoserahan/get',['uses'=>'AutoSerahanController@getAutoSerahanApproval']);
|
||||||
|
$router->get('autoserahan/checkapproval',['uses'=>'AutoSerahanController@checkProsesApproval']);
|
||||||
|
$router->get('autoserahan/allrecord',['uses'=>'AutoSerahanController@getApprovedAutoSerahan']);
|
||||||
|
|
||||||
|
/*Endpoints for Hapus Ansuran*/
|
||||||
|
$router->put('UpdateHapusAnsuran',['uses'=>'KelulusanController@UpdateHapusAnsuranOperasi']);
|
||||||
|
$router->get('getApproval',['uses'=>'KelulusanController@getApproval']);
|
||||||
|
$router->get('getApproval/list',['uses'=>'KelulusanController@getApprovalList']);
|
||||||
|
$router->get('getApproval/laporan',['uses'=>'KelulusanController@getApprovalLaporan']);
|
||||||
});
|
});
|
||||||
|
|
||||||
$router->group(['prefix'=>'e-arrahn'], function () use ($router){
|
$router->group(['prefix'=>'e-arrahn'], function () use ($router){
|
||||||
@@ -870,7 +913,8 @@ $router->group(['prefix'=>'admin'], function () use ($router){
|
|||||||
$router->post('ansuran/delete',['uses'=>'GadaiController@deleteAnsuran']);
|
$router->post('ansuran/delete',['uses'=>'GadaiController@deleteAnsuran']);
|
||||||
$router->get('ansuran/getLatest',['uses'=>'GadaiController@getLatestAdvanceWithoutDelete']);
|
$router->get('ansuran/getLatest',['uses'=>'GadaiController@getLatestAdvanceWithoutDelete']);
|
||||||
$router->get('laporan/imbangdugabackup',['uses' => 'LaporanController@getImbangDugaBackup']);
|
$router->get('laporan/imbangdugabackup',['uses' => 'LaporanController@getImbangDugaBackup']);
|
||||||
|
$router->get('laporan/kelulusan',['uses' => 'LaporanController@getLaporanKelulusan']);
|
||||||
|
$router->get('laporan/kelulusan/list',['uses' => 'LaporanController@getListofKelulusan']);
|
||||||
$router->get('laporan/online',['uses'=>'AdminPageController@LaporanOnline']);
|
$router->get('laporan/online',['uses'=>'AdminPageController@LaporanOnline']);
|
||||||
$router->get('laporan/tuntutbaki',['uses'=>'AdminPageController@LaporanTuntutBaki']);
|
$router->get('laporan/tuntutbaki',['uses'=>'AdminPageController@LaporanTuntutBaki']);
|
||||||
|
|
||||||
@@ -955,4 +999,6 @@ $router->group(['prefix'=>'arcc'], function () use ($router){
|
|||||||
$router->get('bysagnotisjbg2/{kodcaw}/{notisid}/{nokp}',['uses'=>'CallCenterController@bysagnotisjbg2']);
|
$router->get('bysagnotisjbg2/{kodcaw}/{notisid}/{nokp}',['uses'=>'CallCenterController@bysagnotisjbg2']);
|
||||||
$router->put('updatecall/{kodcaw}/{notisid}/{nokp}', ['uses' => 'CallCenterController@updatecall']);
|
$router->put('updatecall/{kodcaw}/{notisid}/{nokp}', ['uses' => 'CallCenterController@updatecall']);
|
||||||
$router->get('bysagnotisjbgcustomer2/{kodcaw}/{notisid}/{nokp}',['uses'=>'CallCenterController@bysagnotisjbgCustomer2']);
|
$router->get('bysagnotisjbgcustomer2/{kodcaw}/{notisid}/{nokp}',['uses'=>'CallCenterController@bysagnotisjbgCustomer2']);
|
||||||
|
$router->get('rekodgadai',['uses'=>'CallCenterController@rekodgadai']);
|
||||||
|
$router->post('rekodgadai-batch',['uses'=>'CallCenterController@rekodgadaiBatch']);
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user