Example #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'))
Example #2
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)
Example #3
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)
Example #4
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)