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.
def main_menu(self):
 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.")

Coleta os dados da nova receita de fundo de garantia.