diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000..7bff73183
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,105 @@
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+lib/
+lib64/
+parts/
+sdist/
+var/
+wheels/
+*.egg-info/
+.installed.cfg
+*.egg
+MANIFEST
+
+# PyInstaller
+# Usually these files are written by a python script from a template
+# before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*.cover
+.hypothesis/
+.pytest_cache/
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+local_settings.py
+db.sqlite3
+
+# Flask stuff:
+instance/
+.webassets-cache
+
+# Scrapy stuff:
+.scrapy
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+target/
+
+# Jupyter Notebook
+.ipynb_checkpoints
+
+# pyenv
+.python-version
+
+# celery beat schedule file
+celerybeat-schedule
+
+# SageMath parsed files
+*.sage.py
+
+# Environments
+.env
+.venv
+env/
+venv/
+ENV/
+env.bak/
+venv.bak/
+
+# Spyder project settings
+.spyderproject
+.spyproject
+
+# Rope project settings
+.ropeproject
+
+# mkdocs documentation
+/site
+
+# mypy
+.mypy_cache/
+
diff --git a/website_support/__manifest__.py b/website_support/__manifest__.py
index 42594e0ad..6a7949987 100644
--- a/website_support/__manifest__.py
+++ b/website_support/__manifest__.py
@@ -1,7 +1,7 @@
{
'name': "Website Help Desk / Support Ticket",
- 'version': "1.2.13",
- 'author': "Sythil Tech",
+ 'version': "1.2.14",
+ 'author': "Sythil Tech, Adaptive City",
'category': "Tools",
'support': "steven@sythiltech.com.au",
'summary': "A helpdesk / support ticket system for your website",
@@ -23,11 +23,11 @@
'views/website_support_help_groups_views.xml',
'views/website_support_help_page_views.xml',
'views/website_support_ticket_priority_views.xml',
- 'views/res_company_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.categories.xml',
'data/website.menu.csv',
diff --git a/website_support/data/website_support_sequence.xml b/website_support/data/website_support_sequence.xml
new file mode 100644
index 000000000..7cf170aaf
--- /dev/null
+++ b/website_support/data/website_support_sequence.xml
@@ -0,0 +1,14 @@
+
+
\n"
" % endif\n"
-" Ticket Number: ${object.ticket_id.id}
\n"
-" Ticket Category: ${object.ticket_id.category.name or ''}\n"
-"
\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"
+" Planned Date: ${object.ticket_id.planned_time_format}
\n"
+" % endif\n"
" Ticket Description:
\n"
" ${object.ticket_id.description|safe}\n"
" \n"
@@ -34,11 +36,13 @@ msgstr "\n"
" ${object.body|safe}\n"
"
Se requiere de aprobación antes de que podamos proceder con esta solicitudde 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 link a continuación para aceptar
\n" "Dear _user_name_,
\n" +" %if object.sla_timer > 0:\n" +"You have ${object.sla_timer_format} hours remaining for this ticket
\n" +" %endif\n" +" %if object.sla_timer < 0:\n" +"The SLA is currently ${object.sla_timer_format} hours overdue
\n" +" %endif\n" +"Person Name: ${object.person_name}
\n" +"Category: ${object.category.name}
\n" +"Subject: ${object.subject}
\n" +"${object.description|safe}
\n" +" \n" +" " +msgstr "\n" +"Estimado/a _user_name_,
\n" +" %if object.sla_timer > 0:\n" +"Le quedan ${object.sla_timer_format} horas restantes para sete ticket
\n" +" %endif\n" +" %if object.sla_timer < 0:\n" +"Su SLA se encuentra ${object.sla_timer_format} horas por encima del límite
\n" +" %endif\n" +"Nombre de la persona: ${object.person_name}
\n" +"Categoría: ${object.category.name}
\n" +"Asunto: ${object.subject}
\n" +"${object.description|safe}
\n" +" \n" +" " + #. module: website_support #: model:mail.template,body_html:website_support.new_support_ticket_category msgid "\n" @@ -316,6 +351,11 @@ msgstr "1 Estrella" msgid "2 Star" msgstr "2 Estrellas" +#. module: website_support +#: selection:website.support.sla.response,countdown_condition:0 +msgid "24 Hours" +msgstr "24 Hours" + #. module: website_support #: model:ir.ui.view,arch_db:website_support.help_page msgid "3 Star" @@ -394,11 +434,26 @@ msgstr "Añadir adjuntos" msgid "Additional Fields" msgstr "Campos adicionales" +#. module: website_support +#: model:ir.model.fields,field_description:website_support.field_website_support_sla_alert_alert_time +msgid "Alert Time" +msgstr "Hora de alerta" + +#. module: website_support +#: model:ir.ui.view,arch_db:website_support.support_ticket_view_list +msgid "All" +msgstr "Todos" + #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_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 +msgid "Allow Website Priority Set" +msgstr "Permitir set de prioridad de la página web" + #. module: website_support #: model:ir.ui.view,arch_db:website_support.website_support_settings_view_form msgid "Apply" @@ -444,6 +499,7 @@ msgstr "Nombre de archivo adjunto" #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_attachment +#: model:ir.ui.view,arch_db:website_support.website_support_ticket_view_form msgid "Attachments" msgstr "Adjuntos" @@ -466,7 +522,7 @@ msgstr "Volver al Inicio de sesión" #. module: website_support #: model:website.support.ticket.categories,name:website_support.website_support_billing_issues msgid "Billing Issues" -msgstr "Incidencias de facturación" +msgstr "Problemas de facturación" #. module: website_support #: model:ir.model.fields,field_description:website_support.field_email_template_preview_built_in @@ -474,6 +530,16 @@ msgstr "Incidencias de facturación" msgid "Built in" msgstr "Incorporado" +#. module: website_support +#: model:ir.model.fields,field_description:website_support.field_website_support_settings_business_hours_id +msgid "Business Hours" +msgstr "Horas laborales" + +#. module: website_support +#: selection:website.support.sla.response,countdown_condition:0 +msgid "Business Only" +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 @@ -511,6 +577,11 @@ msgstr "Categoría" msgid "Category Name" msgstr "Nombre de la categoría" +#. module: website_support +#: model:ir.model.fields,field_description:website_support.field_website_support_sla_response_time_ids +msgid "Category Response Times (Working Hours)" +msgstr "Tiempo de respuesta de la categoría (Horas laborales)" + #. module: website_support #: model:ir.model.fields,field_description:website_support.field_res_users_cat_user_ids #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_categories_cat_user_ids @@ -636,6 +707,11 @@ msgstr "Historial de conversación" msgid "Count" msgstr "Cuenta" +#. module: website_support +#: model:ir.model.fields,field_description:website_support.field_website_support_sla_response_countdown_condition +msgid "Countdown Condition" +msgstr "Condición de cuenta atrás" + #. module: website_support #: model:ir.ui.view,arch_db:website_support.support_help_pages msgid "Create Account" @@ -662,6 +738,11 @@ msgstr "Crear página de ayuda" msgid "Create a help page group" msgstr "Crear un grupo de páginas de ayuda" +#. module: website_support +#: model:ir.actions.act_window,help:website_support.website_support_sla_action +msgid "Create new SLA" +msgstr "Crear nuevo SLA" + #. module: website_support #: model:ir.actions.act_window,help:website_support.website_support_ticket_categories_action msgid "Create new category" @@ -697,6 +778,9 @@ 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_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 #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_approval_create_uid #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_categories_create_uid #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_close_create_uid @@ -722,6 +806,9 @@ msgstr "Creado por" #: 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 #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_approval_create_date #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_categories_create_date #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_close_create_date @@ -737,6 +824,13 @@ msgstr "Creado por" msgid "Created on" msgstr "Creado en" +#. module: website_support +#: model:ir.model.fields,help:website_support.field_website_support_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" +"Solo clientes = usuario registrado" + #. module: website_support #: selection:website.support.ticket.message,by:0 msgid "Customer" @@ -750,7 +844,7 @@ msgstr "Cerrado por cliente" #. module: website_support #: model:website.support.ticket.states,name:website_support.website_ticket_state_customer_replied msgid "Customer Replied" -msgstr "Contestación del cliente" +msgstr "Contestado por cliente" #. module: website_support #: model:ir.ui.menu,name:website_support.website_support_parent_menu @@ -779,8 +873,10 @@ msgid "Departments" 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.support_submit_ticket +#: model:ir.ui.view,arch_db:website_support.website_support_ticket_view_form msgid "Description" msgstr "Descripción" @@ -799,6 +895,9 @@ msgstr "URL de desaprobación" #: 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 #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_approval_display_name #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_categories_display_name #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_close_display_name @@ -818,9 +917,15 @@ msgstr "Nombre mostrado" #: 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.support_submit_ticket +#: selection:website.support.sla.alert,type:0 msgid "Email" msgstr "Correo electrónico" +#. module: website_support +#: model:ir.model.fields,field_description:website_support.field_website_support_sla_alert_ids +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 msgid "Email Default Category" @@ -831,11 +936,21 @@ msgstr "Categoría por defecto de correo electrónico" msgid "Email Templates" msgstr "Plantillas de correo electrónico" +#. module: website_support +#: selection:website.support.settings,allow_website_priority_set:0 +msgid "Everyone" +msgstr "Todos" + #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_extra_field_ids msgid "Extra Details" msgstr "Detalles extra" +#. module: website_support +#: model:ir.ui.view,arch_db:website_support.website_support_ticket_view_form +msgid "Extra Fields" +msgstr "Campos extra" + #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_help_page_feedback_ids #: model:ir.ui.view,arch_db:website_support.help_page @@ -867,6 +982,11 @@ msgstr "Texto de opinión" msgid "From" msgstr "De" +#. module: website_support +#: model:ir.model.fields,field_description:website_support.field_website_support_settings_google_recaptcha_active +msgid "Google reCAPTCHA Active" +msgstr "Google reCAPTCHA activo" + #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_help_page_group_id msgid "Group" @@ -911,14 +1031,17 @@ msgstr "Alto" #: 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_ticket_approval_id_6746 +#: 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_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_6816 +#: 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_subcategory_field_id #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_subcategory_id @@ -926,11 +1049,21 @@ msgstr "Alto" msgid "ID" msgstr "ID" +#. 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" + #. 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" +#. module: website_support +#: model:ir.model.fields,help:website_support.field_website_support_ticket_sla_alert_ids +msgid "Keep record of SLA alerts sent so we do not resend them" +msgstr "Mantener registro de las alertas de SLA enviadas para no enviarlas de nuevo" + #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_field_name #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_subcategory_field_name @@ -947,6 +1080,9 @@ msgstr "Descripción" #: 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 #: model:ir.model.fields,field_description:website_support.field_website_support_ticket___last_update #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_approval___last_update #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_categories___last_update @@ -972,6 +1108,9 @@ msgstr "Última modificación en" #: 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 #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_approval_write_uid #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_categories_write_uid #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_close_write_uid @@ -997,6 +1136,9 @@ msgstr "Última actualización por" #: 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 #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_approval_write_date #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_categories_write_date #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_close_write_date @@ -1015,7 +1157,7 @@ msgstr "Última actualización en" #. module: website_support #: model:website.support.ticket.priority,name:website_support.low msgid "Low" -msgstr "Bajo" +msgstr "Baja" #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_compose_template_id @@ -1077,6 +1219,7 @@ msgstr "Mis tickets" #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_department_name #: 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.ui.view,arch_db:website_support.support_submit_ticket msgid "Name" @@ -1109,15 +1252,10 @@ msgstr "Nuevo ticket de soporte para tu categoría" msgid "New Ticket Count" msgstr "Nuevo recuento de ticket" -#. module: website_support -#: model:ir.model.fields,field_description:website_support.field_res_company_next_support_ticket_number -msgid "Next Support Ticket Number" -msgstr "Siguiente número de ticket" - #. module: website_support #: model:website.support.ticket.approval,name:website_support.no_approval_required msgid "No Approval Required" -msgstr "No es necesaria aprobación" +msgstr "No se requiere aprobación" #. module: website_support #: model:ir.actions.act_window,help:website_support.website_support_ticket_tag_action @@ -1145,11 +1283,21 @@ msgstr "Normal" msgid "Number of Pages" msgstr "Número de páginas" +#. 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 msgid "Open" msgstr "Abierto" +#. module: website_support +#: model:ir.ui.view,arch_db:website_support.website_support_ticket_view_form +msgid "Open / Reply" +msgstr "Abrir / Responder" + #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_help_page_name msgid "Page Name" @@ -1170,17 +1318,32 @@ msgstr "Páginas" msgid "Parent Category" msgstr "Categoría padre" +#. module: website_support +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_parent_company_id +msgid "Parent Company" +msgstr "Compañía matriz" + #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_compose_partner_id #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_partner_id msgid "Partner" msgstr "Empresa" +#. module: website_support +#: selection:website.support.settings,allow_website_priority_set:0 +msgid "Partner Only" +msgstr "Solo cliente" + #. module: website_support #: model:ir.ui.view,arch_db:website_support.account_create msgid "Password" msgstr "Contraseña" +#. module: website_support +#: model:ir.ui.view,arch_db:website_support.website_support_ticket_view_form +msgid "Pause SLA" +msgstr "Pausar SLA" + #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_person_name msgid "Person Name" @@ -1192,6 +1355,11 @@ msgstr "Nombre de la persona" msgid "Planned Time" msgstr "Tiempo planificado" +#. module: website_support +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_planned_time_format +msgid "Planned Time Format" +msgstr "Formato de hora planificada" + #. module: website_support #: model:ir.ui.view,arch_db:website_support.support_ticket_survey_page msgid "Please give us feedback on our support service" @@ -1209,6 +1377,7 @@ msgstr "Prioridades" #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_priority_id +#: model:ir.ui.view,arch_db:website_support.support_submit_ticket msgid "Priority" msgstr "Prioridad" @@ -1258,11 +1427,66 @@ msgstr "Informes" msgid "Request Approval" msgstr "Solicitar aprobación" +#. module: website_support +#: model:ir.model.fields,field_description:website_support.field_website_support_sla_response_response_time +msgid "Response Time" +msgstr "Tiempo de respuesta" + +#. module: website_support +#: model:ir.ui.view,arch_db:website_support.website_support_ticket_view_form +msgid "Resume SLA" +msgstr "Reanudar SLA" + #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_department_contact_role msgid "Role" msgstr "Rol" +#. module: website_support +#: 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 +msgid "SLA" +msgstr "SLA" + +#. module: website_support +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_sla_active +msgid "SLA Active" +msgstr "SLA activo" + +#. module: website_support +#: model:mail.template,subject:website_support.support_ticket_sla_alert +msgid "SLA Alert" +msgstr "Alerta del SLA" + +#. module: website_support +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_sla_alert_ids +msgid "SLA Alerts" +msgstr "Alertas del SLA" + +#. module: website_support +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_sla_response_category_id +msgid "SLA Response Category" +msgstr "Categoría de respuesta del SLA" + +#. module: website_support +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_sla_timer +msgid "SLA Time Remaining" +msgstr "Tiempo restante del SLA" + +#. module: website_support +#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_sla_timer_format +msgid "SLA Timer Format" +msgstr "Formato del temporizador del SLA" + +#. module: website_support +#: model:ir.ui.menu,name:website_support.website_support_sla_menu +msgid "SLA's" +msgstr "SLA's" + #. module: website_support #: model:ir.ui.view,arch_db:website_support.support_help_pages msgid "Search" @@ -1294,6 +1518,7 @@ 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 msgid "Settings" msgstr "Ajustes" @@ -1316,7 +1541,7 @@ msgstr "Cerrado por los operarios" #. module: website_support #: model:website.support.ticket.states,name:website_support.website_ticket_state_staff_replied msgid "Staff Replied" -msgstr "Contestado por los operarios" +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 @@ -1332,7 +1557,7 @@ msgstr "Estado" #. module: website_support #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_states_name msgid "State Name" -msgstr "Nombre provincia" +msgstr "Nombre estado" #. module: website_support #: model:ir.ui.menu,name:website_support.website_support_ticket_states_menu @@ -1426,6 +1651,11 @@ msgstr "Correo electrónico de soporte" msgid "Support Rating" msgstr "Puntuación de soporte" +#. module: website_support +#: model:ir.actions.act_window,name:website_support.website_support_sla_action +msgid "Support SLA" +msgstr "SLA del 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 @@ -1494,7 +1724,6 @@ msgstr "Etiquetas del ticket de soporte" #. module: website_support #: model:ir.actions.act_window,name:website_support.website_support_ticket_action #: model:ir.actions.act_window,name:website_support.website_support_ticket_action_partner -#: model:ir.ui.menu,name:website_support.website_support_config_parent_menu #: model:ir.ui.menu,name:website_support.website_support_ticket_menu #: model:ir.ui.view,arch_db:website_support.view_partner_form_inherit_website_module msgid "Support Tickets" @@ -1537,6 +1766,16 @@ msgstr "Gracias" 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" + +#. 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" @@ -1560,11 +1799,6 @@ msgstr "ID de ticket" msgid "Ticket Number" msgstr "Número de ticket" -#. module: website_support -#: model:ir.model.fields,field_description:website_support.field_website_support_ticket_ticket_number_display -msgid "Ticket Number Display" -msgstr "Número de ticket a mostrar" - #. 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 @@ -1582,6 +1816,7 @@ msgid "Total Support Tickets:" msgstr "Total de tickets de soporte:" #. module: website_support +#: model:ir.model.fields,field_description:website_support.field_website_support_sla_alert_type #: model:ir.model.fields,field_description:website_support.field_website_support_ticket_subcategory_field_type msgid "Type" msgstr "Tipo" @@ -1592,6 +1827,7 @@ 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_unattended msgid "Unattended" msgstr "Desatendidos" @@ -1601,6 +1837,13 @@ msgstr "Desatendidos" msgid "Unattended Tickets" msgstr "Tickets desatendidos" +#. 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 +#: model:ir.cron,name:website_support.update_sla_timer +msgid "Update SLA Timer" +msgstr "Actualizar temporizador del SLA" + #. module: website_support #: model:website.support.ticket.priority,name:website_support.urgent msgid "Urgent" @@ -1698,6 +1941,21 @@ msgstr "Su ticket de soporte ha sido actualizado" msgid "e.g. John Doe" msgstr "Por ejemplo, John Smith" +#. module: website_support +#: model:ir.ui.view,arch_db:website_support.support_submit_ticket +msgid "reCAPTCHA" +msgstr "reCAPTCHA" + +#. module: website_support +#: model:ir.model.fields,field_description:website_support.field_website_support_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 +msgid "reCAPTCHA Secret Key" +msgstr "reCAPTCHA clave secreta" + #. module: website_support #: model:ir.model,name:website_support.model_website_support_department msgid "website.support.department" @@ -1743,6 +2001,21 @@ msgstr "website.support.help.page.feedback" 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" +msgstr "website.support.sla" + +#. module: website_support +#: model:ir.model,name:website_support.model_website_support_sla_alert +msgid "website.support.sla.alert" +msgstr "website.support.sla.alert" + +#. module: website_support +#: model:ir.model,name:website_support.model_website_support_sla_response +msgid "website.support.sla.response" +msgstr "website.support.sla.response" + #. module: website_support #: model:ir.model,name:website_support.model_website_support_ticket_approval msgid "website.support.ticket.approval" diff --git a/website_support/migrations/11.0.1.2.14/post-migration.py b/website_support/migrations/11.0.1.2.14/post-migration.py new file mode 100644 index 000000000..fd5870cd9 --- /dev/null +++ b/website_support/migrations/11.0.1.2.14/post-migration.py @@ -0,0 +1,16 @@ +def migrate(cr, version): + cr.execute('SELECT id, ticket_number_old FROM website_support_ticket') + # RUN THROUGH ALL TICKETS TO CONVERT NUMBERS INTO STRINGS + for record_id, old_number in cr.fetchall(): + new_number = str(old_number) + if new_number: + cr.execute('UPDATE website_support_ticket SET ticket_number=%s WHERE id=%s', + (new_number, record_id)) + + # SELECT MAX TICKET NUMBER TO UPDATE SEQUENCE + cr.execute('SELECT max(ticket_number_old) FROM website_support_ticket') + max_number = cr.fetchone() + cr.execute("UPDATE ir_sequence SET number_next=%s WHERE code='website.support.ticket'", (max_number+1, )) + + # DROP AUXILIAR COLUMN + cr.execute("ALTER TABLE website_support_ticket DROP COLUMN ticket_number_old") diff --git a/website_support/migrations/11.0.1.2.14/pre-migrate.py b/website_support/migrations/11.0.1.2.14/pre-migrate.py new file mode 100644 index 000000000..1f6e0fa2a --- /dev/null +++ b/website_support/migrations/11.0.1.2.14/pre-migrate.py @@ -0,0 +1,2 @@ +def migrate(cr, version): + cr.execute('ALTER TABLE website_support_ticket RENAME COLUMN ticket_number TO ticket_number_old') diff --git a/website_support/models/__init__.py b/website_support/models/__init__.py index 543b96510..30ec7c062 100644 --- a/website_support/models/__init__.py +++ b/website_support/models/__init__.py @@ -3,7 +3,6 @@ from . import website_support_ticket from . import res_partner from . import website_support_help -from . import res_company from . import website_support_settings from . import mail_template from . import website_support_department diff --git a/website_support/models/res_company.py b/website_support/models/res_company.py deleted file mode 100644 index 497afdb30..000000000 --- a/website_support/models/res_company.py +++ /dev/null @@ -1,8 +0,0 @@ -# -*- coding: utf-8 -*- -from openerp import api, fields, models - -class ResCompanyTicket(models.Model): - - _inherit = "res.company" - - next_support_ticket_number = fields.Integer(string="Next Support Ticket Number", default="51976386") \ No newline at end of file diff --git a/website_support/models/website_support_ticket.py b/website_support/models/website_support_ticket.py index 4af248456..da436ecd0 100644 --- a/website_support/models/website_support_ticket.py +++ b/website_support/models/website_support_ticket.py @@ -2,14 +2,15 @@ from openerp import api, fields, models from openerp import tools from random import randint -import math import datetime from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT, DEFAULT_SERVER_DATE_FORMAT -import logging -_logger = logging.getLogger(__name__) from odoo import SUPERUSER_ID from dateutil import tz +import logging +_logger = logging.getLogger(__name__) + + class WebsiteSupportTicket(models.Model): _name = "website.support.ticket" @@ -17,23 +18,27 @@ class WebsiteSupportTicket(models.Model): _order = "create_date desc" _rec_name = "subject" _inherit = ['mail.thread'] + _translate = True @api.model def _read_group_state(self, states, domain, order): """ Read group customization in order to display all the states 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') - customer_closed = self.env['ir.model.data'].get_object('website_support', 'website_ticket_state_customer_closed') + + 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') + 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') - + exclude_states = [staff_replied_state.id, customer_replied_state.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([('id','not in',exclude_states)], order=order, access_rights_uid=SUPERUSER_ID) state_ids = states._search([], order=order, access_rights_uid=SUPERUSER_ID) - + return states.browse(state_ids) def _default_state(self): @@ -59,17 +64,20 @@ 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") + state = fields.Many2one('website.support.ticket.states', group_expand='_read_group_state', default=_default_state, + string="State") 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") + 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") - ticket_number = fields.Integer(string="Ticket Number") - ticket_number_display = fields.Char(string="Ticket Number Display", compute="_compute_ticket_number_display") + 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') ) + 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") support_comment = fields.Text(string="Support Comment") close_comment = fields.Text(string="Close Comment") @@ -90,23 +98,29 @@ def _default_approval_id(self): 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="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_alert_ids = fields.Many2many('website.support.sla.alert', string="SLA Alerts", + help="Keep record of SLA alerts sent so we do not resend them") @api.one @api.depends('sla_timer') def _compute_sla_timer_format(self): - #Display negative hours in a positive format + # Display negative hours in a positive format self.sla_timer_format = '{0:02.0f}:{1:02.0f}'.format(*divmod(abs(self.sla_timer) * 60, 60)) @api.model def update_sla_timer(self): - - #Subtract 1 minute from the timer of all active SLA tickets, this includes going into negative - for active_sla_ticket in self.env['website.support.ticket'].search([('sla_active','=',True), ('sla_id','!=',False), ('sla_response_category_id','!=',False)]): - #If we only countdown during busines hours + # Subtract 1 minute from the timer of all active SLA tickets, this includes going into negative + for active_sla_ticket in self.env['website.support.ticket'].search([ + ('sla_active','=',True), + ('sla_id','!=',False), + ('sla_response_category_id','!=',False) + ]): + + # 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 + # 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') current_hour = datetime.datetime.now().hour current_minute = datetime.datetime.now().minute / 60 @@ -114,7 +128,7 @@ def update_sla_timer(self): day_of_week = datetime.datetime.now().weekday() 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 + # If holiday module is installed take into consideration holiday_module = self.env['ir.module.module'].search([('name','=','hr_public_holidays'), ('state','=','installed')]) if holiday_module: holiday_today = self.env['hr.holidays.public.line'].search([('date','=',datetime.datetime.now().date())]) @@ -158,11 +172,11 @@ def resume_sla(self): @api.one @api.depends('planned_time') def _compute_planned_time_format(self): - + #If it is assigned to the partner, use the partners timezone and date formatting if self.planned_time and self.partner_id and self.partner_id.lang: partner_language = self.env['res.lang'].search([('code','=', self.partner_id.lang)])[0] - + my_planned_time = datetime.datetime.strptime(self.planned_time, DEFAULT_SERVER_DATETIME_FORMAT) #If we have timezone information translate the planned date to local time otherwise UTC @@ -172,10 +186,10 @@ def _compute_planned_time_format(self): self.planned_time_format = local_time.strftime(partner_language.date_format + " " + partner_language.time_format) + " " + self.partner_id.tz else: self.planned_time_format = my_planned_time.strftime(partner_language.date_format + " " + partner_language.time_format) + " UTC" - + else: self.planned_time_format = self.planned_time - + @api.one def _compute_approve_url(self): self.approve_url = "/support/approve/" + str(self.id) @@ -187,12 +201,12 @@ def _compute_disapprove_url(self): @api.onchange('sub_category_id') def _onchange_sub_category_id(self): if self.sub_category_id: - + add_extra_fields = [] - + for extra_field in self.sub_category_id.additional_field_ids: add_extra_fields.append((0, 0, {'name': extra_field.name})) - + self.update({ 'extra_field_ids': add_extra_fields, }) @@ -255,14 +269,6 @@ def message_update(self, msg_dict, update_vals=None): return super(WebsiteSupportTicket, self).message_update(msg_dict, update_vals=update_vals) - @api.one - @api.depends('ticket_number') - def _compute_ticket_number_display(self): - if self.ticket_number: - self.ticket_number_display = str(self.id) + " / " + "{:,}".format( self.ticket_number ) - else: - self.ticket_number_display = self.id - @api.one @api.depends('state') def _compute_unattend(self): @@ -291,7 +297,7 @@ def request_approval(self): 'context': {'default_ticket_id': self.id, 'default_email': self.email, 'default_subject': self.subject, 'default_approval': True, 'default_body': request_message}, 'target': 'new' } - + @api.multi def open_close_ticket_wizard(self): @@ -313,14 +319,12 @@ def _needaction_domain_get(self): @api.model def create(self, vals): + # Get next ticket number from the sequence + vals['ticket_number'] = self.env['ir.sequence'].next_by_code('website.support.ticket') + new_id = super(WebsiteSupportTicket, self).create(vals) new_id.portal_access_key = randint(1000000000,2000000000) - - new_id.ticket_number = new_id.company_id.next_support_ticket_number - - #Add one to the next ticket number - new_id.company_id.next_support_ticket_number += 1 ticket_open_email_template = self.env['ir.model.data'].get_object('website_support', 'website_ticket_state_open').mail_template_id ticket_open_email_template.send_mail(new_id.id, True) @@ -442,10 +446,10 @@ class WebsiteSupportTicketSubCategories(models.Model): _order = "sequence asc" sequence = fields.Integer(string="Sequence") - name = fields.Char(required=True, translate=True, string='Sub Category Name') + name = fields.Char(required=True, translate=True, string='Sub Category Name') parent_category_id = fields.Many2one('website.support.ticket.categories', required=True, string="Parent Category") additional_field_ids = fields.One2many('website.support.ticket.subcategory.field', 'wsts_id', string="Additional Fields") - + @api.model def create(self, values): sequence=self.env['ir.sequence'].next_by_code('website.support.ticket.subcategory') diff --git a/website_support/views/menus.xml b/website_support/views/menus.xml index 8f1c4910e..984dafb86 100644 --- a/website_support/views/menus.xml +++ b/website_support/views/menus.xml @@ -2,10 +2,10 @@| By | Subject | Category | State | Create Date |
|---|---|---|---|---|
- No Support Tickets found -
-- No Support Tickets found -
-+ No Support Tickets found +
++ No Support Tickets found +
+