Klasa Payment
Klasa Payment
reprezentuje płatność powiązaną z rezerwacją w systemie hotelowym.
Obsługuje informacje o metodzie płatności, statusie, kwocie oraz dacie jej realizacji.
Dzięki tej klasie można potwierdzić płatność, sprawdzić czy została zrealizowana oraz uzyskać podsumowanie.
Dokumentacja techniczna
Reprezentuje płatność za konkretną rezerwację.
Source code in models/payment.py
| def __init__(self, reservation: Reservation, method: Literal["karta", "gotówka"]):
if not isinstance(reservation, Reservation):
raise TypeError("Rezerwacja nie znaleziona.")
if method not in ("karta", "gotówka"):
raise ValueError("Metoda płatności musi być 'karta' lub 'gotówka'.")
self.payment_id: str = str(uuid.uuid4())
self.reservation: Reservation = reservation
self.method: str = method
self.amount: float = reservation.get_total_price()
self.paid: bool = False
self.payment_date: Optional[datetime] = None
|
confirm_payment()
Oznacza płatność jako zakończoną.
Source code in models/payment.py
| def confirm_payment(self) -> None:
"""Oznacza płatność jako zakończoną."""
if self.paid:
raise ValueError("Płatność została już wcześniej potwierdzona.")
self.paid = True
self.payment_date = datetime.now()
|
get_summary()
Zwraca podsumowanie płatności.
Source code in models/payment.py
| def get_summary(self) -> Dict[str, Any]:
"""Zwraca podsumowanie płatności."""
return {
"payment_id": self.payment_id,
"reservation_id": self.reservation.reservation_id,
"guest_name": self.reservation.guest.get_full_name(),
"amount": self.amount,
"method": self.method,
"paid": self.paid,
"payment_date": self.payment_date.isoformat() if self.payment_date else None
}
|
is_paid()
Sprawdza, czy płatność została już zrealizowana.
Source code in models/payment.py
| def is_paid(self) -> bool:
"""Sprawdza, czy płatność została już zrealizowana."""
return self.paid
|
Przykład użycia
| from models.payment import Payment
from models.reservation import Reservation
from models.guest import Guest
from models.room import Room
from datetime import date
guest = Guest("Jan", "Kowalski", "jan@example.com", "123456789")
room = Room("101", "single", 150.0, 1)
reservation = Reservation(guest, room, date(2025, 7, 10), date(2025, 7, 12))
payment = Payment(reservation, method="karta")
print(payment.is_paid())
payment.confirm_payment()
print(payment.get_summary())
|