import os import streamlit as st from st_pages import add_page_title, hide_pages import service.LoadService as LoadSvc import service.Mobyan.MobyanService as MobySvc import util.Config as Cfg import util.MapeamentoPorMes as Map import util.WriteFiles as WrtFiles import json import time import datetime import pandas as pd add_page_title() def jsonForm(folder_path='/Users/iurysilva/Downloads/lpremun/In/sincronizador'): filenames = os.listdir(folder_path) parceiros = { 'Almaviva': ('ALMAVIVA DO BRASIL TELEMARKETI, INFORMATICA S/A', 'almaviva.xlsx'), 'Perfoma': ('PERFORMA FACIL SERVICOS DE INTERNET', 'perfoma.xlsx'), } selected_filename1 = st.selectbox('Selecione o arquivo 1', filenames, placeholder="Escolha a planilha", index=None) selected_filename2 = st.selectbox('Selecione o arquivo 2', filenames, placeholder="Escolha a planilha", index=None) parceiro_selecionado = st.selectbox('Selecione um parceiro:', list(parceiros.keys())) procuraParceiro = parceiros[parceiro_selecionado] with open('/Users/iurysilva/Downloads/lpremun/In/json/parceiros/almaviva.json', 'r') as arquivo_json: dados = json.load(arquivo_json) mesApuracao = st.number_input("Insira o mês de apuração", placeholder="mês de apuração", min_value=1, max_value=12, value=dados["safra"]["mes"], step=1) jsonSearch = { 'arquivo1': selected_filename1, 'arquivo2': selected_filename2, 'parceiro': procuraParceiro, 'mesApuracao': mesApuracao, 'filtroExcel': parceiros[parceiro_selecionado][0], 'outExcel': parceiros[parceiro_selecionado][1] } return jsonSearch def jsonReadExcel(responseJsonExcel): # Especifique o caminho da pasta onde o arquivo Excel está localizado folder_path_out = '/Users/iurysilva/Downloads/lpremun/Out/EPS/2023/' if responseJsonExcel['planilhaBase'] < 10: mesSearch = f"0{responseJsonExcel['planilhaBase']}" else: mesSearch = f"{responseJsonExcel['planilhaBase']}" excelNameSearch = folder_path_out + mesSearch + "/consolidado/" + str(responseJsonExcel['data']['outExcel']) # Leia cada planilha existente em um dicionário de DataFrames excelApuracaoanterior = pd.ExcelFile(excelNameSearch) dfs_existente = {sheet_name: excelApuracaoanterior.parse(sheet_name) for sheet_name in excelApuracaoanterior.sheet_names} # Carregue os novos dados de outras planilhas em DataFrames arquivoLoad = '/Users/iurysilva/Downloads/lpremun/In/sincronizador/' + responseJsonExcel['data']['arquivo1'] arquivoLoad2 = '/Users/iurysilva/Downloads/lpremun/In/sincronizador/' + responseJsonExcel['data']['arquivo2'] planilhaBaseApuracao = pd.ExcelFile(arquivoLoad) planilhaControleHc = pd.ExcelFile(arquivoLoad2) sheetCopy = planilhaBaseApuracao.parse(planilhaBaseApuracao.sheet_names[0]) sheetCopy2 = planilhaControleHc.parse(planilhaControleHc.sheet_names[0]) # Lista de colunas a serem convertidas colunas_data = ['DT_PEDIDO', 'DT_CREDENCIAMENTO'] # Loop sobre as colunas e aplicar a transformação for coluna in colunas_data: if coluna in sheetCopy.columns: sheetCopy[coluna] = pd.to_datetime(sheetCopy[coluna], errors='coerce', format='%d/%m/%Y %H:%M:%S') sheetCopy[coluna] = sheetCopy[coluna].dt.strftime('%Y-%m-%d %H:%M:%S') # Filtre a primeira planilha com base no valor da coluna 'DESC_NOME_FANTASIA' dtDadosFiltrado = sheetCopy[sheetCopy['DESC_NOME_FANTASIA'] == responseJsonExcel['data']['filtroExcel']] # Adicione os novos dados filtrados ao dicionário de DataFrames existente dfs_existente[responseJsonExcel['nomeArquivoHc']] = sheetCopy2 dfs_existente[responseJsonExcel['nomeArquivoBase']] = dtDadosFiltrado # Reordene o dicionário para adicionar as novas planilhas nos primeiros lugares dfs_existente = {responseJsonExcel['nomeArquivoHc']: dfs_existente[responseJsonExcel['nomeArquivoHc']], responseJsonExcel['nomeArquivoBase']: dfs_existente[responseJsonExcel['nomeArquivoBase']], **dfs_existente} # Renomeie as colunas nos DataFrames existentes for sheet_name, df in dfs_existente.items(): # Verifique se as colunas existem antes de tentar renomear if 'CNPJ DO PARCEIRO' in df.columns: df.rename(columns={'CNPJ DO PARCEIRO': 'CNPJ_PARCEIRO'}, inplace=True) if 'CPF DO PROMOTOR' in df.columns: df.rename(columns={'CPF DO PROMOTOR': 'CPF_PROMOTOR'}, inplace=True) # Verifique se as colunas existem antes de tentar renomear if 'DATA NASCIMENTO' in df.columns: df.rename(columns={'DATA NASCIMENTO': 'data_nascimento'}, inplace=True) if 'DATA DE ADMISSÃO' in df.columns: df.rename(columns={'DATA DE ADMISSÃO': 'data_admissao'}, inplace=True) if 'DATA DE ADMISS√É∆íO' in df.columns: df.rename(columns={'DATA DE ADMISS√É∆íO': 'data_admissao'}, inplace=True) if 'DATA DE DESLIGAMENTO' in df.columns: df.rename(columns={'DATA DE DESLIGAMENTO': 'data_desligamento'}, inplace=True) # Verifique se as colunas existem antes de tentar converter para datetime # Verifique se as colunas existem antes de tentar converter para datetime if 'data_nascimento' in df.columns: df['data_nascimento'] = pd.to_datetime(df['data_nascimento'], errors='coerce', format='%d/%m/%Y').dt.strftime('%Y-%m-%d %H:%M:%S') if 'data_admissao' in df.columns: df['data_admissao'] = pd.to_datetime(df['data_admissao'], errors='coerce', format='%d/%m/%Y').dt.strftime('%Y-%m-%d %H:%M:%S') if 'data_desligamento' in df.columns: df['data_desligamento'] = pd.to_datetime(df['data_desligamento'], errors='coerce', format='%d/%m/%Y').dt.strftime('%Y-%m-%d %H:%M:%S') # Renomeie as colunas nos DataFrames existentes e adicione zeros à frente do login_parceiro for sheet_name, df in dfs_existente.items(): # Verifique se as colunas existem antes de tentar renomear if 'login_parceiro' in df.columns: # Adicione zeros à frente do login_parceiro df['login_parceiro'] = df['login_parceiro'].apply(lambda x: f"{x:014}") # Renomeie a coluna login_parceiro para CNPJ_PARCEIRO df.rename(columns={'login_parceiro': 'CNPJ_PARCEIRO'}, inplace=True) if 'login_promotor' in df.columns: # Renomeie a coluna login_promotor para CPF_PROMOTOR df.rename(columns={'login_promotor': 'CPF_PROMOTOR'}, inplace=True) for column in df.columns: if pd.api.types.is_datetime64_any_dtype(df[column]): df[column] = df[column].dt.strftime('%d/%m/%Y') # Crie um escritor de Excel usando o pandas com openpyxl escritor = pd.ExcelWriter('/Users/iurysilva/Downloads/lpremun/In/excel/' + responseJsonExcel['nomeArquivoNovo'], engine='openpyxl', datetime_format='dd/mm/yyyy') # Em seguida, você pode usar o to_excel como antes for sheet_name, df in dfs_existente.items(): # Aplicar formatação de string à coluna 'CNPJ_PARCEIRO' if 'CNPJ_PARCEIRO' in df.columns: df['CNPJ_PARCEIRO'] = df['CNPJ_PARCEIRO'].apply(lambda x: f"{x:014}") df.to_excel(escritor, sheet_name=sheet_name, index=False, encoding='utf-8') # Salve as alterações no arquivo Excel escritor.save() def defineVariaveis(response): mesesJson = { 1: "Jan", 2: "Fev", 3: "Mar", 4: "Abr", 5: "Mai", 6: "Jun", 7: "Jul", 8: "Ago", 9: "Set", 10: "Out", 11: "Nov", 12: "Dez" } planilhaBase = response['mesApuracao'] - 1 arquivo3 = f"Remuneracao Almaviva {mesesJson[planilhaBase]}_23" nome_arquivoNovo = f"Remuneracao Almaviva {mesesJson[response['mesApuracao']]}_23.xlsx" nome_arquivo_hc = f"Controle_HC_{response['mesApuracao']}_2023" if planilhaBase <= 9: nome_arquivo_base = f"{response['mesApuracao']}_2023" else: nome_arquivo_base = f"{response['mesApuracao']}_2023" responseJsonExcel = { 'data': response, 'arquivo3': arquivo3, 'nomeArquivoNovo': nome_arquivoNovo, 'nomeArquivoHc': nome_arquivo_hc, 'nomeArquivoBase': nome_arquivo_base, 'planilhaBase': planilhaBase } jsonReadExcel(responseJsonExcel) return responseJsonForm = jsonForm() if st.button('Rodar remuneração'): defineVariaveis(responseJsonForm)