示例#1
0
def cancelar(id):
    if current_user.is_active() and current_user.session_over():
        current_user.reset_token

    usuario = db.child('users').child(current_user.localId).get(current_user.idToken)
    usuario = dict(usuario.val())

    despesa = db.child('despesas').child(id).get(current_user.idToken)
    despesa = dict(despesa.val())

    pode_cancelar = (usuario['departamento'] == despesa['departamento']
                     or usuario['email'] == despesa['criado_por'])

    if pode_cancelar and despesa['status'] != '7':
        despesa['status'] = '7'

    try:
        despesa['modificado_por'] = current_user.email
        despesa['data_ult_alt'] = datetime.now().strftime('%d/%m/%Y')
        db.child('despesas').child(id).update(despesa, current_user.idToken)
        send_mail(despesa, current_user)

    except Exception as e:
        mensagem = 'Não foi possível atualizar essa despesa.'
        print(e)
        flash(mensagem)

    return redirect(url_for('despesas.listar'))
示例#2
0
def criar():
    if current_user.is_active() and current_user.session_over():
        current_user.reset_token()

    if verify_dba(current_user):
        return redirect(url_for('despesas.listar'))

    form = UserForm()
    if form.validate_on_submit():
        uid = form.uid.data
        usuario = {
            'nome': form.nome.data,
            'sobrenome': form.sobrenome.data,
            'email': form.email.data,
            'departamento': form.departamento.data,
            'RD': form.representante.data,
            'DBA': form.dba.data,
            'Diretor': form.diretor.data
        }

        try:
            db.child('users').child(uid).update(usuario, current_user.idToken)
            return redirect(url_for('users.listar'))

        except Exception as e:
            mensagem = 'Não foi possível incluir este usuário.'
            print(e)
            flash(mensagem)
            return redirect(url_for('users.criar'))

    return render_template('users/criar.html', form=form)
示例#3
0
def deletar(id):
    if current_user.is_active() and current_user.session_over():
        current_user.reset_token

    if verify_dba(current_user):
        return redirect(url_for('despesas.listar'))

    db.child('users').child(id).remove(current_user.idToken)
    print('deletedo o usuário' + id)

    return redirect(url_for('users.listar'))
示例#4
0
def desaprovacao(id):
    if current_user.is_active() and current_user.session_over():
        current_user.reset_token

    usuario = db.child('users').child(current_user.localId).get(current_user.idToken)
    usuario = dict(usuario.val())

    despesa = db.child('despesas').child(id).get(current_user.idToken)
    despesa = dict(despesa.val())

    fin = (usuario['departamento'] == 'financeiro')

    if usuario['RD']:
        if current_user.departamento == despesa['departamento']:
            resp_depto = True
        elif (current_user.departamento == 'administrativo'
                    and despesa['departamento'] == 'estoque'):
            resp_depto = True
        else:
            resp_depto = False
    else:
        resp_depto = False

    if usuario['RD'] and fin:
        resp_fin = True
    else:
        resp_fin = False

    form = MotivoDesaprovForm()
    if form.validate_on_submit():
        motivo = form.motivo.data

        if despesa['status'] == '1' and resp_depto:
            despesa['status'] = '5'

        elif despesa['status'] == '2' and resp_fin:
            despesa['status'] = '6'

        try:
            despesa['modificado_por'] = current_user.email
            despesa['data_ult_alt'] = datetime.now().strftime('%d/%m/%Y')
            db.child('despesas').child(id).update(despesa, current_user.idToken)
            send_mail(despesa, current_user, motivo)

        except Exception as e:
            mensagem = 'Não foi possível atualizar essa despesa.'
            print(e)
            flash(mensagem)

        return redirect(url_for('despesas.listar'))

    return render_template('despesas/desaprovar.html', form=form, despesa=despesa)
示例#5
0
def detalhar(id):
    if current_user.is_active() and current_user.session_over():
        current_user.reset_token()

    if verify_dba(current_user):
        return redirect(url_for('despesas.listar'))


    usuario = db.child('users').child(id).get(current_user.idToken)
    usuario = dict(usuario.val())
    usuario['id'] = id

    return render_template('users/detalhar.html', usuario=usuario)
示例#6
0
def criar():
    if current_user.is_active() and current_user.session_over():
        current_user.reset_token()

    form = DespesaForm()
    if form.validate_on_submit():
        despesa = {
            'id': datetime.now().strftime('%Y%m%d%H%M%S'),
            'centro_custo': form.centro_custo.data,
            'criado_por': current_user.email,
            'modificado_por': current_user.email,
            'data_criacao': datetime.now().strftime('%d/%m/%Y'),
            'data_pagamento': form.data_pagamento.data.strftime('%d/%m/%Y'),
            'data_ult_alt': datetime.now().strftime('%d/%m/%Y'),
            'departamento': form.departamento.data,
            'descricao': form.descricao.data,
            'empresa': form.empresa.data,
            'fornecedor': form.fornecedor.data,
            'forma_pagamento': form.forma_pagamento.data,
            'previsao': form.previsao.data,
            'observacao': form.observacao.data,
            'tipo_solicitacao': form.tipo_solicitacao.data,
            'valor_total': '{:.2f}'.format(form.valor_total.data),
            'status': '1',
            'tem_arquivo': False
        }

        if form.boleto.data is not None:
            despesa['tem_arquivo'] = True
            boleto = os.path.join('/tmp', secure_filename(form.boleto.data.filename))
            form.boleto.data.save(boleto)

        if despesa['departamento'] == 'diretoria':
            despesa['status'] = '2'

        try:
            if form.boleto.data is not None:
                response = storage.child('boletos/' + despesa['id']).put(boleto, current_user.idToken)
                despesa['download_token'] = response['downloadTokens']
            db.child('despesas').child(despesa['id']).update(despesa, current_user.idToken)
            send_mail(despesa, current_user)
            return redirect(url_for('despesas.listar'))

        except Exception as e:
            mensagem = 'Não foi possível incluir essa despesa.'
            print(e)
            flash(mensagem)
            return redirect(url_for('despesas.criar'))

    return render_template('despesas/criar.html', form=form)
示例#7
0
def listar():
    if current_user.is_active() and current_user.session_over():
        current_user.reset_token()

    usuario = db.child('users').child(current_user.localId).get(current_user.idToken)
    usuario = dict(usuario.val())

    data = {}
    try:
        data = db.child('despesas').get(current_user.idToken)
        data = dict(data.val())

    except Exception as e:
        data = {}

    despesas = []
    for k, v in data.items():
        despesa = v
        despesa['id'] = k
        despesa['data_criacao'] = datetime.strptime(despesa['data_criacao'], '%d/%m/%Y')
        despesa['data_pagamento'] = datetime.strptime(despesa['data_pagamento'], '%d/%m/%Y')
        despesa['data_ult_alt'] = datetime.strptime(despesa['data_ult_alt'], '%d/%m/%Y')

        delta = datetime.now() - despesa['data_ult_alt']

        if despesa['status'] >= '4' and delta.days > 120:
            continue

        despesas.append(despesa)

    despesas = sorted(despesas, key=lambda k: k['data_criacao'], reverse=True)

    depto_usuario = current_user.departamento

    if depto_usuario == 'financeiro':
        return render_template('despesas/listar.html', despesas=despesas, is_dba=usuario['DBA'])

    elif current_user.departamento == 'administrativo':
        despesas = [despesa for despesa in despesas
                        if (despesa['departamento'] == depto_usuario
                                or despesa['departamento'] == 'estoque'
                                    or despesa['criado_por'] == current_user.email)]
        return render_template('despesas/listar.html', despesas=despesas, is_dba=usuario['DBA'])

    else:
        despesas = [despesa for despesa in despesas
                        if (despesa['departamento'] == depto_usuario
                                or despesa['criado_por'] == current_user.email)]
        return render_template('despesas/listar.html', despesas=despesas, is_dba=usuario['DBA'])
示例#8
0
def editar(id):
    if current_user.is_active() and current_user.session_over():
        current_user.reset_token()

    if verify_dba(current_user):
        return redirect(url_for('despesas.listar'))


    usuario = db.child('users').child(id).get(current_user.idToken)
    usuario = dict(usuario.val())
    usuario['id'] = id

    form = UserForm()
    if form.validate_on_submit():
        usuario = {
            'nome': form.nome.data,
            'sobrenome': form.sobrenome.data,
            'email': form.email.data,
            'departamento': form.departamento.data,
            'RD': form.representante.data,
            'DBA': form.dba.data,
            'Diretor': form.diretor.data
        }

        print(usuario)
        try:
            db.child('users').child(id).update(usuario, current_user.idToken)

        except Exception as e:
            mensagem = 'Não for possível atualizar os dados deste usuário.'
            print(e)
            flash(mensagem)

        return redirect(url_for('users.detalhar', id=id))

    elif request.method == 'GET':
        form.nome.data = usuario['nome']
        form.sobrenome.data = usuario['sobrenome']
        form.email.data = usuario['email']
        form.departamento.data = usuario['departamento']
        form.representante.data = usuario['RD']
        form.dba.data = usuario['DBA']
        form.diretor.data = usuario['Diretor']

    return render_template('users/editar.html', form=form, usuario=usuario)
示例#9
0
def deletar(id):
    if current_user.is_active() and current_user.session_over():
        current_user.reset_token

    despesa = db.child('despesas').child(id).get(current_user.idToken)
    despesa = dict(despesa.val())

    try:
        if despesa['tem_arquivo']:
            storage.child('gs://').delete('boletos/' + id)
        db.child('despesas').child(id).remove(current_user.idToken)

    except Exception as e:
        mensagem = 'Não foi possível deletar a despesa'
        print(e)
        flash(mensagem)

    return redirect(url_for('despesas.listar'))
示例#10
0
def listar():
    if current_user.is_active() and current_user.session_over():
        current_user.reset_token()

    if verify_dba(current_user):
        return redirect(url_for('despesas.listar'))

    data = db.child('users').get(current_user.idToken)
    data = dict(data.val())

    usuarios = []
    for k, v in data.items():
        usuario = v
        usuario['id'] = k
        usuarios.append(usuario)

    usuarios = sorted(usuarios, key=lambda k: (k['departamento'], k['nome']))

    return render_template('users/listar.html', usuarios=usuarios)
示例#11
0
def detalhar(id):
    if current_user.is_active() and current_user.session_over():
        current_user.reset_token()

    usuario = db.child('users').child(current_user.localId).get(current_user.idToken)
    usuario = dict(usuario.val())

    despesa = db.child('despesas').child(id).get(current_user.idToken)
    despesa = dict(despesa.val())
    despesa['id'] = id

    if despesa['status'] <= '3' and despesa['tipo_solicitacao'] != '50':
        if 'previsao' not in despesa.keys():
            teste_politica_pgto(despesa)
        elif despesa['previsao'] == "":
            teste_politica_pgto(despesa)

    if despesa['tem_arquivo']:
        try:
            arquivo_url = storage.child('boletos/' + id).get_url(despesa['download_token'])
        except Exception as e:
            print(e)
    else:
        arquivo_url = '#'

    despesa['forma_pagamento'] = FORMA_PGTO[despesa['forma_pagamento']]
    despesa['tipo_solicitacao'] = TIPO_SOLICITACAO[despesa['tipo_solicitacao']]

    if usuario['RD']:

        if current_user.departamento == despesa['departamento']:
            pode_aprovar = True
        elif current_user.departamento == 'administrativo' and despesa['departamento'] == 'estoque':
            pode_aprovar = True
        else:
            pode_aprovar = False

    else:
        pode_aprovar = False

    return render_template('despesas/detalhar.html', despesa=despesa, usuario=usuario, download=arquivo_url, pode_aprovar=pode_aprovar)
示例#12
0
def editar(id):
    if current_user.is_active() and current_user.session_over():
        current_user.reset_token()

    despesa = db.child('despesas').child(id).get(current_user.idToken)
    despesa = dict(despesa.val())
    despesa['id'] = id

    if 'previsao' not in despesa.keys():
        despesa['previsao'] = ""

    form = DespesaForm()
    if form.validate_on_submit():
        despesa = {
            'centro_custo': form.centro_custo.data,
            'modificado_por': current_user.email,
            'data_pagamento': form.data_pagamento.data.strftime('%d/%m/%Y'),
            'data_ult_alt': datetime.now().strftime('%d/%m/%Y'),
            'departamento': form.departamento.data,
            'descricao': form.descricao.data,
            'empresa': form.empresa.data,
            'fornecedor': form.fornecedor.data,
            'forma_pagamento': form.forma_pagamento.data,
            'observacao': form.observacao.data,
            'tipo_solicitacao': form.tipo_solicitacao.data,
            'valor_total': '{:.2f}'.format(form.valor_total.data),
            'previsao': form.previsao.data,
            'status': '1'
        }

        if form.boleto.data is not None:
            despesa['tem_arquivo'] = True
            boleto = os.path.join('/tmp', secure_filename(form.boleto.data.filename))
            form.boleto.data.save(boleto)

        try:
            despesa['modificado_por'] = current_user.email
            despesa['data_ult_alt'] = datetime.now().strftime('%d/%m/%Y')
            if form.boleto.data is not None:
                response = storage.child('boletos/' + id).put(boleto, current_user.idToken)
                despesa['download_token'] = response['downloadTokens']
            db.child('despesas').child(id).update(despesa, current_user.idToken)
            send_mail(despesa, current_user)
            return redirect(url_for('despesas.listar'))

        except Exception as e:
            mensagem = 'Não foi possível atualizar essa despesa.'
            print(e)
            flash(mensagem)

        return redirect(url_for('despesas.detalhar', id=id))

    elif request.method == 'GET':
        form.centro_custo.data = despesa['centro_custo']
        form.data_pagamento.data = datetime.strptime(despesa['data_pagamento'], "%d/%m/%Y")
        form.departamento.data = despesa['departamento']
        form.descricao.data = despesa['descricao']
        form.empresa.data = despesa['empresa']
        form.fornecedor.data = despesa['fornecedor']
        form.forma_pagamento.data = despesa['forma_pagamento']
        form.previsao.data = despesa['previsao']
        form.observacao.data = despesa['observacao']
        form.tipo_solicitacao.data = despesa['tipo_solicitacao']
        form.valor_total.data = float(despesa['valor_total'])

    return render_template('despesas/editar.html', form=form, despesa=despesa)