-
Notifications
You must be signed in to change notification settings - Fork 0
/
Payment.py
106 lines (83 loc) · 3.02 KB
/
Payment.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
from fastapi import FastAPI
from typing import List
from pydantic import BaseModel
from creditcard import Allcreditcard
class Promotion:
def __init__(self):
self.total_coupon= [] #list of coupon
self.total_discount_num_room_list = [] #list of discountnumroom
def add_coupon(self, coupon):
self.total_coupon.append(coupon)
def get_coupon_list(self):
return self.total_coupon
class Payment():
def __init__(self, transaction_id : int):
self.transaction_id = transaction_id
self.money = 0
self.price_room = 0
self.status_payment = False
self.total_day = 0
self.total_price = 0
self.add_on_price = 0
async def set_price_room(self, price_room):
if isinstance(price_room,int):
self.price_room = price_room
async def set_money(self,balance : int):
# receive monet from a creditcard function
self.money += balance
async def get_price_room(self):
return self.price_room
async def get_payment_status(self):
return self.status_payment
async def set_total_day(self, difference):
self.total_day += difference
print("Total day:",self.total_day)
async def set_add_on_price(self, add_on_price):
self.add_on_price = add_on_price
print("Add on price:",self.add_on_price)
async def set_total_price(self):
self.total_price = (self.price_room * self.total_day) + self.add_on_price
async def use_coupon(self, promotion : Promotion):
print("Do you want to use coupon:")
requirement = input("True or False:")
if requirement == "True":
name_coupon = input("Enter coupon code:")
for coupon in promotion.total_coupon:
if coupon.name_coupon == name_coupon:
print("pre total price:",self.total_price)
self.total_price -= coupon.value_coupon
print("post total price:",self.total_price)
break
else:
return {"Error":"Not found coupon code"}
else:
return {"Announcement":"Not used coupon code"}
async def process_payment(self):
print("Process Payment...........")
print("......")
print("...")
if(self.money >= self.total_price): #price_room must multiply day checkout-checkin
print("Success Payment!!")
self.money -= self.total_price
print(self.money)
self.status_payment = True
return {"Success":f"Your balabce is {self.money}"}
else:
return {"Error":"Not enough money"}
class PaymentModel(BaseModel):
money: int
price_room: int
status_payment: bool
total_day: int
total_price: int
add_on_price: int
class TypeCoupon(BaseModel):
name_coupon: str
coupon_description: str
value_coupon: int
class DiscountNumRoom(BaseModel):
num_room_discount: int
value_discount: int
#todo
#1. add coupon
#2. make payment