def test_datos_reporte_grafico_detalle_llamadas_dialer_coinciden_estadisticas_sistema(
         self, obtener_dato_campana_run):
     obtener_dato_campana_run.return_value = {'n_est_remaining_calls': 0}
     campana_dialer = CampanaFactory(type=Campana.TYPE_DIALER, estado=Campana.ESTADO_ACTIVA)
     self.generador_log_llamadas.generar_log(
         campana_dialer, False, 'COMPLETEAGENT', self.telefono1, agente=self.agente_profile)
     self.generador_log_llamadas.generar_log(
         campana_dialer, False, 'COMPLETEOUTNUM', self.telefono2, agente=self.agente_profile)
     self.generador_log_llamadas.generar_log(
         campana_dialer, False, 'ABANDON', self.telefono3, agente=self.agente_profile)
     self.generador_log_llamadas.generar_log(
         campana_dialer, False, 'EXITWITHTIMEOUT', self.telefono4, agente=self.agente_profile)
     self.generador_log_llamadas.generar_log(
         campana_dialer, False, 'CANCEL', self.telefono4, agente=self.agente_profile)
     self.generador_log_llamadas.generar_log(
         campana_dialer, True, 'COMPLETEAGENT', self.telefono1, agente=self.agente_profile)
     self.generador_log_llamadas.generar_log(
         campana_dialer, True, 'COMPLETEOUTNUM', self.telefono2, agente=self.agente_profile)
     self.generador_log_llamadas.generar_log(
         campana_dialer, True, 'NOANSWER', self.telefono2, agente=self.agente_profile)
     hoy_ahora = fecha_hora_local(timezone.now())
     fecha_desde = datetime_hora_minima_dia_utc(hoy_ahora)
     fecha_hasta = datetime_hora_maxima_dia_utc(hoy_ahora)
     estadisticas_service = EstadisticasService(campana_dialer, fecha_desde, fecha_hasta)
     estadisticas_service.calcular_estadisticas_totales()
     reporte = estadisticas_service.reporte_detalle_llamadas.reporte
     self.assertEqual(reporte['Discadas'], 5)
     self.assertEqual(reporte['Conectadas al agente'], 2)
     self.assertEqual(reporte['Atendidas'], 4)
     self.assertEqual(reporte['Perdidas'], 2)
     self.assertEqual(reporte['Manuales'], 3)
     self.assertEqual(reporte['Manuales atendidas'], 2)
     self.assertEqual(reporte['Manuales no atendidas'], 1)
Example #2
0
 def test_datos_reporte_grafico_llamadas_entrantes_promedio_tiempo_abandono(
         self):
     campana_entrante = CampanaFactory(type=Campana.TYPE_ENTRANTE,
                                       estado=Campana.ESTADO_ACTIVA)
     hoy = fecha_hora_local(timezone.now())
     self.generador_log_llamadas.generar_log(campana_entrante,
                                             False,
                                             'ABANDON',
                                             self.telefono1,
                                             agente=self.agente_profile,
                                             time=hoy,
                                             bridge_wait_time=4)
     LlamadaLogFactory(tipo_campana=Campana.TYPE_ENTRANTE,
                       tipo_llamada=LlamadaLog.LLAMADA_ENTRANTE,
                       campana_id=campana_entrante.pk,
                       event='ABANDONWEL',
                       bridge_wait_time=5,
                       time=hoy)
     hoy_ahora = fecha_hora_local(timezone.now())
     fecha_desde = datetime_hora_minima_dia_utc(hoy_ahora)
     fecha_hasta = datetime_hora_maxima_dia_utc(hoy_ahora)
     estadisticas_service = EstadisticasService(campana_entrante,
                                                fecha_desde, fecha_hasta)
     estadisticas_service.calcular_estadisticas_totales()
     self.assertEqual(
         estadisticas_service.reporte_totales_llamadas.
         tiempo_promedio_abandono, 4.5)
 def test_datos_reporte_grafico_detalle_llamadas_manuales_coinciden_estadisticas_sistema(
         self):
     campana_manual = CampanaFactory(type=Campana.TYPE_MANUAL,
                                     estado=Campana.ESTADO_ACTIVA)
     self.generador_log_llamadas.generar_log(campana_manual,
                                             True,
                                             'COMPLETEAGENT',
                                             self.telefono1,
                                             agente=self.agente_profile)
     self.generador_log_llamadas.generar_log(campana_manual,
                                             True,
                                             'COMPLETEOUTNUM',
                                             self.telefono2,
                                             agente=self.agente_profile)
     self.generador_log_llamadas.generar_log(campana_manual,
                                             True,
                                             'FAIL',
                                             self.telefono3,
                                             agente=self.agente_profile)
     estadisticas_service = EstadisticasService()
     hoy = fecha_local(timezone.now())
     reporte = estadisticas_service.calcular_cantidad_llamadas(
         campana_manual, hoy, hoy)
     self.assertEqual(reporte['Discadas'], 3)
     self.assertEqual(reporte['Discadas atendidas'], 2)
     self.assertEqual(reporte['Discadas no atendidas'], 1)
Example #4
0
 def test_datos_reporte_grafico_detalle_llamadas_manuales_coinciden_estadisticas_sistema(
         self):
     campana_manual = CampanaFactory(type=Campana.TYPE_MANUAL,
                                     estado=Campana.ESTADO_ACTIVA)
     self.generador_log_llamadas.generar_log(campana_manual,
                                             True,
                                             'COMPLETEAGENT',
                                             self.telefono1,
                                             agente=self.agente_profile)
     self.generador_log_llamadas.generar_log(campana_manual,
                                             True,
                                             'COMPLETEOUTNUM',
                                             self.telefono2,
                                             agente=self.agente_profile)
     self.generador_log_llamadas.generar_log(campana_manual,
                                             True,
                                             'FAIL',
                                             self.telefono3,
                                             agente=self.agente_profile)
     hoy_ahora = fecha_hora_local(timezone.now())
     fecha_desde = datetime_hora_minima_dia_utc(hoy_ahora)
     fecha_hasta = datetime_hora_maxima_dia_utc(hoy_ahora)
     estadisticas_service = EstadisticasService(campana_manual, fecha_desde,
                                                fecha_hasta)
     estadisticas_service.calcular_estadisticas_totales()
     reporte = estadisticas_service.reporte_detalle_llamadas.reporte
     self.assertEqual(reporte['Discadas'], 3)
     self.assertEqual(reporte['Discadas atendidas'], 2)
     self.assertEqual(reporte['Discadas no atendidas'], 1)
 def test_datos_reporte_grafico_llamadas_entrantes_promedio_tiempo_espera(
         self):
     campana_entrante = CampanaFactory(type=Campana.TYPE_ENTRANTE,
                                       estado=Campana.ESTADO_ACTIVA)
     hoy = fecha_hora_local(timezone.now())
     self.generador_log_llamadas.generar_log(campana_entrante,
                                             False,
                                             'COMPLETEAGENT',
                                             self.telefono1,
                                             agente=self.agente_profile,
                                             time=hoy,
                                             bridge_wait_time=4,
                                             callid=1)
     self.generador_log_llamadas.generar_log(campana_entrante,
                                             False,
                                             'COMPLETEOUTNUM',
                                             self.telefono2,
                                             agente=self.agente_profile,
                                             time=hoy,
                                             bridge_wait_time=2,
                                             callid=2)
     estadisticas_service = EstadisticasService()
     _, _, _, tiempo_promedio_espera, _ = estadisticas_service.obtener_total_llamadas(
         campana_entrante)
     self.assertEqual(tiempo_promedio_espera, 3)
 def test_datos_reporte_grafico_detalle_llamadas_dialer_coinciden_estadisticas_sistema(self):
     campana_dialer = CampanaFactory(type=Campana.TYPE_DIALER, estado=Campana.ESTADO_ACTIVA)
     self.generador_log_llamadas.generar_log(
         campana_dialer, False, 'COMPLETEAGENT', self.telefono1, agente=self.agente_profile)
     self.generador_log_llamadas.generar_log(
         campana_dialer, False, 'COMPLETEOUTNUM', self.telefono2, agente=self.agente_profile)
     self.generador_log_llamadas.generar_log(
         campana_dialer, False, 'ABANDON', self.telefono3, agente=self.agente_profile)
     self.generador_log_llamadas.generar_log(
         campana_dialer, False, 'EXITWITHTIMEOUT', self.telefono4, agente=self.agente_profile)
     self.generador_log_llamadas.generar_log(
         campana_dialer, False, 'CANCEL', self.telefono4, agente=self.agente_profile)
     self.generador_log_llamadas.generar_log(
         campana_dialer, True, 'COMPLETEAGENT', self.telefono1, agente=self.agente_profile)
     self.generador_log_llamadas.generar_log(
         campana_dialer, True, 'COMPLETEOUTNUM', self.telefono2, agente=self.agente_profile)
     self.generador_log_llamadas.generar_log(
         campana_dialer, True, 'NOANSWER', self.telefono2, agente=self.agente_profile)
     estadisticas_service = EstadisticasService()
     hoy = fecha_local(timezone.now())
     reporte = estadisticas_service.calcular_cantidad_llamadas(campana_dialer, hoy, hoy)
     self.assertEqual(reporte['Discadas'], 5)
     self.assertEqual(reporte['Conectadas al agente'], 2)
     self.assertEqual(reporte['Atendidas'], 4)
     self.assertEqual(reporte['Perdidas'], 2)
     self.assertEqual(reporte['Manuales'], 3)
     self.assertEqual(reporte['Manuales atendidas'], 2)
     self.assertEqual(reporte['Manuales no atendidas'], 1)
Example #7
0
 def test_datos_reporte_grafico_llamadas_entrantes_promedio_tiempo_espera(
         self):
     campana_entrante = CampanaFactory(type=Campana.TYPE_ENTRANTE,
                                       estado=Campana.ESTADO_ACTIVA)
     hoy = fecha_hora_local(timezone.now())
     self.generador_log_llamadas.generar_log(campana_entrante,
                                             False,
                                             'COMPLETEAGENT',
                                             self.telefono1,
                                             agente=self.agente_profile,
                                             time=hoy,
                                             bridge_wait_time=4,
                                             callid=1)
     self.generador_log_llamadas.generar_log(campana_entrante,
                                             False,
                                             'COMPLETEOUTNUM',
                                             self.telefono2,
                                             agente=self.agente_profile,
                                             time=hoy,
                                             bridge_wait_time=2,
                                             callid=2)
     hoy_ahora = fecha_hora_local(timezone.now())
     fecha_desde = datetime_hora_minima_dia_utc(hoy_ahora)
     fecha_hasta = datetime_hora_maxima_dia_utc(hoy_ahora)
     estadisticas_service = EstadisticasService(campana_entrante,
                                                fecha_desde, fecha_hasta)
     estadisticas_service.calcular_estadisticas_totales()
     self.assertEqual(
         estadisticas_service.reporte_totales_llamadas.
         tiempo_promedio_espera, 3)
Example #8
0
 def test_datos_reporte_grafico_llamadas_entrantes_realizadas_muestran_solo_dia_actual(
         self):
     campana_entrante = CampanaFactory(type=Campana.TYPE_ENTRANTE,
                                       estado=Campana.ESTADO_ACTIVA)
     hoy = fecha_hora_local(timezone.now())
     ayer = hoy - timedelta(days=1)
     self.generador_log_llamadas.generar_log(campana_entrante,
                                             True,
                                             'COMPLETEAGENT',
                                             self.telefono1,
                                             agente=self.agente_profile,
                                             time=ayer)
     self.generador_log_llamadas.generar_log(campana_entrante,
                                             True,
                                             'COMPLETEOUTNUM',
                                             self.telefono2,
                                             agente=self.agente_profile,
                                             time=hoy)
     hoy_ahora = fecha_hora_local(timezone.now())
     fecha_desde = datetime_hora_minima_dia_utc(hoy_ahora)
     fecha_hasta = datetime_hora_maxima_dia_utc(hoy_ahora)
     estadisticas_service = EstadisticasService(campana_entrante,
                                                fecha_desde, fecha_hasta)
     estadisticas_service.calcular_estadisticas_totales()
     self.assertEqual(
         estadisticas_service.reporte_totales_llamadas.llamadas_realizadas,
         1)
Example #9
0
    def get(self, request, *args, **kwargs):
        # Indicamos el tipo de contenido a devolver, en este caso un pdf
        campana = Campana.objects.get(pk=self.kwargs['pk_campana'])
        service = EstadisticasService()
        hoy_ahora = datetime.datetime.today()
        hoy = hoy_ahora.date()
        # hoy = datetime.date(2015, 1, 1)
        estadisticas = service.general_campana(campana, hoy, hoy_ahora)
        response = HttpResponse(content_type='application/pdf')
        buffer = BytesIO()
        # Canvas nos permite hacer el reporte con coordenadas X y Y
        pdf = canvas.Canvas(buffer)
        self.cabecera(pdf, campana)
        self.tabla_calificacion(pdf, estadisticas['dict_campana_counter'],
                                estadisticas['total_asignados'])
        self.tabla_no_atendidos(pdf, estadisticas['dict_no_atendido_counter'],
                                estadisticas['total_no_atendidos'])

        pdf.showPage()
        self.tabla_agente(pdf, estadisticas['agentes_venta'],
                          estadisticas['calificaciones'])
        pdf.showPage()
        pdf.save()
        pdf = buffer.getvalue()
        buffer.close()
        response.write(pdf)
        return response
 def test_datos_reporte_grafico_total_llamadas_entrantes_coinciden_estadisticas_sistema(self):
     campana_entrante = CampanaFactory(type=Campana.TYPE_ENTRANTE, estado=Campana.ESTADO_ACTIVA)
     self.generador_log_llamadas.generar_log(
         campana_entrante, False, 'COMPLETEAGENT', self.telefono1, agente=self.agente_profile)
     self.generador_log_llamadas.generar_log(
         campana_entrante, False, 'COMPLETEOUTNUM', self.telefono2, agente=self.agente_profile)
     self.generador_log_llamadas.generar_log(
         campana_entrante, False, 'EXITWITHTIMEOUT', self.telefono3, agente=self.agente_profile)
     self.generador_log_llamadas.generar_log(
         campana_entrante, False, 'ABANDON', self.telefono4, agente=self.agente_profile)
     self.generador_log_llamadas.generar_log(
         campana_entrante, True, 'COMPLETEAGENT', self.telefono1, agente=self.agente_profile)
     self.generador_log_llamadas.generar_log(
         campana_entrante, True, 'COMPLETEOUTNUM', self.telefono2, agente=self.agente_profile)
     hoy_ahora = fecha_hora_local(timezone.now())
     fecha_desde = datetime_hora_minima_dia_utc(hoy_ahora)
     fecha_hasta = datetime_hora_maxima_dia_utc(hoy_ahora)
     estadisticas_service = EstadisticasService(campana_entrante, fecha_desde, fecha_hasta)
     estadisticas_service.calcular_estadisticas_totales()
     reporte = estadisticas_service.reporte_detalle_llamadas.reporte
     self.assertEqual(reporte['Recibidas'], 4)
     self.assertEqual(reporte['Atendidas'], 2)
     self.assertEqual(reporte['Expiradas'], 1)
     self.assertEqual(reporte['Abandonadas'], 1)
     self.assertEqual(reporte['Manuales'], 2)
     self.assertEqual(reporte['Manuales atendidas'], 2)
     self.assertEqual(reporte['Manuales no atendidas'], 0)
 def test_calificaciones_agenda_se_adicionan_a_llamadas_pendientes(self):
     campana_manual = CampanaFactory(type=Campana.TYPE_MANUAL, estado=Campana.ESTADO_ACTIVA)
     opcion_calificacion_agenda = OpcionCalificacionFactory(
         nombre=settings.CALIFICACION_REAGENDA, campana=campana_manual,
         tipo=OpcionCalificacion.AGENDA)
     CalificacionClienteFactory(
         opcion_calificacion=opcion_calificacion_agenda, agente=self.agente_profile)
     estadisticas_service = EstadisticasService()
     llamadas_pendientes, _, _, _, _ = estadisticas_service.obtener_total_llamadas(
         campana_manual)
     self.assertEqual(llamadas_pendientes, 1)
 def test_datos_reporte_grafico_detalle_llamadas_preview_coinciden_estadisticas_sistema(self):
     estadisticas_service = EstadisticasService()
     hoy = fecha_local(timezone.now())
     reporte = estadisticas_service.calcular_cantidad_llamadas(self.campana_activa, hoy, hoy)
     # se usan los logs de llamadas del setUp pues la campaña usada es preview
     self.assertEqual(reporte['Discadas'], 2)
     self.assertEqual(reporte['Conectadas'], 2)
     self.assertEqual(reporte['No conectadas'], 0)
     self.assertEqual(reporte['Manuales'], 2)
     self.assertEqual(reporte['Manuales atendidas'], 1)
     self.assertEqual(reporte['Manuales no atendidas'], 1)
 def test_datos_reporte_grafico_llamadas_entrantes_promedio_tiempo_abandono(self):
     campana_entrante = CampanaFactory(type=Campana.TYPE_ENTRANTE, estado=Campana.ESTADO_ACTIVA)
     hoy = fecha_hora_local(timezone.now())
     self.generador_log_llamadas.generar_log(
         campana_entrante, False, 'ABANDON', self.telefono1, agente=self.agente_profile,
         time=hoy, bridge_wait_time=4)
     LlamadaLogFactory(tipo_campana=Campana.TYPE_ENTRANTE, campana_id=campana_entrante.pk,
                       event='ABANDONWEL', bridge_wait_time=5, time=hoy)
     estadisticas_service = EstadisticasService()
     _, _, _, _, tiempo_promedio_abandono = estadisticas_service.obtener_total_llamadas(
         campana_entrante)
     self.assertEqual(tiempo_promedio_abandono, 4.5)
 def test_datos_reporte_grafico_detalle_llamadas_preview_coinciden_estadisticas_sistema(self):
     hoy_ahora = fecha_hora_local(timezone.now())
     fecha_desde = datetime_hora_minima_dia_utc(hoy_ahora)
     fecha_hasta = datetime_hora_maxima_dia_utc(hoy_ahora)
     estadisticas_service = EstadisticasService(self.campana_activa, fecha_desde, fecha_hasta)
     estadisticas_service.calcular_estadisticas_totales()
     reporte = estadisticas_service.reporte_detalle_llamadas.reporte
     # se usan los logs de llamadas del setUp pues la campaña usada es preview
     self.assertEqual(reporte['Discadas'], 2)
     self.assertEqual(reporte['Conectadas'], 2)
     self.assertEqual(reporte['No conectadas'], 0)
     self.assertEqual(reporte['Manuales'], 2)
     self.assertEqual(reporte['Manuales atendidas'], 1)
     self.assertEqual(reporte['Manuales no atendidas'], 1)
 def test_calificaciones_agenda_se_adicionan_a_llamadas_pendientes(self):
     campana_manual = CampanaFactory(type=Campana.TYPE_MANUAL, estado=Campana.ESTADO_ACTIVA)
     opcion_calificacion_agenda = OpcionCalificacionFactory(
         nombre=settings.CALIFICACION_REAGENDA, campana=campana_manual,
         tipo=OpcionCalificacion.AGENDA)
     log = LlamadaLogFactory(campana_id=campana_manual.pk)
     CalificacionClienteFactory(
         callid=log.callid,
         opcion_calificacion=opcion_calificacion_agenda, agente=self.agente_profile)
     hoy_ahora = fecha_hora_local(timezone.now())
     fecha_desde = datetime_hora_minima_dia_utc(hoy_ahora)
     fecha_hasta = datetime_hora_maxima_dia_utc(hoy_ahora)
     estadisticas_service = EstadisticasService(campana_manual, fecha_desde, fecha_hasta)
     estadisticas_service.calcular_estadisticas_totales()
     self.assertEqual(estadisticas_service.reporte_totales_llamadas.llamadas_pendientes, 1)
 def test_datos_reporte_grafico_llamadas_entrantes_realizadas_muestran_solo_dia_actual(
         self):
     campana_entrante = CampanaFactory(type=Campana.TYPE_ENTRANTE, estado=Campana.ESTADO_ACTIVA)
     hoy = fecha_hora_local(timezone.now())
     ayer = hoy - timedelta(days=1)
     self.generador_log_llamadas.generar_log(
         campana_entrante, True, 'COMPLETEAGENT', self.telefono1, agente=self.agente_profile,
         time=ayer)
     self.generador_log_llamadas.generar_log(
         campana_entrante, True, 'COMPLETEOUTNUM', self.telefono2, agente=self.agente_profile,
         time=hoy)
     estadisticas_service = EstadisticasService()
     hoy = fecha_local(timezone.now())
     _, llamadas_realizadas, _, _, _ = estadisticas_service.obtener_total_llamadas(
         campana_entrante)
     self.assertEqual(llamadas_realizadas, 1)
 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']))
 def get(self, request, *args, **kwargs):
     campana = self.get_object()
     if not campana:
         messages.warning(self.request,
                          _(u"Usted no puede acceder a esta campaña."))
         return redirect('index')
     hoy_ahora = fecha_hora_local(timezone.now())
     hoy = hoy_ahora.date()
     fecha_desde = datetime.datetime.combine(hoy, datetime.time.min)
     fecha_hasta = datetime.datetime.combine(hoy_ahora, datetime.time.max)
     service = EstadisticasService(campana, fecha_desde, fecha_hasta)
     # genera los reportes grafico de la campana
     graficos_estadisticas = service.general_campana()
     # generar el reporte pdf
     service_pdf = ReporteCampanaPDFService()
     service_pdf.crea_reporte_pdf(campana, graficos_estadisticas)
     return self.render_to_response(
         self.get_context_data(graficos_estadisticas=graficos_estadisticas,
                               pk_campana=self.kwargs['pk_campana']))
Example #19
0
 def get(self, request, *args, **kwargs):
     campana = self.get_object()
     if not campana:
         messages.warning(self.request,
                          _(u"Usted no puede acceder a esta campaña."))
         return redirect('index')
     service = EstadisticasService()
     hoy_ahora = fecha_hora_local(timezone.now())
     hoy = hoy_ahora.date()
     # genera reporte de llamadas contactados
     calificados_csv = ReporteCampanaContactadosCSV()
     calificados_csv.crea_reporte_csv(campana, hoy, hoy_ahora)
     # genera los reportes grafico de la campana
     graficos_estadisticas = service.general_campana(
         campana, hoy, hoy_ahora)
     # generar el reporte pdf
     service_pdf = ReporteCampanaPDFService()
     service_pdf.crea_reporte_pdf(campana, graficos_estadisticas)
     return self.render_to_response(
         self.get_context_data(graficos_estadisticas=graficos_estadisticas,
                               pk_campana=self.kwargs['pk_campana']))