def Selecionar(self, sequencia_arquivo): banco_dados.Conectar() try: variaveis_bind = {'sequencia_arquivo': sequencia_arquivo} comando_sql = 'SELECT ARG.SEQUENCIA_ARQUIVO \ , ARG.NOME_ARQUIVO \ , ARG.MIMETYPE_ARQUIVO \ , ARG.CHARSET_ARQUIVO \ , ARG.BLOB_ARQUIVO \ , ARG.DTHR_IMPORTACAO_ARQUIVO \ , ARG.USUARIO_IMPORTACAO_ARQUIVO \ FROM CAS_ARQUIVOS_REC_GLOSAS ARG \ WHERE ARG.SEQUENCIA_ARQUIVO = :sequencia_arquivo \ AND (ARG.STATUS_PROCESSAMENTO_ARQUIVO IS NULL OR \ ARG.STATUS_PROCESSAMENTO_ARQUIVO = \'P\')' banco_dados.Executar(comando_sql, variaveis_bind) arquivo_recurso = banco_dados.BuscarUm() if arquivo_recurso != None: self.sequencia_arquivo = arquivo_recurso[0] self.nome_arquivo = arquivo_recurso[1] self.mimetype_arquivo = arquivo_recurso[2] self.charset_arquivo = arquivo_recurso[3] self.blob_arquivo = arquivo_recurso[4].read() self.dthr_importacao_arquivo = arquivo_recurso[5] self.usuario_importacao_arquivo = arquivo_recurso[6] except Exception as e: logger.error(e, exc_info=True) raise finally: banco_dados.Desconectar()
def __init__(self): banco_dados.Conectar() try: comando_sql = 'SELECT PR.EMAIL_ADMINISTRADOR \ , PR.URL_PROXY \ , PR.USUARIO_PROXY \ , PR.SENHA_PROXY \ , PR.URL_LOGIN_SITE_RECURSOS \ , PR.URL_SITE_RECURSOS \ , PR.USUARIO_SITE_RECURSOS \ , PR.SENHA_SITE_RECURSOS \ FROM CAS_PARAMETROS_RECURSOS PR' banco_dados.Executar(comando_sql) parametros = banco_dados.BuscarUm() self.servidor_proxy = str(parametros[1]).rsplit(':', 1)[0] self.porta_servidor_proxy = str(parametros[1]).rsplit(':', 1)[1] self.usuario_proxy = parametros[2] self.senha_usuario_proxy = parametros[3] self.url_site_login = parametros[4] self.url_site_recurso = parametros[5] self.usuario_site = parametros[6] self.senha_site = parametros[7] except Exception as e: raise finally: banco_dados.Desconectar()
def Selecionar(self, sequencia_arq_rec_convenio): banco_dados.Conectar() try: variaveis_bind = { 'sequencia_arq_rec_convenio': sequencia_arq_rec_convenio } comando_sql = '''SELECT ARC.CODIGO_DA_FILIAL , ARC.NSU_DA_TRANSACAO FROM MTZ_ARQS_RECEITAS_CONVENIOS ARC WHERE ARC.SEQUENCIA_ARQ_REC_CONVENIO = :sequencia_arq_rec_convenio''' banco_dados.Executar(comando_sql, variaveis_bind) dados_arquivo = banco_dados.BuscarUm() if dados_arquivo != None: self.codigo_filial = dados_arquivo[0] self.nsu_transacao = dados_arquivo[1] status_processamento = banco_dados.ExecutarFuncao( 'PCK_MTZ_ARQS_RECS_CONVENIOS.FNC_PROCESSA_ARQUIVO', 'CHAR', [sequencia_arq_rec_convenio]) banco_dados.Comitar() if status_processamento == 'A': return True else: comando_sql = '''SELECT ARC.LOG_PROCESSAMENTO FROM MTZ_ARQS_RECEITAS_CONVENIOS ARC WHERE ARC.SEQUENCIA_ARQ_REC_CONVENIO = :sequencia_arq_rec_convenio''' banco_dados.Executar(comando_sql, variaveis_bind) dados_arquivo = banco_dados.BuscarUm() raise Exception(str(dados_arquivo[0])) else: return False return True except Exception as e: raise finally: banco_dados.Desconectar()
def Processar(self): banco_dados.Conectar() try: arquivo_excel = xlrd.open_workbook(file_contents=self.blob_arquivo) planilha_excel = arquivo_excel.sheet_by_index(0) for numero_linha in range(1, planilha_excel.nrows): variaveis_bind_planilha = { 'numero_carta_remessa': planilha_excel.cell(numero_linha, 0).value, 'numero_guia': planilha_excel.cell(numero_linha, 1).value, 'numero_autorizacao': planilha_excel.cell(numero_linha, 2).value, 'numero_cupom_fiscal': planilha_excel.cell(numero_linha, 6).value, 'data_atendimento': str( datetime.datetime(*xlrd.xldate_as_tuple( planilha_excel.cell(numero_linha, 7).value, arquivo_excel.datemode))), 'ean_enviado': planilha_excel.cell(numero_linha, 10).value, 'valor_apresentado': planilha_excel.cell(numero_linha, 13).value } comando_sql = 'SELECT RF.SEQ_RETORNO_FINANCEIRO \ FROM CAS_RETORNOS_FINANCEIROS RF \ WHERE RF.NUM_CARTA_REMESSA = :numero_carta_remessa \ AND RF.NUMERO_GUIA = :numero_guia \ AND RF.NUMERO_AUTORIZACAO = :numero_autorizacao \ AND RF.NUMERO_CUPOM_SAIDA = :numero_cupom_fiscal \ AND RF.DATA_ATENDIMENTO = TRUNC(TO_DATE(:data_atendimento,\'YYYY-MM-DD HH24:MI:SS\')) \ AND RF.CODIGO_EAN_ENVIADO = :ean_enviado \ AND RF.VALOR_APRESENTADO = :valor_apresentado' banco_dados.Executar(comando_sql, variaveis_bind_planilha) retorno_financeiro = banco_dados.BuscarUm() if retorno_financeiro == None: variaveis_bind_log = variaveis_bind_planilha variaveis_bind_log.update({ 'sequencia_arquivo': self.sequencia_arquivo, 'numero_linha': numero_linha, 'status_log_processamento': 'E', 'log_processamento': u'Não foi possível encontrar glosa equivalente aos parâmetros do arquivo de recursos!' }) comando_sql = 'INSERT INTO CAS_LOG_PROC_ARQ_REC_GLOSAS(SEQUENCIA_ARQUIVO \ , NUMERO_LINHA \ , NUMERO_CARTA_REMESSA \ , NUMERO_GUIA \ , NUMERO_AUTORIZACAO \ , NUMERO_CUPOM_FISCAL \ , DATA_ATENDIMENTO \ , CODIGO_EAN_ENVIADO \ , VALOR_APRESENTADO \ , STATUS_LOG_PROCESSAMENTO \ , LOG_PROCESSAMENTO) \ VALUES (:sequencia_arquivo \ , :numero_linha \ , :numero_carta_remessa \ , :numero_guia \ , :numero_autorizacao \ , :numero_cupom_fiscal \ , TRUNC(TO_DATE(:data_atendimento,\'YYYY-MM-DD HH24:MI:SS\')) \ , :ean_enviado \ , :valor_apresentado \ , :status_log_processamento \ , :log_processamento)' banco_dados.Executar(comando_sql, variaveis_bind_log) else: variaveis_bind_recurso = { 'seq_retorno_financeiro': retorno_financeiro[0] } comando_sql = 'SELECT RG.SEQ_RECURSO_GLOSA \ , RG.DESCRICAO_RECURSO \ , RG.STATUS_RECURSO \ FROM CAS_RECURSOS_GLOSAS RG \ WHERE RG.SEQ_RETORNO_FINANCEIRO = :seq_retorno_financeiro \ AND RG.STATUS_RECURSO <> \'E\'' banco_dados.Executar(comando_sql, variaveis_bind_recurso) recurso_glosa = banco_dados.BuscarUm() if recurso_glosa == None: if planilha_excel.cell(numero_linha, 24).value in [ 'Sim', 'SIM', 'S', 's' ]: variaveis_bind_recurso.update({ 'dthr_solicitacao_recurso': self.dthr_importacao_arquivo, 'usuario_solicitacao_recurso': self.usuario_importacao_arquivo, 'descricao_recurso': planilha_excel.cell(numero_linha, 25).value, 'status_recurso': 'P' }) comando_sql = 'INSERT INTO CAS_RECURSOS_GLOSAS(SEQ_RETORNO_FINANCEIRO \ , DTHR_SOLICITACAO_RECURSO \ , USUARIO_SOLICITACAO_RECURSO \ , DESCRICAO_RECURSO \ , STATUS_RECURSO) \ VALUES (:seq_retorno_financeiro \ , :dthr_solicitacao_recurso \ , :usuario_solicitacao_recurso \ , :descricao_recurso \ , :status_recurso)' banco_dados.Executar(comando_sql, variaveis_bind_recurso) variaveis_bind_log = variaveis_bind_planilha variaveis_bind_log.update({ 'sequencia_arquivo': self.sequencia_arquivo, 'numero_linha': numero_linha, 'status_log_processamento': 'I', 'log_processamento': u'Incluída nova solicitação de recurso!' }) comando_sql = 'INSERT INTO CAS_LOG_PROC_ARQ_REC_GLOSAS(SEQUENCIA_ARQUIVO \ , NUMERO_LINHA \ , NUMERO_CARTA_REMESSA \ , NUMERO_GUIA \ , NUMERO_AUTORIZACAO \ , NUMERO_CUPOM_FISCAL \ , DATA_ATENDIMENTO \ , CODIGO_EAN_ENVIADO \ , VALOR_APRESENTADO \ , STATUS_LOG_PROCESSAMENTO \ , LOG_PROCESSAMENTO) \ VALUES (:sequencia_arquivo \ , :numero_linha \ , :numero_carta_remessa \ , :numero_guia \ , :numero_autorizacao \ , :numero_cupom_fiscal \ , TRUNC(TO_DATE(:data_atendimento,\'YYYY-MM-DD HH24:MI:SS\')) \ , :ean_enviado \ , :valor_apresentado \ , :status_log_processamento \ , :log_processamento)' banco_dados.Executar(comando_sql, variaveis_bind_log) else: if planilha_excel.cell(numero_linha, 24).value in [ 'Sim', 'SIM', 'S', 's' ]: if recurso_glosa[1].decode( 'iso-8859-1') != planilha_excel.cell( numero_linha, 25).value: if recurso_glosa[2] == 'P': variaveis_bind_recurso.update({ 'seq_recurso_glosa': recurso_glosa[0], 'dthr_solicitacao_recurso': self.dthr_importacao_arquivo, 'usuario_solicitacao_recurso': self.usuario_importacao_arquivo, 'descricao_recurso': planilha_excel.cell(numero_linha, 25).value, 'status_recurso': 'P' }) comando_sql = 'UPDATE CAS_RECURSOS_GLOSAS RG \ SET RG.DTHR_SOLICITACAO_RECURSO = :dthr_solicitacao_recurso \ , RG.USUARIO_SOLICITACAO_RECURSO = :usuario_solicitacao_recurso \ , RG.DESCRICAO_RECURSO = :descricao_recurso \ WHERE RG.SEQ_RETORNO_FINANCEIRO = :seq_retorno_financeiro \ AND RG.SEQ_RECURSO_GLOSA = :seq_recurso_glosa \ AND RG.STATUS_RECURSO = :status_recurso' banco_dados.Executar( comando_sql, variaveis_bind_recurso) variaveis_bind_log = variaveis_bind_planilha variaveis_bind_log.update({ 'sequencia_arquivo': self.sequencia_arquivo, 'numero_linha': numero_linha, 'status_log_processamento': 'I', 'log_processamento': u'Encontrado solicitação de recurso pendente de processamento. Motivo recurso atualizado!!' }) comando_sql = 'INSERT INTO CAS_LOG_PROC_ARQ_REC_GLOSAS(SEQUENCIA_ARQUIVO \ , NUMERO_LINHA \ , NUMERO_CARTA_REMESSA \ , NUMERO_GUIA \ , NUMERO_AUTORIZACAO \ , NUMERO_CUPOM_FISCAL \ , DATA_ATENDIMENTO \ , CODIGO_EAN_ENVIADO \ , VALOR_APRESENTADO \ , STATUS_LOG_PROCESSAMENTO \ , LOG_PROCESSAMENTO) \ VALUES (:sequencia_arquivo \ , :numero_linha \ , :numero_carta_remessa \ , :numero_guia \ , :numero_autorizacao \ , :numero_cupom_fiscal \ , TRUNC(TO_DATE(:data_atendimento,\'YYYY-MM-DD HH24:MI:SS\')) \ , :ean_enviado \ , :valor_apresentado \ , :status_log_processamento \ , :log_processamento)' banco_dados.Executar( comando_sql, variaveis_bind_log) else: variaveis_bind_log = variaveis_bind_planilha variaveis_bind_log.update({ 'sequencia_arquivo': self.sequencia_arquivo, 'numero_linha': numero_linha, 'status_log_processamento': 'A', 'log_processamento': u'Encontrado solicitação de recurso já processada e finalizada. Nova solicitação não permitida!' }) comando_sql = 'INSERT INTO CAS_LOG_PROC_ARQ_REC_GLOSAS(SEQUENCIA_ARQUIVO \ , NUMERO_LINHA \ , NUMERO_CARTA_REMESSA \ , NUMERO_GUIA \ , NUMERO_AUTORIZACAO \ , NUMERO_CUPOM_FISCAL \ , DATA_ATENDIMENTO \ , CODIGO_EAN_ENVIADO \ , VALOR_APRESENTADO \ , STATUS_LOG_PROCESSAMENTO \ , LOG_PROCESSAMENTO) \ VALUES (:sequencia_arquivo \ , :numero_linha \ , :numero_carta_remessa \ , :numero_guia \ , :numero_autorizacao \ , :numero_cupom_fiscal \ , TRUNC(TO_DATE(:data_atendimento,\'YYYY-MM-DD HH24:MI:SS\')) \ , :ean_enviado \ , :valor_apresentado \ , :status_log_processamento \ , :log_processamento)' banco_dados.Executar( comando_sql, variaveis_bind_log) else: if recurso_glosa[2] == 'P': variaveis_bind_recurso.update( {'seq_recurso_glosa': recurso_glosa[0]}) comando_sql = 'DELETE \ FROM CAS_RECURSOS_GLOSAS RG \ WHERE RG.SEQ_RETORNO_FINANCEIRO = :seq_retorno_financeiro \ AND RG.SEQ_RECURSO_GLOSA = :seq_recurso_glosa' banco_dados.Executar(comando_sql, variaveis_bind_recurso) variaveis_bind_log = variaveis_bind_planilha variaveis_bind_log.update({ 'sequencia_arquivo': self.sequencia_arquivo, 'numero_linha': numero_linha, 'status_log_processamento': 'A', 'log_processamento': u'Excluída a solicitação de recurso!' }) comando_sql = 'INSERT INTO CAS_LOG_PROC_ARQ_REC_GLOSAS(SEQUENCIA_ARQUIVO \ , NUMERO_LINHA \ , NUMERO_CARTA_REMESSA \ , NUMERO_GUIA \ , NUMERO_AUTORIZACAO \ , NUMERO_CUPOM_FISCAL \ , DATA_ATENDIMENTO \ , CODIGO_EAN_ENVIADO \ , VALOR_APRESENTADO \ , STATUS_LOG_PROCESSAMENTO \ , LOG_PROCESSAMENTO) \ VALUES (:sequencia_arquivo \ , :numero_linha \ , :numero_carta_remessa \ , :numero_guia \ , :numero_autorizacao \ , :numero_cupom_fiscal \ , TRUNC(TO_DATE(:data_atendimento,\'YYYY-MM-DD HH24:MI:SS\')) \ , :ean_enviado \ , :valor_apresentado \ , :status_log_processamento \ , :log_processamento)' banco_dados.Executar(comando_sql, variaveis_bind_log) else: variaveis_bind_log = variaveis_bind_planilha variaveis_bind_log.update({ 'sequencia_arquivo': self.sequencia_arquivo, 'numero_linha': numero_linha, 'status_log_processamento': 'E', 'log_processamento': u'Encontrado solicitação de recurso já processada e finalizada. Exclusão não permitida!' }) comando_sql = 'INSERT INTO CAS_LOG_PROC_ARQ_REC_GLOSAS(SEQUENCIA_ARQUIVO \ , NUMERO_LINHA \ , NUMERO_CARTA_REMESSA \ , NUMERO_GUIA \ , NUMERO_AUTORIZACAO \ , NUMERO_CUPOM_FISCAL \ , DATA_ATENDIMENTO \ , CODIGO_EAN_ENVIADO \ , VALOR_APRESENTADO \ , STATUS_LOG_PROCESSAMENTO \ , LOG_PROCESSAMENTO) \ VALUES (:sequencia_arquivo \ , :numero_linha \ , :numero_carta_remessa \ , :numero_guia \ , :numero_autorizacao \ , :numero_cupom_fiscal \ , TRUNC(TO_DATE(:data_atendimento,\'YYYY-MM-DD HH24:MI:SS\')) \ , :ean_enviado \ , :valor_apresentado \ , :status_log_processamento \ , :log_processamento)' banco_dados.Executar(comando_sql, variaveis_bind_log) banco_dados.Comitar() except Exception as e: raise finally: banco_dados.Desconectar()
def EfetuarRecursos(self): banco_dados.Conectar() try: comando_sql = 'SELECT DISTINCT RF.NUM_CARTA_REMESSA \ FROM CAS_RECURSOS_GLOSAS RG \ , CAS_RETORNOS_FINANCEIROS RF \ WHERE RG.SEQ_RETORNO_FINANCEIRO = RF.SEQ_RETORNO_FINANCEIRO \ AND RG.STATUS_RECURSO = \'P\'' banco_dados.Executar(comando_sql) cartas_remessas = banco_dados.BuscarTodos() if len(cartas_remessas) != 0: portal_cassi = PortalCassi() try: portal_cassi.Inicializar() portal_cassi.Logar() for carta_remessa in cartas_remessas: variaveis_bind = { 'numero_carta_remessa': carta_remessa[0] } comando_sql = 'SELECT RF.SEQ_RETORNO_FINANCEIRO \ , RG.SEQ_RECURSO_GLOSA \ , RF.NUM_CARTA_REMESSA \ , RF.NUMERO_CUPOM_SAIDA \ , RF.CODIGO_EAN_ENVIADO \ , RG.DESCRICAO_RECURSO \ FROM CAS_RECURSOS_GLOSAS RG \ , CAS_RETORNOS_FINANCEIROS RF \ WHERE RG.SEQ_RETORNO_FINANCEIRO = RF.SEQ_RETORNO_FINANCEIRO \ AND RG.STATUS_RECURSO = \'P\' \ AND RF.NUM_CARTA_REMESSA = :numero_carta_remessa' banco_dados.Executar(comando_sql, variaveis_bind) recursos_glosas = banco_dados.BuscarTodos() if len(recursos_glosas) != 0: log_carta_remessa = portal_cassi.SelecionarCartaRemessa( numero_carta_remessa=carta_remessa[0]) if log_carta_remessa == None: logs_recursos = [] for recurso_glosa in recursos_glosas: log_recurso = portal_cassi.Recursar( numero_cupom_fiscal=recurso_glosa[3], ean_enviado=recurso_glosa[4], descricao_recurso=recurso_glosa[5]) log_recurso.update({ 'seq_retorno_financeiro': recurso_glosa[0], 'seq_recurso_glosa': recurso_glosa[1] }) comando_sql = 'UPDATE CAS_RECURSOS_GLOSAS RG \ SET RG.DTHR_RECURSO = SYSDATE \ , RG.STATUS_RECURSO = :status_recurso \ , RG.LOG_RECURSO = :log_recurso \ , RG.PRINT_RECURSO = :print_recurso \ WHERE RG.SEQ_RETORNO_FINANCEIRO = :seq_retorno_financeiro \ AND RG.SEQ_RECURSO_GLOSA = :seq_recurso_glosa' banco_dados.Executar( comando_sql, log_recurso, True) logs_recursos.append(log_recurso) if len(logs_recursos) != 0: log_protocolo = portal_cassi.FinalizarProtocolo( numero_carta_remessa=carta_remessa[0]) if log_protocolo[ 'status_protocolo'] == 'F': for log_recurso in logs_recursos: if log_recurso[ 'status_recurso'] == 'F': variaveis_bind = { 'numero_protocolo': log_protocolo[ 'numero_protocolo'], 'seq_retorno_financeiro': log_recurso[ 'seq_retorno_financeiro'], 'seq_recurso_glosa': log_recurso[ 'seq_recurso_glosa'] } comando_sql = 'UPDATE CAS_RECURSOS_GLOSAS RG \ SET RG.NUMERO_PROTOCOLO_RECURSO = :numero_protocolo \ WHERE RG.SEQ_RETORNO_FINANCEIRO = :seq_retorno_financeiro \ AND RG.SEQ_RECURSO_GLOSA = :seq_recurso_glosa' banco_dados.Executar( comando_sql, variaveis_bind, True) else: EnviarEmailERRO( log_protocolo['mensagem_protocolo'] ) else: if 'Protocolo prescrito' in log_carta_remessa: logs_recursos = [] log_recurso = { 'status_recurso': 'E', 'log_recurso': log_carta_remessa, 'print_recurso': None } for recurso_glosa in recursos_glosas: log_recurso.update({ 'seq_retorno_financeiro': recurso_glosa[0], 'seq_recurso_glosa': recurso_glosa[1] }) comando_sql = 'UPDATE CAS_RECURSOS_GLOSAS RG \ SET RG.DTHR_RECURSO = SYSDATE \ , RG.STATUS_RECURSO = :status_recurso \ , RG.LOG_RECURSO = :log_recurso \ , RG.PRINT_RECURSO = :print_recurso \ WHERE RG.SEQ_RETORNO_FINANCEIRO = :seq_retorno_financeiro \ AND RG.SEQ_RECURSO_GLOSA = :seq_recurso_glosa' banco_dados.Executar( comando_sql, log_recurso, True) logs_recursos.append(log_recurso) EnviarEmailERRO(log_carta_remessa) except Exception as e: raise finally: portal_cassi.Finalizar() except Exception as e: raise finally: banco_dados.Desconectar()
def Integrar(self, sequencia_arq_rec_convenio): banco_dados.Conectar() try: fluig = Fluig() fluig.sequencia_arq_rec_convenio = sequencia_arq_rec_convenio if fluig.UploadArquivo(): variaveis_bind = { 'company_id_fluig': fluig.company_id, 'document_id_fluig': fluig.document_id, 'document_version_fluig': fluig.document_version, 'document_description_fluig': fluig.document_description, 'document_folder_fluig': fluig.document_folder, 'mensagem_retorno_fluig': fluig.mensagem_retorno, 'log_processamento': 'ARQUIVO DISPONIBILIZADO COM SUCESSO!', 'sequencia_arq_rec_convenio': fluig.sequencia_arq_rec_convenio } comando_sql = '''UPDATE MTZ_ARQS_RECEITAS_CONVENIOS ARC SET ARC.COMPANY_ID_FLUIG = :company_id_fluig ,ARC.DOCUMENT_ID_FLUIG = :document_id_fluig ,ARC.DOCUMENT_VERSION_FLUIG = :document_version_fluig ,ARC.DOCUMENT_DESCRIPTION_FLUIG = :document_description_fluig ,ARC.DOCUMENT_FOLDER_FLUIG = :document_folder_fluig ,ARC.MENSAGEM_RETORNO_FLUIG = :mensagem_retorno_fluig ,ARC.LOG_PROCESSAMENTO = :log_processamento ,ARC.DTHR_PROCESSAMENTO = SYSDATE ,ARC.STATUS_PROCESSAMENTO = 'B' WHERE ARC.SEQUENCIA_ARQ_REC_CONVENIO = :sequencia_arq_rec_convenio''' banco_dados.Executar(comando_sql, variaveis_bind, True) if fluig.UploadCard(): variaveis_bind = { 'card_id_fluig': fluig.card_id, 'card_version_fluig': fluig.card_version, 'card_description_fluig': fluig.card_description, 'card_folder_fluig': fluig.card_folder, 'mensagem_retorno_fluig': fluig.mensagem_retorno, 'log_processamento': 'CARD DISPONIBILIZADO COM SUCESSO!', 'sequencia_arq_rec_convenio': fluig.sequencia_arq_rec_convenio } comando_sql = '''UPDATE MTZ_ARQS_RECEITAS_CONVENIOS ARC SET ARC.CARD_ID_FLUIG = :card_id_fluig ,ARC.CARD_VERSION_FLUIG = :card_version_fluig ,ARC.CARD_DESCRIPTION_FLUIG = :card_description_fluig ,ARC.CARD_FOLDER_FLUIG = :card_folder_fluig ,ARC.MENSAGEM_RETORNO_FLUIG = :mensagem_retorno_fluig ,ARC.LOG_PROCESSAMENTO = :log_processamento ,ARC.DTHR_PROCESSAMENTO = SYSDATE ,ARC.STATUS_PROCESSAMENTO = 'F' WHERE ARC.SEQUENCIA_ARQ_REC_CONVENIO = :sequencia_arq_rec_convenio''' banco_dados.Executar(comando_sql, variaveis_bind, True) else: variaveis_bind = { 'mensagem_retorno_fluig': fluig.mensagem_retorno, 'log_processamento': 'DETALHES DO ARQUIVO NAO DISPONIBILIZADOS (ERRO INTEGRACAO FLUIG)!', 'sequencia_arq_rec_convenio': fluig.sequencia_arq_rec_convenio } comando_sql = '''UPDATE MTZ_ARQS_RECEITAS_CONVENIOS ARC SET ARC.MENSAGEM_RETORNO_FLUIG = :mensagem_retorno_fluig ,ARC.LOG_PROCESSAMENTO = :log_processamento ,ARC.DTHR_PROCESSAMENTO = SYSDATE ,ARC.STATUS_PROCESSAMENTO = 'E' WHERE ARC.SEQUENCIA_ARQ_REC_CONVENIO = :sequencia_arq_rec_convenio''' banco_dados.Executar(comando_sql, variaveis_bind, True) return False else: variaveis_bind = { 'mensagem_retorno_fluig': fluig.mensagem_retorno, 'log_processamento': 'ARQUIVO NAO DISPONIBILIZADO (ERRO INTEGRACAO FLUIG)!', 'sequencia_arq_rec_convenio': fluig.sequencia_arq_rec_convenio } comando_sql = '''UPDATE MTZ_ARQS_RECEITAS_CONVENIOS ARC SET ARC.MENSAGEM_RETORNO_FLUIG = :mensagem_retorno_fluig ,ARC.LOG_PROCESSAMENTO = :log_processamento ,ARC.DTHR_PROCESSAMENTO = SYSDATE ,ARC.STATUS_PROCESSAMENTO = 'E' WHERE ARC.SEQUENCIA_ARQ_REC_CONVENIO = :sequencia_arq_rec_convenio''' banco_dados.Executar(comando_sql, variaveis_bind, True) return False return True except Exception as e: raise finally: banco_dados.Desconectar()
def Processar(self, validar_codigo_barras=False): if len(self.codigo_barras) != 12 and validar_codigo_barras == True: return False banco_dados.Conectar() try: if validar_codigo_barras == True: variaveis_bind = {'codigo_barras': self.codigo_barras} comando_sql = '''WITH DADOS AS (SELECT /*+ MATERIALIZE */ FNC_COR_DECODE_BASE61(SUBSTR(:codigo_barras, 1, 3)) CODIGO_DA_FILIAL ,FNC_COR_DECODE_BASE61(SUBSTR(:codigo_barras, -9)) NSU_DA_TRANSACAO FROM DUAL) SELECT D.CODIGO_DA_FILIAL ,D.NSU_DA_TRANSACAO FROM DADOS D ,MTZ_VENDAS_DE_CARTAO VC WHERE VC.CODIGO_DA_FILIAL = D.CODIGO_DA_FILIAL AND VC.NSU_DA_TRANSACAO = D.NSU_DA_TRANSACAO''' banco_dados.Executar(comando_sql, variaveis_bind) dados_transacao = banco_dados.BuscarUm() if dados_transacao != None: self.codigo_filial = dados_transacao[0] self.nsu_transacao = dados_transacao[1] else: return False blob_arquivo = open(self.nome_arquivo_pdf, 'rb') thumbnail_arquivo = open(self.nome_arquivo_thumbnail, 'rb') variaveis_bind = { 'blob_arquivo': blob_arquivo, 'nome_arquivo': os.path.basename(self.nome_arquivo_pdf), 'thumbnail_arquivo': thumbnail_arquivo, 'codigo_barras_arquivo': self.codigo_barras, 'codigo_da_filial': self.codigo_filial, 'nsu_da_transacao': self.nsu_transacao, 'sequencia_arq_rec_convenio': None } comando_sql = '''INSERT INTO MTZ_ARQS_RECEITAS_CONVENIOS(BLOB_ARQUIVO ,NOME_ARQUIVO ,MIMETYPE_ARQUIVO ,THUMBNAIL_ARQUIVO ,CODIGO_BARRAS_ARQUIVO ,CODIGO_DA_FILIAL ,NSU_DA_TRANSACAO ,DTHR_RECEBIMENTO) VALUES(:blob_arquivo ,:nome_arquivo ,'application/pdf' ,:thumbnail_arquivo ,SUBSTR(:codigo_barras_arquivo,1,200) ,:codigo_da_filial ,:nsu_da_transacao ,SYSDATE) RETURNING SEQUENCIA_ARQ_REC_CONVENIO INTO :sequencia_arq_rec_convenio''' sequencia_arq_rec_convenio = banco_dados.ExecutarComRetorno( comando_sql, variaveis_bind, 'sequencia_arq_rec_convenio', 'NUMBER') blob_arquivo.close() thumbnail_arquivo.close() del (blob_arquivo) del (thumbnail_arquivo) del (variaveis_bind) status_processamento = banco_dados.ExecutarFuncao( 'PCK_MTZ_ARQS_RECS_CONVENIOS.FNC_PROCESSA_ARQUIVO', 'CHAR', [sequencia_arq_rec_convenio]) banco_dados.Comitar() if status_processamento == 'A': if self.Integrar(sequencia_arq_rec_convenio): self.Conciliar(sequencia_arq_rec_convenio) return True except Exception as e: raise finally: banco_dados.Desconectar()