Merge branch 'production' of bitbucket.org:arrahn-pkb/api_arrahn into hotfix/tunai-add-timestamp

This commit is contained in:
hafifierahman
2024-12-31 00:28:42 +08:00
14 changed files with 169 additions and 184 deletions
-1
View File
@@ -1,4 +1,3 @@
<?php
namespace App;
-43
View File
@@ -1,43 +0,0 @@
<?php
namespace App;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class FailoverTransaction extends Model
{
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'failover_transaction';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'kodcaw',
'teller',
'old_norujukan',
'new_norujukan',
'db_caw',
'db_online',
'status',
'resolve_time',
];
/**
* The attributes that should be cast.
*
* @var array
*/
protected $casts = [
'db_caw' => 'boolean',
'db_online' => 'boolean',
'resolve_time' => 'datetime',
];
}
-30
View File
@@ -1,30 +0,0 @@
<?php
namespace App;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class FailoverTransactionFailed extends Model
{
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'failover_transaction_failed';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'original_id',
'kodcaw',
'norujukan',
'code_error',
'error_message'
];
}
+9 -6
View File
@@ -3111,7 +3111,7 @@ class AdminPageController extends Controller
}
public function AkruKeuntunganSebenar(Request $request){
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$request->kodcaw)->first();
$current = Carbon::now();
@@ -3181,11 +3181,12 @@ class AdminPageController extends Controller
// $total = $sum_keuntungan + $sum_bayaran + $summation_ansuran;
$lastDayPreviousMonth = $tarikh->subMonthsNoOverflow()->endOfMonth()->toDateString();
$get_imbangduga = imbangdugabackup::on($cawangan['mysql'])->where('tarikh',$lastDayPreviousMonth)->first()->toArray();
$get_imbangduga = imbangdugabackup::on($cawangan['mysql'])->where('tarikh',$lastDayPreviousMonth)->first();
$get_imbangduga = optional($get_imbangduga)->toArray() ?? [];
$collection_trans = Transaction::on('mysql7')
->leftJoin('transaksi_keuntungan as trans', function ($join) {
$join->on('transaction.norujukan', '=', 'trans.norujukan');
@@ -3224,7 +3225,9 @@ class AdminPageController extends Controller
return $transaction->trans_type !== 'A';
})->sum('keuntungan_rebet');
$total = $total_ansuran + $total_tebus + $get_imbangduga['keun_sebenar'];
$backdate_keun_sebenar = isset($get_imbangduga['keun_sebenar']) ? $get_imbangduga['keun_sebenar'] : 0;
$total = $total_ansuran + $total_tebus + $backdate_keun_sebenar;
return response()->json($total);
}
+52 -1
View File
@@ -49,10 +49,16 @@ class GadaiController extends Controller
}
public function gadaiTransactionByCawanganAndDay($cawangan_code,$date){
try{
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$cawangan_code)->first();
$gadaiTransaction = Gadai::on($cawangan['mysql'])->where('t_gadai','=',$date)->orderBy('sirig', 'desc')->first();
}catch(\Exception $e){
Log::debug($e);
Log::debug($cawangan_code);
return response()->json('error');
}
return response()->json($gadaiTransaction);
}
@@ -3140,6 +3146,51 @@ class GadaiController extends Controller
$current = Carbon::now();
$current = new Carbon();
if($request->kodcaw == 'GC'){
$transaksi_data = [];
TransaksiKeuntungan::on('mysql7')
->where('tarikh_bayaran', '<=', $daterequest)
->where('kodcaw', $request->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) use ($request) {
$query->where([
['sttebus', '=', ''],
['hargajualan', '<>', null]
])
->orWhere([
['sttebus', '!=', ''],
['t_update', '>', $request->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 response($totalPembiayaan);
}
$transaksi_data = TransaksiKeuntungan::on('mysql7')
->where('tarikh_bayaran' ,'<=', $daterequest)
->where('kodcaw',$request->kodcaw)
+34 -18
View File
@@ -27,6 +27,7 @@ use App\imbangdugalama;
use App\Services\Reports\ImbangDugaService;
use App\Services\Reports\Account\GeneralLedger;
use Illuminate\Support\Facades\Log;
use DateTime;
use Illuminate\Support\Facades\DB;
@@ -50,7 +51,7 @@ class LaporanController extends Controller
$bayaranonline = $bayaranonlinequery->sum('duit_masuk');
$bilbayaranonline = $bayaranonlinequery->count();
$ansurankaunter = TransaksiKeuntungan::on('mysql7')
->leftJoin('transaction as trans', function($join)
{
@@ -108,7 +109,7 @@ class LaporanController extends Controller
$total_keuntunganansuran_kaunter = $keuntunganansuran_kaunter_query->sum('bayaran_keuntungan');
$bil_keuntunganansuran_kaunter = $keuntunganansuran_kaunter_query->count();
// $total_keuntunganansuran = 0;
// if($total_keuntunganansuran_data){
// foreach($total_keuntunganansuran_data as $index=>$total_keuntunganansuranData){
@@ -167,7 +168,7 @@ class LaporanController extends Controller
// ->pluck('transaksi_keuntungan.norujukan');
// dd($total_keuntunganbukanansuran_data_kaunter);
// $gadaiDataKaunter = Gadai::on($cawangan['mysql'])->whereIn('norujukan',$total_keuntunganbukanansuran_data_kaunter)->whereNotNull('hargajualan')->pluck('norujukan');
@@ -245,7 +246,6 @@ class LaporanController extends Controller
$keuntungan_kaunter = $keuntungan_kaunter_query->sum('bayaran_keuntungan');
$bil_keuntungan_kaunter = $keuntungan_kaunter_query->count();
// $keuntungan = 0;
@@ -364,7 +364,7 @@ class LaporanController extends Controller
$panjar_harian = Panjar::on($cawangan['mysql'])->where('tarikh','=',$request->tarikh)->sum('bayaran');
$panjar_bulanan = Panjar::on($cawangan['mysql'])->where([['tarikh','<=',$request->tarikh],['tarikh','>=',$firstDay]])->sum('bayaran');
$panjar_tahunan = Panjar::on($cawangan['mysql'])->where([['tarikh','<=',$request->tarikh],['tarikh','>=',$firstDayYear]])->sum('bayaran');
//e
$tarikhtawarruq = '';
@@ -497,21 +497,37 @@ class LaporanController extends Controller
$daterequest = new Carbon($request->tarikh);
$daterequest->addDays(1);
$bayaranpendahuluan_data = TransaksiKeuntungan::on('mysql7')
->where('tarikh_bayaran' ,'<=', $daterequest)
->where('kodcaw',$request->kodcaw)
->pluck('norujukan');
// $bayaranpendahuluan_data = TransaksiKeuntungan::on('mysql7')
// ->where('tarikh_bayaran' ,'<=', $daterequest)
// ->where('kodcaw',$request->kodcaw)
// ->pluck('norujukan');
$gadaiData = Gadai::on($cawangan['mysql'])->whereIn('norujukan',$bayaranpendahuluan_data)
->where([['sttebus',''],['hargajualan','<>','null']])
->orWhere([['sttebus','!=',''],['t_update','>',$request->tarikh],['hargajualan','<>','null']])
->pluck('norujukan');
// $gadaiData = Gadai::on($cawangan['mysql'])->whereIn('norujukan',$bayaranpendahuluan_data)
// ->where([['sttebus',''],['hargajualan','<>','null']])
// ->orWhere([['sttebus','!=',''],['t_update','>',$request->tarikh],['hargajualan','<>','null']])
// ->pluck('norujukan');
$bayaranpendahuluan = TransaksiKeuntungan::on('mysql7')
->whereIn('norujukan',$gadaiData)
->where('tarikh_bayaran' ,'<=', $daterequest)
->sum('bayaran_pembiayaan');
//$bayaranpendahuluan = TransaksiKeuntungan::on('mysql7')
// ->whereIn('norujukan',$gadaiData)
// ->where('tarikh_bayaran' ,'<=', $daterequest)
// ->sum('bayaran_pembiayaan');
$date = new Carbon($request->tarikh);
$lastDayPreviousMonth = $date->subMonthsNoOverflow()->endOfMonth()->toDateString();
$get_imbangduga = imbangdugabackup::on($cawangan['mysql'])->where('tarikh',$lastDayPreviousMonth)->first()->toArray();
$start = new Carbon($request->tarikh);
$start_date = $start->startOfMonth()->toDateString();
//$general_ledger = new GeneralLedger($request->kodcaw,$start_date,$request->tarikh);
//$bayaran_pendahuluan = $general_ledger->getBayaranPendahuluan();
//$total_bayaran_current = $bayaran_pendahuluan['keluar'] - $bayaran_pendahuluan['masuk'];
// Log::info($bayaran_pendahuluan);
// $bayaranpendahuluan = $get_imbangduga['bayaranpendahuluan'] + $total_bayaran_current;
$bayaranpendahuluan = 0;
//$bayaranpendahuluan = 0;
// $bayaranpendahuluan = 0;
@@ -259,6 +259,7 @@ class LelongController extends Controller
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];
+1 -1
View File
@@ -1977,7 +1977,7 @@ class TebusController extends Controller
/* Keuntungan Lelong */
$upahlelong = Lelong::on($cawangan['mysql'])
->where([['t_jual', '>=', $firstMonth], ['t_jual', '<=', $lastMonth], ['t_jual', '>', '2022-07-24']])
->where([['tagujrah','0'],['t_jual', '>=', $firstMonth], ['t_jual', '<=', $lastMonth], ['t_jual', '>', '2022-07-24']])
->whereYear('t_jual', '=', $currentDate->year)
->sum('bakiupah');
+57 -1
View File
@@ -14,6 +14,7 @@ use App\Tebus;
use App\Transaction;
use App\TransaksiKeuntungan;
use App\WTD;
use App\AkruNet;
use Carbon\Carbon;
class GeneralLedger
@@ -517,6 +518,43 @@ class GeneralLedger
$mulaCarbon = new Carbon($this->mula);
$hinggaCarbon = new Carbon($this->hingga);
if($this->isFullMonth($this->mula,$this->hingga) && $mulaCarbon->month < 10){
$lastDayOfPreviousMonth = $mulaCarbon->subMonth()->endOfMonth();
$balancesheet_previousmonth = imbangdugabackup::on($cawangan['mysql'])->where('tarikh',$lastDayOfPreviousMonth->toDateString())->first()->toArray();
$balancesheet_currentmonth = imbangdugabackup::on($cawangan['mysql'])->where('tarikh',$this->hingga)->first()->toArray();
// dd($lastDayOfPreviousMonth->toDateString(),$this->hingga,$balancesheet_previousmonth['keun_sebenar'],$balancesheet_currentmonth['keun_sebenar']);
$realprofit_previousmonth = ($lastDayOfPreviousMonth->year == $hinggaCarbon->year) ? $balancesheet_previousmonth['keun_sebenar'] : 0;
$realprofit_currentmonth = $balancesheet_currentmonth['keun_sebenar'];
$total_keuntungan_sebenar = $realprofit_currentmonth - $realprofit_previousmonth;
$month = $lastDayOfPreviousMonth->month;
$className_previous = "App\StokAudit{$month}";
$month_current = $hinggaCarbon->month;
$className_current = "App\StokAudit{$month_current}";
$stokaudit_previous = $className_previous::on($cawangan['mysql'])->where('tahun',$lastDayOfPreviousMonth->year);
$stokaudit_current = $className_current::on($cawangan['mysql'])->where('tahun',$hinggaCarbon->year);
$akrunet = AkruNet::on($cawangan['mysql'])->where('bulan',$month_current)->where('tahun',$hinggaCarbon->year)->first()->toArray();
$stokaudit_previous = $stokaudit_previous->sum('upahblmbyar');
$stokaudit_current = $stokaudit_current->sum('upahblmbyar');
// $pend_terakru = $balancesheet_currentmonth['pend_terakru'];
$total = $akrunet['jumlah'] - $stokaudit_current;
$total_keuntungan_semasa = abs($total) - $stokaudit_previous;
$array_keuntungan = ['keuntungan_sebenar' => abs($total_keuntungan_sebenar), 'keuntungan_semasa' => abs($total_keuntungan_semasa)];
return $array_keuntungan;
}
/* Start Keuntungan Sebenar Calculation */
$collection_trans = Transaction::on('mysql7')
->leftJoin('transaksi_keuntungan as trans', function ($join) {
@@ -718,6 +756,24 @@ class GeneralLedger
})->sum($sumtype);
}
private function isFullMonth($startDate,$endDate){
// Parse the dates to Carbon instances
$start = Carbon::parse($startDate);
$end = Carbon::parse($endDate);
// Check if the start date is the first day of the month
$isFirstDay = $start->isSameDay($start->copy()->startOfMonth());
// Check if the end date is the last day of the month
$isLastDay = $end->isSameDay($end->copy()->endOfMonth());
// Check if both dates are in the same month and year
$isSameMonth = $start->isSameMonth($end) && $start->isSameYear($end);
// Return true only if all conditions are met
return $isFirstDay && $isLastDay && $isSameMonth;
}
}
}
+4 -3
View File
@@ -191,7 +191,8 @@ class Penebusan
$bilang_bln = $tempoh - $gadai_data['tempohbayar'];
$tawarruqservices = new V1Calculation();
$keuntungan = $tawarruqservices->kiraanTawarruq($gadai_data['pinjaman'],$gadai_data['kadarupah']);
//$keuntungan = $tawarruqservices->kiraanTawarruq($gadai_data['pinjaman'],$gadai_data['kadarupah']);
$keuntungan = $tawarruqservices->kiraanTawarruq(($gadai_data['pinjaman'] !== null) ? $gadai_data['pinjaman'] : 0,($gadai_data['kadarupah'] !== null) ? $gadai_data['kadarupah'] : 0);
$upahsemasa_raw = $bilang_bln * $keuntungan;
$upah_semasa_round = number_format($upahsemasa_raw,2);
@@ -461,7 +462,7 @@ class Penebusan
//check duplicate
$data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','T')->first();
if(!empty($data)){
return 'duplicate';
return response()->json('duplicate');
}
$gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first();
@@ -604,7 +605,7 @@ class Penebusan
//check duplicate
$data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','AT')->first();
if(!empty($data)){
return 'duplicate';
return response()->json('duplicate');
}
$update_gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array(
+9 -3
View File
@@ -175,8 +175,11 @@ class GadaiV2
$bilang_bln = $tempoh - $gadai_data['tempohbayar'];
$upah = $onepercentservices->kiraanKeuntunganSebenar($gadai_data['pinjaman'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['percentpinj']);
$upahsemasa_raw = $bilang_bln * $upah['keuntungan'];
$upahsemasa_raw = $onepercentservices->getRoundedMethod($upahsemasa_raw);
//$upahsemasa_raw = $bilang_bln * $upah['keuntungan'];
$onepercent = $onepercentservices->getRoundedMethod($bilang_bln * $upah['onepercent']);
$ujrah = $onepercentservices->getRoundedMethod($bilang_bln * $upah['ujrah']);
$upahsemasa_raw = $onepercent + $ujrah;
$upahsemasa_raw = $onepercentservices->getRoundedMethod($upahsemasa_raw);
return $upahsemasa_raw;
}
@@ -201,7 +204,10 @@ class GadaiV2
$upah = $onepercentservices->kiraanKeuntunganRebet($gadai_data['bakipjm'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['margin_semasa']);
$upahrebet_raw = $bilang_bln * $upah['keuntungan'];
//$upahrebet_raw = $bilang_bln * $upah['keuntungan'];
$onepercent = $onepercentservices->getRoundedMethod($bilang_bln * $upah['onepercent']);
$ujrah = $onepercentservices->getRoundedMethod($bilang_bln * $upah['ujrah']);
$upahrebet_raw = $onepercent + $ujrah;
$upahrebet_raw = $onepercentservices->getRoundedMethod($upahrebet_raw);
return $upahrebet_raw;
+2 -2
View File
@@ -489,7 +489,7 @@ class Penebusan
$data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->whereIn('trans_type', ['P', 'T', 'S'])->first();
if(!empty($data)){
return 'duplicate';
return response()->json('duplicate');
}
$ujrah=0;$onepercent=0;$rounded=0;
@@ -655,7 +655,7 @@ class Penebusan
$data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','AT')->first();
if(!empty($data)){
return 'duplicate';
return response()->json('duplicate');
}
$ujrah=0;$onepercent=0;$rounded=0;
@@ -1,39 +0,0 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateFailoverTransactionTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::connection('mysql7')->create('failover_transaction', function (Blueprint $table) {
$table->id();
$table->string('kodcaw',10);
$table->string('teller',255);
$table->string('old_norujukan',50);
$table->string('new_norujukan',50)->nullable();
$table->boolean('db_caw')->default(false); // Boolean for db_caw, default to false
$table->boolean('db_online')->default(false);
$table->enum('status', ['pending', 'resolved', 'failed'])->default('pending'); // Use ENUM for statuses
$table->timestamp('resolve_time')->nullable(); // Timestamp for resolve time, nullable
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::connection('mysql7')->dropIfExists('failover_transaction');
}
}
@@ -1,36 +0,0 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateFailoverTransactionFailedTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('failover_transaction_failed', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('original_id'); // Reference to failover_transaction
$table->string('kodcaw');
$table->string('norujukan');
$table->integer('code_error');
$table->text('error_message')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('failover_transaction_failed');
}
}