Spaces:
Sleeping
Sleeping
import gradio as gr | |
import pandas as pd | |
# Define functions for preparing financial statements | |
def load_gl_data(file): | |
# Load the GL data from the uploaded CSV file | |
gl_data = pd.read_csv(file.name) | |
# Ensure correct data types for debit and credit columns | |
for col in ['BEGIN_BALANCE_DR', 'BEGIN_BALANCE_CR', 'PERIOD_NET_DR', 'PERIOD_NET_CR', 'YTD_DR', 'YTD_CR']: | |
gl_data[col] = pd.to_numeric(gl_data[col], errors='coerce').fillna(0) | |
# Calculate net balances | |
gl_data['BEGIN_BALANCE'] = gl_data['BEGIN_BALANCE_DR'] - gl_data['BEGIN_BALANCE_CR'] | |
gl_data['PERIOD_NET'] = gl_data['PERIOD_NET_DR'] - gl_data['PERIOD_NET_CR'] | |
gl_data['YTD_NET'] = gl_data['YTD_DR'] - gl_data['YTD_CR'] | |
# Separate Balance Sheet and Income Statement items based on `Level1` | |
balance_sheet = gl_data[gl_data['Level1'].isin(['TOTAL ASSETS', 'TOTAL LIABILITIES', 'TOTAL EQUITY'])] | |
income_statement = gl_data[gl_data['Level1'].isin(['TOTAL REVENUE', 'TOTAL EXPENSES'])] | |
# Prepare Balance Sheet: Sum up Assets, Liabilities, and Equity based on Levels | |
assets = balance_sheet[balance_sheet['Level1'] == 'TOTAL ASSETS']['YTD_NET'].sum() | |
liabilities = balance_sheet[balance_sheet['Level1'] == 'TOTAL LIABILITIES']['YTD_NET'].sum() | |
equity = balance_sheet[balance_sheet['Level1'] == 'TOTAL EQUITY']['YTD_NET'].sum() | |
# Prepare Income Statement Totals: Revenue and Expenses using YTD_NET | |
revenue = income_statement[income_statement['Level1'] == 'TOTAL REVENUE']['YTD_NET'].sum() | |
expenses = income_statement[income_statement['Level1'] == 'TOTAL EXPENSES']['YTD_NET'].sum() | |
net_income = revenue - expenses | |
# Format Balance Sheet output | |
balance_sheet_statement = { | |
"Assets": assets, | |
"Liabilities": liabilities, | |
"Equity": equity, | |
"Total Liabilities and Equity": liabilities + equity | |
} | |
# Format Income Statement output | |
income_statement_statement = { | |
"Revenue": revenue, | |
"Expenses": expenses, | |
"Net Income": net_income | |
} | |
return balance_sheet_statement, income_statement_statement | |
# Gradio Interface | |
def generate_statements(file): | |
balance_sheet, income_statement = load_gl_data(file) | |
return balance_sheet, income_statement | |
# Set up Gradio app interface | |
with gr.Blocks() as demo: | |
gr.Markdown("# Financial Statement Generator") | |
gr.Markdown("Upload your GL data to generate the Balance Sheet and Income Statement.") | |
with gr.Row(): | |
file_input = gr.File(label="Upload GL Data CSV") | |
balance_sheet_output = gr.JSON(label="Balance Sheet") | |
income_statement_output = gr.JSON(label="Income Statement") | |
generate_button = gr.Button("Generate Statements") | |
generate_button.click(generate_statements, inputs=file_input, outputs=[balance_sheet_output, income_statement_output]) | |
# Launch the app | |
demo.launch() | |