Spaces:
Build error
Build error
| import pandas as pd | |
| import streamlit as st | |
| from data_processing import process_dataframe, process_journal, remove_na_accounts | |
| from utils import get_table_download_link, to_excel | |
| from io import BytesIO | |
| from llm_agent import set_openai_key, init_agent, get_agent_response | |
| st.title('Accounting Fast Close') | |
| # Ask user for OpenAI API key | |
| openai_api_key = st.sidebar.text_input('Enter your OpenAI API Key', type='password') | |
| if openai_api_key: | |
| set_openai_key(openai_api_key) | |
| # Creating a button to toggle between uploaded documents and findings | |
| view_option = st.selectbox('Choose View', ['Uploaded Documents', 'Findings']) | |
| def load_excel_data(uploaded_file): | |
| df = pd.read_excel(uploaded_file) | |
| return df | |
| uploaded_file1 = st.sidebar.file_uploader('Upload your trial balance Excel file', type=['xlsx']) | |
| uploaded_file2 = st.sidebar.file_uploader('Upload your journal entry Excel file', type=['xlsx']) | |
| if uploaded_file1 is not None: | |
| df1 = load_excel_data(uploaded_file1) | |
| # Process the DataFrame | |
| df1 = process_dataframe(df1) | |
| # AI Agent Section | |
| if openai_api_key: | |
| agent = init_agent(openai_api_key) | |
| if uploaded_file2 is not None: | |
| df2 = load_excel_data(uploaded_file2) | |
| df2 = process_journal(df2) | |
| if uploaded_file1 is not None and uploaded_file2 is not None: | |
| # Merge df1 (trial balance) with df2 (journal entries) | |
| df1 = pd.merge(df1, df2, on='Account', how='outer') | |
| # Remove rows with 'Account' as NA | |
| df1 = remove_na_accounts(df1) | |
| # Define the columns we want to fill NaN values with 0 | |
| fillna_columns = ['Opening Balance Debit', 'Opening Balance Credit', | |
| 'Current Transactions Debit', 'Current Transactions Credit', | |
| 'Closing Balance Debit', 'Closing Balance Credit', | |
| 'Debit Amount', 'Credit Amount' ] | |
| # Replace NaN values with 0 in the defined columns | |
| df1[fillna_columns] = df1[fillna_columns].fillna(0) | |
| # Compute the differences | |
| df1['Diff Dr.'] = df1['Current Transactions Debit'] - df1['Debit Amount'] | |
| df1['Diff Cr.'] = df1['Current Transactions Credit'] - df1['Credit Amount'] | |
| excel_data = to_excel(df1) # Move this line to here | |
| # Uploaded Documents Section | |
| if view_option == 'Uploaded Documents': | |
| if uploaded_file1 is not None: | |
| st.write(df1) | |
| # st.markdown(get_table_download_link(excel_data, 'processed_data.xlsx'), unsafe_allow_html=True) | |
| if uploaded_file2 is not None: | |
| # Save the dataframes to an Excel file | |
| excel_data_combined = BytesIO() | |
| with pd.ExcelWriter(excel_data_combined, engine='xlsxwriter') as writer: | |
| df1.to_excel(writer, sheet_name='Trial Balance', index=False) | |
| df2.to_excel(writer, sheet_name='Journal Entry', index=False) | |
| st.markdown(get_table_download_link(excel_data_combined.getvalue(), filename='combined.xlsx'), unsafe_allow_html=True) | |
| elif view_option == 'Findings': | |
| # Logic for findings should be implemented here | |
| st.write(df1) | |
| # AI Agent Section | |
| if openai_api_key and uploaded_file1 is not None: | |
| # Create a chat box for user questions | |
| user_input = st.text_input('Ask a question:') | |
| if user_input: | |
| response = get_agent_response(agent, df1, user_input) # pass df1 as an argument | |
| st.write(response) | |
| if uploaded_file2 is not None: | |
| # Save the dataframes to an Excel file | |
| excel_data_combined = BytesIO() | |
| with pd.ExcelWriter(excel_data_combined, engine='xlsxwriter') as writer: | |
| df1.to_excel(writer, sheet_name='Trial Balance', index=False) | |
| df2.to_excel(writer, sheet_name='Journal Entry', index=False) | |
| st.markdown(get_table_download_link(excel_data_combined.getvalue(), filename='combined.xlsx'), unsafe_allow_html=True) | |