La lógica con la que quiero trabajar es que un agente (secretaria) asigne los tickets abiertos y yo (Administrador) darles cierre, pero noto que cuando quiero buscar los tickets cerrados que fueron asignados a un procurador aparece mi usuario, cuando están abiertos y se asignan aparece el campo assigned to y el procurador al que se le asigno.

pero cuando se cierra, el procurador asignado desaparece. he diseñado consultas para buscar y no he tenido exito:
todas las consultas muestran en los tickets cerrados muestran el nombre del procurador asignado y los abiertos si muestran el procurador al que se le asigno.

muestro las consultas que he diseñado:
con esta veo todos los ticket pero si notas en el procurador de los tickets que están cerrados muestra el que los cerro y en los que se muestran open aparecen el procurador al que se le asignó, solo los abiertos muestran el procurador asignado

SELECT
t.ticket_id AS 'Ticket ID',
t.number AS 'Número de Ticket',
u.name AS 'Solicitante',
e.address AS 'Correo Electrónico del Solicitante',
t.created AS 'Fecha de Creación',
t.closed AS 'Fecha de Cierre',
s.name AS 'Estado del Ticket',
d.name AS 'Departamento',
ht.topic AS 'Tema de Ayuda', -- Tema de ayuda asociado al ticket
tc.subject AS 'Título del Ticket', -- Título del ticket (Issue Summary)
te.body AS 'Descripción del Ticket', -- Descripción escrita por el usuario
CONCAT(original_st.firstname, ' ', original_st.lastname) AS 'Procurador Asignado Originalmente'
FROM
ost_ticket t
JOIN
ost_user u ON t.user_id = u.id
JOIN
ost_ticket_status s ON t.status_id = s.id
JOIN
ost_department d ON t.dept_id = d.id
JOIN
ost_user_email e ON u.id = e.user_id
LEFT JOIN
ost_staff original_st ON t.staff_id = original_st.staff_id -- Procurador asignado originalmente
LEFT JOIN
ost_help_topic ht ON t.topic_id = ht.topic_id -- Obtener el tema de ayuda
LEFT JOIN
ost_ticket__cdata tc ON t.ticket_id = tc.ticket_id -- Obtener el título del ticket
LEFT JOIN
ost_thread th ON t.ticket_id = th.object_id AND th.object_type = 'T' -- Obtener la entrada del ticket
LEFT JOIN
ost_thread_entry te ON th.id = te.thread_id AND te.type = 'M' -- Obtener el cuerpo del mensaje
ORDER BY
t.created DESC;

SELECT
t.ticket_id AS 'Ticket ID',
t.number AS 'Número de Ticket',
u.name AS 'Solicitante',
e.address AS 'Correo Electrónico del Solicitante',
t.created AS 'Fecha de Creación',
s.name AS 'Estado del Ticket',
d.name AS 'Departamento',
CONCAT(st.firstname, ' ', st.lastname) AS 'Procurador'
FROM
ost_ticket t
JOIN
ost_user u ON t.user_id = u.id
JOIN
ost_ticket_status s ON t.status_id = s.id
JOIN
ost_department d ON t.dept_id = d.id
JOIN
ost_user_email e ON u.id = e.user_id
LEFT JOIN
ost_staff st ON t.staff_id = st.staff_id
WHERE
st.staff_id = 3 -- Reemplaza 3 con el ID real del procurador
ORDER BY
t.created DESC;

con esta puedo ver los abiertos y asignado por el id del procurador y se muestran perfecdtamente

he diseñado más consultas todas con el mismo fallo sólo las abiertas me muestran el procurador correcto (a quien se le asigno el ticket )y las cerradas muestran el que cerró el ticket y necesito el mismo valor, quiero que el procurador al que se le asignó el ticket cuando estaba abierto, poder ver ese criterio en los tickets cerrados, podrían asesorarme?

les agradeceria mucho...

    jgarciaepncorinto

    With osTicket when a Ticket is Closed any Assignee is removed. If a Ticket is Closed it’s considered as such and should no longer have an assignee. The only way to see the previous assignee is via the thread events. We can’t help you formulate custom queries but we do have ERDs available that show the relationships to each object:

    Cheers.

    y es posible asignarles un rol a los agentes para que solo puedan cerrar tickets?

    o que puedan cerrar únicamente sus tickets.?

    que opciones me sugieres?

      porque mi lógica es que la secretaría asigne y que un agente(administrador) cierre el ticket, pero luego no podría saber que usuario atendió los tickets, tendría que revisar ticket por ticket el hilo, y son como mínimo 300 tickets por mes y se hace un informe mensual y uno anual del total de tickets, para reiniciar la cuenta.

      podrias asesorarme un poco?

      jgarciaepncorinto

      That would be based on the Agent's Role Permissions for that Department.

      The only way you can see previous assignees after close is by viewing the Ticket itself and review the Thread Events or run SQL queries to retrieve such data.

      Cheers.

      creo que mi mejor opcion es encontrar la manera de hacer la consulta y extraerla del hilo cuando esta abierto, no se como hacerlo, pero realmente quiero implementar osticket, pero no encuentro la lógica adecuada en ese aspecto, solo necesito llevar el registro del procurador al que le asigne la orden abierta, no se como hacerlo... ya diseñe una nueva consulta:

      SELECT
      t.ticket_id AS 'Ticket ID',
      t.number AS 'Número de Ticket',
      u.name AS 'Solicitante',
      e.address AS 'Correo Electrónico del Solicitante',
      t.created AS 'Fecha de Creación',
      t.closed AS 'Fecha de Cierre',
      s.name AS 'Estado del Ticket',
      d.name AS 'Departamento',
      ht.topic AS 'Tema de Ayuda',
      tc.subject AS 'Título del Ticket',
      te.body AS 'Descripción del Ticket',
      CONCAT(assigned_st.firstname, ' ', assigned_st.lastname) AS 'Procurador Asignado Originalmente'
      FROM
      ost_ticket t
      JOIN
      ost_user u ON t.user_id = u.id
      JOIN
      ost_ticket_status s ON t.status_id = s.id
      JOIN
      ost_department d ON t.dept_id = d.id
      JOIN
      ost_user_email e ON u.id = e.user_id
      LEFT JOIN
      ost_help_topic ht ON t.topic_id = ht.topic_id
      LEFT JOIN
      ost_ticket__cdata tc ON t.ticket_id = tc.ticket_id
      LEFT JOIN
      ost_thread th ON t.ticket_id = th.object_id AND th.object_type = 'T'
      LEFT JOIN
      ost_thread_entry te ON th.id = te.thread_id AND te.type = 'M'
      LEFT JOIN
      (
      SELECT
      te.thread_id,
      te.staff_id,
      MAX(te.created) AS last_assignment_time
      FROM
      ost_thread_entry te
      WHERE
      te.type = 'A' -- Revisa que este sea el tipo correcto para asignaciones
      GROUP BY
      te.thread_id
      ) last_assignment ON th.id = last_assignment.thread_id
      LEFT JOIN
      ost_staff assigned_st ON last_assignment.staff_id = assigned_st.staff_id
      ORDER BY
      t.created DESC;

        jgarciaepncorinto

        When the ticket is open the assignee is the staff_id and/or team_id on the _ticket table. When closed you’ll have to lookup the _thread_event.

        Cheers.

        Write a Reply...