feat(balance): implementasi service layer untuk balance management

- Menambahkan `AccountBalanceService` dengan transaksi PostgreSQL dan proper error handling.
- Implementasi `BalanceServiceProvider` untuk mendukung dependency injection pattern.
- Registrasi `BalanceServiceProvider` dalam `WebstatementServiceProvider`.
- Penambahan `CAST` ke `DECIMAL(15,2)` untuk kompatibilitas PostgreSQL.
- Perhitungan balance summary mencakup opening balance dan closing balance.
- Agregasi transaksi dengan type casting yang aman.
- Implementasi database transaction handling dengan mekanisme rollback dan commit.
- Logging komprehensif untuk debugging dan audit trail.
- Mendukung balance inquiry berdasarkan tanggal maupun periode tertentu.
- Validasi akun dengan pengecekan `exists` untuk memastikan data valid.
This commit is contained in:
Daeng Deni Mardaeni
2025-08-27 16:22:06 +07:00
parent f324f9e3f6
commit 1ff4035b98
3 changed files with 162 additions and 0 deletions

View File

@@ -0,0 +1,31 @@
<?php
namespace Modules\Webstatement\Providers;
use Illuminate\Support\ServiceProvider;
use Modules\Webstatement\Services\AccountBalanceService;
class BalanceServiceProvider extends ServiceProvider
{
/**
* Register the service provider.
*
* @return void
*/
public function register(): void
{
$this->app->singleton(AccountBalanceService::class, function ($app) {
return new AccountBalanceService();
});
}
/**
* Get the services provided by the provider.
*
* @return array<string>
*/
public function provides(): array
{
return [AccountBalanceService::class];
}
}

View File

@@ -57,6 +57,7 @@ class WebstatementServiceProvider extends ServiceProvider
{
$this->app->register(EventServiceProvider::class);
$this->app->register(RouteServiceProvider::class);
$this->app->register(BalanceServiceProvider::class);
$this->app->bind(UpdateAtmCardBranchCurrencyJob::class);
}