Exemple #1
0
def cadastra_rvf(session,
                 user_name: str,
                 params: dict = None,
                 ovr_id: int = None) -> Optional[RVF]:
    rvf = None
    if ovr_id:
        ovr = get_ovr(session, ovr_id)
        if not ovr:
            return None
        if params is None:
            params = {}
        params['ovr_id'] = ovr.id
        params['numeroCEmercante'] = ovr.numeroCEmercante
        rvf = cadastra_rvf(session, user_name, params)
    elif params:
        rvf = get_rvf(session, params.get('id'))
        ovr_id = rvf.ovr_id if rvf.ovr_id else params.get('ovr_id')
        ovr = get_ovr(session, ovr_id)
        verifica_permissao_rvf(session, ovr, user_name)
        for key, value in params.items():
            setattr(rvf, key, value)
        rvf.user_name = user_name
        rvf.datahora = handle_datahora(params)
    if rvf is not None:
        try:
            session.add(rvf)
            session.commit()
            session.refresh(rvf)
            gera_evento_rvf(session, rvf, user_name)
        except Exception as err:
            session.rollback()
            logger.error(err, exc_info=True)
            raise err
    return rvf
Exemple #2
0
 def autos_contrafacao():
     session = app.config['dbsession']
     # db = app.config['mongo_risco']
     listafichasresumo = []
     ovr = None
     rvfs = []
     marcas_dict = {}
     supervisor = False
     exibicao_ovr = ExibicaoOVR(session, TipoExibicao.Descritivo, current_user.name)
     titulos = exibicao_ovr.get_titulos()
     evento_form = HistoricoOVRForm()
     title_page = 'Assistente de Contrafação'
     try:
         usuario = get_usuario(session, current_user.name)
         if usuario is None:
             raise Exception('Erro: Usuário não encontrado!')
         flags = get_ids_flags_contrafacao(session)
         supervisor = usuario_tem_perfil_nome(session, current_user.name, 'Supervisor')
         listafichas = get_ovrs_abertas_flags(session, current_user.name, flags)
         print('*************************', len(listafichas))
         for ovr_linha in listafichas:
             resumo = exibicao_ovr.get_linha(ovr_linha)
             listafichasresumo.append(resumo)
         ovr_id = request.args.get('ovr_id')
         if ovr_id:
             ovr = get_ovr(session, ovr_id)
             tiposevento = get_tiposevento_assistente_choice(session, Assistente.Marcas)
             evento_form = HistoricoOVRForm(ovr_id=ovr_id,
                                            tiposeventos=tiposevento,
                                            responsaveis=[usuario.cpf])
             rvfs = lista_rvfovr(session, ovr_id)
             marca_manager = MarcaManager(session)
             for rvf in rvfs:
                 marca_dict = marca_manager.get_marcas_rvf_por_representante(rvf.id)
                 marcas_dict.update(marca_dict)
     except Exception as err:
         logger.error(err, exc_info=True)
         flash('Erro! Detalhes no log da aplicação.')
         flash(str(type(err)))
         flash(str(err))
     return render_template('autos_contrafeitos.html',
                            titulos=titulos,
                            listaovrs=listafichasresumo,
                            marcas_dict=marcas_dict,
                            ovr=ovr,
                            rvfs=rvfs,
                            supervisor=supervisor,
                            evento_form=evento_form,
                            title_page=title_page)
Exemple #3
0
 def encerramento_ovr():
     session = app.config.get('dbsession')
     ovr_id = request.args.get('ovr_id')
     ovr = get_ovr(session=session, ovr_id=ovr_id)
     operacao = ovr.get_tipooperacao()
     tiposprocesso = get_tipos_processo(session=session)
     processo_form = ProcessoOVRForm(tiposprocesso=tiposprocesso)
     tiposeventos = get_tipos_evento_comfase_choice(session=session)
     historico_form = HistoricoOVRForm(tiposeventos=tiposeventos)
     data_encerramento = datetime.now().strftime('%d/%m/%Y')
     title_page = 'Encerramento'
     fase = 0
     usuario = ''
     auditor = ''
     empresa = ''
     processos = []
     eventos = []
     resultados = []
     lista_de_tgs_items = []
     lista_de_rvfs_apreensoes = []
     total_apreensoes = []
     total_tgs = []
     try:
         lista_de_tgs_items, total_tgs = lista_de_tgs_e_items(session, ovr_id)
         if total_tgs.get('valor_total', 0) != 0:
             print('Tem TGs')
             resultado = session.query(ResultadoOVR). \
                 filter(ResultadoOVR.ovr_id == ovr.id). \
                 filter(ResultadoOVR.tipo_resultado == TipoResultado.Perdimento.value).one_or_none()
             if resultado is None:
                 print('Inclui resultado')
                 resultado = ResultadoOVR()
                 resultado.ovr_id = ovr.id
                 resultado.tipo_resultado = TipoResultado.Perdimento.value
                 resultado.cpf_auditor = ovr.cpfauditorresponsavel
             resultado.valor = total_tgs['valor_total']
             session.add(resultado)
             session.commit()
             print(f'Valor resultado {resultado.valor}')
         lista_de_rvfs_apreensoes, total_apreensoes = lista_de_rvfs_e_apreensoes(session, ovr_id)
         total_apreensoes_geral = 0
         if total_apreensoes:
             total_apreensoes_geral = sum([valor for valor in total_apreensoes.values()])
         if total_apreensoes_geral != 0:
             print('Tem Apreensoes')
             resultado = session.query(ResultadoOVR). \
                 filter(ResultadoOVR.ovr_id == ovr.id). \
                 filter(ResultadoOVR.tipo_resultado == TipoResultado.Apreensao.value).one_or_none()
             if resultado is None:
                 resultado = ResultadoOVR()
                 resultado.ovr_id = ovr.id
                 resultado.tipo_resultado = TipoResultado.Apreensao.value
                 resultado.cpf_auditor = ovr.cpfauditorresponsavel
             resultado.valor = total_apreensoes_geral
             session.add(resultado)
             session.commit()
         session.refresh(ovr)
         fase = ovr.get_fase()
         usuario = get_usuario(session, current_user.name)
         auditor = get_usuario(session, ovr.cpfauditorresponsavel)
         if ovr.cnpj_fiscalizado:
             empresa = get_empresa(session=session, cnpj=ovr.cnpj_fiscalizado)
         else:
             empresa = ''
         processos = ovr.processos
         eventos = ovr.historico
         resultados = ovr.resultados
         if usuario is None:
             raise Exception('Erro: Usuário não encontrado!')
     except Exception as err:
         logger.error(err, exc_info=True)
         flash('Erro! Detalhes no log da aplicação.')
         flash(str(type(err)))
         flash(str(err))
     return render_template('encerramento_ovr.html',
                            ovr=ovr,
                            fase=fase,
                            usuario=usuario,
                            auditor=auditor,
                            empresa=empresa,
                            processos=processos,
                            eventos=eventos,
                            resultados=resultados,
                            processo_form=processo_form,
                            operacao=operacao,
                            historico_form=historico_form,
                            lista_de_tgs_items=lista_de_tgs_items,
                            lista_de_rvfs_apreensoes=lista_de_rvfs_apreensoes,
                            total_apreensoes=total_apreensoes,
                            total_tgs=total_tgs,
                            data_encerramento=data_encerramento,
                            title_page=title_page)
Exemple #4
0
 def test_c01_Consultar_Fichas_Modificadas(self):
     """Holmes consulta suas fichas, vê mudanças na verificação física
     e que possivelmente há uma contrafação, distribui
     para Irene Adler para tratar."""
     self.login('holmes', 'holmes')
     rv = self.app.get('/minhas_ovrs')
     assert rv.status_code == 200
     assert b'152005079623267' in rv.data
     soup = BeautifulSoup(rv.data, features='lxml')
     table_text = str(
         soup.find('table', {
             'id': 'minhas_ovrs_table'
         }).extract())
     # print(table_text)
     assert 'class="warning' in table_text
     ovr_id_pos = table_text.find('"ovr?id=')
     ovr_id = table_text[ovr_id_pos + 8:ovr_id_pos + 9]
     # print('*********', ovr_id)
     rv = self.app.get('/ovr?id=%s' % ovr_id)
     soup = BeautifulSoup(rv.data, features='lxml')
     btn_text = str(soup.find('button', {'id': 'btn_rvf'}).extract())
     assert 'Verificações físicas (1)' in btn_text
     rv = self.app.get('lista_rvfovr?ovr_id=%s' % 1)
     soup = BeautifulSoup(rv.data, features='lxml')
     table = soup.find('table', {'id': 'table_lista_rvfovr'})
     rows = [str(row) for row in table.findAll("tr")]
     table_text = str(
         soup.find('table', {
             'id': 'table_lista_rvfovr'
         }).extract())
     # print(rows)
     assert len(rows) == 2  # Tem uma rvf já programada no passo anterior
     rvf_id_pos = table_text.find('"rvf?id=')
     rvf_id = table_text[rvf_id_pos + 8:rvf_id_pos + 9]
     # print('***********', rvf_id)
     rv = self.app.get('rvf?id=%s' % rvf_id)
     soup = BeautifulSoup(rv.data, features='lxml')
     text_div_infracoes = soup.find('div', {
         'id': 'div_infracoes_encontradas'
     }).text
     assert 'Contra' in text_div_infracoes
     rv = self.app.get('/ovr?id=%s' % ovr_id)
     text = str(rv.data)
     # print(text)
     responsavelovr_pos = text.find('action="responsavelovr"')
     responsavelovr_text = text[responsavelovr_pos:]
     token_text = self.get_token(responsavelovr_text)
     payload = {
         'csrf_token': token_text,
         'ovr_id': 1,
         'responsavel': 'adler',
         'motivo': 'Solicitar Laudo das marcas encontradas!!'
     }
     rv = self.app.post('/responsavelovr',
                        data=payload,
                        follow_redirects=True)
     ovr = get_ovr(session, 1)
     assert ovr.responsavel_cpf == 'adler'
     movimentaovr_pos = text.find('action="eventoovr"')
     movimentaovr_text = text[movimentaovr_pos:]
     token_text = self.get_token(movimentaovr_text)
     payload = {
         'csrf_token': token_text,
         'ovr_id': 1,
         'tipoevento_id': 2,
         'motivo': 'Solicitar Laudo das marcas encontradas!!',
         'user_name': 'adler'
     }
     rv = self.app.post('/eventoovr', data=payload, follow_redirects=True)
     assert b'ESomenteUsuarioResponsavel' in rv.data
     self.login('adler', 'adler')
     rv = self.app.post('/eventoovr', data=payload, follow_redirects=True)
     # with open('testc1.html', 'w') as html_out:
     #     html_out.write(rv.data.decode('utf8'))
     assert b'adler' in rv.data
     soup = BeautifulSoup(rv.data, features='lxml')
     text_span_responsavel = soup.find('span', {
         'id': 'responsavel_nome'
     }).text
     assert 'adler' in text_span_responsavel
     assert b'Solicitar Laudo' in rv.data
Exemple #5
0
 def test11_get_ovr(self):
     new_ovr = gera_objeto(OVR(), session=session, params=self.params_ovr)
     ovr = get_ovr(session, new_ovr.id)
     assert ovr is not None
     session.delete(ovr)
     session.commit()