From 7b20284241a279e3b9fb0e29cbda4c2616e92ce2 Mon Sep 17 00:00:00 2001 From: Enric Tobella Date: Wed, 17 Jan 2024 11:27:49 +0100 Subject: [PATCH 1/5] [ADD] pos_order_copy --- pos_order_copy/README.rst | 79 ++++ pos_order_copy/__init__.py | 1 + pos_order_copy/__manifest__.py | 21 + pos_order_copy/i18n/pos_order_copy.pot | 108 +++++ pos_order_copy/models/__init__.py | 2 + pos_order_copy/models/pos_order.py | 18 + pos_order_copy/models/pos_session.py | 22 + pos_order_copy/pyproject.toml | 3 + pos_order_copy/readme/CONTRIBUTORS.md | 2 + pos_order_copy/readme/DESCRIPTION.md | 1 + pos_order_copy/static/description/icon.png | Bin 0 -> 9455 bytes pos_order_copy/static/description/index.html | 427 ++++++++++++++++++ .../app/product_screen/CopyOrderButton.esm.js | 25 + .../app/product_screen/CopyOrderButton.xml | 14 + .../static/src/app/store/pos_store.esm.js | 50 ++ .../app/ticket_screen/ticket_screen.esm.js | 14 + .../src/app/ticket_screen/ticket_screen.xml | 26 ++ 17 files changed, 813 insertions(+) create mode 100644 pos_order_copy/README.rst create mode 100644 pos_order_copy/__init__.py create mode 100644 pos_order_copy/__manifest__.py create mode 100644 pos_order_copy/i18n/pos_order_copy.pot create mode 100644 pos_order_copy/models/__init__.py create mode 100644 pos_order_copy/models/pos_order.py create mode 100644 pos_order_copy/models/pos_session.py create mode 100644 pos_order_copy/pyproject.toml create mode 100644 pos_order_copy/readme/CONTRIBUTORS.md create mode 100644 pos_order_copy/readme/DESCRIPTION.md create mode 100644 pos_order_copy/static/description/icon.png create mode 100644 pos_order_copy/static/description/index.html create mode 100644 pos_order_copy/static/src/app/product_screen/CopyOrderButton.esm.js create mode 100644 pos_order_copy/static/src/app/product_screen/CopyOrderButton.xml create mode 100644 pos_order_copy/static/src/app/store/pos_store.esm.js create mode 100644 pos_order_copy/static/src/app/ticket_screen/ticket_screen.esm.js create mode 100644 pos_order_copy/static/src/app/ticket_screen/ticket_screen.xml diff --git a/pos_order_copy/README.rst b/pos_order_copy/README.rst new file mode 100644 index 0000000000..508a0cff4a --- /dev/null +++ b/pos_order_copy/README.rst @@ -0,0 +1,79 @@ +============== +Pos Order Copy +============== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:e364bed966a3064bc5f20442ec0663ea0678e280b5904781033072fedf94b4b0 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpos-lightgray.png?logo=github + :target: https://github.com/OCA/pos/tree/17.0/pos_order_copy + :alt: OCA/pos +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/pos-17-0/pos-17-0-pos_order_copy + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/pos&target_branch=17.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Copy orders on point of sale view. + +**Table of contents** + +.. contents:: + :local: + +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 to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* Dixmit +* INVITU + +Contributors +------------ + +- Dixmit + + - Enric Tobella + +Maintainers +----------- + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/pos `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/pos_order_copy/__init__.py b/pos_order_copy/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/pos_order_copy/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/pos_order_copy/__manifest__.py b/pos_order_copy/__manifest__.py new file mode 100644 index 0000000000..dbc0aa3f77 --- /dev/null +++ b/pos_order_copy/__manifest__.py @@ -0,0 +1,21 @@ +# Copyright 2024 Dixmit,INVITU +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + "name": "Pos Order Copy", + "summary": """ + Copy Orders from PoS Frontend""", + "version": "17.0.1.0.0", + "license": "AGPL-3", + "author": "Dixmit,INVITU,Odoo Community Association (OCA)", + "website": "https://github.com/OCA/pos", + "depends": ["point_of_sale"], + "assets": { + "point_of_sale._assets_pos": [ + "pos_order_copy/static/src/**/*.js", + "pos_order_copy/static/src/**/*.xml", + ], + }, + "data": [], + "demo": [], +} diff --git a/pos_order_copy/i18n/pos_order_copy.pot b/pos_order_copy/i18n/pos_order_copy.pot new file mode 100644 index 0000000000..d05b5b97cf --- /dev/null +++ b/pos_order_copy/i18n/pos_order_copy.pot @@ -0,0 +1,108 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * pos_order_copy +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \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: pos_order_copy +#: model:ir.model.fields,help:pos_order_copy.field_pos_order__ticket_code +msgid "" +"5 digits alphanumeric code to be used by portal user to request an invoice" +msgstr "" + +#. module: pos_order_copy +#: model:ir.model.fields,help:pos_order_copy.field_pos_order__sequence_number +msgid "A session-unique sequence number for the order" +msgstr "" + +#. module: pos_order_copy +#: model:ir.model.fields,field_description:pos_order_copy.field_pos_order__date_order +msgid "Date" +msgstr "" + +#. module: pos_order_copy +#. odoo-javascript +#: code:addons/pos_order_copy/static/src/app/product_screen/CopyOrderButton.xml:0 +#: code:addons/pos_order_copy/static/src/app/ticket_screen/ticket_screen.xml:0 +#: code:addons/pos_order_copy/static/src/app/ticket_screen/ticket_screen.xml:0 +#, python-format +msgid "Duplicate Order" +msgstr "" + +#. module: pos_order_copy +#: model:ir.model.fields,field_description:pos_order_copy.field_pos_order__is_tipped +msgid "Is this already tipped?" +msgstr "" + +#. module: pos_order_copy +#: model:ir.model.fields,field_description:pos_order_copy.field_pos_order__last_order_preparation_change +msgid "Last preparation change" +msgstr "" + +#. module: pos_order_copy +#: model:ir.model.fields,help:pos_order_copy.field_pos_order__last_order_preparation_change +msgid "Last printed state of the order" +msgstr "" + +#. module: pos_order_copy +#. odoo-javascript +#: code:addons/pos_order_copy/static/src/app/store/pos_store.esm.js:0 +#, python-format +msgid "Order %s" +msgstr "" + +#. module: pos_order_copy +#: model:ir.model.fields,help:pos_order_copy.field_pos_order__user_id +msgid "" +"Person who uses the cash register. It can be a reliever, a student or an " +"interim employee." +msgstr "" + +#. module: pos_order_copy +#: model:ir.model,name:pos_order_copy.model_pos_order +msgid "Point of Sale Orders" +msgstr "" + +#. module: pos_order_copy +#: model:ir.model,name:pos_order_copy.model_pos_session +msgid "Point of Sale Session" +msgstr "" + +#. module: pos_order_copy +#: model:ir.model.fields,field_description:pos_order_copy.field_pos_order__user_id +msgid "Responsible" +msgstr "" + +#. module: pos_order_copy +#: model:ir.model.fields,field_description:pos_order_copy.field_pos_order__sequence_number +msgid "Sequence Number" +msgstr "" + +#. module: pos_order_copy +#: model:ir.model.fields,field_description:pos_order_copy.field_pos_order__session_id +msgid "Session" +msgstr "" + +#. module: pos_order_copy +#: model:ir.model.fields,field_description:pos_order_copy.field_pos_order__shipping_date +msgid "Shipping Date" +msgstr "" + +#. module: pos_order_copy +#: model:ir.model.fields,field_description:pos_order_copy.field_pos_order__ticket_code +msgid "Ticket Code" +msgstr "" + +#. module: pos_order_copy +#: model:ir.model.fields,field_description:pos_order_copy.field_pos_order__tip_amount +msgid "Tip Amount" +msgstr "" diff --git a/pos_order_copy/models/__init__.py b/pos_order_copy/models/__init__.py new file mode 100644 index 0000000000..b2f4b5e054 --- /dev/null +++ b/pos_order_copy/models/__init__.py @@ -0,0 +1,2 @@ +from . import pos_order +from . import pos_session diff --git a/pos_order_copy/models/pos_order.py b/pos_order_copy/models/pos_order.py new file mode 100644 index 0000000000..6044d37b39 --- /dev/null +++ b/pos_order_copy/models/pos_order.py @@ -0,0 +1,18 @@ +# Copyright 2024 Dixmit +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class PosOrder(models.Model): + _inherit = "pos.order" + + date_order = fields.Datetime(copy=False) + user_id = fields.Many2one(copy=False) + last_order_preparation_change = fields.Char(copy=False) + sequence_number = fields.Integer(copy=False) + session_id = fields.Many2one(copy=False) + shipping_date = fields.Date(copy=False) + is_tipped = fields.Boolean(copy=False) + tip_amount = fields.Float(copy=False) + ticket_code = fields.Char(copy=False) diff --git a/pos_order_copy/models/pos_session.py b/pos_order_copy/models/pos_session.py new file mode 100644 index 0000000000..f482ce8ab7 --- /dev/null +++ b/pos_order_copy/models/pos_session.py @@ -0,0 +1,22 @@ +# Copyright 2024 Dixmit +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import models + + +class PosSession(models.Model): + _inherit = "pos.session" + + def _pos_data_process(self, loaded_data): + result = super()._pos_data_process(loaded_data) + loaded_data["pos_order_copy_fields"] = [ + field_name + for field_name, field in self.env["pos.order"]._fields.items() + if field.copy and field.store and not field.automatic and not field.compute + ] + loaded_data["pos_order_line_copy_fields"] = [ + field_name + for field_name, field in self.env["pos.order.line"]._fields.items() + if field.copy and field.store and not field.automatic and not field.compute + ] + return result diff --git a/pos_order_copy/pyproject.toml b/pos_order_copy/pyproject.toml new file mode 100644 index 0000000000..4231d0cccb --- /dev/null +++ b/pos_order_copy/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/pos_order_copy/readme/CONTRIBUTORS.md b/pos_order_copy/readme/CONTRIBUTORS.md new file mode 100644 index 0000000000..0082723f81 --- /dev/null +++ b/pos_order_copy/readme/CONTRIBUTORS.md @@ -0,0 +1,2 @@ + - Dixmit + - Enric Tobella diff --git a/pos_order_copy/readme/DESCRIPTION.md b/pos_order_copy/readme/DESCRIPTION.md new file mode 100644 index 0000000000..9d959d90f8 --- /dev/null +++ b/pos_order_copy/readme/DESCRIPTION.md @@ -0,0 +1 @@ +Copy orders on point of sale view. diff --git a/pos_order_copy/static/description/icon.png b/pos_order_copy/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/pos_order_copy/static/description/index.html b/pos_order_copy/static/description/index.html new file mode 100644 index 0000000000..0b6a8c7ef7 --- /dev/null +++ b/pos_order_copy/static/description/index.html @@ -0,0 +1,427 @@ + + + + + +Pos Order Copy + + + +
+

Pos Order Copy

+ + +

Beta License: AGPL-3 OCA/pos Translate me on Weblate Try me on Runboat

+

Copy orders on point of sale view.

+

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 to smash it by providing a detailed and welcomed +feedback.

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • Dixmit
  • +
  • INVITU
  • +
+
+
+

Contributors

+
    +
  • Dixmit
      +
    • Enric Tobella
    • +
    +
  • +
+
+
+

Maintainers

+

This module is maintained by the OCA.

+ +Odoo Community Association + +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/pos project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/pos_order_copy/static/src/app/product_screen/CopyOrderButton.esm.js b/pos_order_copy/static/src/app/product_screen/CopyOrderButton.esm.js new file mode 100644 index 0000000000..cc77672a8c --- /dev/null +++ b/pos_order_copy/static/src/app/product_screen/CopyOrderButton.esm.js @@ -0,0 +1,25 @@ +/** @odoo-module */ +/* + Copyright 2024 Dixmit + License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +*/ +import {Component} from "@odoo/owl"; +import {ProductScreen} from "@point_of_sale/app/screens/product_screen/product_screen"; +import {usePos} from "@point_of_sale/app/store/pos_hook"; + +export class CopyOrderButton extends Component { + setup() { + this.pos = usePos(); + } + + onClick() { + var order = this.pos.get_order(); + this.pos.copy_on_new_order(order); + this.pos.showScreen("ProductScreen"); + } +} +CopyOrderButton.template = "pos_order_copy.CopyOrderButton"; + +ProductScreen.addControlButton({ + component: CopyOrderButton, +}); diff --git a/pos_order_copy/static/src/app/product_screen/CopyOrderButton.xml b/pos_order_copy/static/src/app/product_screen/CopyOrderButton.xml new file mode 100644 index 0000000000..7d2f5a6296 --- /dev/null +++ b/pos_order_copy/static/src/app/product_screen/CopyOrderButton.xml @@ -0,0 +1,14 @@ + + + +
+ + + Duplicate Order +
+
+
diff --git a/pos_order_copy/static/src/app/store/pos_store.esm.js b/pos_order_copy/static/src/app/store/pos_store.esm.js new file mode 100644 index 0000000000..02e81ad87f --- /dev/null +++ b/pos_order_copy/static/src/app/store/pos_store.esm.js @@ -0,0 +1,50 @@ +/** @odoo-module */ +/* + Copyright 2024 Dixmit + License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +*/ +import {PosStore} from "@point_of_sale/app/store/pos_store"; +import {_t} from "@web/core/l10n/translation"; +import {patch} from "@web/core/utils/patch"; +import {uuidv4} from "@point_of_sale/utils"; + +patch(PosStore.prototype, { + async copy_on_new_order(currentOrder) { + if (!currentOrder) { + return; + } + if (this.isOpenOrderShareable()) { + this.sendDraftToServer(); + } + var json = currentOrder.export_as_JSON(); + if (this.selectedOrder) { + this.selectedOrder.firstDraft = false; + this.selectedOrder.updateSavedQuantity(); + } + var newJson = { + lines: [], + statement_ids: [], + }; + for (var field of Object.values(this.pos_order_copy_fields)) { + if (field !== "lines" && json[field] !== undefined) { + newJson[field] = json[field]; + } + } + const newOrder = this.createReactiveOrder(newJson); + // We need to enforce some fields to be the standard ones + newOrder.date_order = luxon.DateTime.now(); + newOrder.sequence_number = this.pos_session.sequence_number++; + newOrder.access_token = uuidv4(); + newOrder.ticketCode = newOrder._generateTicketCode(); + newOrder.uid = newOrder.generate_unique_id(); + newOrder.name = _t("Order %s", newOrder.uid); + this.orders.add(newOrder); + this.selectedOrder = newOrder; + return newOrder; + }, + async _processData(loadedData) { + await super._processData(...arguments); + this.pos_order_copy_fields = loadedData.pos_order_copy_fields; + this.pos_order_line_copy_fields = loadedData.pos_order_line_copy_fields; + }, +}); diff --git a/pos_order_copy/static/src/app/ticket_screen/ticket_screen.esm.js b/pos_order_copy/static/src/app/ticket_screen/ticket_screen.esm.js new file mode 100644 index 0000000000..f55475c565 --- /dev/null +++ b/pos_order_copy/static/src/app/ticket_screen/ticket_screen.esm.js @@ -0,0 +1,14 @@ +/** @odoo-module */ +/* + Copyright 2024 Dixmit + License OPL-1.0 or later (https://www.odoo.com/documentation/15.0/es/legal/licenses.html#odoo-apps). +*/ +import {TicketScreen} from "@point_of_sale/app/screens/ticket_screen/ticket_screen"; +import {patch} from "@web/core/utils/patch"; + +patch(TicketScreen.prototype, { + _copyOrder(order) { + this.pos.copy_on_new_order(order); + this.pos.showScreen("ProductScreen"); + }, +}); diff --git a/pos_order_copy/static/src/app/ticket_screen/ticket_screen.xml b/pos_order_copy/static/src/app/ticket_screen/ticket_screen.xml new file mode 100644 index 0000000000..68b6f94c5e --- /dev/null +++ b/pos_order_copy/static/src/app/ticket_screen/ticket_screen.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + From bdd7f56aca85833c67f5ac6691c1eed2716a5e9b Mon Sep 17 00:00:00 2001 From: mymage Date: Mon, 4 Nov 2024 08:42:30 +0000 Subject: [PATCH 2/5] Added translation using Weblate (Italian) --- pos_order_copy/i18n/it.po | 109 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 pos_order_copy/i18n/it.po diff --git a/pos_order_copy/i18n/it.po b/pos_order_copy/i18n/it.po new file mode 100644 index 0000000000..f5cbbf1952 --- /dev/null +++ b/pos_order_copy/i18n/it.po @@ -0,0 +1,109 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * pos_order_copy +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. module: pos_order_copy +#: model:ir.model.fields,help:pos_order_copy.field_pos_order__ticket_code +msgid "" +"5 digits alphanumeric code to be used by portal user to request an invoice" +msgstr "" + +#. module: pos_order_copy +#: model:ir.model.fields,help:pos_order_copy.field_pos_order__sequence_number +msgid "A session-unique sequence number for the order" +msgstr "" + +#. module: pos_order_copy +#: model:ir.model.fields,field_description:pos_order_copy.field_pos_order__date_order +msgid "Date" +msgstr "" + +#. module: pos_order_copy +#. odoo-javascript +#: code:addons/pos_order_copy/static/src/app/product_screen/CopyOrderButton.xml:0 +#: code:addons/pos_order_copy/static/src/app/ticket_screen/ticket_screen.xml:0 +#: code:addons/pos_order_copy/static/src/app/ticket_screen/ticket_screen.xml:0 +#, python-format +msgid "Duplicate Order" +msgstr "" + +#. module: pos_order_copy +#: model:ir.model.fields,field_description:pos_order_copy.field_pos_order__is_tipped +msgid "Is this already tipped?" +msgstr "" + +#. module: pos_order_copy +#: model:ir.model.fields,field_description:pos_order_copy.field_pos_order__last_order_preparation_change +msgid "Last preparation change" +msgstr "" + +#. module: pos_order_copy +#: model:ir.model.fields,help:pos_order_copy.field_pos_order__last_order_preparation_change +msgid "Last printed state of the order" +msgstr "" + +#. module: pos_order_copy +#. odoo-javascript +#: code:addons/pos_order_copy/static/src/app/store/pos_store.esm.js:0 +#, python-format +msgid "Order %s" +msgstr "" + +#. module: pos_order_copy +#: model:ir.model.fields,help:pos_order_copy.field_pos_order__user_id +msgid "" +"Person who uses the cash register. It can be a reliever, a student or an " +"interim employee." +msgstr "" + +#. module: pos_order_copy +#: model:ir.model,name:pos_order_copy.model_pos_order +msgid "Point of Sale Orders" +msgstr "" + +#. module: pos_order_copy +#: model:ir.model,name:pos_order_copy.model_pos_session +msgid "Point of Sale Session" +msgstr "" + +#. module: pos_order_copy +#: model:ir.model.fields,field_description:pos_order_copy.field_pos_order__user_id +msgid "Responsible" +msgstr "" + +#. module: pos_order_copy +#: model:ir.model.fields,field_description:pos_order_copy.field_pos_order__sequence_number +msgid "Sequence Number" +msgstr "" + +#. module: pos_order_copy +#: model:ir.model.fields,field_description:pos_order_copy.field_pos_order__session_id +msgid "Session" +msgstr "" + +#. module: pos_order_copy +#: model:ir.model.fields,field_description:pos_order_copy.field_pos_order__shipping_date +msgid "Shipping Date" +msgstr "" + +#. module: pos_order_copy +#: model:ir.model.fields,field_description:pos_order_copy.field_pos_order__ticket_code +msgid "Ticket Code" +msgstr "" + +#. module: pos_order_copy +#: model:ir.model.fields,field_description:pos_order_copy.field_pos_order__tip_amount +msgid "Tip Amount" +msgstr "" From d2dd88535190ed14316682688adcfda7aff0241c Mon Sep 17 00:00:00 2001 From: mymage Date: Mon, 4 Nov 2024 08:50:03 +0000 Subject: [PATCH 3/5] Translated using Weblate (Italian) Currently translated at 100.0% (17 of 17 strings) Translation: pos-17.0/pos-17.0-pos_order_copy Translate-URL: https://translation.odoo-community.org/projects/pos-17-0/pos-17-0-pos_order_copy/it/ --- pos_order_copy/i18n/it.po | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/pos_order_copy/i18n/it.po b/pos_order_copy/i18n/it.po index f5cbbf1952..7835f46c75 100644 --- a/pos_order_copy/i18n/it.po +++ b/pos_order_copy/i18n/it.po @@ -6,29 +6,33 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 17.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2024-11-04 11:06+0000\n" +"Last-Translator: mymage \n" "Language-Team: none\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.6.2\n" #. module: pos_order_copy #: model:ir.model.fields,help:pos_order_copy.field_pos_order__ticket_code msgid "" "5 digits alphanumeric code to be used by portal user to request an invoice" msgstr "" +"Codice alfanumerico di 5 cifre utilizzabile da un utente portale per " +"richiedere una fattura" #. module: pos_order_copy #: model:ir.model.fields,help:pos_order_copy.field_pos_order__sequence_number msgid "A session-unique sequence number for the order" -msgstr "" +msgstr "Un numero sequenza univoco per sessione per l'ordine" #. module: pos_order_copy #: model:ir.model.fields,field_description:pos_order_copy.field_pos_order__date_order msgid "Date" -msgstr "" +msgstr "Data" #. module: pos_order_copy #. odoo-javascript @@ -37,29 +41,29 @@ msgstr "" #: code:addons/pos_order_copy/static/src/app/ticket_screen/ticket_screen.xml:0 #, python-format msgid "Duplicate Order" -msgstr "" +msgstr "Duplica ordine" #. module: pos_order_copy #: model:ir.model.fields,field_description:pos_order_copy.field_pos_order__is_tipped msgid "Is this already tipped?" -msgstr "" +msgstr "Questo è già con mancia?" #. module: pos_order_copy #: model:ir.model.fields,field_description:pos_order_copy.field_pos_order__last_order_preparation_change msgid "Last preparation change" -msgstr "" +msgstr "Cambio ultima preparazione" #. module: pos_order_copy #: model:ir.model.fields,help:pos_order_copy.field_pos_order__last_order_preparation_change msgid "Last printed state of the order" -msgstr "" +msgstr "Ultimo stato stampato dell'ordine" #. module: pos_order_copy #. odoo-javascript #: code:addons/pos_order_copy/static/src/app/store/pos_store.esm.js:0 #, python-format msgid "Order %s" -msgstr "" +msgstr "Ordine %s" #. module: pos_order_copy #: model:ir.model.fields,help:pos_order_copy.field_pos_order__user_id @@ -67,43 +71,45 @@ msgid "" "Person who uses the cash register. It can be a reliever, a student or an " "interim employee." msgstr "" +"Persona che utilizza il registratore di cassa. Può essere un sostituto, uno " +"studente o un dipendente provvisorio." #. module: pos_order_copy #: model:ir.model,name:pos_order_copy.model_pos_order msgid "Point of Sale Orders" -msgstr "" +msgstr "Ordini punto vendita" #. module: pos_order_copy #: model:ir.model,name:pos_order_copy.model_pos_session msgid "Point of Sale Session" -msgstr "" +msgstr "Sessione punto vendita" #. module: pos_order_copy #: model:ir.model.fields,field_description:pos_order_copy.field_pos_order__user_id msgid "Responsible" -msgstr "" +msgstr "Responsabile" #. module: pos_order_copy #: model:ir.model.fields,field_description:pos_order_copy.field_pos_order__sequence_number msgid "Sequence Number" -msgstr "" +msgstr "Numero sequenza" #. module: pos_order_copy #: model:ir.model.fields,field_description:pos_order_copy.field_pos_order__session_id msgid "Session" -msgstr "" +msgstr "Sessione" #. module: pos_order_copy #: model:ir.model.fields,field_description:pos_order_copy.field_pos_order__shipping_date msgid "Shipping Date" -msgstr "" +msgstr "Data spedizione" #. module: pos_order_copy #: model:ir.model.fields,field_description:pos_order_copy.field_pos_order__ticket_code msgid "Ticket Code" -msgstr "" +msgstr "Codice ticket" #. module: pos_order_copy #: model:ir.model.fields,field_description:pos_order_copy.field_pos_order__tip_amount msgid "Tip Amount" -msgstr "" +msgstr "Valore mancia" From fde32352a556a48b47cd23f81a4937aa6d3918f5 Mon Sep 17 00:00:00 2001 From: Bhavesh Heliconia Date: Mon, 10 Feb 2025 14:47:22 +0530 Subject: [PATCH 4/5] [IMP] pos_order_copy: pre-commit auto fixes --- .../static/src/app/product_screen/CopyOrderButton.xml | 2 +- pos_order_copy/static/src/app/ticket_screen/ticket_screen.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pos_order_copy/static/src/app/product_screen/CopyOrderButton.xml b/pos_order_copy/static/src/app/product_screen/CopyOrderButton.xml index 7d2f5a6296..ef8211ad01 100644 --- a/pos_order_copy/static/src/app/product_screen/CopyOrderButton.xml +++ b/pos_order_copy/static/src/app/product_screen/CopyOrderButton.xml @@ -7,7 +7,7 @@ t-on-click="() => this.onClick()" > - + Duplicate Order diff --git a/pos_order_copy/static/src/app/ticket_screen/ticket_screen.xml b/pos_order_copy/static/src/app/ticket_screen/ticket_screen.xml index 68b6f94c5e..6b167c6fe4 100644 --- a/pos_order_copy/static/src/app/ticket_screen/ticket_screen.xml +++ b/pos_order_copy/static/src/app/ticket_screen/ticket_screen.xml @@ -18,7 +18,7 @@ t-on-click="() => this._copyOrder(_selectedSyncedOrder)" > - + Duplicate Order From bc8396be05e1922af3f6bfcdc37eef404e3c6221 Mon Sep 17 00:00:00 2001 From: Bhavesh Heliconia Date: Mon, 10 Feb 2025 14:49:46 +0530 Subject: [PATCH 5/5] [MIG] pos_order_copy: Migration to 18.0 --- pos_order_copy/README.rst | 18 +++++++++------ pos_order_copy/__manifest__.py | 2 +- pos_order_copy/models/pos_session.py | 10 ++++---- pos_order_copy/readme/CONTRIBUTORS.md | 2 ++ pos_order_copy/static/description/index.html | 10 +++++--- .../app/product_screen/CopyOrderButton.esm.js | 19 ++++----------- .../app/product_screen/CopyOrderButton.xml | 23 +++++++++++-------- .../static/src/app/store/pos_store.esm.js | 20 +++++++--------- .../src/app/ticket_screen/ticket_screen.xml | 2 +- 9 files changed, 54 insertions(+), 52 deletions(-) diff --git a/pos_order_copy/README.rst b/pos_order_copy/README.rst index 508a0cff4a..aefc4309ef 100644 --- a/pos_order_copy/README.rst +++ b/pos_order_copy/README.rst @@ -17,13 +17,13 @@ Pos Order Copy :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpos-lightgray.png?logo=github - :target: https://github.com/OCA/pos/tree/17.0/pos_order_copy + :target: https://github.com/OCA/pos/tree/18.0/pos_order_copy :alt: OCA/pos .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/pos-17-0/pos-17-0-pos_order_copy + :target: https://translation.odoo-community.org/projects/pos-18-0/pos-18-0-pos_order_copy :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png - :target: https://runboat.odoo-community.org/builds?repo=OCA/pos&target_branch=17.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/pos&target_branch=18.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -41,7 +41,7 @@ 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 to smash it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -57,9 +57,13 @@ Authors Contributors ------------ -- Dixmit +- Dixmit - - Enric Tobella + - Enric Tobella + +- `Heliconia Solutions Pvt. Ltd. `__ + + - Bhavesh Heliconia Maintainers ----------- @@ -74,6 +78,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/pos `_ project on GitHub. +This module is part of the `OCA/pos `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/pos_order_copy/__manifest__.py b/pos_order_copy/__manifest__.py index dbc0aa3f77..91c44465b9 100644 --- a/pos_order_copy/__manifest__.py +++ b/pos_order_copy/__manifest__.py @@ -5,7 +5,7 @@ "name": "Pos Order Copy", "summary": """ Copy Orders from PoS Frontend""", - "version": "17.0.1.0.0", + "version": "18.0.1.0.0", "license": "AGPL-3", "author": "Dixmit,INVITU,Odoo Community Association (OCA)", "website": "https://github.com/OCA/pos", diff --git a/pos_order_copy/models/pos_session.py b/pos_order_copy/models/pos_session.py index f482ce8ab7..699b728425 100644 --- a/pos_order_copy/models/pos_session.py +++ b/pos_order_copy/models/pos_session.py @@ -7,16 +7,16 @@ class PosSession(models.Model): _inherit = "pos.session" - def _pos_data_process(self, loaded_data): - result = super()._pos_data_process(loaded_data) - loaded_data["pos_order_copy_fields"] = [ + def _load_pos_data(self, data): + sessions = super()._load_pos_data(data) + sessions["data"][0]["_pos_order_copy_fields"] = [ field_name for field_name, field in self.env["pos.order"]._fields.items() if field.copy and field.store and not field.automatic and not field.compute ] - loaded_data["pos_order_line_copy_fields"] = [ + sessions["data"][0]["_pos_order_line_copy_fields"] = [ field_name for field_name, field in self.env["pos.order.line"]._fields.items() if field.copy and field.store and not field.automatic and not field.compute ] - return result + return sessions diff --git a/pos_order_copy/readme/CONTRIBUTORS.md b/pos_order_copy/readme/CONTRIBUTORS.md index 0082723f81..bbfe33de2b 100644 --- a/pos_order_copy/readme/CONTRIBUTORS.md +++ b/pos_order_copy/readme/CONTRIBUTORS.md @@ -1,2 +1,4 @@ - Dixmit - Enric Tobella +- [Heliconia Solutions Pvt. Ltd.](https://www.heliconia.io) + - Bhavesh Heliconia diff --git a/pos_order_copy/static/description/index.html b/pos_order_copy/static/description/index.html index 0b6a8c7ef7..6cbe228cca 100644 --- a/pos_order_copy/static/description/index.html +++ b/pos_order_copy/static/description/index.html @@ -369,7 +369,7 @@

Pos Order Copy

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:e364bed966a3064bc5f20442ec0663ea0678e280b5904781033072fedf94b4b0 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/pos Translate me on Weblate Try me on Runboat

+

Beta License: AGPL-3 OCA/pos Translate me on Weblate Try me on Runboat

Copy orders on point of sale view.

Table of contents

@@ -388,7 +388,7 @@

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 to smash it by providing a detailed and welcomed -feedback.

+feedback.

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

@@ -407,6 +407,10 @@

Contributors

  • Enric Tobella
  • +
  • Heliconia Solutions Pvt. Ltd.
      +
    • Bhavesh Heliconia
    • +
    +
  • @@ -418,7 +422,7 @@

    Maintainers

    OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

    -

    This module is part of the OCA/pos project on GitHub.

    +

    This module is part of the OCA/pos project on GitHub.

    You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

    diff --git a/pos_order_copy/static/src/app/product_screen/CopyOrderButton.esm.js b/pos_order_copy/static/src/app/product_screen/CopyOrderButton.esm.js index cc77672a8c..a0e3d88144 100644 --- a/pos_order_copy/static/src/app/product_screen/CopyOrderButton.esm.js +++ b/pos_order_copy/static/src/app/product_screen/CopyOrderButton.esm.js @@ -3,23 +3,14 @@ Copyright 2024 Dixmit License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). */ -import {Component} from "@odoo/owl"; -import {ProductScreen} from "@point_of_sale/app/screens/product_screen/product_screen"; -import {usePos} from "@point_of_sale/app/store/pos_hook"; -export class CopyOrderButton extends Component { - setup() { - this.pos = usePos(); - } +import {ControlButtons} from "@point_of_sale/app/screens/product_screen/control_buttons/control_buttons"; +import {patch} from "@web/core/utils/patch"; - onClick() { +patch(ControlButtons.prototype, { + onClickCopyOrderButton() { var order = this.pos.get_order(); this.pos.copy_on_new_order(order); this.pos.showScreen("ProductScreen"); - } -} -CopyOrderButton.template = "pos_order_copy.CopyOrderButton"; - -ProductScreen.addControlButton({ - component: CopyOrderButton, + }, }); diff --git a/pos_order_copy/static/src/app/product_screen/CopyOrderButton.xml b/pos_order_copy/static/src/app/product_screen/CopyOrderButton.xml index ef8211ad01..edd845ec7a 100644 --- a/pos_order_copy/static/src/app/product_screen/CopyOrderButton.xml +++ b/pos_order_copy/static/src/app/product_screen/CopyOrderButton.xml @@ -1,14 +1,19 @@ - -
    + - - - Duplicate Order -
    + +
    diff --git a/pos_order_copy/static/src/app/store/pos_store.esm.js b/pos_order_copy/static/src/app/store/pos_store.esm.js index 02e81ad87f..352b66b473 100644 --- a/pos_order_copy/static/src/app/store/pos_store.esm.js +++ b/pos_order_copy/static/src/app/store/pos_store.esm.js @@ -7,6 +7,7 @@ import {PosStore} from "@point_of_sale/app/store/pos_store"; import {_t} from "@web/core/l10n/translation"; import {patch} from "@web/core/utils/patch"; import {uuidv4} from "@point_of_sale/utils"; +import {serializeDateTime} from "@web/core/l10n/dates"; patch(PosStore.prototype, { async copy_on_new_order(currentOrder) { @@ -16,7 +17,7 @@ patch(PosStore.prototype, { if (this.isOpenOrderShareable()) { this.sendDraftToServer(); } - var json = currentOrder.export_as_JSON(); + var json = currentOrder; if (this.selectedOrder) { this.selectedOrder.firstDraft = false; this.selectedOrder.updateSavedQuantity(); @@ -25,26 +26,21 @@ patch(PosStore.prototype, { lines: [], statement_ids: [], }; - for (var field of Object.values(this.pos_order_copy_fields)) { + for (var field of Object.values(this.session._pos_order_copy_fields)) { if (field !== "lines" && json[field] !== undefined) { newJson[field] = json[field]; } } - const newOrder = this.createReactiveOrder(newJson); + const newOrder = this.createNewOrder(newJson); // We need to enforce some fields to be the standard ones - newOrder.date_order = luxon.DateTime.now(); - newOrder.sequence_number = this.pos_session.sequence_number++; + newOrder.date_order = serializeDateTime(luxon.DateTime.now()); + var step = this.currentSequenceNumber; + newOrder.sequence_number = step++; newOrder.access_token = uuidv4(); newOrder.ticketCode = newOrder._generateTicketCode(); newOrder.uid = newOrder.generate_unique_id(); newOrder.name = _t("Order %s", newOrder.uid); - this.orders.add(newOrder); - this.selectedOrder = newOrder; + this.selectedOrderUuid = newOrder.uuid; return newOrder; }, - async _processData(loadedData) { - await super._processData(...arguments); - this.pos_order_copy_fields = loadedData.pos_order_copy_fields; - this.pos_order_line_copy_fields = loadedData.pos_order_line_copy_fields; - }, }); diff --git a/pos_order_copy/static/src/app/ticket_screen/ticket_screen.xml b/pos_order_copy/static/src/app/ticket_screen/ticket_screen.xml index 6b167c6fe4..4b446d66f5 100644 --- a/pos_order_copy/static/src/app/ticket_screen/ticket_screen.xml +++ b/pos_order_copy/static/src/app/ticket_screen/ticket_screen.xml @@ -9,7 +9,7 @@ class="button validation copy-order-button w-100 btn btn-lg btn-secondary rounded-0 fw-bolder py-3" t-on-click="() => this._copyOrder(_selectedSyncedOrder)" > - Duplicate Order + Duplicate Order