From 97f8a2579df2d973d26661c5d6e85971c326f51f Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Wed, 22 Nov 2023 15:06:37 +0700 Subject: [PATCH] update form dan perhitungan data hasil klaim dan sisa dana ksl --- DataTables/KlaimJamkrindoDataTable.php | 12 +- ...16_032929_create_klaim_jamkrindo_table.php | 8 +- ...est.php => StoreKlaimJamkrindoRequest.php} | 27 ++-- .../UpdateKlaimJamkrindoRequest.php | 74 +++++++++++ .../KlaimJamkrindo/KlaimJamkrindoModal.php | 27 ++-- .../klaim-jamkrindo-modal.blade.php | 123 +++++++++++++++++- .../klaim_jamkrindo/index.blade.php | 47 ++++++- 7 files changed, 285 insertions(+), 33 deletions(-) rename Http/Requests/KlaimJamkrindo/{KlaimJamkrindoRequest.php => StoreKlaimJamkrindoRequest.php} (69%) create mode 100644 Http/Requests/KlaimJamkrindo/UpdateKlaimJamkrindoRequest.php diff --git a/DataTables/KlaimJamkrindoDataTable.php b/DataTables/KlaimJamkrindoDataTable.php index 56eb390..beebe3b 100644 --- a/DataTables/KlaimJamkrindoDataTable.php +++ b/DataTables/KlaimJamkrindoDataTable.php @@ -45,13 +45,13 @@ return $row->jumlah_debitur_surat.'/'.$row->jumlah_debitur_excel; }) ->editColumn('dana_hasil_klaim', function ($row) { - return @rupiah($row->dana_hasil_klaim); + return $this->rupiah($row->dana_hasil_klaim); }) ->editColumn('nilai_penyelesaian', function ($row) { - return @rupiah($row->nilai_penyelesaian).' / '.$row->jumlah_debitur_penyelesaian; + return $this->rupiah($row->nilai_penyelesaian).' / '.$row->jumlah_debitur_penyelesaian; }) ->editColumn('sisa_dana_ksl', function ($row) { - return @rupiah($row->sisa_dana_ksl).' / '.$row->jumlah_debitur_sis_ksl; + return $this->rupiah($row->sisa_dana_ksl).' / '.$row->jumlah_debitur_sis_ksl; }) ->editColumn('is_detail_debitur', function ($row) { return $row->is_detail_debitur ? 'Ada' : 'Tidak Ada'; @@ -59,10 +59,14 @@ ->editColumn('updated_at', function ($row) { return $row->updated_at->locale('id')->translatedFormat('d F Y H:i:s'); })->rawColumns(['action'])->addColumn('action', function ($klaim_jamkrindo) { - return view('writeoff::parameter.klaim_jamkrindo._actions', compact('klaim_jamkrindo')); + return view('writeoff::pencatatan.klaim_jamkrindo._actions', compact('klaim_jamkrindo')); })->setRowId('id'); } + private function rupiah($expression){ + return "Rp. ".number_format($expression, 2, ',', '.'); + } + /** * Get the query source of dataTable. */ diff --git a/Database/Migrations/2023_11_16_032929_create_klaim_jamkrindo_table.php b/Database/Migrations/2023_11_16_032929_create_klaim_jamkrindo_table.php index f0356ad..fec509f 100644 --- a/Database/Migrations/2023_11_16_032929_create_klaim_jamkrindo_table.php +++ b/Database/Migrations/2023_11_16_032929_create_klaim_jamkrindo_table.php @@ -19,11 +19,11 @@ $table->float('dana_hasil_klaim', 15, 2); $table->float('nilai_penyelesaian', 15, 2); $table->integer('jumlah_debitur_penyelesaian', false, true); - $table->float('sisa_dana_ksl', 15, 2); - $table->integer('jumlah_debitur_sisa_ksl', false, true); - $table->char('is_detail_debitur', 1)->default('A'); + $table->float('sisa_dana_ksl', 15, 2)->default(0)->nullable(); + $table->integer('jumlah_debitur_sisa_ksl', false, true)->default(0)->nullable(); + $table->boolean('is_detail_debitur')->default(false); $table->string('keterangan')->nullable(); - $table->char('status', 1)->default('A'); + $table->boolean('status')->default(true)->nullable(); $table->timestamps(); $table->timestamp('authorized_at')->nullable(); $table->char('authorized_status', 1)->nullable(); diff --git a/Http/Requests/KlaimJamkrindo/KlaimJamkrindoRequest.php b/Http/Requests/KlaimJamkrindo/StoreKlaimJamkrindoRequest.php similarity index 69% rename from Http/Requests/KlaimJamkrindo/KlaimJamkrindoRequest.php rename to Http/Requests/KlaimJamkrindo/StoreKlaimJamkrindoRequest.php index f5d512b..f0061d4 100644 --- a/Http/Requests/KlaimJamkrindo/KlaimJamkrindoRequest.php +++ b/Http/Requests/KlaimJamkrindo/StoreKlaimJamkrindoRequest.php @@ -8,7 +8,7 @@ use Illuminate\Validation\Validator; use Symfony\Component\HttpFoundation\JsonResponse; - class KlaimJamkrindoRequest extends FormRequest + class StoreKlaimJamkrindoRequest extends FormRequest { /** * Determine if the user is authorized to make this request. @@ -31,14 +31,14 @@ 'tanggal_rtgs_masuk' => 'required|date', 'jumlah_debitur_surat' => 'required|integer', 'jumlah_debitur_excel' => 'required|integer', - 'dana_hasil_klaim' => 'required|float', - 'nilai_penyelesaian' => 'required|float', + 'dana_hasil_klaim' => 'required|numeric', + 'nilai_penyelesaian' => 'required|numeric', 'jumlah_debitur_penyelesaian' => 'required|integer', - 'sisa_dana_ksl' => 'required|float', - 'jumlah_debitur_sisa_ksl' => 'required|integer', - 'is_detail_debitur' => 'required|boolean', + 'sisa_dana_ksl' => 'nullable|numeric', + 'jumlah_debitur_sisa_ksl' => 'nullable|integer', + 'is_detail_debitur' => 'nullable|boolean', 'keterangan' => 'nullable|string', - 'status' => 'required|string', + 'status' => 'nullable|boolean', ]; } @@ -63,7 +63,7 @@ flash($value[0]); } return redirect() - ->route('parameter.branches.index') + ->route('pencatatan.klaim_jamkrindo.index') ->with('error', 'Klaim Jamkrindo created failed.'); } @@ -81,4 +81,15 @@ 'messages' => 'Klaim Jamkrindo created failed.' ], JsonResponse::HTTP_UNPROCESSABLE_ENTITY)); } + + protected function prepareForValidation():void + { + + $this->merge([ + 'dana_hasil_klaim' => str_replace('', '', $this->dana_hasil_klaim), + 'nilai_penyelesaian' => str_replace(',', '', $this->nilai_penyelesaian), + 'sisa_dana_ksl' => $this->dana_hasil_klaim - $this->nilai_penyelesaian, + 'jumlah_debitur_sisa_ksl' => $this->jumlah_debitur_excel - $this->jumlah_debitur_penyelesaian, + ]); + } } diff --git a/Http/Requests/KlaimJamkrindo/UpdateKlaimJamkrindoRequest.php b/Http/Requests/KlaimJamkrindo/UpdateKlaimJamkrindoRequest.php new file mode 100644 index 0000000..947480a --- /dev/null +++ b/Http/Requests/KlaimJamkrindo/UpdateKlaimJamkrindoRequest.php @@ -0,0 +1,74 @@ + + */ + public function rules() + : array + { + return [ + 'tanggal_rtgs_masuk' => 'required|date', + 'jumlah_debitur_surat' => 'required|integer', + 'jumlah_debitur_excel' => 'required|integer', + 'dana_hasil_klaim' => 'required|numeric', + 'nilai_penyelesaian' => 'required|numeric', + 'jumlah_debitur_penyelesaian' => 'required|integer', + 'sisa_dana_ksl' => 'nullable|numeric', + 'jumlah_debitur_sisa_ksl' => 'nullable|integer', + 'is_detail_debitur' => 'nullable|boolean', + 'keterangan' => 'nullable|string', + 'status' => 'nullable|boolean', + ]; + } + + /** + * Configure the validator instance. + */ + public function withValidator(Validator $validator) + : void + { + $validator->after(function (Validator $validator) { + if ($validator->errors()->any()) { + $error = json_decode($validator->errors()->toJson(), true); + foreach ($error as $key => $value) { + flash($value[0]); + } + + return redirect()->route('pencatatan.klaim_jamkrindo.index')->with('error', 'Klaim Jamkrindo updated failed.'); + } + }); + } + + protected function failedValidation(Validator|\Illuminate\Contracts\Validation\Validator $validator) + : JsonResponse + { + $errors = (new ValidationException($validator))->errors(); + + throw new HttpResponseException(response()->json([ + 'success' => false, + 'errors' => $errors, + 'messages' => 'Klaim Jamkrindo updated failed.' + ], JsonResponse::HTTP_UNPROCESSABLE_ENTITY)); + } + } diff --git a/Livewire/KlaimJamkrindo/KlaimJamkrindoModal.php b/Livewire/KlaimJamkrindo/KlaimJamkrindoModal.php index 573949c..e2005fe 100644 --- a/Livewire/KlaimJamkrindo/KlaimJamkrindoModal.php +++ b/Livewire/KlaimJamkrindo/KlaimJamkrindoModal.php @@ -5,10 +5,12 @@ use Illuminate\Support\Facades\DB; use Livewire\Component; use Modules\Writeoff\Entities\KlaimJamkrindo; - use Modules\Writeoff\Http\Requests\KlaimJamkrindo\KlaimJamkrindoRequest; + use Modules\Writeoff\Http\Requests\KlaimJamkrindo\StoreKlaimJamkrindoRequest; + use Modules\Writeoff\Http\Requests\KlaimJamkrindo\UpdateKlaimJamkrindoRequest; class KlaimJamkrindoModal extends Component { + public $id; public $tanggal_rtgs_masuk; public $jumlah_debitur_surat; public $jumlah_debitur_excel; @@ -56,14 +58,15 @@ if ($this->edit_mode) { // Emit a success event with a message - $facility_type = KlaimJamkrindo::find($this->id); - $facility_type->update($data); + print_r($data);exit; + $klaim_jamkrindo = KlaimJamkrindo::find($this->id); + $klaim_jamkrindo->update($data); - $this->dispatch('success', __('Facility Type updated')); + $this->dispatch('success', __('Klaim Jamkrindo updated')); } else { // Emit a success event with a message KlaimJamkrindo::create($data); - $this->dispatch('success', __('New Facility Type created')); + $this->dispatch('success', __('New Klaim Jamkrindo created')); } }); @@ -86,9 +89,9 @@ $this->jumlah_debitur_penyelesaian = $klaim_jamkrindo->jumlah_debitur_penyelesaian; $this->sisa_dana_ksl = $klaim_jamkrindo->sisa_dana_ksl; $this->jumlah_debitur_sisa_ksl = $klaim_jamkrindo->jumlah_debitur_sisa_ksl; - $this->is_detail_debitur = $klaim_jamkrindo->is_detail_debitur; + $this->is_detail_debitur = $klaim_jamkrindo->is_detail_debitur == 1; $this->keterangan = $klaim_jamkrindo->keterangan; - $this->status = $klaim_jamkrindo->status; + $this->status = $klaim_jamkrindo->status == 1; } public function delete($id) @@ -96,7 +99,7 @@ KlaimJamkrindo::destroy($id); // Emit a success event with a message - $this->dispatch('success', 'Facility Type successfully deleted'); + $this->dispatch('success', 'Klaim Jamkrindo successfully deleted'); } public function hydrate() @@ -107,7 +110,13 @@ protected function rules() { - $request = new KlaimJamkrindoRequest(); + + if($this->edit_mode){ + $request = new UpdateKlaimJamkrindoRequest(); + } else{ + $request = new StoreKlaimJamkrindoRequest(); + } + return $request->rules(); } diff --git a/Resources/views/livewire/klaim-jamkrindo/klaim-jamkrindo-modal.blade.php b/Resources/views/livewire/klaim-jamkrindo/klaim-jamkrindo-modal.blade.php index 8c5745d..6475eee 100644 --- a/Resources/views/livewire/klaim-jamkrindo/klaim-jamkrindo-modal.blade.php +++ b/Resources/views/livewire/klaim-jamkrindo/klaim-jamkrindo-modal.blade.php @@ -6,7 +6,7 @@ @@ -66,6 +66,51 @@ window.LaravelDataTables['klaim-jamkrindo-table'].ajax.reload(); }); }); + + Inputmask.extendAliases({ + 'currency': { + autoUnmask: true, + allowPlus: true, + allowMinus: true, + } + }); + + var jumlah_debitur_excel,jumlah_debitur_penyelesaian,nilai_penyelesaian,dana_hasil_klaim; + + $('#jumlah_debitur_penyelesaian').on('keyup', function () { + jumlah_debitur_excel = $("#jumlah_debitur_excel").val(); + jumlah_debitur_penyelesaian = $("#jumlah_debitur_penyelesaian").val(); + $("#jumlah_debitur_sisa_ksl").val(jumlah_debitur_excel - jumlah_debitur_penyelesaian); + }); + + $('#jumlah_debitur_excel').on('keyup', function () { + jumlah_debitur_excel = $("#jumlah_debitur_excel").val(); + jumlah_debitur_penyelesaian = $("#jumlah_debitur_penyelesaian").val(); + if (jumlah_debitur_penyelesaian > 0) { + $("#jumlah_debitur_sisa_ksl").val(jumlah_debitur_excel - jumlah_debitur_penyelesaian); + } + }); + + $('#nilai_penyelesaian').on('keyup', function () { + dana_hasil_klaim = $("#dana_hasil_klaim").val(); + nilai_penyelesaian = $("#nilai_penyelesaian").val(); + nilai_penyelesaian.replace(nilai_penyelesaian, ',', ''); + dana_hasil_klaim.replace(dana_hasil_klaim, ',', ''); + $("#sisa_dana_ksl").val(dana_hasil_klaim - nilai_penyelesaian); + }); + + $('#dana_hasil_klaim').on('keyup',function (){ + dana_hasil_klaim = $("#dana_hasil_klaim").val(); + nilai_penyelesaian = $("#nilai_penyelesaian").val(); + nilai_penyelesaian.replace(nilai_penyelesaian, ',', ''); + dana_hasil_klaim.replace(dana_hasil_klaim, ',', ''); + + if(nilai_penyelesaian > 0){ + $("#sisa_dana_ksl").val(dana_hasil_klaim - nilai_penyelesaian); + } + }) + + @endpush