expenses.pay_credit_card_invoice
1from dictionary.sql import owner_cards_query, card_invoices_query 2from dictionary.vars import today, to_remove_list, actual_year 3from functions.login import Login 4from functions.credit_card import Credit_Card 5from functions.get_actual_time import GetActualTime 6from functions.query_executor import QueryExecutor 7from functions.variable import Variable 8from screens.reports.receipts import Receipts 9from time import sleep 10import pandas as pd 11import streamlit as st 12 13 14class CreditCardInvoice: 15 """ 16 Classe que representa as faturas de cartão. 17 """ 18 def get_credit_card_expenses_data( 19 self, 20 selected_card: str, 21 selected_month: str, 22 ): 23 """ 24 Realiza a consulta dos dados das despesas do cartão no mês. 25 26 Parameters 27 ---------- 28 selected_card : str 29 O cartão selecionado. 30 selected_month: str 31 O mês selecionado. 32 33 Returns 34 ------- 35 month_year : str 36 O ano do mês selecionado. 37 month_name : str 38 O mês selecionado. 39 month_abbreviation : str 40 A abreviação do mês. 41 selected_card_linked_account : str 42 A conta vinculada ao cartão. 43 """ 44 user_name, user_document = Login().get_user_data( 45 return_option="user_doc_name" 46 ) 47 48 selected_card_linked_account_query = """ 49 SELECT 50 DISTINCT(cc.conta_associada) 51 FROM 52 contas 53 INNER JOIN 54 cartao_credito AS cc 55 ON contas.proprietario_conta = cc.proprietario_cartao 56 AND contas.documento_proprietario_conta = cc.documento_titular 57 WHERE 58 cc.nome_cartao = %s 59 AND contas.proprietario_conta = %s 60 AND contas.documento_proprietario_conta = %s; 61 """ 62 selected_card_linked_account = ( 63 QueryExecutor().simple_consult_query( 64 selected_card_linked_account_query, 65 params=( 66 selected_card, 67 user_name, 68 user_document 69 ) 70 ) 71 ) 72 selected_card_linked_account = QueryExecutor().treat_simple_result( 73 selected_card_linked_account, 74 to_remove_list 75 ) 76 77 month_data = selected_month.split() 78 month_data.pop(1) 79 month_data[1] = int(month_data[1]) 80 81 month_name = month_data[0] 82 month_year = month_data[1] 83 84 months_abbreviation_dictionary = { 85 "Janeiro": "Jan", 86 "Fevereiro": "Fev", 87 "Março": "Mar", 88 "Abril": "Abr", 89 "Maio": "Mai", 90 "Junho": "Jun", 91 "Julho": "Jul", 92 "Agosto": "Ago", 93 "Setembro": "Set", 94 "Outubro": "Out", 95 "Novembro": "Nov", 96 "Dezembro": "Dez" 97 } 98 month_abbreviation = months_abbreviation_dictionary[month_name] 99 100 return month_year, month_name, month_abbreviation, selected_card_linked_account 101 102 def show_expenses( 103 self, 104 selected_card: str, 105 selected_month: str, 106 column_disposition: 107 any 108 ): 109 """ 110 Exibe as faturas de cartão que ainda não foram pagas. 111 112 Parameters 113 ---------- 114 selected_card : str 115 O cartão de crédito selecionado pelo usuário. 116 selected_month : str 117 O mês da fatura selecionado pelo usuário. 118 """ 119 user_name, user_document = Login().get_user_data( 120 return_option="user_doc_name" 121 ) 122 logged_user, logged_user_password = Login().get_user_data( 123 return_option="user_login_password" 124 ) 125 126 month_year, month_name, month_abbreviation, selected_card_linked_account = self.get_credit_card_expenses_data(selected_card, selected_month) 127 128 month_expenses = Credit_Card().month_expenses( 129 selected_card, 130 month_year, 131 month_name 132 ) 133 134 str_month_expenses = Variable().treat_complex_string(month_expenses) 135 136 if month_expenses == 0: 137 with st.expander(label="Informação", expanded=True): 138 st.info( 139 body=""" 140 Você não tem valores a pagar neste cartão no mês de {}. 141 """.format(selected_month) 142 ) 143 144 elif month_expenses > 0: 145 id_list = Credit_Card().get_card_id_month_expenses( 146 selected_card, 147 month_year, month_name 148 ) 149 ( 150 descricao_list, 151 valor_list, 152 data_list, 153 categoria_list, 154 parcela_list 155 ) = ( 156 Credit_Card().get_complete_card_month_expenses( 157 selected_card, 158 month_year, 159 month_name 160 ) 161 ) 162 163 credit_card_month_expenses_list_df = pd.DataFrame({ 164 "Descrição": descricao_list, 165 "Valor": valor_list, 166 "Data": data_list, 167 "Categoria": categoria_list, 168 "Parcela": parcela_list, }) 169 credit_card_month_expenses_list_df["Valor"] = ( 170 credit_card_month_expenses_list_df["Valor"].apply( 171 lambda x: f"R$ {x:.2f}".replace(".", ",") 172 ) 173 ) 174 credit_card_month_expenses_list_df["Data"] = pd.to_datetime( 175 credit_card_month_expenses_list_df["Data"] 176 ).dt.strftime("%d/%m/%Y") 177 178 st.subheader( 179 body=":credit_card: Fatura de {}".format(selected_month) 180 ) 181 182 with st.expander(label="Valores", expanded=True): 183 st.info( 184 body=""" 185 Valor total da fatura: :heavy_dollar_sign:{} 186 """.format(str_month_expenses) 187 ) 188 st.data_editor( 189 credit_card_month_expenses_list_df, 190 hide_index=True, 191 use_container_width=True 192 ) 193 confirm_values_checkbox = st.checkbox( 194 label="Confirmar valores" 195 ) 196 197 description = "Fatura {}/{}".format(month_abbreviation, month_year) 198 st.info(description) 199 actual_horary = GetActualTime().get_actual_time() 200 201 pay_button = st.button(label=":pencil: Pagar Fatura") 202 expense_query = """ 203 INSERT INTO 204 despesas ( 205 descricao, 206 valor, 207 data, 208 horario, 209 categoria, 210 conta, 211 proprietario_despesa, 212 documento_proprietario_despesa, 213 pago 214 ) 215 VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s); 216 """ 217 values = ( 218 description, 219 month_expenses, 220 today, 221 actual_horary, 222 "Fatura Cartão", 223 selected_card_linked_account, 224 user_name, 225 user_document, 226 "S" 227 ) 228 229 update_invoice_query = ''' 230 UPDATE 231 fechamentos_cartao 232 SET fechado = 'S' 233 WHERE nome_cartao = '{}' 234 AND mes = '{}' 235 AND ano = '{}' 236 AND documento_titular = {}; 237 '''.format( 238 selected_card, 239 selected_month, 240 actual_year, 241 user_document 242 ) 243 244 if confirm_values_checkbox and pay_button: 245 QueryExecutor().update_table_registers( 246 "despesas_cartao_credito", 247 "despesa_cartao", 248 id_list 249 ) 250 QueryExecutor().insert_query( 251 expense_query, 252 values, 253 "Fatura paga com sucesso!", 254 "Erro ao pagar fatura:" 255 ) 256 QueryExecutor().update_table_unique_register( 257 update_invoice_query, 258 "Fatura fechada com sucesso!", 259 "Falha ao fechar fatura:" 260 ) 261 262 str_value = Variable().treat_complex_string(month_expenses) 263 264 log_query = ''' 265 INSERT INTO 266 financas.logs_atividades ( 267 usuario_log, 268 tipo_log, 269 conteudo_log 270 ) 271 VALUES ( %s, %s, %s); 272 ''' 273 log_values = ( 274 logged_user, 275 "Registro", 276 """ 277 Registrou uma despesa no valor de R$ {} 278 associada a conta {}.""".format( 279 str_value, 280 selected_card 281 ) 282 ) 283 QueryExecutor().insert_query( 284 log_query, 285 log_values, 286 "Log gravado.", 287 "Erro ao gravar log:" 288 ) 289 290 with column_disposition: 291 with st.spinner(text="Aguarde..."): 292 sleep(2.5) 293 st.subheader( 294 body=":pencil: Comprovante de Pagamento" 295 ) 296 with st.expander(label="Arquivo", expanded=True): 297 Receipts().generate_receipt( 298 "despesas", 299 id_list[0], 300 description="Fatura Cartão de {}".format( 301 selected_month 302 ), 303 value=month_expenses, 304 date=today, 305 category="Fatura Cartão", 306 account=selected_card_linked_account 307 ) 308 309 def main_menu(self): 310 """ 311 Exibe as faturas de cartão que ainda não foram pagas. 312 """ 313 user_name, user_document = Login().get_user_data( 314 return_option="user_doc_name" 315 ) 316 logged_user, logged_user_password = Login().get_user_data( 317 return_option="user_login_password" 318 ) 319 320 col1, col2, col3 = st.columns(3) 321 322 user_cards = QueryExecutor().complex_consult_query( 323 query=owner_cards_query, 324 params=(user_name, user_document) 325 ) 326 user_cards = QueryExecutor().treat_numerous_simple_result( 327 user_cards, to_remove_list 328 ) 329 330 if len(user_cards) == 0: 331 with col2: 332 st.info(body="Você ainda não possui cartões cadastrados.") 333 334 elif len(user_cards) >= 1: 335 with col3: 336 cl1, cl2 = st.columns(2) 337 with cl2: 338 selected_card = st.selectbox( 339 label="Selecione o cartão", 340 options=user_cards 341 ) 342 343 card_invoices_data = QueryExecutor().complex_consult_query( 344 query=card_invoices_query, 345 params=(selected_card, user_name, user_document) 346 ) 347 card_invoices_data = QueryExecutor().treat_numerous_simple_result( 348 card_invoices_data, to_remove_list 349 ) 350 351 with cl2: 352 selected_month = st.selectbox( 353 label="Selecione o mês", options=card_invoices_data 354 ) 355 356 with col1: 357 self.show_expenses( 358 selected_card, 359 selected_month, 360 column_disposition=col2 361 )
class
CreditCardInvoice:
15class CreditCardInvoice: 16 """ 17 Classe que representa as faturas de cartão. 18 """ 19 def get_credit_card_expenses_data( 20 self, 21 selected_card: str, 22 selected_month: str, 23 ): 24 """ 25 Realiza a consulta dos dados das despesas do cartão no mês. 26 27 Parameters 28 ---------- 29 selected_card : str 30 O cartão selecionado. 31 selected_month: str 32 O mês selecionado. 33 34 Returns 35 ------- 36 month_year : str 37 O ano do mês selecionado. 38 month_name : str 39 O mês selecionado. 40 month_abbreviation : str 41 A abreviação do mês. 42 selected_card_linked_account : str 43 A conta vinculada ao cartão. 44 """ 45 user_name, user_document = Login().get_user_data( 46 return_option="user_doc_name" 47 ) 48 49 selected_card_linked_account_query = """ 50 SELECT 51 DISTINCT(cc.conta_associada) 52 FROM 53 contas 54 INNER JOIN 55 cartao_credito AS cc 56 ON contas.proprietario_conta = cc.proprietario_cartao 57 AND contas.documento_proprietario_conta = cc.documento_titular 58 WHERE 59 cc.nome_cartao = %s 60 AND contas.proprietario_conta = %s 61 AND contas.documento_proprietario_conta = %s; 62 """ 63 selected_card_linked_account = ( 64 QueryExecutor().simple_consult_query( 65 selected_card_linked_account_query, 66 params=( 67 selected_card, 68 user_name, 69 user_document 70 ) 71 ) 72 ) 73 selected_card_linked_account = QueryExecutor().treat_simple_result( 74 selected_card_linked_account, 75 to_remove_list 76 ) 77 78 month_data = selected_month.split() 79 month_data.pop(1) 80 month_data[1] = int(month_data[1]) 81 82 month_name = month_data[0] 83 month_year = month_data[1] 84 85 months_abbreviation_dictionary = { 86 "Janeiro": "Jan", 87 "Fevereiro": "Fev", 88 "Março": "Mar", 89 "Abril": "Abr", 90 "Maio": "Mai", 91 "Junho": "Jun", 92 "Julho": "Jul", 93 "Agosto": "Ago", 94 "Setembro": "Set", 95 "Outubro": "Out", 96 "Novembro": "Nov", 97 "Dezembro": "Dez" 98 } 99 month_abbreviation = months_abbreviation_dictionary[month_name] 100 101 return month_year, month_name, month_abbreviation, selected_card_linked_account 102 103 def show_expenses( 104 self, 105 selected_card: str, 106 selected_month: str, 107 column_disposition: 108 any 109 ): 110 """ 111 Exibe as faturas de cartão que ainda não foram pagas. 112 113 Parameters 114 ---------- 115 selected_card : str 116 O cartão de crédito selecionado pelo usuário. 117 selected_month : str 118 O mês da fatura selecionado pelo usuário. 119 """ 120 user_name, user_document = Login().get_user_data( 121 return_option="user_doc_name" 122 ) 123 logged_user, logged_user_password = Login().get_user_data( 124 return_option="user_login_password" 125 ) 126 127 month_year, month_name, month_abbreviation, selected_card_linked_account = self.get_credit_card_expenses_data(selected_card, selected_month) 128 129 month_expenses = Credit_Card().month_expenses( 130 selected_card, 131 month_year, 132 month_name 133 ) 134 135 str_month_expenses = Variable().treat_complex_string(month_expenses) 136 137 if month_expenses == 0: 138 with st.expander(label="Informação", expanded=True): 139 st.info( 140 body=""" 141 Você não tem valores a pagar neste cartão no mês de {}. 142 """.format(selected_month) 143 ) 144 145 elif month_expenses > 0: 146 id_list = Credit_Card().get_card_id_month_expenses( 147 selected_card, 148 month_year, month_name 149 ) 150 ( 151 descricao_list, 152 valor_list, 153 data_list, 154 categoria_list, 155 parcela_list 156 ) = ( 157 Credit_Card().get_complete_card_month_expenses( 158 selected_card, 159 month_year, 160 month_name 161 ) 162 ) 163 164 credit_card_month_expenses_list_df = pd.DataFrame({ 165 "Descrição": descricao_list, 166 "Valor": valor_list, 167 "Data": data_list, 168 "Categoria": categoria_list, 169 "Parcela": parcela_list, }) 170 credit_card_month_expenses_list_df["Valor"] = ( 171 credit_card_month_expenses_list_df["Valor"].apply( 172 lambda x: f"R$ {x:.2f}".replace(".", ",") 173 ) 174 ) 175 credit_card_month_expenses_list_df["Data"] = pd.to_datetime( 176 credit_card_month_expenses_list_df["Data"] 177 ).dt.strftime("%d/%m/%Y") 178 179 st.subheader( 180 body=":credit_card: Fatura de {}".format(selected_month) 181 ) 182 183 with st.expander(label="Valores", expanded=True): 184 st.info( 185 body=""" 186 Valor total da fatura: :heavy_dollar_sign:{} 187 """.format(str_month_expenses) 188 ) 189 st.data_editor( 190 credit_card_month_expenses_list_df, 191 hide_index=True, 192 use_container_width=True 193 ) 194 confirm_values_checkbox = st.checkbox( 195 label="Confirmar valores" 196 ) 197 198 description = "Fatura {}/{}".format(month_abbreviation, month_year) 199 st.info(description) 200 actual_horary = GetActualTime().get_actual_time() 201 202 pay_button = st.button(label=":pencil: Pagar Fatura") 203 expense_query = """ 204 INSERT INTO 205 despesas ( 206 descricao, 207 valor, 208 data, 209 horario, 210 categoria, 211 conta, 212 proprietario_despesa, 213 documento_proprietario_despesa, 214 pago 215 ) 216 VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s); 217 """ 218 values = ( 219 description, 220 month_expenses, 221 today, 222 actual_horary, 223 "Fatura Cartão", 224 selected_card_linked_account, 225 user_name, 226 user_document, 227 "S" 228 ) 229 230 update_invoice_query = ''' 231 UPDATE 232 fechamentos_cartao 233 SET fechado = 'S' 234 WHERE nome_cartao = '{}' 235 AND mes = '{}' 236 AND ano = '{}' 237 AND documento_titular = {}; 238 '''.format( 239 selected_card, 240 selected_month, 241 actual_year, 242 user_document 243 ) 244 245 if confirm_values_checkbox and pay_button: 246 QueryExecutor().update_table_registers( 247 "despesas_cartao_credito", 248 "despesa_cartao", 249 id_list 250 ) 251 QueryExecutor().insert_query( 252 expense_query, 253 values, 254 "Fatura paga com sucesso!", 255 "Erro ao pagar fatura:" 256 ) 257 QueryExecutor().update_table_unique_register( 258 update_invoice_query, 259 "Fatura fechada com sucesso!", 260 "Falha ao fechar fatura:" 261 ) 262 263 str_value = Variable().treat_complex_string(month_expenses) 264 265 log_query = ''' 266 INSERT INTO 267 financas.logs_atividades ( 268 usuario_log, 269 tipo_log, 270 conteudo_log 271 ) 272 VALUES ( %s, %s, %s); 273 ''' 274 log_values = ( 275 logged_user, 276 "Registro", 277 """ 278 Registrou uma despesa no valor de R$ {} 279 associada a conta {}.""".format( 280 str_value, 281 selected_card 282 ) 283 ) 284 QueryExecutor().insert_query( 285 log_query, 286 log_values, 287 "Log gravado.", 288 "Erro ao gravar log:" 289 ) 290 291 with column_disposition: 292 with st.spinner(text="Aguarde..."): 293 sleep(2.5) 294 st.subheader( 295 body=":pencil: Comprovante de Pagamento" 296 ) 297 with st.expander(label="Arquivo", expanded=True): 298 Receipts().generate_receipt( 299 "despesas", 300 id_list[0], 301 description="Fatura Cartão de {}".format( 302 selected_month 303 ), 304 value=month_expenses, 305 date=today, 306 category="Fatura Cartão", 307 account=selected_card_linked_account 308 ) 309 310 def main_menu(self): 311 """ 312 Exibe as faturas de cartão que ainda não foram pagas. 313 """ 314 user_name, user_document = Login().get_user_data( 315 return_option="user_doc_name" 316 ) 317 logged_user, logged_user_password = Login().get_user_data( 318 return_option="user_login_password" 319 ) 320 321 col1, col2, col3 = st.columns(3) 322 323 user_cards = QueryExecutor().complex_consult_query( 324 query=owner_cards_query, 325 params=(user_name, user_document) 326 ) 327 user_cards = QueryExecutor().treat_numerous_simple_result( 328 user_cards, to_remove_list 329 ) 330 331 if len(user_cards) == 0: 332 with col2: 333 st.info(body="Você ainda não possui cartões cadastrados.") 334 335 elif len(user_cards) >= 1: 336 with col3: 337 cl1, cl2 = st.columns(2) 338 with cl2: 339 selected_card = st.selectbox( 340 label="Selecione o cartão", 341 options=user_cards 342 ) 343 344 card_invoices_data = QueryExecutor().complex_consult_query( 345 query=card_invoices_query, 346 params=(selected_card, user_name, user_document) 347 ) 348 card_invoices_data = QueryExecutor().treat_numerous_simple_result( 349 card_invoices_data, to_remove_list 350 ) 351 352 with cl2: 353 selected_month = st.selectbox( 354 label="Selecione o mês", options=card_invoices_data 355 ) 356 357 with col1: 358 self.show_expenses( 359 selected_card, 360 selected_month, 361 column_disposition=col2 362 )
Classe que representa as faturas de cartão.
def
get_credit_card_expenses_data(self, selected_card: str, selected_month: str):
19 def get_credit_card_expenses_data( 20 self, 21 selected_card: str, 22 selected_month: str, 23 ): 24 """ 25 Realiza a consulta dos dados das despesas do cartão no mês. 26 27 Parameters 28 ---------- 29 selected_card : str 30 O cartão selecionado. 31 selected_month: str 32 O mês selecionado. 33 34 Returns 35 ------- 36 month_year : str 37 O ano do mês selecionado. 38 month_name : str 39 O mês selecionado. 40 month_abbreviation : str 41 A abreviação do mês. 42 selected_card_linked_account : str 43 A conta vinculada ao cartão. 44 """ 45 user_name, user_document = Login().get_user_data( 46 return_option="user_doc_name" 47 ) 48 49 selected_card_linked_account_query = """ 50 SELECT 51 DISTINCT(cc.conta_associada) 52 FROM 53 contas 54 INNER JOIN 55 cartao_credito AS cc 56 ON contas.proprietario_conta = cc.proprietario_cartao 57 AND contas.documento_proprietario_conta = cc.documento_titular 58 WHERE 59 cc.nome_cartao = %s 60 AND contas.proprietario_conta = %s 61 AND contas.documento_proprietario_conta = %s; 62 """ 63 selected_card_linked_account = ( 64 QueryExecutor().simple_consult_query( 65 selected_card_linked_account_query, 66 params=( 67 selected_card, 68 user_name, 69 user_document 70 ) 71 ) 72 ) 73 selected_card_linked_account = QueryExecutor().treat_simple_result( 74 selected_card_linked_account, 75 to_remove_list 76 ) 77 78 month_data = selected_month.split() 79 month_data.pop(1) 80 month_data[1] = int(month_data[1]) 81 82 month_name = month_data[0] 83 month_year = month_data[1] 84 85 months_abbreviation_dictionary = { 86 "Janeiro": "Jan", 87 "Fevereiro": "Fev", 88 "Março": "Mar", 89 "Abril": "Abr", 90 "Maio": "Mai", 91 "Junho": "Jun", 92 "Julho": "Jul", 93 "Agosto": "Ago", 94 "Setembro": "Set", 95 "Outubro": "Out", 96 "Novembro": "Nov", 97 "Dezembro": "Dez" 98 } 99 month_abbreviation = months_abbreviation_dictionary[month_name] 100 101 return month_year, month_name, month_abbreviation, selected_card_linked_account
Realiza a consulta dos dados das despesas do cartão no mês.
Parameters
- selected_card (str): O cartão selecionado.
- selected_month (str): O mês selecionado.
Returns
- month_year (str): O ano do mês selecionado.
- month_name (str): O mês selecionado.
- month_abbreviation (str): A abreviação do mês.
- selected_card_linked_account (str): A conta vinculada ao cartão.
def
show_expenses( self, selected_card: str, selected_month: str, column_disposition: <built-in function any>):
103 def show_expenses( 104 self, 105 selected_card: str, 106 selected_month: str, 107 column_disposition: 108 any 109 ): 110 """ 111 Exibe as faturas de cartão que ainda não foram pagas. 112 113 Parameters 114 ---------- 115 selected_card : str 116 O cartão de crédito selecionado pelo usuário. 117 selected_month : str 118 O mês da fatura selecionado pelo usuário. 119 """ 120 user_name, user_document = Login().get_user_data( 121 return_option="user_doc_name" 122 ) 123 logged_user, logged_user_password = Login().get_user_data( 124 return_option="user_login_password" 125 ) 126 127 month_year, month_name, month_abbreviation, selected_card_linked_account = self.get_credit_card_expenses_data(selected_card, selected_month) 128 129 month_expenses = Credit_Card().month_expenses( 130 selected_card, 131 month_year, 132 month_name 133 ) 134 135 str_month_expenses = Variable().treat_complex_string(month_expenses) 136 137 if month_expenses == 0: 138 with st.expander(label="Informação", expanded=True): 139 st.info( 140 body=""" 141 Você não tem valores a pagar neste cartão no mês de {}. 142 """.format(selected_month) 143 ) 144 145 elif month_expenses > 0: 146 id_list = Credit_Card().get_card_id_month_expenses( 147 selected_card, 148 month_year, month_name 149 ) 150 ( 151 descricao_list, 152 valor_list, 153 data_list, 154 categoria_list, 155 parcela_list 156 ) = ( 157 Credit_Card().get_complete_card_month_expenses( 158 selected_card, 159 month_year, 160 month_name 161 ) 162 ) 163 164 credit_card_month_expenses_list_df = pd.DataFrame({ 165 "Descrição": descricao_list, 166 "Valor": valor_list, 167 "Data": data_list, 168 "Categoria": categoria_list, 169 "Parcela": parcela_list, }) 170 credit_card_month_expenses_list_df["Valor"] = ( 171 credit_card_month_expenses_list_df["Valor"].apply( 172 lambda x: f"R$ {x:.2f}".replace(".", ",") 173 ) 174 ) 175 credit_card_month_expenses_list_df["Data"] = pd.to_datetime( 176 credit_card_month_expenses_list_df["Data"] 177 ).dt.strftime("%d/%m/%Y") 178 179 st.subheader( 180 body=":credit_card: Fatura de {}".format(selected_month) 181 ) 182 183 with st.expander(label="Valores", expanded=True): 184 st.info( 185 body=""" 186 Valor total da fatura: :heavy_dollar_sign:{} 187 """.format(str_month_expenses) 188 ) 189 st.data_editor( 190 credit_card_month_expenses_list_df, 191 hide_index=True, 192 use_container_width=True 193 ) 194 confirm_values_checkbox = st.checkbox( 195 label="Confirmar valores" 196 ) 197 198 description = "Fatura {}/{}".format(month_abbreviation, month_year) 199 st.info(description) 200 actual_horary = GetActualTime().get_actual_time() 201 202 pay_button = st.button(label=":pencil: Pagar Fatura") 203 expense_query = """ 204 INSERT INTO 205 despesas ( 206 descricao, 207 valor, 208 data, 209 horario, 210 categoria, 211 conta, 212 proprietario_despesa, 213 documento_proprietario_despesa, 214 pago 215 ) 216 VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s); 217 """ 218 values = ( 219 description, 220 month_expenses, 221 today, 222 actual_horary, 223 "Fatura Cartão", 224 selected_card_linked_account, 225 user_name, 226 user_document, 227 "S" 228 ) 229 230 update_invoice_query = ''' 231 UPDATE 232 fechamentos_cartao 233 SET fechado = 'S' 234 WHERE nome_cartao = '{}' 235 AND mes = '{}' 236 AND ano = '{}' 237 AND documento_titular = {}; 238 '''.format( 239 selected_card, 240 selected_month, 241 actual_year, 242 user_document 243 ) 244 245 if confirm_values_checkbox and pay_button: 246 QueryExecutor().update_table_registers( 247 "despesas_cartao_credito", 248 "despesa_cartao", 249 id_list 250 ) 251 QueryExecutor().insert_query( 252 expense_query, 253 values, 254 "Fatura paga com sucesso!", 255 "Erro ao pagar fatura:" 256 ) 257 QueryExecutor().update_table_unique_register( 258 update_invoice_query, 259 "Fatura fechada com sucesso!", 260 "Falha ao fechar fatura:" 261 ) 262 263 str_value = Variable().treat_complex_string(month_expenses) 264 265 log_query = ''' 266 INSERT INTO 267 financas.logs_atividades ( 268 usuario_log, 269 tipo_log, 270 conteudo_log 271 ) 272 VALUES ( %s, %s, %s); 273 ''' 274 log_values = ( 275 logged_user, 276 "Registro", 277 """ 278 Registrou uma despesa no valor de R$ {} 279 associada a conta {}.""".format( 280 str_value, 281 selected_card 282 ) 283 ) 284 QueryExecutor().insert_query( 285 log_query, 286 log_values, 287 "Log gravado.", 288 "Erro ao gravar log:" 289 ) 290 291 with column_disposition: 292 with st.spinner(text="Aguarde..."): 293 sleep(2.5) 294 st.subheader( 295 body=":pencil: Comprovante de Pagamento" 296 ) 297 with st.expander(label="Arquivo", expanded=True): 298 Receipts().generate_receipt( 299 "despesas", 300 id_list[0], 301 description="Fatura Cartão de {}".format( 302 selected_month 303 ), 304 value=month_expenses, 305 date=today, 306 category="Fatura Cartão", 307 account=selected_card_linked_account 308 )
Exibe as faturas de cartão que ainda não foram pagas.
Parameters
- selected_card (str): O cartão de crédito selecionado pelo usuário.
- selected_month (str): O mês da fatura selecionado pelo usuário.