diff --git a/website_support/__manifest__.py b/website_support/__manifest__.py index 289b8ecf2..28424f9ca 100644 --- a/website_support/__manifest__.py +++ b/website_support/__manifest__.py @@ -1,47 +1,45 @@ { 'name': "Website Help Desk / Support Ticket", - 'version': "1.4.1", - 'author': "Sythil Tech, Adaptive City", + 'version': "1.4.2", + 'author': "Sythil Tech, Adaptive City, Domatix", 'category': "Tools", 'support': "steven@sythiltech.com.au", 'summary': "A helpdesk / support ticket system for your website", 'description': "A helpdesk / support ticket system for your website", - 'license':'LGPL-3', + 'license': 'LGPL-3', 'data': [ 'data/ir.module.category.csv', 'data/res.groups.xml', 'views/email_templates.xml', + 'security/ir.model.access.csv', + 'security/website_support_security.xml', 'views/website_support_ticket_templates.xml', 'views/website_support_ticket_compose_views.xml', 'views/website_support_ticket_close_views.xml', 'views/website_support_ticket_views.xml', 'views/website_support_ticket_categories_views.xml', 'views/website_support_ticket_subcategory_views.xml', - 'views/website_support_ticket_states_views.xml', + 'views/website_support_ticket_stage_views.xml', 'views/website_support_ticket_tag_views.xml', 'views/res_partner_views.xml', 'views/res_users_views.xml', 'views/website_support_help_groups_views.xml', 'views/website_support_help_page_views.xml', - 'views/website_support_ticket_priority_views.xml', 'views/website_support_settings_views.xml', 'views/website_support_ticket_department_views.xml', 'views/website_support_sla_views.xml', 'views/menus.xml', 'data/website_support_sequence.xml', - 'data/website.support.ticket.states.xml', + 'data/website.support.ticket.stage.xml', 'data/website.support.ticket.categories.xml', - 'data/website.menu.csv', - 'data/website.support.ticket.priority.xml', 'data/website.support.settings.xml', 'data/website.support.department.role.csv', 'data/website.support.ticket.approval.xml', 'data/ir.cron.xml', - 'security/ir.model.access.csv', ], 'demo': [], - 'depends': ['mail','web', 'website','resource'], - 'images':[ + 'depends': ['mail', 'web', 'website', 'resource'], + 'images': [ 'static/description/3.jpg', 'static/description/1.jpg', 'static/description/2.jpg', @@ -50,4 +48,4 @@ 'static/description/6.jpg', ], 'installable': True, -} \ No newline at end of file +} diff --git a/website_support/controllers/__init__.py b/website_support/controllers/__init__.py index 6920e2020..1a5178b28 100644 --- a/website_support/controllers/__init__.py +++ b/website_support/controllers/__init__.py @@ -1,3 +1,4 @@ # -*- coding: utf-8 -*- -from . import main \ No newline at end of file +from . import main +from . import myaccount diff --git a/website_support/controllers/main.py b/website_support/controllers/main.py index 6cfe80969..fdd2cd04c 100644 --- a/website_support/controllers/main.py +++ b/website_support/controllers/main.py @@ -1,19 +1,23 @@ -# -*- coding: utf-8 -*- import werkzeug import json import base64 -from random import randint -import os import datetime import requests import logging +import odoo.http as http +from odoo.http import request +from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT +from odoo.addons.portal.controllers.portal import get_records_pager +from odoo.addons.http_routing.models.ir_http import slug _logger = logging.getLogger(__name__) -import openerp.http as http -from openerp.http import request -from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT, DEFAULT_SERVER_DATE_FORMAT +AVAILABLE_PRIORITIES = [ + ('0', 'Normal'), + ('1', 'Low'), + ('2', 'High'), + ('3', 'Very High'), + ] -from odoo.addons.http_routing.models.ir_http import slug class SupportTicketController(http.Controller): @@ -24,9 +28,9 @@ def support_approve(self, ticket_id, **kwargs): awaiting_approval = request.env['ir.model.data'].get_object('website_support','awaiting_approval') if support_ticket.approval_id.id == awaiting_approval.id: - #Change the ticket state to approved - website_ticket_state_approval_accepted = request.env['ir.model.data'].get_object('website_support','website_ticket_state_approval_accepted') - support_ticket.state = website_ticket_state_approval_accepted.id + #Change the ticket stage to approved + website_ticket_stage_approval_accepted = request.env['ir.model.data'].get_object('website_support','website_ticket_stage_approval_accepted') + support_ticket.stage = website_ticket_stage_approval_accepted.id #Also change the approval approval_accepted = request.env['ir.model.data'].get_object('website_support','approval_accepted') @@ -47,7 +51,7 @@ def support_approve(self, ticket_id, **kwargs): send_mail.send() #Remove the message from the chatter since this would bloat the communication history by a lot - send_mail.mail_message_id.res_id = 0 + send_mail.mail_message_id.res_id = 0 return "Request Approved Successfully" else: @@ -60,9 +64,9 @@ def support_disapprove(self, ticket_id, **kwargs): awaiting_approval = request.env['ir.model.data'].get_object('website_support','awaiting_approval') if support_ticket.approval_id.id == awaiting_approval.id: - #Change the ticket state to disapproved - website_ticket_state_approval_rejected = request.env['ir.model.data'].get_object('website_support','website_ticket_state_approval_rejected') - support_ticket.state = website_ticket_state_approval_rejected.id + #Change the ticket stage to disapproved + website_ticket_stage_approval_rejected = request.env['ir.model.data'].get_object('website_support','website_ticket_stage_approval_rejected') + support_ticket.stage = website_ticket_stage_approval_rejected.id #Also change the approval approval_rejected = request.env['ir.model.data'].get_object('website_support','approval_rejected') @@ -84,7 +88,7 @@ def support_disapprove(self, ticket_id, **kwargs): #Remove the message from the chatter since this would bloat the communication history by a lot send_mail.mail_message_id.res_id = 0 - + return "Request Rejected Successfully" else: return "Ticket does not need approval" @@ -150,7 +154,7 @@ def support_subcategories_fetch(self, **kwargs): def support_ticket_survey(self, portal_key): """Display the survey""" - support_ticket = request.env['website.support.ticket'].search([('portal_access_key','=', portal_key)]) + support_ticket = request.env['website.support.ticket'].search([('access_token','=', portal_key)]) if support_ticket.support_rating: #TODO some security incase they guess the portal key of an incomplete survey @@ -167,7 +171,7 @@ def support_ticket_survey_process(self, portal_key, **kw): for field_name, field_value in kw.items(): values[field_name] = field_value - support_ticket = request.env['website.support.ticket'].search([('portal_access_key','=', portal_key)]) + support_ticket = request.env['website.support.ticket'].search([('access_token','=', portal_key)]) if support_ticket.support_rating: #TODO some security incase they guess the portal key of an incomplete survey @@ -181,7 +185,7 @@ def support_ticket_survey_process(self, portal_key, **kw): def support_account_create(self, **kw): """ Create no permission account""" - setting_allow_user_signup = request.env['ir.default'].get('website.support.settings', 'allow_user_signup') + setting_allow_user_signup = request.env['ir.default'].get('res.config.settings', 'allow_user_signup') if setting_allow_user_signup: return http.request.render('website_support.account_create', {}) @@ -192,10 +196,10 @@ def support_account_create(self, **kw): def support_account_create_process(self, **kw): """ Create no permission account""" - setting_allow_user_signup = request.env['ir.default'].get('website.support.settings', 'allow_user_signup') + setting_allow_user_signup = request.env['ir.default'].get('res.config.settings', 'allow_user_signup') if setting_allow_user_signup: - + values = {} for field_name, field_value in kw.items(): values[field_name] = field_value @@ -233,7 +237,7 @@ def support_help(self, **kw): help_groups = http.request.env['website.support.help.groups'].sudo().search(['|', ('partner_ids', '=', False ), ('partner_ids', '=', request.env.user.partner_id.id ),'|', ('group_ids', '=', False ), ('group_ids', 'in', permission_list ), ('website_published','=',True)]) - setting_allow_user_signup = request.env['ir.default'].get('website.support.settings', 'allow_user_signup') + setting_allow_user_signup = request.env['ir.default'].get('res.config.settings', 'allow_user_signup') manager = False if request.env['website.support.department.contact'].sudo().search_count([('user_id','=',request.env.user.id)]) == 1: @@ -252,7 +256,7 @@ def support_ticket_reporting(self, **kw): for extra_permission in department.partner_ids: extra_access.append(extra_permission.id) - support_tickets = http.request.env['website.support.ticket'].sudo().search(['|', ('partner_id','=',request.env.user.partner_id.id), ('partner_id', 'in', extra_access), ('partner_id','!=',False) ]) + support_tickets = http.request.env['website.support.ticket'].sudo().search(['|', ('partner_id','=',request.env.user.partner_id.id), ('partner_id', 'in', extra_access), ('partner_id','!=',False) ]) support_ticket_count = len(support_tickets) @@ -268,16 +272,16 @@ def support_submit_ticket(self, **kw): category_access = [] for category_permission in http.request.env.user.groups_id: category_access.append(category_permission.id) - + ticket_categories = http.request.env['website.support.ticket.categories'].sudo().search(['|',('access_group_ids','in', category_access), ('access_group_ids','=',False)]) - setting_google_recaptcha_active = request.env['ir.default'].get('website.support.settings', 'google_recaptcha_active') - setting_google_captcha_client_key = request.env['ir.default'].get('website.support.settings', 'google_captcha_client_key') - setting_max_ticket_attachments = request.env['ir.default'].get('website.support.settings', 'max_ticket_attachments') - setting_max_ticket_attachment_filesize = request.env['ir.default'].get('website.support.settings', 'max_ticket_attachment_filesize') - setting_allow_website_priority_set = request.env['ir.default'].get('website.support.settings', 'allow_website_priority_set') - - return http.request.render('website_support.support_submit_ticket', {'categories': ticket_categories, 'priorities': http.request.env['website.support.ticket.priority'].sudo().search([]), 'person_name': person_name, 'email': http.request.env.user.email, 'setting_max_ticket_attachments': setting_max_ticket_attachments, 'setting_max_ticket_attachment_filesize': setting_max_ticket_attachment_filesize, 'setting_google_recaptcha_active': setting_google_recaptcha_active, 'setting_google_captcha_client_key': setting_google_captcha_client_key, 'setting_allow_website_priority_set': setting_allow_website_priority_set}) + setting_google_recaptcha_active = request.env['ir.default'].get('res.config.settings', 'google_recaptcha_active') + setting_google_captcha_client_key = request.env['ir.default'].get('res.config.settings', 'google_captcha_client_key') + setting_max_ticket_attachments = request.env['ir.default'].get('res.config.settings', 'max_ticket_attachments') + setting_max_ticket_attachment_filesize = request.env['ir.default'].get('res.config.settings', 'max_ticket_attachment_filesize') + setting_allow_website_priority_set = request.env['ir.default'].get('res.config.settings', 'allow_website_priority_set') + + return http.request.render('website_support.support_submit_ticket', {'categories': ticket_categories, 'priorities': AVAILABLE_PRIORITIES, 'person_name': person_name, 'email': http.request.env.user.email, 'setting_max_ticket_attachments': setting_max_ticket_attachments, 'setting_max_ticket_attachment_filesize': setting_max_ticket_attachment_filesize, 'setting_google_recaptcha_active': setting_google_recaptcha_active, 'setting_google_captcha_client_key': setting_google_captcha_client_key, 'setting_allow_website_priority_set': setting_allow_website_priority_set}) @http.route('/support/feedback/process/', type="http", auth="public", website=True) def support_feedback(self, help_page, **kw): @@ -337,12 +341,12 @@ def support_process_ticket(self, **kwargs): if values['my_gold'] != "256": return "Bot Detected" - setting_google_recaptcha_active = request.env['ir.default'].get('website.support.settings', 'google_recaptcha_active') - setting_allow_website_priority_set = request.env['ir.default'].get('website.support.settings', 'allow_website_priority_set') - + setting_google_recaptcha_active = request.env['ir.default'].get('res.config.settings', 'google_recaptcha_active') + setting_allow_website_priority_set = request.env['ir.default'].get('res.config.settings', 'allow_website_priority_set') + if setting_google_recaptcha_active: - setting_google_captcha_secret_key = request.env['ir.default'].get('website.support.settings', 'google_captcha_secret_key') + setting_google_captcha_secret_key = request.env['ir.default'].get('res.config.settings', 'google_captcha_secret_key') #Redirect them back if they didn't answer the captcha if 'g-recaptcha-response' not in values: @@ -353,7 +357,7 @@ def support_process_ticket(self, **kwargs): if response_json.json()['success'] is not True: return werkzeug.utils.redirect("/support/ticket/submit") - + my_attachment = "" file_name = "" @@ -368,28 +372,28 @@ def support_process_ticket(self, **kwargs): if http.request.env.user.name != "Public user": create_dict['channel'] = 'Website (User)' - + partner = http.request.env.user.partner_id create_dict['partner_id'] = partner.id #Priority can only be set if backend setting allows everyone or partner if 'priority' in values and (setting_allow_website_priority_set == "partner" or setting_allow_website_priority_set == "everyone"): - create_dict['priority_id'] = int(values['priority']) + create_dict['priority'] = values['priority'] #Add to the communication history of the logged in user partner.message_post(body="Customer " + partner.name + " has sent in a new support ticket", subject="New Support Ticket") else: create_dict['channel'] = 'Website (Public)' - + #Priority can only be set if backend setting allows everyone if 'priority' in values and setting_allow_website_priority_set == "everyone": - create_dict['priority_id'] = int(values['priority']) - + create_dict['priority'] = values['priority'] + #Automatically assign the partner if email matches search_partner = request.env['res.partner'].sudo().search([('email','=', values['email'] )]) if len(search_partner) > 0: - creat_dict['partner_id'] = search_partner[0].id + create_dict['partner_id'] = search_partner[0].id new_ticket_id = request.env['website.support.ticket'].sudo().create(create_dict) @@ -418,67 +422,84 @@ def support_process_ticket(self, **kwargs): return werkzeug.utils.redirect("/support/ticket/thanks") - @http.route('/support/ticket/thanks', type="http", auth="public", website=True) def support_ticket_thanks(self, **kw): """Displays a thank you page after the user submits a ticket""" return http.request.render('website_support.support_thank_you', {}) - @http.route('/support/ticket/view', type="http", auth="user", website=True) - def support_ticket_view_list(self, **kw): - """Displays a list of support tickets owned by the logged in user""" - - values = {} - for field_name, field_value in kw.items(): - values[field_name] = field_value - - #Determine which tickets the logged in user can see - ticket_access = [] - - #Can see own tickets - ticket_access.append(http.request.env.user.partner_id.id) - - #Can see tickets of any contacts under the logged in users additional access field (TODO remove this as departments is the evolved version of this feature) - for extra_permission in http.request.env.user.partner_id.stp_ids: - ticket_access.append(extra_permission.id) - - #If the logged in user is a department manager then add all the contacts in the department to the access list - for dep in request.env['website.support.department.contact'].sudo().search([('user_id','=',http.request.env.user.id)]): - for contact in dep.wsd_id.partner_ids: - ticket_access.append(contact.id) - - search_t = [('partner_id', 'in', ticket_access), ('partner_id','!=',False)] - - if 'state' in values: - search_t.append(('state', '=', int(values['state']))) - - support_tickets = request.env['website.support.ticket'].sudo().search(search_t) - - no_approval_required = request.env['ir.model.data'].get_object('website_support','no_approval_required') - change_requests = request.env['website.support.ticket'].sudo().search([('partner_id', 'in', ticket_access), ('partner_id','!=',False), ('approval_id','!=',no_approval_required.id) ], order="planned_time desc") - - ticket_states = request.env['website.support.ticket.states'].sudo().search([]) - - return request.render('website_support.support_ticket_view_list', {'support_tickets':support_tickets,'ticket_count':len(support_tickets), 'change_requests': change_requests, 'request_count': len(change_requests), 'ticket_states': ticket_states}) - - @http.route('/support/ticket/view/', type="http", auth="user", website=True) - def support_ticket_view(self, ticket): - """View an individual support ticket""" - - extra_access = [] - for extra_permission in http.request.env.user.partner_id.stp_ids: - extra_access.append(extra_permission.id) - - #only let the user this ticket is assigned to view this ticket - support_ticket = http.request.env['website.support.ticket'].sudo().search(['|', ('partner_id','=',http.request.env.user.partner_id.id), ('partner_id', 'in', extra_access), ('id','=',ticket) ])[0] - return http.request.render('website_support.support_ticket_view', {'support_ticket':support_ticket}) - - @http.route('/support/portal/ticket/view/', type="http", auth="public", website=True) - def support_portal_ticket_view(self, portal_access_key): - """View an individual support ticket (portal access)""" - - support_ticket = http.request.env['website.support.ticket'].sudo().search([('portal_access_key','=',portal_access_key) ])[0] - return http.request.render('website_support.support_ticket_view', {'support_ticket':support_ticket, 'portal_access_key': portal_access_key}) + # @http.route('/support/ticket/view', type="http", auth="user", website=True) + # def support_ticket_view_list(self, **kw): + # """Displays a list of support tickets owned by the logged in user""" + # + # values = {} + # for field_name, field_value in kw.items(): + # values[field_name] = field_value + # + # extra_access = [] + # for extra_permission in http.request.env.user.partner_id.stp_ids: + # extra_access.append(extra_permission.id) + # + # if 'stage' in values: + # support_tickets = http.request.env['website.support.ticket'].sudo().search(['|', ('partner_id','=',http.request.env.user.partner_id.id), ('partner_id', 'in', extra_access), ('partner_id','!=',False), ('stage', '=', int(values['stage'])) ]) + # else: + # support_tickets = http.request.env['website.support.ticket'].sudo().search(['|', ('partner_id','=',http.request.env.user.partner_id.id), ('partner_id', 'in', extra_access), ('partner_id','!=',False) ]) + # + # no_approval_required = request.env['ir.model.data'].get_object('website_support','no_approval_required') + # change_requests = http.request.env['website.support.ticket'].sudo().search(['|', ('partner_id','=',http.request.env.user.partner_id.id), ('partner_id', 'in', extra_access), ('partner_id','!=',False), ('approval_id','!=',no_approval_required.id) ], order="planned_time desc") + # + # ticket_stage = http.request.env['website.support.ticket.stage'].sudo().search([]) + # + # return http.request.render('website_support.support_ticket_view_list', {'support_tickets':support_tickets,'ticket_count':len(support_tickets), 'change_requests': change_requests, 'request_count': len(change_requests), 'ticket_stage': ticket_stage}) + + # @http.route('/support/ticket/view/', type="http", auth="user", website=True) + # def support_ticket_view(self, ticket): + # """View an individual support ticket""" + # + # extra_access = [] + # for extra_permission in http.request.env.user.partner_id.stp_ids: + # extra_access.append(extra_permission.id) + # + # #only let the user this ticket is assigned to view this ticket + # support_ticket = http.request.env['website.support.ticket'].sudo().search(['|', ('partner_id','=',http.request.env.user.partner_id.id), ('partner_id', 'in', extra_access), ('id','=',ticket) ])[0] + # return http.request.render('website_support.support_ticket_view', {'support_ticket':support_ticket}) + + @http.route("/support/ticket//", type='http', auth="public", website=True) + def view(self, ticket_id, pdf=None, anexo=None, token=None, message=False, **post): + # use sudo to allow accessing/viewing orders for public user + # only if he knows the private token + if token: + Ticket = request.env['website.support.ticket'].sudo().search([('id', '=', ticket_id), ('access_token', '=', token)]) + else: + Ticket = request.env['website.support.ticket'].search([('id', '=', ticket_id)]) + if not Ticket: + return request.render('website.404') + # Token or not, sudo the order, since portal user has not access on + # taxes, required to compute the total_amout of SO. + ticket_sudo = Ticket.sudo() + if token: + values = { + 'ticket': ticket_sudo, + 'access_token': token + } + else: + values = { + 'ticket': ticket_sudo, + } + # if token: + # return request.render('website_support.support_ticket_view', values) + # else: + # values = { + # 'ticket': ticket_sudo, + # } + return request.render('website_support.portal_ticket_page', values) + + + # @http.route('/support/portal/ticket/view/', type="http", auth="public", website=True) + # def support_portal_ticket_view(self, access_token): + # """View an individual support ticket (portal access)""" + # + # support_ticket = http.request.env['website.support.ticket'].sudo().search([('access_token','=',access_token) ])[0] + # return http.request.render('website_support.support_ticket_view', {'support_ticket':support_ticket, 'access_token': access_token}) @http.route('/support/portal/ticket/comment', type="http", auth="public", website=True) def support_portal_ticket_comment(self, **kw): @@ -488,39 +509,39 @@ def support_portal_ticket_comment(self, **kw): for field_name, field_value in kw.items(): values[field_name] = field_value - support_ticket = http.request.env['website.support.ticket'].sudo().search([('portal_access_key','=', values['portal_access_key'] ) ])[0] + support_ticket = http.request.env['website.support.ticket'].sudo().search([('access_token','=', values['access_token'] ) ])[0] http.request.env['website.support.ticket.message'].sudo().create({'ticket_id':support_ticket.id, 'by': 'customer','content':values['comment']}) - support_ticket.state = request.env['ir.model.data'].sudo().get_object('website_support', 'website_ticket_state_customer_replied') + support_ticket.stage = request.env['ir.model.data'].sudo().get_object('website_support', 'website_ticket_stage_customer_replied') request.env['website.support.ticket'].sudo().browse(support_ticket.id).message_post(body=values['comment'], subject="Support Ticket Reply", message_type="comment") - return werkzeug.utils.redirect("/support/portal/ticket/view/" + str(support_ticket.portal_access_key) ) - - @http.route('/support/ticket/comment',type="http", auth="user") - def support_ticket_comment(self, **kw): - """Adds a comment to the support ticket""" - - values = {} - for field_name, field_value in kw.items(): - values[field_name] = field_value - - ticket = http.request.env['website.support.ticket'].sudo().search([('id','=',values['ticket_id'])]) - - #check if this user owns this ticket - if ticket.partner_id.id == http.request.env.user.partner_id.id or ticket.partner_id in http.request.env.user.partner_id.stp_ids: - - http.request.env['website.support.ticket.message'].sudo().create({'ticket_id':ticket.id, 'by': 'customer','content':values['comment']}) - - ticket.state = request.env['ir.model.data'].sudo().get_object('website_support', 'website_ticket_state_customer_replied') - - request.env['website.support.ticket'].sudo().browse(ticket.id).message_post(body=values['comment'], subject="Support Ticket Reply", message_type="comment") - - else: - return "You do not have permission to submit this commment" - - return werkzeug.utils.redirect("/support/ticket/view/" + str(ticket.id)) + return werkzeug.utils.redirect("/support/ticket/"+str(support_ticket.id)+"/"+ str(support_ticket.access_token) ) + + # @http.route('/support/ticket/comment',type="http", auth="user") + # def support_ticket_comment(self, **kw): + # """Adds a comment to the support ticket""" + # + # values = {} + # for field_name, field_value in kw.items(): + # values[field_name] = field_value + # + # ticket = http.request.env['website.support.ticket'].sudo().search([('id','=',values['ticket_id'])]) + # + # #check if this user owns this ticket + # if ticket.partner_id.id == http.request.env.user.partner_id.id or ticket.partner_id in http.request.env.user.partner_id.stp_ids: + # + # http.request.env['website.support.ticket.message'].sudo().create({'ticket_id':ticket.id, 'by': 'customer','content':values['comment']}) + # + # ticket.stage = request.env['ir.model.data'].sudo().get_object('website_support', 'website_ticket_stage_customer_replied') + # + # request.env['website.support.ticket'].sudo().browse(ticket.id).message_post(body=values['comment'], subject="Support Ticket Reply", message_type="comment") + # + # else: + # return "You do not have permission to submit this commment" + # + # return werkzeug.utils.redirect("/my/tickets/" + str(ticket.id)) @http.route('/support/ticket/close',type="http", auth="user") def support_ticket_close(self, **kw): @@ -535,8 +556,8 @@ def support_ticket_close(self, **kw): #check if this user owns this ticket if ticket.partner_id.id == http.request.env.user.partner_id.id or ticket.partner_id in http.request.env.user.partner_id.stp_ids: - customer_closed_state = request.env['ir.model.data'].sudo().get_object('website_support', 'website_ticket_state_customer_closed') - ticket.state = customer_closed_state + customer_closed_stage = request.env['ir.model.data'].sudo().get_object('website_support', 'website_ticket_stage_customer_closed') + ticket.stage = customer_closed_stage ticket.close_time = datetime.datetime.now() ticket.close_date = datetime.date.today() @@ -546,15 +567,15 @@ def support_ticket_close(self, **kw): ticket.sla_active = False - closed_state_mail_template = customer_closed_state.mail_template_id + closed_stage_mail_template = customer_closed_stage.mail_template_id - if closed_state_mail_template: - closed_state_mail_template.send_mail(ticket.id, True) + if closed_stage_mail_template: + closed_stage_mail_template.send_mail(ticket.id, True) else: return "You do not have permission to close this commment" - return werkzeug.utils.redirect("/support/ticket/view/" + str(ticket.id)) + return werkzeug.utils.redirect("/my/tickets/" + str(ticket.id)) @http.route('/support/help/auto-complete',auth="public", website=True, type='http') def support_help_autocomplete(self, **kw): @@ -572,6 +593,6 @@ def support_help_autocomplete(self, **kw): for help_page in help_pages: #return_item = {"label": help_page.name + "
" + help_page.group_id.name + "","value": help_page.url_generated} return_item = {"label": help_page.name,"value": help_page.url_generated} - my_return.append(return_item) + my_return.append(return_item) - return json.JSONEncoder().encode(my_return) \ No newline at end of file + return json.JSONEncoder().encode(my_return) diff --git a/website_support/controllers/myaccount.py b/website_support/controllers/myaccount.py new file mode 100644 index 000000000..f468bc2ef --- /dev/null +++ b/website_support/controllers/myaccount.py @@ -0,0 +1,120 @@ +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +from odoo import http, _ +from odoo.http import request +from odoo.addons.portal.controllers.portal import CustomerPortal, pager as portal_pager +from odoo.exceptions import AccessError +from odoo.tools import consteq + +class CustomerPortal(CustomerPortal): + + def _get_website_support_ticket_domain(self): + partner = request.env.user.partner_id + domain = [ + '|', + ('message_partner_ids', 'child_of', [partner.commercial_partner_id.id]), + ('partner_id', '=', partner.id) + ] + return domain + + def _prepare_portal_layout_values(self): + values = super(CustomerPortal, self)._prepare_portal_layout_values() + # partner = request.env.user.partner_id + ticket_count = request.env['website.support.ticket'].search_count( + self._get_website_support_ticket_domain()) + values['ticket_count'] = ticket_count + return values + + def _website_support_ticket_check_access(self, ticket_id, access_token=None): + ticket = request.env['website.support.ticket'].browse([ticket_id]) + ticket_sudo = ticket.sudo() + try: + ticket.check_access_rights('read') + ticket.check_access_rule('read') + except AccessError: + if not access_token or not consteq(ticket_sudo.access_token, access_token): + raise + return ticket_sudo + + @http.route(['/my/tickets', '/my/tickets/page/'], type='http', auth="user", website=True) + def portal_my_tickets(self, page=1, date_begin=None, date_end=None, sortby=None, filterby=None, **kw): + values = self._prepare_portal_layout_values() + # partner = request.env.user.partner_id + WebsiteSupportTicket = request.env['website.support.ticket'] + + domain = self._get_website_support_ticket_domain() + + searchbar_sortings = { + 'date': {'label': _('Newest'), 'order': 'create_date desc'}, + 'subject': {'label': _('Subject'), 'order': 'subject'}, + 'stage': {'label': _('Stage'), 'order': 'stage'}, + 'update': {'label': _('Last Stage Update'), 'order': 'date_last_stage_update desc'}, + } + searchbar_filters = {'all': {'label': _('All'), 'domain': []}} + for stage in request.env['website.support.ticket.stage'].search([]): + searchbar_filters.update({ + str(stage.id): {'label': stage.name, 'domain': [('stage', '=', stage.id)]} + }) + + # default sort by order + if not sortby: + sortby = 'date' + order = searchbar_sortings[sortby]['order'] + + # default filter by value + if not filterby: + filterby = 'all' + domain += searchbar_filters[filterby]['domain'] + + # count for pager + ticket_count = WebsiteSupportTicket.search_count(domain) + # pager + pager = portal_pager( + url="/my/tickets", + url_args={}, + total=ticket_count, + page=page, + step=self._items_per_page + ) + # content according to pager and archive selected + tickets = WebsiteSupportTicket.search(domain, order=order, limit=self._items_per_page, offset=pager['offset']) + values.update({ + 'date': date_begin, + 'tickets': tickets, + 'page_name': 'ticket', + 'pager': pager, + # 'archive_groups': archive_groups, + 'default_url': '/my/tickets', + 'searchbar_sortings': searchbar_sortings, + 'sortby': sortby, + 'searchbar_filters': searchbar_filters, + 'filterby': filterby, + }) + return request.render("website_support.portal_my_tickets", values) + + @http.route(['/my/tickets/'], type='http', auth="public", website=True) + def portal_my_ticket_page(self, ticket_id=None, access_token=None, **kw): + try: + ticket_sudo = self._website_support_ticket_check_access(ticket_id, access_token) + except AccessError: + return request.redirect('/my') + values = self._ticket_get_page_view_values(ticket_sudo, access_token, **kw) + return request.render("website_support.portal_ticket_page", values) + + def _ticket_get_page_view_values(self, ticket, access_token, **kwargs): + values = { + 'page_name': 'ticket', + 'ticket': ticket, + } + + if access_token: + values['no_breadcrumbs'] = True + values['access_token'] = access_token + if kwargs.get('error'): + values['error'] = kwargs['error'] + if kwargs.get('warning'): + values['warning'] = kwargs['warning'] + if kwargs.get('success'): + values['success'] = kwargs['success'] + + return values diff --git a/website_support/data/ir.cron.xml b/website_support/data/ir.cron.xml index 93b3de1db..8d13b2b6b 100644 --- a/website_support/data/ir.cron.xml +++ b/website_support/data/ir.cron.xml @@ -15,4 +15,4 @@ - \ No newline at end of file + diff --git a/website_support/data/website.support.settings.xml b/website_support/data/website.support.settings.xml index ef8188c82..61bfa99ee 100644 --- a/website_support/data/website.support.settings.xml +++ b/website_support/data/website.support.settings.xml @@ -4,23 +4,23 @@ + eval="('res.config.settings', 'change_user_email_template_id', ref('website_support.support_ticket_user_change') )"/> + eval="('res.config.settings', 'close_ticket_email_template_id', ref('website_support.support_ticket_closed') )"/> + eval="('res.config.settings', 'staff_reply_email_template_id', ref('website_support.support_ticket_reply_wrapper') )"/> + eval="('res.config.settings', 'max_ticket_attachments', 2 )"/> + eval="('res.config.settings', 'max_ticket_attachment_filesize', 500 )"/> \ No newline at end of file diff --git a/website_support/data/website.support.ticket.priority.xml b/website_support/data/website.support.ticket.priority.xml deleted file mode 100644 index 4a78f85c9..000000000 --- a/website_support/data/website.support.ticket.priority.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - Low - #000000 - - - - Normal - #000000 - - - - Moderately - #FFFF00 - - - - High - #FFA500 - - - - Urgent - #FF0000 - - - - \ No newline at end of file diff --git a/website_support/data/website.support.ticket.states.xml b/website_support/data/website.support.ticket.stage.xml similarity index 52% rename from website_support/data/website.support.ticket.states.xml rename to website_support/data/website.support.ticket.stage.xml index 54cc1909a..e2a7d763d 100644 --- a/website_support/data/website.support.ticket.states.xml +++ b/website_support/data/website.support.ticket.stage.xml @@ -2,44 +2,48 @@ - + Open True - + Staff Replied + True - + Customer Replied True - + Awaiting Approval + True - + Approval Accepted True - + Approval Rejected True - + Customer Closed + True - + Staff Closed + True - - - \ No newline at end of file + + + diff --git a/website_support/doc/changelog.rst b/website_support/doc/changelog.rst index dbc9967d2..fa71ac76f 100644 --- a/website_support/doc/changelog.rst +++ b/website_support/doc/changelog.rst @@ -1,3 +1,15 @@ +v1.4.2 +====== +* Drop-down menu item Support, with the diferents options. +* Redesign website tickets view moved to Portal account. +* Redesign of kanban view. +* Priority with stars. +* Changed "state" name for "stage". +* Changed "portal_acces_key" for "access_token". +* Redesign of settings. +* SLA, Groups and Help pages in settings for enable/disable. + + v1.4.1 ====== * Fix issue with survey link appearing as _survey_url_ in chatter @@ -79,9 +91,9 @@ v1.2.13 v1.2.12 ======= -* Website filter state for tickets +* Website filter stage for tickets * Hide SLA resume and pause buttons if no SLA is assigned to the ticket -* Choose which states get classified as unattended +* Choose which stage get classified as unattended v1.2.11 ======= @@ -163,7 +175,7 @@ v1.0.9 v1.0.8 ====== * Fix subcategory change not disappearing -* States no longer readonly +* stage no longer readonly * Move Kanban view over from Odoo 10 v1.0.7 @@ -196,4 +208,4 @@ v1.0.1 v1.0 ==== -* Port to version 11 \ No newline at end of file +* Port to version 11 diff --git a/website_support/i18n/de.po b/website_support/i18n/de.po index 5a4809777..181377e0f 100644 --- a/website_support/i18n/de.po +++ b/website_support/i18n/de.po @@ -23,9 +23,9 @@ msgid "" "\n" " ${object.body|safe}\n" "
\n" -" % if object.ticket_id.portal_access_key :\n" +" % if object.ticket_id.access_token :\n" " View Ticket Online: here
\n" +"ticket/view/${object.ticket_id.access_token}\">here
\n" " % endif\n" " Ticket Number: ${object.ticket_id.id}
\n" " Ticket Category: ${object.ticket_id.category.name or " @@ -39,9 +39,9 @@ msgstr "" "\n" " ${object.body|safe}\n" "
\n" -" % if object.ticket_id.portal_access_key :\n" +" % if object.ticket_id.access_token :\n" " Ticket Online: here
\n" +"view/${object.ticket_id.access_token}\">here
\n" " % endif\n" " Ticket Nummer: ${object.ticket_id.id}
\n" " Ticket Kategorie: ${object.ticket_id.category.name or " @@ -58,9 +58,9 @@ msgid "" "\n" " ${object.body|safe}\n" "
\n" -" % if object.ticket_id.portal_access_key :\n" +" % if object.ticket_id.access_token :\n" " View Ticket Online: here
\n" +"ticket/view/${object.ticket_id.access_token}\">here
\n" " % endif\n" " Ticket Number: ${object.ticket_id.id}
\n" " Ticket Category: ${object.ticket_id.category.name or " @@ -74,9 +74,9 @@ msgstr "" "\n" " ${object.body|safe}\n" "
\n" -" % if object.ticket_id.portal_access_key :\n" +" % if object.ticket_id.access_token :\n" " Ticket Online: here
\n" +"view/${object.ticket_id.access_token}\">here
\n" " % endif\n" " Ticket Nummer: ${object.ticket_id.id}
\n" " Ticket Kategorie: ${object.ticket_id.category.name or " @@ -98,7 +98,7 @@ msgid "" "get back to your shortly

\n" "
\n" " View Ticket Online: here
\n" +"view/${object.access_token}\">here
\n" " Ticket Number: ${object.ticket_number or object.id}" "
\n" " Ticket Category: \n" @@ -120,7 +120,7 @@ msgstr "" "uns, wir werden uns umgehend bei Ihnen melden

\n" "
\n" " Gehe zu Ticket Online: here
\n" +"ticket/view/${object.access_token}\">here
\n" " Ticket Number: ${object.ticket_number or object.id}" "
\n" " Ticket Category: \n" @@ -398,7 +398,7 @@ msgstr "" #: model:ir.ui.view,arch_db:website_support.support_ticket_view msgid "" "
\n" -" State" +" stage" msgstr "" "
\n" " Status" @@ -668,8 +668,8 @@ msgid "Create new sub category" msgstr "Erstellen Sie eine neue Unterkategorie" #. module: website_support -#: model:ir.actions.act_window,help:website_support.website_support_ticket_states_action -msgid "Create support ticket state" +#: model:ir.actions.act_window,help:website_support.website_support_ticket_stage_action +msgid "Create support ticket stage" msgstr "Erstellen Sie einen Support-Ticket-Status" #. module: website_support @@ -694,7 +694,7 @@ msgstr "" #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_create_uid #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_message_create_uid #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_priority_create_uid -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_states_create_uid +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_stage_create_uid #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_subcategory_create_uid msgid "Created by" msgstr "Erstellt von" @@ -715,7 +715,7 @@ msgstr "Erstellt von" #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_create_date #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_message_create_date #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_priority_create_date -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_states_create_date +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_stage_create_date #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_subcategory_create_date msgid "Created on" msgstr "Angelegt am" @@ -726,12 +726,12 @@ msgid "Customer" msgstr "Kunde" #. module: website_support -#: model:website.support.ticket.states,name:website_support.website_ticket_state_customer_closed +#: model:website.support.ticket.stage,name:website_support.website_ticket_stage_customer_closed msgid "Customer Closed" msgstr "Kunde Geschlossen" #. module: website_support -#: model:website.support.ticket.states,name:website_support.website_ticket_state_customer_replied +#: model:website.support.ticket.stage,name:website_support.website_ticket_stage_customer_replied msgid "Customer Replied" msgstr "Kunde geantwortet" @@ -778,7 +778,7 @@ msgstr "Beschreibung" #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_display_name #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_message_display_name #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_priority_display_name -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_states_display_name +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_stage_display_name #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_subcategory_display_name msgid "Display Name" msgstr "Anzeigename" @@ -837,7 +837,7 @@ msgid "Group" msgstr "Gruppe" #. module: website_support -#. openerp-web +#. odoo-web #: code:addons/website_support/static/src/js/website_support.editor.js:46 #: model:ir.model.fields,field_description:website_support.field_website_support_help_groups_name #, python-format @@ -880,8 +880,8 @@ msgstr "Hoch" #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_compose_id #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_id #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_message_id -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_priority_id_8681 -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_states_id +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_priority_8681 +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_stage_id #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_subcategory_id msgid "ID" msgstr "ID" @@ -889,7 +889,7 @@ msgstr "ID" #. module: website_support #: model:ir.model.fields,help:website_support.field_website_support_ticket_unattended msgid "" -"In 'Open' state or 'Customer Replied' state taken into consideration name " +"In 'Open' stage or 'Customer Replied' stage taken into consideration name " "changes" msgstr "Im Status 'Offen' oder 'Kundenbeantwortet' ändert sich ev. der Name" @@ -909,7 +909,7 @@ msgstr "Im Status 'Offen' oder 'Kundenbeantwortet' ändert sich ev. der Name" #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_compose___last_update #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_message___last_update #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_priority___last_update -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_states___last_update +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_stage___last_update #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_subcategory___last_update msgid "Last Modified on" msgstr "Zuletzt geändert am" @@ -929,7 +929,7 @@ msgstr "Zuletzt geändert am" #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_compose_write_uid #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_message_write_uid #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_priority_write_uid -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_states_write_uid +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_stage_write_uid #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_subcategory_write_uid #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_write_uid msgid "Last Updated by" @@ -950,7 +950,7 @@ msgstr "Zuletzt aktualisiert durch" #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_compose_write_date #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_message_write_date #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_priority_write_date -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_states_write_date +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_stage_write_date #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_subcategory_write_date #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_write_date msgid "Last Updated on" @@ -963,7 +963,7 @@ msgstr "Tief" #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_compose_template_id -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_states_mail_template_id +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_stage_mail_template_id msgid "Mail Template" msgstr "Mail Template" @@ -1030,7 +1030,7 @@ msgid "New Event" msgstr "Neuer Anlass" #. module: website_support -#. openerp-web +#. odoo-web #: code:addons/website_support/static/src/js/website_support.editor.js:45 #: model:ir.ui.view,arch_db:website_support.content_new_help #, python-format @@ -1038,7 +1038,7 @@ msgid "New Help Group" msgstr "Neue Hilfeseite Gruppe" #. module: website_support -#. openerp-web +#. odoo-web #: code:addons/website_support/static/src/js/website_support.editor.js:16 #: model:ir.ui.view,arch_db:website_support.content_new_help #, python-format @@ -1088,7 +1088,7 @@ msgid "Number of Pages" msgstr "Seitenzahl" #. module: website_support -#: model:website.support.ticket.states,name:website_support.website_ticket_state_open +#: model:website.support.ticket.stage,name:website_support.website_ticket_stage_open msgid "Open" msgstr "Offen" @@ -1135,7 +1135,7 @@ msgid "Please give us feedback on our support service" msgstr "Bitte geben Sie uns Feedback zu unserem Support-Service" #. module: website_support -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_portal_access_key +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_access_token msgid "Portal Access Key" msgstr "Portal Access Key" @@ -1145,7 +1145,7 @@ msgid "Priorities" msgstr "Prioritäten" #. module: website_support -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_priority_id +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_priority msgid "Priority" msgstr "Priorität" @@ -1241,12 +1241,12 @@ msgid "Staff" msgstr "Mitarbeiter" #. module: website_support -#: model:website.support.ticket.states,name:website_support.website_ticket_state_staff_closed +#: model:website.support.ticket.stage,name:website_support.website_ticket_stage_staff_closed msgid "Staff Closed" msgstr "Durch Mitarbeiter geschlossen" #. module: website_support -#: model:website.support.ticket.states,name:website_support.website_ticket_state_staff_replied +#: model:website.support.ticket.stage,name:website_support.website_ticket_stage_staff_replied msgid "Staff Replied" msgstr "Durch Mitarbeiter beantwortet" @@ -1256,19 +1256,19 @@ msgid "Staff Reply Email Template" msgstr "Mitarbeiter Antwort Email Template" #. module: website_support -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_state +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_stage #: model:ir.ui.view,arch_db:website_support.support_ticket_view_list -msgid "State" +msgid "stage" msgstr "Ticket Status" #. module: website_support -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_states_name -msgid "State Name" +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_stage_name +msgid "stage Name" msgstr "Status Name" #. module: website_support -#: model:ir.ui.menu,name:website_support.website_support_ticket_states_menu -msgid "States" +#: model:ir.ui.menu,name:website_support.website_support_ticket_stage_menu +msgid "stage" msgstr "Status" #. module: website_support @@ -1394,8 +1394,8 @@ msgid "Support Ticket Settings" msgstr "Support Ticket Settings" #. module: website_support -#: model:ir.actions.act_window,name:website_support.website_support_ticket_states_action -msgid "Support Ticket States" +#: model:ir.actions.act_window,name:website_support.website_support_ticket_stage_action +msgid "Support Ticket stage" msgstr "Support Ticket Statuse" #. module: website_support @@ -1652,8 +1652,8 @@ msgstr "website.support.help.page.feedback" #. module: website_support #: model:ir.model,name:website_support.model_website_support_settings -msgid "website.support.settings" -msgstr "website.support.settings" +msgid "res.config.settings" +msgstr "res.config.settings" #. module: website_support #: model:ir.model,name:website_support.model_website_support_ticket_categories @@ -1681,9 +1681,9 @@ msgid "website.support.ticket.priority" msgstr "website.support.ticket.priority" #. module: website_support -#: model:ir.model,name:website_support.model_website_support_ticket_states -msgid "website.support.ticket.states" -msgstr "website.support.ticket.states" +#: model:ir.model,name:website_support.model_website_support_ticket_stage +msgid "website.support.ticket.stage" +msgstr "website.support.ticket.stage" #. module: website_support #: model:ir.model,name:website_support.model_website_support_ticket_subcategory diff --git a/website_support/i18n/es.po b/website_support/i18n/es.po index 5a73b1aee..936848fa1 100644 --- a/website_support/i18n/es.po +++ b/website_support/i18n/es.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-07-20 07:54+0000\n" -"PO-Revision-Date: 2018-07-20 07:54+0000\n" +"POT-Creation-Date: 2018-10-31 09:55+0000\n" +"PO-Revision-Date: 2018-10-31 09:55+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -20,9 +20,7 @@ msgstr "" msgid "\n" " ${object.body|safe}\n" "
\n" -" % if object.ticket_id.portal_access_key :\n" -" View Ticket Online: here
\n" -" % endif\n" +" View Ticket Online: here
\n" " Ticket Number: ${object.ticket_id.ticket_number or object.ticket_id.id}
\n" " Ticket Category: ${object.ticket_id.category.name or ''}
\n" " % if object.ticket_id.planned_time_format :\n" @@ -35,9 +33,7 @@ msgid "\n" msgstr "\n" " ${object.body|safe}\n" "
\n" -" % if object.ticket_id.portal_access_key :\n" -" Ver ticket online: aquí
\n" -" % endif\n" +" Ver ticket online: aquí
\n" " Número de ticket: ${object.ticket_id.ticket_number or object.ticket_id.id}
\n" " Categoría del ticket: ${object.ticket_id.category.name or ''}
\n" " % if object.ticket_id.planned_time_format :\n" @@ -56,9 +52,12 @@ msgid "\n" "
\n" " % endif\n" "\n" -"

Approval is required before we can proceed with this support request, please click the link below to accept

\n" +"

Approval is required before we can proceed with this support request, please click the botton below to accept

\n" "
\n" -"

Approve | Don't Approve

\n" +"

\n" +" Approve\n" +" Reject\n" +"

\n" "\n" " \n" " " @@ -68,9 +67,12 @@ msgstr "\n" "
\n" " % endif\n" "\n" -"

Se requiere de aprobación antes de que podamos proceder con esta solicitud de soporte, por favor haga click en el link a continuación para aceptar

\n" +"

Se requiere de aprobación antes de que podamos proceder con esta solicitud de soporte, por favor haga click en el botón mostrado a continuación para aceptar

\n" "
\n" -"

Aceptar | No aceptar

\n" +"

\n" +" Aprobar\n" +" Rechazar\n" +"

\n" "\n" " \n" " " @@ -83,16 +85,16 @@ msgid "\n" " % endif\n" "

Thank you for submitting a support ticket to us, we will get back to your shortly

\n" "
\n" -" View Ticket Online: here
\n" +" View Ticket Online: here
\n" " Ticket Number: ${object.ticket_number or object.id}
\n" -" Ticket Category: \n" +" Ticket Category:\n" " % if object.category.name :\n" " ${object.category.name}\n" " % endif\n" "
\n" " Ticket Description:
\n" " ${object.description|safe}\n" -" \n" +"\n" " \n" " " msgstr "\n" @@ -101,16 +103,16 @@ msgstr "\n" " % endif\n" "

Gracias por registrar un nuevo ticket de soporte, le contestaremos en breve

\n" "
\n" -" Ver ticket online: aquí
\n" +" Ver ticket online: aquí
\n" " Número de ticket: ${object.ticket_number or object.id}
\n" -" Categoría del ticket: \n" +" Categoría del ticket:\n" " % if object.category.name :\n" " ${object.category.name}\n" " % endif\n" "
\n" " Descripción del ticket:
\n" " ${object.description|safe}\n" -" \n" +"\n" " \n" " " @@ -124,7 +126,7 @@ msgid "\n" "

here

\n" "
\n" " Ticket Number: ${object.ticket_number or object.id}
\n" -" Ticket Category: \n" +" Ticket Category:\n" " % if object.category.name :\n" " ${object.category.name}\n" " % endif\n" @@ -141,7 +143,7 @@ msgstr "\n" "

aquí

\n" "
\n" " Número de ticket: ${object.ticket_number or object.id}
\n" -" Categoría del ticket: \n" +" Categoría del ticket:\n" " % if object.category.name :\n" " ${object.category.name}\n" " % endif\n" @@ -159,14 +161,14 @@ msgid "\n" "

${object.close_comment or ''}

\n" "
\n" " Ticket Number: ${object.ticket_number or object.id}
\n" -" Ticket Category: \n" +" Ticket Category:\n" " % if object.category.name :\n" " ${object.category.name}\n" " % endif\n" "
\n" " Ticket Description:
\n" " ${object.description|safe}\n" -" \n" +"\n" " \n" " " msgstr "\n" @@ -175,14 +177,14 @@ msgstr "\n" "

${object.close_comment or ''}

\n" "
\n" " Número de ticket: ${object.ticket_number or object.id}
\n" -" Categoría del ticket: \n" +" Categoría del ticket:\n" " % if object.category.name :\n" " ${object.category.name}\n" " % endif\n" "
\n" " Descripción del ticket:
\n" " ${object.description|safe}\n" -" \n" +"\n" " \n" " " @@ -193,14 +195,14 @@ msgid "\n" "

Your support ticket has been updated and is now in the category '${object.category.name}'

\n" "
\n" " Ticket Number: ${object.ticket_number or object.id}
\n" -" Ticket Category: \n" +" Ticket Category:\n" " % if object.category.name :\n" " ${object.category.name}\n" " % endif\n" "
\n" " Ticket Description:
\n" " ${object.description|safe}\n" -" \n" +"\n" " \n" " " msgstr "\n" @@ -208,14 +210,14 @@ msgstr "\n" "

Su ticket de soporte ha sido actualizado y ahora se encuentra en la categoría '${object.category.name}'

\n" "
\n" " Número de ticket: ${object.ticket_number or object.id}
\n" -" Categoría del ticket: \n" +" Categoría del ticket:\n" " % if object.category.name :\n" " ${object.category.name}\n" " % endif\n" "
\n" " Descripción del ticket:
\n" " ${object.description|safe}\n" -" \n" +"\n" " \n" " " @@ -305,14 +307,14 @@ msgid "\n" "

A support ticket has been assigned to you here are the details

\n" "
\n" " Ticket Number: ${object.ticket_number or object.id}
\n" -" Ticket Category: \n" +" Ticket Category:\n" " % if object.category.name :\n" " ${object.category.name}\n" " % endif\n" "
\n" " Ticket Description:
\n" " ${object.description|safe}\n" -" \n" +"\n" " \n" " " msgstr "\n" @@ -320,14 +322,14 @@ msgstr "\n" "

Un ticket de soporte ha sido asignado a usted, aquí tiene los detalles

\n" "
\n" " Número de ticket: ${object.ticket_number or object.id}
\n" -" Categoría del ticket: \n" +" Categoría del ticket:\n" " % if object.category.name :\n" " ${object.category.name}\n" " % endif\n" "
\n" " Descripción del ticket:
\n" " ${object.description|safe}\n" -" \n" +"\n" " \n" " " @@ -337,7 +339,7 @@ msgid "${object.subject}" msgstr "${object.subject}" #. module: website_support -#: model:ir.model.fields,field_description:website_support.field_website_support_settings_close_ticket_email_template_id +#: model:ir.model.fields,field_description:website_support.field_res_config_settings_close_ticket_email_template_id msgid "(OBSOLETE)Close Ticket Email Template" msgstr "(OBSOLETO)Plantilla de correo de cierre de ticket" @@ -396,6 +398,20 @@ msgstr "Últimos 30 días
" msgid "Last 7 Days
" msgstr "Últimos 7 días
" +#. module: website_support +#: model:ir.ui.view,arch_db:website_support.portal_ticket_page +msgid "
\n" +" Category:" +msgstr "
\n" +" Categoría:" + +#. module: website_support +#: model:ir.ui.view,arch_db:website_support.portal_ticket_page +msgid "
\n" +" Stage:" +msgstr "
\n" +" Etapa:" + #. module: website_support #: model:ir.ui.view,arch_db:website_support.support_ticket_view msgid "
\n" @@ -406,7 +422,7 @@ msgstr "
\n" #. module: website_support #: model:ir.ui.view,arch_db:website_support.support_ticket_view msgid "
\n" -" State" +" Stage" msgstr "
\n" " Estado" @@ -419,11 +435,38 @@ msgstr "
\n" "
\n" " Historial de conversación
" +#. module: website_support +#: model:ir.ui.view,arch_db:website_support.layout +msgid "Support\n" +" " +msgstr "Soporte\n" +" " + +#. module: website_support +#: model:ir.ui.view,arch_db:website_support.portal_ticket_page +msgid "Date:" +msgstr "Fecha:" + +#. module: website_support +#: model:ir.ui.view,arch_db:website_support.portal_ticket_page +msgid "Last Stage Update:" +msgstr "Última actualización de etapa:" + #. module: website_support #: model:mail.template,subject:website_support.support_ticket_user_change msgid "A Support Ticket has been assigned to you" msgstr "Un ticket de soporte ha sido asignado a ti" +#. module: website_support +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_categories_access_group_ids +msgid "Access Groups" +msgstr "Grupos de acceso" + +#. module: website_support +#: model:ir.ui.view,arch_db:website_support.res_config_settings_view_form +msgid "Active Google reCAPTCHA for ticket creation" +msgstr "Activar reCAPTCHA de Google en la creación de tickets" + #. module: website_support #: model:ir.ui.view,arch_db:website_support.support_submit_ticket msgid "Add Attachments" @@ -440,24 +483,25 @@ msgid "Alert Time" msgstr "Hora de alerta" #. module: website_support -#: model:ir.ui.view,arch_db:website_support.support_ticket_view_list +#: code:addons/website_support/controllers/myaccount.py:53 +#, python-format msgid "All" msgstr "Todos" #. module: website_support -#: model:ir.model.fields,field_description:website_support.field_website_support_settings_allow_user_signup +#: model:ir.model.fields,field_description:website_support.field_res_config_settings_allow_user_signup msgid "Allow User Signup" msgstr "Permitir registro de usuario" #. module: website_support -#: model:ir.model.fields,field_description:website_support.field_website_support_settings_allow_website_priority_set +#: model:ir.model.fields,field_description:website_support.field_res_config_settings_allow_website_priority_set msgid "Allow Website Priority Set" -msgstr "Permitir set de prioridad de la página web" +msgstr "Permitir establecer la prioridad en la página web" #. module: website_support -#: model:ir.ui.view,arch_db:website_support.website_support_settings_view_form -msgid "Apply" -msgstr "Aplicar" +#: model:ir.ui.view,arch_db:website_support.res_config_settings_view_form +msgid "Allow user signup in website to create support tickets" +msgstr "Permitir el registro de usuarios en el sitio web para crear tickets de soporte" #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_approval_id @@ -467,7 +511,7 @@ msgstr "Aprobación" #. module: website_support #: model:website.support.ticket.approval,name:website_support.approval_accepted -#: model:website.support.ticket.states,name:website_support.website_ticket_state_approval_accepted +#: model:website.support.ticket.stage,name:website_support.website_ticket_stage_approval_accepted msgid "Approval Accepted" msgstr "Aprobación aceptada" @@ -478,7 +522,7 @@ msgstr "Mensaje de aprobación" #. module: website_support #: model:website.support.ticket.approval,name:website_support.approval_rejected -#: model:website.support.ticket.states,name:website_support.website_ticket_state_approval_rejected +#: model:website.support.ticket.stage,name:website_support.website_ticket_stage_approval_rejected msgid "Approval Rejected" msgstr "Aprobación rechazada" @@ -504,13 +548,18 @@ msgid "Attachments" msgstr "Adjuntos" #. module: website_support -#: model:ir.model.fields,field_description:website_support.field_website_support_settings_auto_send_survey +#: model:ir.model.fields,field_description:website_support.field_res_config_settings_auto_send_survey msgid "Auto Send Survey" msgstr "Enviar encuesta automáticamente" +#. module: website_support +#: model:ir.ui.view,arch_db:website_support.res_config_settings_view_form +msgid "Auto send survey when the ticket is closed" +msgstr "Envío de encuesta automático al cerrar el ticket" + #. module: website_support #: model:website.support.ticket.approval,name:website_support.awaiting_approval -#: model:website.support.ticket.states,name:website_support.website_ticket_state_awaiting_approval +#: model:website.support.ticket.stage,name:website_support.website_ticket_stage_awaiting_approval msgid "Awaiting Approval" msgstr "Esperando aprobación" @@ -531,7 +580,7 @@ msgid "Built in" msgstr "Incorporado" #. module: website_support -#: model:ir.model.fields,field_description:website_support.field_website_support_settings_business_hours_id +#: model:ir.model.fields,field_description:website_support.field_res_config_settings_business_hours_id msgid "Business Hours" msgstr "Horas laborales" @@ -542,10 +591,15 @@ msgstr "Solo laborales" #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_message_by -#: model:ir.ui.view,arch_db:website_support.support_ticket_view_list +#: model:ir.ui.view,arch_db:website_support.portal_my_tickets msgid "By" msgstr "Por" +#. module: website_support +#: model:res.groups,comment:website_support.support_manager +msgid "Can configure support settings" +msgstr "Puede configurar ajustes de soporte" + #. module: website_support #: model:ir.model.fields,help:website_support.field_res_partner_stp_ids #: model:ir.model.fields,help:website_support.field_res_users_stp_ids @@ -553,7 +607,6 @@ msgid "Can view support tickets from other contacts" msgstr "Puede ver tickets de soporte de otros contactos" #. module: website_support -#: model:ir.ui.view,arch_db:website_support.website_support_settings_view_form #: model:ir.ui.view,arch_db:website_support.website_support_ticket_close_view_form #: model:ir.ui.view,arch_db:website_support.website_support_ticket_compose_view_form msgid "Cancel" @@ -566,8 +619,9 @@ msgstr "Categorías" #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_category +#: model:ir.ui.view,arch_db:website_support.portal_my_tickets +#: model:ir.ui.view,arch_db:website_support.res_config_settings_view_form #: model:ir.ui.view,arch_db:website_support.support_submit_ticket -#: model:ir.ui.view,arch_db:website_support.support_ticket_view_list #: model:ir.ui.view,arch_db:website_support.website_support_ticket_view_search msgid "Category" msgstr "Categoría" @@ -589,20 +643,22 @@ msgid "Category Users" msgstr "Usuarios de la categoría" #. module: website_support -#: model:ir.ui.view,arch_db:website_support.support_ticket_view_list -msgid "Change Requests" -msgstr "Solicitudes de cambio" - -#. module: website_support -#: model:ir.model.fields,field_description:website_support.field_website_support_settings_change_user_email_template_id +#: model:ir.model.fields,field_description:website_support.field_res_config_settings_change_user_email_template_id +#: model:ir.ui.view,arch_db:website_support.res_config_settings_view_form msgid "Change User Email Template" -msgstr "Cambiar plantilla de correo de usuario" +msgstr "Plantilla de correo para el cambio de usuario" #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_channel msgid "Channel" msgstr "Canal" +#. module: website_support +#: model:ir.ui.view,arch_db:website_support.portal_ticket_page +#: model:ir.ui.view,arch_db:website_support.support_ticket_view +msgid "Close" +msgstr "Cerrar" + #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_close_comment msgid "Close Comment" @@ -610,6 +666,7 @@ msgstr "Comentario de cierre" #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_close_date +#: model:ir.ui.view,arch_db:website_support.portal_my_tickets msgid "Close Date" msgstr "Fecha de cierre" @@ -635,25 +692,26 @@ msgid "Closed By" msgstr "Cerrado por" #. module: website_support -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_priority_color -msgid "Color" -msgstr "Color" +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_color +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_tag_color +msgid "Color Index" +msgstr "Índice de color" #. module: website_support #: model:ir.ui.view,arch_db:website_support.support_ticket_survey_page msgid "Comment" msgstr "Comentario" -#. module: website_support -#: model:ir.model,name:website_support.model_res_company -msgid "Companies" -msgstr "Compañías" - #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_company_id msgid "Company" msgstr "Compañía" +#. module: website_support +#: model:ir.ui.menu,name:website_support.website_support_config_parent_menu +msgid "Configuration" +msgstr "Configuración" + #. module: website_support #: model:ir.ui.view,arch_db:website_support.account_create msgid "Confirm Password" @@ -713,12 +771,12 @@ msgid "Countdown Condition" msgstr "Condición de cuenta atrás" #. module: website_support -#: model:ir.ui.view,arch_db:website_support.support_help_pages +#: model:ir.ui.view,arch_db:website_support.layout msgid "Create Account" msgstr "Registrarse" #. module: website_support -#: model:ir.ui.view,arch_db:website_support.support_ticket_view_list +#: model:ir.ui.view,arch_db:website_support.portal_my_tickets #: model:ir.ui.view,arch_db:website_support.website_support_ticket_view_graph msgid "Create Date" msgstr "Fecha de creación" @@ -759,9 +817,9 @@ msgid "Create new sub category" msgstr "Crear nueva subcategoría" #. module: website_support -#: model:ir.actions.act_window,help:website_support.website_support_ticket_states_action -msgid "Create support ticket state" -msgstr "Crear estado de ticket de soporte" +#: model:ir.actions.act_window,help:website_support.website_support_ticket_stage_action +msgid "Create support ticket stage" +msgstr "Crear etapa de ticket de soporte" #. module: website_support #: model:res.groups,comment:website_support.support_group @@ -777,7 +835,6 @@ msgstr "Se ha creado una cuenta a través de la web, no tiene acceso al portal ( #: model:ir.model.fields,field_description:website_support.field_website_support_help_groups_create_uid #: model:ir.model.fields,field_description:website_support.field_website_support_help_page_create_uid #: model:ir.model.fields,field_description:website_support.field_website_support_help_page_feedback_create_uid -#: model:ir.model.fields,field_description:website_support.field_website_support_settings_create_uid #: model:ir.model.fields,field_description:website_support.field_website_support_sla_alert_create_uid #: model:ir.model.fields,field_description:website_support.field_website_support_sla_create_uid #: model:ir.model.fields,field_description:website_support.field_website_support_sla_response_create_uid @@ -788,8 +845,7 @@ msgstr "Se ha creado una cuenta a través de la web, no tiene acceso al portal ( #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_create_uid #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_field_create_uid #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_message_create_uid -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_priority_create_uid -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_states_create_uid +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_stage_create_uid #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_subcategory_create_uid #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_subcategory_field_create_uid #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_tag_create_uid @@ -805,7 +861,6 @@ msgstr "Creado por" #: model:ir.model.fields,field_description:website_support.field_website_support_help_groups_create_date #: model:ir.model.fields,field_description:website_support.field_website_support_help_page_create_date #: model:ir.model.fields,field_description:website_support.field_website_support_help_page_feedback_create_date -#: model:ir.model.fields,field_description:website_support.field_website_support_settings_create_date #: model:ir.model.fields,field_description:website_support.field_website_support_sla_alert_create_date #: model:ir.model.fields,field_description:website_support.field_website_support_sla_create_date #: model:ir.model.fields,field_description:website_support.field_website_support_sla_response_create_date @@ -816,8 +871,7 @@ msgstr "Creado por" #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_create_date #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_field_create_date #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_message_create_date -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_priority_create_date -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_states_create_date +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_stage_create_date #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_subcategory_create_date #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_subcategory_field_create_date #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_tag_create_date @@ -825,7 +879,7 @@ msgid "Created on" msgstr "Creado en" #. module: website_support -#: model:ir.model.fields,help:website_support.field_website_support_settings_allow_website_priority_set +#: model:ir.model.fields,help:website_support.field_res_config_settings_allow_website_priority_set msgid "Cusomters can set the priority of a ticket when submitting via the website form\n" "Partner Only = logged in user" msgstr "Los clientes pueden establecer la prioridad de un ticket cuando lo den de alta desde la página web\n" @@ -837,24 +891,30 @@ msgid "Customer" msgstr "Cliente" #. module: website_support -#: model:website.support.ticket.states,name:website_support.website_ticket_state_customer_closed +#: model:website.support.ticket.stage,name:website_support.website_ticket_stage_customer_closed msgid "Customer Closed" msgstr "Cerrado por cliente" #. module: website_support -#: model:website.support.ticket.states,name:website_support.website_ticket_state_customer_replied +#: model:website.support.ticket.stage,name:website_support.website_ticket_stage_customer_replied msgid "Customer Replied" msgstr "Contestado por cliente" #. module: website_support #: model:ir.ui.menu,name:website_support.website_support_parent_menu +#: model:ir.ui.view,arch_db:website_support.res_config_settings_view_form msgid "Customer Support" msgstr "Soporte de cliente" #. module: website_support -#: model:ir.ui.view,arch_db:website_support.support_ticket_view_list -msgid "Date" -msgstr "Fecha" +#: model:ir.ui.view,arch_db:website_support.res_config_settings_view_form +msgid "Default category for tickets created by email" +msgstr "Categoría predeterminada para los tickets creados por correo electrónico" + +#. module: website_support +#: model:ir.ui.view,arch_db:website_support.website_support_ticket_view_kanban +msgid "Delete" +msgstr "Suprimir" #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_department_contact_wsd_id @@ -875,6 +935,7 @@ msgstr "Departamentos" #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_sla_description #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_description +#: model:ir.ui.view,arch_db:website_support.portal_ticket_page #: model:ir.ui.view,arch_db:website_support.support_submit_ticket #: model:ir.ui.view,arch_db:website_support.website_support_ticket_view_form msgid "Description" @@ -894,7 +955,6 @@ msgstr "URL de desaprobación" #: model:ir.model.fields,field_description:website_support.field_website_support_help_groups_display_name #: model:ir.model.fields,field_description:website_support.field_website_support_help_page_display_name #: model:ir.model.fields,field_description:website_support.field_website_support_help_page_feedback_display_name -#: model:ir.model.fields,field_description:website_support.field_website_support_settings_display_name #: model:ir.model.fields,field_description:website_support.field_website_support_sla_alert_display_name #: model:ir.model.fields,field_description:website_support.field_website_support_sla_display_name #: model:ir.model.fields,field_description:website_support.field_website_support_sla_response_display_name @@ -905,17 +965,22 @@ msgstr "URL de desaprobación" #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_display_name #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_field_display_name #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_message_display_name -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_priority_display_name -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_states_display_name +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_stage_display_name #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_subcategory_display_name #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_subcategory_field_display_name #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_tag_display_name msgid "Display Name" msgstr "Nombre mostrado" +#. module: website_support +#: model:ir.ui.view,arch_db:website_support.website_support_ticket_view_kanban +msgid "Edit" +msgstr "Editar" + #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_compose_email #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_email +#: model:ir.ui.view,arch_db:website_support.res_config_settings_view_form #: model:ir.ui.view,arch_db:website_support.support_submit_ticket #: selection:website.support.sla.alert,type:0 msgid "Email" @@ -927,7 +992,7 @@ msgid "Email Alerts" msgstr "Alertas por correo electrónico" #. module: website_support -#: model:ir.model.fields,field_description:website_support.field_website_support_settings_email_default_category_id +#: model:ir.model.fields,field_description:website_support.field_res_config_settings_email_default_category_id msgid "Email Default Category" msgstr "Categoría por defecto de correo electrónico" @@ -937,7 +1002,17 @@ msgid "Email Templates" msgstr "Plantillas de correo electrónico" #. module: website_support -#: selection:website.support.settings,allow_website_priority_set:0 +#: model:ir.ui.view,arch_db:website_support.res_config_settings_view_form +msgid "Email template for staff reply to support ticket" +msgstr "Plantilla de correo electrónico para la respuesta del personal al ticket de soporte" + +#. module: website_support +#: model:ir.ui.view,arch_db:website_support.res_config_settings_view_form +msgid "Email template for user change in support ticket" +msgstr "Plantilla de correo electrónico para el cambio de usuario en el ticket de soporte" + +#. module: website_support +#: selection:res.config.settings,allow_website_priority_set:0 msgid "Everyone" msgstr "Todos" @@ -977,13 +1052,18 @@ msgstr "Puntuación de soporte" msgid "Feedback Text" msgstr "Texto de opinión" +#. module: website_support +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_stage_fold +msgid "Folded in Kanban" +msgstr "Doblado en Kanban" + #. module: website_support #: model:ir.ui.view,arch_db:website_support.support_ticket_view msgid "From" msgstr "De" #. module: website_support -#: model:ir.model.fields,field_description:website_support.field_website_support_settings_google_recaptcha_active +#: model:ir.model.fields,field_description:website_support.field_res_config_settings_google_recaptcha_active msgid "Google reCAPTCHA Active" msgstr "Google reCAPTCHA activo" @@ -992,6 +1072,22 @@ msgstr "Google reCAPTCHA activo" msgid "Group" msgstr "Grupo" +#. module: website_support +#: model:ir.model.fields,field_description:website_support.field_res_config_settings_group_website_support_help_groups +#: model:res.groups,name:website_support.group_website_support_help_groups +msgid "Groups and help pages" +msgstr "Grupos y páginas de ayuda" + +#. module: website_support +#: model:ir.ui.view,arch_db:website_support.res_config_settings_view_form +msgid "Groups and help pages on your website" +msgstr "Grupos y páginas de ayuda en el sitio web" + +#. module: website_support +#: model:res.groups,comment:website_support.support_staff +msgid "Has the ability the view and answer support tickets but not configure" +msgstr "Tiene la capacidad de ver y responder tickets de soporte pero no configurar" + #. module: website_support #. openerp-web #: code:addons/website_support/static/src/js/website_support.editor.js:61 @@ -1012,14 +1108,20 @@ msgstr "Página de ayuda" #. module: website_support #: model:ir.ui.menu,name:website_support.website_support_help_page_menu +#: model:ir.ui.view,arch_db:website_support.layout #: model:ir.ui.view,arch_db:website_support.support_help_pages msgid "Help Pages" msgstr "Páginas de ayuda" #. module: website_support -#: model:website.support.ticket.priority,name:website_support.high +#: selection:website.support.ticket,priority:0 msgid "High" -msgstr "Alto" +msgstr "Alta" + +#. module: website_support +#: model:ir.ui.view,arch_db:website_support.portal_ticket_page +msgid "History" +msgstr "Historial" #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_department_contact_id @@ -1030,34 +1132,32 @@ msgstr "Alto" #: model:ir.model.fields,field_description:website_support.field_website_support_help_groups_id #: model:ir.model.fields,field_description:website_support.field_website_support_help_page_feedback_id #: model:ir.model.fields,field_description:website_support.field_website_support_help_page_id -#: model:ir.model.fields,field_description:website_support.field_website_support_settings_id #: model:ir.model.fields,field_description:website_support.field_website_support_sla_alert_id #: model:ir.model.fields,field_description:website_support.field_website_support_sla_id #: model:ir.model.fields,field_description:website_support.field_website_support_sla_response_id -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_approval_id_7298 +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_approval_id_11203 #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_categories_id #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_close_id #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_compose_id #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_field_id #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_id #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_message_id -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_priority_id_7369 -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_states_id +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_stage_id #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_subcategory_field_id #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_subcategory_id #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_tag_id msgid "ID" -msgstr "ID" +msgstr "ID (identificación)" #. module: website_support -#: model:ir.model.fields,help:website_support.field_website_support_ticket_states_unattended -msgid "If ticked, tickets in this state will appear by default" -msgstr "Si se marca, los tickets de este estado aparecerán por defecto" +#: model:ir.model.fields,help:website_support.field_website_support_ticket_stage_unattended +msgid "If ticked, tickets in this stage will appear by default" +msgstr "Si se marca, los tickets de esta etapa aparecerán por defecto" #. module: website_support #: model:ir.model.fields,help:website_support.field_website_support_ticket_unattended -msgid "In 'Open' state or 'Customer Replied' state taken into consideration name changes" -msgstr "En estado 'Abierto' o 'Contestación del cliente' se tendrán en cuenta los cambios de nombre" +msgid "In 'Open' stage or 'Customer Replied' stage taken into consideration name changes" +msgstr "En la etapa 'Abierto' o 'Contestación del cliente' se tendrán en cuenta los cambios de nombre" #. module: website_support #: model:ir.model.fields,help:website_support.field_website_support_ticket_sla_alert_ids @@ -1079,7 +1179,6 @@ msgstr "Descripción" #: model:ir.model.fields,field_description:website_support.field_website_support_help_groups___last_update #: model:ir.model.fields,field_description:website_support.field_website_support_help_page___last_update #: model:ir.model.fields,field_description:website_support.field_website_support_help_page_feedback___last_update -#: model:ir.model.fields,field_description:website_support.field_website_support_settings___last_update #: model:ir.model.fields,field_description:website_support.field_website_support_sla___last_update #: model:ir.model.fields,field_description:website_support.field_website_support_sla_alert___last_update #: model:ir.model.fields,field_description:website_support.field_website_support_sla_response___last_update @@ -1090,13 +1189,20 @@ msgstr "Descripción" #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_compose___last_update #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_field___last_update #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_message___last_update -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_priority___last_update -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_states___last_update +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_stage___last_update #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_subcategory___last_update #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_subcategory_field___last_update #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_tag___last_update msgid "Last Modified on" -msgstr "Última modificación en" +msgstr "Última Modificación en" + +#. module: website_support +#: code:addons/website_support/controllers/myaccount.py:51 +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_date_last_stage_update +#: model:ir.ui.view,arch_db:website_support.portal_my_tickets +#, python-format +msgid "Last Stage Update" +msgstr "Última actualización de etapa" #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_department_contact_write_uid @@ -1107,7 +1213,6 @@ msgstr "Última modificación en" #: model:ir.model.fields,field_description:website_support.field_website_support_help_groups_write_uid #: model:ir.model.fields,field_description:website_support.field_website_support_help_page_feedback_write_uid #: model:ir.model.fields,field_description:website_support.field_website_support_help_page_write_uid -#: model:ir.model.fields,field_description:website_support.field_website_support_settings_write_uid #: model:ir.model.fields,field_description:website_support.field_website_support_sla_alert_write_uid #: model:ir.model.fields,field_description:website_support.field_website_support_sla_response_write_uid #: model:ir.model.fields,field_description:website_support.field_website_support_sla_write_uid @@ -1117,14 +1222,13 @@ msgstr "Última modificación en" #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_compose_write_uid #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_field_write_uid #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_message_write_uid -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_priority_write_uid -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_states_write_uid +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_stage_write_uid #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_subcategory_field_write_uid #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_subcategory_write_uid #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_tag_write_uid #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_write_uid msgid "Last Updated by" -msgstr "Última actualización por" +msgstr "Última actualización de" #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_department_contact_write_date @@ -1135,7 +1239,6 @@ msgstr "Última actualización por" #: model:ir.model.fields,field_description:website_support.field_website_support_help_groups_write_date #: model:ir.model.fields,field_description:website_support.field_website_support_help_page_feedback_write_date #: model:ir.model.fields,field_description:website_support.field_website_support_help_page_write_date -#: model:ir.model.fields,field_description:website_support.field_website_support_settings_write_date #: model:ir.model.fields,field_description:website_support.field_website_support_sla_alert_write_date #: model:ir.model.fields,field_description:website_support.field_website_support_sla_response_write_date #: model:ir.model.fields,field_description:website_support.field_website_support_sla_write_date @@ -1145,23 +1248,22 @@ msgstr "Última actualización por" #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_compose_write_date #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_field_write_date #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_message_write_date -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_priority_write_date -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_states_write_date +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_stage_write_date #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_subcategory_field_write_date #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_subcategory_write_date #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_tag_write_date #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_write_date msgid "Last Updated on" -msgstr "Última actualización en" +msgstr "Última Actualización el" #. module: website_support -#: model:website.support.ticket.priority,name:website_support.low +#: selection:website.support.ticket,priority:0 msgid "Low" msgstr "Baja" #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_compose_template_id -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_states_mail_template_id +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_stage_mail_template_id msgid "Mail Template" msgstr "Plantilla de correo" @@ -1176,15 +1278,20 @@ msgid "Managers" msgstr "Gestores/as" #. module: website_support -#: model:ir.model.fields,field_description:website_support.field_website_support_settings_max_ticket_attachment_filesize +#: model:ir.model.fields,field_description:website_support.field_res_config_settings_max_ticket_attachment_filesize msgid "Max Ticket Attachment Filesize (KB)" msgstr "Tamaño máximo de archivos adjuntos a tickets (KB)" #. module: website_support -#: model:ir.model.fields,field_description:website_support.field_website_support_settings_max_ticket_attachments +#: model:ir.model.fields,field_description:website_support.field_res_config_settings_max_ticket_attachments msgid "Max Ticket Attachments" msgstr "Adjuntos máximos en tickets" +#. module: website_support +#: model:ir.ui.view,arch_db:website_support.res_config_settings_view_form +msgid "Maximum size allowed for attachments" +msgstr "Tamaño máximo permitido para los archivos adjuntos" + #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_attachment_ids msgid "Media Attachments" @@ -1192,7 +1299,6 @@ msgstr "Adjuntos multimedia" #. module: website_support #: model:ir.ui.view,arch_db:website_support.support_ticket_view -#: model:ir.ui.view,arch_db:website_support.support_ticket_view_list msgid "Message" msgstr "Mensaje" @@ -1202,17 +1308,12 @@ msgid "Message Body" msgstr "Cuerpo del mensaje" #. module: website_support -#: model:website.support.ticket.priority,name:website_support.moderately -msgid "Moderately" -msgstr "Moderadamente" - -#. module: website_support -#: model:ir.ui.view,arch_db:website_support.support_ticket_view_list -msgid "My Support Tickets" -msgstr "Mis tickets de soporte" +#: model:ir.ui.view,arch_db:website_support.support_help_pages +msgid "More" +msgstr "Más" #. module: website_support -#: model:ir.ui.view,arch_db:website_support.support_help_pages +#: model:ir.ui.view,arch_db:website_support.layout msgid "My Tickets" msgstr "Mis tickets" @@ -1221,6 +1322,7 @@ msgstr "Mis tickets" #: model:ir.model.fields,field_description:website_support.field_website_support_department_role_name #: model:ir.model.fields,field_description:website_support.field_website_support_sla_name #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_approval_name +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_stage_name #: model:ir.ui.view,arch_db:website_support.support_submit_ticket msgid "Name" msgstr "Nombre" @@ -1252,6 +1354,12 @@ msgstr "Nuevo ticket de soporte para tu categoría" msgid "New Ticket Count" msgstr "Nuevo recuento de ticket" +#. module: website_support +#: code:addons/website_support/controllers/myaccount.py:48 +#, python-format +msgid "Newest" +msgstr "El más nuevo" + #. module: website_support #: model:website.support.ticket.approval,name:website_support.no_approval_required msgid "No Approval Required" @@ -1269,12 +1377,7 @@ msgid "No Support Tickets found" msgstr "No se han encontrado tickets" #. module: website_support -#: model:ir.actions.act_window,help:website_support.website_support_ticket_priority_action -msgid "No Support Tickets priorities found" -msgstr "No se han encontrado prioridades de tickets" - -#. module: website_support -#: model:website.support.ticket.priority,name:website_support.normal +#: selection:website.support.ticket,priority:0 msgid "Normal" msgstr "Normal" @@ -1283,13 +1386,18 @@ msgstr "Normal" msgid "Number of Pages" msgstr "Número de páginas" +#. module: website_support +#: model:ir.ui.view,arch_db:website_support.res_config_settings_view_form +msgid "Number of attachments allowed in support tickets" +msgstr "Número de archivos adjuntos permitidos en tickets de soporte" + #. module: website_support #: model:ir.model.fields,help:website_support.field_website_support_sla_alert_alert_time msgid "Number of hours before or after SLA expiry to send alert" msgstr "Número de horas para enviar alerta de SLA antes o después" #. module: website_support -#: model:website.support.ticket.states,name:website_support.website_ticket_state_open +#: model:website.support.ticket.stage,name:website_support.website_ticket_stage_open msgid "Open" msgstr "Abierto" @@ -1330,7 +1438,7 @@ msgid "Partner" msgstr "Empresa" #. module: website_support -#: selection:website.support.settings,allow_website_priority_set:0 +#: selection:res.config.settings,allow_website_priority_set:0 msgid "Partner Only" msgstr "Solo cliente" @@ -1344,6 +1452,11 @@ msgstr "Contraseña" msgid "Pause SLA" msgstr "Pausar SLA" +#. module: website_support +#: model:ir.ui.view,arch_db:website_support.res_config_settings_view_form +msgid "Performance" +msgstr "Desempeño" + #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_person_name msgid "Person Name" @@ -1366,26 +1479,11 @@ msgid "Please give us feedback on our support service" msgstr "Por favor, denos su opinión de nuestro servicio de soporte" #. module: website_support -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_portal_access_key -msgid "Portal Access Key" -msgstr "Clave de acceso al portal" - -#. module: website_support -#: model:ir.ui.menu,name:website_support.website_support_ticket_priority_menu -msgid "Priorities" -msgstr "Prioridades" - -#. module: website_support -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_priority_id +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_priority #: model:ir.ui.view,arch_db:website_support.support_submit_ticket msgid "Priority" msgstr "Prioridad" -#. module: website_support -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_priority_name -msgid "Priority Name" -msgstr "Nombre de prioridad" - #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_help_groups_partner_ids msgid "Privilege Contacts" @@ -1418,7 +1516,7 @@ msgid "Report" msgstr "Informe" #. module: website_support -#: model:ir.ui.view,arch_db:website_support.support_help_pages +#: model:ir.ui.view,arch_db:website_support.layout msgid "Reporting" msgstr "Informes" @@ -1432,6 +1530,11 @@ msgstr "Solicitar aprobación" msgid "Response Time" msgstr "Tiempo de respuesta" +#. module: website_support +#: model:ir.model.fields,help:website_support.field_website_support_ticket_categories_access_group_ids +msgid "Restrict which users can select the category on the website form, none = everyone" +msgstr "Restringir qué usuarios pueden seleccionar la categoría en el formulario del sitio web, ninguno = todos" + #. module: website_support #: model:ir.ui.view,arch_db:website_support.website_support_ticket_view_form msgid "Resume SLA" @@ -1443,17 +1546,20 @@ msgid "Role" msgstr "Rol" #. module: website_support +#: model:ir.model.fields,field_description:website_support.field_res_config_settings_group_website_support_sla #: model:ir.model.fields,field_description:website_support.field_res_partner_sla_id #: model:ir.model.fields,field_description:website_support.field_res_users_sla_id #: model:ir.model.fields,field_description:website_support.field_website_support_sla_alert_vsa_id #: model:ir.model.fields,field_description:website_support.field_website_support_sla_response_vsa_id #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_sla_id #: model:ir.ui.view,arch_db:website_support.website_support_ticket_view_form +#: model:res.groups,name:website_support.group_website_support_sla msgid "SLA" msgstr "SLA" #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_sla_active +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_sla_settings_active msgid "SLA Active" msgstr "SLA activo" @@ -1493,6 +1599,17 @@ msgid "Search" msgstr "Búsqueda" #. module: website_support +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_access_token +msgid "Security Token" +msgstr "Token de seguridad" + +#. module: website_support +#: model:ir.ui.view,arch_db:website_support.res_config_settings_view_form +msgid "Self-Service" +msgstr "Auto-Servicio" + +#. module: website_support +#: model:ir.ui.view,arch_db:website_support.portal_ticket_page #: model:ir.ui.view,arch_db:website_support.website_support_ticket_compose_view_form msgid "Send" msgstr "Enviar" @@ -1512,14 +1629,18 @@ msgstr "Separa plantillas de correo electrónico creadas por módulos de las cre #: model:ir.model.fields,field_description:website_support.field_website_support_help_groups_sequence #: model:ir.model.fields,field_description:website_support.field_website_support_help_page_sequence #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_categories_sequence -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_priority_sequence #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_subcategory_sequence msgid "Sequence" msgstr "Secuencia" #. module: website_support -#: model:ir.ui.menu,name:website_support.website_support_config_parent_menu -#: model:ir.ui.menu,name:website_support.website_support_settings_menu +#: model:ir.ui.view,arch_db:website_support.res_config_settings_view_form +msgid "Set up your Service Level Agreements to track performance" +msgstr "Configure su nivel de acuerdo de servicio para seguir su rendimiento" + +#. module: website_support +#: model:ir.actions.act_window,name:website_support.website_support_settings_action +#: model:ir.ui.menu,name:website_support.menu_website_support_config msgid "Settings" msgstr "Ajustes" @@ -1534,35 +1655,32 @@ msgid "Staff" msgstr "Operarios" #. module: website_support -#: model:website.support.ticket.states,name:website_support.website_ticket_state_staff_closed +#: model:website.support.ticket.stage,name:website_support.website_ticket_stage_staff_closed msgid "Staff Closed" msgstr "Cerrado por los operarios" #. module: website_support -#: model:website.support.ticket.states,name:website_support.website_ticket_state_staff_replied +#: model:website.support.ticket.stage,name:website_support.website_ticket_stage_staff_replied msgid "Staff Replied" msgstr "Respondido por los operarios" #. module: website_support -#: model:ir.model.fields,field_description:website_support.field_website_support_settings_staff_reply_email_template_id +#: model:ir.model.fields,field_description:website_support.field_res_config_settings_staff_reply_email_template_id msgid "Staff Reply Email Template" msgstr "Plantilla de correo electrónico para respuestas de operarios" #. module: website_support -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_state -#: model:ir.ui.view,arch_db:website_support.support_ticket_view_list -msgid "State" -msgstr "Estado" - -#. module: website_support -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_states_name -msgid "State Name" -msgstr "Nombre estado" +#: code:addons/website_support/controllers/myaccount.py:50 +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_stage +#: model:ir.ui.view,arch_db:website_support.portal_my_tickets +#, python-format +msgid "Stage" +msgstr "Etapa" #. module: website_support -#: model:ir.ui.menu,name:website_support.website_support_ticket_states_menu -msgid "States" -msgstr "Estados" +#: model:ir.ui.menu,name:website_support.website_support_ticket_stage_menu +msgid "Stages" +msgstr "Etapas" #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_department_sub_category_ids @@ -1598,10 +1716,12 @@ msgid "Sub Category Usage (Top 5)" msgstr "Uso de subcategoría (Top 5)" #. module: website_support +#: code:addons/website_support/controllers/myaccount.py:49 #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_compose_subject #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_subject +#: model:ir.ui.view,arch_db:website_support.portal_my_tickets #: model:ir.ui.view,arch_db:website_support.support_submit_ticket -#: model:ir.ui.view,arch_db:website_support.support_ticket_view_list +#, python-format msgid "Subject" msgstr "Asunto" @@ -1627,14 +1747,14 @@ msgid "Submit Ticket" msgstr "Enviar ticket" #. module: website_support -#: model:ir.ui.view,arch_db:website_support.support_help_pages +#: model:ir.ui.view,arch_db:website_support.layout msgid "Submit a Ticket" msgstr "Enviar un ticket" #. module: website_support -#: model:website.menu,name:website_support.website_support_ticket -msgid "Support" -msgstr "Soporte" +#: model:res.groups,name:website_support.support_group +msgid "Support Client" +msgstr "Cliente de soporte" #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_support_comment @@ -1646,6 +1766,11 @@ msgstr "Comentario de soporte" msgid "Support Email" msgstr "Correo electrónico de soporte" +#. module: website_support +#: model:res.groups,name:website_support.support_manager +msgid "Support Manager" +msgstr "Gerente de Soporte" + #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_support_rating msgid "Support Rating" @@ -1656,6 +1781,16 @@ msgstr "Puntuación de soporte" msgid "Support SLA" msgstr "SLA del soporte" +#. module: website_support +#: model:res.groups,name:website_support.support_staff +msgid "Support Staff" +msgstr "Empleado de soporte" + +#. module: website_support +#: model:ir.ui.menu,name:website_support.website_support_ticket_tag_menu +msgid "Support Tags" +msgstr "Etiquetas de soporte" + #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_approval_wst_id #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_field_wst_id @@ -1686,19 +1821,9 @@ msgid "Support Ticket Departments" msgstr "Departamentos del ticket de soporte" #. module: website_support -#: model:ir.actions.act_window,name:website_support.website_support_ticket_priority_action -msgid "Support Ticket Priorities" -msgstr "Prioridades del ticket de soporte" - -#. module: website_support -#: model:ir.actions.act_window,name:website_support.website_support_settings_action -msgid "Support Ticket Settings" -msgstr "Ajuste del ticket de soporte" - -#. module: website_support -#: model:ir.actions.act_window,name:website_support.website_support_ticket_states_action -msgid "Support Ticket States" -msgstr "Estados del ticket de soporte" +#: model:ir.actions.act_window,name:website_support.website_support_ticket_stage_action +msgid "Support Ticket Stages" +msgstr "Etapas del ticket de soporte" #. module: website_support #: model:ir.model.fields,field_description:website_support.field_res_partner_support_ticket_string @@ -1708,8 +1833,8 @@ msgstr "Cadena del ticket de soporte" #. module: website_support #: model:ir.actions.act_window,name:website_support.website_support_ticket_subcategory_action -msgid "Support Ticket Subcategory" -msgstr "Subcategoría del ticket de soporte" +msgid "Support Ticket Sub Categories" +msgstr "Subcategorías de tickets de soporte" #. module: website_support #: model:mail.template,subject:website_support.support_ticket_survey @@ -1739,9 +1864,13 @@ msgstr "Componer ticket de soporte" msgid "Tag Name" msgstr "Nombre de etiqueta" +#. module: website_support +#: sql_constraint:website.support.ticket.tag:0 +msgid "Tag name already exists !" +msgstr "¡El nombre de la etiqueta ya existe!" + #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_tag_ids -#: model:ir.ui.menu,name:website_support.website_support_ticket_tag_menu msgid "Tags" msgstr "Etiquetas" @@ -1750,6 +1879,11 @@ msgstr "Etiquetas" msgid "Technical Support" msgstr "Soporte técnico" +#. module: website_support +#: model:ir.ui.view,arch_db:website_support.res_config_settings_view_form +msgid "Template" +msgstr "Plantilla" + #. module: website_support #: selection:website.support.ticket.subcategory.field,type:0 msgid "Textbox" @@ -1767,20 +1901,25 @@ msgid "Thank you for you feedback about our support" msgstr "Gracias por la opinión sobre nuestro soporte" #. module: website_support -#: model:ir.model.fields,help:website_support.field_website_support_ticket_states_mail_template_id -msgid "The mail message that the customer gets when the state changes" -msgstr "El mensaje por correo electrónico que el cliente recibe cuando el estado cambia" +#: model:ir.model.fields,help:website_support.field_website_support_ticket_stage_mail_template_id +msgid "The mail message that the customer gets when the stage changes" +msgstr "El mensaje por correo electrónico que el cliente recibe cuando la etapa cambia" + +#. module: website_support +#: model:ir.ui.view,arch_db:website_support.portal_my_tickets +msgid "There are no tickets in your account." +msgstr "No hay tickets en tu cuenta." + +#. module: website_support +#: model:ir.model.fields,help:website_support.field_website_support_ticket_stage_fold +msgid "This stage is folded in the kanban view when there are no records in that stage to display." +msgstr "Esta etapa se repliega en la vista kanban cuando no hay registros para mostrar en la misma." #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_sla_response_category_id msgid "Ticket Category" msgstr "Categoría del ticket" -#. module: website_support -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_ticket_color -msgid "Ticket Color" -msgstr "Color de ticket" - #. module: website_support #: model:ir.model.fields,field_description:website_support.field_res_partner_support_ticket_count #: model:ir.model.fields,field_description:website_support.field_res_users_support_ticket_count @@ -1802,6 +1941,10 @@ msgstr "Número de ticket" #. module: website_support #: model:ir.model.fields,field_description:website_support.field_res_partner_support_ticket_ids #: model:ir.model.fields,field_description:website_support.field_res_users_support_ticket_ids +#: model:ir.ui.view,arch_db:website_support.portal_my_home_menu_ticket +#: model:ir.ui.view,arch_db:website_support.portal_my_home_ticket +#: model:ir.ui.view,arch_db:website_support.portal_my_tickets +#: model:ir.ui.view,arch_db:website_support.res_config_settings_view_form msgid "Tickets" msgstr "Tickets" @@ -1822,12 +1965,7 @@ msgid "Type" msgstr "Tipo" #. module: website_support -#: model:ir.model.fields,field_description:website_support.field_website_support_help_page_url_generated -msgid "URL" -msgstr "URL" - -#. module: website_support -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_states_unattended +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_stage_unattended #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_unattended msgid "Unattended" msgstr "Desatendidos" @@ -1837,6 +1975,11 @@ msgstr "Desatendidos" msgid "Unattended Tickets" msgstr "Tickets desatendidos" +#. module: website_support +#: model:ir.ui.view,arch_db:website_support.website_support_ticket_view_kanban +msgid "Unread Messages" +msgstr "Mensajes sin leer" + #. module: website_support #: model:ir.actions.server,name:website_support.update_sla_timer_ir_actions_server #: model:ir.cron,cron_name:website_support.update_sla_timer @@ -1844,11 +1987,6 @@ msgstr "Tickets desatendidos" msgid "Update SLA Timer" msgstr "Actualizar temporizador del SLA" -#. module: website_support -#: model:website.support.ticket.priority,name:website_support.urgent -msgid "Urgent" -msgstr "Urgente" - #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_department_contact_user_id #: model:ir.ui.view,arch_db:website_support.website_support_ticket_view_search @@ -1865,6 +2003,11 @@ msgstr "Usuarios" msgid "Value" msgstr "Valor" +#. module: website_support +#: selection:website.support.ticket,priority:0 +msgid "Very High" +msgstr "Muy alta" + #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_department_role_view_department_tickets msgid "View Department Tickets" @@ -1891,10 +2034,10 @@ msgid "Website Help Pages" msgstr "Páginas de ayuda del sitio web" #. module: website_support +#: model:ir.module.category,name:website_support.support_application #: model:ir.ui.view,arch_db:website_support.view_users_form_inherit_website_support -#: model:res.groups,name:website_support.support_group msgid "Website Support" -msgstr "Soporte del sitio web" +msgstr "Soporte web" #. module: website_support #: model:ir.model,name:website_support.model_website_support_ticket @@ -1902,14 +2045,14 @@ msgid "Website Support Ticket" msgstr "Ticket de soporte del sitio web" #. module: website_support -#: model:ir.ui.view,arch_db:website_support.support_ticket_view_list -msgid "You have no change requests" -msgstr "No tiene peticiones de cambio" +#: model:ir.ui.view,arch_db:website_support.res_config_settings_view_form +msgid "Website support" +msgstr "Soporte web" #. module: website_support -#: model:ir.ui.view,arch_db:website_support.support_ticket_view_list -msgid "You have no support tickets" -msgstr "No tiene ningún ticket de soporte" +#: model:ir.ui.view,arch_db:website_support.portal_ticket_page +msgid "Write a message..." +msgstr "Escriba un mensaje..." #. module: website_support #: model:ir.ui.view,arch_db:website_support.account_create @@ -1947,15 +2090,20 @@ msgid "reCAPTCHA" msgstr "reCAPTCHA" #. module: website_support -#: model:ir.model.fields,field_description:website_support.field_website_support_settings_google_captcha_client_key +#: model:ir.model.fields,field_description:website_support.field_res_config_settings_google_captcha_client_key msgid "reCAPTCHA Client Key" msgstr "reCAPTCHA clave del cliente" #. module: website_support -#: model:ir.model.fields,field_description:website_support.field_website_support_settings_google_captcha_secret_key +#: model:ir.model.fields,field_description:website_support.field_res_config_settings_google_captcha_secret_key msgid "reCAPTCHA Secret Key" msgstr "reCAPTCHA clave secreta" +#. module: website_support +#: model:ir.model,name:website_support.model_res_config_settings +msgid "res.config.settings" +msgstr "res.config.settings" + #. module: website_support #: model:ir.model,name:website_support.model_website_support_department msgid "website.support.department" @@ -1996,11 +2144,6 @@ msgstr "website.support.help.page" msgid "website.support.help.page.feedback" msgstr "website.support.help.page.feedback" -#. module: website_support -#: model:ir.model,name:website_support.model_website_support_settings -msgid "website.support.settings" -msgstr "website.support.settings" - #. module: website_support #: model:ir.model,name:website_support.model_website_support_sla msgid "website.support.sla" @@ -2047,14 +2190,9 @@ msgid "website.support.ticket.message" msgstr "website.support.ticket.message" #. module: website_support -#: model:ir.model,name:website_support.model_website_support_ticket_priority -msgid "website.support.ticket.priority" -msgstr "website.support.ticket.priority" - -#. module: website_support -#: model:ir.model,name:website_support.model_website_support_ticket_states -msgid "website.support.ticket.states" -msgstr "website.support.ticket.states" +#: model:ir.model,name:website_support.model_website_support_ticket_stage +msgid "website.support.ticket.stage" +msgstr "website.support.ticket.stage" #. module: website_support #: model:ir.model,name:website_support.model_website_support_ticket_subcategory @@ -2070,4 +2208,3 @@ msgstr "website.support.ticket.subcategory.field" #: model:ir.model,name:website_support.model_website_support_ticket_tag msgid "website.support.ticket.tag" msgstr "website.support.ticket.tag" - diff --git a/website_support/models/mail_template.py b/website_support/models/mail_template.py index abc4636b9..94ddc20aa 100644 --- a/website_support/models/mail_template.py +++ b/website_support/models/mail_template.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -from openerp import api, fields, models +from odoo import api, fields, models class MailTemplateSupportTicket(models.Model): diff --git a/website_support/models/res_partner.py b/website_support/models/res_partner.py index ec09bc2e6..7896da308 100644 --- a/website_support/models/res_partner.py +++ b/website_support/models/res_partner.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -from openerp import api, fields, models +from odoo import api, fields, models class ResPartnerTicket(models.Model): @@ -23,8 +23,8 @@ def _count_support_tickets(self): @api.depends('support_ticket_ids') def _count_new_support_tickets(self): """Sets the amount of new support tickets owned by this customer""" - opened_state = self.env['ir.model.data'].get_object('website_support', 'website_ticket_state_open') - self.new_support_ticket_count = self.support_ticket_ids.search_count([('partner_id','=',self.id), ('state','=',opened_state.id)]) + opened_stage = self.env['ir.model.data'].get_object('website_support', 'website_ticket_stage_open') + self.new_support_ticket_count = self.support_ticket_ids.search_count([('partner_id','=',self.id), ('stage','=',opened_stage.id)]) @api.one @api.depends('support_ticket_count', 'new_support_ticket_count') diff --git a/website_support/models/website_support_department.py b/website_support/models/website_support_department.py index 25dfc6bf5..2287ea677 100644 --- a/website_support/models/website_support_department.py +++ b/website_support/models/website_support_department.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- import datetime -from openerp import api, fields, models +from odoo import api, fields, models class WebsiteSupportDepartment(models.Model): diff --git a/website_support/models/website_support_help.py b/website_support/models/website_support_help.py index ed4a6c6f7..90021255c 100644 --- a/website_support/models/website_support_help.py +++ b/website_support/models/website_support_help.py @@ -2,9 +2,9 @@ import unicodedata import re -from openerp import api, fields, models -from openerp.http import request -from openerp.tools import html_escape as escape, ustr, image_resize_and_sharpen, image_save_for_web +from odoo import api, fields, models +from odoo.http import request +from odoo.tools import html_escape as escape, ustr, image_resize_and_sharpen, image_save_for_web from odoo.addons.http_routing.models.ir_http import slug diff --git a/website_support/models/website_support_settings.py b/website_support/models/website_support_settings.py index 75b80f66d..5c8b2b2a8 100644 --- a/website_support/models/website_support_settings.py +++ b/website_support/models/website_support_settings.py @@ -1,15 +1,8 @@ -# -*- coding: utf-8 -*- -import logging -_logger = logging.getLogger(__name__) -import requests -from openerp.http import request -import odoo +from odoo import api, fields, models -from openerp import api, fields, models -class WebsiteSupportSettings(models.Model): +class ResConfigSettings(models.TransientModel): - _name = "website.support.settings" _inherit = 'res.config.settings' close_ticket_email_template_id = fields.Many2one('mail.template', domain="[('model_id','=','website.support.ticket')]", string="(OBSOLETE)Close Ticket Email Template") @@ -26,36 +19,43 @@ class WebsiteSupportSettings(models.Model): google_captcha_secret_key = fields.Char(string="reCAPTCHA Secret Key") allow_website_priority_set = fields.Selection([("partner","Partner Only"), ("everyone","Everyone")], string="Allow Website Priority Set", help="Cusomters can set the priority of a ticket when submitting via the website form\nPartner Only = logged in user") + group_website_support_sla = fields.Boolean(string="SLA", group='website_support.support_manager', implied_group='website_support.group_website_support_sla') + group_website_support_help_groups = fields.Boolean(string="Groups and help pages", group='website_support.support_manager', implied_group='website_support.group_website_support_help_groups') + @api.multi def set_values(self): - super(WebsiteSupportSettings, self).set_values() - self.env['ir.default'].set('website.support.settings', 'auto_send_survey', self.auto_send_survey) - self.env['ir.default'].set('website.support.settings', 'allow_user_signup', self.allow_user_signup) - self.env['ir.default'].set('website.support.settings', 'change_user_email_template_id', self.change_user_email_template_id.id) - self.env['ir.default'].set('website.support.settings', 'close_ticket_email_template_id', self.close_ticket_email_template_id.id) - self.env['ir.default'].set('website.support.settings', 'email_default_category_id', self.email_default_category_id.id) - self.env['ir.default'].set('website.support.settings', 'staff_reply_email_template_id', self.staff_reply_email_template_id.id) - self.env['ir.default'].set('website.support.settings', 'max_ticket_attachments', self.max_ticket_attachments) - self.env['ir.default'].set('website.support.settings', 'max_ticket_attachment_filesize', self.max_ticket_attachment_filesize) - self.env['ir.default'].set('website.support.settings', 'business_hours_id', self.business_hours_id.id) - self.env['ir.default'].set('website.support.settings', 'google_recaptcha_active', self.google_recaptcha_active) - self.env['ir.default'].set('website.support.settings', 'google_captcha_client_key', self.google_captcha_client_key) - self.env['ir.default'].set('website.support.settings', 'google_captcha_secret_key', self.google_captcha_secret_key) - self.env['ir.default'].set('website.support.settings', 'allow_website_priority_set', self.allow_website_priority_set) - + super(ResConfigSettings, self).set_values() + self.env['ir.default'].set('res.config.settings', 'auto_send_survey', self.auto_send_survey) + self.env['ir.default'].set('res.config.settings', 'allow_user_signup', self.allow_user_signup) + self.env['ir.default'].set('res.config.settings', 'change_user_email_template_id', self.change_user_email_template_id.id) + self.env['ir.default'].set('res.config.settings', 'close_ticket_email_template_id', self.close_ticket_email_template_id.id) + self.env['ir.default'].set('res.config.settings', 'email_default_category_id', self.email_default_category_id.id) + self.env['ir.default'].set('res.config.settings', 'staff_reply_email_template_id', self.staff_reply_email_template_id.id) + self.env['ir.default'].set('res.config.settings', 'max_ticket_attachments', self.max_ticket_attachments) + self.env['ir.default'].set('res.config.settings', 'max_ticket_attachment_filesize', self.max_ticket_attachment_filesize) + self.env['ir.default'].set('res.config.settings', 'business_hours_id', self.business_hours_id.id) + self.env['ir.default'].set('res.config.settings', 'google_recaptcha_active', self.google_recaptcha_active) + self.env['ir.default'].set('res.config.settings', 'google_captcha_client_key', self.google_captcha_client_key) + self.env['ir.default'].set('res.config.settings', 'google_captcha_secret_key', self.google_captcha_secret_key) + self.env['ir.default'].set('res.config.settings', 'allow_website_priority_set', self.allow_website_priority_set) + self.env['ir.default'].set('res.config.settings', 'group_website_support_sla', self.group_website_support_sla) + self.env['ir.default'].set('res.config.settings', 'group_website_support_help_groups', self.group_website_support_help_groups) + @api.model def get_values(self): - res = super(WebsiteSupportSettings, self).get_values() + res = super(ResConfigSettings, self).get_values() res.update( - auto_send_survey=self.env['ir.default'].get('website.support.settings', 'auto_send_survey'), - allow_user_signup=self.env['ir.default'].get('website.support.settings', 'allow_user_signup'), - change_user_email_template_id=self.env['ir.default'].get('website.support.settings', 'change_user_email_template_id'), - close_ticket_email_template_id=self.env['ir.default'].get('website.support.settings', 'close_ticket_email_template_id'), - email_default_category_id=self.env['ir.default'].get('website.support.settings', 'email_default_category_id'), - staff_reply_email_template_id=self.env['ir.default'].get('website.support.settings', 'staff_reply_email_template_id'), - max_ticket_attachments=self.env['ir.default'].get('website.support.settings', 'max_ticket_attachments'), - max_ticket_attachment_filesize=self.env['ir.default'].get('website.support.settings', 'max_ticket_attachment_filesize'), - business_hours_id=self.env['ir.default'].get('website.support.settings', 'business_hours_id'), - allow_website_priority_set=self.env['ir.default'].get('website.support.settings', 'allow_website_priority_set') + auto_send_survey=self.env['ir.default'].get('res.config.settings', 'auto_send_survey'), + allow_user_signup=self.env['ir.default'].get('res.config.settings', 'allow_user_signup'), + change_user_email_template_id=self.env['ir.default'].get('res.config.settings', 'change_user_email_template_id'), + close_ticket_email_template_id=self.env['ir.default'].get('res.config.settings', 'close_ticket_email_template_id'), + email_default_category_id=self.env['ir.default'].get('res.config.settings', 'email_default_category_id'), + staff_reply_email_template_id=self.env['ir.default'].get('res.config.settings', 'staff_reply_email_template_id'), + max_ticket_attachments=self.env['ir.default'].get('res.config.settings', 'max_ticket_attachments'), + max_ticket_attachment_filesize=self.env['ir.default'].get('res.config.settings', 'max_ticket_attachment_filesize'), + business_hours_id=self.env['ir.default'].get('res.config.settings', 'business_hours_id'), + allow_website_priority_set=self.env['ir.default'].get('res.config.settings', 'allow_website_priority_set'), + group_website_support_sla=self.env['ir.default'].get('res.config.settings', 'group_website_support_sla'), + group_website_support_help_groups=self.env['ir.default'].get('res.config.settings', 'group_website_support_help_groups') ) - return res \ No newline at end of file + return res diff --git a/website_support/models/website_support_sla.py b/website_support/models/website_support_sla.py index da21e66db..d1d8ea948 100644 --- a/website_support/models/website_support_sla.py +++ b/website_support/models/website_support_sla.py @@ -4,7 +4,7 @@ _logger = logging.getLogger(__name__) from odoo.exceptions import UserError -from openerp import api, fields, models +from odoo import api, fields, models class WebsiteSupportSLA(models.Model): @@ -74,7 +74,7 @@ def create(self, values): #Setting for business hours has to be set before they can use business hours only SLA option if values['countdown_condition'] == 'business_only': - setting_business_hours_id = self.env['ir.default'].get('website.support.settings', 'business_hours_id') + setting_business_hours_id = self.env['ir.default'].get('res.config.settings', 'business_hours_id') if setting_business_hours_id is None: raise UserError("Please set business hours in settings before using this option") diff --git a/website_support/models/website_support_ticket.py b/website_support/models/website_support_ticket.py index 4eb427d6d..5428a181e 100644 --- a/website_support/models/website_support_ticket.py +++ b/website_support/models/website_support_ticket.py @@ -1,8 +1,9 @@ # -*- coding: utf-8 -*- -from openerp import api, fields, models -from openerp import tools +from odoo import api, fields, models +from odoo import tools from random import randint import datetime +import uuid from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT, DEFAULT_SERVER_DATE_FORMAT from odoo import SUPERUSER_ID from dateutil import tz @@ -10,6 +11,12 @@ import logging _logger = logging.getLogger(__name__) +AVAILABLE_PRIORITIES = [ + ('0', 'Normal'), + ('1', 'Low'), + ('2', 'High'), + ('3', 'Very High'), + ] class WebsiteSupportTicket(models.Model): @@ -17,43 +24,47 @@ class WebsiteSupportTicket(models.Model): _description = "Website Support Ticket" _order = "create_date desc" _rec_name = "subject" - _inherit = ['mail.thread'] + _inherit = ['mail.thread', 'mail.activity.mixin', 'portal.mixin'] _translate = True @api.model - def _read_group_state(self, states, domain, order): - """ Read group customization in order to display all the states in the + def _read_group_stage(self, stage, domain, order): + """ Read group customization in order to display all the stage in the kanban view, even if they are empty """ - staff_replied_state = self.env['ir.model.data'].get_object('website_support', - 'website_ticket_state_staff_replied') - customer_replied_state = self.env['ir.model.data'].get_object('website_support', - 'website_ticket_state_customer_replied') + staff_replied_stage = self.env['ir.model.data'].get_object('website_support', + 'website_ticket_stage_staff_replied') + customer_replied_stage = self.env['ir.model.data'].get_object('website_support', + 'website_ticket_stage_customer_replied') customer_closed = self.env['ir.model.data'].get_object('website_support', - 'website_ticket_state_customer_closed') - staff_closed = self.env['ir.model.data'].get_object('website_support', 'website_ticket_state_staff_closed') + 'website_ticket_stage_customer_closed') + staff_closed = self.env['ir.model.data'].get_object('website_support', 'website_ticket_stage_staff_closed') - exclude_states = [staff_replied_state.id, customer_replied_state.id, customer_closed.id, staff_closed.id] + exclude_stage = [staff_replied_stage.id, customer_replied_stage.id, customer_closed.id, staff_closed.id] - # state_ids = states._search([('id','not in',exclude_states)], order=order, access_rights_uid=SUPERUSER_ID) - state_ids = states._search([], order=order, access_rights_uid=SUPERUSER_ID) + # stage_ids = stage._search([('id','not in',exclude_stage)], order=order, access_rights_uid=SUPERUSER_ID) + stage_ids = stage._search([], order=order, access_rights_uid=SUPERUSER_ID) - return states.browse(state_ids) + return stage.browse(stage_ids) - def _default_state(self): - return self.env['ir.model.data'].get_object('website_support', 'website_ticket_state_open') - - def _default_priority_id(self): - default_priority = self.env['website.support.ticket.priority'].search([('sequence','=','1')]) - return default_priority[0] + def _default_stage(self): + return self.env['ir.model.data'].get_object('website_support', 'website_ticket_stage_open') def _default_approval_id(self): return self.env['ir.model.data'].get_object('website_support', 'no_approval_required') + def _get_default_access_token(self): + return str(uuid.uuid4()) + + color = fields.Integer(string='Color Index') + access_token = fields.Char( + 'Security Token', copy=False, + default=_get_default_access_token) + # displayed_image_id = fields.Many2one('ir.attachment', domain="[('res_model', '=', 'website.support.ticket'),('res_id', '=', id), ('mimetype', 'ilike', 'image')]", string='Cover Image') channel = fields.Char(string="Channel", default="Manual") create_user_id = fields.Many2one('res.users', "Create User") - priority_id = fields.Many2one('website.support.ticket.priority', default=_default_priority_id, string="Priority") + priority = fields.Selection(AVAILABLE_PRIORITIES, string="Priority", index=True, default=AVAILABLE_PRIORITIES[0][0]) parent_company_id = fields.Many2one(string="Parent Company", related="partner_id.company_id") partner_id = fields.Many2one('res.partner', string="Partner") user_id = fields.Many2one('res.users', string="Assigned User") @@ -64,18 +75,21 @@ def _default_approval_id(self): sub_category_id = fields.Many2one('website.support.ticket.subcategory', string="Sub Category") subject = fields.Char(string="Subject") description = fields.Text(string="Description") - state = fields.Many2one('website.support.ticket.states', group_expand='_read_group_state', default=_default_state, - string="State") + stage = fields.Many2one('website.support.ticket.stage', group_expand='_read_group_stage', default=_default_stage, + string="Stage") + date_last_stage_update = fields.Datetime( + string='Last Stage Update', + index=True, + default=fields.Datetime.now) + conversation_history = fields.One2many('website.support.ticket.message', 'ticket_id', string="Conversation History") attachment = fields.Binary(string="Attachments") attachment_filename = fields.Char(string="Attachment Filename") attachment_ids = fields.One2many('ir.attachment', 'res_id', domain=[('res_model', '=', 'website.support.ticket')], string="Media Attachments") unattended = fields.Boolean(string="Unattended", compute="_compute_unattend", store="True", - help="In 'Open' state or 'Customer Replied' state taken into consideration name changes") - portal_access_key = fields.Char(string="Portal Access Key") + help="In 'Open' stage or 'Customer Replied' stage taken into consideration name changes") ticket_number = fields.Char(string="Ticket Number", readonly=True) - ticket_color = fields.Char(related="priority_id.color", string="Ticket Color") company_id = fields.Many2one('res.company', string="Company", default=lambda self: self.env['res.company']._company_default_get('website.support.ticket') ) support_rating = fields.Integer(string="Support Rating") @@ -97,10 +111,19 @@ def _default_approval_id(self): sla_timer = fields.Float(string="SLA Time Remaining") sla_timer_format = fields.Char(string="SLA Timer Format", compute="_compute_sla_timer_format") sla_active = fields.Boolean(string="SLA Active") - sla_response_category_id = fields.Many2one('website.support.sla.response', string="(DEPRICATED) SLA Response Category") - sla_rule_id = fields.Many2one('website.support.sla.rule', string="SLA Rule") + sla_settings_active = fields.Boolean( + compute="_compute_sla_settings_active", + string='SLA Active') + + sla_response_category_id = fields.Many2one('website.support.sla.response', string="SLA Response Category") sla_alert_ids = fields.Many2many('website.support.sla.alert', string="SLA Alerts", help="Keep record of SLA alerts sent so we do not resend them") + sla_response_category_id = fields.Many2one('website.support.sla.response', string="(DEPRICATED) SLA Response Category") + sla_rule_id = fields.Many2one('website.support.sla.rule', string="SLA Rule") + @api.multi + def _compute_sla_settings_active(self): + for record in self: + record.sla_settings_active = record.env['ir.default'].get('res.config.settings', 'group_website_support_sla') @api.one @api.depends('sla_timer') @@ -143,12 +166,12 @@ def update_sla_timer(self): elif active_sla_ticket.sla_rule_id.countdown_condition == '24_hour': #Countdown even if the business hours setting is not set active_sla_ticket.sla_timer -= 1/60 - + #(DEPRICATED use sla_rule_id) If we only countdown during busines hours if active_sla_ticket.sla_response_category_id.countdown_condition == 'business_only': # Check if the current time aligns with a timeslot in the settings, # setting has to be set for business_only or UserError occurs - setting_business_hours_id = self.env['ir.default'].get('website.support.settings', 'business_hours_id') + setting_business_hours_id = self.env['ir.default'].get('res.config.settings', 'business_hours_id') current_hour = datetime.datetime.now().hour current_minute = datetime.datetime.now().minute / 60 current_hour_float = current_hour + current_minute @@ -156,7 +179,7 @@ def update_sla_timer(self): during_work_hours = self.env['resource.calendar.attendance'].search([('calendar_id','=', setting_business_hours_id), ('dayofweek','=',day_of_week), ('hour_from','<',current_hour_float), ('hour_to','>',current_hour_float)]) # If holiday module is installed take into consideration - holiday_module = self.env['ir.module.module'].search([('name','=','hr_public_holidays'), ('state','=','installed')]) + holiday_module = self.env['ir.module.module'].search([('name','=','hr_public_holidays'), ('stage','=','installed')]) if holiday_module: holiday_today = self.env['hr.holidays.public.line'].search([('date','=',datetime.datetime.now().date())]) if holiday_today: @@ -270,7 +293,7 @@ def message_new(self, msg, custom_values=None): defaults['description'] = tools.html_sanitize(msg.get('body')) #Assign to default category - setting_email_default_category_id = self.env['ir.default'].get('website.support.settings', 'email_default_category_id') + setting_email_default_category_id = self.env['ir.default'].get('res.config.settings', 'email_default_category_id') if setting_email_default_category_id: defaults['category'] = setting_email_default_category_id @@ -288,22 +311,22 @@ def message_update(self, msg_dict, update_vals=None): #If the to email address is to the customer then it must be a staff member if msg_dict.get('to') == self.email: - change_state = self.env['ir.model.data'].get_object('website_support','website_ticket_state_staff_replied') + change_stage = self.env['ir.model.data'].get_object('website_support','website_ticket_stage_staff_replied') else: - change_state = self.env['ir.model.data'].get_object('website_support','website_ticket_state_customer_replied') + change_stage = self.env['ir.model.data'].get_object('website_support','website_ticket_stage_customer_replied') - self.state = change_state.id + self.stage = change_stage.id return super(WebsiteSupportTicket, self).message_update(msg_dict, update_vals=update_vals) @api.one - @api.depends('state') + @api.depends('stage') def _compute_unattend(self): - #BACK COMPATABLITY Use open and customer reply as default unattended states - opened_state = self.env['ir.model.data'].get_object('website_support', 'website_ticket_state_open') - customer_replied_state = self.env['ir.model.data'].get_object('website_support', 'website_ticket_state_customer_replied') + #BACK COMPATABLITY Use open and customer reply as default unattended stage + opened_stage = self.env['ir.model.data'].get_object('website_support', 'website_ticket_stage_open') + customer_replied_stage = self.env['ir.model.data'].get_object('website_support', 'website_ticket_stage_customer_replied') - if self.state == opened_state or self.state == customer_replied_state or self.state.unattended == True: + if self.stage == opened_stage or self.stage == customer_replied_stage or self.stage.unattended == True: self.unattended = True @api.multi @@ -340,9 +363,9 @@ def open_close_ticket_wizard(self): @api.model def _needaction_domain_get(self): - open_state = self.env['ir.model.data'].get_object('website_support', 'website_ticket_state_open') - custom_replied_state = self.env['ir.model.data'].get_object('website_support', 'website_ticket_state_customer_replied') - return ['|',('state', '=', open_state.id ), ('state', '=', custom_replied_state.id)] + open_stage = self.env['ir.model.data'].get_object('website_support', 'website_ticket_stage_open') + custom_replied_stage = self.env['ir.model.data'].get_object('website_support', 'website_ticket_stage_customer_replied') + return ['|',('stage', '=', open_stage.id ), ('stage', '=', custom_replied_stage.id)] @api.model def create(self, vals): @@ -351,9 +374,7 @@ def create(self, vals): new_id = super(WebsiteSupportTicket, self).create(vals) - new_id.portal_access_key = randint(1000000000,2000000000) - - ticket_open_email_template = self.env['ir.model.data'].get_object('website_support', 'website_ticket_state_open').mail_template_id + ticket_open_email_template = self.env['ir.model.data'].get_object('website_support', 'website_ticket_stage_open').mail_template_id ticket_open_email_template.send_mail(new_id.id, True) #If the customer has a dedicated support user then automatically assign them @@ -362,7 +383,7 @@ def create(self, vals): #Check if this contact has a SLA assigned if new_id.partner_id.sla_id: - + #Go through all rules starting from the lowest response time for sla_rule in new_id.partner_id.sla_id.rule_ids: #All conditions have to match @@ -382,7 +403,7 @@ def create(self, vals): all_true = False elif sla_rule_con.type == "priority" and new_id.priority_id.id != sla_rule_con.priority_id.id: all_true = False - + if all_true: new_id.sla_id = new_id.partner_id.sla_id.id new_id.sla_active = True @@ -421,12 +442,12 @@ def create(self, vals): @api.multi def write(self, values, context=None): - update_rec = super(WebsiteSupportTicket, self).write(values) - - if 'state' in values: - if self.state.mail_template_id: - self.state.mail_template_id.send_mail(self.id, True) + now = fields.Datetime.now() + if 'stage' in values: + if self.stage.mail_template_id: + self.stage.mail_template_id.send_mail(self.id, True) + self.date_last_stage_update = now #Email user if category has changed if 'category' in values: @@ -434,7 +455,7 @@ def write(self, values, context=None): change_category_email.send_mail(self.id, True) if 'user_id' in values: - setting_change_user_email_template_id = self.env['ir.default'].get('website.support.settings', 'change_user_email_template_id') + setting_change_user_email_template_id = self.env['ir.default'].get('res.config.settings', 'change_user_email_template_id') if setting_change_user_email_template_id: email_template = self.env['mail.template'].browse(setting_change_user_email_template_id) @@ -452,7 +473,6 @@ def write(self, values, context=None): send_mail = self.env['mail.mail'].create(email_values) send_mail.send() - return update_rec def send_survey(self): @@ -524,34 +544,26 @@ class WebsiteSupportTicketSubCategoryField(models.Model): name = fields.Char(string="Label", required="True") type = fields.Selection([('textbox','Textbox')], default="textbox", required="True", string="Type") -class WebsiteSupportTicketStates(models.Model): - - _name = "website.support.ticket.states" - - name = fields.Char(required=True, translate=True, string='State Name') - mail_template_id = fields.Many2one('mail.template', domain="[('model_id','=','website.support.ticket')]", string="Mail Template", help="The mail message that the customer gets when the state changes") - unattended = fields.Boolean(string="Unattended", help="If ticked, tickets in this state will appear by default") - -class WebsiteSupportTicketPriority(models.Model): +class WebsiteSupportTicketstage(models.Model): - _name = "website.support.ticket.priority" - _order = "sequence asc" + _name = "website.support.ticket.stage" - sequence = fields.Integer(string="Sequence") - name = fields.Char(required=True, translate=True, string="Priority Name") - color = fields.Char(string="Color") - - @api.model - def create(self, values): - sequence=self.env['ir.sequence'].next_by_code('website.support.ticket.priority') - values['sequence']=sequence - return super(WebsiteSupportTicketPriority, self).create(values) + name = fields.Char(required=True, translate=True, string='Name') + mail_template_id = fields.Many2one('mail.template', domain="[('model_id','=','website.support.ticket')]", string="Mail Template", help="The mail message that the customer gets when the stage changes") + unattended = fields.Boolean(string="Unattended", help="If ticked, tickets in this stage will appear by default") + fold = fields.Boolean(string='Folded in Kanban', + help='This stage is folded in the kanban view when there are no records in that stage to display.') class WebsiteSupportTicketTag(models.Model): _name = "website.support.ticket.tag" name = fields.Char(required=True, translate=True, string="Tag Name") + color = fields.Integer(string='Color Index', default=10) + + _sql_constraints = [ + ('name_uniq', 'unique (name)', "Tag name already exists !"), + ] class WebsiteSupportTicketUsers(models.Model): @@ -576,27 +588,27 @@ def close_ticket(self): diff_time = datetime.datetime.strptime(self.ticket_id.close_time, DEFAULT_SERVER_DATETIME_FORMAT) - datetime.datetime.strptime(self.ticket_id.create_date, DEFAULT_SERVER_DATETIME_FORMAT) self.ticket_id.time_to_close = diff_time.seconds - closed_state = self.env['ir.model.data'].sudo().get_object('website_support', 'website_ticket_state_staff_closed') + closed_stage = self.env['ir.model.data'].sudo().get_object('website_support', 'website_ticket_stage_staff_closed') - #We record state change manually since it would spam the chatter if every 'Staff Replied' and 'Customer Replied' gets recorded - message = "
    \n
  • State: " + self.ticket_id.state.name + " -> " + closed_state.name + "
" + #We record stage change manually since it would spam the chatter if every 'Staff Replied' and 'Customer Replied' gets recorded + message = "
    \n
  • stage: " + self.ticket_id.stage.name + " -> " + closed_stage.name + "
" self.ticket_id.message_post(body=message, subject="Ticket Closed by Staff") self.ticket_id.close_comment = self.message self.ticket_id.closed_by_id = self.env.user.id - self.ticket_id.state = closed_state.id + self.ticket_id.stage = closed_stage.id self.ticket_id.sla_active = False #Auto send out survey - setting_auto_send_survey = self.env['ir.default'].get('website.support.settings', 'auto_send_survey') + setting_auto_send_survey = self.env['ir.default'].get('res.config.settings', 'auto_send_survey') if setting_auto_send_survey: self.ticket_id.send_survey() - closed_state_mail_template = self.env['ir.model.data'].get_object('website_support', 'website_ticket_state_staff_closed').mail_template_id + closed_stage_mail_template = self.env['ir.model.data'].get_object('website_support', 'website_ticket_stage_staff_closed').mail_template_id - if closed_state_mail_template: - closed_state_mail_template.send_mail(self.ticket_id.id, True) + if closed_stage_mail_template: + closed_stage_mail_template.send_mail(self.ticket_id.id, True) class WebsiteSupportTicketCompose(models.Model): @@ -606,7 +618,7 @@ class WebsiteSupportTicketCompose(models.Model): partner_id = fields.Many2one('res.partner', string="Partner", readonly="True") email = fields.Char(string="Email", readonly="True") subject = fields.Char(string="Subject", readonly="True") - body = fields.Text(string="Message Body") + body = fields.Html(string="Message Body") template_id = fields.Many2one('mail.template', string="Mail Template", domain="[('model_id','=','website.support.ticket'), ('built_in','=',False)]") approval = fields.Boolean(string="Approval") planned_time = fields.Datetime(string="Planned Time") @@ -620,11 +632,11 @@ def _onchange_template_id(self): @api.one def send_reply(self): - #Change the approval state before we send the mail + #Change the approval stage before we send the mail if self.approval: - #Change the ticket state to awaiting approval - awaiting_approval_state = self.env['ir.model.data'].get_object('website_support','website_ticket_state_awaiting_approval') - self.ticket_id.state = awaiting_approval_state.id + #Change the ticket stage to awaiting approval + awaiting_approval_stage = self.env['ir.model.data'].get_object('website_support','website_ticket_stage_awaiting_approval') + self.ticket_id.stage = awaiting_approval_stage.id #One support request per ticket... self.ticket_id.planned_time = self.planned_time @@ -634,7 +646,7 @@ def send_reply(self): #Send email values = {} - setting_staff_reply_email_template_id = self.env['ir.default'].get('website.support.settings', 'staff_reply_email_template_id') + setting_staff_reply_email_template_id = self.env['ir.default'].get('res.config.settings', 'staff_reply_email_template_id') if setting_staff_reply_email_template_id: email_wrapper = self.env['mail.template'].browse(setting_staff_reply_email_template_id) @@ -646,16 +658,16 @@ def send_reply(self): send_mail.send() #Add to the message history to keep the data clean from the rest HTML - self.env['website.support.ticket.message'].create({'ticket_id': self.ticket_id.id, 'by': 'staff', 'content':self.body.replace("

","").replace("

","")}) + self.env['website.support.ticket.message'].create({'ticket_id': self.ticket_id.id, 'by': 'staff', 'content': self.body}) #Post in message history - #self.ticket_id.message_post(body=self.body, subject=self.subject, message_type='comment', subtype='mt_comment') + # self.ticket_id.message_post(body=self.body, subject=self.subject, message_type='comment', subtype='mt_comment') if self.approval: #Also change the approval awaiting_approval = self.env['ir.model.data'].get_object('website_support','awaiting_approval') self.ticket_id.approval_id = awaiting_approval.id else: - #Change the ticket state to staff replied - staff_replied = self.env['ir.model.data'].get_object('website_support','website_ticket_state_staff_replied') - self.ticket_id.state = staff_replied.id \ No newline at end of file + #Change the ticket stage to staff replied + staff_replied = self.env['ir.model.data'].get_object('website_support','website_ticket_stage_staff_replied') + self.ticket_id.stage = staff_replied.id diff --git a/website_support/security/ir.model.access.csv b/website_support/security/ir.model.access.csv index b27b0665d..c48e42de0 100644 --- a/website_support/security/ir.model.access.csv +++ b/website_support/security/ir.model.access.csv @@ -1,8 +1,8 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_website_support_ticket,access website.support.ticket,model_website_support_ticket,support_staff,1,1,1,0 access_website_support_ticket_compose,access website.support.ticket.compose,model_website_support_ticket_compose,support_staff,1,1,1,0 -access_website_support_ticket_states,support staff access website.support.ticket.states,model_website_support_ticket_states,support_staff,1,0,0,0 -access_website_support_ticket_states_maanger,support manager access website.support.ticket.states,model_website_support_ticket_states,support_manager,1,1,1,1 +access_website_support_ticket_stage,support staff access website.support.ticket.stage,model_website_support_ticket_stage,support_staff,1,0,0,0 +access_website_support_ticket_stage_maanger,support manager access website.support.ticket.stage,model_website_support_ticket_stage,support_manager,1,1,1,1 access_website_support_ticket_message,access website.support.ticket.message,model_website_support_ticket_message,support_staff,1,0,1,0 access_mail_followers_support,public access.mail.followers.support,mail.model_mail_followers,base.group_public,0,0,1,0 access_website_support_ticket_categories,support staff access website.support.ticket.categories,model_website_support_ticket_categories,support_staff,1,0,0,0 @@ -15,8 +15,6 @@ access_website_support_help_page,public access website.support.help.page,model_w access_website_support_help_page_manager,support manager access website.support.help.page,model_website_support_help_page,support_manager,1,1,1,1 access_website_support_help_page_feedback,public access website.support.help.page.feedback,model_website_support_help_page_feedback,base.group_public,1,0,0,0 access_website_support_help_page_feedback_manager,support manager access website.support.help.page.feedback,model_website_support_help_page_feedback,support_manager,1,1,1,1 -access_website_support_ticket_priority,support staff access website.support.ticket.priority,model_website_support_ticket_priority,support_staff,1,0,0,0 -access_website_support_ticket_priority_manager,support manager access website.support.ticket.priority,model_website_support_ticket_priority,support_manager,1,1,1,1 access_website_support_ticket_tag,support staff access website.support.ticket.tag,model_website_support_ticket_tag,support_staff,1,0,0,0 access_website_support_ticket_tag_manager,support manager access website.support.ticket.tag,model_website_support_ticket_tag,support_manager,1,1,1,1 access_website_support_ticket_close,support staff access website.support.ticket.close,model_website_support_ticket_close,support_staff,1,1,1,1 @@ -35,5 +33,8 @@ access_website_support_sla_alert_maanger,support manager access website.support. access_ir_rule,support manager access ir.rule,base.model_ir_rule,support_manager,1,0,0,0 access_ir_config_parameter,support manager access ir.config_parameter,base.model_ir_config_parameter,support_manager,1,0,0,0 access_res_users,support manager access res.users,base.model_res_users,support_manager,1,0,1,0 +access_menu_portal_website_support_ticket,website_support_myaccount.website.support.ticket,website_support.model_website_support_ticket,base.group_portal,1,1,0,0 +access_menu_portal_website_support_ticket_stage,website_support_myaccount.website.support.ticket.stage,website_support.model_website_support_ticket_stage,base.group_portal,1,1,0,0 +access_menu_portal_website_support_ticket_categories,website_support_myaccount.website.support.ticket.categories,website_support.model_website_support_ticket_categories,base.group_portal,1,1,0,0 access_website_support_sla_rule,support manager access website.support.sla.rule,model_website_support_sla_rule,support_manager,1,1,1,1 -access_website_support_sla_rule_condition,support manager access website.support.sla.rule.condition,model_website_support_sla_rule_condition,support_manager,1,1,1,1 \ No newline at end of file +access_website_support_sla_rule_condition,support manager access website.support.sla.rule.condition,model_website_support_sla_rule_condition,support_manager,1,1,1,1 diff --git a/website_support/security/website_support_security.xml b/website_support/security/website_support_security.xml new file mode 100644 index 000000000..325a49308 --- /dev/null +++ b/website_support/security/website_support_security.xml @@ -0,0 +1,30 @@ + + + + + + SLA + + + + + Groups and help pages + + + + + + + + Portal Personal Tickets Extends + + ['|', ('partner_id','=',user.partner_id.id), ('partner_id.parent_id','=',user.partner_id.id)] + + + + + + + + + diff --git a/website_support/static/description/index.html b/website_support/static/description/index.html index 28adf14ac..c665527b4 100644 --- a/website_support/static/description/index.html +++ b/website_support/static/description/index.html @@ -127,7 +127,7 @@

Email Integration

Email conversations are tracked for each ticket so customers can reply directly via email without ever having to go to the website or login.
Emails are automatically sent when a ticket category is changed or the ticket is closed by staff
-When the customer replies via email the ticket state is automatically set to 'Customer Replied' allowing you to easily see at a glance which tickets need attending to
+When the customer replies via email the ticket stage is automatically set to 'Customer Replied' allowing you to easily see at a glance which tickets need attending to
Operators can reply online via Customer Support->Support Tickets

Per Operator Instructions
diff --git a/website_support/views/email_templates.xml b/website_support/views/email_templates.xml index be8bc902c..788edb91f 100644 --- a/website_support/views/email_templates.xml +++ b/website_support/views/email_templates.xml @@ -1,6 +1,6 @@ - - + + Support Ticket Survey @@ -15,10 +15,10 @@

Dear ${object.person_name},

% endif

We would like to get your feedback on the support

-

here

+

here


Ticket Number: ${object.ticket_number or object.id}
- Ticket Category: + Ticket Category: % if object.category.name : ${object.category.name} % endif @@ -51,7 +51,7 @@ ]]> - + Support Ticket New Ticket (Category) @@ -74,7 +74,7 @@ Support Ticket User Change - ]]> + ]]> A Support Ticket has been assigned to you @@ -83,14 +83,14 @@

A support ticket has been assigned to you here are the details


Ticket Number: ${object.ticket_number or object.id}
- Ticket Category: + Ticket Category: % if object.category.name : ${object.category.name} % endif
Ticket Description:
${object.description|safe} - + ]]>
@@ -98,7 +98,7 @@ Support Ticket Category Change - ]]> + ]]> ${object.email|safe} Your support ticket has been updated @@ -108,14 +108,14 @@

Your support ticket has been updated and is now in the category '${object.category.name}'


Ticket Number: ${object.ticket_number or object.id}
- Ticket Category: + Ticket Category: % if object.category.name : ${object.category.name} % endif
Ticket Description:
${object.description|safe} - + ]]>
@@ -134,14 +134,14 @@

${object.close_comment or ''}


Ticket Number: ${object.ticket_number or object.id}
- Ticket Category: + Ticket Category: % if object.category.name : ${object.category.name} % endif
Ticket Description:
${object.description|safe} - + ]]>
@@ -160,16 +160,16 @@ % endif

Thank you for submitting a support ticket to us, we will get back to your shortly


- View Ticket Online: here
+ View Ticket Online: here
Ticket Number: ${object.ticket_number or object.id}
- Ticket Category: + Ticket Category: % if object.category.name : ${object.category.name} % endif
Ticket Description:
${object.description|safe} - + ]]> @@ -178,16 +178,14 @@ Support Ticket Reply Wrapper ${object.subject} - ${user.email|safe} + ${user.email|safe} ${object.email|safe} - % if object.ticket_id.portal_access_key : - View Ticket Online: here
- % endif + View Ticket Online: here
Ticket Number: ${object.ticket_id.ticket_number or object.ticket_id.id}
Ticket Category: ${object.ticket_id.category.name or ''}
% if object.ticket_id.planned_time_format : @@ -213,9 +211,12 @@
% endif -

Approval is required before we can proceed with this support request, please click the link below to accept

+

Approval is required before we can proceed with this support request, please click the botton below to accept


-

Approve | Don't Approve

+

+ Approve + Reject +

]]>
@@ -241,6 +242,6 @@ ]]>
- + - \ No newline at end of file + diff --git a/website_support/views/menus.xml b/website_support/views/menus.xml index 0c286806d..3fc8b563d 100644 --- a/website_support/views/menus.xml +++ b/website_support/views/menus.xml @@ -1,21 +1,19 @@ - + - + + - - - + + - - - - - + + + - \ No newline at end of file + diff --git a/website_support/views/res_partner_views.xml b/website_support/views/res_partner_views.xml index b6ebdcf01..707988551 100644 --- a/website_support/views/res_partner_views.xml +++ b/website_support/views/res_partner_views.xml @@ -1,5 +1,5 @@ - + @@ -28,4 +28,4 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/website_support/views/res_users_views.xml b/website_support/views/res_users_views.xml index bf62f632b..d5cd107f6 100644 --- a/website_support/views/res_users_views.xml +++ b/website_support/views/res_users_views.xml @@ -1,5 +1,5 @@ - + @@ -18,4 +18,4 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/website_support/views/website_support_help_groups_views.xml b/website_support/views/website_support_help_groups_views.xml index b06bd54bf..6bf4097a4 100644 --- a/website_support/views/website_support_help_groups_views.xml +++ b/website_support/views/website_support_help_groups_views.xml @@ -1,5 +1,5 @@ - + @@ -65,4 +65,4 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/website_support/views/website_support_help_page_views.xml b/website_support/views/website_support_help_page_views.xml index 1a5e7c182..b4a446a10 100644 --- a/website_support/views/website_support_help_page_views.xml +++ b/website_support/views/website_support_help_page_views.xml @@ -1,5 +1,5 @@ - + @@ -47,4 +47,4 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/website_support/views/website_support_settings_views.xml b/website_support/views/website_support_settings_views.xml index ce99b0c75..cfe659af6 100644 --- a/website_support/views/website_support_settings_views.xml +++ b/website_support/views/website_support_settings_views.xml @@ -1,40 +1,204 @@ - - - website.support.settings form view - website.support.settings - -
-
-
- - - - - - - - - - - - - - -
-
-
+ + + res.config.settings.view.form.inherit.website.support + res.config.settings + + + + +
+

Website support

+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+

Tickets

+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+

Email

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+ +

Performance

+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+ +
+

Self-Service

+
+
+
+ +
+
+
+
+ +
+
+ + + - Support Ticket Settings - website.support.settings - form - inline - + Settings + ir.actions.act_window + res.config.settings + form + inline + {'module' : 'website_support'} + - \ No newline at end of file + diff --git a/website_support/views/website_support_sla_views.xml b/website_support/views/website_support_sla_views.xml index ffcaf6e5a..e39654224 100644 --- a/website_support/views/website_support_sla_views.xml +++ b/website_support/views/website_support_sla_views.xml @@ -1,5 +1,5 @@ - + @@ -91,4 +91,4 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/website_support/views/website_support_ticket_categories_views.xml b/website_support/views/website_support_ticket_categories_views.xml index ef5a1cccf..9e08ae1ab 100644 --- a/website_support/views/website_support_ticket_categories_views.xml +++ b/website_support/views/website_support_ticket_categories_views.xml @@ -1,5 +1,5 @@ - + @@ -45,4 +45,4 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/website_support/views/website_support_ticket_close_views.xml b/website_support/views/website_support_ticket_close_views.xml index 37d27fec4..39e452136 100644 --- a/website_support/views/website_support_ticket_close_views.xml +++ b/website_support/views/website_support_ticket_close_views.xml @@ -1,5 +1,5 @@ - + @@ -20,4 +20,4 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/website_support/views/website_support_ticket_compose_views.xml b/website_support/views/website_support_ticket_compose_views.xml index 2fd2bac26..18ed27a90 100644 --- a/website_support/views/website_support_ticket_compose_views.xml +++ b/website_support/views/website_support_ticket_compose_views.xml @@ -1,5 +1,5 @@ - + @@ -14,7 +14,7 @@ - + @@ -36,4 +36,4 @@ - \ No newline at end of file + diff --git a/website_support/views/website_support_ticket_department_views.xml b/website_support/views/website_support_ticket_department_views.xml index 65c61a051..e202b100f 100644 --- a/website_support/views/website_support_ticket_department_views.xml +++ b/website_support/views/website_support_ticket_department_views.xml @@ -1,5 +1,5 @@ - + @@ -54,4 +54,4 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/website_support/views/website_support_ticket_priority_views.xml b/website_support/views/website_support_ticket_priority_views.xml deleted file mode 100644 index 09a43eed9..000000000 --- a/website_support/views/website_support_ticket_priority_views.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - website.support.ticket.priority.tree.view - website.support.ticket.priority - - - - - - - - - - - Support Ticket Priorities - website.support.ticket.priority - tree - -

- No Support Tickets priorities found -

-
-
- - - website.support.ticket.priority sequence - website.support.ticket.priority - - - - -
-
\ No newline at end of file diff --git a/website_support/views/website_support_ticket_stage_views.xml b/website_support/views/website_support_ticket_stage_views.xml new file mode 100644 index 000000000..1ad98f32a --- /dev/null +++ b/website_support/views/website_support_ticket_stage_views.xml @@ -0,0 +1,43 @@ + + + + + + + website.support.ticket.stage.tree.view + website.support.ticket.stage + + + + + + + + + + + + Support Ticket Stages + website.support.ticket.stage + form + tree + +

Create support ticket stage

+
+
+ +
+
diff --git a/website_support/views/website_support_ticket_states_views.xml b/website_support/views/website_support_ticket_states_views.xml deleted file mode 100644 index 321522903..000000000 --- a/website_support/views/website_support_ticket_states_views.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - website.support.ticket.states.form.view - website.support.ticket.states - -
- - - - - -
-
-
- - - website.support.ticket.states.tree.view - website.support.ticket.states - - - - - - - - - - - Support Ticket States - website.support.ticket.states - form - tree,form - -

Create support ticket state

-
-
- -
-
\ No newline at end of file diff --git a/website_support/views/website_support_ticket_subcategory_views.xml b/website_support/views/website_support_ticket_subcategory_views.xml index 50092cdeb..ec2644a41 100644 --- a/website_support/views/website_support_ticket_subcategory_views.xml +++ b/website_support/views/website_support_ticket_subcategory_views.xml @@ -1,5 +1,5 @@ - + @@ -26,7 +26,7 @@ website.support.ticket.subcategory - + @@ -51,4 +51,4 @@ - \ No newline at end of file + diff --git a/website_support/views/website_support_ticket_tag_views.xml b/website_support/views/website_support_ticket_tag_views.xml index c2a4eb190..55399b355 100644 --- a/website_support/views/website_support_ticket_tag_views.xml +++ b/website_support/views/website_support_ticket_tag_views.xml @@ -1,5 +1,5 @@ - + @@ -24,4 +24,4 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/website_support/views/website_support_ticket_templates.xml b/website_support/views/website_support_ticket_templates.xml index c061657ac..d704f5149 100644 --- a/website_support/views/website_support_ticket_templates.xml +++ b/website_support/views/website_support_ticket_templates.xml @@ -19,6 +19,33 @@ +