Ejemplo n.º 1
0
 def check_backpack(self):
     """Will display the cans contained in purchased_cans list in backpack"""
     if len(self.backpack.purchased_cans) == 0:
         user_interface.output_text("You have no cans in your backpack")
     else:
         for can in self.backpack.purchased_cans:
             user_interface.output_text(can.name)
Ejemplo n.º 2
0
 def gather_change_from_register(self, change_value):
     change_list = []
     while change_value > 0:
         if change_value >= 0.25 and self.register_has_coin("quarter"):
             change_list.append(self.get_coin_from_register("quarter"))
             change_value -= 0.25
         elif change_value >= 0.10 and self.register_has_coin("dime"):
             change_list.append(self.get_coin_from_register("dime"))
             change_value -= 0.10
         elif change_value >= 0.05 and self.register_has_coin("nickel"):
             change_list.append(self.get_coin_from_register("nickel"))
             change_value -= 0.05
         elif change_value >= 0.01 and self.register_has_coin("penny"):
             change_list.append(self.get_coin_from_register("penny"))
             change_value -= 0.01
         elif change_value == 0:
             break
         else:
             user_interface.output_text(
                 "Error: Machine does not have enough change to complete transaction"
             )
             self.deposit_coins_into_register(change_list)
             change_list = None
             break
         change_value = round(change_value, 2)
     return change_list
Ejemplo n.º 3
0
 def calculate_transaction(self, customer_payment, selected_soda, customer):
     total_payment_value = self.calculate_coin_value(customer_payment)
     if total_payment_value < selected_soda.price:
         change_value = self.determine_change_value(total_payment_value,
                                                    selected_soda.price)
         customer_change = self.gather_change_from_register(change_value)
         if customer_change is None:
             user_interface.output_text(
                 'Dispensing ${total_payment_value} back to customer')
             customer.add_coins_to_wallet(customer_payment)
             self.return_inventory(selected_soda)
         else:
             self.deposit_coins_into_register(customer_payment)
             customer.add_coins_to_wallet(customer_change)
             customer.add_can_to_backpack(selected_soda)
             user_interface.end_message(selected_soda, change_value)
     elif total_payment_value == selected_soda.price:
         self.deposit_coins_into_register(customer_payment)
         customer.add_can_to_backpack(selected_soda)
         user_interface.end_message(selected_soda, 0)
     else:
         user_interface.output_text(
             "You do not have enough money to purchase this item, returning payment"
         )
         customer.add_coins_to_wallet(customer_payment)
         self.return_inventory(selected_soda)
    def run_transaction(self, customer):

        selected_soda_name = user_interface.soda_selection(self.inventory)

        selected_soda = self.get_inventory_soda(selected_soda_name)

        customer_payment = customer.gather_coins_from_wallet(selected_soda)

        self.calculate_transaction(customer_payment, selected_soda, customer)

        user_interface.output_text("Transaction complete")
Ejemplo n.º 5
0
 def gather_coins_from_wallet(self, selected_soda):
     """Method allowing user to choose coins from wallet for payment"""
     will_proceed = True
     customer_payment = []
     user_interface.output_text("Continue to add coins until you are ready to insert them into the machine")
     while will_proceed:
         user_interface.display_can_cost(selected_soda)
         user_interface.display_payment_value(customer_payment)
         coin_name = user_interface.coin_selection()
         if coin_name == "Done":
             break
         payment_coin = self.get_wallet_coin(coin_name)
         if payment_coin is not None:
             customer_payment.append(payment_coin)
         else:
             user_interface.output_text("You do not have any of those coins, try again")
     return customer_payment