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

Realiza a coleta dos dados da nova receita e a insere no banco de dados.