Wartość cykliczna kalendarzowo
Mediator generujący stałą ilość produktu w każdym okresie kalendarzowym (np. abonament miesięczny).
Mediator CalendarMediator służy do generowania cyklicznych opłat w oparciu o okresy kalendarzowe.
Typowym zastosowaniem jest naliczanie abonamentów miesięcznych — opłata jest generowana przy każdej
zmianie miesiąca kalendarzowego.
Billing dowolnego okresu wewnątrz miesiąca nie generuje produktów. Natomiast billing obejmujący początek (lub koniec) miesiąca generuje zadaną ilość wybranych produktów.
Mediator obsługuje cztery tryby rozliczania (billing_type):
start— naliczenie pełnej kwoty za każdy pełny miesiąc kalendarzowy w okresie. Opłata jest generowana, gdy w billingowanym okresie występuje pierwszy dzień miesiąca.end— naliczenie opłaty na koniec miesiąca.proportional— naliczenie proporcjonalne do liczby godzin w danym miesiącu. Jeśli okres billingowy obejmuje jedynie część miesiąca, ilość zostanie proporcjonalnie zmniejszona.price_proportional— naliczenie proporcjonalne z uwzględnieniem zmian cen w trakcie miesiąca. Jeśli cena produktu zmienia się w trakcie miesiąca, mediator rozbija okres na fragmenty z pełnymi miesiącami (bez zmian cen) i fragmenty proporcjonalne (ze zmianami cen).
Aktualnie obsługiwany jest wyłącznie okres miesięczny (monthly).
- Nazwa wyświetlana: Wartość cykliczna kalendarzowo.
- Dokładna klasa:
django_billy.basemediators.CalendarMediator
Parametry konfiguracyjne
Section titled “Parametry konfiguracyjne”| Parametr | Typ | Domyślna wartość | Opis |
|---|---|---|---|
product_id | Integer/Tablica | brak | Identyfikator produktu billingowego lub tablica identyfikatorów produktów. Jeśli podano pojedynczą wartość, zostanie automatycznie opakowana w tablicę. |
quantity | Decimal | brak | Ilość produktu generowana za każdy pełny okres (np. 1 dla jednego abonamentu miesięcznego). |
period | Tekst | brak | Okres naliczania. Aktualnie jedyną obsługiwaną wartością jest monthly. |
billing_type | Tekst | brak | Typ rozliczenia: start (początek miesiąca), end (koniec miesiąca), proportional (proporcjonalnie) lub price_proportional (proporcjonalnie z uwzględnieniem zmian cen). |
Przykładowa konfiguracja
Section titled “Przykładowa konfiguracja”Abonament miesięczny (naliczany na początku miesiąca)
Section titled “Abonament miesięczny (naliczany na początku miesiąca)”{ "product_id": 10, "quantity": 1, "period": "monthly", "billing_type": "start"}Opłata proporcjonalna z wieloma produktami
Section titled “Opłata proporcjonalna z wieloma produktami”{ "product_id": [10, 11, 12], "quantity": 1, "period": "monthly", "billing_type": "proportional"}Opłata z uwzględnieniem zmian cen
Section titled “Opłata z uwzględnieniem zmian cen”{ "product_id": 10, "quantity": 1, "period": "monthly", "billing_type": "price_proportional"}- Podane ID w
product_idto identyfikatory produktów billingowych, a nie księgowych. - W trybie
startopłata jest naliczana za każdy pełny miesiąc — tzn. tylko wtedy, gdy w billingowanym okresie występuje pierwszy dzień miesiąca o godzinie 0:00. - W trybie
proportionalilość jest obliczana na podstawie stosunku liczby godzin w billingowanym fragmencie miesiąca do łącznej liczby godzin w całym miesiącu. - W trybie
price_proportionalmediator korzysta ze strefy czasowejEurope/Warsawdo wykrywania zmian cen. Analizowane są ceny na początku i końcu każdego miesiąca w billingowanym okresie. - Mediator obsługuje wiele produktów jednocześnie — podanie tablicy identyfikatorów w
product_idspowoduje wygenerowanie osobnego wyniku dla każdego produktu. - Klasy pochodne (
StepWiseCalendarMediator,PPEOrderedCapacityCalendarMediator,DistributionSpecificMediator) rozszerzają ten mediator o dodatkową logikę biznesową.