Untitled

mail@pastecode.io avatar
unknown
python
a month ago
4.7 kB
1
Indexable
Never
# -*- coding: utf-8 -*-
import sys
import csv
from rh.models import *
from rh.gfp.models import *
import os


NOME_PASTA = settings.UPLOAD_STORE_DIR+'/servidores_cti/'
NOME_ARQUIVO = 'cti_SERVIDORES_'

if not os.path.exists(NOME_PASTA):
    os.makedirs(NOME_PASTA)


ANOS = [2023]

servidores = Servidor.objects.filter(
        entries__folha__periodo__ano__in=ANOS,                      
    ).order_by('pessoa_fisica__nome').distinct()



servidores_filtro = []


def get_fez_value(ano,servidores):
    
    fes = FolhaEvento.objects.filter(
            folha__periodo__ano=ano,
            contracheque__pensioner__isnull=True,
            status='CT',
            servidor__in=servidores,
            evento__tipo='P'

        )
    return fes

def get_fes_patronal(ano,servidores):

    rubricas_prev = ['93000','93100','91000','91100','94000','94100','94500','94600']

    fes_prev = FolhaEvento.objects.filter(
            folha__periodo__ano=ano,
            contracheque__pensioner__isnull=True,
            status='CT',
            servidor__in=servidores,
            evento__numero__in=rubricas_prev
        )
    
    return fes_prev

def get_total_value(fes=None,servidor=None):
    fes = fes.filter(servidor=servidor)
    total = 0
    for fe in fes:
        total += fe.value
    return total

def get_total_patronal(fes=None,servidor=None):
    fes = fes.filter(servidor=servidor)
    total_prev = 0
    for fes_p in fes:
        total_prev += fes_p.patronal
    return total_prev


def get_servidores_cti_all(ano,filter=None,texto=None):
    data_inicial = date(ano,1,1)
    data_final = date(ano,12,31)

    servidores = Servidor.objects.filter(servidor_lotacao__lotacao__pk__in=[16,531])
    servidores = servidores.filter(
            Q(servidor_lotacao__data_vigencia_inicio__lte=data_final) &
            (Q(servidor_lotacao__data_vigencia_fim__gte=data_inicial) | Q(servidor_lotacao__data_vigencia_fim=None))
        )


    servidores_gaeco = Servidor.objects.filter(matricula=335)

    servidores = servidores | servidores_gaeco
    servidores = servidores.distinct()

    if filter:
        servidores = servidores.filter(type_by_possession__in=filter)
    
    return servidores

def get_gastos_cti(ano):
    servidores = get_servidores_cti_all(ano)
    fes_valor = get_fez_value(ano,servidores)
    fes_patronal = get_fes_patronal(ano,servidores)
    print 'GASTOS SERVIDORES CTI:',ano
    total_value = 0
    total_patronal = 0

    for s in servidores:
        valor = get_total_value(fes_valor,s)
        patronal = get_total_patronal(fes_patronal,s)
        print s, 'TOTAL - FOLHA :',valor, 'TOTAL PATRONAL :',patronal
        total_value += valor
        total_patronal = patronal
    print 'TOTAL - FOLHA :',total_value, 'TOTAL - PATRONAL:',total_patronal
    print 'TOTAL:',total_patronal + total_value 
        

def get_servidores_cti(ano,filter=None,texto=None):
    servidores = get_servidores_cti_all(ano,filter)

    if filter:
        servidores = servidores.filter(type_by_possession__in=filter)
    
    if texto:
        print texto 
    print 'ANO:'+str(ano) 
    print 'QUANTIDADE :'+ str(len(servidores))
    for s in servidores:
        print s,s.type_by_possession

def get_usuarios(ano):
    
    data_inicial = date(ano,1,1)
    data_final = date(ano,12,31)

    servidores = Servidor.objects.filter(
        Q(exercise_date__lte=data_final) &
            (Q(termination_date__gte=data_inicial) | Q(termination_date=None))
    ).distinct()

    print 'QUANTIDADE USUARIOS:'+ str(len(servidores))


def get_servidores_carreira(ano):
    get_servidores_cti(ano,['EFE','EFC','ECM'],'SERVIDORES EFETIVOS DE TI')

def get_servidores_todos(ano):
    get_servidores_cti(ano=ano,texto='TODOS SERVIDORES DE TI')

def run():
    anos = [2023]
    for ano in anos:
        # get_servidores_carreira(ano)
        # get_servidores_todos(ano)
        # get_usuarios(ano)
        get_gastos_cti(ano)

run()

# print 'SERVIDORES DA CTI 2022'
# for s in servidores_filtro:
#     fes_filter = fes.filter(servidor=s)
#     fes_prev_filter = fes_prev.filter(servidor=s)
#     print s, 'FOLHA :', get_total_value(fes_filter), 'PATRONAL:', get_total_patronal(fes_prev_filter) 

# def is_servidor_cti(servidor=None):
#     data_inicial = date(ANO,1,1)
#     data_final = date(ANO,12,31)
#     query = servidor.servidor_lotacao.all()
#     query = query.filter(lotacao__id=16)
#     query = query.filter(Q(data_vigencia_inicio__lte=data_inicial) & (Q(data_vigencia_fim__gte=data_final) | Q(data_vigencia_fim=None)))
#     return query.exists()

# print '\n'
# print 'TOTAL GASTO COM SERVIDORES' 
# print get_total_value(fes)
# print 'TOTAL GASTO COM PREVIDENCIA DE SERVIDORES'
# print get_total_patronal(fes_prev)
Leave a Comment