3 Commits

Author SHA1 Message Date
afrina aac29bc199 Merge pull request 'fix: recalculate gadai totals after marhun edits' (#21) from fix/marhun-edit-gadai-totals into main
Build Docker Image / build-backend (push) Successful in 18s
Deploy to Staging / deploy (push) Successful in 17s
Reviewed-on: #21
2026-10-05 10:43:45 +08:00
nurafrinaalimi16 9e73f6ad32 fix: recalculate gadai totals after marhun edits 2026-10-05 10:39:19 +08:00
ISMAIL MASSERAN ff21d82af5 DONE: remove nginx for local docker compose 2026-10-01 13:45:34 +08:00
2 changed files with 46 additions and 38 deletions
+43 -28
View File
@@ -3,6 +3,7 @@
namespace App\Http\Controllers;
use App\Marhun;
use App\Gadai;
use App\Jemas;
use App\Cawangan;
use Illuminate\Http\Request;
@@ -160,39 +161,53 @@ class MarhunController extends Controller
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first();
$old_data = Marhun::on($cawangan['mysql'])->where([['recno','=',$request->recno],['norujukan','=',$norujukan]])->first();
// Lock the parent first so concurrent edits to this SAG are serialized.
(new Marhun)->setConnection($cawangan['mysql'])->getConnection()->transaction(function () use ($cawangan, $norujukan, $request, $harga, $nilai_marhun, $kodcaw, $current) {
Gadai::on($cawangan['mysql'])->where('norujukan', $norujukan)->lockForUpdate()->firstOrFail();
$old_data = Marhun::on($cawangan['mysql'])->where([['recno','=',$request->recno],['norujukan','=',$norujukan]])->firstOrFail();
$marhunToUpdate = [
'karat' => $request->karat,
'marhun' => $request->marhun,
'nota' => $request->nota,
'tag_permata' => $request->tag_permata,
'berat_batu_permata' => $request->berat_batu_permata,
'berat' => $request->berat,
'harga' => $harga['harga'],
'n_marhun' => $nilai_marhun,
'bil' => $request->kuantiti,
];
$marhunToUpdate = [
'karat' => $request->karat,
'marhun' => $request->marhun,
'nota' => $request->nota,
'tag_permata' => $request->tag_permata,
'berat_batu_permata' => $request->berat_batu_permata,
'berat' => $request->berat,
'harga' => $harga['harga'],
'n_marhun' => $nilai_marhun,
'bil' => $request->kuantiti,
];
// Set value berat_batu_permata to null if value passed is null
if($marhunToUpdate['berat_batu_permata'] == '') {
$marhunToUpdate['berat_batu_permata'] = null;
};
// Set value berat_batu_permata to null if value passed is null
if($marhunToUpdate['berat_batu_permata'] == '') {
$marhunToUpdate['berat_batu_permata'] = null;
};
$jemas = Marhun::on($cawangan['mysql'])->where([['recno','=',$request->recno],['norujukan','=',$norujukan]])->update($marhunToUpdate);
$jemas = Marhun::on($cawangan['mysql'])->where([['recno','=',$request->recno],['norujukan','=',$norujukan]])->update($marhunToUpdate);
$new_data = Marhun::on($cawangan['mysql'])->where([['recno','=',$request->recno],['norujukan','=',$norujukan]])->first();
// Recalculate from every item belonging to this SAG, after the edit.
$totals = Marhun::on($cawangan['mysql'])->where('norujukan', $norujukan)
->selectRaw('COALESCE(SUM(berat), 0) AS total_berat, COALESCE(SUM(n_marhun), 0) AS total_nilai, COALESCE(SUM(bil), 0) AS total_kuantiti')
->first();
Gadai::on($cawangan['mysql'])->where('norujukan', $norujukan)->update([
'berat' => $totals->total_berat,
'nilaimarhun' => $totals->total_nilai,
'kuantiti' => $totals->total_kuantiti,
]);
$audit = new Audit();
$audit->users = $request->teller;
$audit->actions = 'Ubah Marhun';
$audit->norujukan = $norujukan;
$audit->old_data = $old_data;
$audit->new_data = $new_data;
$audit->kodcaw = $kodcaw;
$audit->created_at = $current;
$audit->updated_at = $current;
$audit->save();
$new_data = Marhun::on($cawangan['mysql'])->where([['recno','=',$request->recno],['norujukan','=',$norujukan]])->first();
$audit = new Audit();
$audit->users = $request->teller;
$audit->actions = 'Ubah Marhun';
$audit->norujukan = $norujukan;
$audit->old_data = $old_data;
$audit->new_data = $new_data;
$audit->kodcaw = $kodcaw;
$audit->created_at = $current;
$audit->updated_at = $current;
$audit->save();
});
return response('Edit Successfully', 200);
}
+3 -10
View File
@@ -5,6 +5,8 @@ services:
dockerfile: docker/php/Dockerfile
target: development
working_dir: /var/www/html
ports:
- "8080:8000"
volumes:
- ./:/var/www/html:cached
environment:
@@ -12,16 +14,7 @@ services:
APP_DEBUG: "true"
depends_on:
- mysql
web:
image: nginx:1.25-alpine
ports:
- "8080:80"
volumes:
- ./:/var/www/html:cached
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
depends_on:
- app
command: ["php", "-S", "0.0.0.0:8000", "-t", "public"]
mysql:
image: mysql:8.0