def fapesp(request, mem): m = get_object_or_404(MemorandoResposta, pk=mem) corpos = [] anexos = [] incluidos = {} if m.anexa_relatorio: from patrimonio.views import por_termo from django.contrib.auth.models import User from django.http import HttpRequest new_request = HttpRequest() new_request.user = User.objects.get(email='*****@*****.**') new_request.GET = {'termo': m.memorando.termo.id, 'agilis': 1, 'modalidade': 1} new_request.META = {} response = por_termo(new_request, 1) anexos.append((response.content, u'Lista patrimonial do processo %s' % m.memorando.termo, 2)) for c in m.corpo_set.all(): if c.anexo: anexos.append((os.path.join(settings.MEDIA_ROOT, c.anexo.name), u'Pergunta %s' % c.pergunta.numero, 1)) if c.pergunta.numero in incluidos.keys(): corpos[incluidos[c.pergunta.numero]]['respostas'].append(c.resposta) else: incluidos.update({c.pergunta.numero: len(corpos)}) corpos.append({'numero': c.pergunta.numero, 'pergunta': c.pergunta.questao, 'respostas': [c.resposta]}) return render_to_pdfxhtml2pdf('memorando/fapesp.pdf', {'m': m, 'corpos': corpos}, request=request, filename='memorando_%s.pdf' % m.data.strftime('%d_%m_%Y'), attachments=anexos)
def fapesp(request, mem): m = get_object_or_404(MemorandoResposta, pk=mem) corpos = [] anexos = [] incluidos = {} if m.anexa_relatorio: from patrimonio.views import por_termo from django.contrib.auth.models import User from django.http import HttpRequest new_request = HttpRequest() new_request.user = User.objects.get(email='*****@*****.**') new_request.GET = { 'termo': m.memorando.termo.id, 'agilis': 1, 'modalidade': 1 } new_request.META = {} response = por_termo(new_request, 1) anexos.append( (response.content, u'Lista patrimonial do processo %s' % m.memorando.termo, 2)) for c in m.corpo_set.all(): if c.anexo: anexos.append((os.path.join(settings.MEDIA_ROOT, c.anexo.name), u'Pergunta %s' % c.pergunta.numero, 1)) if c.pergunta.numero in incluidos.keys(): corpos[incluidos[c.pergunta.numero]]['respostas'].append( c.resposta) else: incluidos.update({c.pergunta.numero: len(corpos)}) corpos.append({ 'numero': c.pergunta.numero, 'pergunta': c.pergunta.questao, 'respostas': [c.resposta] }) return render_to_pdfxhtml2pdf('memorando/fapesp.pdf', { 'm': m, 'corpos': corpos }, request=request, filename='memorando_%s.pdf' % m.data.strftime('%d_%m_%Y'), attachments=anexos)
def acordo_progressivo(request, pdf=False): """ Relatório Gerencial - Relatório gerencial progressivo """ acordos = [] termos = [] for a in Acordo.objects.all(): acordo = {'nome': a.descricao} termos = [] totalTermoRealizadoReal = Decimal('0.0') totalTermoConcedidoReal = Decimal('0.0') totalTermoSaldoReal = Decimal('0.0') totalTermoRealizadoDolar = Decimal('0.0') totalTermoConcedidoDolar = Decimal('0.0') totalTermoSaldoDolar = Decimal('0.0') for t in Termo.objects.filter(exibe_rel_ger_progressivo=True)\ .order_by('inicio').only('ano', 'processo', 'digito'): concedido = a.itens_outorga.filter(natureza_gasto__termo=t)\ .values('natureza_gasto__modalidade__moeda_nacional').annotate(soma=Sum('valor')).order_by() concedido_real = Decimal('0.0') concedido_dolar = Decimal('0.0') for c in concedido: if c['soma']: if c['natureza_gasto__modalidade__moeda_nacional']: concedido_real = c['soma'] else: concedido_dolar = c['soma'] realizado_real = Decimal('0.0') realizado_dolar = Decimal('0.0') realizado = Pagamento.objects.filter(origem_fapesp__item_outorga__natureza_gasto__termo=t, origem_fapesp__acordo=a) \ .values('origem_fapesp__item_outorga__natureza_gasto__modalidade__moeda_nacional')\ .annotate(soma=Sum('valor_fapesp')).order_by() for r in realizado: if r['soma']: if r['origem_fapesp__item_outorga__natureza_gasto__modalidade__moeda_nacional']: realizado_real = r['soma'] else: realizado_dolar = r['soma'] saldo_real = concedido_real - realizado_real saldo_dolar = concedido_dolar - realizado_dolar if concedido_real and concedido_real != 0: porcentagem_real = str(round(Decimal('100.0') * realizado_real / concedido_real, 2)) + '%' else: porcentagem_real = "===" if concedido_dolar and concedido_dolar != 0: porcentagem_dolar = str(round(Decimal('100.0') * realizado_dolar / concedido_dolar, 2)) + '%' else: porcentagem_dolar = "===" tem_real = concedido_real or realizado_real tem_dolar = concedido_dolar or realizado_dolar itens = [] if a.itens_outorga.filter(natureza_gasto__termo=t).exists(): itensOutorga = a.itens_outorga.filter(natureza_gasto__termo=t)\ .select_related('natureza_gasto__modalidade', 'entidade').defer('justificativa', 'obs') for item in itensOutorga: realiz = Pagamento.objects.filter(origem_fapesp__item_outorga=item, origem_fapesp__acordo=a)\ .aggregate(Sum('valor_fapesp')) realiz = realiz['valor_fapesp__sum'] or Decimal('0.0') concede = item.valor or Decimal('0.0') excedido = realiz.compare(concede) == Decimal('1') if concede and concede != 0: porcentagem = str(round(Decimal('100.0') * realiz / concede, 2)) + '%' else: porcentagem = "===" itens.append({'item': item, 'concedido': concede, 'realizado': realiz, 'saldo': concede-realiz, 'porcentagem': porcentagem, 'excedido': excedido}) if tem_real: valores_real = {'tem_real': 1, 'concedido_real': concedido_real, 'realizado_real': realizado_real, 'saldo_real': saldo_real, 'porcentagem_real': porcentagem_real} totalTermoRealizadoReal += realizado_real totalTermoConcedidoReal += concedido_real totalTermoSaldoReal += saldo_real else: valores_real = {'tem_real': 0} if tem_dolar: valores_dolar = {'tem_dolar': 1, 'concedido_dolar': concedido_dolar, 'realizado_dolar': realizado_dolar, 'saldo_dolar': saldo_dolar, 'porcentagem_dolar': porcentagem_dolar} totalTermoRealizadoDolar += realizado_dolar totalTermoConcedidoDolar += concedido_dolar totalTermoSaldoDolar += saldo_dolar else: valores_dolar = {'tem_dolar': 0} valores = valores_real valores.update(valores_dolar) valores.update({'termo': t, 'itens': itens}) termos.append(valores) tem_real = (totalTermoConcedidoReal and totalTermoConcedidoReal != 0.0) or \ (totalTermoRealizadoReal and totalTermoRealizadoReal != 0.0) tem_dolar = (totalTermoConcedidoDolar and totalTermoConcedidoDolar != 0.0) or \ (totalTermoRealizadoDolar and totalTermoRealizadoDolar != 0.0) acordo.update({'termos': termos, 'tem_real': tem_real, 'tem_dolar': tem_dolar, 'totalTermoRealizadoReal': totalTermoRealizadoReal, 'totalTermoConcedidoReal': totalTermoConcedidoReal, 'totalTermoSaldoReal': totalTermoSaldoReal, 'totalTermoRealizadoDolar': totalTermoRealizadoDolar, 'totalTermoConcedidoDolar': totalTermoConcedidoDolar, 'totalTermoSaldoDolar': totalTermoSaldoDolar}) acordos.append(acordo) termos = Termo.objects.filter(exibe_rel_ger_progressivo=True).order_by('inicio') if pdf: return render_to_pdfxhtml2pdf('outorga/acordo_progressivo.pdf', {'acordos': acordos, 'termos': termos}, request=request, filename='acordo_progressivo.pdf') else: return render(request, 'outorga/acordo_progressivo.html', {'acordos': acordos, 'termos': termos})