update project
This commit is contained in:
+17
@@ -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];
|
||||
}
|
||||
}
|
||||
+21
@@ -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.
|
||||
+17
@@ -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)];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user