示例#1
0
def validar_data_hora(request,
                      alocacao_id,
                      data_informada,
                      hora_inicio,
                      hora_fim,
                      format=None):

    data = converter_data_url(data_informada)

    custo_prestador = CustoPrestador.objects.filter(
        pessoa_fisica__prestador__usuario__id=request.user.id,
        data_inicio__lte=data).filter(
            Q(data_fim__isnull=True) | Q(data_fim__gte=data))

    result = {}

    if len(custo_prestador) > 0:
        result['custo_prestador'] = True
    else:
        result['custo_prestador'] = False

    alocacoes = AlocacaoHoras.objects.filter(
        atividade_profissional__pessoa_fisica__prestador__usuario__id=request.
        user.id,
        data_informada=data).filter(~Q(id=alocacao_id))

    hora_inicio = datetime.datetime.strptime(hora_inicio, '%H:%M')
    hora_fim = datetime.datetime.strptime(hora_fim, '%H:%M')

    for i in alocacoes:

        hora_inicio_aloc = datetime.datetime.strptime(i.hora_inicio, '%H:%M')
        hora_fim_aloc = datetime.datetime.strptime(i.hora_fim, '%H:%M')

        if hora_inicio > hora_inicio_aloc and hora_inicio < hora_fim_aloc:
            result['possui_alocacao'] = True
            break
        elif hora_fim > hora_inicio_aloc and hora_fim < hora_fim_aloc:
            result['possui_alocacao'] = True
            break
        elif hora_inicio <= hora_inicio_aloc and hora_fim >= hora_fim_aloc:
            result['possui_alocacao'] = True
            break

    return Response(result)
示例#2
0
def buscar_alocacao_dia(request, data_informada, format=None):

    data = converter_data_url(data_informada)
    alocacao_horas = (AlocacaoHoras.objects.filter(
        data_informada=data,
        atividade_profissional__pessoa_fisica__prestador__usuario__id=request.
        user.id).order_by('hora_inicio').values(
            'hora_inicio', 'hora_fim', 'horas_alocadas_milisegundos',
            'atividade_profissional__atividade__descricao'))

    total_horas = (AlocacaoHoras.objects.filter(
        data_informada=data,
        atividade_profissional__pessoa_fisica__prestador__usuario__id=request.
        user.id).aggregate(total_horas=Sum('horas_alocadas_milisegundos')))

    context = {'alocacao_horas': alocacao_horas, 'total': total_horas}

    return Response(context)
示例#3
0
def buscar_valor_hora_b2card(request, data, format=None):
    valor_horas = ValorHora.objects.filter(
        Q(centro_custo__nome='B2Card')
        & Q(tipo_hora__descricao='Custo Medio Interno'))
    # valor_horas = ValorHora.objects.filter(Q(centro_custo__nome='B2Card'))

    data = converter_data_url(data)

    valor_hora_list = []
    for i in valor_horas:
        vigencia = Vigencia.objects.filter(
            valor_hora=i, data_inicio__lte=data).filter(
                Q(data_fim__isnull=True) | Q(data_fim__gte=data))
        if vigencia:
            valor_hora_data = ValorHoraSerializer(i).data
            valor_hora_data['vigencia'] = VigenciaSerializer(vigencia[0]).data
            valor_hora_list.append(valor_hora_data)

    return Response(valor_hora_list)
示例#4
0
def buscar_valor_hora_por_cliente(request, cliente_id, data, format=None):

    data = converter_data_url(data)

    valor_horas = ValorHora.objects.filter(
        Q(centro_custo__apropriacao__pessoa__pessoajuridica__id=cliente_id)
        & Q(tipo_hora__descricao='Valor de Venda para Clientes'))

    valor_hora_list = []
    for i in valor_horas:
        vigencia = Vigencia.objects.filter(
            valor_hora=i, data_inicio__lte=data).filter(
                Q(data_fim__isnull=True) | Q(data_fim__gte=data))
        if vigencia:
            valor_hora_data = ValorHoraSerializer(i).data
            valor_hora_data['vigencia'] = VigenciaSerializer(vigencia[0]).data
            valor_hora_list.append(valor_hora_data)

    return Response(valor_hora_list)
示例#5
0
def buscar_valor_imposto_custoadmin_b2card(request, data, format=None):
    valor_imposto_custoadmin = ValorHora.objects.filter(
        Q(centro_custo__nome='B2Card')
        & (Q(descricao='Valor % Custo Administrativo')
           | Q(descricao='Valor % Impostos')))

    data = converter_data_url(data)

    #valor_taxa_total = 0
    valor_taxa_total = []
    for i in valor_imposto_custoadmin:
        vigencia = Vigencia.objects.filter(
            valor_hora=i, data_inicio__lte=data).filter(
                Q(data_fim__isnull=True) | Q(data_fim__gte=data))
        if vigencia:
            valor_taxa_data = ValorHoraSerializer(i).data
            valor_taxa_data['vigencia'] = VigenciaSerializer(vigencia[0]).data
            valor_taxa_total.append(valor_taxa_data)

    return Response(valor_taxa_total)