@@ -44,13 +44,10 @@ def get_y_n ( input_prompt ):
44
44
return return_value
45
45
46
46
47
-
48
47
# inits
49
48
costs = { 'Adult' : 10.50 , 'Child' : 7.30 , 'Conc' : 8.40 }
50
49
num_kids_for_free_adult = 10
51
-
52
50
discount = { 'minimum_spend' : float (100.00 ), 'discount' : int (10 ) }
53
-
54
51
the_p_n_p_cost = float (2.34 )
55
52
56
53
# welcome
@@ -82,74 +79,83 @@ def get_y_n ( input_prompt ):
82
79
num_paying_adults = num_adults - num_free_adults
83
80
num_paying_conc = num_conc - num_free_conc
84
81
85
- ticket_values = {"Adult" : 0 , "Conc" : 0 , "Child" : 0 }
86
- ticket_values ["Adult" ] = num_paying_adults * costs ["Adult" ]
87
- ticket_values ["Conc" ] = num_paying_conc * costs ["Conc" ]
88
- ticket_values ["Child" ] = num_kids * costs ["Child" ]
89
-
90
- ttl_bill_pre_discount = ( ticket_values ["Adult" ] ) + \
91
- ( ticket_values ["Conc" ] ) + \
92
- ( ticket_values ["Child" ] )
93
-
94
- # calculate discount
95
- discount_percentage = 0
96
- bill_discount = 0
97
- if ttl_bill_pre_discount > discount ["minimum_spend" ] :
98
- discount_percentage = discount ["discount" ]
99
- bill_discount = ttl_bill_pre_discount * ( discount_percentage / 100 )
100
-
101
- # calculate delivery
102
-
103
- if is_collection == "Y" :
104
- p_n_p_cost = 0
105
- else :
106
- p_n_p_cost = the_p_n_p_cost
107
-
108
- bill_total = ttl_bill_pre_discount - bill_discount + p_n_p_cost
109
-
110
- # generate bill reference
111
- bill_ref = str (time .time ())[3 :10 ]
112
-
113
- # output bill
114
- print ( )
115
- print ( "The Sandford Paladium" )
116
- print ( "*" * 21 )
117
- print ()
118
-
119
- print ( f'{ num_in_party } Tickets for Snakes! The Musical' )
120
- print ( f'{ "Order Ref: " + bill_ref :>36} ' )
121
- print ( '-' * 36 )
122
- if is_collection == "Y" :
123
- print ( "*" * 9 , " COLLECTION " , "*" * 9 )
82
+ # check they have adults to cover the kids
83
+ if num_kids == num_in_party :
84
+ print ("Invalid order. All children must have at least one adult attending." )
85
+ print ("Please try to place your order again. " )
86
+ else :
87
+ # output the receipt.
88
+ ticket_values = {"Adult" : 0 , "Conc" : 0 , "Child" : 0 }
89
+ ticket_values ["Adult" ] = num_paying_adults * costs ["Adult" ]
90
+ ticket_values ["Conc" ] = num_paying_conc * costs ["Conc" ]
91
+ ticket_values ["Child" ] = num_kids * costs ["Child" ]
92
+
93
+ ttl_bill_pre_discount = ( ticket_values ["Adult" ] ) + \
94
+ ( ticket_values ["Conc" ] ) + \
95
+ ( ticket_values ["Child" ] )
96
+
97
+ # calculate discount
98
+ discount_percentage = 0
99
+ bill_discount = 0
100
+ if ttl_bill_pre_discount > discount ["minimum_spend" ] :
101
+ discount_percentage = discount ["discount" ]
102
+ bill_discount = ttl_bill_pre_discount * ( discount_percentage / 100 )
103
+
104
+ # calculate delivery
105
+
106
+ if is_collection == "Y" :
107
+ p_n_p_cost = 0
108
+ else :
109
+ p_n_p_cost = the_p_n_p_cost
110
+
111
+ bill_total = ttl_bill_pre_discount - bill_discount + p_n_p_cost
112
+
113
+ # generate bill reference
114
+ bill_ref = str (time .time ())[3 :10 ]
115
+
116
+ # output bill
117
+ print ( )
118
+ print ( "The Sandford Paladium" )
119
+ print ( "*" * 21 )
120
+ print ()
121
+
122
+ print ( f'{ num_in_party } Tickets for Snakes! The Musical' )
123
+ print ( f'{ "Order Ref: " + bill_ref :>36} ' )
124
124
print ( '-' * 36 )
125
-
126
- if num_adults > 0 :
127
- print ( f'{ num_adults :3} { "Adult" :12} ' )
128
- if num_paying_adults > 0 : print ( ' ' * 12 , f'{ num_paying_adults :3} @ £{ costs ["Adult" ]:5.2f} = £{ ticket_values ["Adult" ]:7.2f} ' )
129
- if num_free_adults > 0 : print ( ' ' * 12 , f'{ num_free_adults :3} @ £{ 0 :5.2f} = £{ 0 :7.2f} ' )
130
- print ( "" )
131
-
132
- if num_conc > 0 :
133
- print ( f'{ num_conc :3} { "Concessions" :12} ' )
134
- if num_paying_conc > 0 : print ( ' ' * 12 , f'{ num_paying_conc :3} @ £{ costs ["Conc" ]:5.2f} = £{ ticket_values ["Conc" ]:7.2f} ' )
135
- if num_free_conc > 0 : print ( ' ' * 12 , f'{ num_free_conc :3} @ £{ 0 :5.2f} = £{ 0 :7.2f} ' )
136
- print ( "" )
137
-
138
- if num_kids > 0 :
139
- print ( f'{ num_kids :3} { "Child" :12} @ £{ costs ["Child" ]:5.2f} = £{ ticket_values ["Child" ]:7.2f} ' )
140
- if num_kids > 9 : print ( f" (Includes { num_free_adults + num_free_conc } free chaperones)" )
141
- print ( "" )
142
-
143
- print ( ' ' * 27 , '=' * 8 )
144
-
145
- if discount_percentage > 0 :
146
- print ( ' ' * 9 , f'{ "Sub Total" :17} £{ ttl_bill_pre_discount :7.2f} ' )
147
- print ( ' ' * 9 , f'{ "Discount (" + str (discount ["discount" ]) + "%)" :17} £{ bill_discount :7.2f} ' )
148
- print ( ' ' * 27 , '-' * 8 )
149
-
150
- if p_n_p_cost > 0 :
151
- print ( ' ' * 9 , f'{ "Postage" :17} £{ p_n_p_cost :7.2f} ' )
152
- print ( ' ' * 27 , '-' * 8 )
153
-
154
- print ( ' ' * 9 , f'{ "Total" :17} £{ bill_total :7.2f} ' )
155
- print ( ' ' * 27 , '=' * 8 )
125
+ if is_collection == "Y" :
126
+ print ( "*" * 9 , " COLLECTION " , "*" * 9 )
127
+ print ( '-' * 36 )
128
+
129
+ if num_adults > 0 :
130
+ print ( f'{ num_adults :3} { "Adult" :12} ' )
131
+ if num_paying_adults > 0 : print ( ' ' * 12 , f'{ num_paying_adults :3} @ £{ costs ["Adult" ]:5.2f} = £{ ticket_values ["Adult" ]:7.2f} ' )
132
+ if num_free_adults > 0 : print ( ' ' * 12 , f'{ num_free_adults :3} @ £{ 0 :5.2f} = £{ 0 :7.2f} ' )
133
+ print ( "" )
134
+
135
+ if num_conc > 0 :
136
+ print ( f'{ num_conc :3} { "Concessions" :12} ' )
137
+ if num_paying_conc > 0 : print ( ' ' * 12 , f'{ num_paying_conc :3} @ £{ costs ["Conc" ]:5.2f} = £{ ticket_values ["Conc" ]:7.2f} ' )
138
+ if num_free_conc > 0 : print ( ' ' * 12 , f'{ num_free_conc :3} @ £{ 0 :5.2f} = £{ 0 :7.2f} ' )
139
+ print ( "" )
140
+
141
+ if num_kids > 0 :
142
+ print ( f'{ num_kids :3} { "Child" :12} @ £{ costs ["Child" ]:5.2f} = £{ ticket_values ["Child" ]:7.2f} ' )
143
+ s_plural = ""
144
+ if num_free_adults + num_free_conc > 1 :
145
+ s_plural = "s"
146
+ if num_kids > 9 : print ( f" (Includes { num_free_adults + num_free_conc } free chaperone{ s_plural } )" )
147
+ print ( "" )
148
+
149
+ print ( ' ' * 27 , '=' * 8 )
150
+
151
+ if discount_percentage > 0 :
152
+ print ( ' ' * 9 , f'{ "Sub Total" :17} £{ ttl_bill_pre_discount :7.2f} ' )
153
+ print ( ' ' * 9 , f'{ "Discount (" + str (discount ["discount" ]) + "%)" :17} £{ bill_discount :7.2f} ' )
154
+ print ( ' ' * 27 , '-' * 8 )
155
+
156
+ if p_n_p_cost > 0 :
157
+ print ( ' ' * 9 , f'{ "Postage" :17} £{ p_n_p_cost :7.2f} ' )
158
+ print ( ' ' * 27 , '-' * 8 )
159
+
160
+ print ( ' ' * 9 , f'{ "Total" :17} £{ bill_total :7.2f} ' )
161
+ print ( ' ' * 27 , '=' * 8 )
0 commit comments