-
Notifications
You must be signed in to change notification settings - Fork 0
/
generate_recipt.py
132 lines (105 loc) · 4.36 KB
/
generate_recipt.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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
import os
import sys
import subprocess
from datetime import datetime
import fpdf
from authentication import current_user
from functions import number_format
class Recipt:
"""This class contains methods for generating recipts.
Public Methods:
--------------
balnace_reciept(): -- It generate a receipt for checking balance.
and call the open_file() functioin to directly open the generated pdf
reciept.
deposit_reciept: It generate a receipt for depositing to balance.
and call the open_file() functioin to directly open the generated pdf
reciept.
withdraw_reciept: It generate a receipt for withdrawing balance.
and call the open_file() functioin to directly open the generated pdf
reciept.
"""
@staticmethod
def deposit_reciept(new_amount, depsoited_amount):
"""This function create a recipt bill for deposit balance and open the
file.
parameters:
new_amount: the amount of money after depsoit
deposited_amount: the amount of desposited money
"""
id = current_user().id
name = current_user().name
new_amount = number_format(new_amount)
depsoited_amount = number_format(depsoited_amount)
recipt = fpdf.FPDF('P', 'mm', (115,115))
recipt.add_page()
recipt.set_font('Arial', '', 9)
text1 = "Welcome To Banking System".center(75,"-")
text2 = f"User ID: {id} \n Name: {name} \n Date: {datetime.now()} \n"
text3 = f"Desposit Money \n"
text4 = f"Deposited Amount: {depsoited_amount} Afg \n"
text5 = f"New Balance: {new_amount} Afg\n"
text6 = "Thank You".center(80,"-")
text= f"{text1} \n {text2} {text3} {text4} {text5} {text6}"
recipt.multi_cell(100, 10, text, border=0, align='c')
recipt.output(f"{id}{name}-recipt.pdf")
#open the recipt file
run_file(f"{id}{name}-recipt.pdf")
@staticmethod
def withdraw_reciept(new_amount, withdrawed_amount):
"""This function create a recipt bill for withdraw balance and open the
file.
parameters:
new_amount: the amount of money after depsoit
withdrawd_amount: the amount of desposited money
"""
id = current_user().id
name = current_user().name
new_amount = number_format(new_amount)
withdrawed_amount = number_format(withdrawed_amount)
recipt = fpdf.FPDF('P', 'mm', (115,115))
recipt.add_page()
recipt.set_font('Arial', '', 9)
text1 = "Welcome To Banking System".center(75,"-")
text2 = f"User ID: {id} \n Name: {name} \n Date: {datetime.now()} \n"
text3 = f"Withdraw Money \n"
text4 = f"Withdrawed Amount: {withdrawed_amount} Afg \n"
text5 = f"New Balance: {new_amount} Afg\n"
text6 = "Thank You".center(80,"-")
text= f"{text1} \n {text2} {text3} {text4} {text5} {text6}"
recipt.multi_cell(100, 10, text, border=0, align='c')
recipt.output(f"{id}{name}-recipt.pdf")
#open the recipt file
run_file(f"{id}{name}-recipt.pdf")
@staticmethod
def balance_reciept():
"""This function create a recipt bill for checking balance and open the
file"""
id = current_user().id
name = current_user().name
balance = number_format(current_user().balance)
recipt = fpdf.FPDF('P', 'mm', (115,110))
recipt.add_page()
recipt.set_font('Arial', '', 9)
text1 = "Welcome To Banking System".center(75,"-")
text2 = f"User ID: {id} \n User Name: {name} \n Date: {datetime.now()}\n"
text3 = f"Check Balnace \n Amount: {balance} AFG \n"
text4 = "Thank You".center(80,"-")
text= f"{text1} \n {text2} {text3} {text4}"
recipt.multi_cell(100, 10, text, border=0, align='c')
recipt.output(f"{id}{name}-recipt.pdf")
#open the recipt file
run_file(f"{id}{name}-recipt.pdf")
def run_file(filename):
"""Open the pdf reciept.
It checks the operating system and based on the operating system it opens
the pdf file.
"""
platform = sys.platform
if platform == "win32":
os.startfile(filename)
elif platform == "darwin":
subprocess.call(["open", filename])
else:
# for linux
subprocess.call(["xdg-open", filename])