def busca_dados_cloud(params_exec, dados_base): print('- Iniciando busca de dados no cloud.') url_fonte_dados = 'https://compras.betha.cloud/compras/dados/api/unidadesmedida' campos = 'id, nome, simbolo' contador = 0 registros_inseridos = 0 lista_dados = dados_base.to_dict('records') total_dados = len(lista_dados) for item in lista_dados: contador += 1 print(f'\r- Verificando registros: {contador}/{total_dados}', '\n' if contador == total_dados else '', end='') criterio = f'nome = \'{item["descricao"]}\' or simbolo = \'{item["simbolo"]}\'' registro_cloud = interacao_cloud.busca_api_fonte_dados( params_exec, url=url_fonte_dados, campos=campos, criterio=criterio) if registro_cloud is not None and len(registro_cloud) > 0: hash_chaves = model.gerar_hash_chaves(sistema, tipo_registro, item["cnicodigo"]) registro_encontrado = { 'sistema': sistema, 'tipo_registro': tipo_registro, 'hash_chave_dsk': hash_chaves, 'descricao_tipo_registro': 'Cadastro de Unidades de Medida', 'id_gerado': registro_cloud[0]['id'], 'i_chave_dsk1': item["cnicodigo"] } model.insere_tabela_controle_migracao_registro( params_exec, lista_req=[registro_encontrado]) registros_inseridos += 1 print( f'- Foram inseridos {registros_inseridos} registros na tabela de controle.' )
def busca_dados_cloud(params_exec): print('- Iniciando busca de dados no cloud.') campos = 'id,responsavel(pessoa(cpfCnpj)),comissaoLicitacao(id),atribuicao' registro_cloud = interacao_cloud.busca_api_fonte_dados(params_exec, url=url, campos=campos) contador = 0 dados = [] for item in registro_cloud: hash_chaves = model.gerar_hash_chaves( sistema, tipo_registro, item['comissaoLicitacao']['id'], item['responsavel']['pessoa']['cpfCnpj'], item['atribuicao']) registro_encontrado = { 'sistema': sistema, 'tipo_registro': tipo_registro, 'hash_chave_dsk': hash_chaves, 'descricao_tipo_registro': 'Cadastro de Especificação de Material', 'id_gerado': item['id'], 'i_chave_dsk1': item['comissaoLicitacao']['id'], 'i_chave_dsk2': item['responsavel']['pessoa']['cpfCnpj'], 'i_chave_dsk3': item['atribuicao'] } # print('registro_encontrado', registro_encontrado) dados.append(registro_encontrado) contador += 1 print(f'Busca de dados finalizada. Foram encotrados {contador} registros.') model.insere_tabela_controle_migracao_registro(params_exec, lista_req=dados) print(f'Tabelas de controle atualizadas com sucesso.')
def busca_dados_cloud(params_exec): print('- Iniciando busca de dados no cloud.') campos = 'configuracao(id), id, configuracao.processoAdministrativo.id' lista_dados = [] if params_exec['clicodigo'] == '2016': id_entidade = 56 # Prefeitura elif params_exec['clicodigo'] == '13482': id_entidade = 2739 # Saúde elif params_exec['clicodigo'] == '16975': id_entidade = 2734 # FAMABI elif params_exec['clicodigo'] == '9769': id_entidade = 2988 # Institudo elif params_exec['clicodigo'] == '11968': id_entidade = 34 # Câmara criterio = f'configuracao.processoAdministrativo.parametroExercicio.exercicio = {params_exec["ano"]} and entidade.id = {id_entidade}' registros_cloud = interacao_cloud.busca_api_fonte_dados(params_exec, url=url, campos=campos, criterio=criterio) if registros_cloud is not None and len(registros_cloud) > 0: for item in registros_cloud: hash_chaves = model.gerar_hash_chaves( sistema, tipo_registro, item['configuracao']['processoAdministrativo']['id'], item['id']) registro_encontrado = { 'sistema': sistema, 'tipo_registro': tipo_registro, 'hash_chave_dsk': hash_chaves, 'descricao_tipo_registro': 'Cadastro de Especificação de Material', 'id_gerado': item['configuracao']['id'], 'i_chave_dsk1': item['configuracao']['processoAdministrativo']['id'], 'i_chave_dsk2': item['id'] } # print('registro_encontrado', type(registro_encontrado), registro_encontrado) lista_dados.append(registro_encontrado) model.insere_tabela_controle_migracao_registro(params_exec, lista_req=lista_dados)
def get_id_item(params_exec, registro): id_registro = None try: url = 'https://contratos.betha.cloud/contratos/dados/api/solicitacoesfornecimentositens' desc = registro["prddescricao"].replace("'", "_").replace("\r", "__").replace("\n", "__") criterio = f'solicitacaoFornecimento.id = {registro["id_sf"]} and (material.descricao like \'%{desc}%\' or especificacao.descricao like \'%{desc}%\')' campos = 'id' registro_cloud = interacao_cloud.busca_api_fonte_dados(params_exec, url=url, campos=campos, criterio=criterio) if registro_cloud is not None and len(registro_cloud) == 1: # print(registro_cloud) id_registro = registro_cloud[0]['id'] except Exception as error: print(f'Erro ao executar função "get_id_item". {error}') logging.error(f'Erro ao executar função "get_id_item". {error}') finally: return id_registro
def busca_dados_cloud(params_exec, dados_base): print('- Iniciando busca de dados no cloud.') url_fonte_dados = 'https://compras.betha.cloud/compras/dados/api/despesas' campos = 'entidade(id), parametroExercicio(exercicio), recursoContabil(numero), organograma, funcao, subFuncao, ' \ 'programa, acao, natureza' contador = 0 registros_inseridos = 0 lista_dados = dados_base.to_dict('records') total_dados = len(lista_dados) for item in lista_dados: contador += 1 print(f'\r- Verificando registros: {contador}/{total_dados}', '\n' if contador == total_dados else '', end='') criterio = f'entidade.id = {item["id_entidade"]} and parametroExercicio.exercicio = {item["loaano"]} and ' \ f'organograma = \'{item["organograma"]}\' and funcao = {item["funcao"]} and subFuncao = ' \ f'{item["subfuncao"]} and programa = {item["programa"]} and acao = \'{item["acao"]}\' and ' \ f'natureza = \'{item["natureza"]}\' and recursoContabil.numero = \'{item["recurso_bth"]}\'' # print('criterio', criterio) registro_cloud = interacao_cloud.busca_api_fonte_dados( params_exec, url=url_fonte_dados, campos=campos, criterio=criterio) if registro_cloud is not None and len(registro_cloud) > 0: hash_chaves = model.gerar_hash_chaves(sistema, tipo_registro, item["id_entidade"], item['loaano'], item['dotcodigo']) registro_encontrado = { 'sistema': sistema, 'tipo_registro': tipo_registro, 'hash_chave_dsk': hash_chaves, 'descricao_tipo_registro': 'Cadastro de Despesas', 'id_gerado': registro_cloud[0]['id'], 'i_chave_dsk1': item['id_entidade'], 'i_chave_dsk2': item['loaano'], 'i_chave_dsk3': item['dotcodigo'] } model.insere_tabela_controle_migracao_registro( params_exec, lista_req=[registro_encontrado]) registros_inseridos += 1 print( f'- Foram inseridos {registros_inseridos} registros na tabela de controle.' )
def coletar_dados_bth_processo(params_exec): print('- Iniciando coleta de dados do processo no Betha Cloud.') dados_processo = None try: id_entidade = traduzir_clicodigo(params_exec['clicodigo']) url = 'https://compras.betha.cloud/compras/dados/api/processosadministrativos' criterio = f'entidade.id = {id_entidade} and parametroExercicio.exercicio = {params_exec["ano"]} and numeroProcesso = {params_exec["minuta"]}' campos = 'id, formaContratacao(numeroSequencial, anoSequencial), numeroProcesso, parametroExercicio(exercicio), entidade(id, nome), formaContratacao(modalidade(descricao)), localEntrega(descricao), tipoObjeto(descricao), formaJulgamento(descricao), prazoEntrega(descricao), formaPagamento(descricao), regimeExecucao(descricao), dataProcesso, valorTotalItens, quantidadeItens' registro_cloud = interacao_cloud.busca_api_fonte_dados( params_exec, url=url, campos=campos, criterio=criterio) if registro_cloud is not None and len(registro_cloud) == 1: dados_processo = registro_cloud[0] except Exception as error: print(f'Erro ao executar função "coletar_dados_bth_processo". {error}') logging.error( f'Erro ao executar função "coletar_dados_bth_processo". {error}') finally: return dados_processo
def busca_dados_cloud(params_exec, dados_base): print('- Iniciando busca de dados no cloud.') campos = 'id' contador = 1 lista_dados = dados_base.to_dict('records') total_dados = len(lista_dados) for item in lista_dados: print(f'\r- Verificando registros: {contador}/{total_dados}', '\n' if contador == total_dados else '', end='') criterio = f'participante.fornecedor.pessoa.cpfCnpj = \'{item["cpf_participante"]}\' ' \ f'and item.id = {item["id_item"]} ' \ f'and processoAdministrativo.id = {item["id_processo"]}' registro_cloud = interacao_cloud.busca_api_fonte_dados(params_exec, url=url, campos=campos, criterio=criterio) if registro_cloud is not None: if len(registro_cloud) > 0: # print('id encontrado: ', registro_cloud[0]['id'], ' | hash: ', item["hash_chave_dsk"]) logging.info(f'Atualizando registro \'{item["hash_chave_dsk"]}\' com o id {registro_cloud[0]["id"]}') model.atualiza_controle_migracao_registro(registro_cloud[0]['id'], item["hash_chave_dsk"]) contador += 1
def busca_dados_cloud(params_exec, dados_base): print('- Iniciando busca de dados no cloud.') campos = 'id, material.id' contador = 1 lista_dados = dados_base.to_dict('records') total_dados = len(lista_dados) for item in lista_dados: print(f'\r- Enviando registros: {contador}/{total_dados}', '\n' if contador == total_dados else '', end='') criterio = f'material.id = {item["id_material"]}' registro_cloud = interacao_cloud.busca_api_fonte_dados(params_exec, url=url, campos=campos, criterio=criterio) if registro_cloud is not None: hash_chaves = model.gerar_hash_chaves(sistema, tipo_registro, item["codigo_produto"]) registro_encontrado = { 'sistema': sistema, 'tipo_registro': tipo_registro, 'hash_chave_dsk': hash_chaves, 'descricao_tipo_registro': 'Cadastro de Especificação de Material', 'id_gerado': registro_cloud[0]['id'], 'i_chave_dsk1': item["codigo_produto"] } model.insere_tabela_controle_migracao_registro(params_exec, lista_req=[registro_encontrado]) contador += 1