diff --git a/survey_deadline_autoclose/__init__.py b/survey_deadline_autoclose/__init__.py
new file mode 100644
index 0000000..0650744
--- /dev/null
+++ b/survey_deadline_autoclose/__init__.py
@@ -0,0 +1 @@
+from . import models
diff --git a/survey_deadline_autoclose/__manifest__.py b/survey_deadline_autoclose/__manifest__.py
new file mode 100644
index 0000000..89f3e9b
--- /dev/null
+++ b/survey_deadline_autoclose/__manifest__.py
@@ -0,0 +1,34 @@
+# -*- coding: utf-8 -*-
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+{
+ 'name': 'Survey deadline auto-close',
+ 'version': '0.1.0',
+ 'summary': """
+ The module adds a deadline date on surveys and a checkbox to automatically close them with a planned action.
+ """,
+ 'description': """ """,
+ 'author': 'Sudokeys',
+ 'website': 'http://www.sudokeys.com',
+ 'license': 'AGPL-3',
+ 'category': 'Marketing',
+ 'depends': [
+ 'survey',
+ ],
+ 'data': [
+ 'data/ir_cron.xml',
+ 'data/mail_message_subtype.xml',
+ 'views/survey_survey.xml',
+ ],
+ 'demo': [],
+ 'auto_install': False,
+ 'external_dependencies': [],
+ 'application': False,
+ 'css': [],
+ 'images': [],
+ 'js': [],
+ 'installable': True,
+ 'maintainer': 'Sudokeys',
+ 'pre_init_hook': '',
+ 'post_init_hook': '',
+ 'uninstall_hook': '',
+}
diff --git a/survey_deadline_autoclose/data/ir_cron.xml b/survey_deadline_autoclose/data/ir_cron.xml
new file mode 100644
index 0000000..a84dbdb
--- /dev/null
+++ b/survey_deadline_autoclose/data/ir_cron.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+ Clôture des sondages arrivés à échéance
+
+ code
+ model.action_close_survey()
+
+
+ 1
+ days
+
+ -1
+
+
+
+
+
diff --git a/survey_deadline_autoclose/data/mail_message_subtype.xml b/survey_deadline_autoclose/data/mail_message_subtype.xml
new file mode 100644
index 0000000..bbf9887
--- /dev/null
+++ b/survey_deadline_autoclose/data/mail_message_subtype.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+ Sondage Échu
+ survey.survey
+
+
+ Ce sondage est arrivé à échéance.
+
+
+
+ Sondage Clos
+ survey.survey
+
+
+ Ce sondage a été clôturé.
+
+
+
+
diff --git a/survey_deadline_autoclose/models/__init__.py b/survey_deadline_autoclose/models/__init__.py
new file mode 100644
index 0000000..38d56b9
--- /dev/null
+++ b/survey_deadline_autoclose/models/__init__.py
@@ -0,0 +1 @@
+from . import survey_survey
diff --git a/survey_deadline_autoclose/models/survey_survey.py b/survey_deadline_autoclose/models/survey_survey.py
new file mode 100644
index 0000000..2a18f72
--- /dev/null
+++ b/survey_deadline_autoclose/models/survey_survey.py
@@ -0,0 +1,53 @@
+from odoo import models, fields, api
+from odoo.exceptions import UserError
+
+
+class SurveySurvey(models.Model):
+ _inherit = 'survey.survey'
+
+ @api.model
+ def close_deadline_survey(self):
+ deadline = self.search([
+ ('date_deadline', '!=', False),
+ ('date_deadline', '<', fields.Date.today()),
+ ])
+ to_close = deadline.filtered('auto_close')
+ if to_close:
+ to_close.action_close_survey()
+ for survey in deadline - to_close:
+ survey.message_post(subtype='survey_deadline_autoclose.mail_message_subtype_survey_deadline')
+
+ date_deadline = fields.Date(string="Date d'échéance", help="Passé cette date, il ne sera plus possible de répondre au sondage.", copy=False)
+ auto_close = fields.Boolean(string="Clôture automatique à l'échéance", default=False)
+
+ # ACTIONS
+
+ @api.multi
+ def action_send_survey(self):
+ self.ensure_one()
+ action = super(SurveySurvey, self).action_send_survey()
+ action['context'].update({
+ 'default_date_deadline': self.date_deadline,
+ })
+ return action
+
+ @api.multi
+ def action_close_survey(self):
+ stage = self.env['survey.stage'].search([('closed', '=', True)], limit=1)
+ if not stage:
+ raise UserError("Aucun statut qualifié de \"fermé\" n'a été trouvé, l'opération demandée est impossible.")
+ self.write({
+ 'stage_id': stage.id
+ })
+ for survey in self:
+ survey.message_post(subtype='survey_deadline_autoclose.mail_message_subtype_survey_closed')
+
+ # ONCHANGES
+
+ @api.onchange('date_deadline')
+ def onchange_is_template(self):
+ self.ensure_one()
+ if not self.date_deadline:
+ self.auto_close = False
+ elif not self.auto_close:
+ self.auto_close = True
diff --git a/survey_deadline_autoclose/views/survey_survey.xml b/survey_deadline_autoclose/views/survey_survey.xml
new file mode 100644
index 0000000..a7ead6f
--- /dev/null
+++ b/survey_deadline_autoclose/views/survey_survey.xml
@@ -0,0 +1,67 @@
+
+
+
+
+ survey_deadline_autoclose survey.survey form
+ survey.survey
+
+ 25
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ survey_deadline_autoclose survey.survey tree
+ survey.survey
+
+ 25
+
+
+ is_closed
+
+
+
+
+
+
+
+
+
+
+
+
+ survey_deadline_autoclose survey.survey kanban
+ survey.survey
+
+ 20
+
+
+
+
+
+
+
+ Échéance :
+ Échéance :
+
+
+
+
+
+