@@ -66,16 +66,25 @@ def get_y_n ( input_prompt ):
66
66
# calcs
67
67
num_kids = num_in_party - num_adults - num_conc
68
68
num_free_adults = int ( num_kids / num_kids_for_free_adult )
69
+ num_free_conc = 0
69
70
70
71
# can't give away more seats than you've got!
71
- if num_free_adults > num_adults : num_free_adults = num_adults
72
+ # roll down free adults to concessions if there is a surplus
73
+ if num_free_adults > num_adults :
74
+ num_spare_adults = num_free_adults - num_adults
75
+ num_free_adults = num_adults
76
+ num_free_conc = num_spare_adults
77
+
78
+ if num_free_conc > num_conc :
79
+ num_free_conc = num_conc
72
80
73
81
# calc how many are paying
74
82
num_paying_adults = num_adults - num_free_adults
83
+ num_paying_conc = num_conc - num_free_conc
75
84
76
85
ticket_values = {"Adult" : 0 , "Conc" : 0 , "Child" : 0 }
77
86
ticket_values ["Adult" ] = num_paying_adults * costs ["Adult" ]
78
- ticket_values ["Conc" ] = num_conc * costs ["Conc" ]
87
+ ticket_values ["Conc" ] = num_paying_conc * costs ["Conc" ]
79
88
ticket_values ["Child" ] = num_kids * costs ["Child" ]
80
89
81
90
ttl_bill_pre_discount = ( ticket_values ["Adult" ] ) + \
@@ -108,21 +117,34 @@ def get_y_n ( input_prompt ):
108
117
print ()
109
118
110
119
print ( f'{ num_in_party } Tickets for Snakes! The Musical' )
111
- print ( f'{ "Order Ref: " + bill_ref :>35 } ' )
112
- print ( '-' * 35 )
120
+ print ( f'{ "Order Ref: " + bill_ref :>36 } ' )
121
+ print ( '-' * 36 )
113
122
if is_collection == "Y" :
114
- print ( "*" * 9 , " COLLECTION " , "*" * 9 )
115
- print ( '-' * 35 )
116
- print ( f'{ num_adults :3} { "Adult" :12} ' )
117
- if num_paying_adults > 0 : print ( ' ' * 12 , f'{ num_paying_adults :3} @ £{ costs ["Adult" ]:5.2f} = £{ ticket_values ["Adult" ]:7.2f} ' )
118
- if num_free_adults > 0 : print ( ' ' * 12 , f'{ num_free_adults :3} @ £{ 0 :5.2f} = £{ 0 :7.2f} ' )
119
- if num_conc > 0 : print ( f'{ num_conc :3} { "Concession" :12} @ £{ costs ["Conc" ]:5.2f} = £{ ticket_values ["Conc" ]:7.2f} ' )
120
- if num_kids > 0 : print ( f'{ num_kids :3} { "Child" :12} @ £{ costs ["Child" ]:5.2f} = £{ ticket_values ["Child" ]:7.2f} ' )
123
+ print ( "*" * 9 , " COLLECTION " , "*" * 9 )
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
+
121
143
print ( ' ' * 27 , '=' * 8 )
122
144
123
145
if discount_percentage > 0 :
124
146
print ( ' ' * 9 , f'{ "Sub Total" :17} £{ ttl_bill_pre_discount :7.2f} ' )
125
- print ( ' ' * 9 , f'{ "Discount" :17} £{ bill_discount :7.2f} ' )
147
+ print ( ' ' * 9 , f'{ "Discount (" + str ( discount [ "discount" ]) + "%) " :17} £{ bill_discount :7.2f} ' )
126
148
print ( ' ' * 27 , '-' * 8 )
127
149
128
150
if p_n_p_cost > 0 :
0 commit comments