Files

157 lines
5.8 KiB
PHP

<?php
namespace App\Services\Transaction;
use App\Audit;
use App\Gadai;
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;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
class AnsuranServices
{
/*
//////////////
/// NOTED ///
////////////
1. Pembaharuan untuk Hapus Ansuran.
*/
protected $cawangan = 'KB2';
public function __construct($kodcaw){
$this->cawangan = $kodcaw;
}
public function delete(Request $request): String{
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$this->cawangan)->first();
$tarikh_request = new Carbon($request->tarikh);
$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();
$transaction = Transaction::on('mysql7')->where('id',$transaction_gadai['transaction_id'])->first();
if($transaction['teller'] != $request->teller){
return 'wrong teller';
}
$audit->old_data = $transaction_gadai;
try{
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){
Gadai::on($cawangan['mysql'])->where('norujukan',$request->norujukan)->update(array(
'percentpinj' => $transaction_gadai['percentpinj'],
'bakipjm' => $transaction_gadai['bakipjm'],
'tempoh' => $transaction_gadai['tempoh'],
't_update' => $transaction_gadai['t_update'],
'bakihargajualan' => $transaction_gadai['bakihargajualan'],
'tempohbayar' => $transaction_gadai['tempohbayar'],
'lelong_tawarruq' => $transaction_gadai['lelong_tawarruq'],
'margin_semasa' => $transaction_gadai['margin_semasa'],
'tunggakanujrah' => $transaction_gadai['tunggakanujrah'],
'tunggakanonepercent' => $transaction_gadai['tunggakanonepercent'],
));
$tunai = Tunai::on($cawangan['mysql'])->where('kodlaluan',$request->teller)->where('tarikh',$harisemasa)->first();
$total = $tunai['masuk'] - $transaction['duit_masuk'];
$bakiakhir = $tunai['bakiawal'] - $tunai['keluar'] + $total + $tunai['tambah'] - $tunai['serahan'];
Tunai::on($cawangan['mysql'])->where('tarikh',$harisemasa)->where('kodlaluan',$request->teller)->update(['masuk' => $total,'baki' => $bakiakhir]);
});
}catch(\Exception $e){
DB::connection('mysql7')->rollBack();
Log::debug($e->getMessage());
return 'error';
}
Transaction::on('mysql7')->where('id',$transaction_gadai['transaction_id'])->delete();
TransaksiKeuntungan::on('mysql7')->where('id',$transaction_gadai['transaksiupah_id'])->delete();
TransaksiGadai::on('mysql7')->where('id',$request->tg_id)->update(array(
'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';
});
}catch(\Exception $error){
DB::connection($cawangan['mysql'])->rollBack();
DB::connection('mysql7')->rollBack();
Log::debug($error->getMessage());
return 'error';
}
return 'success';
}
public function getLatestAdvanceWithoutDelete(Request $request){
$tarikh = Carbon::now();
$latest = TransaksiGadai::on('mysql7')->whereDate('created_at',$tarikh->toDateString())->where('norujukan',$request->norujukan)->where('softDelete',0)->latest()->first();
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;
}
}