コード例 #1
0
ファイル: views.py プロジェクト: moisessouza/b2card
def ajustar_porcentagem_profissional(request, format=None):

    atividade_profissional = AtividadeProfissional.objects.get(
        pk=request.data['id'])
    atividade_profissional.percentual_concluido = request.data[
        'percentual_concluido']
    atividade_profissional.save()

    #ultima alocacao horas sem
    alocacao_horas = AlocacaoHoras.objects.filter(
        atividade_profissional=atividade_profissional,
        tipo_alocacao__isnull=True).order_by('-id')[0]
    alocacao_horas.percentual_concluido = request.data['percentual_concluido']
    alocacao_horas.save()

    #Calcular percentual atividade
    atividade = Atividade.objects.filter(
        atividadeprofissional=atividade_profissional)[0]
    atividades_profissionais = AtividadeProfissional.objects.filter(
        atividade=atividade)
    percentual_calculado = sum(
        (a.percentual_calculado if a.percentual_calculado else 0)
        for a in atividades_profissionais) / len(atividades_profissionais)
    percentual_concluido = sum(
        (a.percentual_concluido if a.percentual_concluido else 0)
        for a in atividades_profissionais) / len(atividades_profissionais)

    atividade.percentual_calculado = percentual_calculado
    atividade.percentual_concluido = percentual_concluido
    atividade.save()

    #calcular percentual fase_atividade
    fase_atividade = FaseAtividade.objects.filter(atividade=atividade)[0]
    atividades = Atividade.objects.filter(fase_atividade=fase_atividade)
    percentual_calculado = sum(
        (a.percentual_calculado if a.percentual_calculado else 0)
        for a in atividades) / len(atividades)
    percentual_concluido = sum(
        (a.percentual_concluido if a.percentual_concluido else 0)
        for a in atividades) / len(atividades)

    fase_atividade.percentual_calculado = percentual_calculado
    fase_atividade.percentual_concluido = percentual_concluido
    fase_atividade.save()

    demanda = Demanda.objects.filter(faseatividade=fase_atividade)[0]
    fase_atividades = FaseAtividade.objects.filter(demanda=demanda)
    percentual_calculado = sum(
        (a.percentual_calculado if a.percentual_calculado else 0)
        for a in fase_atividades) / len(fase_atividades)
    percentual_concluido = sum(
        (a.percentual_concluido if a.percentual_concluido else 0)
        for a in fase_atividades) / len(fase_atividades)

    demanda.percentual_calculado = percentual_calculado
    demanda.percentual_concluido = percentual_concluido
    demanda.save()

    return Response(
        AtividadeProfissionalSerializer(atividade_profissional).data)
コード例 #2
0
ファイル: views.py プロジェクト: moisessouza/b2card
def deletar_alocacao(request, alocacao_id, format=None):

    alocacao_horas = AlocacaoHoras.objects.get(pk=alocacao_id)
    alocacao_horas.delete()
    calcular_horas_percentual_atividade(alocacao_horas.atividade_profissional)

    return Response(
        AtividadeProfissionalSerializer(
            alocacao_horas.atividade_profissional).data)
コード例 #3
0
ファイル: views.py プロジェクト: moisessouza/b2card
def buscar_atividade_profissional_por_atividade(request,
                                                atividade_id,
                                                format=None):

    atividade_profissional = AtividadeProfissional.objects.filter(
        atividade__id=atividade_id,
        pessoa_fisica__prestador__usuario__id=request.user.id)[:1]
    atividade_profissional_dict = AtividadeProfissionalSerializer(
        atividade_profissional[0]).data

    return Response(atividade_profissional_dict)
コード例 #4
0
ファイル: views.py プロジェクト: moisessouza/b2card
def deletar_alocacao_interna(request, alocacao_id, format=None):

    alocacao_horas = AlocacaoHoras.objects.get(pk=alocacao_id)
    alocacao_horas.delete()

    atividade_profissional = alocacao_horas.atividade_profissional
    alocacoes = AlocacaoHoras.objects.filter(
        atividade_profissional=atividade_profissional)
    atividade_profissional.horas_alocadas_milisegundos = sum(
        a.horas_alocadas_milisegundos for a in alocacoes)
    atividade_profissional.save()

    return Response(
        AtividadeProfissionalSerializer(atividade_profissional).data)
コード例 #5
0
ファイル: views.py プロジェクト: moisessouza/b2card
def alocar_horas_internas(request, format=None):

    atividade_profissional = None
    if 'atividade_profissional' in request.data:
        atividade_profissional = AtividadeProfissional.objects.get(
            pk=request.data['atividade_profissional']['id'])
        del request.data['atividade_profissional']

    if 'atividade' in request.data:
        if atividade_profissional is None:
            atividade = Atividade.objects.get(
                pk=request.data['atividade']['id'])
            atividade_profissional = AtividadeProfissional()
            atividade_profissional.atividade = atividade
            pessoa_fisica = PessoaFisica.objects.filter(
                prestador__usuario__id=request.user.id)[0]
            atividade_profissional.pessoa_fisica = pessoa_fisica
            atividade_profissional.quantidade_horas = 0
            atividade_profissional.percentual_calculado = 0
            atividade_profissional.percentual_concluido = 0
            atividade_profissional.save()
        del request.data['atividade']

    alocacao_horas = AlocacaoHoras(**request.data)
    alocacao_horas.atividade_profissional = atividade_profissional
    alocacao_horas.data_informada = converter_string_para_data(
        request.data['data_informada'])
    alocacao_horas.data_alocacao = datetime.datetime.now()

    if 'observacao' in request.data and request.data['observacao']:
        alocacao_horas.observacao = request.data['observacao']
    else:
        alocacao_horas.observacao = None

    alocacao_horas.percentual_concluido = 0
    alocacao_horas.save()

    horas_alocadas_milisegundos = request.data['horas_alocadas_milisegundos']

    if (atividade_profissional.horas_alocadas_milisegundos):
        atividade_profissional.horas_alocadas_milisegundos += horas_alocadas_milisegundos
    else:
        atividade_profissional.horas_alocadas_milisegundos = horas_alocadas_milisegundos

    atividade_profissional.save()

    return Response(
        AtividadeProfissionalSerializer(atividade_profissional).data)
コード例 #6
0
ファイル: views.py プロジェクト: moisessouza/b2card
def alocar_horas(request, format=None):

    if 'alocacao_id' in request.data:
        alocacao_horas = AlocacaoHoras.objects.get(
            pk=request.data['alocacao_id'])
    else:
        raise Exception('Alocação não selecionado')

    atividade_profissional = alocacao_horas.atividade_profissional

    tipo_alocacao = None
    if 'tipo_alocacao' in request.data:
        if request.data['tipo_alocacao']:
            tipo_alocacao = TipoAlocacao.objects.get(
                pk=request.data['tipo_alocacao']['id'])
        del request.data['tipo_alocacao']

    hora_inicio = datetime.datetime.strptime(request.data['hora_inicio'],
                                             '%H:%M')
    hora_fim = datetime.datetime.strptime(request.data['hora_fim'], '%H:%M')

    subtracao = hora_fim - hora_inicio
    if (subtracao.seconds *
            1000) != request.data['horas_alocadas_milisegundos']:
        raise Exception("Milisegundos não confere")

    alocacao_horas.horas_alocadas_milisegundos = request.data[
        'horas_alocadas_milisegundos']
    alocacao_horas.hora_inicio = request.data['hora_inicio']
    alocacao_horas.hora_fim = request.data['hora_fim']
    alocacao_horas.percentual_concluido = request.data[
        'percentual_concluido'] if 'percentual_concluido' in request.data else None
    alocacao_horas.observacao = request.data[
        'observacao'] if 'observacao' in request.data else None
    alocacao_horas.data_informada = converter_string_para_data(
        request.data['data_informada'])
    alocacao_horas.data_alocacao = datetime.datetime.now()
    alocacao_horas.tipo_alocacao = tipo_alocacao
    alocacao_horas.save()

    calcular_horas_percentual_atividade(atividade_profissional)

    return Response(
        AtividadeProfissionalSerializer(atividade_profissional).data)
コード例 #7
0
ファイル: views.py プロジェクト: moisessouza/b2card
def serializar_fase_atividade(fase_atividades):
    '''
        Utilizado em outros locais além desse
    '''
    fase_atividade_list = []

    if fase_atividades:
        fase_atividade_list = FaseAtividadeSerializer(fase_atividades,
                                                      many=True).data
        for i in fase_atividade_list:

            if 'data_inicio' in i:
                i['data_inicio'] = serializar_data(i['data_inicio'])
            if 'data_fim' in i:
                i['data_fim'] = serializar_data(i['data_fim'])

            atividades = Atividade.objects.filter(fase_atividade__id=i['id'])

            atividade_list = []

            if atividades:
                atividade_list = AtividadeSerializer(atividades,
                                                     many=True).data
                for a in atividade_list:
                    if 'data_inicio' in a:
                        a['data_inicio'] = serializar_data(a['data_inicio'])
                    if 'data_fim' in a:
                        a['data_fim'] = serializar_data(a['data_fim'])

                    atividade_profissionais = AtividadeProfissional.objects.filter(
                        atividade__id=a['id'])

                    if atividade_profissionais:
                        a['atividadeprofissionais'] = AtividadeProfissionalSerializer(
                            atividade_profissionais, many=True).data

            i['atividades'] = atividade_list

    return fase_atividade_list
コード例 #8
0
ファイル: views.py プロジェクト: moisessouza/b2card
def alocar_horas_internas(request, format=None):

    if 'alocacao_id' in request.data:
        alocacao_horas = AlocacaoHoras.objects.get(
            pk=request.data['alocacao_id'])
    else:
        raise Exception('Alocação não selecionado')

    atividade_profissional = alocacao_horas.atividade_profissional

    alocacao_horas.atividade_profissional = atividade_profissional
    alocacao_horas.horas_alocadas_milisegundos = request.data[
        'horas_alocadas_milisegundos']
    alocacao_horas.data_informada = converter_string_para_data(
        request.data['data_informada'])
    alocacao_horas.hora_inicio = request.data['hora_inicio']
    alocacao_horas.hora_fim = request.data['hora_fim']

    if 'observacao' in request.data and request.data['observacao']:
        alocacao_horas.observacao = request.data['observacao']
    else:
        alocacao_horas.observacao = None

    alocacao_horas.data_alocacao = datetime.datetime.now()
    alocacao_horas.percentual_concluido = 0
    alocacao_horas.save()

    alocacoes = AlocacaoHoras.objects.filter(
        atividade_profissional=atividade_profissional)

    atividade_profissional.horas_alocadas_milisegundos = sum(
        a.horas_alocadas_milisegundos for a in alocacoes)

    atividade_profissional.save()

    return Response(
        AtividadeProfissionalSerializer(atividade_profissional).data)
コード例 #9
0
ファイル: views.py プロジェクト: moisessouza/b2card
def alocar_horas(request, format=None):

    atividade_profissional = None
    if 'atividade_profissional' in request.data:
        atividade_profissional = AtividadeProfissional.objects.get(
            pk=request.data['atividade_profissional']['id'])
        del request.data['atividade_profissional']

    tipo_alocacao = None
    if 'tipo_alocacao' in request.data:
        tipo_alocacao = TipoAlocacao.objects.get(
            pk=request.data['tipo_alocacao']['id'])
        del request.data['tipo_alocacao']

    hora_inicio = datetime.datetime.strptime(request.data['hora_inicio'],
                                             '%H:%M')
    hora_fim = datetime.datetime.strptime(request.data['hora_fim'], '%H:%M')

    subtracao = hora_fim - hora_inicio
    if (subtracao.seconds *
            1000) != request.data['horas_alocadas_milisegundos']:
        raise Exception("Milisegundos não confere")

    alocacao_horas = AlocacaoHoras(**request.data)
    alocacao_horas.atividade_profissional = atividade_profissional
    alocacao_horas.data_informada = converter_string_para_data(
        request.data['data_informada'])
    alocacao_horas.data_alocacao = datetime.datetime.now()
    alocacao_horas.tipo_alocacao = tipo_alocacao
    alocacao_horas.save()

    horas_alocadas_milisegundos = request.data['horas_alocadas_milisegundos']
    percentual_concluido = request.data['percentual_concluido']

    if (atividade_profissional.horas_alocadas_milisegundos):
        atividade_profissional.horas_alocadas_milisegundos += horas_alocadas_milisegundos
    else:
        atividade_profissional.horas_alocadas_milisegundos = horas_alocadas_milisegundos

    quantidade_horas_milisegundos = atividade_profissional.quantidade_horas * 60 * 60 * 1000
    percentual_calculado = (atividade_profissional.horas_alocadas_milisegundos
                            * 100) / quantidade_horas_milisegundos

    if percentual_calculado > 100:
        percentual_calculado = 100

    atividade_profissional.percentual_calculado = percentual_calculado
    atividade_profissional.percentual_concluido = percentual_concluido
    atividade_profissional.save()

    #Calcular percentual atividade
    atividade = Atividade.objects.filter(
        atividadeprofissional=atividade_profissional)[0]
    atividades_profissionais = AtividadeProfissional.objects.filter(
        atividade=atividade)
    percentual_calculado = sum(
        (a.percentual_calculado if a.percentual_calculado else 0)
        for a in atividades_profissionais) / len(atividades_profissionais)
    percentual_concluido = sum(
        (a.percentual_concluido if a.percentual_concluido else 0)
        for a in atividades_profissionais) / len(atividades_profissionais)

    if (atividade.percentual_concluido < 100 and percentual_concluido == 100):
        atividade.data_conclusao_atividade = datetime.datetime.now()

    atividade.percentual_calculado = percentual_calculado
    atividade.percentual_concluido = percentual_concluido
    atividade.save()

    #calcular percentual fase_atividade
    fase_atividade = FaseAtividade.objects.filter(atividade=atividade)[0]
    atividades = Atividade.objects.filter(fase_atividade=fase_atividade)
    percentual_calculado = sum(
        (a.percentual_calculado if a.percentual_calculado else 0)
        for a in atividades) / len(atividades)
    percentual_concluido = sum(
        (a.percentual_concluido if a.percentual_concluido else 0)
        for a in atividades) / len(atividades)

    fase_atividade.percentual_calculado = percentual_calculado
    fase_atividade.percentual_concluido = percentual_concluido
    fase_atividade.save()

    demanda = Demanda.objects.filter(faseatividade=fase_atividade)[0]
    fase_atividades = FaseAtividade.objects.filter(demanda=demanda)
    percentual_calculado = sum(
        (a.percentual_calculado if a.percentual_calculado else 0)
        for a in fase_atividades) / len(fase_atividades)
    percentual_concluido = sum(
        (a.percentual_concluido if a.percentual_concluido else 0)
        for a in fase_atividades) / len(fase_atividades)

    demanda.percentual_calculado = percentual_calculado
    demanda.percentual_concluido = percentual_concluido
    demanda.save()

    return Response(
        AtividadeProfissionalSerializer(atividade_profissional).data)