Skip to content

Commit b43dabb

Browse files
author
phucph
committed
[MIG] pos_ticket_send_by_mail: Migration to 18.0
1 parent 2bb537a commit b43dabb

22 files changed

+361
-522
lines changed

pos_ticket_send_by_mail/README.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ Contributors
2121
~~~~~~~~~~~~
2222

2323
* Iván Todorovich <ivan.todorovich@druidoo.io>
24+
* Phan Hong Phuc <phucph@trobz.com>
2425

2526
Maintainers
2627
~~~~~~~~~~~

pos_ticket_send_by_mail/__manifest__.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,27 @@
55

66
{
77
"name": "POS Receipt By Email",
8-
"version": "12.0.1.0.0",
8+
"version": "18.0.1.0.0",
99
"category": "Custom",
10-
"author": "Druidoo",
10+
"author": "Druidoo, Odoo Community Association (OCA)",
1111
"website": "https://github.com/OCA/pos",
1212
"license": "AGPL-3",
1313
"depends": [
1414
"point_of_sale",
1515
],
1616
"data": [
17-
"security/ir.model.access.csv",
1817
"views/report_paperformat.xml",
1918
"views/view_pos_config_settings.xml",
2019
"data/email_template_data.xml",
2120
"data/ir_cron_data.xml",
2221
"views/view_res_partner.xml",
2322
"views/report_receipt.xml",
24-
"static/src/xml/templates.xml",
2523
],
24+
"assets": {
25+
"point_of_sale._assets_pos": [
26+
"pos_ticket_send_by_mail/static/src/js/*",
27+
"pos_ticket_send_by_mail/static/src/xml/*",
28+
],
29+
},
2630
"installable": True,
2731
}

pos_ticket_send_by_mail/data/email_template_data.xml

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,28 @@
55
<field name="name">Send Received</field>
66
<field
77
name="email_from"
8-
>ticket@${object.user_id.company_id.email.split('@')[1] or ''|safe}</field>
8+
>{{ (object.user_id.company_id.email_formatted or user.email_formatted) }}</field>
99
<field
1010
name="subject"
11-
>${object.user_id.company_id.name} Received ${object.pos_reference and object.pos_reference.split(' ')[1] or ''}</field>
12-
<field name="partner_to">${object.partner_id.id}</field>
11+
>{{ object.user_id.company_id.name }} Received {{ object.pos_reference and object.pos_reference.split(' ')[1] or '' }}</field>
12+
<field name="partner_to">{{ object.partner_id.id }}</field>
1313
<field name="model_id" ref="point_of_sale.model_pos_order" />
14-
<field name="auto_delete" eval="True" />
1514
<field
16-
name="report_template"
17-
ref="pos_ticket_send_by_mail.action_report_pos_receipt"
15+
name="report_template_ids"
16+
eval="[(4, ref('pos_ticket_send_by_mail.action_report_pos_receipt'))]"
1817
/>
19-
<field name="report_name">Ticket ${object.pos_reference}</field>
20-
<field name="lang">${object.partner_id.lang}</field>
21-
<field
22-
name="body_html"
23-
><![CDATA[
24-
<p>Thank you for your visit !</p>
25-
<p>You will find your receipt ${object.pos_reference and object.pos_reference.split(' ')[1] or ''} attached.<p/>
26-
<p>Sincerely,</p>
27-
<p>The team of the cooperative</p>
28-
]]>
18+
<field name="auto_delete" eval="True" />
19+
<field name="lang">{{ object.partner_id.lang }}</field>
20+
<field name="body_html" type="html">
21+
<div>
22+
<p>Thank you for your visit !</p>
23+
<p>You will find your receipt <t
24+
t-out="object.pos_reference and object.pos_reference.split(' ')[1] or ''"
25+
/> attached.</p>
26+
<p />
27+
<p>Sincerely,</p>
28+
<p>The team of the cooperative</p>
29+
</div>
2930
</field>
3031
</record>
3132
</odoo>

pos_ticket_send_by_mail/data/ir_cron_data.xml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
<field name="name">Send Reciept via Email</field>
55
<field name="interval_number">1</field>
66
<field name="interval_type">minutes</field>
7-
<field name="numbercall">-1</field>
8-
<field name="doall" eval="False" />
97
<field name="model_id" ref="point_of_sale.model_pos_order" />
108
<field name="code">model._send_order_cron()</field>
119
<field name="state">code</field>

pos_ticket_send_by_mail/i18n/email_pos_receipt.pot

Lines changed: 0 additions & 109 deletions
This file was deleted.

pos_ticket_send_by_mail/models/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@
55

66
from . import res_partner
77
from . import pos_order
8+
from . import pos_config
89
from . import res_config_settings
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
from odoo import fields, models
2+
3+
4+
class PosConfig(models.Model):
5+
_inherit = "pos.config"
6+
7+
receipt_options = fields.Selection(
8+
[
9+
("1", "Do not send receipt via email"),
10+
("2", "Email receipt and print it"),
11+
(
12+
"3",
13+
"Email receipt and print it unless configured on user that \
14+
he only receives electronically",
15+
),
16+
("4", "Email receipt"),
17+
],
18+
string="Receipt",
19+
)

pos_ticket_send_by_mail/models/pos_order.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import logging
77

8+
import odoo
89
from odoo import api, fields, models
910

1011
_logger = logging.getLogger(__name__)
@@ -23,15 +24,21 @@ class PosOrder(models.Model):
2324
@api.model
2425
def _send_order_cron(self):
2526
_logger.info("------------------------------------------------------")
26-
mail_template = self.env.ref("pos_ticket_send_by_mail.email_send_pos_receipt")
27+
mail_template = self.env.ref(
28+
"pos_ticket_send_by_mail.email_send_pos_receipt",
29+
raise_if_not_found=False,
30+
)
31+
if not mail_template.exists():
32+
_logger.warning("No mail template found for sending ticket")
33+
return
2734
_logger.info("Start to send ticket")
2835
for order in self.search([("email_status", "=", "to_send")]):
2936
mail_template.send_mail(order.id, force_send=True)
3037
order.email_status = "sent"
3138
# Make sure we commit the change to not send ticket twice
32-
self.env.cr.commit()
39+
if not odoo.tools.config["test_enable"]:
40+
self.env.cr.commit() # pylint: disable=E8102
3341

34-
@api.multi
3542
def action_pos_order_paid(self):
3643
# Send e-receipt for the partner.
3744
# It depends on value of the field `receipt_option`
@@ -43,8 +50,7 @@ def action_pos_order_paid(self):
4350
return res
4451

4552
def _set_order_to_send(self):
46-
icp_sudo = self.env["ir.config_parameter"].sudo()
47-
receipt_options = icp_sudo.get_param("point_of_sale.receipt_options")
53+
receipt_options = self.config_id.receipt_options
4854
receipt_options = receipt_options and int(receipt_options) or False
4955
for order in self:
5056
if (

pos_ticket_send_by_mail/models/res_config_settings.py

Lines changed: 4 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
class ResConfigSettings(models.TransientModel):
1010
_inherit = "res.config.settings"
1111

12-
receipt_options = fields.Selection(
12+
pos_receipt_options = fields.Selection(
1313
[
1414
("1", "Do not send receipt via email"),
1515
("2", "Email receipt and print it"),
@@ -21,33 +21,13 @@ class ResConfigSettings(models.TransientModel):
2121
("4", "Email receipt"),
2222
],
2323
string="Receipt",
24-
config_parameter="point_of_sale.receipt_options",
24+
related="pos_config_id.receipt_options",
2525
)
2626

2727
@api.model
2828
def get_values(self):
2929
res = super().get_values()
30-
icp_sudo = self.env["ir.config_parameter"].sudo()
31-
receipt_options = icp_sudo.get_param("point_of_sale.receipt_options")
30+
IrConfigParameter = self.env["ir.config_parameter"].sudo()
31+
receipt_options = IrConfigParameter.get_param("point_of_sale.receipt_options")
3232
res.update(receipt_options=receipt_options)
3333
return res
34-
35-
@api.model
36-
def get_default_receipt_options(self):
37-
receipt_options = self.env["ir.values"].get_default(
38-
"res.config.settings", "receipt_options"
39-
)
40-
return {
41-
"receipt_options": receipt_options,
42-
}
43-
44-
@api.multi
45-
def set_default_receipt_options(self):
46-
self.ensure_one()
47-
return (
48-
self.env["ir.values"]
49-
.sudo()
50-
.set_default(
51-
"res.config.settings", "receipt_options", self.receipt_options or None
52-
)
53-
)

pos_ticket_send_by_mail/models/res_partner.py

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,24 @@
33
# @author: La Louve
44
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html
55

6-
from odoo import fields, models
6+
from odoo import api, fields, models
77

88

99
class ResPartner(models.Model):
1010
_inherit = "res.partner"
1111

12-
email_pos_receipt = fields.Boolean(
13-
string="E-receipt",
14-
default=False,
15-
help="If you tick this box and option 3 is selected for 'Receipt'\
16-
in point of sale settings, the user will only receive e-receipt ",
12+
pos_email_receipt = fields.Selection(
13+
[
14+
("email_pos_receipt", "E-receipt Only"),
15+
("no_email_pos_receipt", "No E-receipt"),
16+
],
17+
string="POS Email Receipt Preference",
18+
help="- E-receipt: The user will only receive e-receipt \n"
19+
"- No E-receipt: The user will not receive e-receipt",
1720
)
18-
no_email_pos_receipt = fields.Boolean(
19-
string="No E-receipt",
20-
default=False,
21-
help="If you tick this box, the user will not receive e-receipt ",
22-
)
23-
config_receipt_options = fields.Integer(compute="_compute_config_receipt_options")
2421

25-
def _compute_config_receipt_options(self):
26-
icp_sudo = self.env["ir.config_parameter"].sudo()
27-
receipt_options = icp_sudo.get_param("point_of_sale.receipt_options")
28-
receipt_options = receipt_options and int(receipt_options) or 0
29-
for record in self:
30-
record.config_receipt_options = receipt_options
22+
@api.model
23+
def _load_pos_data_fields(self, config_id):
24+
fields = super()._load_pos_data_fields(config_id)
25+
fields.append("email_pos_receipt")
26+
return fields

0 commit comments

Comments
 (0)