Example #1
0
 def form_valid(self, form):
     fecha = form.cleaned_data.get('fecha')
     fecha_desde, fecha_hasta = fecha.split('-')
     fecha_desde = convert_fecha_datetime(fecha_desde)
     fecha_hasta = convert_fecha_datetime(fecha_hasta)
     resultado = form.cleaned_data.get('resultado_auditoria')
     service = ReporteAgenteService()
     service_formulario = ReporteFormularioVentaService()
     agente = self.agente
     # Crear reporte csv para las calficaciones no interesada(no gestion) y gestion
     # de acuerdo al periodo de fecha seleccionado
     if not resultado == ReporteForm.TODOS_RESULTADOS:
         service.crea_reporte_csv(agente, fecha_desde, fecha_hasta)
         service_formulario.crea_reporte_csv(agente, fecha_desde,
                                             fecha_hasta)
     else:
         service.crea_reporte_csv(agente,
                                  fecha_desde,
                                  fecha_hasta,
                                  resultado=resultado)
         service_formulario.crea_reporte_csv(agente,
                                             fecha_desde,
                                             fecha_hasta,
                                             resultado=resultado)
     fecha_desde = datetime.datetime.combine(fecha_desde, datetime.time.min)
     fecha_hasta = datetime.datetime.combine(fecha_hasta, datetime.time.max)
     listado_calificaciones = agente.calificaciones.filter(
         fecha__range=(fecha_desde, fecha_hasta))
     if not resultado == ReporteForm.TODOS_RESULTADOS:
         listado_calificaciones = listado_calificaciones.filter(
             auditoriacalificacion__resultado=resultado)
     return self.render_to_response(
         self.get_context_data(
             listado_calificaciones=listado_calificaciones))
Example #2
0
def reporte_por_fecha_pausa_modal_agente_view(request):
    """esta vista es invocada por una ajax para mostrar las pausas por fechas
    de los agentes en una ventana modal"""
    if request.method == 'POST':
        if request.is_ajax():

            id_agente = request.POST['id_agente']
            fecha_desde = request.POST['fecha_desde']
            fecha_hasta = request.POST['fecha_hasta']
            fecha_desde = convert_fecha_datetime(fecha_desde)
            fecha_hasta = convert_fecha_datetime(fecha_hasta)
            pausa_id = request.POST['pausa_id']
            tiempos_agentes = TiemposAgente()
            pausa = tiempos_agentes._obtener_datos_de_pausa(pausa_id)
            agente = AgenteProfile.objects.get(pk=int(id_agente))
            agentes = tiempos_agentes.calcular_tiempo_pausa_tipo_fecha(
                agente, fecha_desde, fecha_hasta, pausa_id)
            ctx = {'agentes': agentes}
            t = loader.get_template('tbody_pausa_fechas_agentes.html')
            html = t.render(ctx)
            data = {
                'nombre_agente': agente.user.get_full_name(),
                'tbody': html,
                'pausa': pausa['nombre']
            }
            return JsonResponse(data, safe=True)

    return render(request)
Example #3
0
def reporte_por_fecha_modal_agente_view(request):
    """esta vista es invocada por una ajax para mostrar los datos por fechas
    de los agentes en una ventana modal"""
    if request.method == 'POST':
        if request.is_ajax():

            id_agente = request.POST['id_agente']
            fecha_desde = request.POST['fecha_desde']
            fecha_hasta = request.POST['fecha_hasta']
            fecha_desde = convert_fecha_datetime(fecha_desde)
            fecha_hasta = convert_fecha_datetime(fecha_hasta)

            tiempos_agentes = TiemposAgente()
            agente = AgenteProfile.objects.get(pk=int(id_agente))

            agentes, error = tiempos_agentes.generar_por_fecha_agente(
                agente, fecha_desde, fecha_hasta)
            ctx = {'agentes': agentes}
            t = loader.get_template('tbody_fechas_agentes.html')
            html = t.render(ctx)
            data = {
                'nombre_agente': agente.user.get_full_name(),
                'tbody': html,
                'error': error
            }
            return JsonResponse(data, safe=True)

    return render(request)
Example #4
0
 def clean_fecha(self):
     fecha = self.cleaned_data.get('fecha')
     try:
         fecha_desde, fecha_hasta = fecha.split('-')
         fecha_desde = convert_fecha_datetime(fecha_desde)
         fecha_hasta = convert_fecha_datetime(fecha_hasta, final_dia=True)
     except ValueError:
         raise forms.ValidationError(_('Formato inválido'))
     self.desde = fecha_desde
     self.hasta = fecha_hasta
     return fecha
    def form_valid(self, form):
        fecha = form.cleaned_data.get('fecha')
        fecha_desde, fecha_hasta = fecha.split('-')
        fecha_desde = convert_fecha_datetime(fecha_desde)
        fecha_hasta = convert_fecha_datetime(fecha_hasta)

        campana_llamadas_service = EstadisticasCampanaLlamadasService()
        estadisticas = campana_llamadas_service.general_campana(
            fecha_desde, fecha_hasta, self.request.user)

        return self.render_to_response(
            self.get_context_data(estadisticas=estadisticas))
Example #6
0
 def form_valid(self, form):
     fecha = form.cleaned_data.get('fecha')
     fecha_desde, fecha_hasta = fecha.split('-')
     fecha_desde = convert_fecha_datetime(fecha_desde)
     fecha_hasta = convert_fecha_datetime(fecha_hasta)
     # genera el reporte para el agente de esta campana
     service = EstadisticasAgenteService()
     agente = AgenteProfile.objects.get(pk=self.kwargs['pk_agente'])
     graficos_estadisticas = service.general_campana(
         agente, self.get_object(), fecha_desde, fecha_hasta)
     return self.render_to_response(
         self.get_context_data(graficos_estadisticas=graficos_estadisticas))
Example #7
0
    def form_valid(self, form):
        fecha = form.cleaned_data.get('fecha')
        fecha_desde, fecha_hasta = fecha.split('-')
        fecha_desde = convert_fecha_datetime(fecha_desde)
        fecha_hasta = convert_fecha_datetime(fecha_hasta)
        grupo_id = form.cleaned_data.get('grupo_agente')
        agentes_pk = form.cleaned_data.get('agente')
        todos_agentes = form.cleaned_data.get('todos_agentes')

        agentes = []
        if agentes_pk:
            agentes = AgenteProfile.objects.filter(pk__in=agentes_pk)
        if grupo_id:
            grupo = Grupo.objects.get(pk=int(grupo_id))
            agentes = grupo.agentes.filter(is_inactive=False)

        if todos_agentes or (agentes == [] and not grupo_id):
            supervisor = self.request.user.get_supervisor_profile()
            if supervisor:
                if agentes:
                    agentes_inactivos = agentes.filter(is_inactive=True)
                    agentes_eliminados = agentes.filter(borrado=True,
                                                        user__borrado=True)
                    agentes = AgenteProfile.objects.obtener_agentes_supervisor(
                        supervisor) | agentes_eliminados | agentes_inactivos
                else:
                    agentes = AgenteProfile.objects.obtener_agentes_supervisor(
                        supervisor)
            else:
                # Asumo es Administrador
                if agentes:
                    agentes_inactivos = agentes.filter(is_inactive=True)
                    agentes_eliminados = agentes.filter(borrado=True,
                                                        user__borrado=True)
                    agentes = AgenteProfile.objects.\
                        obtener_activos() | agentes_eliminados | agentes_inactivos
                else:
                    agentes = AgenteProfile.objects.obtener_activos()

        agentes = agentes.select_related('user')

        # generamos los reportes graficos
        reporte_tiempos = ReporteAgentes(self.request.user)
        graficos_estadisticas = reporte_tiempos.devuelve_reporte_agentes(
            agentes, fecha_desde, fecha_hasta)
        # generar reporte csv
        reporte_csv = ReporteAgenteCSVService()
        reporte_csv.crea_reporte_csv(graficos_estadisticas)

        return self.render_to_response(
            self.get_context_data(graficos_estadisticas=graficos_estadisticas))
 def form_valid(self, form):
     fecha = form.cleaned_data.get('fecha')
     if fecha:
         fecha_desde, fecha_hasta = fecha.split('-')
         fecha_desde = convert_fecha_datetime(fecha_desde)
         fecha_hasta = convert_fecha_datetime(fecha_hasta)
     else:
         fecha_desde = ''
         fecha_hasta = ''
     agente = self.request.user.get_agente_profile()
     listado_de_eventos = agente.agendacontacto.eventos_filtro_fecha(
         fecha_desde, fecha_hasta)
     return self.render_to_response(self.get_context_data(
         listado_de_eventos=listado_de_eventos, agente=agente))
 def form_valid(self, form):
     fecha = form.cleaned_data.get('fecha')
     fecha_desde, fecha_hasta = fecha.split('-')
     fecha_desde = convert_fecha_datetime(fecha_desde)
     fecha_hasta = convert_fecha_datetime(fecha_hasta)
     fecha_desde = datetime.datetime.combine(fecha_desde, datetime.time.min)
     fecha_hasta = datetime.datetime.combine(fecha_hasta, datetime.time.max)
     # generar el reporte grafico de acuerdo al periodo de fecha seleccionado
     service = EstadisticasService(self.get_object(), fecha_desde,
                                   fecha_hasta)
     graficos_estadisticas = service.general_campana()
     # genera el reporte pdf de la campana
     service_pdf = ReporteCampanaPDFService()
     service_pdf.crea_reporte_pdf(self.get_object(), graficos_estadisticas)
     return self.render_to_response(
         self.get_context_data(graficos_estadisticas=graficos_estadisticas,
                               pk_campana=self.kwargs['pk_campana']))
Example #10
0
 def form_valid(self, form):
     fecha = form.cleaned_data.get('fecha')
     fecha_desde, fecha_hasta = fecha.split('-')
     fecha_desde = convert_fecha_datetime(fecha_desde)
     fecha_hasta = convert_fecha_datetime(fecha_hasta)
     service = ReporteAgenteService()
     service_formulario = ReporteFormularioVentaService()
     agente = AgenteProfile.objects.get(pk=self.kwargs['pk_agente'])
     # Crear reporte csv para las calficaciones no interesada(no gestion) y gestion
     # de acuerdo al periodo de fecha seleccionado
     service.crea_reporte_csv(agente, fecha_desde, fecha_hasta)
     service_formulario.crea_reporte_csv(agente, fecha_desde, fecha_hasta)
     fecha_desde = datetime.datetime.combine(fecha_desde, datetime.time.min)
     fecha_hasta = datetime.datetime.combine(fecha_hasta, datetime.time.max)
     listado_calificaciones = agente.calificaciones.filter(fecha__range=(
         fecha_desde, fecha_hasta))
     return self.render_to_response(self.get_context_data(
         listado_calificaciones=listado_calificaciones, agente=agente))
Example #11
0
 def form_valid(self, form):
     fecha = form.cleaned_data.get('fecha')
     fecha_desde, fecha_hasta = fecha.split('-')
     fecha_desde = convert_fecha_datetime(fecha_desde)
     fecha_hasta = convert_fecha_datetime(fecha_hasta)
     fecha_desde = datetime.datetime.combine(fecha_desde, datetime.time.min)
     fecha_hasta = datetime.datetime.combine(fecha_hasta, datetime.time.max)
     service = ReporteCampanaService(self.get_object())
     service.calificaciones_por_fechas(fecha_desde, fecha_hasta)
     calificaciones_qs = service.calificaciones_qs
     historico_calificaciones_qs = service.historico_calificaciones_qs
     historico_calidficaciones = self._procesa_historico_calificaciones(
         historico_calificaciones_qs)
     return self.render_to_response(
         self.get_context_data(
             calificaciones=calificaciones_qs,
             historico_calificaciones=historico_calidficaciones.values(),
             reporte_fecha_desde_elegida=fecha_desde.strftime("%m/%d/%Y"),
             reporte_fecha_hasta_elegida=fecha_hasta.strftime("%m/%d/%Y"),
             pk_campana=self.kwargs['pk_campana']))
Example #12
0
    def form_valid(self, form):
        fecha = form.cleaned_data.get('fecha')
        fecha_desde, fecha_hasta = fecha.split('-')
        fecha_desde = convert_fecha_datetime(fecha_desde)
        fecha_hasta = convert_fecha_datetime(fecha_hasta)
        grupo_id = form.cleaned_data.get('grupo_agente')
        agentes_pk = form.cleaned_data.get('agente')
        todos_agentes = form.cleaned_data.get('todos_agentes')

        agentes = []
        if agentes_pk:
            for agente_pk in agentes_pk:
                agente = AgenteProfile.objects.get(pk=agente_pk)
                agentes.append(agente)
        if grupo_id:
            grupo = Grupo.objects.get(pk=int(grupo_id))
            agentes = grupo.agentes.filter(is_inactive=False)

        if todos_agentes or (agentes == [] and not grupo_id):
            supervisor = self.request.user.get_supervisor_profile()
            if supervisor:
                agentes = AgenteProfile.objects.obtener_agentes_supervisor(
                    supervisor)
            else:
                # Asumo es Administrador
                agentes = AgenteProfile.objects.obtener_activos()

        # generamos los reportes graficos
        tiempos_agentes = TiemposAgente()
        graficos_estadisticas = tiempos_agentes.generar_reportes(
            agentes, fecha_desde, fecha_hasta, self.request.user)
        # generar reporte csv
        reporte_csv = ReporteAgenteCSVService()
        reporte_csv.crea_reporte_csv(graficos_estadisticas)

        return self.render_to_response(
            self.get_context_data(graficos_estadisticas=graficos_estadisticas))
Example #13
0
def nuevo_evento_agenda_view(request):
    """Vista get para insertar un nuevo evento en la agenda
        REVISAR si se usa esta vista si no es obsoleta. Referenciada en Calendar.js
    """
    # DEPRECATED: Eliminar en OML-1437
    agente = request.GET['agente']
    es_personal = request.GET['personal']
    fecha = request.GET['fechaEvento']
    fecha = convert_fecha_datetime(fecha)
    hora = request.GET['horaEvento']
    es_smart = request.GET['smart']
    medio_comunicacion = request.GET['channel']
    medio = request.GET['dirchan']
    descripcion = request.GET['descripcion']
    es_smart = convert_string_in_boolean(es_smart)
    es_personal = convert_string_in_boolean(es_personal)

    agenda = Agenda(fecha=fecha,
                    hora=hora,
                    es_smart=es_smart,
                    medio_comunicacion=medio_comunicacion,
                    descripcion=descripcion,
                    es_personal=es_personal)

    # verifico el agente logueado
    try:
        agente_logueado = AgenteProfile.objects.get(pk=agente)
    except AgenteProfile.DoesNotExist:
        agente_logueado = request.user.get_agente_profile()

    if es_personal:
        agenda.agente = agente_logueado

    if int(medio_comunicacion) is Agenda.MEDIO_LLAMADA:
        agenda.telefono = medio
    elif int(medio_comunicacion) is Agenda.MEDIO_SMS:
        agenda.telefono = medio
    elif int(medio_comunicacion) is Agenda.MEDIO_EMAIL:
        agenda.email = medio

    agenda.save()
    response = JsonResponse({'status': 'OK'})
    return response
Example #14
0
 def test_convertir_fecha_datetime_falla(self):
     with self.assertRaisesMessage(ValueError,
                                   "day is out of range for month"):
         convert_fecha_datetime("2017/08/25")
Example #15
0
 def test_convertir_fecha_datetime(self):
     fecha = convert_fecha_datetime("25/08/2017")
     fecha_datetime = timezone.datetime(
         2017, 8, 25, tzinfo=timezone.get_current_timezone())
     self.assertEqual(fecha, fecha_datetime)