diff --git a/send_invoice/__init__.py b/send_invoice/__init__.py
new file mode 100644
index 00000000000..d6210b1285d
--- /dev/null
+++ b/send_invoice/__init__.py
@@ -0,0 +1,3 @@
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from . import models
diff --git a/send_invoice/__manifest__.py b/send_invoice/__manifest__.py
new file mode 100644
index 00000000000..16fde1776fc
--- /dev/null
+++ b/send_invoice/__manifest__.py
@@ -0,0 +1,12 @@
+{
+ "name": "send invoice via mail",
+ "version": "1.0",
+ "author": "gasa",
+ "license": "LGPL-3",
+ "depends": ["account"],
+ "application": True,
+ "installable": True,
+ "data": [
+ "views/res_config_settings.xml"
+ ]
+}
diff --git a/send_invoice/models/__init__.py b/send_invoice/models/__init__.py
new file mode 100644
index 00000000000..4d22fc68fb2
--- /dev/null
+++ b/send_invoice/models/__init__.py
@@ -0,0 +1,4 @@
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from . import res_config_settings
+from . import send_email
diff --git a/send_invoice/models/res_config_settings.py b/send_invoice/models/res_config_settings.py
new file mode 100644
index 00000000000..c262e70868d
--- /dev/null
+++ b/send_invoice/models/res_config_settings.py
@@ -0,0 +1,8 @@
+from odoo import fields, models
+
+
+class ResConfigSettings(models.TransientModel):
+ _inherit = "res.config.settings"
+
+ send_invoice_via_email = fields.Integer(String="send invoice by email", config_parameter="send_invoice.send_invoice_via_email"
+)
diff --git a/send_invoice/models/send_email.py b/send_invoice/models/send_email.py
new file mode 100644
index 00000000000..be847cf7956
--- /dev/null
+++ b/send_invoice/models/send_email.py
@@ -0,0 +1,35 @@
+
+from odoo import models, fields
+from datetime import timedelta
+
+
+class SendEmail(models.Model):
+ _inherit = "account.move"
+
+ def _send_email_invoice(self):
+ """
+ Use sudo() to bypass access rights when reading system parameters.
+ Using sudo ensures the method can always retrieve the configuration
+ value regardless of the user's permissions.
+ """
+ hour = self.env['ir.config_parameter'].sudo().get_param('send_invoice.send_invoice_via_email')
+ if not hour:
+ return
+
+ try:
+ hour = int(hour)
+ except ValueError:
+ return
+
+ target_date = fields.Datetime.now() - timedelta(hours=hour)
+ invoices = self.search([
+ ('invoice_date', '=', target_date),
+ ('payment_state', '!=', 'paid'),
+ ('state', '=', 'posted')
+ ])
+ template = self.env.ref('account.email_template_edi_invoice', raise_if_not_found=False)
+ if not template:
+ return
+
+ for invoice in invoices:
+ template.send_mail(invoice.id, force_send=True)
diff --git a/send_invoice/views/ir_corn_send_email.xml b/send_invoice/views/ir_corn_send_email.xml
new file mode 100644
index 00000000000..0bcd4a2a6e1
--- /dev/null
+++ b/send_invoice/views/ir_corn_send_email.xml
@@ -0,0 +1,11 @@
+
+
+ Send Invoice Email
+
+ code
+ model._send_email_invoice()
+ 6
+ hours
+
+
+
diff --git a/send_invoice/views/res_config_settings.xml b/send_invoice/views/res_config_settings.xml
new file mode 100644
index 00000000000..b66d4559118
--- /dev/null
+++ b/send_invoice/views/res_config_settings.xml
@@ -0,0 +1,20 @@
+
+
+
+ res.config.settings.inherit.view.form
+ res.config.settings
+
+
+
+
+
+
+
+ hours
+
+
+
+
+
+