diff --git a/l10n_es_pos_oca/README.rst b/l10n_es_pos_oca/README.rst index bb0d83d1c5a..3059b9319df 100644 --- a/l10n_es_pos_oca/README.rst +++ b/l10n_es_pos_oca/README.rst @@ -137,6 +137,10 @@ Contributors - Daniel Duque +- `APSL-Nagarro `__: + + - Antoni Marroig + Maintainers ----------- diff --git a/l10n_es_pos_oca/__manifest__.py b/l10n_es_pos_oca/__manifest__.py index fe643765177..5279b31877d 100644 --- a/l10n_es_pos_oca/__manifest__.py +++ b/l10n_es_pos_oca/__manifest__.py @@ -9,16 +9,12 @@ "Odoo Community Association (OCA)", "website": "https://github.com/OCA/l10n-spain", "license": "AGPL-3", - "version": "16.0.1.0.2", - "depends": ["point_of_sale"], + "version": "17.0.1.0.0", + "depends": ["point_of_sale", "l10n_es"], "data": ["views/pos_views.xml", "views/res_config_settings_views.xml"], "assets": { - "point_of_sale.assets": [ - "l10n_es_pos/static/src/xml/pos.xml", - "l10n_es_pos/static/src/xml/Screens/OrderManagementScreen/TicketScreen.xml", - "l10n_es_pos/static/src/js/PaymentScreen.js", - "l10n_es_pos/static/src/js/models.js", - "l10n_es_pos/static/src/js/Screens/TicketScreen/TicketScreen.js", + "point_of_sale._assets_pos": [ + "l10n_es_pos_oca/static/src/**/*", ], }, "installable": True, diff --git a/l10n_es_pos_oca/hooks.py b/l10n_es_pos_oca/hooks.py index 93b97984a5d..85f78cd339c 100644 --- a/l10n_es_pos_oca/hooks.py +++ b/l10n_es_pos_oca/hooks.py @@ -1,12 +1,9 @@ # Copyright 2018 David Vidal # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from odoo import SUPERUSER_ID, api - -def post_init_hook(cr, registry, vals=None): +def post_init_hook(env, vals=None): """For brand new installations""" - env = api.Environment(cr, SUPERUSER_ID, {}) IrSequence = env["ir.sequence"] pos_config = env["pos.config"].search( [("l10n_es_simplified_invoice_sequence_id", "=", False)] @@ -47,6 +44,5 @@ def post_init_hook(cr, registry, vals=None): ) -def uninstall_hook(cr, registry): - env = api.Environment(cr, SUPERUSER_ID, {}) +def uninstall_hook(env): env["ir.sequence"].search([("code", "=", "pos.config.simplified_invoice")]).unlink() diff --git a/l10n_es_pos_oca/i18n/ca.po b/l10n_es_pos_oca/i18n/ca.po index 875c7f9de41..f9d350aeee7 100644 --- a/l10n_es_pos_oca/i18n/ca.po +++ b/l10n_es_pos_oca/i18n/ca.po @@ -1,162 +1,167 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * l10n_es_pos +# * l10n_es_pos_oca # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 12.0\n" +"Project-Id-Version: Odoo Server 17.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2023-06-23 13:11+0000\n" -"Last-Translator: eccit-quim \n" -"Language-Team: none\n" -"Language: ca\n" +"POT-Creation-Date: 2024-10-10 11:43+0000\n" +"PO-Revision-Date: 2024-10-10 11:43+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: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.17\n" +"Plural-Forms: \n" -#. module: l10n_es_pos -#: model_terms:ir.ui.view,arch_db:l10n_es_pos.res_config_settings_view_form +#. module: l10n_es_pos_oca +#: model_terms:ir.ui.view,arch_db:l10n_es_pos_oca.res_config_settings_view_form msgid "Above this limit the simplified invoice won't be made" -msgstr "Per sobre d'aquest límit no es crearà factura simplificada" +msgstr "Per sobre aquest límit no es crearà una factura simplificada" -#. module: l10n_es_pos -#: model:ir.model.fields,help:l10n_es_pos.field_pos_config__l10n_es_simplified_invoice_sequence_id -#: model:ir.model.fields,help:l10n_es_pos.field_res_config_settings__pos_l10n_es_simplified_invoice_sequence_id +#. module: l10n_es_pos_oca +#: model:ir.model.fields,help:l10n_es_pos_oca.field_pos_config__l10n_es_simplified_invoice_sequence_id +#: model:ir.model.fields,help:l10n_es_pos_oca.field_res_config_settings__pos_l10n_es_simplified_invoice_sequence_id msgid "Autogenerate for each POS created" msgstr "Autogenerada per cada TPV creat" -#. module: l10n_es_pos -#: model:ir.model,name:l10n_es_pos.model_res_config_settings +#. module: l10n_es_pos_oca +#: model:ir.model,name:l10n_es_pos_oca.model_res_config_settings msgid "Config Settings" msgstr "Paràmetres de configuració" -#. module: l10n_es_pos +#. module: l10n_es_pos_oca #. odoo-javascript -#: code:addons/l10n_es_pos/static/src/xml/pos.xml:0 +#: code:addons/l10n_es_pos_oca/static/src/app/screens/receipt_screen/receipt/receipt_header/receipt_header.xml:0 #, python-format msgid "Customer:" msgstr "Client:" -#. module: l10n_es_pos -#: model_terms:ir.ui.view,arch_db:l10n_es_pos.view_pos_order_filter_simplified_invoice +#. module: l10n_es_pos_oca +#: model_terms:ir.ui.view,arch_db:l10n_es_pos_oca.view_pos_order_filter_simplified_invoice msgid "Invoices" -msgstr "Factures" +msgstr "Diaris de factures" -#. module: l10n_es_pos -#: model:ir.model.fields,field_description:l10n_es_pos.field_pos_config__is_simplified_config +#. module: l10n_es_pos_oca +#: model:ir.model.fields,field_description:l10n_es_pos_oca.field_pos_config__is_simplified_config msgid "Is Simplified Config" -msgstr "És configuració simpl." +msgstr "Es la configuració simplificada" -#. module: l10n_es_pos -#: model:ir.model.fields,help:l10n_es_pos.field_pos_config__l10n_es_simplified_invoice_limit -#: model:ir.model.fields,help:l10n_es_pos.field_res_config_settings__pos_l10n_es_simplified_invoice_limit +#. module: l10n_es_pos_oca +#: model:ir.model.fields,help:l10n_es_pos_oca.field_pos_config__l10n_es_simplified_invoice_limit +#: model:ir.model.fields,help:l10n_es_pos_oca.field_res_config_settings__pos_l10n_es_simplified_invoice_limit msgid "Over this amount is not legally posible to create a simplified invoice" -msgstr "" -"Per sobre d'aquesta quantitat no és legal crear una factura simplificada" +msgstr "Per sobre aquesta quantitat no es legal crear una factura simplificada" -#. module: l10n_es_pos -#: model:ir.model,name:l10n_es_pos.model_pos_config +#. module: l10n_es_pos_oca +#: model:ir.model,name:l10n_es_pos_oca.model_pos_config msgid "Point of Sale Configuration" -msgstr "Configuració Punt de Venda" +msgstr "Configuració del Punt de Venda" -#. module: l10n_es_pos -#: model:ir.model,name:l10n_es_pos.model_pos_order +#. module: l10n_es_pos_oca +#: model:ir.model,name:l10n_es_pos_oca.model_pos_order msgid "Point of Sale Orders" msgstr "Comandes del Punt de Venda" -#. module: l10n_es_pos -#: model:ir.model,name:l10n_es_pos.model_pos_session +#. module: l10n_es_pos_oca +#: model:ir.model,name:l10n_es_pos_oca.model_pos_session msgid "Point of Sale Session" -msgstr "Sessió Punt de Venda" +msgstr "Sessió del Punt de Venda" -#. module: l10n_es_pos -#: model:ir.model,name:l10n_es_pos.model_ir_sequence +#. module: l10n_es_pos_oca +#: model:ir.model,name:l10n_es_pos_oca.model_ir_sequence msgid "Sequence" msgstr "Seqüència" -#. module: l10n_es_pos -#: model_terms:ir.ui.view,arch_db:l10n_es_pos.res_config_settings_view_form +#. module: l10n_es_pos_oca +#: model_terms:ir.ui.view,arch_db:l10n_es_pos_oca.res_config_settings_view_form msgid "Set simplified invoice sequence for this POS" -msgstr "Establir seqüència de factura simplificada per aquest TPV" +msgstr "Establir seqüencia de factura simplificada per aquest TPV" -#. module: l10n_es_pos -#: model:ir.model.fields,field_description:l10n_es_pos.field_pos_config__l10n_es_simplified_invoice_limit -#: model:ir.model.fields,field_description:l10n_es_pos.field_res_config_settings__pos_l10n_es_simplified_invoice_limit +#. module: l10n_es_pos_oca +#: model:ir.model.fields,field_description:l10n_es_pos_oca.field_pos_config__l10n_es_simplified_invoice_limit +#: model:ir.model.fields,field_description:l10n_es_pos_oca.field_res_config_settings__pos_l10n_es_simplified_invoice_limit msgid "Sim.Inv limit amount" msgstr "Límit de factura simplificada" -#. module: l10n_es_pos -#: model:ir.model.fields,field_description:l10n_es_pos.field_pos_config__l10n_es_simplified_invoice_number -#: model:ir.model.fields,field_description:l10n_es_pos.field_res_config_settings__pos_l10n_es_simplified_invoice_number +#. module: l10n_es_pos_oca +#: model:ir.model.fields,field_description:l10n_es_pos_oca.field_pos_config__l10n_es_simplified_invoice_number +#: model:ir.model.fields,field_description:l10n_es_pos_oca.field_res_config_settings__pos_l10n_es_simplified_invoice_number msgid "Sim.Inv number" -msgstr "Nombre de factura simplificada" +msgstr "Número de factura simplificada" -#. module: l10n_es_pos +#. module: l10n_es_pos_oca #. odoo-javascript -#: code:addons/l10n_es_pos/static/src/js/Screens/TicketScreen/TicketScreen.js:0 -#: code:addons/l10n_es_pos/static/src/xml/Screens/OrderManagementScreen/TicketScreen.xml:0 +#: code:addons/l10n_es_pos_oca/static/src/app/screens/ticket_screen/ticket_screen.esm.js:0 +#: code:addons/l10n_es_pos_oca/static/src/app/screens/ticket_screen/ticket_screen.xml:0 +#: code:addons/l10n_es_pos_oca/static/src/app/screens/ticket_screen/ticket_screen.xml:0 #, python-format msgid "Simplified Invoice" msgstr "Factura simplificada" -#. module: l10n_es_pos +#. module: l10n_es_pos_oca #. odoo-python -#: code:addons/l10n_es_pos/models/pos_config.py:0 +#: code:addons/l10n_es_pos_oca/models/pos_config.py:0 +#: code:addons/l10n_es_pos_oca/models/pos_config.py:0 #, python-format msgid "Simplified Invoice %s" msgstr "Factura simplificada %s" -#. module: l10n_es_pos -#: model:ir.model.fields,field_description:l10n_es_pos.field_pos_config__l10n_es_simplified_invoice_sequence_id -#: model:ir.model.fields,field_description:l10n_es_pos.field_res_config_settings__pos_l10n_es_simplified_invoice_sequence_id +#. module: l10n_es_pos_oca +#: model:ir.model.fields,field_description:l10n_es_pos_oca.field_pos_config__l10n_es_simplified_invoice_sequence_id +#: model:ir.model.fields,field_description:l10n_es_pos_oca.field_res_config_settings__pos_l10n_es_simplified_invoice_sequence_id msgid "Simplified Invoice IDs Sequence" -msgstr "Seqüència de Factura Simplificada" +msgstr "Seqüencia de Factura Simplificada" -#. module: l10n_es_pos -#: model_terms:ir.ui.view,arch_db:l10n_es_pos.res_config_settings_view_form +#. module: l10n_es_pos_oca +#: model_terms:ir.ui.view,arch_db:l10n_es_pos_oca.res_config_settings_view_form msgid "Simplified Invoice Limit" msgstr "Límit de Factura Simplificada" -#. module: l10n_es_pos -#: model_terms:ir.ui.view,arch_db:l10n_es_pos.res_config_settings_view_form +#. module: l10n_es_pos_oca +#: model_terms:ir.ui.view,arch_db:l10n_es_pos_oca.res_config_settings_view_form msgid "Simplified Invoice Sequence" -msgstr "Seqüència de Factura Simplificada" +msgstr "Seqüencia de Factura Simplificada" -#. module: l10n_es_pos -#: model:ir.model.fields,field_description:l10n_es_pos.field_pos_config__l10n_es_simplified_invoice_padding -#: model:ir.model.fields,field_description:l10n_es_pos.field_res_config_settings__pos_l10n_es_simplified_invoice_padding +#. module: l10n_es_pos_oca +#: model:ir.model.fields,field_description:l10n_es_pos_oca.field_pos_config__l10n_es_simplified_invoice_padding +#: model:ir.model.fields,field_description:l10n_es_pos_oca.field_res_config_settings__pos_l10n_es_simplified_invoice_padding msgid "Simplified Invoice padding" -msgstr "Farcit de Factura Simplificada" +msgstr "Farciment de Factura Simplificada" -#. module: l10n_es_pos -#: model:ir.model.fields,field_description:l10n_es_pos.field_pos_config__l10n_es_simplified_invoice_prefix -#: model:ir.model.fields,field_description:l10n_es_pos.field_res_config_settings__pos_l10n_es_simplified_invoice_prefix +#. module: l10n_es_pos_oca +#: model:ir.model.fields,field_description:l10n_es_pos_oca.field_pos_config__l10n_es_simplified_invoice_prefix +#: model:ir.model.fields,field_description:l10n_es_pos_oca.field_res_config_settings__pos_l10n_es_simplified_invoice_prefix msgid "Simplified Invoice prefix" msgstr "Prefix de Factura Simplificada" -#. module: l10n_es_pos +#. module: l10n_es_pos_oca #. odoo-javascript -#: code:addons/l10n_es_pos/static/src/xml/pos.xml:0 -#: model:ir.model.fields,field_description:l10n_es_pos.field_pos_order__is_l10n_es_simplified_invoice +#: code:addons/l10n_es_pos_oca/static/src/app/screens/receipt_screen/receipt/receipt_header/receipt_header.xml:0 +#: model:ir.model.fields,field_description:l10n_es_pos_oca.field_pos_order__is_l10n_es_simplified_invoice #, python-format msgid "Simplified invoice" msgstr "Factura simplificada" -#. module: l10n_es_pos -#: model:ir.model.fields,field_description:l10n_es_pos.field_pos_order__l10n_es_unique_id +#. module: l10n_es_pos_oca +#: model:ir.model.fields,field_description:l10n_es_pos_oca.field_pos_order__l10n_es_unique_id msgid "Simplified invoice number" msgstr "Número de factura simplificada" -#. module: l10n_es_pos -#: model_terms:ir.ui.view,arch_db:l10n_es_pos.view_pos_order_filter_simplified_invoice +#. module: l10n_es_pos_oca +#: model:ir.model.fields,field_description:l10n_es_pos_oca.field_pos_config__simplified_partner_id +msgid "Simplified invoice partner" +msgstr "Soci de factura simplificada" + +#. module: l10n_es_pos_oca +#: model_terms:ir.ui.view,arch_db:l10n_es_pos_oca.view_pos_order_filter_simplified_invoice msgid "Simplified invoices" msgstr "Factures simplificades" -#. module: l10n_es_pos +#. module: l10n_es_pos_oca #. odoo-python -#: code:addons/l10n_es_pos/models/ir_sequence.py:0 +#: code:addons/l10n_es_pos_oca/models/ir_sequence.py:0 #, python-format msgid "" "There is already a simplified invoice sequence with that prefix and it " @@ -165,63 +170,8 @@ msgstr "" "Ja hi ha una seqüència de Factura Simplificada amb aquest prefix i aquest " "hauria de ser únic." -#. module: l10n_es_pos -#: model:ir.model.fields,field_description:l10n_es_pos.field_pos_config__iface_l10n_es_simplified_invoice -#: model:ir.model.fields,field_description:l10n_es_pos.field_res_config_settings__pos_iface_l10n_es_simplified_invoice +#. module: l10n_es_pos_oca +#: model:ir.model.fields,field_description:l10n_es_pos_oca.field_pos_config__iface_l10n_es_simplified_invoice +#: model:ir.model.fields,field_description:l10n_es_pos_oca.field_res_config_settings__pos_iface_l10n_es_simplified_invoice msgid "Use simplified invoices for this POS" -msgstr "Utilitza Factures simplificades en aquest punt de venda" - -#. module: l10n_es_pos -#. odoo-javascript -#: code:addons/l10n_es_pos/static/src/xml/pos.xml:0 -#, python-format -msgid "on" -msgstr "sobre" - -#~ msgid "Invoice Journal" -#~ msgstr "Diari de Factures" - -#, python-format -#~ msgid "" -#~ "!env.pos.config.iface_l10n_es_simplified_invoice or receipt.is_to_invoice" -#~ msgstr "" -#~ "! env.pos.config.iface_l10n_es_simplified_invoice o ticket.is_to_invoice" - -#~ msgid "Display Name" -#~ msgstr "Nom visible" - -#~ msgid "ID" -#~ msgstr "ID" - -#~ msgid "Last Modified on" -#~ msgstr "Darrera modificació el" - -#~ msgid "Unique Order ID" -#~ msgstr "ID únic de comanda" - -#~ msgid "VAT:" -#~ msgstr "NIF:" - -#~ msgid "Address:" -#~ msgstr "Adreça:" - -#~ msgid "Customer data" -#~ msgstr "Dades de client" - -#~ msgid "Name:" -#~ msgstr "Nom:" - -#~ msgid "Product" -#~ msgstr "Producte" - -#~ msgid "Qty" -#~ msgstr "Quantitat" - -#~ msgid "Simplified invoice:" -#~ msgstr "Factura simplificada:" - -#~ msgid "Subt" -#~ msgstr "Subt" - -#~ msgid "Unit" -#~ msgstr "Unitat" +msgstr "Utilitzar Factures Simplificades al Punt de Venda" diff --git a/l10n_es_pos_oca/i18n/ca_ES.po b/l10n_es_pos_oca/i18n/ca_ES.po deleted file mode 100644 index 22e3cc7967c..00000000000 --- a/l10n_es_pos_oca/i18n/ca_ES.po +++ /dev/null @@ -1,174 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * l10n_es_pos -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 12.0\n" -"Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: ca_ES\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: l10n_es_pos -#: model_terms:ir.ui.view,arch_db:l10n_es_pos.res_config_settings_view_form -msgid "Above this limit the simplified invoice won't be made" -msgstr "" - -#. module: l10n_es_pos -#: model:ir.model.fields,help:l10n_es_pos.field_pos_config__l10n_es_simplified_invoice_sequence_id -#: model:ir.model.fields,help:l10n_es_pos.field_res_config_settings__pos_l10n_es_simplified_invoice_sequence_id -msgid "Autogenerate for each POS created" -msgstr "" - -#. module: l10n_es_pos -#: model:ir.model,name:l10n_es_pos.model_res_config_settings -msgid "Config Settings" -msgstr "" - -#. module: l10n_es_pos -#. odoo-javascript -#: code:addons/l10n_es_pos/static/src/xml/pos.xml:0 -#, python-format -msgid "Customer:" -msgstr "" - -#. module: l10n_es_pos -#: model_terms:ir.ui.view,arch_db:l10n_es_pos.view_pos_order_filter_simplified_invoice -msgid "Invoices" -msgstr "" - -#. module: l10n_es_pos -#: model:ir.model.fields,field_description:l10n_es_pos.field_pos_config__is_simplified_config -msgid "Is Simplified Config" -msgstr "" - -#. module: l10n_es_pos -#: model:ir.model.fields,help:l10n_es_pos.field_pos_config__l10n_es_simplified_invoice_limit -#: model:ir.model.fields,help:l10n_es_pos.field_res_config_settings__pos_l10n_es_simplified_invoice_limit -msgid "Over this amount is not legally posible to create a simplified invoice" -msgstr "" - -#. module: l10n_es_pos -#: model:ir.model,name:l10n_es_pos.model_pos_config -msgid "Point of Sale Configuration" -msgstr "" - -#. module: l10n_es_pos -#: model:ir.model,name:l10n_es_pos.model_pos_order -msgid "Point of Sale Orders" -msgstr "" - -#. module: l10n_es_pos -#: model:ir.model,name:l10n_es_pos.model_pos_session -msgid "Point of Sale Session" -msgstr "" - -#. module: l10n_es_pos -#: model:ir.model,name:l10n_es_pos.model_ir_sequence -msgid "Sequence" -msgstr "" - -#. module: l10n_es_pos -#: model_terms:ir.ui.view,arch_db:l10n_es_pos.res_config_settings_view_form -msgid "Set simplified invoice sequence for this POS" -msgstr "" - -#. module: l10n_es_pos -#: model:ir.model.fields,field_description:l10n_es_pos.field_pos_config__l10n_es_simplified_invoice_limit -#: model:ir.model.fields,field_description:l10n_es_pos.field_res_config_settings__pos_l10n_es_simplified_invoice_limit -msgid "Sim.Inv limit amount" -msgstr "" - -#. module: l10n_es_pos -#: model:ir.model.fields,field_description:l10n_es_pos.field_pos_config__l10n_es_simplified_invoice_number -#: model:ir.model.fields,field_description:l10n_es_pos.field_res_config_settings__pos_l10n_es_simplified_invoice_number -msgid "Sim.Inv number" -msgstr "" - -#. module: l10n_es_pos -#. odoo-javascript -#: code:addons/l10n_es_pos/static/src/js/Screens/TicketScreen/TicketScreen.js:0 -#: code:addons/l10n_es_pos/static/src/xml/Screens/OrderManagementScreen/TicketScreen.xml:0 -#, python-format -msgid "Simplified Invoice" -msgstr "" - -#. module: l10n_es_pos -#. odoo-python -#: code:addons/l10n_es_pos/models/pos_config.py:0 -#, python-format -msgid "Simplified Invoice %s" -msgstr "" - -#. module: l10n_es_pos -#: model:ir.model.fields,field_description:l10n_es_pos.field_pos_config__l10n_es_simplified_invoice_sequence_id -#: model:ir.model.fields,field_description:l10n_es_pos.field_res_config_settings__pos_l10n_es_simplified_invoice_sequence_id -msgid "Simplified Invoice IDs Sequence" -msgstr "" - -#. module: l10n_es_pos -#: model_terms:ir.ui.view,arch_db:l10n_es_pos.res_config_settings_view_form -msgid "Simplified Invoice Limit" -msgstr "" - -#. module: l10n_es_pos -#: model_terms:ir.ui.view,arch_db:l10n_es_pos.res_config_settings_view_form -msgid "Simplified Invoice Sequence" -msgstr "" - -#. module: l10n_es_pos -#: model:ir.model.fields,field_description:l10n_es_pos.field_pos_config__l10n_es_simplified_invoice_padding -#: model:ir.model.fields,field_description:l10n_es_pos.field_res_config_settings__pos_l10n_es_simplified_invoice_padding -msgid "Simplified Invoice padding" -msgstr "" - -#. module: l10n_es_pos -#: model:ir.model.fields,field_description:l10n_es_pos.field_pos_config__l10n_es_simplified_invoice_prefix -#: model:ir.model.fields,field_description:l10n_es_pos.field_res_config_settings__pos_l10n_es_simplified_invoice_prefix -msgid "Simplified Invoice prefix" -msgstr "" - -#. module: l10n_es_pos -#. odoo-javascript -#: code:addons/l10n_es_pos/static/src/xml/pos.xml:0 -#: model:ir.model.fields,field_description:l10n_es_pos.field_pos_order__is_l10n_es_simplified_invoice -#, python-format -msgid "Simplified invoice" -msgstr "" - -#. module: l10n_es_pos -#: model:ir.model.fields,field_description:l10n_es_pos.field_pos_order__l10n_es_unique_id -msgid "Simplified invoice number" -msgstr "" - -#. module: l10n_es_pos -#: model_terms:ir.ui.view,arch_db:l10n_es_pos.view_pos_order_filter_simplified_invoice -msgid "Simplified invoices" -msgstr "" - -#. module: l10n_es_pos -#. odoo-python -#: code:addons/l10n_es_pos/models/ir_sequence.py:0 -#, python-format -msgid "" -"There is already a simplified invoice sequence with that prefix and it " -"should be unique." -msgstr "" - -#. module: l10n_es_pos -#: model:ir.model.fields,field_description:l10n_es_pos.field_pos_config__iface_l10n_es_simplified_invoice -#: model:ir.model.fields,field_description:l10n_es_pos.field_res_config_settings__pos_iface_l10n_es_simplified_invoice -msgid "Use simplified invoices for this POS" -msgstr "" - -#. module: l10n_es_pos -#. odoo-javascript -#: code:addons/l10n_es_pos/static/src/xml/pos.xml:0 -#, python-format -msgid "on" -msgstr "" diff --git a/l10n_es_pos_oca/i18n/es.po b/l10n_es_pos_oca/i18n/es.po index b85f1e2a848..8cc2d58f663 100644 --- a/l10n_es_pos_oca/i18n/es.po +++ b/l10n_es_pos_oca/i18n/es.po @@ -1,162 +1,167 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * l10n_es_pos +# * l10n_es_pos_oca # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 16.0\n" +"Project-Id-Version: Odoo Server 17.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-21 10:09+0000\n" -"PO-Revision-Date: 2024-02-11 19:35+0000\n" -"Last-Translator: Ivorra78 \n" +"POT-Creation-Date: 2024-10-10 11:42+0000\n" +"PO-Revision-Date: 2024-10-10 11:42+0000\n" +"Last-Translator: \n" "Language-Team: \n" -"Language: es\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 4.17\n" +"Plural-Forms: \n" -#. module: l10n_es_pos -#: model_terms:ir.ui.view,arch_db:l10n_es_pos.res_config_settings_view_form +#. module: l10n_es_pos_oca +#: model_terms:ir.ui.view,arch_db:l10n_es_pos_oca.res_config_settings_view_form msgid "Above this limit the simplified invoice won't be made" msgstr "Por encima de este límite no se creará factura simplificada" -#. module: l10n_es_pos -#: model:ir.model.fields,help:l10n_es_pos.field_pos_config__l10n_es_simplified_invoice_sequence_id -#: model:ir.model.fields,help:l10n_es_pos.field_res_config_settings__pos_l10n_es_simplified_invoice_sequence_id +#. module: l10n_es_pos_oca +#: model:ir.model.fields,help:l10n_es_pos_oca.field_pos_config__l10n_es_simplified_invoice_sequence_id +#: model:ir.model.fields,help:l10n_es_pos_oca.field_res_config_settings__pos_l10n_es_simplified_invoice_sequence_id msgid "Autogenerate for each POS created" msgstr "Autogenerada por cada TPV creado" -#. module: l10n_es_pos -#: model:ir.model,name:l10n_es_pos.model_res_config_settings +#. module: l10n_es_pos_oca +#: model:ir.model,name:l10n_es_pos_oca.model_res_config_settings msgid "Config Settings" -msgstr "Opciones de configuración" +msgstr "Ajustes de configuración" -#. module: l10n_es_pos +#. module: l10n_es_pos_oca #. odoo-javascript -#: code:addons/l10n_es_pos/static/src/xml/pos.xml:0 +#: code:addons/l10n_es_pos_oca/static/src/app/screens/receipt_screen/receipt/receipt_header/receipt_header.xml:0 #, python-format msgid "Customer:" msgstr "Cliente:" -#. module: l10n_es_pos -#: model_terms:ir.ui.view,arch_db:l10n_es_pos.view_pos_order_filter_simplified_invoice +#. module: l10n_es_pos_oca +#: model_terms:ir.ui.view,arch_db:l10n_es_pos_oca.view_pos_order_filter_simplified_invoice msgid "Invoices" msgstr "Diario de facturas" -#. module: l10n_es_pos -#: model:ir.model.fields,field_description:l10n_es_pos.field_pos_config__is_simplified_config +#. module: l10n_es_pos_oca +#: model:ir.model.fields,field_description:l10n_es_pos_oca.field_pos_config__is_simplified_config msgid "Is Simplified Config" msgstr "Es la configuración simplificada" -#. module: l10n_es_pos -#: model:ir.model.fields,help:l10n_es_pos.field_pos_config__l10n_es_simplified_invoice_limit -#: model:ir.model.fields,help:l10n_es_pos.field_res_config_settings__pos_l10n_es_simplified_invoice_limit +#. module: l10n_es_pos_oca +#: model:ir.model.fields,help:l10n_es_pos_oca.field_pos_config__l10n_es_simplified_invoice_limit +#: model:ir.model.fields,help:l10n_es_pos_oca.field_res_config_settings__pos_l10n_es_simplified_invoice_limit msgid "Over this amount is not legally posible to create a simplified invoice" msgstr "Por encima de esta cantidad no es legal crear una factura simplificada" -#. module: l10n_es_pos -#: model:ir.model,name:l10n_es_pos.model_pos_config +#. module: l10n_es_pos_oca +#: model:ir.model,name:l10n_es_pos_oca.model_pos_config msgid "Point of Sale Configuration" -msgstr "Configuración Punto de Venta" +msgstr "Configuración del TPV" -#. module: l10n_es_pos -#: model:ir.model,name:l10n_es_pos.model_pos_order +#. module: l10n_es_pos_oca +#: model:ir.model,name:l10n_es_pos_oca.model_pos_order msgid "Point of Sale Orders" -msgstr "Pedidos del Punto de Venta" +msgstr "Pedidos del TPV" -#. module: l10n_es_pos -#: model:ir.model,name:l10n_es_pos.model_pos_session +#. module: l10n_es_pos_oca +#: model:ir.model,name:l10n_es_pos_oca.model_pos_session msgid "Point of Sale Session" -msgstr "Sesión del Punto de Venta" +msgstr "Sesión TPV" -#. module: l10n_es_pos -#: model:ir.model,name:l10n_es_pos.model_ir_sequence +#. module: l10n_es_pos_oca +#: model:ir.model,name:l10n_es_pos_oca.model_ir_sequence msgid "Sequence" msgstr "Secuencia" -#. module: l10n_es_pos -#: model_terms:ir.ui.view,arch_db:l10n_es_pos.res_config_settings_view_form +#. module: l10n_es_pos_oca +#: model_terms:ir.ui.view,arch_db:l10n_es_pos_oca.res_config_settings_view_form msgid "Set simplified invoice sequence for this POS" msgstr "Establecer secuencia de factura simplificada para este TPV" -#. module: l10n_es_pos -#: model:ir.model.fields,field_description:l10n_es_pos.field_pos_config__l10n_es_simplified_invoice_limit -#: model:ir.model.fields,field_description:l10n_es_pos.field_res_config_settings__pos_l10n_es_simplified_invoice_limit +#. module: l10n_es_pos_oca +#: model:ir.model.fields,field_description:l10n_es_pos_oca.field_pos_config__l10n_es_simplified_invoice_limit +#: model:ir.model.fields,field_description:l10n_es_pos_oca.field_res_config_settings__pos_l10n_es_simplified_invoice_limit msgid "Sim.Inv limit amount" msgstr "Límite de factura simplificada" -#. module: l10n_es_pos -#: model:ir.model.fields,field_description:l10n_es_pos.field_pos_config__l10n_es_simplified_invoice_number -#: model:ir.model.fields,field_description:l10n_es_pos.field_res_config_settings__pos_l10n_es_simplified_invoice_number +#. module: l10n_es_pos_oca +#: model:ir.model.fields,field_description:l10n_es_pos_oca.field_pos_config__l10n_es_simplified_invoice_number +#: model:ir.model.fields,field_description:l10n_es_pos_oca.field_res_config_settings__pos_l10n_es_simplified_invoice_number msgid "Sim.Inv number" msgstr "Número de factura simplificada" -#. module: l10n_es_pos +#. module: l10n_es_pos_oca #. odoo-javascript -#: code:addons/l10n_es_pos/static/src/js/Screens/TicketScreen/TicketScreen.js:0 -#: code:addons/l10n_es_pos/static/src/xml/Screens/OrderManagementScreen/TicketScreen.xml:0 +#: code:addons/l10n_es_pos_oca/static/src/app/screens/ticket_screen/ticket_screen.esm.js:0 +#: code:addons/l10n_es_pos_oca/static/src/app/screens/ticket_screen/ticket_screen.xml:0 +#: code:addons/l10n_es_pos_oca/static/src/app/screens/ticket_screen/ticket_screen.xml:0 #, python-format msgid "Simplified Invoice" msgstr "Factura simplificada" -#. module: l10n_es_pos +#. module: l10n_es_pos_oca #. odoo-python -#: code:addons/l10n_es_pos/models/pos_config.py:0 +#: code:addons/l10n_es_pos_oca/models/pos_config.py:0 +#: code:addons/l10n_es_pos_oca/models/pos_config.py:0 #, python-format msgid "Simplified Invoice %s" msgstr "Factura simplificada %s" -#. module: l10n_es_pos -#: model:ir.model.fields,field_description:l10n_es_pos.field_pos_config__l10n_es_simplified_invoice_sequence_id -#: model:ir.model.fields,field_description:l10n_es_pos.field_res_config_settings__pos_l10n_es_simplified_invoice_sequence_id +#. module: l10n_es_pos_oca +#: model:ir.model.fields,field_description:l10n_es_pos_oca.field_pos_config__l10n_es_simplified_invoice_sequence_id +#: model:ir.model.fields,field_description:l10n_es_pos_oca.field_res_config_settings__pos_l10n_es_simplified_invoice_sequence_id msgid "Simplified Invoice IDs Sequence" msgstr "Secuencia de Factura Simplificada" -#. module: l10n_es_pos -#: model_terms:ir.ui.view,arch_db:l10n_es_pos.res_config_settings_view_form +#. module: l10n_es_pos_oca +#: model_terms:ir.ui.view,arch_db:l10n_es_pos_oca.res_config_settings_view_form msgid "Simplified Invoice Limit" msgstr "Límite de Factura Simplificada" -#. module: l10n_es_pos -#: model_terms:ir.ui.view,arch_db:l10n_es_pos.res_config_settings_view_form +#. module: l10n_es_pos_oca +#: model_terms:ir.ui.view,arch_db:l10n_es_pos_oca.res_config_settings_view_form msgid "Simplified Invoice Sequence" msgstr "Secuencia de Factura Simplificada" -#. module: l10n_es_pos -#: model:ir.model.fields,field_description:l10n_es_pos.field_pos_config__l10n_es_simplified_invoice_padding -#: model:ir.model.fields,field_description:l10n_es_pos.field_res_config_settings__pos_l10n_es_simplified_invoice_padding +#. module: l10n_es_pos_oca +#: model:ir.model.fields,field_description:l10n_es_pos_oca.field_pos_config__l10n_es_simplified_invoice_padding +#: model:ir.model.fields,field_description:l10n_es_pos_oca.field_res_config_settings__pos_l10n_es_simplified_invoice_padding msgid "Simplified Invoice padding" msgstr "Relleno de Factura Simplificada" -#. module: l10n_es_pos -#: model:ir.model.fields,field_description:l10n_es_pos.field_pos_config__l10n_es_simplified_invoice_prefix -#: model:ir.model.fields,field_description:l10n_es_pos.field_res_config_settings__pos_l10n_es_simplified_invoice_prefix +#. module: l10n_es_pos_oca +#: model:ir.model.fields,field_description:l10n_es_pos_oca.field_pos_config__l10n_es_simplified_invoice_prefix +#: model:ir.model.fields,field_description:l10n_es_pos_oca.field_res_config_settings__pos_l10n_es_simplified_invoice_prefix msgid "Simplified Invoice prefix" msgstr "Prefijo de Factura Simplificada" -#. module: l10n_es_pos +#. module: l10n_es_pos_oca #. odoo-javascript -#: code:addons/l10n_es_pos/static/src/xml/pos.xml:0 -#: model:ir.model.fields,field_description:l10n_es_pos.field_pos_order__is_l10n_es_simplified_invoice +#: code:addons/l10n_es_pos_oca/static/src/app/screens/receipt_screen/receipt/receipt_header/receipt_header.xml:0 +#: model:ir.model.fields,field_description:l10n_es_pos_oca.field_pos_order__is_l10n_es_simplified_invoice #, python-format msgid "Simplified invoice" msgstr "Factura simplificada" -#. module: l10n_es_pos -#: model:ir.model.fields,field_description:l10n_es_pos.field_pos_order__l10n_es_unique_id +#. module: l10n_es_pos_oca +#: model:ir.model.fields,field_description:l10n_es_pos_oca.field_pos_order__l10n_es_unique_id msgid "Simplified invoice number" msgstr "Número de factura simplificada" -#. module: l10n_es_pos -#: model_terms:ir.ui.view,arch_db:l10n_es_pos.view_pos_order_filter_simplified_invoice +#. module: l10n_es_pos_oca +#: model:ir.model.fields,field_description:l10n_es_pos_oca.field_pos_config__simplified_partner_id +msgid "Simplified invoice partner" +msgstr "Socio de factura simplificada" + +#. module: l10n_es_pos_oca +#: model_terms:ir.ui.view,arch_db:l10n_es_pos_oca.view_pos_order_filter_simplified_invoice msgid "Simplified invoices" msgstr "Facturas simplificadas" -#. module: l10n_es_pos +#. module: l10n_es_pos_oca #. odoo-python -#: code:addons/l10n_es_pos/models/ir_sequence.py:0 +#: code:addons/l10n_es_pos_oca/models/ir_sequence.py:0 #, python-format msgid "" "There is already a simplified invoice sequence with that prefix and it " @@ -165,15 +170,8 @@ msgstr "" "Ya existe una secuencia de Factura Simplificada con ese prefijo y este " "debería ser único." -#. module: l10n_es_pos -#: model:ir.model.fields,field_description:l10n_es_pos.field_pos_config__iface_l10n_es_simplified_invoice -#: model:ir.model.fields,field_description:l10n_es_pos.field_res_config_settings__pos_iface_l10n_es_simplified_invoice +#. module: l10n_es_pos_oca +#: model:ir.model.fields,field_description:l10n_es_pos_oca.field_pos_config__iface_l10n_es_simplified_invoice +#: model:ir.model.fields,field_description:l10n_es_pos_oca.field_res_config_settings__pos_iface_l10n_es_simplified_invoice msgid "Use simplified invoices for this POS" msgstr "Usar Facturas Simplificadas en este Punto de Venta" - -#. module: l10n_es_pos -#. odoo-javascript -#: code:addons/l10n_es_pos/static/src/xml/pos.xml:0 -#, python-format -msgid "on" -msgstr "sobre" diff --git a/l10n_es_pos_oca/models/pos_config.py b/l10n_es_pos_oca/models/pos_config.py index cb7d941fcd4..3db0054ce3f 100644 --- a/l10n_es_pos_oca/models/pos_config.py +++ b/l10n_es_pos_oca/models/pos_config.py @@ -31,7 +31,6 @@ def _compute_simplified_invoice_sequence(self): string="Simplified Invoice IDs Sequence", help="Autogenerate for each POS created", copy=False, - readonly=True, ) l10n_es_simplified_invoice_limit = fields.Float( string="Sim.Inv limit amount", @@ -42,25 +41,31 @@ def _compute_simplified_invoice_sequence(self): ) l10n_es_simplified_invoice_prefix = fields.Char( "Simplified Invoice prefix", - readonly=True, compute="_compute_simplified_invoice_sequence", ) l10n_es_simplified_invoice_padding = fields.Integer( "Simplified Invoice padding", - readonly=True, compute="_compute_simplified_invoice_sequence", ) l10n_es_simplified_invoice_number = fields.Integer( "Sim.Inv number", - readonly=True, compute="_compute_simplified_invoice_sequence", ) + simplified_partner_id = fields.Many2one( + comodel_name="res.partner", + string="Simplified invoice partner", + compute="_compute_simplified_partner_id", + ) @api.depends("iface_l10n_es_simplified_invoice") def _compute_simplified_config(self): for pos in self: pos.is_simplified_config = pos.iface_l10n_es_simplified_invoice + def _compute_simplified_partner_id(self): + for config in self: + config.simplified_partner_id = self.env.ref("l10n_es.partner_simplified").id + @api.model_create_multi def create(self, vals_list): for vals in vals_list: diff --git a/l10n_es_pos_oca/readme/CONTRIBUTORS.md b/l10n_es_pos_oca/readme/CONTRIBUTORS.md index ef8104ff8ac..fad81e9afe8 100644 --- a/l10n_es_pos_oca/readme/CONTRIBUTORS.md +++ b/l10n_es_pos_oca/readme/CONTRIBUTORS.md @@ -16,3 +16,5 @@ - Manuel Regidor - [Factor Libre](https://factorlibre.com/): - Daniel Duque \<\> +- [APSL-Nagarro](https://www.apsl.tech): + - Antoni Marroig \<\> diff --git a/l10n_es_pos_oca/static/description/index.html b/l10n_es_pos_oca/static/description/index.html index 4d21953d58c..7c286a4a90a 100644 --- a/l10n_es_pos_oca/static/description/index.html +++ b/l10n_es_pos_oca/static/description/index.html @@ -8,10 +8,11 @@ /* :Author: David Goodger (goodger@python.org) -:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $ +:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $ :Copyright: This stylesheet has been placed in the public domain. Default cascading style sheet for the HTML output of Docutils. +Despite the name, some widely supported CSS2 features are used. See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to customize this style sheet. @@ -274,7 +275,7 @@ margin-left: 2em ; margin-right: 2em } -pre.code .ln { color: grey; } /* line numbers */ +pre.code .ln { color: gray; } /* line numbers */ pre.code, code { background-color: #eeeeee } pre.code .comment, code .comment { color: #5C6576 } pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } @@ -300,7 +301,7 @@ span.pre { white-space: pre } -span.problematic { +span.problematic, pre.problematic { color: red } span.section-subtitle { @@ -484,12 +485,18 @@

Contributors

  • Daniel Duque <daniel.duque@factorlibre.com>
  • +
  • APSL-Nagarro: +
  • Maintainers

    This module is maintained by the OCA.

    -Odoo Community Association + +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.

    diff --git a/l10n_es_pos_oca/static/src/app/screens/payment_screen/payment_screen.esm.js b/l10n_es_pos_oca/static/src/app/screens/payment_screen/payment_screen.esm.js new file mode 100644 index 00000000000..3d0a1f69f6b --- /dev/null +++ b/l10n_es_pos_oca/static/src/app/screens/payment_screen/payment_screen.esm.js @@ -0,0 +1,29 @@ +/** @odoo-module */ + +/* Copyright 2016 David Gómez Quilón + Copyright 2018 Tecnativa - David Vidal + Copyright 2020 Tecnativa - João Marques + Copyright 2024 (APSL-Nagarro) - Antoni Marroig + License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +*/ + +import {PaymentScreen} from "@point_of_sale/app/screens/payment_screen/payment_screen"; +import {patch} from "@web/core/utils/patch"; + +patch(PaymentScreen.prototype, { + async validateOrder(isForceValidate) { + const below_limit = + this.currentOrder.get_total_with_tax() <= + this.pos.config.l10n_es_simplified_invoice_limit; + if (this.pos.config.is_simplified_config) { + const order = this.currentOrder; + if (below_limit && !order.to_invoice) { + await order.set_simple_inv_number(); + } else { + // Force invoice above limit. Online is needed. + order.to_invoice = true; + } + } + await super.validateOrder(isForceValidate); + }, +}); diff --git a/l10n_es_pos_oca/static/src/app/screens/receipt_screen/receipt/order_receipt.xml b/l10n_es_pos_oca/static/src/app/screens/receipt_screen/receipt/order_receipt.xml new file mode 100644 index 00000000000..b2d9d280ee4 --- /dev/null +++ b/l10n_es_pos_oca/static/src/app/screens/receipt_screen/receipt/order_receipt.xml @@ -0,0 +1,19 @@ + + + + + props.data.pos_qr_code and (!props.data.is_simplified_config or props.data.is_to_invoice) + + + props.data.ticket_code and (!props.data.is_simplified_config or props.data.is_to_invoice) + + + diff --git a/l10n_es_pos_oca/static/src/app/screens/receipt_screen/receipt/receipt_header/receipt_header.xml b/l10n_es_pos_oca/static/src/app/screens/receipt_screen/receipt/receipt_header/receipt_header.xml new file mode 100644 index 00000000000..445f0aad35b --- /dev/null +++ b/l10n_es_pos_oca/static/src/app/screens/receipt_screen/receipt/receipt_header/receipt_header.xml @@ -0,0 +1,42 @@ + + + + + +
    Simplified invoice
    +
    + + + +
    +
    +
    +
    ()
    + + + + +
    Customer:
    +
    :
    +
    + + + + diff --git a/l10n_es_pos_oca/static/src/app/screens/ticket_screen/ticket_screen.esm.js b/l10n_es_pos_oca/static/src/app/screens/ticket_screen/ticket_screen.esm.js new file mode 100644 index 00000000000..d5c1d0b4531 --- /dev/null +++ b/l10n_es_pos_oca/static/src/app/screens/ticket_screen/ticket_screen.esm.js @@ -0,0 +1,23 @@ +/** @odoo-module */ + +/* Copyright 2016 David Gómez Quilón + Copyright 2018-19 Tecnativa - David Vidal + Copyright 2024 (APSL-Nagarro) - Antoni Marroig + License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +*/ + +import {TicketScreen} from "@point_of_sale/app/screens/ticket_screen/ticket_screen"; +import {_t} from "@web/core/l10n/translation"; +import {patch} from "@web/core/utils/patch"; + +patch(TicketScreen.prototype, { + _getSearchFields() { + const fields = super._getSearchFields(); + fields.SIMPLIFIED_INVOICE = { + repr: (order) => order.name, + displayName: _t("Simplified Invoice"), + modelField: "l10n_es_unique_id", + }; + return fields; + }, +}); diff --git a/l10n_es_pos_oca/static/src/xml/Screens/OrderManagementScreen/TicketScreen.xml b/l10n_es_pos_oca/static/src/app/screens/ticket_screen/ticket_screen.xml similarity index 97% rename from l10n_es_pos_oca/static/src/xml/Screens/OrderManagementScreen/TicketScreen.xml rename to l10n_es_pos_oca/static/src/app/screens/ticket_screen/ticket_screen.xml index aede32d3455..7350c4e8a55 100644 --- a/l10n_es_pos_oca/static/src/xml/Screens/OrderManagementScreen/TicketScreen.xml +++ b/l10n_es_pos_oca/static/src/app/screens/ticket_screen/ticket_screen.xml @@ -5,7 +5,6 @@ t-name="TicketScreen" t-inherit="point_of_sale.TicketScreen" t-inherit-mode="extension" - owl="1" >
    Simplified Invoice
    diff --git a/l10n_es_pos_oca/static/src/app/store/models.esm.js b/l10n_es_pos_oca/static/src/app/store/models.esm.js new file mode 100644 index 00000000000..493a0733dd0 --- /dev/null +++ b/l10n_es_pos_oca/static/src/app/store/models.esm.js @@ -0,0 +1,84 @@ +/** @odoo-module */ + +/* Copyright 2016 David Gómez Quilón + Copyright 2018-19 Tecnativa - David Vidal + Copyright 2024 (APSL-Nagarro) - Antoni Marroig + License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +*/ + +import {ConnectionLostError} from "@web/core/network/rpc_service"; +import {Order} from "@point_of_sale/app/store/models"; +import {patch} from "@web/core/utils/patch"; + +patch(Order.prototype, { + get_total_with_tax() { + const total = super.get_total_with_tax(...arguments); + const below_limit = total <= this.pos.config.l10n_es_simplified_invoice_limit; + this.is_simplified_invoice = + below_limit && this.pos.config.is_simplified_config; + return total; + }, + set_simple_inv_number() { + return this.pos + .get_simple_inv_next_number() + .then(([config]) => { + // We'll get the number from DB only when we're online. Otherwise + // the sequence will run on the client side until the orders are + // synced. + this.pos._set_simplified_invoice_number(config); + }) + .catch((error) => { + // We'll only consider network errors + if (!error instanceof ConnectionLostError) { + throw error; + } + }) + .finally(() => { + const simplified_invoice_number = + this.pos._get_simplified_invoice_number(); + this.l10n_es_unique_id = simplified_invoice_number; + this.is_simplified_invoice = true; + }); + }, + get_base_by_tax() { + const base_by_tax = {}; + this.get_orderlines().forEach(function (line) { + const tax_detail = line.get_tax_details(); + const base_price = line.get_price_without_tax(); + if (tax_detail) { + Object.keys(tax_detail).forEach(function (tax) { + if (Object.keys(base_by_tax).includes(tax)) { + base_by_tax[tax] += base_price; + } else { + base_by_tax[tax] = base_price; + } + }); + } + }); + return base_by_tax; + }, + init_from_JSON(json) { + super.init_from_JSON(...arguments); + this.to_invoice = json.to_invoice; + this.l10n_es_unique_id = json.l10n_es_unique_id; + }, + export_as_JSON() { + const res = super.export_as_JSON(...arguments); + res.to_invoice = this.is_to_invoice(); + if (!res.to_invoice) { + res.l10n_es_unique_id = this.l10n_es_unique_id; + } + return res; + }, + export_for_printing() { + const result = super.export_for_printing(...arguments); + result.l10n_es_unique_id = this.l10n_es_unique_id; + result.is_simplified_config = this.pos.config.is_simplified_config; + result.to_invoice = this.to_invoice; + const base_by_tax = this.get_base_by_tax(); + for (const tax of result.tax_details) { + tax.base = base_by_tax[tax.tax.id]; + } + return result; + }, +}); diff --git a/l10n_es_pos_oca/static/src/app/store/pos_store.esm.js b/l10n_es_pos_oca/static/src/app/store/pos_store.esm.js new file mode 100644 index 00000000000..99ce26cc1ef --- /dev/null +++ b/l10n_es_pos_oca/static/src/app/store/pos_store.esm.js @@ -0,0 +1,97 @@ +/** @odoo-module */ + +/* Copyright 2016 David Gómez Quilón + Copyright 2018-19 Tecnativa - David Vidal + Copyright 2024 (APSL-Nagarro) - Antoni Marroig + License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +*/ + +import {ConnectionLostError} from "@web/core/network/rpc_service"; +import {PosStore} from "@point_of_sale/app/store/pos_store"; +import {patch} from "@web/core/utils/patch"; + +patch(PosStore.prototype, { + async setup() { + await super.setup(...arguments); + this.pushed_simple_invoices = []; + // Unique UUID + this.own_simplified_invoice_prefix = ""; + }, + get_simple_inv_next_number() { + // If we had pending orders to sync we want to avoid getting the next number + // from the DB as we'd be ovelaping the sequence. + if (this.db.get_orders().length) { + return Promise.reject(new ConnectionLostError()); + } + return this.orm.searchRead( + "pos.config", + ["id", "=", this.config.id], + ["l10n_es_simplified_invoice_number"] + ); + }, + get_padding_simple_inv(number, padding) { + var diff = padding - number.toString().length; + let result = ""; + if (diff <= 0) { + result = number; + } else { + for (let i = 0; i < diff; i++) { + result += "0"; + } + result += number; + } + return result; + }, + _update_sequence_number() { + ++this.config.l10n_es_simplified_invoice_number; + }, + push_simple_invoice(order) { + if (this.pushed_simple_invoices.indexOf(order.data.l10n_es_unique_id) === -1) { + this.pushed_simple_invoices.push(order.data.l10n_es_unique_id); + this._update_sequence_number(); + } + }, + async _flush_orders(orders) { + var self = this; + // Save pushed orders numbers + orders.forEach((order) => { + if (!order.data.to_invoice) { + self.push_simple_invoice(order); + } + }); + return await super._flush_orders(...arguments); + }, + _set_simplified_invoice_number(config) { + this.config.l10n_es_simplified_invoice_number = + config.l10n_es_simplified_invoice_number; + }, + _get_simplified_invoice_number() { + return ( + this.config.l10n_es_simplified_invoice_prefix + + this.get_padding_simple_inv( + this.config.l10n_es_simplified_invoice_number, + this.config.l10n_es_simplified_invoice_padding + ) + ); + }, + getReceiptHeaderData(order) { + const result = super.getReceiptHeaderData(...arguments); + if (order) { + result.is_simplified_config = this.config.is_simplified_config; + result.partner = order.get_partner(); + result.l10n_es_unique_id = order.l10n_es_unique_id; + result.to_invoice = order.to_invoice; + } + return result; + }, + _getCreateOrderContext(orders) { + let context = super._getCreateOrderContext(...arguments); + const noOrderPrinting = orders.every( + (order) => !order.to_invoice && order.data.is_simplified_config + ); + if (noOrderPrinting) { + context = {...context, generate_pdf: false}; + } + return context; + }, +}); diff --git a/l10n_es_pos_oca/static/src/js/PaymentScreen.js b/l10n_es_pos_oca/static/src/js/PaymentScreen.js deleted file mode 100644 index f48fabad54d..00000000000 --- a/l10n_es_pos_oca/static/src/js/PaymentScreen.js +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright 2016 David Gómez Quilón - Copyright 2018 Tecnativa - David Vidal - Copyright 2020 Tecnativa - João Marques - License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -*/ - -odoo.define("l10n_es_pos.PaymentScreen", function (require) { - "use strict"; - - const PaymentScreen = require("point_of_sale.PaymentScreen"); - const Registries = require("point_of_sale.Registries"); - - // eslint-disable-next-line no-shadow - const L10nEsPosPaymentScreen = (PaymentScreen) => - class extends PaymentScreen { - async validateOrder(isForceValidate) { - const below_limit = - this.currentOrder.get_total_with_tax() <= - this.env.pos.config.l10n_es_simplified_invoice_limit; - if (this.env.pos.config.is_simplified_config) { - const order = this.currentOrder; - if (below_limit && !order.to_invoice) { - await order.set_simple_inv_number(); - } else { - // Force invoice above limit. Online is needed. - order.to_invoice = true; - } - } - await super.validateOrder(isForceValidate); - } - }; - - Registries.Component.extend(PaymentScreen, L10nEsPosPaymentScreen); - - return PaymentScreen; -}); diff --git a/l10n_es_pos_oca/static/src/js/Screens/TicketScreen/TicketScreen.js b/l10n_es_pos_oca/static/src/js/Screens/TicketScreen/TicketScreen.js deleted file mode 100644 index 7909742459a..00000000000 --- a/l10n_es_pos_oca/static/src/js/Screens/TicketScreen/TicketScreen.js +++ /dev/null @@ -1,21 +0,0 @@ -odoo.define("l10n_es_pos.TicketScreen", function (require) { - "use strict"; - - const TicketScreen = require("point_of_sale.TicketScreen"); - const Registries = require("point_of_sale.Registries"); - - const L10nEsPosTicketScreen = (TicketScreen) => - class extends TicketScreen { - _getSearchFields() { - const fields = super._getSearchFields(); - fields.SIMPLIFIED_INVOICE = { - repr: (order) => order.name, - displayName: this.env._t("Simplified Invoice"), - modelField: "l10n_es_unique_id", - }; - return fields; - } - }; - Registries.Component.extend(TicketScreen, L10nEsPosTicketScreen); - return TicketScreen; -}); diff --git a/l10n_es_pos_oca/static/src/js/models.js b/l10n_es_pos_oca/static/src/js/models.js deleted file mode 100644 index d4113bda593..00000000000 --- a/l10n_es_pos_oca/static/src/js/models.js +++ /dev/null @@ -1,172 +0,0 @@ -/* Copyright 2016 David Gómez Quilón - Copyright 2018-19 Tecnativa - David Vidal - License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -*/ - -odoo.define("l10n_es_pos.models", function (require) { - "use strict"; - - const {PosGlobalState, Order} = require("point_of_sale.models"); - const Registries = require("point_of_sale.Registries"); - const {isConnectionError} = require("point_of_sale.utils"); - const {ConnectionLostError} = require("@web/core/network/rpc_service"); - const field_utils = require("web.field_utils"); - - const L10NESGlobalState = (PosGlobalState) => - class L10NESGlobalState extends PosGlobalState { - constructor() { - super(...arguments); - this.pushed_simple_invoices = []; - // Unique UUID - this.own_simplified_invoice_prefix = ""; - } - get_simple_inv_next_number() { - // If we had pending orders to sync we want to avoid getting the next number - // from the DB as we'd be ovelaping the sequence. - if (this.env.pos.db.get_orders().length) { - return Promise.reject(new ConnectionLostError()); - } - return this.env.services.rpc({ - method: "search_read", - domain: [["id", "=", this.env.pos.config.id]], - fields: ["l10n_es_simplified_invoice_number"], - model: "pos.config", - }); - } - get_padding_simple_inv(number, padding) { - var diff = padding - number.toString().length; - let result = ""; - if (diff <= 0) { - result = number; - } else { - for (let i = 0; i < diff; i++) { - result += "0"; - } - result += number; - } - return result; - } - _update_sequence_number() { - ++this.config.l10n_es_simplified_invoice_number; - } - push_simple_invoice(order) { - if ( - this.pushed_simple_invoices.indexOf( - order.data.l10n_es_unique_id - ) === -1 - ) { - this.pushed_simple_invoices.push(order.data.l10n_es_unique_id); - this._update_sequence_number(); - } - } - _flush_orders(orders) { - var self = this; - // Save pushed orders numbers - _.each(orders, function (order) { - if (!order.data.to_invoice) { - self.push_simple_invoice(order); - } - }); - return super._flush_orders(...arguments); - } - _set_simplified_invoice_number(config) { - this.config.l10n_es_simplified_invoice_number = - config.l10n_es_simplified_invoice_number; - } - _get_simplified_invoice_number() { - return ( - this.config.l10n_es_simplified_invoice_prefix + - this.get_padding_simple_inv( - this.config.l10n_es_simplified_invoice_number, - this.config.l10n_es_simplified_invoice_padding - ) - ); - } - }; - Registries.Model.extend(PosGlobalState, L10NESGlobalState); - - const L10NESOrder = (Order) => - class L10NESOrder extends Order { - get_total_with_tax() { - const total = super.get_total_with_tax(...arguments); - const below_limit = - total <= this.pos.config.l10n_es_simplified_invoice_limit; - this.is_simplified_invoice = - below_limit && this.pos.config.is_simplified_config; - return total; - } - set_simple_inv_number() { - return this.pos - .get_simple_inv_next_number() - .then(([config]) => { - // We'll get the number from DB only when we're online. Otherwise - // the sequence will run on the client side until the orders are - // synced. - this.pos._set_simplified_invoice_number(config); - }) - .catch((error) => { - // We'll only consider network errors - if (!isConnectionError(error)) { - throw error; - } - }) - .finally(() => { - const simplified_invoice_number = - this.pos._get_simplified_invoice_number(); - this.l10n_es_unique_id = simplified_invoice_number; - this.is_simplified_invoice = true; - }); - } - get_base_by_tax() { - const base_by_tax = {}; - this.get_orderlines().forEach(function (line) { - const tax_detail = line.get_tax_details(); - const base_price = line.get_price_without_tax(); - if (tax_detail) { - Object.keys(tax_detail).forEach(function (tax) { - if (Object.keys(base_by_tax).includes(tax)) { - base_by_tax[tax] += base_price; - } else { - base_by_tax[tax] = base_price; - } - }); - } - }); - return base_by_tax; - } - init_from_JSON(json) { - super.init_from_JSON(...arguments); - this.to_invoice = json.to_invoice; - this.l10n_es_unique_id = json.l10n_es_unique_id; - this.formatted_validation_date = field_utils.format.datetime( - moment(this.validation_date), - {}, - {timezone: false} - ); - } - export_as_JSON() { - const res = super.export_as_JSON(...arguments); - res.to_invoice = this.is_to_invoice(); - if (!res.to_invoice) { - res.l10n_es_unique_id = this.l10n_es_unique_id; - } - return res; - } - export_for_printing() { - const result = super.export_for_printing(...arguments); - const company = this.pos.company; - result.l10n_es_unique_id = this.l10n_es_unique_id; - result.to_invoice = this.to_invoice; - result.company.street = company.street; - result.company.zip = company.zip; - result.company.city = company.city; - result.company.state_id = company.state_id; - const base_by_tax = this.get_base_by_tax(); - for (const tax of result.tax_details) { - tax.base = base_by_tax[tax.tax.id]; - } - return result; - } - }; - Registries.Model.extend(Order, L10NESOrder); -}); diff --git a/l10n_es_pos_oca/static/src/xml/pos.xml b/l10n_es_pos_oca/static/src/xml/pos.xml deleted file mode 100644 index 0d0a2e23d13..00000000000 --- a/l10n_es_pos_oca/static/src/xml/pos.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - -
    -
    Simplified invoice
    -

    - - -
    - -
    -
    - - - () -
    -
    - -
    - -
    Customer:
    - -
    :
    -
    - -
    -
    -
    -
    - - on - - - on - - - !env.pos.config.is_simplified_config or receipt.is_to_invoice - -
    -
    diff --git a/l10n_es_pos_oca/views/res_config_settings_views.xml b/l10n_es_pos_oca/views/res_config_settings_views.xml index 5819a00a56b..ca4f204f232 100644 --- a/l10n_es_pos_oca/views/res_config_settings_views.xml +++ b/l10n_es_pos_oca/views/res_config_settings_views.xml @@ -5,16 +5,13 @@ res.config.settings - -
    -
    + + -
    -
    -
    -
    -
    + + -
    -
    +
    {'required': ['|', ('pos_company_has_template', '=', True), ('pos_l10n_es_simplified_invoice_sequence_id', '=', True)]} + name="required" + >pos_company_has_template or pos_l10n_es_simplified_invoice_sequence_id