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'))
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)
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)
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)