Proje: Okul Platform · Hub: Okul Platform — Domain
Hesaplama Mimarisi
Strategy Pattern + Manager Pattern kullanılıyor.
CheckoutCalculationService
├── MonthlyDiscountManager (taksitli ödeme)
└── YearlyDiscountManager (peşin/yıllık ödeme)
Manager Yapısı
AbstractDiscountManager → MonthlyDiscountManager / YearlyDiscountManager
Manager seçimi: $isCashPayment flag’ine göre yapılır:
$manager = $isCashPayment
? $this->yearlyDiscountManager // Peşin = Yıllık
: $this->monthlyDiscountManager; // Taksit = AylıkStrategy’ler
| Strategy | Açıklama |
|---|---|
CampaignStrategy | Kampanya bazlı indirim |
DiscountCodeStrategy | İndirim kodu ile indirim |
K12Strategy | K-12 (anaokulu-lise) özel indirim |
MonthlyLimitedStrategy | Aylık sınırlı indirim |
RemainingMonthlyLimitedStrategy | Kalan aylık sınırlı indirim |
CheckoutItemsDTO (Hesaplama Sonucu)
totalDiscount → Toplam indirim tutarı
totalDiscountPercentage → Toplam indirim yüzdesi
discountedMonths → İndirimli ay sayısı
finalAmount → Son tutar (peşin)
remainingFinalAmount → Kalan tutar (taksit)
initialAmountYearly → Yıllık ham tutar
initialAmountMonthly → Aylık ham tutar
discountDetails → İndirim detay dizisi
schoolProducts → Ürün listesi
Ürün Hesabında Quantity
Her ürün için quantity field’ı var. Fiyat = price * quantity.
Related
- api-checkout-flow — Checkout oluşturma akışı
- api-product-usage-limits — ProductPrice modeli