@@ -44,13 +44,10 @@ def get_y_n ( input_prompt ):
4444 return return_value
4545
4646
47-
4847# inits
4948costs = { 'Adult' : 10.50 , 'Child' : 7.30 , 'Conc' : 8.40 }
5049num_kids_for_free_adult = 10
51-
5250discount = { 'minimum_spend' : float (100.00 ), 'discount' : int (10 ) }
53-
5451the_p_n_p_cost = float (2.34 )
5552
5653# welcome
@@ -82,74 +79,83 @@ def get_y_n ( input_prompt ):
8279num_paying_adults = num_adults - num_free_adults
8380num_paying_conc = num_conc - num_free_conc
8481
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} ' )
124124 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