This question has been flagged
6 Replies
4674 Views

Is there a way for a ticket in a closing stage to change stage in the Kanban view when a customer has replied on the ticket?

I have tested automated actions, it does not react to any changes or updates on the ticket. 

Any advice?

Avatar
Discard
Best Answer

Hi, not easy to found the solution at the first time. Solution with Odoo studio and automated actions

first you need to position your automated action on messages (settings/technical/messages) in dev mode.

Your trigger: On creation

Domain: ["&","&",["message_type","=","email"],["model","=","helpdesk.ticket"],["author_id.user_ids","=",False]]

Action: Execute Python Code

PythonCode

if record.res_id:
    existing_ticket = env['helpdesk.ticket'].search([('id','=',record.res_id)])
    existing_ticket.write ({'stage_id': 5})

some explainations, on line 2 you go on you ticket id and then on line 2 you change the stage_id to in my example 5 that is my Open stage.


Avatar
Discard

Thanks Sebastien,
This works brilliantly, would you know how to add a condition in Python Code so the stage change applies to tickets in 'closed stage' only ([["stage_id.is_won","=",True]])?

Thanks in advance!

Best Answer

Hi guys, first of all thanks for these tips because you solved one of my point.

I added some conditions in order to get a more fine action: 

if record.res_id:
existing_ticket = env['helpdesk.ticket'].search([('id','=',record.res_id)])
#2: In progress
#3: Solved
#4: Cancelled
#13: Suspended
closed_stages = [3,4,13]
if existing_ticket.stage_id.id in closed_stages:
existing_ticket.write ({'stage_id': 2})

Closed_stages is an array of ids, and I re-open the ticket only if it is in one of them. 

Avatar
Discard
Best Answer

Hi, 

Thanks for very good tips above! 

In my case I would like to move tickets from any stage (except "new") to "in progress" stage when customer replies, and I've got this working... but still need to exlude new tickets.

I have a "new" stage for tickets created by operator or automatic when customers send a new email to Helpdesk. Now, it seems like all the new tickets from email also moves to the "in progress" stage. Any good ideas to fix this?


Avatar
Discard

I'm also looking for exactly this.

Best Answer


Hey, friends!
The solutions provided are valid. I just want to make this contribution:
To know if a ticket is closed, one can check the "is_close" field of its stage. In this way, we should not list all the closed stages.
On the other hand, the stage we want to establish for our ticket will have to be explicitly set. In my case it is 9.
Something else: I have removed the condition ["author.id.user.ids","=",False], because some of our customers have portal user and, in this case, I also want to reopen the ticket.

if record.res_id:
existing_ticket = env['helpdesk.ticket'].search([('id','=',record.res_id)])
isclosed = existing_ticket.stage_id.is_close
if isclosed:
existing_ticket.write ({'stage_id': 9}) # 9: In progress

Avatar
Discard
Best Answer

Is there a way to define an automatic action that triggers when the user adds a comment on the website in the ticketing helpdesk, instead of sending an Email?

We are using the Odoo helpdesk system with the website. When a user adds a comment on the ticket, we'd like to change the state similarly as it is defined here with a closed ticket. But I don't know how to specifiy the domain to have the automatic action fire when a comment is done due to the website.


Thanks for help.

Avatar
Discard
Best Answer

Hi, i like this solution it works. But how can i delete on the ticket the related user ? This dont work:

if record.res_id:
existing_ticket = env['helpdesk.ticket'].search([('id','=',record.res_id)])
isclosed = existing_ticket.stage_id.is_close
if isclosed:
existing_ticket.write ({'stage_id': 1}) # 1: New
existing_ticket.write ({'user_id': false}) # no User

Avatar
Discard