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)
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)
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)
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)
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)