revenues.new_revenue
1from dictionary.vars import revenue_categories, to_remove_list 2from dictionary.sql import last_revenue_id_query, user_current_accounts_query 3from functions.query_executor import QueryExecutor 4from functions.get_actual_time import GetActualTime 5from functions.login import Login 6from functions.variable import Variable 7from screens.reports.receipts import Receipts 8from time import sleep 9import streamlit as st 10 11 12class NewCurrentRevenue: 13 """ 14 Classe que representa o cadastro de uma nova receita em contas correntes. 15 """ 16 17 def get_user_current_accounts(self): 18 """ 19 Consulta as contas correntes do usuário. 20 21 Returns 22 ------- 23 user_current_accounts : list 24 A lista com as contas correntes do usuário. 25 """ 26 user_name, user_document = Login().get_user_data(return_option="user_doc_name") 27 28 user_current_accounts = QueryExecutor().complex_consult_query(query=user_current_accounts_query, params=(user_name, user_document)) 29 user_current_accounts = QueryExecutor().treat_numerous_simple_result(user_current_accounts, to_remove_list) 30 31 return user_current_accounts 32 33 def main_menu(self): 34 """ 35 Realiza a coleta dos dados da nova receita e a insere no banco de dados. 36 """ 37 user_name, user_document = Login().get_user_data(return_option="user_doc_name") 38 logged_user, logged_user_password = Login().get_user_data(return_option="user_login_password") 39 40 user_current_accounts = self.get_user_current_accounts() 41 42 col4, col5, col6 = st.columns(3) 43 44 if len(user_current_accounts) == 0: 45 with col5: 46 st.info("Você ainda não possui contas correntes cadastradas.") 47 48 elif len(user_current_accounts) >= 1: 49 50 with col4: 51 52 st.subheader(body=":computer: Entrada de Dados") 53 54 with st.expander(label="Dados", expanded=True): 55 56 options = { 57 "Sim": "S", 58 "Não": "N" 59 } 60 61 id = QueryExecutor().simple_consult_brute_query(last_revenue_id_query) 62 id = QueryExecutor().treat_simple_result(id, to_remove_list) 63 id = int(id) + 1 64 65 description = st.text_input(label=":lower_left_ballpoint_pen: Descrição", placeholder="Informe uma descrição", max_chars=25, help="Descrição simples para a receita.") 66 value = st.number_input( 67 label=":dollar: Valor", min_value=0.01) 68 date = st.date_input(label=":date: Data") 69 category = st.selectbox( 70 label=":card_index_dividers: Categoria", options=revenue_categories) 71 account = st.selectbox( 72 label=":bank: Conta", options=user_current_accounts) 73 received = st.selectbox( 74 label=":inbox_tray: Recebido", options=options.keys()) 75 76 confirm_values_check_box = st.checkbox( 77 label="Confirmar Dados") 78 79 send_revenue_button = st.button( 80 label=":pencil: Gerar Comprovante", key="send_revenue_button") 81 82 with col6: 83 84 if confirm_values_check_box and send_revenue_button: 85 86 received = options[received] 87 88 with col5: 89 with st.spinner("Aguarde..."): 90 sleep(2.5) 91 92 st.subheader( 93 body=":white_check_mark: Validação de Dados") 94 95 if description != "" and category != "Selecione uma opção": 96 with col5: 97 with st.expander(label="Informações", expanded=True): 98 st.success(body="Dados Válidos.") 99 100 actual_horary = GetActualTime().get_actual_time() 101 102 revenue_query = "INSERT INTO receitas (descricao, valor, data, horario, categoria, conta, proprietario_receita, documento_proprietario_receita, recebido) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)" 103 values = (description, value, date, actual_horary, 104 category, account, user_name, user_document, received) 105 QueryExecutor().insert_query( 106 revenue_query, values, "Receita registrada com sucesso!", "Erro ao registrar receita:") 107 108 str_value = Variable().treat_complex_string(value) 109 110 log_query = '''INSERT INTO financas.logs_atividades (usuario_log, tipo_log, conteudo_log) VALUES ( %s, %s, %s);''' 111 log_values = (logged_user, "Registro", "Registrou uma receita no valor de R$ {} associada a conta {}.".format( 112 str_value, account)) 113 QueryExecutor().insert_query( 114 log_query, log_values, "Log gravado.", "Erro ao gravar log:") 115 116 with st.spinner("Aguarde..."): 117 sleep(2.5) 118 119 st.subheader(body=":pencil: Comprovante de Receita") 120 Receipts().generate_receipt( 121 'receitas', id, description, value, str(date), category, account) 122 123 elif description == "" or category == "Selecione uma opção": 124 with col5: 125 with st.expander(label="Informações", expanded=True): 126 if description == "": 127 st.error( 128 body="A descrição deve ser preenchida.") 129 if category == "Selecione uma opção": 130 st.error( 131 body="Informe uma categoria de receita.")
class
NewCurrentRevenue:
13class NewCurrentRevenue: 14 """ 15 Classe que representa o cadastro de uma nova receita em contas correntes. 16 """ 17 18 def get_user_current_accounts(self): 19 """ 20 Consulta as contas correntes do usuário. 21 22 Returns 23 ------- 24 user_current_accounts : list 25 A lista com as contas correntes do usuário. 26 """ 27 user_name, user_document = Login().get_user_data(return_option="user_doc_name") 28 29 user_current_accounts = QueryExecutor().complex_consult_query(query=user_current_accounts_query, params=(user_name, user_document)) 30 user_current_accounts = QueryExecutor().treat_numerous_simple_result(user_current_accounts, to_remove_list) 31 32 return user_current_accounts 33 34 def main_menu(self): 35 """ 36 Realiza a coleta dos dados da nova receita e a insere no banco de dados. 37 """ 38 user_name, user_document = Login().get_user_data(return_option="user_doc_name") 39 logged_user, logged_user_password = Login().get_user_data(return_option="user_login_password") 40 41 user_current_accounts = self.get_user_current_accounts() 42 43 col4, col5, col6 = st.columns(3) 44 45 if len(user_current_accounts) == 0: 46 with col5: 47 st.info("Você ainda não possui contas correntes cadastradas.") 48 49 elif len(user_current_accounts) >= 1: 50 51 with col4: 52 53 st.subheader(body=":computer: Entrada de Dados") 54 55 with st.expander(label="Dados", expanded=True): 56 57 options = { 58 "Sim": "S", 59 "Não": "N" 60 } 61 62 id = QueryExecutor().simple_consult_brute_query(last_revenue_id_query) 63 id = QueryExecutor().treat_simple_result(id, to_remove_list) 64 id = int(id) + 1 65 66 description = st.text_input(label=":lower_left_ballpoint_pen: Descrição", placeholder="Informe uma descrição", max_chars=25, help="Descrição simples para a receita.") 67 value = st.number_input( 68 label=":dollar: Valor", min_value=0.01) 69 date = st.date_input(label=":date: Data") 70 category = st.selectbox( 71 label=":card_index_dividers: Categoria", options=revenue_categories) 72 account = st.selectbox( 73 label=":bank: Conta", options=user_current_accounts) 74 received = st.selectbox( 75 label=":inbox_tray: Recebido", options=options.keys()) 76 77 confirm_values_check_box = st.checkbox( 78 label="Confirmar Dados") 79 80 send_revenue_button = st.button( 81 label=":pencil: Gerar Comprovante", key="send_revenue_button") 82 83 with col6: 84 85 if confirm_values_check_box and send_revenue_button: 86 87 received = options[received] 88 89 with col5: 90 with st.spinner("Aguarde..."): 91 sleep(2.5) 92 93 st.subheader( 94 body=":white_check_mark: Validação de Dados") 95 96 if description != "" and category != "Selecione uma opção": 97 with col5: 98 with st.expander(label="Informações", expanded=True): 99 st.success(body="Dados Válidos.") 100 101 actual_horary = GetActualTime().get_actual_time() 102 103 revenue_query = "INSERT INTO receitas (descricao, valor, data, horario, categoria, conta, proprietario_receita, documento_proprietario_receita, recebido) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)" 104 values = (description, value, date, actual_horary, 105 category, account, user_name, user_document, received) 106 QueryExecutor().insert_query( 107 revenue_query, values, "Receita registrada com sucesso!", "Erro ao registrar receita:") 108 109 str_value = Variable().treat_complex_string(value) 110 111 log_query = '''INSERT INTO financas.logs_atividades (usuario_log, tipo_log, conteudo_log) VALUES ( %s, %s, %s);''' 112 log_values = (logged_user, "Registro", "Registrou uma receita no valor de R$ {} associada a conta {}.".format( 113 str_value, account)) 114 QueryExecutor().insert_query( 115 log_query, log_values, "Log gravado.", "Erro ao gravar log:") 116 117 with st.spinner("Aguarde..."): 118 sleep(2.5) 119 120 st.subheader(body=":pencil: Comprovante de Receita") 121 Receipts().generate_receipt( 122 'receitas', id, description, value, str(date), category, account) 123 124 elif description == "" or category == "Selecione uma opção": 125 with col5: 126 with st.expander(label="Informações", expanded=True): 127 if description == "": 128 st.error( 129 body="A descrição deve ser preenchida.") 130 if category == "Selecione uma opção": 131 st.error( 132 body="Informe uma categoria de receita.")
Classe que representa o cadastro de uma nova receita em contas correntes.
def
get_user_current_accounts(self):
18 def get_user_current_accounts(self): 19 """ 20 Consulta as contas correntes do usuário. 21 22 Returns 23 ------- 24 user_current_accounts : list 25 A lista com as contas correntes do usuário. 26 """ 27 user_name, user_document = Login().get_user_data(return_option="user_doc_name") 28 29 user_current_accounts = QueryExecutor().complex_consult_query(query=user_current_accounts_query, params=(user_name, user_document)) 30 user_current_accounts = QueryExecutor().treat_numerous_simple_result(user_current_accounts, to_remove_list) 31 32 return user_current_accounts
Consulta as contas correntes do usuário.
Returns
- user_current_accounts (list): A lista com as contas correntes do usuário.