def incluir_signatario(self, m_cliente): url = "https://sandbox.clicksign.com/api/v1/signers%s" % ( self.querystring_access_token) d_signatario_clicksign = self.__montar_dic_signatario(m_cliente) if (not self.headers_clicksign): return self.retorno_autenticacao r = requests.post(url, headers=self.headers_clicksign, data=d_signatario_clicksign) retorno = self.__tratarRespostaHTTP(r) if not retorno.estado.ok: return retorno d_dados_signatario = retorno.dados tem_chave = False chave_signatario = '' if (d_dados_signatario): if 'signer' in d_dados_signatario: d_signatario = d_dados_signatario['signer'] if 'key' in d_signatario: chave_signatario = d_signatario['key'] if (chave_signatario and len(str(chave_signatario).strip()) > 0): tem_chave = True if tem_chave: retorno = Retorno(True, self) retorno.dados = chave_signatario else: retorno = Retorno( False, self, 'Não foi possível obter o documento do contrato. Os dados retornaram vazios', '', 404) return retorno
def incluir(self, chaves_produtos): try: retorno_cliente = self.cliente.obter() if not retorno_cliente.estado.ok: return retorno_cliente m_produto = Produto() retorno_produtos = m_produto.listar_especificos(chaves_produtos) if not retorno_produtos.estado.ok: return retorno_produtos d_dados_pedido = self.gerar_dados_pedido_transacao_gerencia_net(retorno_produtos.dados) m_transacao_gerencia_net = TransacaoGerenciaNet() retorno_transacao = m_transacao_gerencia_net.incluir(d_dados_pedido) if not retorno_transacao.estado.ok: return retorno_transacao self.charge_id = m_transacao_gerencia_net.id self.id_contrato = str(self.cliente.id_cliente_iter).rjust(6, '0') + str(self.charge_id).rjust(10, '0') self.cliente = retorno_cliente.dados self.calcular_valor_total(retorno_produtos.dados) # Inclui na base self.save() # Atualiza com os produtos self.produtos_contratados.add(*retorno_produtos.dados) retorno = Retorno(True, 'Seu contrato foi gerado e será efetivado após o pagamento do boleto.') retorno.dados = self return retorno except Exception as e: print(traceback.format_exception(None, e, e.__traceback__), file=sys.stderr, flush=True) retorno = Retorno(False, 'Falha de comunicação. Em breve será normalizado.') return retorno
def alterar(self): try: retorno = Cliente.validar_dados_obrigatorios(self) if not retorno.estado.ok: return retorno # Valida se o cliente já está cadastrado. retorno = Cliente.obter(self) if not retorno.estado.ok: return retorno m_cliente = retorno.dados if (self.credencial_iter.chave_iter_cli and len(self.credencial_iter.chave_iter_cli) > 0): self.id_cliente_iter = m_cliente.id_cliente_iter o_cliente_iter = ClienteIter(self) # Alteracao na Iter. retorno = o_cliente_iter.alterar(self) if not retorno.estado.ok: return retorno m_cliente.converter_de_cliente_iter(retorno.json()) m_cliente.id_signatario_contrato = self.id_signatario_contrato m_cliente.save() retorno = Retorno(True, self, 'Cadastro atualizado com sucesso.', '', 200, None) retorno.dados = m_cliente return retorno except Exception as e: retorno = Retorno(False, self, 'A atualização dos dados cadastrais falhou.', None, None, e) return retorno
def incluir(self, d_dados_pedido): try: m_gerencia_net = Gerencianet(credentials) d_charge = m_gerencia_net.create_charge(body=d_dados_pedido) self.converter_de_gerencia_net(d_charge) retorno = Retorno(True) retorno.dados = self return retorno except Exception as e: print(traceback.format_exception(None, e, e.__traceback__), file=sys.stderr, flush=True) retorno = Retorno( False, 'Falha de comunicação. Em breve será normalizado.') return retorno
def __autenticar_clicksign(self): self.headers_clicksign = None chave_clicksign_cliente = '' chave_clicksign_servidor = config('CHAVE_CLICKSIGN') token_clicksign = '' if (self.credencial_clicksign): chave_clicksign_cliente = self.credencial_clicksign.chave_clicksign_cli token_clicksign = self.credencial_clicksign.token_clicksign # Cria uma credencial completa, com a chave parcial do servidor, # pois o atributo "self.credencial_clicksign" vem soh com a chave parcial do cliente. self.credencial_clicksign = Credencial(chave_clicksign_cliente, chave_clicksign_servidor) self.credencial_clicksign.token_clicksign = token_clicksign retorno = Retorno(True, self) if not self.credencial_clicksign.token_clicksign or len( self.credencial_clicksign.token_clicksign) <= 0: # Le o token criptografado do arquivo e atribui para a credencial. arquivo_iter = open('.env_access_clicksign', 'rb') token_clicksign = arquivo_iter.read() if (token_clicksign): self.credencial_clicksign.token_clicksign = token_clicksign retorno.dados = self.credencial_clicksign token = self.credencial_clicksign.get_token_clicksign() self.headers_clicksign = { 'Accept': 'application/json', 'Content-Type': 'application/json' } self.querystring_access_token = '?access_token=%s' % (token) self.chave_template_contrato = config('CHAVE_TEMPLATE_CONTRATO_CS') self.retorno_autenticacao = retorno
def aceitar(self, request): try: m_contrato = ContratoViewSet.apropriar_dados_http(request) retorno = m_contrato.aceitar() if not retorno.estado.ok: return retorno # m_boleto = BoletoGerenciaNet() # retorno = m_boleto.gerar(m_contrato) return Response(retorno.json()) except Exception as e: print(traceback.format_exception(None, e, e.__traceback__), file=sys.stderr, flush=True) retorno = Retorno( False, 'Falha de comunicação. Em breve será normalizado.', '') return Response(retorno.json())
def registrar_do_cliente(self, d_registros_log): try: if not d_registros_log or len(d_registros_log) <= 0: return Retorno(False, self, 'Nenhum registro de log recebido.') if(len(d_registros_log) > 0): logger_cliente_app_fluxo.info('+++ REGISTROS DO CLIENTE - INICIO +++ %s' % (self.get_dados_dispositivo_str())) for d_registro_log in d_registros_log: # Add the line logger_cliente_app_fluxo.info("[%s] %s" % (d_registro_log['data_hora'], d_registro_log['mensagem_log'])) logger_cliente_app_fluxo.info('--- REGISTROS DO CLIENTE - FIM --- %s' % (self.get_dados_dispositivo_str())) logger_cliente_app_fluxo.info('') return Retorno(True, self) except Exception as e: retorno = Retorno(False, self, 'O registro de log do cliente falhou.', None, None, e) return retorno
def excluir_contrato(self): try: nome_arquivo = "Contrato_%s.pdf" % self.id_contrato caminho_arquivo = os.path.join(BASE_DIR, "data", "contratos", nome_arquivo) if (os.path.exists(caminho_arquivo)): os.remove(caminho_arquivo) caminho_diretorio = os.path.join(BASE_DIR, "data", "contratos") if (not os.path.exists(caminho_diretorio)): os.makedirs(caminho_diretorio) retorno = Retorno(True, self) return retorno except Exception as e: retorno = Retorno(False, self, 'A exclusão do contrato falhou.', None, None, e) return retorno
def incluir(self): try: retorno = Cliente.validar_dados_obrigatorios(self) if not retorno.estado.ok: return retorno # Valida se o cliente já está cadastrado. retorno = Cliente.obter(self) if retorno.estado.codMensagem != 'NaoCadastrado': return retorno # Inclusao na Iter. cIter = ClienteIter() retorno = cIter.incluir(self) if not retorno.estado.ok: return retorno d_cliente_iter = retorno.json() self.id_cliente_iter = d_cliente_iter['id'] if not retorno.estado.ok: return retorno self.save() retorno = Retorno(True, 'Cadastro realizado com sucesso.', 200) retorno.dados = self return retorno except Exception as e: print(traceback.format_exception(None, e, e.__traceback__), file=sys.stderr, flush=True) retorno = Retorno( False, 'Falha de comunicação. Em breve será normalizado.') return retorno
def obter_ultimo(self): try: retorno = Retorno(False, self) # Valida se o cliente já está cadastrado. lista_clientes = Cliente.objects.filter() if lista_clientes: m_cliente = lista_clientes[lista_clientes.count() - 1] if m_cliente: o_cliente_iter = ClienteIter(self) # Obtem o cadastro na Iter. retorno = o_cliente_iter.obter(m_cliente) if not retorno.estado.ok: return retorno m_cliente.converter_de_cliente_iter(retorno.json()) m_cliente.nome_usuario = m_cliente.nome_usuario retorno.dados = self.definir_contexto(m_cliente) return retorno except Exception as e: retorno = Retorno(False, self, 'A consulta dos dados cadastrais falhou.', None, None, e) return retorno
def incluir_signatario_contrato(self): try: m_contrato_clicksign = ContratoClicksign(self) retorno_signatario = self.incluir_signatario() if not retorno_signatario.estado.ok: return retorno_signatario m_cliente = retorno_signatario.dados.cliente ids_assinaturas_clicksign = m_cliente.id_signatario_contrato.split( sep="|-|") if isinstance(ids_assinaturas_clicksign, list) and len(ids_assinaturas_clicksign) > 1: return retorno_signatario m_contrato = retorno_signatario.dados retorno_chave_signatario = m_contrato_clicksign.incluir_signatario_contrato( m_contrato) if not retorno_chave_signatario.estado.ok: return retorno_chave_signatario retorno_cliente = self.cliente.obter() if not retorno_cliente.estado.ok: return retorno_cliente m_cliente = retorno_cliente.dados m_cliente.id_signatario_contrato = '%s|-|%s' % ( m_cliente.id_signatario_contrato, retorno_chave_signatario.dados) retorno = m_cliente.alterar() if not retorno.estado.ok: retorno.dados = self retorno = self.obter() if (retorno.estado.ok): m_contrato_clicksign.solicitar_assinatura(retorno.dados) return retorno except Exception as e: retorno = Retorno( False, self, 'A atualização do signatário do contrato falhou.', None, None, e) return retorno
def gerar(self, m_contrato): try: # m_contrato_cadastro = Contrato() # if len(str(m_contrato.id_contrato)) > 0: # m_contrato_cadastro.id_contrato = m_contrato.id_contrato # retorno_contrato = m_contrato_cadastro.obter() # if not retorno_contrato.estado.ok: # if len(str(m_contrato.cliente.cpf)) > 0: # m_cliente = Cliente() # m_cliente.cpf = m_contrato_cadastro.cliente.cpf # m_contrato.cliente = m_cliente # retorno_contrato = m_contrato.obter_por_cliente() # if not retorno_contrato.estado.ok: # return retorno_contrato # m_contrato_cadastro = retorno_contrato.dados today = date.today() data_vencimento = today.strftime("%Y-%m-%d") params = {'id': m_contrato.chave_boleto_ext} body = { 'payment': { 'banking_billet': { 'expire_at': data_vencimento, 'customer': { 'name': m_contrato.cliente.nome, 'email': m_contrato.cliente.email, 'cpf': m_contrato.cliente.cpf, # 'birth': m_contrato.cliente., 'phone_number': m_contrato.cliente.telefone } } } } m_gerencia_net = Gerencianet(credentials) d_billet = m_gerencia_net.pay_charge(params=params, body=body) retorno = self.tratar_retorno_gerencia_net(d_billet) retorno.dados = self return retorno except Exception as e: retorno = Retorno(False, self, 'A geração do boleto falhou.', None, None, e) return retorno
def obter_url_contrato_pdf(self): try: retorno = Retorno(False, self, 'Contrato não localizado.', 'NaoCadastrado') m_contratos = Contrato.objects.filter( cliente__cpf=self.cliente.cpf) if m_contratos: m_contrato = m_contratos[0] if m_contrato: m_contrato_clicksign = ContratoClicksign(self) retorno = m_contrato_clicksign.obter_url_contrato_pdf( m_contrato.chave_contrato_ext) return retorno except Exception as e: retorno = Retorno(False, self, 'A consulta do contrato falhou.', None, None, e) return retorno
def incluir(self): try: retorno = Produto.validar_dados_obrigatorios(self) if not retorno.estado.ok: return retorno # Valida se o produto já está cadastrado. retorno = Produto.obter(self) if retorno.estado.codMensagem != 'NaoCadastrado': return retorno self.save() retorno = Retorno(True, self, 'Cadastro realizado com sucesso.', 200) retorno.dados = self return retorno except Exception as e: retorno = Retorno(False, self, 'A inclusão de produto Trisafe falhou.', None, None, e) return retorno
def incluir(self): try: retorno = Produto.validar_dados_obrigatorios(self) if not retorno.estado.ok: return retorno # Valida se o produto já está cadastrado. retorno = Produto.obter(self) if retorno.estado.codMensagem != 'NaoCadastrado': return retorno self.save() retorno = Retorno(True, 'Cadastro realizado com sucesso.', 200) retorno.dados = self return retorno except Exception as e: print(traceback.format_exception(None, e, e.__traceback__), file=sys.stderr, flush=True) retorno = Retorno(False, 'Falha de comunicação. Em breve será normalizado.') return retorno
def incluir(self, d_dados_pedido): try: m_gerencia_net = Gerencianet(credentials) d_charge = m_gerencia_net.create_charge(body=d_dados_pedido) retorno = self.tratar_retorno_gerencia_net(d_charge) retorno.dados = self return retorno except Exception as e: retorno = Retorno(False, self, 'A inclusão de transação para boleto falhou.', None, None, e) return retorno
def obter(self): try: retorno = Cliente.validar_dados_obrigatorios_chaves(self) if not retorno.estado.ok: return retorno retorno = Retorno(False, self, 'Cliente não cadastrado', 'NaoCadastrado', 406) # Valida se o cliente já está cadastrado. lista_clientes = Cliente.objects.filter(cpf=self.cpf) if lista_clientes: m_cliente = lista_clientes[0] if m_cliente: self.definir_contexto(m_cliente) retorno = Retorno(True, self) if (self.credencial_iter.chave_iter_cli and len(self.credencial_iter.chave_iter_cli) > 0): o_cliente_iter = ClienteIter(self) # Obtem o cadastro na Iter. retorno = o_cliente_iter.obter(m_cliente) if not retorno.estado.ok: return retorno m_cliente.converter_de_cliente_iter(retorno.json()) m_cliente.nome_usuario = m_cliente.nome_usuario retorno.dados = self.definir_contexto(m_cliente) return retorno except Exception as e: retorno = Retorno(False, self, 'A consulta dos dados cadastrais falhou.', None, None, e) return retorno
def obter(self): try: retorno = Retorno(False, self, 'Contrato não localizado.') m_contratos = Contrato.objects.filter(id_contrato=self.id_contrato) if m_contratos: m_contrato = m_contratos[0] if m_contrato: retorno = Retorno(True, self) retorno.dados = self.definir_contexto(m_contrato) return retorno except Exception as e: retorno = Retorno(False, self, 'A consulta do contrato falhou.', None, None, e) return retorno
def gerar(self, m_contrato): try: # t = TransacaoGerenciaNet() # retorno = t.incluir() # if not retorno.estado.ok: # return retorno today = date.today() data_vencimento = today.strftime("%Y-%m-%d") params = {'id': m_contrato.charge_id} body = { 'payment': { 'banking_billet': { 'expire_at': data_vencimento, 'customer': { 'name': m_contrato.cliente.nome, 'email': m_contrato.cliente.email, 'cpf': m_contrato.cliente.cpf, # 'birth': m_contrato.cliente., 'phone_number': m_contrato.cliente.telefone } } } } m_gerencia_net = Gerencianet(credentials) d_billet = m_gerencia_net.pay_charge(params=params, body=body) retorno = self.tratar_retorno_gerencia_net(d_billet) return retorno except Exception as e: print(traceback.format_exception(None, e, e.__traceback__), file=sys.stderr, flush=True) retorno = Retorno( False, 'Falha de comunicação. Em breve será normalizado.') return retorno
def incluir_signatario(self): try: retorno = self.obter_signatario() if retorno.estado.ok: return retorno elif retorno.estado.codMensagem != 'SignatarioNaoCadastrado': return retorno m_contrato_clicksign = ContratoClicksign(self) retorno_chave_signatario = m_contrato_clicksign.incluir_signatario( self.cliente) if not retorno_chave_signatario.estado.ok: return retorno_chave_signatario retorno_cliente = self.cliente.obter() if not retorno_cliente.estado.ok: return retorno_cliente m_cliente = retorno_cliente.dados m_cliente.id_signatario_contrato = retorno_chave_signatario.dados retorno_cliente = m_cliente.alterar() if not retorno_cliente.estado.ok: return retorno_cliente retorno = self.obter() return retorno except Exception as e: retorno = Retorno( False, self, 'A atualização do signatário do contrato falhou.', None, None, e) return retorno
def listar(self): try: retorno = Retorno(False, self, 'Nenhum Produto TriSafe está cadastrado.', 'NaoCadastrado', 406) # Lista os produtos cadastrados. lista_produtos = Produto.objects.all() if lista_produtos: lista_produtos_json = [] for m_produto in lista_produtos: lista_produtos_json.append(m_produto) retorno = Retorno(True, self) retorno.dados = lista_produtos return retorno except Exception as e: retorno = Retorno(False, self, 'A consulta a produtos Trisafe falhou.', None, None, e) return retorno
def listar_por_cliente(self): try: retorno = Retorno(False, self, 'Nenhum veículo cadastrado para rastreamento.', 'NaoCadastrado') m_veiculos = Veiculo.objects.filter(cliente__cpf=self.cliente.cpf) if m_veiculos: retorno = Retorno(True, self) retorno.dados = m_veiculos return retorno except Exception as e: retorno = Retorno(False, self, 'A consulta aos veículos do cliente falhou.', None, None, e) return retorno
def listar(self): try: retorno = Retorno(False, 'Nenhum Produto TriSafe está cadastrado.', 'NaoCadastrado', 406) # Lista os produtos cadastrados. lista_produtos = Produto.objects.all() if lista_produtos: lista_produtos_json = [] for m_produto in lista_produtos: lista_produtos_json.append(m_produto) retorno = Retorno(True) retorno.dados = lista_produtos return retorno except Exception as e: print(traceback.format_exception(None, e, e.__traceback__), file=sys.stderr, flush=True) retorno = Retorno(False, 'Falha de comunicação. Em breve será normalizado.') return retorno
def obter(self): try: retorno = Produto.validar_dados_obrigatorios_chaves(self) if not retorno.estado.ok: return retorno retorno = Retorno(False, self, 'Produto não cadastrado', 'NaoCadastrado', 406) lista_produtos = Produto.objects.filter(nome=self.nome) if lista_produtos: m_produto = lista_produtos[0] if m_produto: retorno = Retorno(True, self) retorno.dados = m_produto return retorno except Exception as e: retorno = Retorno(False, self, 'A consulta a produtos Trisafe falhou.', None, None, e) return retorno
def registrar_do_cliente(self, request): try: retorno = Retorno(True, self) if 'registros_log' in request.data: d_registros_log = request.data['registros_log'] m_gerenciador_log = self.definir_contexto(GerenciadorLog()) retorno = m_gerenciador_log.registrar_do_cliente(d_registros_log) return retorno.gerar_resposta_http() except Exception as e: retorno = Retorno(False, self, 'O registro de log do cliente falhou.', None, None, e) return retorno.gerar_resposta_http()
def obter(self): try: retorno = Produto.validar_dados_obrigatorios_chaves(self) if not retorno.estado.ok: return retorno retorno = Retorno(False, 'Produto não cadastrado', 'NaoCadastrado', 406) lista_produtos = Produto.objects.filter(nome=self.nome) if lista_produtos: m_produto = lista_produtos[0] if m_produto: retorno = Retorno(True) retorno.dados = m_produto return retorno except Exception as e: print(traceback.format_exception(None, e, e.__traceback__), file=sys.stderr, flush=True) retorno = Retorno(False, 'Falha de comunicação. Em breve será normalizado.') return retorno
def obter_por_cliente(self): try: retorno = Retorno(False, self, 'Contrato não localizado.', 'NaoCadastrado') m_contratos = Contrato.objects.filter( cliente__cpf=self.cliente.cpf) if m_contratos: m_contrato = m_contratos[0] if m_contrato: retorno = Retorno(True, self) retorno.dados = self.definir_contexto(m_contrato) self.definir_contexto(m_contrato.cliente) return retorno except Exception as e: retorno = Retorno(False, self, 'A consulta do contrato falhou.', None, None, e) return retorno
def obter(self): try: retorno = Cliente.validar_dados_obrigatorios_chaves(self) if not retorno.estado.ok: return retorno retorno = Retorno(False, 'Cliente não cadastrado', 'NaoCadastrado', 406) # Valida se o cliente já está cadastrado. lista_clientes = Cliente.objects.filter(cpf=self.cpf) if lista_clientes: m_cliente = lista_clientes[0] if m_cliente: # Obtem o cadastro na Iter. retorno_cliente_iter = ClienteIter.obter( self, m_cliente.id_cliente_iter) if not retorno_cliente_iter.estado.ok: return retorno_cliente_iter self.converter_de_cliente_iter(retorno_cliente_iter.json()) retorno = Retorno(True) retorno.dados = self return retorno except Exception as e: print(traceback.format_exception(None, e, e.__traceback__), file=sys.stderr, flush=True) retorno = Retorno( False, 'Falha de comunicação. Em breve será normalizado.') return retorno
def incluir(self): try: retorno = self.validar_dados_obrigatorios() if not retorno.estado.ok: return retorno # Valida se o veiculo já está cadastrado. retorno = self.contar_por_chave() if not retorno.estado.ok: return retorno if (retorno.dados > 0): return Retorno( False, self, 'Já existe um veículo cadastrado com esta placa.') # Obtem os dados do cliente para associar. retorno_cliente = self.cliente.obter() if not retorno_cliente.estado.ok: return retorno_cliente self.cliente = retorno_cliente.dados self.save() retorno = Retorno(True, self, 'Cadastro realizado com sucesso.', 200) retorno.dados = self return retorno except Exception as e: retorno = Retorno( False, self, 'A inclusão dos dados cadastrais do veículo falhou.', None, None, e) return retorno
def validar_dados_obrigatorios_chaves(self): if self.codigo <= 0 or len(str(self.nome).strip()) <= 0 : return Retorno(False, self, "Informe o código ou o nome completo do produto.", 406) return Retorno(True, self)