Merged in feature/hapus-ansuran-v2 (pull request #340)
Feature/hapus ansuran v2
This commit is contained in:
@@ -3930,4 +3930,11 @@ class GadaiController extends Controller
|
||||
|
||||
return response()->json($view);
|
||||
}
|
||||
|
||||
public function getApprovalFromOperation(Request $request){
|
||||
$ansuranserv = new AnsServ($request->kodcaw);
|
||||
$view = $ansuranserv->getApprovalFromOperation($request);
|
||||
|
||||
return response()->json($view);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ use App\Mohonid;
|
||||
use Carbon\Carbon;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class KelulusanController extends Controller
|
||||
{
|
||||
@@ -298,13 +299,16 @@ public function create(REQUEST $request,$kodcaw,$norujukan,$roles)
|
||||
'tarikh'=> $harini->toDateString(),
|
||||
'mohon' => $request->mohon,
|
||||
'norujukan' => $norujukan,
|
||||
'katalaluan' => '',
|
||||
'katalaluan' => $request->komen,
|
||||
'pinjaman' => $request->pinjaman,
|
||||
'nilaimarhun' => $request->nilaimarhun,
|
||||
'berat' => $request->berat,
|
||||
'margin' => $request->margin,
|
||||
'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);
|
||||
@@ -322,18 +326,24 @@ public function create(REQUEST $request,$kodcaw,$norujukan,$roles)
|
||||
$kelulusan=Mohonid::on($cawangan['mysql'])
|
||||
->where('tarikh','=',$harini->toDateString())
|
||||
->where('norujukan','=',$norujukan)
|
||||
->where('recno','=',$request->recno)
|
||||
->update(array(
|
||||
'katalaluan' => $request->komen,
|
||||
'benar' => '2',
|
||||
'id' => $request->khazanah
|
||||
'id' => $request->khazanah,
|
||||
'timestamp_approved_by_pc' => $harini,
|
||||
));
|
||||
}else{
|
||||
$benar = ($request->tagoperasi == 1) ? 0 : 1;
|
||||
|
||||
$kelulusan=Mohonid::on($cawangan['mysql'])
|
||||
->where('tarikh','=',$harini->toDateString())
|
||||
->where('norujukan','=',$norujukan)
|
||||
->where('recno','=',$request->recno)
|
||||
->update(array(
|
||||
'benar' => '1',
|
||||
'id' => $request->khazanah
|
||||
'benar' => $benar,
|
||||
'id' => $request->khazanah,
|
||||
'timestamp_approved_by_pc' => $harini,
|
||||
));
|
||||
}
|
||||
|
||||
@@ -381,16 +391,30 @@ public function create(REQUEST $request,$kodcaw,$norujukan,$roles)
|
||||
$arraykelulusan = [];
|
||||
|
||||
foreach($cawangan_all as $index=>$cawangan){
|
||||
$kelulusan=Mohon::on($cawangan['mysql'])
|
||||
->where('tarikh','=',$harini->toDateString())
|
||||
->where('masalulus','=','')
|
||||
->where('pelulus','=','operasi')
|
||||
->get();
|
||||
$kelulusan = Mohon::on($cawangan['mysql'])
|
||||
->where('tarikh','=',$harini->toDateString())
|
||||
->where('masalulus','=','')
|
||||
->where('pelulus','=','operasi')
|
||||
->get();
|
||||
|
||||
if(sizeof($kelulusan) != 0){
|
||||
array_push($arraykelulusan,["kelulusanall" => $kelulusan,"cawangan" => $cawangan['details_caw'],"cawangankod" => $cawangan['kodcaw']]);
|
||||
$mohonid_data = Mohonid::on($cawangan['mysql'])
|
||||
->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);
|
||||
}
|
||||
@@ -417,4 +441,76 @@ public function create(REQUEST $request,$kodcaw,$norujukan,$roles)
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ use Carbon\Carbon;
|
||||
use App\imbangdugalama;
|
||||
use App\Services\Reports\ImbangDugaService;
|
||||
use App\Services\Reports\Account\GeneralLedger;
|
||||
use App\Mohonid;
|
||||
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
@@ -1698,4 +1699,47 @@ $date = new Carbon($request->tarikh);
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
+11
-1
@@ -27,7 +27,17 @@ class Mohonid extends Model
|
||||
'nilaimarhun',
|
||||
'berat',
|
||||
'margin',
|
||||
'teller'
|
||||
'teller',
|
||||
'masa',
|
||||
'tagoperasi',
|
||||
'ansuran',
|
||||
'operasi',
|
||||
'timestamp_approved_by_pc',
|
||||
'timestamp_approved_by_operasi',
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
'id' => 'string',
|
||||
];
|
||||
|
||||
/**
|
||||
|
||||
@@ -8,6 +8,8 @@ use App\Tunai;
|
||||
use App\Transaction;
|
||||
use App\TransaksiKeuntungan;
|
||||
use App\Cawangan;
|
||||
use App\Mohon;
|
||||
use App\Mohonid;
|
||||
use App\TransaksiGadai;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\Request;
|
||||
@@ -39,7 +41,14 @@ class AnsuranServices
|
||||
$tarikh = Carbon::now();
|
||||
$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()){
|
||||
Log::debug('Date mismatch: ' . $harisemasa . ' vs ' . $tarikh_request->toDateString());
|
||||
return 'date not equal';
|
||||
}
|
||||
$transaction_gadai = TransaksiGadai::on('mysql7')->where('id',$request->tg_id)->first();
|
||||
@@ -49,8 +58,11 @@ class AnsuranServices
|
||||
return 'wrong teller';
|
||||
}
|
||||
|
||||
$audit->old_data = $transaction_gadai;
|
||||
|
||||
|
||||
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{
|
||||
DB::connection($cawangan['mysql'])->transaction(function () use($cawangan,$request,$transaction_gadai,$harisemasa,$transaction){
|
||||
@@ -91,6 +103,17 @@ class AnsuranServices
|
||||
'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';
|
||||
|
||||
@@ -103,18 +126,6 @@ class AnsuranServices
|
||||
}
|
||||
|
||||
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){
|
||||
@@ -125,5 +136,21 @@ class AnsuranServices
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
+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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
+9
-1
@@ -697,6 +697,13 @@ $router->group(['prefix'=>'api'], function () use ($router){
|
||||
$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){
|
||||
@@ -890,7 +897,8 @@ $router->group(['prefix'=>'admin'], function () use ($router){
|
||||
$router->post('ansuran/delete',['uses'=>'GadaiController@deleteAnsuran']);
|
||||
$router->get('ansuran/getLatest',['uses'=>'GadaiController@getLatestAdvanceWithoutDelete']);
|
||||
$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/tuntutbaki',['uses'=>'AdminPageController@LaporanTuntutBaki']);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user