コード例 #1
0
ファイル: views.py プロジェクト: annapaula/arquea
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)
コード例 #2
0
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)
コード例 #3
0
ファイル: views.py プロジェクト: ansp-2015/arquea
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})