import tkinter as tk class BalanceSheet: def __init__(self): self.assets = { "New Vehicles": 0, "Used Vehicles": 0, "Parts": 0, "Service": 0, "Cash": 0 } self.liabilities = { "Floor Plan": 0, "Accounts Payable": 0, "Notes Payable": 0, "Accrued Expenses": 0 } self.equity = { "Owner's Equity": 0 } def update(self, outcome): for account, value in outcome["assets"].items(): self.assets[account] += value for account, value in outcome["liabilities"].items(): self.liabilities[account] += value for account, value in outcome["equity"].items(): self.equity[account] += value def display(self): print("Assets") print("------") for account, value in self.assets.items(): print(f"{account}: {value}") print("") print("Liabilities") print("-----------") for account, value in self.liabilities.items(): print(f"{account}: {value}") print("") print("Equity") print("------") for account, value in self.equity.items(): print(f"{account}: {value}") class IncomeStatement: def __init__(self): self.revenue = { "New Vehicle Sales": 0, "Used Vehicle Sales": 0, "Parts Sales": 0, "Service Sales": 0, "Finance and Insurance": 0 } self.expenses = { "Cost of Goods Sold": 0, "Advertising": 0, "Salaries and Wages": 0, "Rent and Utilities": 0, "Interest Expense": 0, "Other Expenses": 0 } def update(self, outcome): for account, value in outcome["revenue"].items(): self.revenue[account] += value for account, value in outcome["expenses"].items(): self.expenses[account] += value def display(self): print("Revenue") print("-------") for account, value in self.revenue.items(): print(f"{account}: {value}") print("") print("Expenses") print("--------") for account, value in self.expenses.items(): print(f"{account}: {value}") print("") print(f"Net Income: {self.get_net_income()}") def get_net_income(self): total_revenue = sum(self.revenue.values()) total_expenses = sum(self.expenses.values()) net_income = total_revenue - total_expenses return net_income class Scenario: def __init__(self, name, options, outcomes): = name self.options = options self.outcomes = outcomes def play(self): print( for i in range(len(self.options)): print(f"{i+1}. {self.options[i]}") choice = int(input("Choose an option: ")) outcome = self.outcomes[choice-1] print(outcome) return outcome class Game: def __init__(self, scenarios): self.balance_sheet = BalanceSheet() self.income_statement = IncomeStatement() self.scenarios = scenarios def play_scenario(self, scenario_choice): class Game: def __init__(self): # Initialize game state self.balance_sheet = {'Cash': 50000, 'Inventory': 100000, 'Accounts Receivable': 0, 'Accounts Payable': 0, 'Loan Payable': 0, 'Equity': 150000} self.income_statement = {'New Vehicle Sales': 0, 'Used Vehicle Sales': 0, 'Parts Sales': 0, 'Service Sales': 0, 'F&I Income': 0, 'Marketing Expenses': 0, 'Salaries and Wages': 0, 'Rent and Utilities': 0, 'Interest Expense': 0} self.scenario = None def get_scenario(self, department): # Retrieve scenario for specified department from administrator self.scenario = administrator.get_scenario(department) def apply_scenario(self, option): # Apply chosen option to balance sheet and income statement for account in self.scenario['effects'].keys(): if account in self.balance_sheet: self.balance_sheet[account] += self.scenario['effects'][account] * option elif account in self.income_statement: self.income_statement[account] += self.scenario['effects'][account] * option def display_state(self): # Display current game state print('Current Balance Sheet:') for account in self.balance_sheet: print(f'{account}: ${self.balance_sheet[account]}') print('\nCurrent Income Statement:') for account in self.income_statement: print(f'{account}: ${self.income_statement[account]}') def play(self): # Play game print('Welcome to the Dealership Business Management Game!') while True: # Prompt player to choose department department = input('\nPlease choose a department to make a decision for (or type "exit" to quit): ') if department == 'exit': break elif department not in departments: print('Invalid department. Please choose again.') continue # Get scenario for chosen department and display options self.get_scenario(department) print(f'\nScenario: {self.scenario["description"]}') print('Options:') for i, option in enumerate(self.scenario['options']): print(f'{i+1}. {option["description"]} (impact on balance sheet: {option["balance_sheet"]}, ' f'impact on income statement: {option["income_statement"]})') # Prompt player to choose option while True: option_choice = input('\nPlease choose an option: ') if not option_choice.isdigit() or int(option_choice) < 1 or int(option_choice) > len(self.scenario['options']): print('Invalid option. Please choose again.') continue else: option_choice = int(option_choice) break # Apply chosen option and display updated state self.apply_scenario(self.scenario['options'][option_choice-1]['impact']) self.display_state() class Administrator: def __init__(self): self.scenarios = {} def add_scenario(self, department, scenario, outcomes): if department not in self.scenarios: self.scenarios[department] = {} self.scenarios[department][scenario] = outcomes def remove_scenario(self, department, scenario): if department in self.scenarios: del self.scenarios[department][scenario] def get_outcomes(self, department, scenario): if department in self.scenarios and scenario in self.scenarios[department]: return self.scenarios[department][scenario] return None
top of page

Privacy Policy for New Ride SA

At New Ride SA, we take the privacy of our clients very seriously. We understand that the personal information you provide to us is sensitive and we are committed to protecting it.

Data Collection:

  • The types of data we collect from our clients include contact details such as name, email address, and phone number.

  • We may also collect other information provided by the client such as their preferred vehicle make and model, budget, and any other information that will assist us in matching them with an approved dealer that meets their purchase requirements.

Data Collection Method:

  • We collect data from our clients through various means such as online forms, phone calls, and email correspondence.

  • We also collect data through our website and mobile application, using cookies and other technologies.

Data Usage:

  • We use the data collected from clients to match them with an approved dealer that meets their purchase requirements.

  • We also use the data for communication purposes such as sending reminders, notifications, and updates about their purchase process.

Data Protection:

  • We take all necessary precautions to protect the personal information of our clients, including using secure servers and encryption to store and transmit data.

  • We also have strict security measures in place to prevent unauthorized access to client data.

Client Access and Control:

  • Clients have the right to access and control their personal data at any time.

  • They can request for a copy of their data and can also request for correction or deletion of their data.

  • If you have any questions or concerns about our privacy policy or the handling of your personal information, please do not hesitate to contact us.

We are committed to protecting the privacy of our clients and handling their personal information with care and respect. We will continue to review and update our privacy policy to ensure it remains compliant with all applicable laws and regulations.

bottom of page