update project

This commit is contained in:
root
2026-05-30 01:11:35 -04:00
parent 3a0628ecc7
commit 2225f6bc72
9743 changed files with 1122482 additions and 59 deletions
@@ -0,0 +1,17 @@
<?php
declare(strict_types=1);
namespace App\Domain\IslamicSundaySchool\Finance\Policies;
use App\Domain\SchoolCore\Context\SchoolContext;
use App\Domain\SchoolCore\Finance\Contracts\PaymentAllocationPolicyContract;
use App\Domain\SchoolCore\Finance\Support\Money;
final class IslamicSundaySchoolPaymentAllocationPolicy implements PaymentAllocationPolicyContract
{
public function allocate(SchoolContext $context, array $invoiceView, Money $paymentAmount): array
{
return [['invoice_id'=>$invoiceView['id'] ?? null,'amount_minor'=>$paymentAmount->minorAmount(),'currency'=>$paymentAmount->currency(),'strategy'=>'extension_policy_family_program_order']];
}
}
@@ -0,0 +1,16 @@
<?php
declare(strict_types=1);
namespace App\Domain\IslamicSundaySchool\Finance\Policies;
use App\Domain\SchoolCore\Context\SchoolContext;
use App\Domain\SchoolCore\Finance\Contracts\TuitionPolicyContract;
final class IslamicSundaySchoolTuitionPolicy implements TuitionPolicyContract
{
public function calculateExpectedCharges(SchoolContext $context, array $studentFinanceProfile): array
{
return ['profile'=>$context->domainProfile,'charges'=>[],'labels_are_extension_owned'=>true];
}
}
@@ -0,0 +1,21 @@
<?php
declare(strict_types=1);
namespace App\Domain\IslamicSundaySchool\Finance\Providers;
use App\Domain\IslamicSundaySchool\Finance\Policies\IslamicSundaySchoolPaymentAllocationPolicy;
use App\Domain\IslamicSundaySchool\Finance\Policies\IslamicSundaySchoolTuitionPolicy;
use App\Domain\SchoolCore\Finance\Contracts\PaymentAllocationPolicyContract;
use App\Domain\SchoolCore\Finance\Contracts\TuitionPolicyContract;
use Illuminate\Support\ServiceProvider;
final class IslamicSundaySchoolFinanceServiceProvider extends ServiceProvider
{
public function register(): void
{
if (! (bool) config('school_context.extensions.islamic_sunday_school.enabled', false)) { return; }
$this->app->bind(TuitionPolicyContract::class, IslamicSundaySchoolTuitionPolicy::class);
$this->app->bind(PaymentAllocationPolicyContract::class, IslamicSundaySchoolPaymentAllocationPolicy::class);
}
}
@@ -0,0 +1,3 @@
# Islamic Sunday School Finance Extension
Owns extension labels, tuition policies, allocation policies, scholarships, and local reports. It depends on SchoolCore Finance contracts. SchoolCore Finance must not depend back on this namespace.
@@ -0,0 +1,17 @@
<?php
declare(strict_types=1);
namespace App\Domain\IslamicSundaySchool\Finance\Reports;
use App\Domain\SchoolCore\Context\SchoolContext;
use App\Domain\SchoolCore\Finance\Repositories\FinanceReadRepository;
final class IslamicSundaySchoolFinanceReportBuilder
{
public function __construct(private readonly FinanceReadRepository $finance) {}
public function outstandingBalances(SchoolContext $context): array
{
return ['domain_profile'=>$context->domainProfile,'rows'=>$this->finance->outstandingInvoices($context)];
}
}