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