From be3b0070e8f914daccdaf7f58f806e067009ce72 Mon Sep 17 00:00:00 2001 From: Thibault Francois Date: Sun, 19 Jul 2020 22:28:19 +0200 Subject: [PATCH 01/31] [FIX] beesdoo_shift: dynamic selection field Add lambda so there is no more need to redefine field states Add parameter today to _get_irregular_worker_domain Move specific constrains to beesdoo_worker_status --- beesdoo_shift/models/cooperative_status.py | 13 +++--- beesdoo_shift/models/task.py | 40 +------------------ beesdoo_shift/views/cooperative_status.xml | 20 +++++----- .../models/cooperative_status.py | 3 +- beesdoo_worker_status/models/task.py | 40 +++++++++++++++++++ 5 files changed, 58 insertions(+), 58 deletions(-) diff --git a/beesdoo_shift/models/cooperative_status.py b/beesdoo_shift/models/cooperative_status.py index 5bb085fa2..5868be4cf 100644 --- a/beesdoo_shift/models/cooperative_status.py +++ b/beesdoo_shift/models/cooperative_status.py @@ -96,7 +96,7 @@ def _get_status(self): comodel_name="cooperative.exempt.reason", string="Exempt Reason" ) status = fields.Selection( - selection=_get_status, + selection=lambda x: x._get_status(), compute="_compute_status", string="Cooperative Status", translate=True, @@ -112,11 +112,10 @@ def _get_status(self): ) # Specific to irregular - irregular_start_date = fields.Date() # TODO migration script + irregular_start_date = fields.Date() irregular_absence_date = fields.Date() - irregular_absence_counter = ( - fields.Integer() - ) # TODO unsubscribe when reach -2 + irregular_absence_counter = fields.Integer() + future_alert_date = fields.Date(compute="_compute_future_alert_date") next_countdown_date = fields.Date(compute="_compute_next_countdown_date") @@ -356,7 +355,7 @@ def _cron_compute_counter_irregular(self, today=False): if not journal: journal = self.env["beesdoo.shift.journal"].create({"date": today}) - domain = self._get_irregular_worker_domain(today=today) + domain = self._get_irregular_worker_domain(today) irregular = self.search(domain) for status in irregular: delta = (today - status.irregular_start_date).days @@ -445,7 +444,7 @@ def _change_counter(self, data): # Irregular Cron implementation # ############################################### - def _get_irregular_worker_domain(self): + def _get_irregular_worker_domain(self, today): """ return the domain the give the list of valid irregular worker that should diff --git a/beesdoo_shift/models/task.py b/beesdoo_shift/models/task.py index f475e85ea..8fa52509b 100644 --- a/beesdoo_shift/models/task.py +++ b/beesdoo_shift/models/task.py @@ -61,7 +61,7 @@ def _get_final_state(self): ) end_time = fields.Datetime(track_visibility="always", required=True) state = fields.Selection( - selection=_get_selection_status, + selection=lambda x: x._get_selection_status(), default="open", required=True, track_visibility="onchange", @@ -98,20 +98,6 @@ def _compute_color(self): for rec in self: rec.color = self._get_color_mapping(rec.state) - def _compensation_validation(self, task): - """ - Raise a validation error if the fields is_regular and - is_compensation are not properly set. - """ - if task.is_regular == task.is_compensation or not ( - task.is_regular or task.is_compensation - ): - raise ValidationError( - _( - "You must choose between Regular Shift or " - "Compensation Shift." - ) - ) @api.constrains("state") def _lock_future_task(self): @@ -124,30 +110,6 @@ def _lock_future_task(self): ) ) - @api.constrains("is_regular", "is_compensation") - def _check_compensation(self): - for task in self: - if task.working_mode == "regular": - self._compensation_validation(task) - - @api.constrains("worker_id") - def _check_worker_id(self): - """ - When worker_id changes we need to check whether is_regular - and is_compensation are set correctly. - When worker_id is set to a worker that doesn't need field - is_regular and is_compensation, these two fields are set to - False. - """ - for task in self: - if task.working_mode == "regular": - self._compensation_validation(task) - else: - task.write({"is_regular": False, "is_compensation": False}) - if task.worker_id: - if task.worker_id == task.replaced_id: - raise UserError(_("A worker cannot replace himself.")) - def message_auto_subscribe(self, updated_fields, values=None): self._add_follower(values) return super(Task, self).message_auto_subscribe( diff --git a/beesdoo_shift/views/cooperative_status.xml b/beesdoo_shift/views/cooperative_status.xml index 83f4301e2..b8de5591b 100644 --- a/beesdoo_shift/views/cooperative_status.xml +++ b/beesdoo_shift/views/cooperative_status.xml @@ -194,16 +194,16 @@ cooperative.status - - - - - - - - - - + + + + + + + + + + diff --git a/beesdoo_worker_status/models/cooperative_status.py b/beesdoo_worker_status/models/cooperative_status.py index b9a696423..968877dd2 100644 --- a/beesdoo_worker_status/models/cooperative_status.py +++ b/beesdoo_worker_status/models/cooperative_status.py @@ -351,8 +351,7 @@ def _change_counter(self, data): # Irregular Cron implementation # ############################################### - def _get_irregular_worker_domain(self, **kwargs): - today = kwargs.get("today") or self.today + def _get_irregular_worker_domain(self, today): return [ "&", "&", diff --git a/beesdoo_worker_status/models/task.py b/beesdoo_worker_status/models/task.py index b4a9c5790..0ab075820 100644 --- a/beesdoo_worker_status/models/task.py +++ b/beesdoo_worker_status/models/task.py @@ -5,6 +5,46 @@ class Task(models.Model): _inherit = "beesdoo.shift.shift" + @api.constrains("worker_id") + def _check_worker_id(self): + """ + When worker_id changes we need to check whether is_regular + and is_compensation are set correctly. + When worker_id is set to a worker that doesn't need field + is_regular and is_compensation, these two fields are set to + False. + """ + for task in self: + if task.working_mode == "regular": + self._compensation_validation(task) + else: + task.write({"is_regular": False, "is_compensation": False}) + if task.worker_id: + if task.worker_id == task.replaced_id: + raise UserError(_("A worker cannot replace himself.")) + + def _compensation_validation(self, task): + """ + Raise a validation error if the fields is_regular and + is_compensation are not properly set. + """ + if task.is_regular == task.is_compensation or not ( + task.is_regular or task.is_compensation + ): + raise ValidationError( + _( + "You must choose between Regular Shift or " + "Compensation Shift." + ) + ) + + @api.constrains("is_regular", "is_compensation") + def _check_compensation(self): + for task in self: + if task.working_mode == "regular": + self._compensation_validation(task) + + ################################# # State Definition # ################################# From ad374d345fe0c51fb038b7af2e135c7c1e786990 Mon Sep 17 00:00:00 2001 From: Thibault Francois Date: Tue, 29 Dec 2020 16:23:09 +0100 Subject: [PATCH 02/31] [CLEAN] Remove beesdoo_base dependency The module beesdoo_product does not need to depend on bessdoo base that introduce a lot of specific field (ie: for the beescard on res.partner) --- beesdoo_product/__manifest__.py | 1 - 1 file changed, 1 deletion(-) diff --git a/beesdoo_product/__manifest__.py b/beesdoo_product/__manifest__.py index 0c0a179a5..5011a4a09 100644 --- a/beesdoo_product/__manifest__.py +++ b/beesdoo_product/__manifest__.py @@ -17,7 +17,6 @@ "category": "Sales", "version": "12.0.1.1.1", "depends": [ - "beesdoo_base", "product", "sale", "point_of_sale", From 9a033928b2f8a83da64831e6905b8e2aea9bf0a6 Mon Sep 17 00:00:00 2001 From: Thibault Francois Date: Tue, 29 Dec 2020 16:23:18 +0100 Subject: [PATCH 03/31] [FIX] beesdoo_product: do not raise in compute Don't raise an error in computed field, if the value does not allow to compute the field properly fallbaclk on default value raise an error may forbid the installation of the module --- beesdoo_product/models/beesdoo_product.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/beesdoo_product/models/beesdoo_product.py b/beesdoo_product/models/beesdoo_product.py index a9ab7967d..b6e8bbfdd 100644 --- a/beesdoo_product/models/beesdoo_product.py +++ b/beesdoo_product/models/beesdoo_product.py @@ -216,10 +216,7 @@ def _compute_total(self): return True elif len(taxes_included) > 1: - raise ValidationError( - _("Several tax strategies (price_include) defined for %s") - % product.name - ) + taxes_included = list(taxes_included)[:1] elif taxes_included.pop(): product.total_with_vat = product.list_price From 9748e5a2b4e8201be586959b9fac3fd3cd758c6c Mon Sep 17 00:00:00 2001 From: Thibault Francois Date: Tue, 29 Dec 2020 17:02:51 +0100 Subject: [PATCH 04/31] [ADD] beesdoo_product: add label report print label that take module specific field into account with the different criteria: Geo, ethic, bio etc.. --- beesdoo_product/__manifest__.py | 1 + beesdoo_product/report/label.xml | 79 ++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 beesdoo_product/report/label.xml diff --git a/beesdoo_product/__manifest__.py b/beesdoo_product/__manifest__.py index 5011a4a09..c2545b4d6 100644 --- a/beesdoo_product/__manifest__.py +++ b/beesdoo_product/__manifest__.py @@ -33,6 +33,7 @@ "views/sale_views.xml", "views/assets.xml", "views/res_config_settings.xml", + "report/label.xml", "wizard/views/adapt_sales_price_wizard_view.xml", "wizard/views/label_printing_utils.xml", "security/ir.model.access.csv", diff --git a/beesdoo_product/report/label.xml b/beesdoo_product/report/label.xml new file mode 100644 index 000000000..89e955716 --- /dev/null +++ b/beesdoo_product/report/label.xml @@ -0,0 +1,79 @@ + + + + + + + \ No newline at end of file From 5ac77b5e92a67906b00ba6716bd9806408e33db1 Mon Sep 17 00:00:00 2001 From: Thibault Francois Date: Sun, 17 Jan 2021 17:07:36 +0100 Subject: [PATCH 05/31] [MIG] Migrate receipt sent by email - Migrate code from V9 - Replace deleted standard qweb report by a new one --- beesdoo_pos_email_ticket/__init__.py | 1 + beesdoo_pos_email_ticket/__manifest__.py | 28 ++ beesdoo_pos_email_ticket/data/cron.xml | 14 + beesdoo_pos_email_ticket/data/email.xml | 161 +++++++ beesdoo_pos_email_ticket/i18n/fr_BE.po | 157 +++++++ beesdoo_pos_email_ticket/models/__init__.py | 1 + .../models/beesdoo_pos.py | 55 +++ .../readme/CONTRIBUTORS.rst | 3 + .../readme/DESCRIPTION.rst | 2 + .../static/description/index.html | 418 ++++++++++++++++++ .../static/src/css/beesdoo.css | 4 + .../static/src/js/beesdoo.js | 46 ++ .../static/src/xml/templates.xml | 13 + .../views/beesdoo_pos.xml | 10 + 14 files changed, 913 insertions(+) create mode 100644 beesdoo_pos_email_ticket/__init__.py create mode 100644 beesdoo_pos_email_ticket/__manifest__.py create mode 100644 beesdoo_pos_email_ticket/data/cron.xml create mode 100644 beesdoo_pos_email_ticket/data/email.xml create mode 100644 beesdoo_pos_email_ticket/i18n/fr_BE.po create mode 100644 beesdoo_pos_email_ticket/models/__init__.py create mode 100644 beesdoo_pos_email_ticket/models/beesdoo_pos.py create mode 100644 beesdoo_pos_email_ticket/readme/CONTRIBUTORS.rst create mode 100644 beesdoo_pos_email_ticket/readme/DESCRIPTION.rst create mode 100644 beesdoo_pos_email_ticket/static/description/index.html create mode 100644 beesdoo_pos_email_ticket/static/src/css/beesdoo.css create mode 100644 beesdoo_pos_email_ticket/static/src/js/beesdoo.js create mode 100644 beesdoo_pos_email_ticket/static/src/xml/templates.xml create mode 100644 beesdoo_pos_email_ticket/views/beesdoo_pos.xml diff --git a/beesdoo_pos_email_ticket/__init__.py b/beesdoo_pos_email_ticket/__init__.py new file mode 100644 index 000000000..0650744f6 --- /dev/null +++ b/beesdoo_pos_email_ticket/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/beesdoo_pos_email_ticket/__manifest__.py b/beesdoo_pos_email_ticket/__manifest__.py new file mode 100644 index 000000000..33e93335b --- /dev/null +++ b/beesdoo_pos_email_ticket/__manifest__.py @@ -0,0 +1,28 @@ +# Copyright 2017 - 2020 BEES coop SCRLfs +# - Elouan Lebars +# - Rémy Taymans +# - Vincent Van Rossem +# - Elise Dupont +# - Thibault François +# - Grégoire Leeuwerck +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +{ + "name": "Beescoop Send POS ticket by email", + "summary": """This module adds the eaters of the customer to the POS + ActionpadWidget and PaymentScreenWidget.""", + "author": "Beescoop - Cellule IT, Coop IT Easy SCRLfs", + "website": "https://github.com/beescoop/Obeesdoo", + "category": "Point Of Sale", + "version": "12.0.1.1.0", + "depends": ["point_of_sale"], + "data": [ + "views/beesdoo_pos.xml", + "data/cron.xml", + "data/email.xml", + ], + "qweb": [ + "static/src/xml/templates.xml" + ], + "installable": True, + "license": "AGPL-3", +} diff --git a/beesdoo_pos_email_ticket/data/cron.xml b/beesdoo_pos_email_ticket/data/cron.xml new file mode 100644 index 000000000..20fba1715 --- /dev/null +++ b/beesdoo_pos_email_ticket/data/cron.xml @@ -0,0 +1,14 @@ + + + send ticket + + code + model._send_order_cron() + 1 + minutes + -1 + + -1 + + + diff --git a/beesdoo_pos_email_ticket/data/email.xml b/beesdoo_pos_email_ticket/data/email.xml new file mode 100644 index 000000000..a4b6cc9cb --- /dev/null +++ b/beesdoo_pos_email_ticket/data/email.xml @@ -0,0 +1,161 @@ + + + + + Point Of Sale Receipt + + custom + 150 + 60 + Portrait + 3 + 3 + 3 + 3 + + 3 + 130 + + + + + + + + Envoyer Reçu + ${(object.user_id.email and '%s <%s>' % (object.user_id.name, object.user_id.email) or '')|safe} + ${object.pos_reference} + ${object.partner_id.id} + + + + Ticket ${object.pos_reference} + ${object.partner_id.lang} + + + + + \ No newline at end of file diff --git a/beesdoo_pos_email_ticket/i18n/fr_BE.po b/beesdoo_pos_email_ticket/i18n/fr_BE.po new file mode 100644 index 000000000..6613b3780 --- /dev/null +++ b/beesdoo_pos_email_ticket/i18n/fr_BE.po @@ -0,0 +1,157 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * beesdoo_pos_email_ticket +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-01-20 20:24+0000\n" +"PO-Revision-Date: 2021-01-20 20:24+0000\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: beesdoo_pos_email_ticket +#: model:mail.template,body_html:beesdoo_pos_email_ticket.email_send_ticket +msgid "\n" +"Votre Ticket ${object.pos_reference}\n" +" " +msgstr "\n" +"Votre Ticket ${object.pos_reference}\n" +"

" + +#. module: beesdoo_pos_email_ticket +#: model:mail.template,subject:beesdoo_pos_email_ticket.email_send_ticket +msgid "${object.pos_reference}" +msgstr "${object.pos_reference}" + +#. module: beesdoo_pos_email_ticket +#: model_terms:ir.ui.view,arch_db:beesdoo_pos_email_ticket.report_receipt +msgid "
\n" +" Date:" +msgstr "
\n" +" Date:" + +#. module: beesdoo_pos_email_ticket +#: model_terms:ir.ui.view,arch_db:beesdoo_pos_email_ticket.report_receipt +msgid "

\n" +" Cashier:" +msgstr "

\n" +" Servi par:" + +#. module: beesdoo_pos_email_ticket +#: model_terms:ir.ui.view,arch_db:beesdoo_pos_email_ticket.report_receipt +msgid "Total" +msgstr "Total" + +#. module: beesdoo_pos_email_ticket +#: model_terms:ir.ui.view,arch_db:beesdoo_pos_email_ticket.report_receipt +msgid "Amount" +msgstr "Montant" + +#. module: beesdoo_pos_email_ticket +#: code:addons/beesdoo_pos_email_ticket/models/beesdoo_pos.py:23 +#, python-format +msgid "Cannot send the ticket, no email address found on the client" +msgstr "Le ticket ne peut pas être envoyer, aucune adresse email trouvée sur le client" + +#. module: beesdoo_pos_email_ticket +#: model_terms:ir.ui.view,arch_db:beesdoo_pos_email_ticket.report_receipt +msgid "Change" +msgstr "Change" + +#. module: beesdoo_pos_email_ticket +#: model_terms:ir.ui.view,arch_db:beesdoo_pos_email_ticket.report_receipt +msgid "Customer:" +msgstr "Client:" + +#. module: beesdoo_pos_email_ticket +#: selection:pos.order,print_status:0 +msgid "Do not Print" +msgstr "Ne pas Imprimmer" + +#. module: beesdoo_pos_email_ticket +#: code:addons/beesdoo_pos_email_ticket/models/beesdoo_pos.py:21 +#, python-format +msgid "Error: no order found" +msgstr "Erreur: Commande non trouvée" + +#. module: beesdoo_pos_email_ticket +#: model_terms:ir.ui.view,arch_db:beesdoo_pos_email_ticket.report_receipt +msgid "Payment Mode" +msgstr "Mode de Payement" + +#. module: beesdoo_pos_email_ticket +#: model:ir.model,name:beesdoo_pos_email_ticket.model_pos_order +msgid "Point of Sale Orders" +msgstr "Commandes du point de vente" + +#. module: beesdoo_pos_email_ticket +#: model:ir.model.fields,field_description:beesdoo_pos_email_ticket.field_pos_order__print_status +msgid "Print Status" +msgstr "Status D'impression" + +#. module: beesdoo_pos_email_ticket +#: selection:pos.order,print_status:0 +msgid "Printed" +msgstr "Imprimmé" + +#. module: beesdoo_pos_email_ticket +#: model_terms:ir.ui.view,arch_db:beesdoo_pos_email_ticket.report_receipt +msgid "Product" +msgstr "Article" + +#. module: beesdoo_pos_email_ticket +#: model_terms:ir.ui.view,arch_db:beesdoo_pos_email_ticket.report_receipt +msgid "Quantity" +msgstr "Quantité" + +#. module: beesdoo_pos_email_ticket +#: model:ir.actions.report,name:beesdoo_pos_email_ticket.action_report_pos_receipt +msgid "Receipt" +msgstr "Reçu" + +#. module: beesdoo_pos_email_ticket +#. openerp-web +#: code:addons/beesdoo_pos_email_ticket/static/src/xml/templates.xml:6 +#, python-format +msgid "Send Receipt By Mail" +msgstr "Envoyer Reçu par Email" + +#. module: beesdoo_pos_email_ticket +#: model_terms:ir.ui.view,arch_db:beesdoo_pos_email_ticket.report_receipt +msgid "Taxes" +msgstr "Taxes" + +#. module: beesdoo_pos_email_ticket +#: model:mail.template,report_name:beesdoo_pos_email_ticket.email_send_ticket +msgid "Ticket ${object.pos_reference}" +msgstr "Reçu ${object.pos_reference}" + +#. module: beesdoo_pos_email_ticket +#: code:addons/beesdoo_pos_email_ticket/models/beesdoo_pos.py:26 +#, python-format +msgid "Ticket will be sent" +msgstr "Reçu sera envoyé" + +#. module: beesdoo_pos_email_ticket +#: selection:pos.order,print_status:0 +msgid "To print" +msgstr "A Imprimmer" + +#. module: beesdoo_pos_email_ticket +#: model_terms:ir.ui.view,arch_db:beesdoo_pos_email_ticket.report_receipt +msgid "Total" +msgstr "Total" + +#. module: beesdoo_pos_email_ticket +#: model:ir.actions.server,name:beesdoo_pos_email_ticket.ir_cron_sent_pos_ticket_ir_actions_server +#: model:ir.cron,cron_name:beesdoo_pos_email_ticket.ir_cron_sent_pos_ticket +#: model:ir.cron,name:beesdoo_pos_email_ticket.ir_cron_sent_pos_ticket +msgid "send ticket" +msgstr "envoyé reçu" + diff --git a/beesdoo_pos_email_ticket/models/__init__.py b/beesdoo_pos_email_ticket/models/__init__.py new file mode 100644 index 000000000..09371b222 --- /dev/null +++ b/beesdoo_pos_email_ticket/models/__init__.py @@ -0,0 +1 @@ +from . import beesdoo_pos diff --git a/beesdoo_pos_email_ticket/models/beesdoo_pos.py b/beesdoo_pos_email_ticket/models/beesdoo_pos.py new file mode 100644 index 000000000..a5d4a5813 --- /dev/null +++ b/beesdoo_pos_email_ticket/models/beesdoo_pos.py @@ -0,0 +1,55 @@ +import logging + +from odoo import api, models, fields +from odoo import _ + +_logger = logging.getLogger(__name__) + +class BeescoopPosOrder(models.Model): + + _inherit = 'pos.order' + + print_status = fields.Selection([('no_print', 'Do not Print'), + ('to_print', 'To print'), + ('printed', 'Printed')], + default="no_print", string="Print Status") + + @api.model + def send_order(self, receipt_name): + order = self.search([('pos_reference', '=', receipt_name)]) + if not order: + return _('Error: no order found') + if not order.partner_id.email: + return _('Cannot send the ticket, no email address found on the client') + order.print_status = 'to_print' + + return _("Ticket will be sent") + + def _send_order_cron(self): + mail_template = self.env.ref("beesdoo_pos_email_ticket.email_send_ticket") + _logger.info("Start to send ticket") + for order in self.search([('print_status', '=', 'to_print')]): + if not order.partner_id.email: + continue + + mail_template.send_mail(order.id, force_send=True) + order.print_status = 'printed' + #Make sure we commit the change to not send ticket twice + self.env.cr.commit() + + def _get_taxes_amount(self): + result = {} + for l in self.lines: + fpos = self.fiscal_position_id + tax_ids_after_fiscal_position = fpos.map_tax(l.tax_ids, l.product_id, l.order_id.partner_id) if fpos else l.tax_ids + price = l.price_unit * (1 - (l.discount or 0.0) / 100.0) + taxes = tax_ids_after_fiscal_position.compute_all(price, self.pricelist_id.currency_id, l.qty, product=l.product_id, partner=self.partner_id) + print(taxes) + for t in taxes['taxes']: + taxe = result.get(t['id'], {}) + taxe['name'] = t['name'] + taxe['amount'] = taxe.get('amount', 0) + t['amount'] + taxe['base'] = taxe.get('base', 0) + t['base'] + result[t['id']] = taxe + return result.values() + diff --git a/beesdoo_pos_email_ticket/readme/CONTRIBUTORS.rst b/beesdoo_pos_email_ticket/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..86827bccf --- /dev/null +++ b/beesdoo_pos_email_ticket/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* Beescoop - Cellule IT +* Coop IT Easy SCRLfs +* Thibault Francois diff --git a/beesdoo_pos_email_ticket/readme/DESCRIPTION.rst b/beesdoo_pos_email_ticket/readme/DESCRIPTION.rst new file mode 100644 index 000000000..044660400 --- /dev/null +++ b/beesdoo_pos_email_ticket/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +This module : +- adds a button after the payment step to send the pos ticket by email \ No newline at end of file diff --git a/beesdoo_pos_email_ticket/static/description/index.html b/beesdoo_pos_email_ticket/static/description/index.html new file mode 100644 index 000000000..5cae37060 --- /dev/null +++ b/beesdoo_pos_email_ticket/static/description/index.html @@ -0,0 +1,418 @@ + + + + + + +Beescoop Point of sale + + + +
+

Beescoop Point of sale

+ + +

Beta License: AGPL-3 beescoop/obeesdoo

+

This module : +- adds the eaters of the customer to the POS ActionpadWidget and PaymentScreenWidget. +- maintains “Available in POS” (available_in_pos) value when unchecking “Can be Sold” (sale_ok).

+

Table of contents

+ +
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Beescoop - Cellule IT
  • +
  • Coop IT Easy SCRLfs
  • +
+
+
+

Contributors

+
    +
  • Beescoop - Cellule IT
  • +
  • Coop IT Easy SCRLfs
  • +
+
+
+

Maintainers

+

This module is part of the beescoop/obeesdoo project on GitHub.

+

You are welcome to contribute.

+
+
+
+ + diff --git a/beesdoo_pos_email_ticket/static/src/css/beesdoo.css b/beesdoo_pos_email_ticket/static/src/css/beesdoo.css new file mode 100644 index 000000000..6091d42d2 --- /dev/null +++ b/beesdoo_pos_email_ticket/static/src/css/beesdoo.css @@ -0,0 +1,4 @@ +.message-send { + margin: 16px; + text-align: center; +} diff --git a/beesdoo_pos_email_ticket/static/src/js/beesdoo.js b/beesdoo_pos_email_ticket/static/src/js/beesdoo.js new file mode 100644 index 000000000..e63e8ed8c --- /dev/null +++ b/beesdoo_pos_email_ticket/static/src/js/beesdoo.js @@ -0,0 +1,46 @@ +odoo.define('beescoop.pos.ticket', function (require) { + "use strict"; + console.log("loading pos ticket") + var module = require("point_of_sale.screens"); + var rpc = require('web.rpc'); + + module.ReceiptScreenWidget = module.ReceiptScreenWidget.include({ + send : function() { + var self = this; + var loaded = new $.Deferred(); + var order = this.pos.get_order().name; + rpc.query({ + model: 'pos.order', + method: 'send_order', + args: [order], + kwargs: {}, + }, { + timeout: 10000, + shadow: false + }) + .then(function (message) { + var el = self.$('.message-send'); + el.empty(); + el.append('

' + message + '

'); + }).fail(function (type, error){ + var el = self.$('.message-send'); + el.empty(); + el.append('

' + "Could not send ticket" + '

'); + }); + }, + renderElement: function() { + var self = this; + this._super(); + this.$('.button.send').click(function(){ + if (!self._locked) { + self.send(); + } + }); + }, + show: function(){ + this._super(); + var self = this; + this.$('.message-send').empty(); + }, + }); +}); diff --git a/beesdoo_pos_email_ticket/static/src/xml/templates.xml b/beesdoo_pos_email_ticket/static/src/xml/templates.xml new file mode 100644 index 000000000..d39063bcc --- /dev/null +++ b/beesdoo_pos_email_ticket/static/src/xml/templates.xml @@ -0,0 +1,13 @@ + + + + +
+ + Send Receipt By Mail +
+
+
+
+
+
diff --git a/beesdoo_pos_email_ticket/views/beesdoo_pos.xml b/beesdoo_pos_email_ticket/views/beesdoo_pos.xml new file mode 100644 index 000000000..b3294959c --- /dev/null +++ b/beesdoo_pos_email_ticket/views/beesdoo_pos.xml @@ -0,0 +1,10 @@ + + + From 59289b77ed4ebb223f4aaf85c36fe0742e858570 Mon Sep 17 00:00:00 2001 From: Thibault Francois Date: Sun, 24 Jan 2021 21:36:54 +0100 Subject: [PATCH 06/31] [TYPO] beesdoo_pos: err -> error --- beesdoo_pos/static/src/js/beesdoo.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/beesdoo_pos/static/src/js/beesdoo.js b/beesdoo_pos/static/src/js/beesdoo.js index 350cdd08a..15a2e894a 100644 --- a/beesdoo_pos/static/src/js/beesdoo.js +++ b/beesdoo_pos/static/src/js/beesdoo.js @@ -111,7 +111,7 @@ odoo.define("beesdoo_pos.screens", function(require) { ); }) .fail(function(type, error) { - loaded.reject(err); + loaded.reject(error); }); }, From de86038cfc1b162eb09232bdb7275037e70fda56 Mon Sep 17 00:00:00 2001 From: Thibault Francois Date: Sun, 21 Mar 2021 14:27:12 +0100 Subject: [PATCH 07/31] Unit price on ticket --- beesdoo_pos_email_ticket/data/email.xml | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/beesdoo_pos_email_ticket/data/email.xml b/beesdoo_pos_email_ticket/data/email.xml index a4b6cc9cb..e663a7267 100644 --- a/beesdoo_pos_email_ticket/data/email.xml +++ b/beesdoo_pos_email_ticket/data/email.xml @@ -6,7 +6,7 @@ custom 150 - 60 + 65 Portrait 3 3 @@ -14,12 +14,13 @@ 3 3 - 130 + 140