diff --git a/account_budget_classify_by_mis/README.rst b/account_budget_classify_by_mis/README.rst new file mode 100644 index 0000000000..7e96ea399e --- /dev/null +++ b/account_budget_classify_by_mis/README.rst @@ -0,0 +1,30 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +============================== +Account budget classify by mis +============================== + +* In analytics budget new field "Mis Report Template". +* In "Budget Line" new field "MY Report KPI", being able to select only those + that belong to "My Report Template" of the analytics budget. + +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 smash it by providing detailed and welcomed feedback. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Contributors +------------ + +* Ana Juaristi +* Alfredo de la Fuente diff --git a/account_budget_classify_by_mis/__init__.py b/account_budget_classify_by_mis/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/account_budget_classify_by_mis/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/account_budget_classify_by_mis/__manifest__.py b/account_budget_classify_by_mis/__manifest__.py new file mode 100644 index 0000000000..158f5bd52b --- /dev/null +++ b/account_budget_classify_by_mis/__manifest__.py @@ -0,0 +1,16 @@ +# Copyright 2024 Alfredo de la Fuente - AvanzOSC +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html +{ + "name": "Account Budget Classify By Mis", + "version": "16.0.1.0.0", + "category": "Accounting", + "license": "AGPL-3", + "author": "AvanzOSC", + "website": "https://github.com/avanzosc/odoo-addons", + "depends": ["account_budget_oca", "mis_builder"], + "data": [ + "views/crossovered_budget_views.xml", + "views/crossovered_budget_lines_views.xml", + ], + "installable": True, +} diff --git a/account_budget_classify_by_mis/i18n/account_budget_classify_by_miss.pot b/account_budget_classify_by_mis/i18n/account_budget_classify_by_miss.pot new file mode 100644 index 0000000000..25715f763c --- /dev/null +++ b/account_budget_classify_by_mis/i18n/account_budget_classify_by_miss.pot @@ -0,0 +1,52 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_budget_classify_by_mis +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-31 07:47+0000\n" +"PO-Revision-Date: 2024-10-31 07:47+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: account_budget_classify_by_mis +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_mis.view_crossovered_budget_line_search +msgid "Analytic Account" +msgstr "" + +#. module: account_budget_classify_by_mis +#: model:ir.model,name:account_budget_classify_by_mis.model_crossovered_budget +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_mis.view_crossovered_budget_line_search +msgid "Budget" +msgstr "" + +#. module: account_budget_classify_by_mis +#: model:ir.model,name:account_budget_classify_by_mis.model_crossovered_budget_lines +msgid "Budget Line" +msgstr "" + +#. module: account_budget_classify_by_mis +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_mis.view_crossovered_budget_line_search +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_mis.view_crossovered_budget_search +msgid "Group By" +msgstr "" + +#. module: account_budget_classify_by_mis +#: model:ir.model.fields,field_description:account_budget_classify_by_mis.field_crossovered_budget_lines__mis_report_kpi_id +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_mis.view_crossovered_budget_line_search +msgid "MIS Report KPI" +msgstr "" + +#. module: account_budget_classify_by_mis +#: model:ir.model.fields,field_description:account_budget_classify_by_mis.field_crossovered_budget__mis_report_template_id +#: model:ir.model.fields,field_description:account_budget_classify_by_mis.field_crossovered_budget_lines__mis_report_template_id +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_mis.view_crossovered_budget_line_search +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_mis.view_crossovered_budget_search +msgid "Mis Report Template" +msgstr "" diff --git a/account_budget_classify_by_mis/i18n/ca_ES.po b/account_budget_classify_by_mis/i18n/ca_ES.po new file mode 100644 index 0000000000..9a7a547243 --- /dev/null +++ b/account_budget_classify_by_mis/i18n/ca_ES.po @@ -0,0 +1,52 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_budget_classify_by_mis +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-31 07:47+0000\n" +"PO-Revision-Date: 2024-10-31 07:47+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: account_budget_classify_by_mis +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_mis.view_crossovered_budget_line_search +msgid "Analytic Account" +msgstr "" + +#. module: account_budget_classify_by_mis +#: model:ir.model,name:account_budget_classify_by_mis.model_crossovered_budget +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_mis.view_crossovered_budget_line_search +msgid "Budget" +msgstr "Pressupost" + +#. module: account_budget_classify_by_mis +#: model:ir.model,name:account_budget_classify_by_mis.model_crossovered_budget_lines +msgid "Budget Line" +msgstr "Línia de pressupost" + +#. module: account_budget_classify_by_mis +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_mis.view_crossovered_budget_line_search +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_mis.view_crossovered_budget_search +msgid "Group By" +msgstr "" + +#. module: account_budget_classify_by_mis +#: model:ir.model.fields,field_description:account_budget_classify_by_mis.field_crossovered_budget_lines__mis_report_kpi_id +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_mis.view_crossovered_budget_line_search +msgid "MIS Report KPI" +msgstr "" + +#. module: account_budget_classify_by_mis +#: model:ir.model.fields,field_description:account_budget_classify_by_mis.field_crossovered_budget__mis_report_template_id +#: model:ir.model.fields,field_description:account_budget_classify_by_mis.field_crossovered_budget_lines__mis_report_template_id +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_mis.view_crossovered_budget_line_search +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_mis.view_crossovered_budget_search +msgid "Mis Report Template" +msgstr "" diff --git a/account_budget_classify_by_mis/i18n/en_GB.po b/account_budget_classify_by_mis/i18n/en_GB.po new file mode 100644 index 0000000000..639e44ce94 --- /dev/null +++ b/account_budget_classify_by_mis/i18n/en_GB.po @@ -0,0 +1,52 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_budget_classify_by_mis +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-31 07:48+0000\n" +"PO-Revision-Date: 2024-10-31 07:48+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: account_budget_classify_by_mis +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_mis.view_crossovered_budget_line_search +msgid "Analytic Account" +msgstr "" + +#. module: account_budget_classify_by_mis +#: model:ir.model,name:account_budget_classify_by_mis.model_crossovered_budget +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_mis.view_crossovered_budget_line_search +msgid "Budget" +msgstr "" + +#. module: account_budget_classify_by_mis +#: model:ir.model,name:account_budget_classify_by_mis.model_crossovered_budget_lines +msgid "Budget Line" +msgstr "" + +#. module: account_budget_classify_by_mis +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_mis.view_crossovered_budget_line_search +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_mis.view_crossovered_budget_search +msgid "Group By" +msgstr "" + +#. module: account_budget_classify_by_mis +#: model:ir.model.fields,field_description:account_budget_classify_by_mis.field_crossovered_budget_lines__mis_report_kpi_id +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_mis.view_crossovered_budget_line_search +msgid "MIS Report KPI" +msgstr "" + +#. module: account_budget_classify_by_mis +#: model:ir.model.fields,field_description:account_budget_classify_by_mis.field_crossovered_budget__mis_report_template_id +#: model:ir.model.fields,field_description:account_budget_classify_by_mis.field_crossovered_budget_lines__mis_report_template_id +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_mis.view_crossovered_budget_line_search +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_mis.view_crossovered_budget_search +msgid "Mis Report Template" +msgstr "" diff --git a/account_budget_classify_by_mis/i18n/es.po b/account_budget_classify_by_mis/i18n/es.po new file mode 100644 index 0000000000..7253372fc9 --- /dev/null +++ b/account_budget_classify_by_mis/i18n/es.po @@ -0,0 +1,52 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_budget_classify_by_miss +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-31 07:48+0000\n" +"PO-Revision-Date: 2024-10-31 07:48+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: account_budget_classify_by_miss +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_miss.view_crossovered_budget_line_search +msgid "Analytic Account" +msgstr "Cuenta analítica" + +#. module: account_budget_classify_by_miss +#: model:ir.model,name:account_budget_classify_by_miss.model_crossovered_budget +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_miss.view_crossovered_budget_line_search +msgid "Budget" +msgstr "Presupuesto" + +#. module: account_budget_classify_by_miss +#: model:ir.model,name:account_budget_classify_by_miss.model_crossovered_budget_lines +msgid "Budget Line" +msgstr "Línea de Presupuesto" + +#. module: account_budget_classify_by_miss +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_miss.view_crossovered_budget_line_search +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_miss.view_crossovered_budget_search +msgid "Group By" +msgstr "Agrupar por" + +#. module: account_budget_classify_by_miss +#: model:ir.model.fields,field_description:account_budget_classify_by_miss.field_crossovered_budget_lines__mis_report_kpi_id +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_miss.view_crossovered_budget_line_search +msgid "MIS Report KPI" +msgstr "KPI de informe MIS" + +#. module: account_budget_classify_by_miss +#: model:ir.model.fields,field_description:account_budget_classify_by_miss.field_crossovered_budget__mis_report_template_id +#: model:ir.model.fields,field_description:account_budget_classify_by_miss.field_crossovered_budget_lines__mis_report_template_id +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_miss.view_crossovered_budget_line_search +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_miss.view_crossovered_budget_search +msgid "Mis Report Template" +msgstr "Plantilla de presupuesto MIS" diff --git a/account_budget_classify_by_mis/i18n/fr.po b/account_budget_classify_by_mis/i18n/fr.po new file mode 100644 index 0000000000..cbd3d74454 --- /dev/null +++ b/account_budget_classify_by_mis/i18n/fr.po @@ -0,0 +1,52 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_budget_classify_by_mis +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-31 07:48+0000\n" +"PO-Revision-Date: 2024-10-31 07:48+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: account_budget_classify_by_mis +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_mis.view_crossovered_budget_line_search +msgid "Analytic Account" +msgstr "" + +#. module: account_budget_classify_by_mis +#: model:ir.model,name:account_budget_classify_by_mis.model_crossovered_budget +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_mis.view_crossovered_budget_line_search +msgid "Budget" +msgstr "" + +#. module: account_budget_classify_by_mis +#: model:ir.model,name:account_budget_classify_by_mis.model_crossovered_budget_lines +msgid "Budget Line" +msgstr "Ligne de budget" + +#. module: account_budget_classify_by_mis +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_mis.view_crossovered_budget_line_search +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_mis.view_crossovered_budget_search +msgid "Group By" +msgstr "" + +#. module: account_budget_classify_by_mis +#: model:ir.model.fields,field_description:account_budget_classify_by_mis.field_crossovered_budget_lines__mis_report_kpi_id +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_mis.view_crossovered_budget_line_search +msgid "MIS Report KPI" +msgstr "" + +#. module: account_budget_classify_by_mis +#: model:ir.model.fields,field_description:account_budget_classify_by_mis.field_crossovered_budget__mis_report_template_id +#: model:ir.model.fields,field_description:account_budget_classify_by_mis.field_crossovered_budget_lines__mis_report_template_id +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_mis.view_crossovered_budget_line_search +#: model_terms:ir.ui.view,arch_db:account_budget_classify_by_mis.view_crossovered_budget_search +msgid "Mis Report Template" +msgstr "" diff --git a/account_budget_classify_by_mis/models/__init__.py b/account_budget_classify_by_mis/models/__init__.py new file mode 100644 index 0000000000..03609fb152 --- /dev/null +++ b/account_budget_classify_by_mis/models/__init__.py @@ -0,0 +1,2 @@ +from . import crossovered_budget +from . import crossovered_budget_lines diff --git a/account_budget_classify_by_mis/models/crossovered_budget.py b/account_budget_classify_by_mis/models/crossovered_budget.py new file mode 100644 index 0000000000..19e2272ae4 --- /dev/null +++ b/account_budget_classify_by_mis/models/crossovered_budget.py @@ -0,0 +1,11 @@ +# Copyright 2024 Alfredo de la Fuente - AvanzOSC +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html +from odoo import fields, models + + +class CrossoveredBudget(models.Model): + _inherit = "crossovered.budget" + + mis_report_template_id = fields.Many2one( + string="Mis Report Template", comodel_name="mis.report", copy=False + ) diff --git a/account_budget_classify_by_mis/models/crossovered_budget_lines.py b/account_budget_classify_by_mis/models/crossovered_budget_lines.py new file mode 100644 index 0000000000..b5b5c60fc6 --- /dev/null +++ b/account_budget_classify_by_mis/models/crossovered_budget_lines.py @@ -0,0 +1,14 @@ +# Copyright 2024 Alfredo de la Fuente - AvanzOSC +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html +from odoo import fields, models + + +class CrossoveredBudgetLines(models.Model): + _inherit = "crossovered.budget.lines" + + mis_report_template_id = fields.Many2one( + string="Mis Report Template", comodel_name="mis.report", copy=False + ) + mis_report_kpi_id = fields.Many2one( + string="MIS Report KPI", comodel_name="mis.report.kpi", copy=False + ) diff --git a/account_budget_classify_by_mis/views/crossovered_budget_lines_views.xml b/account_budget_classify_by_mis/views/crossovered_budget_lines_views.xml new file mode 100644 index 0000000000..c00f275828 --- /dev/null +++ b/account_budget_classify_by_mis/views/crossovered_budget_lines_views.xml @@ -0,0 +1,76 @@ + + + + crossovered.budget.lines + + + + + + + + + + + crossovered.budget.lines + + + + + + + + + + + crossovered.budget.lines + + + + + + + + + + + + + + + + + + diff --git a/account_budget_classify_by_mis/views/crossovered_budget_views.xml b/account_budget_classify_by_mis/views/crossovered_budget_views.xml new file mode 100644 index 0000000000..2fc550ea47 --- /dev/null +++ b/account_budget_classify_by_mis/views/crossovered_budget_views.xml @@ -0,0 +1,80 @@ + + + + crossovered.budget + + + + + + + {'default_date_from': date_from,'default_date_to': date_to, 'default_mis_report_template_id': mis_report_template_id} + + + + + + + + + + + + + + crossovered.budget + + + + + + + + + + crossovered.budget + + + + + + + + + + + + + diff --git a/account_invoice_line_lot/models/sale_order_line.py b/account_invoice_line_lot/models/sale_order_line.py index f468b00d36..7e92a83816 100644 --- a/account_invoice_line_lot/models/sale_order_line.py +++ b/account_invoice_line_lot/models/sale_order_line.py @@ -6,8 +6,8 @@ class SaleOrderLine(models.Model): _inherit = "sale.order.line" - def _prepare_invoice_line(self, qty): - values = super()._prepare_invoice_line(qty) + def _prepare_invoice_line(self, **optional_values): + values = super()._prepare_invoice_line(**optional_values) cond = [("sale_line_id", "=", self.id)] moves = self.env["stock.move"].search(cond) for move in moves: diff --git a/account_invoice_print_image/README.rst b/account_invoice_print_image/README.rst new file mode 100644 index 0000000000..c131c83d2a --- /dev/null +++ b/account_invoice_print_image/README.rst @@ -0,0 +1,29 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +=========================== +Account invoice print image +=========================== + +* In company new field "Out Invoice Image". When a customer invoice is printed, + this image will be printed. + +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 smash it by providing detailed and welcomed feedback. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Contributors +------------ + +* Ana Juaristi +* Alfredo de la Fuente diff --git a/account_invoice_print_image/__init__.py b/account_invoice_print_image/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/account_invoice_print_image/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/account_invoice_print_image/__manifest__.py b/account_invoice_print_image/__manifest__.py new file mode 100644 index 0000000000..6326c39ca9 --- /dev/null +++ b/account_invoice_print_image/__manifest__.py @@ -0,0 +1,19 @@ +# Copyright 2024 Alfredo de la Fuente - AvanzOSC +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +{ + "name": "Account Invoice Print Image", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "author": "AvanzOSC", + "website": "https://github.com/avanzosc/odoo-addons", + "category": "Accounting/Accounting", + "depends": [ + "account", + ], + "data": [ + "data/layouts.xml", + "views/res_company_views.xml", + ], + "installable": True, +} diff --git a/account_invoice_print_image/data/layouts.xml b/account_invoice_print_image/data/layouts.xml new file mode 100644 index 0000000000..36991e281b --- /dev/null +++ b/account_invoice_print_image/data/layouts.xml @@ -0,0 +1,17 @@ + + + + diff --git a/account_invoice_print_image/i18n/account_invoice_print_image.pot b/account_invoice_print_image/i18n/account_invoice_print_image.pot new file mode 100644 index 0000000000..320effd188 --- /dev/null +++ b/account_invoice_print_image/i18n/account_invoice_print_image.pot @@ -0,0 +1,27 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_invoice_print_image +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0+e\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-11 07:50+0000\n" +"PO-Revision-Date: 2024-10-11 07:50+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: account_invoice_print_image +#: model:ir.model,name:account_invoice_print_image.model_res_company +msgid "Companies" +msgstr "" + +#. module: account_invoice_print_image +#: model:ir.model.fields,field_description:account_invoice_print_image.field_res_company__out_invoice_image +#: model_terms:ir.ui.view,arch_db:account_invoice_print_image.view_company_form +msgid "Out Invoice Image" +msgstr "" diff --git a/account_invoice_print_image/i18n/es.po b/account_invoice_print_image/i18n/es.po new file mode 100644 index 0000000000..dc076643a0 --- /dev/null +++ b/account_invoice_print_image/i18n/es.po @@ -0,0 +1,27 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_invoice_print_image +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0+e\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-11 07:51+0000\n" +"PO-Revision-Date: 2024-10-11 07:51+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: account_invoice_print_image +#: model:ir.model,name:account_invoice_print_image.model_res_company +msgid "Companies" +msgstr "Compañías" + +#. module: account_invoice_print_image +#: model:ir.model.fields,field_description:account_invoice_print_image.field_res_company__out_invoice_image +#: model_terms:ir.ui.view,arch_db:account_invoice_print_image.view_company_form +msgid "Out Invoice Image" +msgstr "Imagen factura salida" diff --git a/account_invoice_print_image/i18n/eu_ES.po b/account_invoice_print_image/i18n/eu_ES.po new file mode 100644 index 0000000000..8544ebf0aa --- /dev/null +++ b/account_invoice_print_image/i18n/eu_ES.po @@ -0,0 +1,27 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_invoice_print_image +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0+e\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-11 07:51+0000\n" +"PO-Revision-Date: 2024-10-11 07:51+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: account_invoice_print_image +#: model:ir.model,name:account_invoice_print_image.model_res_company +msgid "Companies" +msgstr "Enpresak" + +#. module: account_invoice_print_image +#: model:ir.model.fields,field_description:account_invoice_print_image.field_res_company__out_invoice_image +#: model_terms:ir.ui.view,arch_db:account_invoice_print_image.view_company_form +msgid "Out Invoice Image" +msgstr "" diff --git a/account_invoice_print_image/models/__init__.py b/account_invoice_print_image/models/__init__.py new file mode 100644 index 0000000000..aff44f335a --- /dev/null +++ b/account_invoice_print_image/models/__init__.py @@ -0,0 +1 @@ +from . import res_company diff --git a/account_invoice_print_image/models/res_company.py b/account_invoice_print_image/models/res_company.py new file mode 100644 index 0000000000..660fec3ce9 --- /dev/null +++ b/account_invoice_print_image/models/res_company.py @@ -0,0 +1,9 @@ +# Copyright 2024 Alfredo de la Fuente - AvanzOSC +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from odoo import fields, models + + +class ResCompany(models.Model): + _inherit = "res.company" + + out_invoice_image = fields.Binary(copy=False) diff --git a/account_invoice_print_image/views/res_company_views.xml b/account_invoice_print_image/views/res_company_views.xml new file mode 100644 index 0000000000..c26cbc93d1 --- /dev/null +++ b/account_invoice_print_image/views/res_company_views.xml @@ -0,0 +1,23 @@ + + + + res.company + + + + + + + + + + + + + + + diff --git a/account_invoice_report_grouped_by_picking_batch_transfer/README.rst b/account_invoice_report_grouped_by_picking_batch_transfer/README.rst new file mode 100644 index 0000000000..a5068ebf51 --- /dev/null +++ b/account_invoice_report_grouped_by_picking_batch_transfer/README.rst @@ -0,0 +1,29 @@ +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png + :target: https://www.gnu.org/licenses/agpl + :alt: License: AGPL-3 + +======================================================== +Account invoice report grouped by picking batch transfer +======================================================== + +* When printing the invoice grouped by picking, in addition to showing the + picking, also show the grouping of the picking. + +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 smash it by providing detailed and welcomed feedback. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Contributors +------------ + +* Alfredo de la Fuente +* Ana Juaristi \ No newline at end of file diff --git a/account_invoice_report_grouped_by_picking_batch_transfer/__init__.py b/account_invoice_report_grouped_by_picking_batch_transfer/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/account_invoice_report_grouped_by_picking_batch_transfer/__manifest__.py b/account_invoice_report_grouped_by_picking_batch_transfer/__manifest__.py new file mode 100644 index 0000000000..2207e23668 --- /dev/null +++ b/account_invoice_report_grouped_by_picking_batch_transfer/__manifest__.py @@ -0,0 +1,15 @@ +# Copyright 2024 Alfredo de la Fuente - AvanzOSC +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html +{ + "name": "Account Invoice Report Grouped By Picking Batch Transfer", + "version": "16.0.1.0.0", + "category": "Accounting & Finance", + "license": "AGPL-3", + "author": "AvanzOSC", + "website": "https://github.com/avanzosc/odoo-addons", + "depends": ["account_invoice_report_grouped_by_picking", "stock_picking_batch"], + "data": [ + "reports/account_invoice_reports.xml", + ], + "installable": True, +} diff --git a/account_invoice_report_grouped_by_picking_batch_transfer/i18n/account_invoice_report_grouped_by_picking_batch_transfer.pot b/account_invoice_report_grouped_by_picking_batch_transfer/i18n/account_invoice_report_grouped_by_picking_batch_transfer.pot new file mode 100644 index 0000000000..6c2a74beb6 --- /dev/null +++ b/account_invoice_report_grouped_by_picking_batch_transfer/i18n/account_invoice_report_grouped_by_picking_batch_transfer.pot @@ -0,0 +1,21 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_invoice_report_grouped_by_picking_batch_transfer +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-29 10:51+0000\n" +"PO-Revision-Date: 2024-10-29 10:51+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: account_invoice_report_grouped_by_picking_batch_transfer +#: model_terms:ir.ui.view,arch_db:account_invoice_report_grouped_by_picking_batch_transfer.report_invoice_document +msgid "Batch Transfer:" +msgstr "" diff --git a/account_invoice_report_grouped_by_picking_batch_transfer/i18n/en_US.po b/account_invoice_report_grouped_by_picking_batch_transfer/i18n/en_US.po new file mode 100644 index 0000000000..6c2a74beb6 --- /dev/null +++ b/account_invoice_report_grouped_by_picking_batch_transfer/i18n/en_US.po @@ -0,0 +1,21 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_invoice_report_grouped_by_picking_batch_transfer +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-29 10:51+0000\n" +"PO-Revision-Date: 2024-10-29 10:51+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: account_invoice_report_grouped_by_picking_batch_transfer +#: model_terms:ir.ui.view,arch_db:account_invoice_report_grouped_by_picking_batch_transfer.report_invoice_document +msgid "Batch Transfer:" +msgstr "" diff --git a/account_invoice_report_grouped_by_picking_batch_transfer/i18n/es.po b/account_invoice_report_grouped_by_picking_batch_transfer/i18n/es.po new file mode 100644 index 0000000000..555c8fafed --- /dev/null +++ b/account_invoice_report_grouped_by_picking_batch_transfer/i18n/es.po @@ -0,0 +1,21 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_invoice_report_grouped_by_picking_batch_transfer +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-29 10:51+0000\n" +"PO-Revision-Date: 2024-10-29 10:51+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: account_invoice_report_grouped_by_picking_batch_transfer +#: model_terms:ir.ui.view,arch_db:account_invoice_report_grouped_by_picking_batch_transfer.report_invoice_document +msgid "Batch Transfer:" +msgstr "Agrupación albarán:" diff --git a/account_invoice_report_grouped_by_picking_batch_transfer/reports/account_invoice_reports.xml b/account_invoice_report_grouped_by_picking_batch_transfer/reports/account_invoice_reports.xml new file mode 100644 index 0000000000..f545197f28 --- /dev/null +++ b/account_invoice_report_grouped_by_picking_batch_transfer/reports/account_invoice_reports.xml @@ -0,0 +1,14 @@ + + + + diff --git a/account_invoice_report_stamp/README.rst b/account_invoice_report_stamp/README.rst new file mode 100644 index 0000000000..dbd3e43282 --- /dev/null +++ b/account_invoice_report_stamp/README.rst @@ -0,0 +1,73 @@ +.. image:: https://img.shields.io/badge/license-LGPL--3-blue.svg + :target: https://opensource.org/licenses/LGPL-3.0 + :alt: License: LGPL-3 + +=============================== +account_invoice_report_stamp +=============================== + +Overview +======== + +The **account_invoice_report_stamp** module extends the **account** module by adding the company’s digital signature and stamp images to invoice reports. This functionality enhances the presentation and authenticity of invoice documents. + +Features +======== + +- Displays the company's digital signature image on invoices if configured in the **Company** settings. + +- Displays the company's stamp image on invoices if configured in the **Company** settings. + +Usage +===== + +1. **Install the Module**: + + - Install the **account_invoice_report_stamp** module via the Apps menu. + +2. **Configure Signature and Stamp**: + + - Ensure the **res_company_signature_fields** module is installed and populate the **Signature Image** and **Stamp Image** fields in the **Company** settings. + +3. **View Invoices**: + + - Generate or print an invoice. The report will display the company's digital signature and stamp if they are configured. + +Configuration +============= + +This module depends on the **res_company_signature_fields** module, which provides the fields for storing the signature and stamp images. + +Testing +======= + +Test the following scenarios to ensure the module functions as expected: + +- **Test Signature Display**: + + - Generate an invoice with a configured signature image in the **Company** settings. Verify that the image appears on the document. + +- **Test Stamp Display**: + + - Generate an invoice with a configured stamp image in the **Company** settings. Check that the image is displayed as expected. + +Bug Tracker +=========== + +If you encounter any issues, please report them on the GitHub repository at `GitHub Issues `_. + +Credits +======= + +Contributors +------------ + +* Ana Juaristi +* Unai Beristain + +For specific questions regarding this module, please contact the contributors. For support, please use the official issue tracker. + +License +======= + +This project is licensed under the LGPL-3 License. For more details, refer to the LICENSE file or visit . diff --git a/account_invoice_report_stamp/__init__.py b/account_invoice_report_stamp/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/account_invoice_report_stamp/__manifest__.py b/account_invoice_report_stamp/__manifest__.py new file mode 100644 index 0000000000..d4a77fb048 --- /dev/null +++ b/account_invoice_report_stamp/__manifest__.py @@ -0,0 +1,12 @@ +{ + "name": "account_invoice_report_stamp", + "version": "16.0.1.0.0", + "category": "Custom", + "author": "Avanzosc", + "license": "LGPL-3", + "depends": ["res_company_signature_fields"], + "data": ["views/account_report_views.xml"], + "installable": True, + "application": False, + "website": "https://github.com/avanzosc/odoo-addons", +} diff --git a/account_invoice_report_stamp/views/account_report_views.xml b/account_invoice_report_stamp/views/account_report_views.xml new file mode 100644 index 0000000000..1ecf8a9bef --- /dev/null +++ b/account_invoice_report_stamp/views/account_report_views.xml @@ -0,0 +1,9 @@ + + diff --git a/contact_payment_mode_import_wizard/security/contact_payment_mode_import_security.xml b/contact_payment_mode_import_wizard/security/contact_payment_mode_import_security.xml index 2f7e6f0e72..de69d5992e 100644 --- a/contact_payment_mode_import_wizard/security/contact_payment_mode_import_security.xml +++ b/contact_payment_mode_import_wizard/security/contact_payment_mode_import_security.xml @@ -1,8 +1,8 @@ - + Payment mode for contacts import wizard company rule - + ['|', ('company_id', 'in', company_ids), ('company_id', '=', False)] diff --git a/contract_line_check_recurring_date_fields/README.rst b/contract_line_check_recurring_date_fields/README.rst new file mode 100644 index 0000000000..45a5a6ea32 --- /dev/null +++ b/contract_line_check_recurring_date_fields/README.rst @@ -0,0 +1,64 @@ +.. image:: https://img.shields.io/badge/license-LGPL--3-blue.svg + :target: https://opensource.org/licenses/LGPL-3.0 + :alt: License: LGPL-3 + +========================================= +Contract Line Check Recurring Date Fields +========================================= + +Overview +======== + +The **Contract Line Check Recurrence Date Fields** module enhances the contract management system by applying onchange functionality to contract fields. This ensures that when the `line_recurrence` field is inactive, the associated line fields in `contract.line` are updated automatically based on the contract's values. + +Features +======== + +- **Automatic Updates**: Fields in contract lines (`date_start`, `date_end`, `is_terminated`, `terminate_date`, `last_date_invoiced`, `recurring_interval`, `next_period_date_start`, `next_period_date_end`) are updated automatically when the corresponding contract fields change and `line_recurrence` is inactive. + +Usage +===== + +1. **Install the Module**: + + - Install the module via Odoo's Apps interface. + +2. **Updating Contract Lines**: + + - When editing a contract, modifying fields like `date_start`, `date_end`, or others will automatically update the associated contract lines if `line_recurrence` is not active. + +Configuration +============= + +No additional configuration is required. The module works out of the box. + +Testing +======= + +Test the following scenarios: + +- **Field Update on Contract Change**: + + - Create or edit a contract and modify fields such as `date_start`, `date_end`, etc. + - Ensure that the corresponding fields in the `contract.line` records are updated correctly when `line_recurrence` is inactive. + +Bug Tracker +=========== + +If you encounter any issues, please report them on the GitHub repository at `GitHub Issues `_. + +Credits +======= + +Contributors +------------ + +* Unai Beristain +* Ana Juaristi + +For module-specific questions, please contact the contributors directly. Support requests should be made through the official channels. + +License +======= + +This project is licensed under the LGPL-3 License. For more details, please refer to the LICENSE file or visit . diff --git a/contract_line_check_recurring_date_fields/__init__.py b/contract_line_check_recurring_date_fields/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/contract_line_check_recurring_date_fields/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/contract_line_check_recurring_date_fields/__manifest__.py b/contract_line_check_recurring_date_fields/__manifest__.py new file mode 100644 index 0000000000..a21ad164dc --- /dev/null +++ b/contract_line_check_recurring_date_fields/__manifest__.py @@ -0,0 +1,12 @@ +{ + "name": "Contract Line Check Recurring Date Fields", + "version": "16.0.1.0.0", + "author": "Avanzosc", + "summary": "Applies onchange on contract fields to update lines", + "website": "https://github.com/avanzosc/odoo-addons", + "license": "LGPL-3", + "depends": ["contract"], + "data": [], + "installable": True, + "application": False, +} diff --git a/contract_line_check_recurring_date_fields/models/__init__.py b/contract_line_check_recurring_date_fields/models/__init__.py new file mode 100644 index 0000000000..99a5468ac8 --- /dev/null +++ b/contract_line_check_recurring_date_fields/models/__init__.py @@ -0,0 +1 @@ +from . import contract diff --git a/contract_line_check_recurring_date_fields/models/contract.py b/contract_line_check_recurring_date_fields/models/contract.py new file mode 100644 index 0000000000..7284773109 --- /dev/null +++ b/contract_line_check_recurring_date_fields/models/contract.py @@ -0,0 +1,53 @@ +from odoo import api, models + + +class Contract(models.Model): + _inherit = "contract.contract" + + @api.onchange("date_start") + def _onchange_date_start(self): + if not self.line_recurrence: + for line in self.contract_line_ids: + line.date_start = self.date_start + + @api.onchange("date_end") + def _onchange_date_end(self): + if not self.line_recurrence: + for line in self.contract_line_ids: + line.date_end = self.date_end + + @api.onchange("is_terminated") + def _onchange_is_terminated(self): + if not self.line_recurrence: + for line in self.contract_line_ids: + line.is_terminated = self.is_terminated + + @api.onchange("terminate_date") + def _onchange_terminate_date(self): + if not self.line_recurrence: + for line in self.contract_line_ids: + line.terminate_date = self.terminate_date + + @api.onchange("last_date_invoiced") + def _onchange_last_date_invoiced(self): + if not self.line_recurrence: + for line in self.contract_line_ids: + line.last_date_invoiced = self.last_date_invoiced + + @api.onchange("recurring_interval") + def _onchange_recurring_interval(self): + if not self.line_recurrence: + for line in self.contract_line_ids: + line.recurring_interval = self.recurring_interval + + @api.onchange("next_period_date_start") + def _onchange_next_period_date_start(self): + if not self.line_recurrence: + for line in self.contract_line_ids: + line.next_period_date_start = self.next_period_date_start + + @api.onchange("next_period_date_end") + def _onchange_next_period_date_end(self): + if not self.line_recurrence: + for line in self.contract_line_ids: + line.next_period_date_end = self.next_period_date_end diff --git a/crossovered_budget_lines_notes/README.rst b/crossovered_budget_lines_notes/README.rst new file mode 100644 index 0000000000..a23ec82bdf --- /dev/null +++ b/crossovered_budget_lines_notes/README.rst @@ -0,0 +1,28 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +============================== +Crossovered budget lines notes +============================== + +* New field "Notes" in Budget Line. + +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 smash it by providing detailed and welcomed feedback. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Contributors +------------ + +* Alfredo de la Fuente +* Ana Juaristi diff --git a/crossovered_budget_lines_notes/__init__.py b/crossovered_budget_lines_notes/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/crossovered_budget_lines_notes/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/crossovered_budget_lines_notes/__manifest__.py b/crossovered_budget_lines_notes/__manifest__.py new file mode 100644 index 0000000000..4ab480c149 --- /dev/null +++ b/crossovered_budget_lines_notes/__manifest__.py @@ -0,0 +1,18 @@ +# Copyright 2024 Alfredo de la Fuente - AvanzOSC +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html +{ + "name": "Crossovered Budget Lines Notes", + "version": "16.0.1.0.0", + "category": "Accounting", + "license": "AGPL-3", + "author": "AvanzOSC", + "website": "https://github.com/avanzosc/odoo-addons", + "depends": [ + "account_budget_oca", + ], + "data": [ + "views/crossovered_budget_views.xml", + "views/crossovered_budget_lines_views.xml", + ], + "installable": True, +} diff --git a/crossovered_budget_lines_notes/i18n/crossovered_budget_lines_notes.pot b/crossovered_budget_lines_notes/i18n/crossovered_budget_lines_notes.pot new file mode 100644 index 0000000000..56f5e579a4 --- /dev/null +++ b/crossovered_budget_lines_notes/i18n/crossovered_budget_lines_notes.pot @@ -0,0 +1,26 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * crossovered_budget_lines_notes +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-18 05:58+0000\n" +"PO-Revision-Date: 2024-10-18 05:58+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: crossovered_budget_lines_notes +#: model:ir.model,name:crossovered_budget_lines_notes.model_crossovered_budget_lines +msgid "Budget Line" +msgstr "" + +#. module: crossovered_budget_lines_notes +#: model:ir.model.fields,field_description:crossovered_budget_lines_notes.field_crossovered_budget_lines__notes +msgid "Notes" +msgstr "" diff --git a/crossovered_budget_lines_notes/i18n/en_GB.po b/crossovered_budget_lines_notes/i18n/en_GB.po new file mode 100644 index 0000000000..e9ad544d6b --- /dev/null +++ b/crossovered_budget_lines_notes/i18n/en_GB.po @@ -0,0 +1,26 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * crossovered_budget_lines_notes +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-18 05:59+0000\n" +"PO-Revision-Date: 2024-10-18 05:59+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: crossovered_budget_lines_notes +#: model:ir.model,name:crossovered_budget_lines_notes.model_crossovered_budget_lines +msgid "Budget Line" +msgstr "" + +#. module: crossovered_budget_lines_notes +#: model:ir.model.fields,field_description:crossovered_budget_lines_notes.field_crossovered_budget_lines__notes +msgid "Notes" +msgstr "" diff --git a/crossovered_budget_lines_notes/i18n/es.po b/crossovered_budget_lines_notes/i18n/es.po new file mode 100644 index 0000000000..059466cd3d --- /dev/null +++ b/crossovered_budget_lines_notes/i18n/es.po @@ -0,0 +1,26 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * crossovered_budget_lines_notes +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-18 05:59+0000\n" +"PO-Revision-Date: 2024-10-18 05:59+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: crossovered_budget_lines_notes +#: model:ir.model,name:crossovered_budget_lines_notes.model_crossovered_budget_lines +msgid "Budget Line" +msgstr "Línea de Presupuesto" + +#. module: crossovered_budget_lines_notes +#: model:ir.model.fields,field_description:crossovered_budget_lines_notes.field_crossovered_budget_lines__notes +msgid "Notes" +msgstr "Notas" diff --git a/crossovered_budget_lines_notes/models/__init__.py b/crossovered_budget_lines_notes/models/__init__.py new file mode 100644 index 0000000000..327d8d4a5f --- /dev/null +++ b/crossovered_budget_lines_notes/models/__init__.py @@ -0,0 +1 @@ +from . import crossovered_budget_lines diff --git a/crossovered_budget_lines_notes/models/crossovered_budget_lines.py b/crossovered_budget_lines_notes/models/crossovered_budget_lines.py new file mode 100644 index 0000000000..9326169968 --- /dev/null +++ b/crossovered_budget_lines_notes/models/crossovered_budget_lines.py @@ -0,0 +1,9 @@ +# Copyright 2024 Alfredo de la Fuente - AvanzOSC +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html +from odoo import fields, models + + +class CrossoveredBudgetLines(models.Model): + _inherit = "crossovered.budget.lines" + + notes = fields.Text(copy=False) diff --git a/crossovered_budget_lines_notes/views/crossovered_budget_lines_views.xml b/crossovered_budget_lines_notes/views/crossovered_budget_lines_views.xml new file mode 100644 index 0000000000..2f815e83a4 --- /dev/null +++ b/crossovered_budget_lines_notes/views/crossovered_budget_lines_views.xml @@ -0,0 +1,30 @@ + + + + crossovered.budget.lines + + + + + + + + + + crossovered.budget.lines + + + + + + + + + + diff --git a/crossovered_budget_lines_notes/views/crossovered_budget_views.xml b/crossovered_budget_lines_notes/views/crossovered_budget_views.xml new file mode 100644 index 0000000000..5c8bd44751 --- /dev/null +++ b/crossovered_budget_lines_notes/views/crossovered_budget_views.xml @@ -0,0 +1,26 @@ + + + + crossovered.budget + + + + + + + + + + + + + diff --git a/product_brand_active/README.rst b/product_brand_active/README.rst new file mode 100644 index 0000000000..f91f274990 --- /dev/null +++ b/product_brand_active/README.rst @@ -0,0 +1,28 @@ +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png + :target: https://www.gnu.org/licenses/agpl + :alt: License: AGPL-3 + +==================== +Product brand active +==================== + +* In product brand new fields: "Active", "Start Date" and "End Date". + +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 smash it by providing detailed and welcomed feedback. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Contributors +------------ + +* Alfredo de la Fuente +* Ana Juaristi \ No newline at end of file diff --git a/product_brand_active/__init__.py b/product_brand_active/__init__.py new file mode 100644 index 0000000000..949f0d43f0 --- /dev/null +++ b/product_brand_active/__init__.py @@ -0,0 +1,9 @@ +from . import models +from odoo import api, SUPERUSER_ID + + +def _post_install_active_product_brand(cr, registry): + env = api.Environment(cr, SUPERUSER_ID, {}) + brands = env["product.brand"].search([]) + if brands: + brands.write({"active": True}) diff --git a/product_brand_active/__manifest__.py b/product_brand_active/__manifest__.py new file mode 100644 index 0000000000..1543c88188 --- /dev/null +++ b/product_brand_active/__manifest__.py @@ -0,0 +1,18 @@ +# Copyright 2024 Alfredo de la Fuente - AvanzOSC +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html +{ + "name": "Product Brand Active", + "version": "16.0.1.0.0", + "category": "Sales/Sales", + "license": "AGPL-3", + "author": "AvanzOSC", + "website": "https://github.com/avanzosc/odoo-addons", + "depends": [ + "product_brand", + ], + "data": [ + "views/product_brand_views.xml", + ], + "installable": True, + "post_init_hook": "_post_install_active_product_brand", +} diff --git a/product_brand_active/i18n/ca_ES.po b/product_brand_active/i18n/ca_ES.po new file mode 100644 index 0000000000..1efbb941bc --- /dev/null +++ b/product_brand_active/i18n/ca_ES.po @@ -0,0 +1,71 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_brand_active +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-30 08:17+0000\n" +"PO-Revision-Date: 2024-10-30 08:17+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: product_brand_active +#: model:ir.model.fields,field_description:product_brand_active.field_product_brand__active +#: model_terms:ir.ui.view,arch_db:product_brand_active.product_brand_search_form_view +msgid "Active" +msgstr "" + +#. module: product_brand_active +#. odoo-python +#: code:addons/product_brand_active/models/product_brand.py:0 +#: model:ir.model.fields.selection,name:product_brand_active.selection__product_brand__active_end_date_change__a +#, python-format +msgid "Change Active" +msgstr "" + +#. module: product_brand_active +#. odoo-python +#: code:addons/product_brand_active/models/product_brand.py:0 +#: model:ir.model.fields.selection,name:product_brand_active.selection__product_brand__active_end_date_change__d +#, python-format +msgid "Change End Date" +msgstr "" + +#. module: product_brand_active +#: model:ir.model.fields,field_description:product_brand_active.field_product_brand__end_date +msgid "End Date" +msgstr "" + +#. module: product_brand_active +#: model_terms:ir.ui.view,arch_db:product_brand_active.product_brand_search_form_view +msgid "Group By" +msgstr "" + +#. module: product_brand_active +#: model_terms:ir.ui.view,arch_db:product_brand_active.product_brand_search_form_view +msgid "Not Active" +msgstr "" + +#. module: product_brand_active +#. odoo-python +#: code:addons/product_brand_active/models/product_brand.py:0 +#: model:ir.model.fields.selection,name:product_brand_active.selection__product_brand__active_end_date_change__n +#, python-format +msgid "Nothing" +msgstr "" + +#. module: product_brand_active +#: model:ir.model,name:product_brand_active.model_product_brand +msgid "Product Brand" +msgstr "Marca de producte" + +#. module: product_brand_active +#: model:ir.model.fields,field_description:product_brand_active.field_product_brand__start_date +msgid "Start Date" +msgstr "" diff --git a/product_brand_active/i18n/en_GB.po b/product_brand_active/i18n/en_GB.po new file mode 100644 index 0000000000..2eee43bf44 --- /dev/null +++ b/product_brand_active/i18n/en_GB.po @@ -0,0 +1,71 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_brand_active +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-30 08:17+0000\n" +"PO-Revision-Date: 2024-10-30 08:17+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: product_brand_active +#: model:ir.model.fields,field_description:product_brand_active.field_product_brand__active +#: model_terms:ir.ui.view,arch_db:product_brand_active.product_brand_search_form_view +msgid "Active" +msgstr "" + +#. module: product_brand_active +#. odoo-python +#: code:addons/product_brand_active/models/product_brand.py:0 +#: model:ir.model.fields.selection,name:product_brand_active.selection__product_brand__active_end_date_change__a +#, python-format +msgid "Change Active" +msgstr "" + +#. module: product_brand_active +#. odoo-python +#: code:addons/product_brand_active/models/product_brand.py:0 +#: model:ir.model.fields.selection,name:product_brand_active.selection__product_brand__active_end_date_change__d +#, python-format +msgid "Change End Date" +msgstr "" + +#. module: product_brand_active +#: model:ir.model.fields,field_description:product_brand_active.field_product_brand__end_date +msgid "End Date" +msgstr "" + +#. module: product_brand_active +#: model_terms:ir.ui.view,arch_db:product_brand_active.product_brand_search_form_view +msgid "Group By" +msgstr "" + +#. module: product_brand_active +#: model_terms:ir.ui.view,arch_db:product_brand_active.product_brand_search_form_view +msgid "Not Active" +msgstr "" + +#. module: product_brand_active +#. odoo-python +#: code:addons/product_brand_active/models/product_brand.py:0 +#: model:ir.model.fields.selection,name:product_brand_active.selection__product_brand__active_end_date_change__n +#, python-format +msgid "Nothing" +msgstr "" + +#. module: product_brand_active +#: model:ir.model,name:product_brand_active.model_product_brand +msgid "Product Brand" +msgstr "" + +#. module: product_brand_active +#: model:ir.model.fields,field_description:product_brand_active.field_product_brand__start_date +msgid "Start Date" +msgstr "" diff --git a/product_brand_active/i18n/es.po b/product_brand_active/i18n/es.po new file mode 100644 index 0000000000..11d757dc5c --- /dev/null +++ b/product_brand_active/i18n/es.po @@ -0,0 +1,71 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_brand_active +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-30 08:18+0000\n" +"PO-Revision-Date: 2024-10-30 08:18+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: product_brand_active +#: model:ir.model.fields,field_description:product_brand_active.field_product_brand__active +#: model_terms:ir.ui.view,arch_db:product_brand_active.product_brand_search_form_view +msgid "Active" +msgstr "Activa" + +#. module: product_brand_active +#. odoo-python +#: code:addons/product_brand_active/models/product_brand.py:0 +#: model:ir.model.fields.selection,name:product_brand_active.selection__product_brand__active_end_date_change__a +#, python-format +msgid "Change Active" +msgstr "Cambio activa" + +#. module: product_brand_active +#. odoo-python +#: code:addons/product_brand_active/models/product_brand.py:0 +#: model:ir.model.fields.selection,name:product_brand_active.selection__product_brand__active_end_date_change__d +#, python-format +msgid "Change End Date" +msgstr "Cambio fecha fin" + +#. module: product_brand_active +#: model:ir.model.fields,field_description:product_brand_active.field_product_brand__end_date +msgid "End Date" +msgstr "Fecha fin" + +#. module: product_brand_active +#: model_terms:ir.ui.view,arch_db:product_brand_active.product_brand_search_form_view +msgid "Group By" +msgstr "Agrupar por" + +#. module: product_brand_active +#: model_terms:ir.ui.view,arch_db:product_brand_active.product_brand_search_form_view +msgid "Not Active" +msgstr "No Activa" + +#. module: product_brand_active +#. odoo-python +#: code:addons/product_brand_active/models/product_brand.py:0 +#: model:ir.model.fields.selection,name:product_brand_active.selection__product_brand__active_end_date_change__n +#, python-format +msgid "Nothing" +msgstr "Nada" + +#. module: product_brand_active +#: model:ir.model,name:product_brand_active.model_product_brand +msgid "Product Brand" +msgstr "Marca de producto" + +#. module: product_brand_active +#: model:ir.model.fields,field_description:product_brand_active.field_product_brand__start_date +msgid "Start Date" +msgstr "Fecha inicio" diff --git a/product_brand_active/i18n/fr.po b/product_brand_active/i18n/fr.po new file mode 100644 index 0000000000..7b46c2af7a --- /dev/null +++ b/product_brand_active/i18n/fr.po @@ -0,0 +1,71 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_brand_active +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-30 08:18+0000\n" +"PO-Revision-Date: 2024-10-30 08:18+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: product_brand_active +#: model:ir.model.fields,field_description:product_brand_active.field_product_brand__active +#: model_terms:ir.ui.view,arch_db:product_brand_active.product_brand_search_form_view +msgid "Active" +msgstr "" + +#. module: product_brand_active +#. odoo-python +#: code:addons/product_brand_active/models/product_brand.py:0 +#: model:ir.model.fields.selection,name:product_brand_active.selection__product_brand__active_end_date_change__a +#, python-format +msgid "Change Active" +msgstr "" + +#. module: product_brand_active +#. odoo-python +#: code:addons/product_brand_active/models/product_brand.py:0 +#: model:ir.model.fields.selection,name:product_brand_active.selection__product_brand__active_end_date_change__d +#, python-format +msgid "Change End Date" +msgstr "" + +#. module: product_brand_active +#: model:ir.model.fields,field_description:product_brand_active.field_product_brand__end_date +msgid "End Date" +msgstr "" + +#. module: product_brand_active +#: model_terms:ir.ui.view,arch_db:product_brand_active.product_brand_search_form_view +msgid "Group By" +msgstr "" + +#. module: product_brand_active +#: model_terms:ir.ui.view,arch_db:product_brand_active.product_brand_search_form_view +msgid "Not Active" +msgstr "" + +#. module: product_brand_active +#. odoo-python +#: code:addons/product_brand_active/models/product_brand.py:0 +#: model:ir.model.fields.selection,name:product_brand_active.selection__product_brand__active_end_date_change__n +#, python-format +msgid "Nothing" +msgstr "" + +#. module: product_brand_active +#: model:ir.model,name:product_brand_active.model_product_brand +msgid "Product Brand" +msgstr "Marque d'article" + +#. module: product_brand_active +#: model:ir.model.fields,field_description:product_brand_active.field_product_brand__start_date +msgid "Start Date" +msgstr "" diff --git a/product_brand_active/i18n/product_brand_active.pot b/product_brand_active/i18n/product_brand_active.pot new file mode 100644 index 0000000000..2eee43bf44 --- /dev/null +++ b/product_brand_active/i18n/product_brand_active.pot @@ -0,0 +1,71 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_brand_active +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-30 08:17+0000\n" +"PO-Revision-Date: 2024-10-30 08:17+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: product_brand_active +#: model:ir.model.fields,field_description:product_brand_active.field_product_brand__active +#: model_terms:ir.ui.view,arch_db:product_brand_active.product_brand_search_form_view +msgid "Active" +msgstr "" + +#. module: product_brand_active +#. odoo-python +#: code:addons/product_brand_active/models/product_brand.py:0 +#: model:ir.model.fields.selection,name:product_brand_active.selection__product_brand__active_end_date_change__a +#, python-format +msgid "Change Active" +msgstr "" + +#. module: product_brand_active +#. odoo-python +#: code:addons/product_brand_active/models/product_brand.py:0 +#: model:ir.model.fields.selection,name:product_brand_active.selection__product_brand__active_end_date_change__d +#, python-format +msgid "Change End Date" +msgstr "" + +#. module: product_brand_active +#: model:ir.model.fields,field_description:product_brand_active.field_product_brand__end_date +msgid "End Date" +msgstr "" + +#. module: product_brand_active +#: model_terms:ir.ui.view,arch_db:product_brand_active.product_brand_search_form_view +msgid "Group By" +msgstr "" + +#. module: product_brand_active +#: model_terms:ir.ui.view,arch_db:product_brand_active.product_brand_search_form_view +msgid "Not Active" +msgstr "" + +#. module: product_brand_active +#. odoo-python +#: code:addons/product_brand_active/models/product_brand.py:0 +#: model:ir.model.fields.selection,name:product_brand_active.selection__product_brand__active_end_date_change__n +#, python-format +msgid "Nothing" +msgstr "" + +#. module: product_brand_active +#: model:ir.model,name:product_brand_active.model_product_brand +msgid "Product Brand" +msgstr "" + +#. module: product_brand_active +#: model:ir.model.fields,field_description:product_brand_active.field_product_brand__start_date +msgid "Start Date" +msgstr "" diff --git a/product_brand_active/models/__init__.py b/product_brand_active/models/__init__.py new file mode 100644 index 0000000000..6cb55ac7f7 --- /dev/null +++ b/product_brand_active/models/__init__.py @@ -0,0 +1 @@ +from . import product_brand diff --git a/product_brand_active/models/product_brand.py b/product_brand_active/models/product_brand.py new file mode 100644 index 0000000000..6639e400ea --- /dev/null +++ b/product_brand_active/models/product_brand.py @@ -0,0 +1,15 @@ +# Copyright 2024 Alfredo de la Fuente - AvanzOSC +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html +from odoo import api, fields, models + + +class ProductBrand(models.Model): + _inherit = "product.brand" + + active = fields.Boolean(default=True, copy=False) + start_date = fields.Date(copy=False) + end_date = fields.Date(copy=False) + + @api.onchange("active") + def onchange_active(self): + self.end_date = False if self.active else fields.Date.context_today(self) diff --git a/product_brand_active/views/product_brand_views.xml b/product_brand_active/views/product_brand_views.xml new file mode 100644 index 0000000000..26e42528a1 --- /dev/null +++ b/product_brand_active/views/product_brand_views.xml @@ -0,0 +1,71 @@ + + + product.brand + + + + + + + + + + + + + + + + + + + + product.brand + + + + + + + + + + + + product.brand + + + + + + + + + + + + + + + + + + Brand + product.brand + kanban,form,tree + [('active', 'in', (True, False))] + + diff --git a/product_brand_supplierinfo/models/product_supplierinfo.py b/product_brand_supplierinfo/models/product_supplierinfo.py index 7ba9c4b995..f187b5c24b 100644 --- a/product_brand_supplierinfo/models/product_supplierinfo.py +++ b/product_brand_supplierinfo/models/product_supplierinfo.py @@ -9,9 +9,7 @@ class ProductSupplierinfo(models.Model): product_brand_id = fields.Many2one( string="Brand", comodel_name="product.brand", copy=False ) - brand_code = fields.Char( - string="Brand Code", related="product_brand_id.code", store=True, copy=False - ) + brand_code = fields.Char(copy=False) brand_marking = fields.Char( string="Brand Marking", related="product_brand_id.marking", diff --git a/product_brand_supplierinfo/views/product_supplierinfo_views.xml b/product_brand_supplierinfo/views/product_supplierinfo_views.xml index 82f67c430d..dfcee71ff2 100644 --- a/product_brand_supplierinfo/views/product_supplierinfo_views.xml +++ b/product_brand_supplierinfo/views/product_supplierinfo_views.xml @@ -6,7 +6,7 @@ - + @@ -18,7 +18,7 @@ - + diff --git a/product_category_lot_serial/views/product_category_views.xml b/product_category_lot_serial/views/product_category_views.xml index f8b3c29cb1..1e1f0ed569 100644 --- a/product_category_lot_serial/views/product_category_views.xml +++ b/product_category_lot_serial/views/product_category_views.xml @@ -4,14 +4,13 @@ product.category - - - - - + + + diff --git a/product_informative_location/models/stock.py b/product_informative_location/models/stock.py index 4e101e7ea3..54972345b9 100644 --- a/product_informative_location/models/stock.py +++ b/product_informative_location/models/stock.py @@ -19,12 +19,10 @@ class StockMove(models.Model): @api.onchange("product_id") def _onchange_product_id(self): - result = super().onchange_product_id() if self.product_id and self.picking_id.picking_type_id: mytext, mydescript = self._catch_informative_location() self.informative_location = mytext self.informative_location_description = mydescript - return result def _catch_informative_location(self): lines = self.env["product.informative.location"] diff --git a/product_nutrition_allergen_extension/README.rst b/product_nutrition_allergen_extension/README.rst new file mode 100644 index 0000000000..37d993e92c --- /dev/null +++ b/product_nutrition_allergen_extension/README.rst @@ -0,0 +1,67 @@ +.. image:: https://img.shields.io/badge/license-LGPL--3-blue.svg + :target: https://opensource.org/licenses/LGPL-3.0 + :alt: License: LGPL-3 + +==================================== +Product Nutrition Allergen Extension +==================================== + +Overview +======== + +The **Product Nutrition Allergen Extension** module extends the product pages with additional nutrition and allergen information. It customizes the view to provide a more comprehensive display of ingredients and allergen details. + +Features +======== + +- **Hide Default Nutrition Button**: Hides the default "Show Nutrition" button from the view. + +- **Custom Nutrition Link**: Adds a new link labeled "Ingredientes y Alergenos" to the product page for displaying nutrition and allergen details. + +Usage +===== + +1. **Install the Module**: + + - Install the module via Odoo's Apps interface. + +2. **View Product Nutrition and Allergen Information**: + + - Once installed, a new link "Ingredientes y Alergenos" will appear on the product page. + - The default nutrition information button will be hidden, replaced by the new link. + +Configuration +============= + +No additional configuration is required. The module works out of the box once installed. + +Testing +======= + +Test the following scenarios: + +- **Nutrition and Allergen Information**: + + - Ensure that the "Ingredientes y Alergenos" link appears on the product page. + - Check that the default "Show Nutrition" button is hidden. + +Bug Tracker +=========== + +If you encounter any issues, please report them on the GitHub repository at `GitHub Issues `_. + +Credits +======= + +Contributors +------------ + +* Unai Beristain +* Ana Juaristi + +For module-specific questions, please contact the contributors directly. Support requests should be made through the official channels. + +License +======= + +This project is licensed under the LGPL-3 License. For more details, please refer to the LICENSE file or visit . diff --git a/product_nutrition_allergen_extension/__init__.py b/product_nutrition_allergen_extension/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/product_nutrition_allergen_extension/__manifest__.py b/product_nutrition_allergen_extension/__manifest__.py new file mode 100644 index 0000000000..5de853870d --- /dev/null +++ b/product_nutrition_allergen_extension/__manifest__.py @@ -0,0 +1,12 @@ +{ + "name": "Product Nutrition Allergen Extension", + "version": "16.0.1.0.0", + "author": "Avanzosc", + "summary": "Extend nutrition and allergen information on product pages.", + "website": "https://github.com/avanzosc/odoo-addons", + "license": "LGPL-3", + "depends": ["website_sale", "product_nutrition_allergen"], + "data": ["views/product_nutrition_information_view.xml"], + "installable": True, + "application": False, +} diff --git a/product_nutrition_allergen_extension/views/product_nutrition_information_view.xml b/product_nutrition_allergen_extension/views/product_nutrition_information_view.xml new file mode 100644 index 0000000000..d6caa5592b --- /dev/null +++ b/product_nutrition_allergen_extension/views/product_nutrition_information_view.xml @@ -0,0 +1,35 @@ + + + + diff --git a/product_sale_configuration/views/product_category_sale_price_view.xml b/product_sale_configuration/views/product_category_sale_price_view.xml index 1aae73b1ca..c6f8289fa9 100644 --- a/product_sale_configuration/views/product_category_sale_price_view.xml +++ b/product_sale_configuration/views/product_category_sale_price_view.xml @@ -43,7 +43,7 @@ - + diff --git a/product_sale_configuration/views/product_template_view.xml b/product_sale_configuration/views/product_template_view.xml index 67ee7cfe23..d358c6fbbb 100644 --- a/product_sale_configuration/views/product_template_view.xml +++ b/product_sale_configuration/views/product_template_view.xml @@ -1,73 +1,105 @@ - - product.template - - 17 - - - - - - - + product.template + + 17 + + + + + + + - - - {'readonly': [('manual_pvp', '=', False)]} - -
- {} - 2 - 2 -
- - 1 - - - - + + {'readonly': [('manual_pvp', '=', False)]} + +
+ {} + 2 + 2 +
+ +
+ 1 +
+ + + + +
- +
+ +
diff --git a/product_second_name/views/product_template_view.xml b/product_second_name/views/product_template_view.xml index 74d51800b4..d589231cf5 100644 --- a/product_second_name/views/product_template_view.xml +++ b/product_second_name/views/product_template_view.xml @@ -6,25 +6,24 @@ 17 - - - - - - - + + + + + + diff --git a/product_template_history_notes/README.rst b/product_template_history_notes/README.rst new file mode 100644 index 0000000000..5bc9627217 --- /dev/null +++ b/product_template_history_notes/README.rst @@ -0,0 +1,27 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +============================== +Product template history notes +============================== + +* In products new tab "History" with new field "History Notes". + +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 smash it by providing detailed and welcomed feedback. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Contributors +------------ +* Ana Juaristi +* Alfredo de la Fuente diff --git a/product_template_history_notes/__init__.py b/product_template_history_notes/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/product_template_history_notes/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/product_template_history_notes/__manifest__.py b/product_template_history_notes/__manifest__.py new file mode 100644 index 0000000000..8219f98798 --- /dev/null +++ b/product_template_history_notes/__manifest__.py @@ -0,0 +1,15 @@ +# Copyright 2024 Alfredo de la Fuente - AvanzOSC +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html +{ + "name": "Product Template History Notes", + "version": "16.0.1.1.0", + "license": "AGPL-3", + "category": "Sales/Sales", + "author": "Avanzosc", + "website": "https://github.com/avanzosc/odoo-addons", + "depends": [ + "product", + ], + "data": ["views/product_template_views.xml"], + "installable": True, +} diff --git a/product_template_history_notes/i18n/ca_ES.po b/product_template_history_notes/i18n/ca_ES.po new file mode 100644 index 0000000000..9ee78c234f --- /dev/null +++ b/product_template_history_notes/i18n/ca_ES.po @@ -0,0 +1,32 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_template_history_notes +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-24 10:28+0000\n" +"PO-Revision-Date: 2024-10-24 10:28+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: product_template_history_notes +#: model_terms:ir.ui.view,arch_db:product_template_history_notes.product_template_form_view +msgid "History" +msgstr "" + +#. module: product_template_history_notes +#: model:ir.model.fields,field_description:product_template_history_notes.field_product_product__history_notes +#: model:ir.model.fields,field_description:product_template_history_notes.field_product_template__history_notes +msgid "History Notes" +msgstr "" + +#. module: product_template_history_notes +#: model:ir.model,name:product_template_history_notes.model_product_template +msgid "Product" +msgstr "Producte" diff --git a/product_template_history_notes/i18n/en_GB.po b/product_template_history_notes/i18n/en_GB.po new file mode 100644 index 0000000000..f8c19ed6cc --- /dev/null +++ b/product_template_history_notes/i18n/en_GB.po @@ -0,0 +1,32 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_template_history_notes +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-24 10:29+0000\n" +"PO-Revision-Date: 2024-10-24 10:29+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: product_template_history_notes +#: model_terms:ir.ui.view,arch_db:product_template_history_notes.product_template_form_view +msgid "History" +msgstr "" + +#. module: product_template_history_notes +#: model:ir.model.fields,field_description:product_template_history_notes.field_product_product__history_notes +#: model:ir.model.fields,field_description:product_template_history_notes.field_product_template__history_notes +msgid "History Notes" +msgstr "" + +#. module: product_template_history_notes +#: model:ir.model,name:product_template_history_notes.model_product_template +msgid "Product" +msgstr "" diff --git a/product_template_history_notes/i18n/es.po b/product_template_history_notes/i18n/es.po new file mode 100644 index 0000000000..15363f604b --- /dev/null +++ b/product_template_history_notes/i18n/es.po @@ -0,0 +1,32 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_template_history_notes +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-24 10:29+0000\n" +"PO-Revision-Date: 2024-10-24 10:29+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: product_template_history_notes +#: model_terms:ir.ui.view,arch_db:product_template_history_notes.product_template_form_view +msgid "History" +msgstr "Histórico" + +#. module: product_template_history_notes +#: model:ir.model.fields,field_description:product_template_history_notes.field_product_product__history_notes +#: model:ir.model.fields,field_description:product_template_history_notes.field_product_template__history_notes +msgid "History Notes" +msgstr "Notas de historia" + +#. module: product_template_history_notes +#: model:ir.model,name:product_template_history_notes.model_product_template +msgid "Product" +msgstr "Producto" diff --git a/product_template_history_notes/i18n/fr.po b/product_template_history_notes/i18n/fr.po new file mode 100644 index 0000000000..c09199b377 --- /dev/null +++ b/product_template_history_notes/i18n/fr.po @@ -0,0 +1,32 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_template_history_notes +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-24 10:29+0000\n" +"PO-Revision-Date: 2024-10-24 10:29+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: product_template_history_notes +#: model_terms:ir.ui.view,arch_db:product_template_history_notes.product_template_form_view +msgid "History" +msgstr "" + +#. module: product_template_history_notes +#: model:ir.model.fields,field_description:product_template_history_notes.field_product_product__history_notes +#: model:ir.model.fields,field_description:product_template_history_notes.field_product_template__history_notes +msgid "History Notes" +msgstr "" + +#. module: product_template_history_notes +#: model:ir.model,name:product_template_history_notes.model_product_template +msgid "Product" +msgstr "Produit" diff --git a/product_template_history_notes/i18n/product_template_history_notes.pot b/product_template_history_notes/i18n/product_template_history_notes.pot new file mode 100644 index 0000000000..b675ac0cb0 --- /dev/null +++ b/product_template_history_notes/i18n/product_template_history_notes.pot @@ -0,0 +1,32 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_template_history_notes +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-24 10:28+0000\n" +"PO-Revision-Date: 2024-10-24 10:28+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: product_template_history_notes +#: model_terms:ir.ui.view,arch_db:product_template_history_notes.product_template_form_view +msgid "History" +msgstr "" + +#. module: product_template_history_notes +#: model:ir.model.fields,field_description:product_template_history_notes.field_product_product__history_notes +#: model:ir.model.fields,field_description:product_template_history_notes.field_product_template__history_notes +msgid "History Notes" +msgstr "" + +#. module: product_template_history_notes +#: model:ir.model,name:product_template_history_notes.model_product_template +msgid "Product" +msgstr "" diff --git a/product_template_history_notes/models/__init__.py b/product_template_history_notes/models/__init__.py new file mode 100644 index 0000000000..e8fa8f6bf1 --- /dev/null +++ b/product_template_history_notes/models/__init__.py @@ -0,0 +1 @@ +from . import product_template diff --git a/product_template_history_notes/models/product_template.py b/product_template_history_notes/models/product_template.py new file mode 100644 index 0000000000..3061443566 --- /dev/null +++ b/product_template_history_notes/models/product_template.py @@ -0,0 +1,9 @@ +# Copyright 2024 Alfredo de la Fuente - AvanzOSC +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html +from odoo import fields, models + + +class ProductTemplate(models.Model): + _inherit = "product.template" + + history_notes = fields.Text(copy=False) diff --git a/product_template_history_notes/views/product_template_views.xml b/product_template_history_notes/views/product_template_views.xml new file mode 100644 index 0000000000..d789ec2b93 --- /dev/null +++ b/product_template_history_notes/views/product_template_views.xml @@ -0,0 +1,13 @@ + + + product.template + + + + + + + + + + diff --git a/product_template_lineal/__manifest__.py b/product_template_lineal/__manifest__.py index a3d4349b02..d74fd62470 100644 --- a/product_template_lineal/__manifest__.py +++ b/product_template_lineal/__manifest__.py @@ -17,6 +17,7 @@ "views/stock_move_line_views.xml", "views/stock_move_views.xml", "views/stock_quant_views.xml", + "views/stock_lot_views.xml", ], "license": "AGPL-3", "installable": True, diff --git a/product_template_lineal/i18n/ca_ES.po b/product_template_lineal/i18n/ca_ES.po index 09a55ea202..a2e60ac31a 100644 --- a/product_template_lineal/i18n/ca_ES.po +++ b/product_template_lineal/i18n/ca_ES.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-13 08:08+0000\n" -"PO-Revision-Date: 2024-08-13 08:08+0000\n" +"POT-Creation-Date: 2024-11-18 10:04+0000\n" +"PO-Revision-Date: 2024-11-18 10:04+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -54,11 +54,13 @@ msgstr "" #: model:ir.model.fields,field_description:product_template_lineal.field_product_lineal__name #: model:ir.model.fields,field_description:product_template_lineal.field_product_product__lineal_id #: model:ir.model.fields,field_description:product_template_lineal.field_product_template__lineal_id +#: model:ir.model.fields,field_description:product_template_lineal.field_stock_lot__lineal_id #: model:ir.model.fields,field_description:product_template_lineal.field_stock_move__lineal_id #: model:ir.model.fields,field_description:product_template_lineal.field_stock_move_line__lineal_id #: model:ir.model.fields,field_description:product_template_lineal.field_stock_quant__lineal_id #: model:ir.ui.menu,name:product_template_lineal.menu_product_lineal #: model_terms:ir.ui.view,arch_db:product_template_lineal.quant_search_view +#: model_terms:ir.ui.view,arch_db:product_template_lineal.search_product_lot_filter #: model_terms:ir.ui.view,arch_db:product_template_lineal.stock_move_line_view_search #: model_terms:ir.ui.view,arch_db:product_template_lineal.view_move_search msgid "Lineal" @@ -70,6 +72,11 @@ msgstr "" msgid "Lineal Product" msgstr "" +#. module: product_template_lineal +#: model:ir.model,name:product_template_lineal.model_stock_lot +msgid "Lot/Serial" +msgstr "Lot/núm. de sèrie" + #. module: product_template_lineal #: model:ir.model,name:product_template_lineal.model_product_template msgid "Product" diff --git a/product_template_lineal/i18n/en_GB.po b/product_template_lineal/i18n/en_GB.po index 749d5c55ae..774b872736 100644 --- a/product_template_lineal/i18n/en_GB.po +++ b/product_template_lineal/i18n/en_GB.po @@ -1,13 +1,13 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * product_template_lineal +# * mrp_product_template_lineal # msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-13 08:08+0000\n" -"PO-Revision-Date: 2024-08-13 08:08+0000\n" +"POT-Creation-Date: 2024-11-18 10:05+0000\n" +"PO-Revision-Date: 2024-11-18 10:05+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -15,77 +15,13 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" -#. module: product_template_lineal -#: model:ir.model.fields,field_description:product_template_lineal.field_product_lineal__create_uid -msgid "Created by" -msgstr "" - -#. module: product_template_lineal -#: model:ir.model.fields,field_description:product_template_lineal.field_product_lineal__create_date -msgid "Created on" -msgstr "" - -#. module: product_template_lineal -#: model:ir.model.fields,field_description:product_template_lineal.field_product_lineal__display_name -msgid "Display Name" -msgstr "" - -#. module: product_template_lineal -#: model:ir.model.fields,field_description:product_template_lineal.field_product_lineal__id -msgid "ID" -msgstr "" - -#. module: product_template_lineal -#: model:ir.model.fields,field_description:product_template_lineal.field_product_lineal____last_update -msgid "Last Modified on" -msgstr "" - -#. module: product_template_lineal -#: model:ir.model.fields,field_description:product_template_lineal.field_product_lineal__write_uid -msgid "Last Updated by" -msgstr "" - -#. module: product_template_lineal -#: model:ir.model.fields,field_description:product_template_lineal.field_product_lineal__write_date -msgid "Last Updated on" -msgstr "" - -#. module: product_template_lineal -#: model:ir.model.fields,field_description:product_template_lineal.field_product_lineal__name -#: model:ir.model.fields,field_description:product_template_lineal.field_product_product__lineal_id -#: model:ir.model.fields,field_description:product_template_lineal.field_product_template__lineal_id -#: model:ir.model.fields,field_description:product_template_lineal.field_stock_move__lineal_id -#: model:ir.model.fields,field_description:product_template_lineal.field_stock_move_line__lineal_id -#: model:ir.model.fields,field_description:product_template_lineal.field_stock_quant__lineal_id -#: model:ir.ui.menu,name:product_template_lineal.menu_product_lineal -#: model_terms:ir.ui.view,arch_db:product_template_lineal.quant_search_view -#: model_terms:ir.ui.view,arch_db:product_template_lineal.stock_move_line_view_search -#: model_terms:ir.ui.view,arch_db:product_template_lineal.view_move_search +#. module: mrp_product_template_lineal +#: model:ir.model.fields,field_description:mrp_product_template_lineal.field_mrp_production__lineal_id +#: model_terms:ir.ui.view,arch_db:mrp_product_template_lineal.view_mrp_production_filter msgid "Lineal" msgstr "" -#. module: product_template_lineal -#: model:ir.actions.act_window,name:product_template_lineal.action_product_lineal -#: model:ir.model,name:product_template_lineal.model_product_lineal -msgid "Lineal Product" -msgstr "" - -#. module: product_template_lineal -#: model:ir.model,name:product_template_lineal.model_product_template -msgid "Product" -msgstr "" - -#. module: product_template_lineal -#: model:ir.model,name:product_template_lineal.model_stock_move_line -msgid "Product Moves (Stock Move Line)" -msgstr "" - -#. module: product_template_lineal -#: model:ir.model,name:product_template_lineal.model_stock_quant -msgid "Quants" -msgstr "" - -#. module: product_template_lineal -#: model:ir.model,name:product_template_lineal.model_stock_move -msgid "Stock Move" +#. module: mrp_product_template_lineal +#: model:ir.model,name:mrp_product_template_lineal.model_mrp_production +msgid "Production Order" msgstr "" diff --git a/product_template_lineal/i18n/es.po b/product_template_lineal/i18n/es.po index 8a63a2cd86..35b8340e60 100644 --- a/product_template_lineal/i18n/es.po +++ b/product_template_lineal/i18n/es.po @@ -4,10 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 14.0\n" +"Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-15 09:17+0000\n" -"PO-Revision-Date: 2022-03-15 09:17+0000\n" +"POT-Creation-Date: 2024-11-18 10:05+0000\n" +"PO-Revision-Date: 2024-11-18 10:05+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -27,25 +27,16 @@ msgstr "Creado el" #. module: product_template_lineal #: model:ir.model.fields,field_description:product_template_lineal.field_product_lineal__display_name -#: model:ir.model.fields,field_description:product_template_lineal.field_product_template__display_name -#: model:ir.model.fields,field_description:product_template_lineal.field_stock_move__display_name -#: model:ir.model.fields,field_description:product_template_lineal.field_stock_move_line__display_name msgid "Display Name" msgstr "Nombre mostrado" #. module: product_template_lineal #: model:ir.model.fields,field_description:product_template_lineal.field_product_lineal__id -#: model:ir.model.fields,field_description:product_template_lineal.field_product_template__id -#: model:ir.model.fields,field_description:product_template_lineal.field_stock_move__id -#: model:ir.model.fields,field_description:product_template_lineal.field_stock_move_line__id msgid "ID" msgstr "" #. module: product_template_lineal #: model:ir.model.fields,field_description:product_template_lineal.field_product_lineal____last_update -#: model:ir.model.fields,field_description:product_template_lineal.field_product_template____last_update -#: model:ir.model.fields,field_description:product_template_lineal.field_stock_move____last_update -#: model:ir.model.fields,field_description:product_template_lineal.field_stock_move_line____last_update msgid "Last Modified on" msgstr "Última modificación el" @@ -63,11 +54,13 @@ msgstr "Actualizado el" #: model:ir.model.fields,field_description:product_template_lineal.field_product_lineal__name #: model:ir.model.fields,field_description:product_template_lineal.field_product_product__lineal_id #: model:ir.model.fields,field_description:product_template_lineal.field_product_template__lineal_id +#: model:ir.model.fields,field_description:product_template_lineal.field_stock_lot__lineal_id #: model:ir.model.fields,field_description:product_template_lineal.field_stock_move__lineal_id #: model:ir.model.fields,field_description:product_template_lineal.field_stock_move_line__lineal_id #: model:ir.model.fields,field_description:product_template_lineal.field_stock_quant__lineal_id #: model:ir.ui.menu,name:product_template_lineal.menu_product_lineal #: model_terms:ir.ui.view,arch_db:product_template_lineal.quant_search_view +#: model_terms:ir.ui.view,arch_db:product_template_lineal.search_product_lot_filter #: model_terms:ir.ui.view,arch_db:product_template_lineal.stock_move_line_view_search #: model_terms:ir.ui.view,arch_db:product_template_lineal.view_move_search msgid "Lineal" @@ -79,15 +72,25 @@ msgstr "Lineal" msgid "Lineal Product" msgstr "Producto lineal" +#. module: product_template_lineal +#: model:ir.model,name:product_template_lineal.model_stock_lot +msgid "Lot/Serial" +msgstr "Lote/Número de serie" + +#. module: product_template_lineal +#: model:ir.model,name:product_template_lineal.model_product_template +msgid "Product" +msgstr "Producto" + #. module: product_template_lineal #: model:ir.model,name:product_template_lineal.model_stock_move_line msgid "Product Moves (Stock Move Line)" msgstr "Movimientos de Producto (Stock Move Line)" #. module: product_template_lineal -#: model:ir.model,name:product_template_lineal.model_product_template -msgid "Product Template" -msgstr "Plantilla de producto" +#: model:ir.model,name:product_template_lineal.model_stock_quant +msgid "Quants" +msgstr "Quants" #. module: product_template_lineal #: model:ir.model,name:product_template_lineal.model_stock_move diff --git a/product_template_lineal/i18n/fr.po b/product_template_lineal/i18n/fr.po index 7573530487..63fd472e90 100644 --- a/product_template_lineal/i18n/fr.po +++ b/product_template_lineal/i18n/fr.po @@ -1,13 +1,13 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * product_template_lineal +# * mrp_product_template_lineal # msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-13 08:09+0000\n" -"PO-Revision-Date: 2024-08-13 08:09+0000\n" +"POT-Creation-Date: 2024-11-18 10:05+0000\n" +"PO-Revision-Date: 2024-11-18 10:05+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -15,77 +15,13 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" -#. module: product_template_lineal -#: model:ir.model.fields,field_description:product_template_lineal.field_product_lineal__create_uid -msgid "Created by" -msgstr "" - -#. module: product_template_lineal -#: model:ir.model.fields,field_description:product_template_lineal.field_product_lineal__create_date -msgid "Created on" -msgstr "" - -#. module: product_template_lineal -#: model:ir.model.fields,field_description:product_template_lineal.field_product_lineal__display_name -msgid "Display Name" -msgstr "" - -#. module: product_template_lineal -#: model:ir.model.fields,field_description:product_template_lineal.field_product_lineal__id -msgid "ID" -msgstr "" - -#. module: product_template_lineal -#: model:ir.model.fields,field_description:product_template_lineal.field_product_lineal____last_update -msgid "Last Modified on" -msgstr "" - -#. module: product_template_lineal -#: model:ir.model.fields,field_description:product_template_lineal.field_product_lineal__write_uid -msgid "Last Updated by" -msgstr "" - -#. module: product_template_lineal -#: model:ir.model.fields,field_description:product_template_lineal.field_product_lineal__write_date -msgid "Last Updated on" -msgstr "" - -#. module: product_template_lineal -#: model:ir.model.fields,field_description:product_template_lineal.field_product_lineal__name -#: model:ir.model.fields,field_description:product_template_lineal.field_product_product__lineal_id -#: model:ir.model.fields,field_description:product_template_lineal.field_product_template__lineal_id -#: model:ir.model.fields,field_description:product_template_lineal.field_stock_move__lineal_id -#: model:ir.model.fields,field_description:product_template_lineal.field_stock_move_line__lineal_id -#: model:ir.model.fields,field_description:product_template_lineal.field_stock_quant__lineal_id -#: model:ir.ui.menu,name:product_template_lineal.menu_product_lineal -#: model_terms:ir.ui.view,arch_db:product_template_lineal.quant_search_view -#: model_terms:ir.ui.view,arch_db:product_template_lineal.stock_move_line_view_search -#: model_terms:ir.ui.view,arch_db:product_template_lineal.view_move_search +#. module: mrp_product_template_lineal +#: model:ir.model.fields,field_description:mrp_product_template_lineal.field_mrp_production__lineal_id +#: model_terms:ir.ui.view,arch_db:mrp_product_template_lineal.view_mrp_production_filter msgid "Lineal" msgstr "" -#. module: product_template_lineal -#: model:ir.actions.act_window,name:product_template_lineal.action_product_lineal -#: model:ir.model,name:product_template_lineal.model_product_lineal -msgid "Lineal Product" -msgstr "" - -#. module: product_template_lineal -#: model:ir.model,name:product_template_lineal.model_product_template -msgid "Product" -msgstr "Produit" - -#. module: product_template_lineal -#: model:ir.model,name:product_template_lineal.model_stock_move_line -msgid "Product Moves (Stock Move Line)" -msgstr "Mouvements de stock" - -#. module: product_template_lineal -#: model:ir.model,name:product_template_lineal.model_stock_quant -msgid "Quants" -msgstr "Quantités" - -#. module: product_template_lineal -#: model:ir.model,name:product_template_lineal.model_stock_move -msgid "Stock Move" -msgstr "Mouvement de stock" +#. module: mrp_product_template_lineal +#: model:ir.model,name:mrp_product_template_lineal.model_mrp_production +msgid "Production Order" +msgstr "Ordre de production" diff --git a/product_template_lineal/i18n/product_template_lineal.pot b/product_template_lineal/i18n/product_template_lineal.pot index 2ef3fd6e39..5961fb37c9 100644 --- a/product_template_lineal/i18n/product_template_lineal.pot +++ b/product_template_lineal/i18n/product_template_lineal.pot @@ -4,10 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 14.0\n" +"Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-15 09:17+0000\n" -"PO-Revision-Date: 2022-03-15 09:17+0000\n" +"POT-Creation-Date: 2024-11-18 10:04+0000\n" +"PO-Revision-Date: 2024-11-18 10:04+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -27,25 +27,16 @@ msgstr "" #. module: product_template_lineal #: model:ir.model.fields,field_description:product_template_lineal.field_product_lineal__display_name -#: model:ir.model.fields,field_description:product_template_lineal.field_product_template__display_name -#: model:ir.model.fields,field_description:product_template_lineal.field_stock_move__display_name -#: model:ir.model.fields,field_description:product_template_lineal.field_stock_move_line__display_name msgid "Display Name" msgstr "" #. module: product_template_lineal #: model:ir.model.fields,field_description:product_template_lineal.field_product_lineal__id -#: model:ir.model.fields,field_description:product_template_lineal.field_product_template__id -#: model:ir.model.fields,field_description:product_template_lineal.field_stock_move__id -#: model:ir.model.fields,field_description:product_template_lineal.field_stock_move_line__id msgid "ID" msgstr "" #. module: product_template_lineal #: model:ir.model.fields,field_description:product_template_lineal.field_product_lineal____last_update -#: model:ir.model.fields,field_description:product_template_lineal.field_product_template____last_update -#: model:ir.model.fields,field_description:product_template_lineal.field_stock_move____last_update -#: model:ir.model.fields,field_description:product_template_lineal.field_stock_move_line____last_update msgid "Last Modified on" msgstr "" @@ -63,11 +54,13 @@ msgstr "" #: model:ir.model.fields,field_description:product_template_lineal.field_product_lineal__name #: model:ir.model.fields,field_description:product_template_lineal.field_product_product__lineal_id #: model:ir.model.fields,field_description:product_template_lineal.field_product_template__lineal_id +#: model:ir.model.fields,field_description:product_template_lineal.field_stock_lot__lineal_id #: model:ir.model.fields,field_description:product_template_lineal.field_stock_move__lineal_id #: model:ir.model.fields,field_description:product_template_lineal.field_stock_move_line__lineal_id #: model:ir.model.fields,field_description:product_template_lineal.field_stock_quant__lineal_id #: model:ir.ui.menu,name:product_template_lineal.menu_product_lineal #: model_terms:ir.ui.view,arch_db:product_template_lineal.quant_search_view +#: model_terms:ir.ui.view,arch_db:product_template_lineal.search_product_lot_filter #: model_terms:ir.ui.view,arch_db:product_template_lineal.stock_move_line_view_search #: model_terms:ir.ui.view,arch_db:product_template_lineal.view_move_search msgid "Lineal" @@ -79,14 +72,24 @@ msgstr "" msgid "Lineal Product" msgstr "" +#. module: product_template_lineal +#: model:ir.model,name:product_template_lineal.model_stock_lot +msgid "Lot/Serial" +msgstr "" + +#. module: product_template_lineal +#: model:ir.model,name:product_template_lineal.model_product_template +msgid "Product" +msgstr "" + #. module: product_template_lineal #: model:ir.model,name:product_template_lineal.model_stock_move_line msgid "Product Moves (Stock Move Line)" msgstr "" #. module: product_template_lineal -#: model:ir.model,name:product_template_lineal.model_product_template -msgid "Product Template" +#: model:ir.model,name:product_template_lineal.model_stock_quant +msgid "Quants" msgstr "" #. module: product_template_lineal diff --git a/product_template_lineal/models/__init__.py b/product_template_lineal/models/__init__.py index e658da7fae..85ff8739f5 100644 --- a/product_template_lineal/models/__init__.py +++ b/product_template_lineal/models/__init__.py @@ -3,3 +3,4 @@ from . import stock_move from . import stock_move_line from . import stock_quant +from . import stock_lot diff --git a/product_template_lineal/models/stock_lot.py b/product_template_lineal/models/stock_lot.py new file mode 100644 index 0000000000..6c6cb7889f --- /dev/null +++ b/product_template_lineal/models/stock_lot.py @@ -0,0 +1,14 @@ +# Copyright 2022 Berezi Amubieta - AvanzOSC +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from odoo import fields, models + + +class StockLot(models.Model): + _inherit = "stock.lot" + + lineal_id = fields.Many2one( + string="Lineal", + comodel_name="product.lineal", + related="product_id.lineal_id", + store=True, + ) diff --git a/product_template_lineal/views/stock_lot_views.xml b/product_template_lineal/views/stock_lot_views.xml new file mode 100644 index 0000000000..4a0022a56b --- /dev/null +++ b/product_template_lineal/views/stock_lot_views.xml @@ -0,0 +1,39 @@ + + + + stock.lot + + + + + + + + + + stock.lot + + + + + + + + + + stock.lot + + + + + + + + + + + diff --git a/purchase_order_line_seller/README.rst b/purchase_order_line_seller/README.rst new file mode 100644 index 0000000000..83532cf266 --- /dev/null +++ b/purchase_order_line_seller/README.rst @@ -0,0 +1,28 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +========================== +Purchase order line seller +========================== + +* In purchase order line new field "Supplier Pricelist". + +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 smash it by providing detailed and welcomed feedback. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Contributors +------------ + +* Ana Juaristi +* Alfredo de la Fuente diff --git a/purchase_order_line_seller/__init__.py b/purchase_order_line_seller/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/purchase_order_line_seller/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/purchase_order_line_seller/__manifest__.py b/purchase_order_line_seller/__manifest__.py new file mode 100644 index 0000000000..c31a0cecd9 --- /dev/null +++ b/purchase_order_line_seller/__manifest__.py @@ -0,0 +1,18 @@ +# Copyright 2024 Alfredo de la Fuente - AvanzOSC +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +{ + "name": "Purchase Order Line Seller", + "version": "16.0.1.0.0", + "category": "Purchase Management", + "license": "AGPL-3", + "author": "AvanzOSC", + "website": "https://github.com/avanzosc/odoo-addons", + "depends": [ + "product", + "purchase", + ], + "data": [ + "views/purchase_order_view.xml", + ], + "installable": True, +} diff --git a/purchase_order_line_seller/i18n/es.po b/purchase_order_line_seller/i18n/es.po new file mode 100644 index 0000000000..595220926c --- /dev/null +++ b/purchase_order_line_seller/i18n/es.po @@ -0,0 +1,50 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_order_line_seller +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-06-11 11:13+0000\n" +"PO-Revision-Date: 2024-06-11 11:13+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: purchase_order_line_seller +#: model:ir.model.fields,field_description:purchase_order_line_seller.field_product_supplierinfo__display_name +#: model:ir.model.fields,field_description:purchase_order_line_seller.field_purchase_order_line__display_name +msgid "Display Name" +msgstr "Nombre mostrado" + +#. module: purchase_order_line_seller +#: model:ir.model.fields,field_description:purchase_order_line_seller.field_product_supplierinfo__id +#: model:ir.model.fields,field_description:purchase_order_line_seller.field_purchase_order_line__id +msgid "ID" +msgstr "ID" + +#. module: purchase_order_line_seller +#: model:ir.model.fields,field_description:purchase_order_line_seller.field_product_supplierinfo____last_update +#: model:ir.model.fields,field_description:purchase_order_line_seller.field_purchase_order_line____last_update +msgid "Last Modified on" +msgstr "Última modificación el" + +#. module: purchase_order_line_seller +#: model:ir.model,name:purchase_order_line_seller.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "Línea de pedido de compra" + +#. module: purchase_order_line_seller +#: model:ir.model,name:purchase_order_line_seller.model_product_supplierinfo +#: model:ir.model.fields,field_description:purchase_order_line_seller.field_purchase_order_line__seller_id +msgid "Supplier Pricelist" +msgstr "Tarifa de proveedor" + +#. module: purchase_order_line_seller +#: model:ir.model.fields,field_description:purchase_order_line_seller.field_purchase_order_line__product_seller_ids +msgid "Suppliers Pricelists" +msgstr "Tarifas de proveedor" diff --git a/purchase_order_line_seller/i18n/purchase_order_line_seller.pot b/purchase_order_line_seller/i18n/purchase_order_line_seller.pot new file mode 100644 index 0000000000..36d16a0b11 --- /dev/null +++ b/purchase_order_line_seller/i18n/purchase_order_line_seller.pot @@ -0,0 +1,50 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_order_line_seller +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-06-11 11:13+0000\n" +"PO-Revision-Date: 2024-06-11 11:13+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: purchase_order_line_seller +#: model:ir.model.fields,field_description:purchase_order_line_seller.field_product_supplierinfo__display_name +#: model:ir.model.fields,field_description:purchase_order_line_seller.field_purchase_order_line__display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_order_line_seller +#: model:ir.model.fields,field_description:purchase_order_line_seller.field_product_supplierinfo__id +#: model:ir.model.fields,field_description:purchase_order_line_seller.field_purchase_order_line__id +msgid "ID" +msgstr "" + +#. module: purchase_order_line_seller +#: model:ir.model.fields,field_description:purchase_order_line_seller.field_product_supplierinfo____last_update +#: model:ir.model.fields,field_description:purchase_order_line_seller.field_purchase_order_line____last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_order_line_seller +#: model:ir.model,name:purchase_order_line_seller.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "" + +#. module: purchase_order_line_seller +#: model:ir.model,name:purchase_order_line_seller.model_product_supplierinfo +#: model:ir.model.fields,field_description:purchase_order_line_seller.field_purchase_order_line__seller_id +msgid "Supplier Pricelist" +msgstr "" + +#. module: purchase_order_line_seller +#: model:ir.model.fields,field_description:purchase_order_line_seller.field_purchase_order_line__product_seller_ids +msgid "Suppliers Pricelists" +msgstr "" diff --git a/purchase_order_line_seller/models/__init__.py b/purchase_order_line_seller/models/__init__.py new file mode 100644 index 0000000000..78f8d69fc9 --- /dev/null +++ b/purchase_order_line_seller/models/__init__.py @@ -0,0 +1,2 @@ +from . import product_supplierinfo +from . import purchase_order_line diff --git a/purchase_order_line_seller/models/product_supplierinfo.py b/purchase_order_line_seller/models/product_supplierinfo.py new file mode 100644 index 0000000000..67d6373221 --- /dev/null +++ b/purchase_order_line_seller/models/product_supplierinfo.py @@ -0,0 +1,22 @@ +# Copyright 2024 Alfredo de la Fuente - AvanzOSC +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html +from odoo import models + + +class ProductSupplierinfo(models.Model): + _inherit = "product.supplierinfo" + + def name_get(self): + result = [] + for supplierinfo in self: + product_name = ( + supplierinfo.product_name + if supplierinfo.product_name + else supplierinfo.partner_id.name + ) + if supplierinfo.product_code: + name = "[{}] {}".format(supplierinfo.product_code, product_name) + else: + name = "{}".format(product_name) + result.append((supplierinfo.id, name)) + return result diff --git a/purchase_order_line_seller/models/purchase_order_line.py b/purchase_order_line_seller/models/purchase_order_line.py new file mode 100644 index 0000000000..341a88d69d --- /dev/null +++ b/purchase_order_line_seller/models/purchase_order_line.py @@ -0,0 +1,39 @@ +# Copyright 2024 Alfredo de la Fuente - AvanzOSC +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html +from odoo import api, fields, models + + +class PurchaseOrderLine(models.Model): + _inherit = "purchase.order.line" + + seller_id = fields.Many2one( + string="Supplier Pricelist", comodel_name="product.supplierinfo", copy=False + ) + product_seller_ids = fields.Many2many( + string="Suppliers Pricelists", + comodel_name="product.supplierinfo", + compute="_compute_product_seller_ids", + ) + + @api.depends("product_id") + def _compute_product_seller_ids(self): + for line in self: + sellers = self.env["product.supplierinfo"] + if line.product_id and line.product_id.seller_ids: + sellers = line.product_id.seller_ids + line.product_seller_ids = [(6, 0, sellers.ids)] + + @api.onchange("seller_id") + def onchange_seller_id(self): + if self.seller_id: + if self.seller_id.product_name: + name = "[{}] {}".format( + self.seller_id.product_code, self.seller_id.product_name + ) + else: + name = "[{}] {}".format( + self.seller_id.product_code, self.product_id.name + ) + self.name = name + self.price_unit = self.seller_id.price + self.discount = self.seller_id.discount diff --git a/purchase_order_line_seller/views/purchase_order_view.xml b/purchase_order_line_seller/views/purchase_order_view.xml new file mode 100644 index 0000000000..6416067105 --- /dev/null +++ b/purchase_order_line_seller/views/purchase_order_view.xml @@ -0,0 +1,31 @@ + + + + purchase.order + + + + + + + + + + + + + diff --git a/purchase_report_stamp/README.rst b/purchase_report_stamp/README.rst new file mode 100644 index 0000000000..772c5b9757 --- /dev/null +++ b/purchase_report_stamp/README.rst @@ -0,0 +1,73 @@ +.. image:: https://img.shields.io/badge/license-LGPL--3-blue.svg + :target: https://opensource.org/licenses/LGPL-3.0 + :alt: License: LGPL-3 + +======================== +purchase_report_stamp +======================== + +Overview +======== + +The **purchase_report_stamp** module extends the **purchase** module by adding the company’s digital signature and stamp images to purchase order reports. This functionality enhances the presentation and authenticity of purchase documents. + +Features +======== + +- Displays the company's digital signature image on purchase orders if configured in the **Company** settings. + +- Displays the company's stamp image on purchase orders if configured in the **Company** settings. + +Usage +===== + +1. **Install the Module**: + + - Install the **purchase_report_stamp** module via the Apps menu. + +2. **Configure Signature and Stamp**: + + - Ensure the **res_company_signature_fields** module is installed and populate the **Signature Image** and **Stamp Image** fields in the **Company** settings. + +3. **View Purchase Orders**: + + - Generate or print a purchase order. The report will display the company's digital signature and stamp if they are configured. + +Configuration +============= + +This module depends on the **res_company_signature_fields** module, which provides the fields for storing the signature and stamp images. + +Testing +======= + +Test the following scenarios to ensure the module functions as expected: + +- **Test Signature Display**: + + - Generate a purchase order with a configured signature image in the **Company** settings. Verify that the image appears on the document. + +- **Test Stamp Display**: + + - Generate a purchase order with a configured stamp image in the **Company** settings. Check that the image is displayed as expected. + +Bug Tracker +=========== + +If you encounter any issues, please report them on the GitHub repository at `GitHub Issues `_. + +Credits +======= + +Contributors +------------ + +* Ana Juaristi +* Unai Beristain + +For specific questions regarding this module, please contact the contributors. For support, please use the official issue tracker. + +License +======= + +This project is licensed under the LGPL-3 License. For more details, refer to the LICENSE file or visit . diff --git a/purchase_report_stamp/__init__.py b/purchase_report_stamp/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/purchase_report_stamp/__manifest__.py b/purchase_report_stamp/__manifest__.py new file mode 100644 index 0000000000..a124f5aafc --- /dev/null +++ b/purchase_report_stamp/__manifest__.py @@ -0,0 +1,12 @@ +{ + "name": "purchase_report_stamp", + "version": "16.0.1.0.0", + "category": "Custom", + "author": "Avanzosc", + "license": "LGPL-3", + "depends": ["res_company_signature_fields"], + "data": ["views/purchase_report_views.xml"], + "installable": True, + "application": False, + "website": "https://github.com/avanzosc/odoo-addons", +} diff --git a/purchase_report_stamp/views/purchase_report_views.xml b/purchase_report_stamp/views/purchase_report_views.xml new file mode 100644 index 0000000000..8732004575 --- /dev/null +++ b/purchase_report_stamp/views/purchase_report_views.xml @@ -0,0 +1,10 @@ + + + diff --git a/res_company_signature_fields/README.rst b/res_company_signature_fields/README.rst new file mode 100644 index 0000000000..9f3b768e8f --- /dev/null +++ b/res_company_signature_fields/README.rst @@ -0,0 +1,68 @@ +.. image:: https://img.shields.io/badge/license-LGPL--3-blue.svg + :target: https://opensource.org/licenses/LGPL-3.0 + :alt: License: LGPL-3 + +======================== +Company Signature Fields +======================== + +Overview +======== + +The **Company Signature Fields** module adds two fields to the company settings for storing digital signature images and stamp images. This allows companies to manage and store their digital signatures and stamps within Odoo. + +Features +======== + +- **Digital Signature Image**: Adds a field for uploading and storing a company's digital signature image. + +- **Digital Stamp Image**: Adds a field for uploading and storing a company's digital stamp image. + +Usage +===== + +1. **Install the Module**: + - Install the **Company Signature Fields** module via the Apps menu. + +2. **Configure Signature and Stamp**: + - Go to the **Company** settings and you will find the fields for **Signature Image** and **Stamp Image**. You can upload images for the signature and stamp here. + +3. **Display on Company Form**: + - The **Signature Image** and **Stamp Image** fields will be displayed on the company form, allowing easy access and management. + +Configuration +============= + +No additional configuration is required. Simply install the module and add images for the signature and stamp in the company settings. + +Testing +======= + +Test the following scenarios to ensure the module functions as expected: + +- **Test Signature Upload**: + - Go to the **Company** settings and upload a digital signature image. Check if the image is correctly displayed. + +- **Test Stamp Upload**: + - Upload a digital stamp image and verify if it appears in the company form. + +Bug Tracker +=========== + +If you encounter any issues, please report them on the GitHub repository at `GitHub Issues `_. + +Credits +======= + +Contributors +------------ + +* Unai Beristain +* Ana Juaristi + +For specific questions regarding this module, please contact the contributors. For support, please use the official issue tracker. + +License +======= + +This project is licensed under the LGPL-3 License. For more details, refer to the LICENSE file or visit . diff --git a/res_company_signature_fields/__init__.py b/res_company_signature_fields/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/res_company_signature_fields/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/res_company_signature_fields/__manifest__.py b/res_company_signature_fields/__manifest__.py new file mode 100644 index 0000000000..ef80d1c297 --- /dev/null +++ b/res_company_signature_fields/__manifest__.py @@ -0,0 +1,14 @@ +{ + "name": "Company Signature Fields", + "version": "16.0.1.0.0", + "category": "Custom", + "author": "Avanzosc", + "license": "LGPL-3", + "depends": ["base"], + "data": [ + "views/res_company_signature_fields_view.xml", + ], + "installable": True, + "application": False, + "website": "https://github.com/avanzosc/odoo-addons", +} diff --git a/res_company_signature_fields/models/__init__.py b/res_company_signature_fields/models/__init__.py new file mode 100644 index 0000000000..aff44f335a --- /dev/null +++ b/res_company_signature_fields/models/__init__.py @@ -0,0 +1 @@ +from . import res_company diff --git a/res_company_signature_fields/models/res_company.py b/res_company_signature_fields/models/res_company.py new file mode 100644 index 0000000000..7c3e59e31c --- /dev/null +++ b/res_company_signature_fields/models/res_company.py @@ -0,0 +1,8 @@ +from odoo import fields, models + + +class ResCompany(models.Model): + _inherit = "res.company" + + signature_image = fields.Image(copy=False) + stamp_image = fields.Image(copy=False) diff --git a/res_company_signature_fields/views/res_company_signature_fields_view.xml b/res_company_signature_fields/views/res_company_signature_fields_view.xml new file mode 100644 index 0000000000..10e89f7cd4 --- /dev/null +++ b/res_company_signature_fields/views/res_company_signature_fields_view.xml @@ -0,0 +1,39 @@ + + + + res.company + + + + + + + + + + + diff --git a/res_partner_permitted_categories/controllers/main.py b/res_partner_permitted_categories/controllers/main.py index 6dd514c5ed..71aab18acc 100644 --- a/res_partner_permitted_categories/controllers/main.py +++ b/res_partner_permitted_categories/controllers/main.py @@ -1,7 +1,7 @@ from odoo import http from odoo.http import request -from odoo.addons.website_sale.controllers.main import WebsiteSale +from odoo.addons.website_sale.controllers.main import TableCompute, WebsiteSale class CustomWebsiteSale(WebsiteSale): @@ -26,19 +26,39 @@ def shop( ppg=ppg, **post, ) - partner = request.env.user.partner_id + partner = request.env.user.partner_id permitted_category_ids = partner.permitted_web_categories.ids if permitted_category_ids: filtered_categories = res.qcontext["categories"].filtered( - lambda c: c.id in permitted_category_ids + lambda categ: categ.id in permitted_category_ids + ) + res.qcontext.update({"categories": filtered_categories}) + + filtered_search_products = res.qcontext["search_product"].filtered( + lambda prod: prod.public_categ_ids.filtered( + lambda categ: categ.id in permitted_category_ids + ) + ) + + filtered_products = res.qcontext["products"].filtered( + lambda prod: prod.public_categ_ids.filtered( + lambda categ: categ.id in permitted_category_ids + ) ) res.qcontext.update( { - "categories": filtered_categories, + "search_product": filtered_search_products, + "products": filtered_products, } ) + ppg = res.qcontext.get("ppg", 20) + ppr = res.qcontext.get("ppr", 4) + res.qcontext.update( + {"bins": TableCompute().process(filtered_products, ppg, ppr)} + ) + return request.render("website_sale.products", res.qcontext) diff --git a/setup/account_budget_classify_by_mis/odoo/addons/account_budget_classify_by_mis b/setup/account_budget_classify_by_mis/odoo/addons/account_budget_classify_by_mis new file mode 120000 index 0000000000..756d481138 --- /dev/null +++ b/setup/account_budget_classify_by_mis/odoo/addons/account_budget_classify_by_mis @@ -0,0 +1 @@ +../../../../account_budget_classify_by_mis \ No newline at end of file diff --git a/setup/account_budget_classify_by_mis/setup.py b/setup/account_budget_classify_by_mis/setup.py new file mode 100644 index 0000000000..28c57bb640 --- /dev/null +++ b/setup/account_budget_classify_by_mis/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/setup/account_invoice_print_image/odoo/addons/account_invoice_print_image b/setup/account_invoice_print_image/odoo/addons/account_invoice_print_image new file mode 120000 index 0000000000..9e9179d3c3 --- /dev/null +++ b/setup/account_invoice_print_image/odoo/addons/account_invoice_print_image @@ -0,0 +1 @@ +../../../../account_invoice_print_image \ No newline at end of file diff --git a/setup/account_invoice_print_image/setup.py b/setup/account_invoice_print_image/setup.py new file mode 100644 index 0000000000..28c57bb640 --- /dev/null +++ b/setup/account_invoice_print_image/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/setup/account_invoice_report_grouped_by_picking_batch_transfer/odoo/addons/account_invoice_report_grouped_by_picking_batch_transfer b/setup/account_invoice_report_grouped_by_picking_batch_transfer/odoo/addons/account_invoice_report_grouped_by_picking_batch_transfer new file mode 120000 index 0000000000..94a1f0d70a --- /dev/null +++ b/setup/account_invoice_report_grouped_by_picking_batch_transfer/odoo/addons/account_invoice_report_grouped_by_picking_batch_transfer @@ -0,0 +1 @@ +../../../../account_invoice_report_grouped_by_picking_batch_transfer \ No newline at end of file diff --git a/setup/account_invoice_report_grouped_by_picking_batch_transfer/setup.py b/setup/account_invoice_report_grouped_by_picking_batch_transfer/setup.py new file mode 100644 index 0000000000..28c57bb640 --- /dev/null +++ b/setup/account_invoice_report_grouped_by_picking_batch_transfer/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/setup/account_invoice_report_stamp/odoo/addons/account_invoice_report_stamp b/setup/account_invoice_report_stamp/odoo/addons/account_invoice_report_stamp new file mode 120000 index 0000000000..b7596eb84b --- /dev/null +++ b/setup/account_invoice_report_stamp/odoo/addons/account_invoice_report_stamp @@ -0,0 +1 @@ +../../../../account_invoice_report_stamp \ No newline at end of file diff --git a/setup/account_invoice_report_stamp/setup.py b/setup/account_invoice_report_stamp/setup.py new file mode 100644 index 0000000000..28c57bb640 --- /dev/null +++ b/setup/account_invoice_report_stamp/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/setup/contract_line_check_recurring_date_fields/odoo/addons/contract_line_check_recurring_date_fields b/setup/contract_line_check_recurring_date_fields/odoo/addons/contract_line_check_recurring_date_fields new file mode 120000 index 0000000000..1b9394b150 --- /dev/null +++ b/setup/contract_line_check_recurring_date_fields/odoo/addons/contract_line_check_recurring_date_fields @@ -0,0 +1 @@ +../../../../contract_line_check_recurring_date_fields \ No newline at end of file diff --git a/setup/contract_line_check_recurring_date_fields/setup.py b/setup/contract_line_check_recurring_date_fields/setup.py new file mode 100644 index 0000000000..28c57bb640 --- /dev/null +++ b/setup/contract_line_check_recurring_date_fields/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/setup/crossovered_budget_lines_notes/odoo/addons/crossovered_budget_lines_notes b/setup/crossovered_budget_lines_notes/odoo/addons/crossovered_budget_lines_notes new file mode 120000 index 0000000000..00f4abb2d1 --- /dev/null +++ b/setup/crossovered_budget_lines_notes/odoo/addons/crossovered_budget_lines_notes @@ -0,0 +1 @@ +../../../../crossovered_budget_lines_notes \ No newline at end of file diff --git a/setup/crossovered_budget_lines_notes/setup.py b/setup/crossovered_budget_lines_notes/setup.py new file mode 100644 index 0000000000..28c57bb640 --- /dev/null +++ b/setup/crossovered_budget_lines_notes/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/setup/product_brand_active/odoo/addons/product_brand_active b/setup/product_brand_active/odoo/addons/product_brand_active new file mode 120000 index 0000000000..b4f32d884e --- /dev/null +++ b/setup/product_brand_active/odoo/addons/product_brand_active @@ -0,0 +1 @@ +../../../../product_brand_active \ No newline at end of file diff --git a/setup/product_brand_active/setup.py b/setup/product_brand_active/setup.py new file mode 100644 index 0000000000..28c57bb640 --- /dev/null +++ b/setup/product_brand_active/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/setup/product_nutrition_allergen_extension/odoo/addons/product_nutrition_allergen_extension b/setup/product_nutrition_allergen_extension/odoo/addons/product_nutrition_allergen_extension new file mode 120000 index 0000000000..8f5dbf6ae0 --- /dev/null +++ b/setup/product_nutrition_allergen_extension/odoo/addons/product_nutrition_allergen_extension @@ -0,0 +1 @@ +../../../../product_nutrition_allergen_extension \ No newline at end of file diff --git a/setup/product_nutrition_allergen_extension/setup.py b/setup/product_nutrition_allergen_extension/setup.py new file mode 100644 index 0000000000..28c57bb640 --- /dev/null +++ b/setup/product_nutrition_allergen_extension/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/setup/product_template_history_notes/odoo/addons/product_template_history_notes b/setup/product_template_history_notes/odoo/addons/product_template_history_notes new file mode 120000 index 0000000000..3a471ae88c --- /dev/null +++ b/setup/product_template_history_notes/odoo/addons/product_template_history_notes @@ -0,0 +1 @@ +../../../../product_template_history_notes \ No newline at end of file diff --git a/setup/product_template_history_notes/setup.py b/setup/product_template_history_notes/setup.py new file mode 100644 index 0000000000..28c57bb640 --- /dev/null +++ b/setup/product_template_history_notes/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/setup/purchase_order_line_seller/odoo/addons/purchase_order_line_seller b/setup/purchase_order_line_seller/odoo/addons/purchase_order_line_seller new file mode 120000 index 0000000000..b765387ece --- /dev/null +++ b/setup/purchase_order_line_seller/odoo/addons/purchase_order_line_seller @@ -0,0 +1 @@ +../../../../purchase_order_line_seller \ No newline at end of file diff --git a/setup/purchase_order_line_seller/setup.py b/setup/purchase_order_line_seller/setup.py new file mode 100644 index 0000000000..28c57bb640 --- /dev/null +++ b/setup/purchase_order_line_seller/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/setup/purchase_report_stamp/odoo/addons/purchase_report_stamp b/setup/purchase_report_stamp/odoo/addons/purchase_report_stamp new file mode 120000 index 0000000000..b82459dd53 --- /dev/null +++ b/setup/purchase_report_stamp/odoo/addons/purchase_report_stamp @@ -0,0 +1 @@ +../../../../purchase_report_stamp \ No newline at end of file diff --git a/setup/purchase_report_stamp/setup.py b/setup/purchase_report_stamp/setup.py new file mode 100644 index 0000000000..28c57bb640 --- /dev/null +++ b/setup/purchase_report_stamp/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/setup/res_company_signature_fields/odoo/addons/res_company_signature_fields b/setup/res_company_signature_fields/odoo/addons/res_company_signature_fields new file mode 120000 index 0000000000..cedb862a12 --- /dev/null +++ b/setup/res_company_signature_fields/odoo/addons/res_company_signature_fields @@ -0,0 +1 @@ +../../../../res_company_signature_fields \ No newline at end of file diff --git a/setup/res_company_signature_fields/setup.py b/setup/res_company_signature_fields/setup.py new file mode 100644 index 0000000000..28c57bb640 --- /dev/null +++ b/setup/res_company_signature_fields/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/setup/stock_inventory_import_wizard/odoo/addons/stock_inventory_import_wizard b/setup/stock_inventory_import_wizard/odoo/addons/stock_inventory_import_wizard new file mode 120000 index 0000000000..9a2cc720ea --- /dev/null +++ b/setup/stock_inventory_import_wizard/odoo/addons/stock_inventory_import_wizard @@ -0,0 +1 @@ +../../../../stock_inventory_import_wizard \ No newline at end of file diff --git a/setup/stock_inventory_import_wizard/setup.py b/setup/stock_inventory_import_wizard/setup.py new file mode 100644 index 0000000000..28c57bb640 --- /dev/null +++ b/setup/stock_inventory_import_wizard/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/setup/stock_lot_last_move_locations/odoo/addons/stock_lot_last_move_locations b/setup/stock_lot_last_move_locations/odoo/addons/stock_lot_last_move_locations new file mode 120000 index 0000000000..e08246d86f --- /dev/null +++ b/setup/stock_lot_last_move_locations/odoo/addons/stock_lot_last_move_locations @@ -0,0 +1 @@ +../../../../stock_lot_last_move_locations \ No newline at end of file diff --git a/setup/stock_lot_last_move_locations/setup.py b/setup/stock_lot_last_move_locations/setup.py new file mode 100644 index 0000000000..28c57bb640 --- /dev/null +++ b/setup/stock_lot_last_move_locations/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/setup/stock_move_line_package_dimension/odoo/addons/stock_move_line_package_dimension b/setup/stock_move_line_package_dimension/odoo/addons/stock_move_line_package_dimension new file mode 120000 index 0000000000..4b62150889 --- /dev/null +++ b/setup/stock_move_line_package_dimension/odoo/addons/stock_move_line_package_dimension @@ -0,0 +1 @@ +../../../../stock_move_line_package_dimension \ No newline at end of file diff --git a/setup/stock_move_line_package_dimension/setup.py b/setup/stock_move_line_package_dimension/setup.py new file mode 100644 index 0000000000..28c57bb640 --- /dev/null +++ b/setup/stock_move_line_package_dimension/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/setup/stock_picking_automatic_lot/odoo/addons/stock_picking_automatic_lot b/setup/stock_picking_automatic_lot/odoo/addons/stock_picking_automatic_lot new file mode 120000 index 0000000000..3eca83dce2 --- /dev/null +++ b/setup/stock_picking_automatic_lot/odoo/addons/stock_picking_automatic_lot @@ -0,0 +1 @@ +../../../../stock_picking_automatic_lot \ No newline at end of file diff --git a/setup/stock_picking_automatic_lot/setup.py b/setup/stock_picking_automatic_lot/setup.py new file mode 100644 index 0000000000..28c57bb640 --- /dev/null +++ b/setup/stock_picking_automatic_lot/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/setup/stock_picking_batch_package/odoo/addons/stock_picking_batch_package b/setup/stock_picking_batch_package/odoo/addons/stock_picking_batch_package new file mode 120000 index 0000000000..9d7f420ac7 --- /dev/null +++ b/setup/stock_picking_batch_package/odoo/addons/stock_picking_batch_package @@ -0,0 +1 @@ +../../../../stock_picking_batch_package \ No newline at end of file diff --git a/setup/stock_picking_batch_package/setup.py b/setup/stock_picking_batch_package/setup.py new file mode 100644 index 0000000000..28c57bb640 --- /dev/null +++ b/setup/stock_picking_batch_package/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/setup/stock_picking_batch_package_usability/odoo/addons/stock_picking_batch_package_usability b/setup/stock_picking_batch_package_usability/odoo/addons/stock_picking_batch_package_usability new file mode 120000 index 0000000000..6b8a910204 --- /dev/null +++ b/setup/stock_picking_batch_package_usability/odoo/addons/stock_picking_batch_package_usability @@ -0,0 +1 @@ +../../../../stock_picking_batch_package_usability \ No newline at end of file diff --git a/setup/stock_picking_batch_package_usability/setup.py b/setup/stock_picking_batch_package_usability/setup.py new file mode 100644 index 0000000000..28c57bb640 --- /dev/null +++ b/setup/stock_picking_batch_package_usability/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/setup/stock_picking_button_show_details/odoo/addons/stock_picking_button_show_details b/setup/stock_picking_button_show_details/odoo/addons/stock_picking_button_show_details new file mode 120000 index 0000000000..6752e3dbac --- /dev/null +++ b/setup/stock_picking_button_show_details/odoo/addons/stock_picking_button_show_details @@ -0,0 +1 @@ +../../../../stock_picking_button_show_details \ No newline at end of file diff --git a/setup/stock_picking_button_show_details/setup.py b/setup/stock_picking_button_show_details/setup.py new file mode 100644 index 0000000000..28c57bb640 --- /dev/null +++ b/setup/stock_picking_button_show_details/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/setup/stock_picking_create_repair_invoice_address/odoo/addons/stock_picking_create_repair_invoice_address b/setup/stock_picking_create_repair_invoice_address/odoo/addons/stock_picking_create_repair_invoice_address new file mode 120000 index 0000000000..f5f7a41c1c --- /dev/null +++ b/setup/stock_picking_create_repair_invoice_address/odoo/addons/stock_picking_create_repair_invoice_address @@ -0,0 +1 @@ +../../../../stock_picking_create_repair_invoice_address \ No newline at end of file diff --git a/setup/stock_picking_create_repair_invoice_address/setup.py b/setup/stock_picking_create_repair_invoice_address/setup.py new file mode 100644 index 0000000000..28c57bb640 --- /dev/null +++ b/setup/stock_picking_create_repair_invoice_address/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/setup/stock_picking_package_usability/odoo/addons/stock_picking_package_usability b/setup/stock_picking_package_usability/odoo/addons/stock_picking_package_usability new file mode 120000 index 0000000000..9ca39c698c --- /dev/null +++ b/setup/stock_picking_package_usability/odoo/addons/stock_picking_package_usability @@ -0,0 +1 @@ +../../../../stock_picking_package_usability \ No newline at end of file diff --git a/setup/stock_picking_package_usability/setup.py b/setup/stock_picking_package_usability/setup.py new file mode 100644 index 0000000000..28c57bb640 --- /dev/null +++ b/setup/stock_picking_package_usability/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/setup/stock_replenishment_kits_qty/odoo/addons/stock_replenishment_kits_qty b/setup/stock_replenishment_kits_qty/odoo/addons/stock_replenishment_kits_qty new file mode 120000 index 0000000000..306c83a776 --- /dev/null +++ b/setup/stock_replenishment_kits_qty/odoo/addons/stock_replenishment_kits_qty @@ -0,0 +1 @@ +../../../../stock_replenishment_kits_qty \ No newline at end of file diff --git a/setup/stock_replenishment_kits_qty/setup.py b/setup/stock_replenishment_kits_qty/setup.py new file mode 100644 index 0000000000..28c57bb640 --- /dev/null +++ b/setup/stock_replenishment_kits_qty/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/setup/stock_report_stamp/odoo/addons/stock_report_stamp b/setup/stock_report_stamp/odoo/addons/stock_report_stamp new file mode 120000 index 0000000000..c00dca98b6 --- /dev/null +++ b/setup/stock_report_stamp/odoo/addons/stock_report_stamp @@ -0,0 +1 @@ +../../../../stock_report_stamp \ No newline at end of file diff --git a/setup/stock_report_stamp/setup.py b/setup/stock_report_stamp/setup.py new file mode 100644 index 0000000000..28c57bb640 --- /dev/null +++ b/setup/stock_report_stamp/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/setup/web_external_layout_nif/odoo/addons/web_external_layout_nif b/setup/web_external_layout_nif/odoo/addons/web_external_layout_nif new file mode 120000 index 0000000000..b38af914f3 --- /dev/null +++ b/setup/web_external_layout_nif/odoo/addons/web_external_layout_nif @@ -0,0 +1 @@ +../../../../web_external_layout_nif \ No newline at end of file diff --git a/setup/web_external_layout_nif/setup.py b/setup/web_external_layout_nif/setup.py new file mode 100644 index 0000000000..28c57bb640 --- /dev/null +++ b/setup/web_external_layout_nif/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/stock_inventory_import_wizard/README.rst b/stock_inventory_import_wizard/README.rst new file mode 100644 index 0000000000..81bba9b5a5 --- /dev/null +++ b/stock_inventory_import_wizard/README.rst @@ -0,0 +1,28 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +============================= +Stock Inventory Import Wizard +============================= + +Module to import inventory. + +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 smash it by providing detailed and welcomed feedback. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Contributors +------------ + +* Berezi Amubieta +* Ana Juaristi diff --git a/stock_inventory_import_wizard/__init__.py b/stock_inventory_import_wizard/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/stock_inventory_import_wizard/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/stock_inventory_import_wizard/__manifest__.py b/stock_inventory_import_wizard/__manifest__.py new file mode 100644 index 0000000000..d3b4331dd0 --- /dev/null +++ b/stock_inventory_import_wizard/__manifest__.py @@ -0,0 +1,22 @@ +# Copyright 2022 Berezi Amubieta - AvanzOSC +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +{ + "name": "Stock Inventory Import Wizard", + "version": "14.0.1.0.0", + "category": "Hidden/Tools", + "license": "AGPL-3", + "author": "AvanzOSC", + "website": "https://github.com/avanzosc/odoo-addons", + "depends": [ + "stock", + "base_import_wizard", + ], + "data": [ + "security/ir.model.access.csv", + "views/stock_inventory_import_line_views.xml", + "views/stock_inventory_import_views.xml", + ], + "external_dependencies": {"python": ["xlrd"]}, + "installable": True, +} diff --git a/stock_inventory_import_wizard/i18n/es.po b/stock_inventory_import_wizard/i18n/es.po new file mode 100644 index 0000000000..c4c3950017 --- /dev/null +++ b/stock_inventory_import_wizard/i18n/es.po @@ -0,0 +1,627 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_inventory_import_wizard +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-11-25 09:53+0000\n" +"PO-Revision-Date: 2024-11-25 09:53+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__inventory_line_count +msgid "# Inventory Lines" +msgstr "# Líneas de inventario" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "" +"Cantidad: this will fill Inventory Product Quantity" +msgstr "Cantidad: esto rellenará la Cantidad del producto" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "Codigo: this will fill Inventory Product Code" +msgstr "Codigo: esto rellenará el Código de producto" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "Descripcion: this will fill Inventory Product Name" +msgstr "" +"Descripcion: esto rellenará el Nombre del producto" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "Lote: this will fill Inventory Lot" +msgstr "Lote: esto rellenará el Lote" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "Paquete: this will fill Inventory Package" +msgstr "Paquete: esto rellenará el Paquete" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "Propietario: this will fill Inventory Owner" +msgstr "Propietario: esto rellenará el Propietario" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "Ubicacion: this will fill Inventory Location" +msgstr "Ubicacion: esto rellenará la Ubicación" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__action +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_line_view_search +msgid "Action" +msgstr "Acción" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__message_needaction +msgid "Action Needed" +msgstr "Acción requerida" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__activity_ids +msgid "Activities" +msgstr "Actividades" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__activity_exception_decoration +msgid "Activity Exception Decoration" +msgstr "Actividad decoración de excepción" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__activity_state +msgid "Activity State" +msgstr "Estado de la actividad" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__activity_type_icon +msgid "Activity Type Icon" +msgstr "Icono de tipo de actividad" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__message_attachment_count +msgid "Attachment Count" +msgstr "Recuento de anexos" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__company_id +msgid "Company" +msgstr "Compañía" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields.selection,name:stock_inventory_import_wizard.selection__stock_inventory_import_line__action__create +msgid "Create" +msgstr "Crear" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__lot_create +msgid "Create Lot" +msgstr "Crear lote" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__create_uid +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__create_date +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__create_date +msgid "Created on" +msgstr "Creado el" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__display_name +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__display_name +msgid "Display Name" +msgstr "Nombre disponible" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_line_view_search +msgid "Do Nothing" +msgstr "No hacer nada" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_search +msgid "Done" +msgstr "Hecho" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_search +msgid "Error" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "Error Log" +msgstr "Registro de errores" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_line_view_search +msgid "Errored" +msgstr "Error en" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__data +msgid "File" +msgstr "Archivo" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__filename +msgid "Filename" +msgstr "Nombre de archivo" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__message_follower_ids +msgid "Followers" +msgstr "Seguidores" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__message_partner_ids +msgid "Followers (Partners)" +msgstr "Seguidores (contactos)" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,help:stock_inventory_import_wizard.field_stock_inventory_import__activity_type_icon +msgid "Font awesome icon e.g. fa-tasks" +msgstr "Icono de la fuente impresionante, por ejemplo, fa-tasks" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_line_view_search +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_search +msgid "Group By" +msgstr "Agrupar por" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__has_message +msgid "Has Message" +msgstr "Tiene mensaje" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "Help" +msgstr "Ayuda" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "Help with Excel column names" +msgstr "Ayuda con los nombres de las columnas de Excel" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__id +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__id +msgid "ID" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__activity_exception_icon +msgid "Icon" +msgstr "Icono" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,help:stock_inventory_import_wizard.field_stock_inventory_import__activity_exception_icon +msgid "Icon to indicate an exception activity." +msgstr "Icono para indicar una actividad de excepción." + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,help:stock_inventory_import_wizard.field_stock_inventory_import__message_needaction +msgid "If checked, new messages require your attention." +msgstr "Si está marcada, los nuevos mensajes requieren su atención." + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,help:stock_inventory_import_wizard.field_stock_inventory_import__message_has_error +#: model:ir.model.fields,help:stock_inventory_import_wizard.field_stock_inventory_import__message_has_sms_error +msgid "If checked, some messages have a delivery error." +msgstr "Si está marcada, algunos mensajes tienen un error de entrega." + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "Import" +msgstr "Importar" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__file_date +msgid "Import Date" +msgstr "Fecha de importación" + +#. module: stock_inventory_import_wizard +#: model:ir.actions.act_window,name:stock_inventory_import_wizard.stock_inventory_import_action +#: model:ir.ui.menu,name:stock_inventory_import_wizard.inventory_import_menu +#: model:ir.ui.menu,name:stock_inventory_import_wizard.stock_inventory_import_menu +msgid "Import Inventory" +msgstr "Importar inventario" + +#. module: stock_inventory_import_wizard +#: model:ir.actions.act_window,name:stock_inventory_import_wizard.stock_inventory_lot_import_line_action +msgid "Import Inventory Lines" +msgstr "Importar líneas de inventario" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "Import Lines" +msgstr "Líneas de importación" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__import_id +msgid "Import Wizard" +msgstr "Asistente de importación" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "Imported Lines" +msgstr "Líneas importadas" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "Inventory Lines" +msgstr "Líneas de inventario" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__message_is_follower +msgid "Is Follower" +msgstr "Es seguidor" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import____last_update +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line____last_update +msgid "Last Modified on" +msgstr "Modificado el" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__write_uid +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__write_uid +msgid "Last Updated by" +msgstr "Actualizado por" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__write_date +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__write_date +msgid "Last Updated on" +msgstr "Actualizado el" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,help:stock_inventory_import_wizard.field_stock_inventory_import_line__company_id +msgid "Let this field empty if this location is shared between companies" +msgstr "Deje este campo vacío si esta ubicación es compartida entre empresas" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__import_line_ids +msgid "Lines to Import" +msgstr "Líneas a importar" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__inventory_location_id +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_line_view_search +msgid "Location" +msgstr "Ubicación" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__inventory_location +msgid "Location Name" +msgstr "Nombre de ubicación" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__log_info +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__log_info +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_line_view_search +msgid "Log Info" +msgstr "Información de registro" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__inventory_lot_id +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_line_view_search +msgid "Lot" +msgstr "Lote" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__inventory_lot +msgid "Lot Name" +msgstr "Nombre de lote" + +#. module: stock_inventory_import_wizard +#. odoo-python +#: code:addons/stock_inventory_import_wizard/models/stock_inventory_import.py:0 +#, python-format +msgid "Lot required for product %(product_name)s." +msgstr "Lote requerido para producto %(product_name)s." + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__message_main_attachment_id +msgid "Main Attachment" +msgstr "Adjunto principal" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__message_has_error +msgid "Message Delivery error" +msgstr "Error en la entrega del mensaje" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__message_ids +msgid "Messages" +msgstr "Mensajes" + +#. module: stock_inventory_import_wizard +#. odoo-python +#: code:addons/stock_inventory_import_wizard/models/stock_inventory_import.py:0 +#, python-format +msgid "More than one location with name %(location_name)s found." +msgstr "Más de una ubicación encontrada con nombre %(location_name)s." + +#. module: stock_inventory_import_wizard +#. odoo-python +#: code:addons/stock_inventory_import_wizard/models/stock_inventory_import.py:0 +#, python-format +msgid "" +"More than one lot with name %(lot_name)s and product %(product_name)s found." +msgstr "Más de un lote encontrado con nombre %(lot_name)s y producto %(product_name)s." + +#. module: stock_inventory_import_wizard +#. odoo-python +#: code:addons/stock_inventory_import_wizard/models/stock_inventory_import.py:0 +#, python-format +msgid "More than one owner with name %(owner_name)s found." +msgstr "Más de un propietario encontrado con nombre %(owner_name)s." + +#. module: stock_inventory_import_wizard +#. odoo-python +#: code:addons/stock_inventory_import_wizard/models/stock_inventory_import.py:0 +#, python-format +msgid "More than one package with name %(package_name)s found." +msgstr "Más de un paquete encontrado con nombre %(package_name)s." + +#. module: stock_inventory_import_wizard +#. odoo-python +#: code:addons/stock_inventory_import_wizard/models/stock_inventory_import.py:0 +#, python-format +msgid "More than one product %(product_name)s found." +msgstr "Más de un producto encontrado con nombre %(product_name)s." + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__my_activity_date_deadline +msgid "My Activity Deadline" +msgstr "Mi plazo de actividad" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__name +msgid "Name" +msgstr "Nombre" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__activity_calendar_event_id +msgid "Next Activity Calendar Event" +msgstr "Próximo evento del calendario de actividades" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "Plazo de la próxima actividad" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__activity_summary +msgid "Next Activity Summary" +msgstr "Resumen de la siguiente actividad" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__activity_type_id +msgid "Next Activity Type" +msgstr "Siguiente tipo de actividad" + +#. module: stock_inventory_import_wizard +#. odoo-python +#: code:addons/stock_inventory_import_wizard/models/stock_inventory_import.py:0 +#, python-format +msgid "No location found." +msgstr "No se ha encontrado ninguna ubicación." + +#. module: stock_inventory_import_wizard +#. odoo-python +#: code:addons/stock_inventory_import_wizard/models/stock_inventory_import.py:0 +#, python-format +msgid "No lot with name %(lot_name)s found for product %(product_name)s." +msgstr "" +"No se ha encontrado ningun lote %(lot_name)s para el producto " +"%(product_name)s." + +#. module: stock_inventory_import_wizard +#. odoo-python +#: code:addons/stock_inventory_import_wizard/models/stock_inventory_import.py:0 +#, python-format +msgid "No owner found." +msgstr "Propietario no encontrado." + +#. module: stock_inventory_import_wizard +#. odoo-python +#: code:addons/stock_inventory_import_wizard/models/stock_inventory_import.py:0 +#, python-format +msgid "No package found." +msgstr "Paquete no encontrado." + +#. module: stock_inventory_import_wizard +#. odoo-python +#: code:addons/stock_inventory_import_wizard/models/stock_inventory_import.py:0 +#, python-format +msgid "No product %(product_name)s found." +msgstr "No se ha encontrado el producto %(product_name)s." + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__non_conformity_ids +msgid "Non Conformity" +msgstr "No conformidad" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__non_conformity_count +msgid "Non Conformity Count" +msgstr "Recuento de no conformidades" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__message_needaction_counter +msgid "Number of Actions" +msgstr "Número de acciones" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__message_has_error_counter +msgid "Number of errors" +msgstr "Número de errores" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,help:stock_inventory_import_wizard.field_stock_inventory_import__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "Número de mensajes que requieren una acción" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,help:stock_inventory_import_wizard.field_stock_inventory_import__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "Número de mensajes con error de entrega" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__inventory_owner_id +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_line_view_search +msgid "Owner" +msgstr "Propietario" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__inventory_owner +msgid "Owner Name" +msgstr "Nombre propietario" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__inventory_package_id +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_line_view_search +msgid "Package" +msgstr "Paquete" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__inventory_package +msgid "Package Name" +msgstr "Nombre paquete" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_search +msgid "Pending" +msgstr "Pendiente" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_line_view_form +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "Process" +msgstr "Procesar" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__inventory_product_id +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_line_view_search +msgid "Product" +msgstr "Producto" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__inventory_product_code +msgid "Product Code" +msgstr "Código de producto" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__inventory_product +msgid "Product Name" +msgstr "Nombre de producto" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__inventory_product_qty +msgid "Product Qty" +msgstr "Cantidad de producto" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__quant_id +msgid "Quant" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__activity_user_id +msgid "Responsible User" +msgstr "Usuario responsable" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__message_has_sms_error +msgid "SMS Delivery error" +msgstr "Error de entrega de SMS" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__split_size +msgid "Split Size" +msgstr "Tamaño de salto" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__state +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__state +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_line_view_search +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_search +msgid "Status" +msgstr "Estado" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,help:stock_inventory_import_wizard.field_stock_inventory_import__activity_state +msgid "" +"Status based on activities\n" +"Overdue: Due date is already passed\n" +"Today: Activity date is today\n" +"Planned: Future activities." +msgstr "" +"Estado basado en actividades\n" +"Atrasado: La fecha de vencimiento ya ha pasado\n" +"Hoy: La fecha de la actividad es hoy\n" +"Planificado: Actividades futuras." + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_line_view_search +msgid "To Create" +msgstr "Para crear" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,help:stock_inventory_import_wizard.field_stock_inventory_import__activity_exception_decoration +msgid "Type of the exception activity on record." +msgstr "Tipo de la actividad de excepción registrada." + +#. module: stock_inventory_import_wizard +#. odoo-python +#: code:addons/stock_inventory_import_wizard/models/stock_inventory_import.py:0 +#, python-format +msgid "Untraceable product, but has lot." +msgstr "Producto sin seguimiento, pero tiene lote." + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_line_view_form +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "Validate" +msgstr "Validar" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__website_message_ids +msgid "Website Messages" +msgstr "Mensajes del sitio web" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,help:stock_inventory_import_wizard.field_stock_inventory_import__website_message_ids +msgid "Website communication history" +msgstr "Historia de la comunicación en la web" + +#. module: stock_inventory_import_wizard +#: model:ir.model,name:stock_inventory_import_wizard.model_stock_inventory_import_line +msgid "Wizard lines to import inventory lines" +msgstr "Asistente de líneas para importar líneas de inventario" + +#. module: stock_inventory_import_wizard +#: model:ir.model,name:stock_inventory_import_wizard.model_stock_inventory_import +msgid "Wizard to import inventory" +msgstr "Asistente para importar el inventario" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "You must use this column names in order to fill the table:" +msgstr "Debe utilizar estos nombres de columna para rellenar la tabla:" diff --git a/stock_inventory_import_wizard/i18n/stock_inventory_import_wizard.pot b/stock_inventory_import_wizard/i18n/stock_inventory_import_wizard.pot new file mode 100644 index 0000000000..e934da00da --- /dev/null +++ b/stock_inventory_import_wizard/i18n/stock_inventory_import_wizard.pot @@ -0,0 +1,620 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_inventory_import_wizard +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-11-25 09:53+0000\n" +"PO-Revision-Date: 2024-11-25 09:53+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__inventory_line_count +msgid "# Inventory Lines" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "" +"Cantidad: this will fill Inventory Product Quantity" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "Codigo: this will fill Inventory Product Code" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "Descripcion: this will fill Inventory Product Name" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "Lote: this will fill Inventory Lot" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "Paquete: this will fill Inventory Package" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "Propietario: this will fill Inventory Owner" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "Ubicacion: this will fill Inventory Location" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__action +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_line_view_search +msgid "Action" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__message_needaction +msgid "Action Needed" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__activity_ids +msgid "Activities" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__activity_exception_decoration +msgid "Activity Exception Decoration" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__activity_state +msgid "Activity State" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__activity_type_icon +msgid "Activity Type Icon" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__message_attachment_count +msgid "Attachment Count" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__company_id +msgid "Company" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields.selection,name:stock_inventory_import_wizard.selection__stock_inventory_import_line__action__create +msgid "Create" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__lot_create +msgid "Create Lot" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__create_uid +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__create_uid +msgid "Created by" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__create_date +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__create_date +msgid "Created on" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__display_name +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__display_name +msgid "Display Name" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_line_view_search +msgid "Do Nothing" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_search +msgid "Done" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_search +msgid "Error" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "Error Log" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_line_view_search +msgid "Errored" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__data +msgid "File" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__filename +msgid "Filename" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__message_follower_ids +msgid "Followers" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__message_partner_ids +msgid "Followers (Partners)" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,help:stock_inventory_import_wizard.field_stock_inventory_import__activity_type_icon +msgid "Font awesome icon e.g. fa-tasks" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_line_view_search +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_search +msgid "Group By" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__has_message +msgid "Has Message" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "Help" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "Help with Excel column names" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__id +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__id +msgid "ID" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__activity_exception_icon +msgid "Icon" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,help:stock_inventory_import_wizard.field_stock_inventory_import__activity_exception_icon +msgid "Icon to indicate an exception activity." +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,help:stock_inventory_import_wizard.field_stock_inventory_import__message_needaction +msgid "If checked, new messages require your attention." +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,help:stock_inventory_import_wizard.field_stock_inventory_import__message_has_error +#: model:ir.model.fields,help:stock_inventory_import_wizard.field_stock_inventory_import__message_has_sms_error +msgid "If checked, some messages have a delivery error." +msgstr "" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "Import" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__file_date +msgid "Import Date" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.actions.act_window,name:stock_inventory_import_wizard.stock_inventory_import_action +#: model:ir.ui.menu,name:stock_inventory_import_wizard.inventory_import_menu +#: model:ir.ui.menu,name:stock_inventory_import_wizard.stock_inventory_import_menu +msgid "Import Inventory" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.actions.act_window,name:stock_inventory_import_wizard.stock_inventory_lot_import_line_action +msgid "Import Inventory Lines" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "Import Lines" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__import_id +msgid "Import Wizard" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "Imported Lines" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "Inventory Lines" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__message_is_follower +msgid "Is Follower" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import____last_update +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line____last_update +msgid "Last Modified on" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__write_uid +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__write_date +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__write_date +msgid "Last Updated on" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,help:stock_inventory_import_wizard.field_stock_inventory_import_line__company_id +msgid "Let this field empty if this location is shared between companies" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__import_line_ids +msgid "Lines to Import" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__inventory_location_id +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_line_view_search +msgid "Location" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__inventory_location +msgid "Location Name" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__log_info +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__log_info +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_line_view_search +msgid "Log Info" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__inventory_lot_id +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_line_view_search +msgid "Lot" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__inventory_lot +msgid "Lot Name" +msgstr "" + +#. module: stock_inventory_import_wizard +#. odoo-python +#: code:addons/stock_inventory_import_wizard/models/stock_inventory_import.py:0 +#, python-format +msgid "Lot required for product %(product_name)s." +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__message_main_attachment_id +msgid "Main Attachment" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__message_has_error +msgid "Message Delivery error" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__message_ids +msgid "Messages" +msgstr "" + +#. module: stock_inventory_import_wizard +#. odoo-python +#: code:addons/stock_inventory_import_wizard/models/stock_inventory_import.py:0 +#, python-format +msgid "More than one location with name %(location_name)s found." +msgstr "" + +#. module: stock_inventory_import_wizard +#. odoo-python +#: code:addons/stock_inventory_import_wizard/models/stock_inventory_import.py:0 +#, python-format +msgid "" +"More than one lot with name %(lot_name)s and product %(product_name)s found." +msgstr "" + +#. module: stock_inventory_import_wizard +#. odoo-python +#: code:addons/stock_inventory_import_wizard/models/stock_inventory_import.py:0 +#, python-format +msgid "More than one owner with name %(owner_name)s found." +msgstr "" + +#. module: stock_inventory_import_wizard +#. odoo-python +#: code:addons/stock_inventory_import_wizard/models/stock_inventory_import.py:0 +#, python-format +msgid "More than one package with name %(package_name)s found." +msgstr "" + +#. module: stock_inventory_import_wizard +#. odoo-python +#: code:addons/stock_inventory_import_wizard/models/stock_inventory_import.py:0 +#, python-format +msgid "More than one product %(product_name)s found." +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__my_activity_date_deadline +msgid "My Activity Deadline" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__name +msgid "Name" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__activity_calendar_event_id +msgid "Next Activity Calendar Event" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__activity_summary +msgid "Next Activity Summary" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__activity_type_id +msgid "Next Activity Type" +msgstr "" + +#. module: stock_inventory_import_wizard +#. odoo-python +#: code:addons/stock_inventory_import_wizard/models/stock_inventory_import.py:0 +#, python-format +msgid "No location found." +msgstr "" + +#. module: stock_inventory_import_wizard +#. odoo-python +#: code:addons/stock_inventory_import_wizard/models/stock_inventory_import.py:0 +#, python-format +msgid "No lot with name %(lot_name)s found for product %(product_name)s." +msgstr "" + +#. module: stock_inventory_import_wizard +#. odoo-python +#: code:addons/stock_inventory_import_wizard/models/stock_inventory_import.py:0 +#, python-format +msgid "No owner found." +msgstr "" + +#. module: stock_inventory_import_wizard +#. odoo-python +#: code:addons/stock_inventory_import_wizard/models/stock_inventory_import.py:0 +#, python-format +msgid "No package found." +msgstr "" + +#. module: stock_inventory_import_wizard +#. odoo-python +#: code:addons/stock_inventory_import_wizard/models/stock_inventory_import.py:0 +#, python-format +msgid "No product %(product_name)s found." +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__non_conformity_ids +msgid "Non Conformity" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__non_conformity_count +msgid "Non Conformity Count" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__message_needaction_counter +msgid "Number of Actions" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__message_has_error_counter +msgid "Number of errors" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,help:stock_inventory_import_wizard.field_stock_inventory_import__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,help:stock_inventory_import_wizard.field_stock_inventory_import__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__inventory_owner_id +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_line_view_search +msgid "Owner" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__inventory_owner +msgid "Owner Name" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__inventory_package_id +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_line_view_search +msgid "Package" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__inventory_package +msgid "Package Name" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_search +msgid "Pending" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_line_view_form +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "Process" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__inventory_product_id +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_line_view_search +msgid "Product" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__inventory_product_code +msgid "Product Code" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__inventory_product +msgid "Product Name" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__inventory_product_qty +msgid "Product Qty" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__quant_id +msgid "Quant" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__activity_user_id +msgid "Responsible User" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__message_has_sms_error +msgid "SMS Delivery error" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__split_size +msgid "Split Size" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__state +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import_line__state +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_line_view_search +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_search +msgid "Status" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,help:stock_inventory_import_wizard.field_stock_inventory_import__activity_state +msgid "" +"Status based on activities\n" +"Overdue: Due date is already passed\n" +"Today: Activity date is today\n" +"Planned: Future activities." +msgstr "" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_line_view_search +msgid "To Create" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,help:stock_inventory_import_wizard.field_stock_inventory_import__activity_exception_decoration +msgid "Type of the exception activity on record." +msgstr "" + +#. module: stock_inventory_import_wizard +#. odoo-python +#: code:addons/stock_inventory_import_wizard/models/stock_inventory_import.py:0 +#, python-format +msgid "Untraceable product, but has lot." +msgstr "" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_line_view_form +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "Validate" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,field_description:stock_inventory_import_wizard.field_stock_inventory_import__website_message_ids +msgid "Website Messages" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model.fields,help:stock_inventory_import_wizard.field_stock_inventory_import__website_message_ids +msgid "Website communication history" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model,name:stock_inventory_import_wizard.model_stock_inventory_import_line +msgid "Wizard lines to import inventory lines" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model:ir.model,name:stock_inventory_import_wizard.model_stock_inventory_import +msgid "Wizard to import inventory" +msgstr "" + +#. module: stock_inventory_import_wizard +#: model_terms:ir.ui.view,arch_db:stock_inventory_import_wizard.stock_inventory_import_view_form +msgid "You must use this column names in order to fill the table:" +msgstr "" diff --git a/stock_inventory_import_wizard/models/__init__.py b/stock_inventory_import_wizard/models/__init__.py new file mode 100644 index 0000000000..30efd58d66 --- /dev/null +++ b/stock_inventory_import_wizard/models/__init__.py @@ -0,0 +1 @@ +from . import stock_inventory_import diff --git a/stock_inventory_import_wizard/models/stock_inventory_import.py b/stock_inventory_import_wizard/models/stock_inventory_import.py new file mode 100644 index 0000000000..58111db19a --- /dev/null +++ b/stock_inventory_import_wizard/models/stock_inventory_import.py @@ -0,0 +1,382 @@ +# Copyright 2022 Berezi Amubieta - AvanzOSC +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from odoo import _, fields, models +from odoo.models import expression + +from odoo.addons.base_import_wizard.models.base_import import check_number, convert2str + + +class StockInventoryImport(models.Model): + _name = "stock.inventory.import" + _inherit = "base.import" + _description = "Wizard to import inventory" + + import_line_ids = fields.One2many( + comodel_name="stock.inventory.import.line", + ) + inventory_line_count = fields.Integer( + string="# Inventory Lines", + compute="_compute_inventory_line_count", + ) + lot_create = fields.Boolean( + string="Create Lot", + default=False, + ) + + def _get_line_values(self, row_values, datemode=False): + self.ensure_one() + values = super()._get_line_values(row_values, datemode=datemode) + if row_values: + inventory_product = row_values.get("Descripcion", "") + inventory_product_code = row_values.get("Codigo", "") + inventory_location = row_values.get("Ubicacion", "") + inventory_lot = row_values.get("Lote", "") + inventory_owner = row_values.get("Propietario", "") + inventory_package = row_values.get("Paquete", "") + inventory_product_qty = row_values.get("Cantidad", 0.0) + log_info = "" + if not inventory_product and not inventory_location: + return {} + values.update( + { + "inventory_product": convert2str(inventory_product), + "inventory_product_code": convert2str(inventory_product_code), + "inventory_location": convert2str(inventory_location), + "inventory_lot": convert2str(inventory_lot), + "inventory_owner": convert2str(inventory_owner), + "inventory_package": convert2str(inventory_package), + "inventory_product_qty": check_number(inventory_product_qty), + "log_info": log_info, + } + ) + return values + + def _compute_inventory_line_count(self): + for record in self: + record.inventory_line_count = len(record.mapped("import_line_ids.quant_id")) + + def button_open_inventory(self): + self.ensure_one() + quants = self.mapped("import_line_ids.quant_id") + action = self.env["stock.quant"].action_view_inventory() + action["domain"] = [("id", "in", quants.ids)] + return action + + +class StockInventoryImportLine(models.Model): + _name = "stock.inventory.import.line" + _inherit = "base.import.line" + _description = "Wizard lines to import inventory lines" + + company_id = fields.Many2one( + string="Company", + comodel_name="res.company", + related="inventory_location_id.company_id", + store=True, + ) + import_id = fields.Many2one( + comodel_name="stock.inventory.import", + ) + action = fields.Selection( + selection_add=[ + ("create", "Create"), + ], + ondelete={"create": "set default"}, + ) + quant_id = fields.Many2one( + string="Quant", + comodel_name="stock.quant", + ) + inventory_product = fields.Char( + string="Product Name", + states={"done": [("readonly", True)]}, + copy=False, + ) + inventory_product_code = fields.Char( + string="Product Code", + states={"done": [("readonly", True)]}, + copy=False, + ) + inventory_location = fields.Char( + string="Location Name", + states={"done": [("readonly", True)]}, + copy=False, + required=True, + ) + inventory_lot = fields.Char( + string="Lot Name", + states={"done": [("readonly", True)]}, + copy=False, + ) + inventory_owner = fields.Char( + string="Owner Name", + states={"done": [("readonly", True)]}, + copy=False, + ) + inventory_package = fields.Char( + string="Package Name", + states={"done": [("readonly", True)]}, + copy=False, + ) + inventory_product_qty = fields.Float( + string="Product Qty", + states={"done": [("readonly", True)]}, + copy=False, + ) + inventory_product_id = fields.Many2one( + string="Product", + comodel_name="product.product", + domain=[("type", "=", "product")], + states={"done": [("readonly", True)]}, + ) + inventory_location_id = fields.Many2one( + string="Location", + comodel_name="stock.location", + states={"done": [("readonly", True)]}, + copy=False, + ) + inventory_lot_id = fields.Many2one( + comodel_name="stock.lot", + string="Lot", + states={"done": [("readonly", True)]}, + copy=False, + ) + inventory_owner_id = fields.Many2one( + comodel_name="res.partner", + string="Owner", + states={"done": [("readonly", True)]}, + copy=False, + ) + inventory_package_id = fields.Many2one( + comodel_name="stock.quant.package", + string="Package", + states={"done": [("readonly", True)]}, + copy=False, + ) + + def _action_validate(self): + self.ensure_one() + update_values = super()._action_validate() + log_infos = [] + product = lot = owner = package = False + location, log_info_location = self._check_location() + if log_info_location: + log_infos.append(log_info_location) + if location: + company = location.company_id + product, log_info_product = self._check_product(company) + if log_info_product: + log_infos.append(log_info_product) + if product: + lot, log_info_lot = self._check_lot(product=product, company=company) + if log_info_lot: + log_infos.append(log_info_lot) + if self.inventory_owner: + owner, log_info_owner = self._check_owner(company) + if log_info_owner: + log_infos.append(log_info_owner) + if self.inventory_package: + package, log_info_package = self._check_package(company) + if log_info_package: + log_infos.append(log_info_package) + state = "error" if log_infos else "pass" + action = "create" if state != "error" else "nothing" + update_values.update( + { + "inventory_product_id": product and product.id, + "inventory_location_id": location and location.id, + "inventory_lot_id": lot and lot.id, + "inventory_owner_id": owner and owner.id, + "inventory_package_id": package and package.id, + "log_info": "\n".join(log_infos), + "state": state, + "action": action, + } + ) + return update_values + + def _action_process(self): + self.ensure_one() + update_values = super()._action_process() + if ( + self.import_id.lot_create + and self.inventory_lot + and not self.inventory_lot_id + and self.inventory_product_id.tracking in ("serial", "lot") + ): + lot, log_info = self._check_lot(self.inventory_product_id) + if not lot: + lot = self.env["stock.lot"].create( + { + "product_id": self.inventory_product_id.id, + "name": self.inventory_lot, + "company_id": self.company_id.id, + } + ) + self.inventory_lot_id = lot + quant_obj = self.env["stock.quant"].with_company(self.company_id) + domain = [ + ("product_id", "=", self.inventory_product_id.id), + ("lot_id", "=", self.inventory_lot_id.id), + ("location_id", "=", self.inventory_location_id.id), + ("owner_id", "=", self.inventory_owner_id.id), + ("package_id", "=", self.inventory_package_id.id), + ] + quant = quant_obj.search(domain, limit=1) + if quant: + quant.write({"inventory_quantity": self.inventory_product_qty}) + quant.action_apply_inventory() + else: + quant = quant_obj.create( + { + "product_id": self.inventory_product_id.id, + "lot_id": self.inventory_lot_id.id, + "location_id": self.inventory_location_id.id, + "owner_id": self.inventory_owner_id.id, + "package_id": self.inventory_package_id.id, + "inventory_quantity": self.inventory_product_qty, + } + ) + quant.action_apply_inventory() + update_values.update( + { + "quant_id": quant.id, + "state": "done", + } + ) + return update_values + + def _check_location(self): + self.ensure_one() + log_info = "" + if self.inventory_location_id: + return self.inventory_location_id, log_info + location_obj = self.env["stock.location"] + search_domain = [ + ("usage", "=", "internal"), + "|", + ("complete_name", "=", self.inventory_location), + ("name", "=", self.inventory_location), + ] + locations = location_obj.search(search_domain) + if not locations: + log_info = _("No location found.") + elif len(locations) > 1: + locations = False + log_info = _( + "More than one location with name %(location_name)s found." + ) % { + "location_name": self.inventory_location, + } + return locations and locations[:1], log_info + + def _check_product(self, company=False): + self.ensure_one() + log_info = "" + if self.inventory_product_id: + return self.inventory_product_id, log_info + product_obj = self.env["product.product"].with_company(company) + search_domain = [("type", "=", "product")] + if self.inventory_product_code: + search_domain = expression.AND( + [[("default_code", "=", self.inventory_product_code)], search_domain] + ) + else: + search_domain = expression.AND( + [[("name", "=", self.inventory_product)], search_domain] + ) + products = product_obj.search(search_domain) + if not products: + log_info = _("No product %(product_name)s found.") % { + "product_name": self.inventory_product_code or self.inventory_product, + } + elif len(products) > 1: + products = False + log_info = _("More than one product %(product_name)s found.") % { + "product_name": self.inventory_product_code or self.inventory_product, + } + return products and products[:1], log_info + + def _check_lot(self, product=False, company=False): + self.ensure_one() + log_info = "" + if product.tracking not in ("serial", "lot") and self.inventory_lot: + return False, _("Untraceable product, but has lot.") + if product.tracking not in ("serial", "lot") and not self.inventory_lot: + return False, log_info + if product.tracking in ("serial", "lot") and not self.inventory_lot: + return False, _("Lot required for product %(product_name)s.") % { + "product_name": product.display_name, + } + if self.inventory_lot_id: + return self.inventory_lot_id, log_info + lot_obj = self.env["stock.lot"].with_company(company) + search_domain = [ + ("name", "=", self.inventory_lot), + ("product_id", "=", product.id), + ] + lots = lot_obj.search(search_domain) + if not lots: + log_info = _( + "No lot with name %(lot_name)s found for product %(product_name)s." + ) % { + "lot_name": self.inventory_lot, + "product_name": product.display_name, + } + if self.import_id.lot_create and self.inventory_lot: + log_info = "" + elif len(lots) > 1: + lots = False + log_info = _( + "More than one lot with name %(lot_name)s and product %(product_name)s " + "found." + ) % { + "lot_name": self.inventory_lot, + "product_name": product.display_name, + } + return lots and lots[:1], log_info + + def _check_owner(self, company=False): + self.ensure_one() + log_info = "" + if self.inventory_owner_id: + return self.inventory_owner_id, log_info + owner_obj = self.env["res.partner"] + search_domain = [ + ("name", "=", self.inventory_owner), + "|", + ("company_id", "=", company.id), + ("company_id", "=", False), + ] + owners = owner_obj.search(search_domain) + if not owners: + log_info = _("No owner found.") + elif len(owners) > 1: + owners = False + log_info = _("More than one owner with name %(owner_name)s found.") % { + "owner_name": self.inventory_owner, + } + return owners and owners[:1], log_info + + def _check_package(self, company=False): + self.ensure_one() + log_info = "" + if self.inventory_package_id: + return self.inventory_package_id, log_info + package_obj = self.env["stock.quant.package"] + search_domain = [ + ("name", "=", self.inventory_package), + "|", + ("company_id", "=", company.id), + ("company_id", "=", False), + ] + packages = package_obj.search(search_domain) + if not packages: + log_info = _("No package found.") + elif len(packages) > 1: + packages = False + log_info = _("More than one package with name %(package_name)s found.") % { + "package_name": self.inventory_package, + } + return packages and packages[:1], log_info diff --git a/stock_inventory_import_wizard/security/inventory_import_wizard_security.xml b/stock_inventory_import_wizard/security/inventory_import_wizard_security.xml new file mode 100644 index 0000000000..045d52422d --- /dev/null +++ b/stock_inventory_import_wizard/security/inventory_import_wizard_security.xml @@ -0,0 +1,10 @@ + + + + Inventory import wizard company rule + + ['|', ('company_id', 'in', company_ids), ('company_id', '=', False)] + + diff --git a/stock_inventory_import_wizard/security/ir.model.access.csv b/stock_inventory_import_wizard/security/ir.model.access.csv new file mode 100644 index 0000000000..bc4f72fcf7 --- /dev/null +++ b/stock_inventory_import_wizard/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_stock_inventory_import,stock_inventory_import internal,model_stock_inventory_import,stock.group_stock_user,1,1,1,1 +access_stock_inventory_import_line,stock_inventory_import_line internal,model_stock_inventory_import_line,stock.group_stock_manager,1,1,1,1 diff --git a/stock_inventory_import_wizard/views/stock_inventory_import_line_views.xml b/stock_inventory_import_wizard/views/stock_inventory_import_line_views.xml new file mode 100644 index 0000000000..47f9b6399c --- /dev/null +++ b/stock_inventory_import_wizard/views/stock_inventory_import_line_views.xml @@ -0,0 +1,181 @@ + + + + stock.inventory.import.line + + + + + + + + + + + + + + + + + + + + + + + + + + + + + stock.inventory.import.line + +
+
+
+ + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + stock.inventory.import.line + + + + + + + + + + + + + + + + + + + + + + + + Import Inventory Lines + ir.actions.act_window + stock.inventory.import.line + tree,form + + +
diff --git a/stock_inventory_import_wizard/views/stock_inventory_import_views.xml b/stock_inventory_import_wizard/views/stock_inventory_import_views.xml new file mode 100644 index 0000000000..e099175013 --- /dev/null +++ b/stock_inventory_import_wizard/views/stock_inventory_import_views.xml @@ -0,0 +1,172 @@ + + + + stock.inventory.import + + + + + + + + + + + stock.inventory.import + +
+
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + +
+

Help with Excel column names

+

You must use this column names in order to fill the table:

+
    +
  • Descripcion: this will fill Inventory Product Name
  • +
  • Codigo: this will fill Inventory Product Code
  • +
  • Ubicacion: this will fill Inventory Location
  • +
  • Lote: this will fill Inventory Lot
  • +
  • Propietario: this will fill Inventory Owner
  • +
  • Paquete: this will fill Inventory Package
  • +
  • Cantidad: this will fill Inventory Product Quantity
  • +
+
+
+
+
+
+ + + +
+
+
+
+ + + stock.inventory.import + + + + + + + + + + + + + + + Import Inventory + ir.actions.act_window + stock.inventory.import + tree,form + + + + + + + +
diff --git a/stock_lot_last_move_locations/README.rst b/stock_lot_last_move_locations/README.rst new file mode 100644 index 0000000000..0cd9bfeaf2 --- /dev/null +++ b/stock_lot_last_move_locations/README.rst @@ -0,0 +1,29 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +============================= +Stock lot last move locations +============================= + +* In lots, new field "Last Move Locations", with the from and to locations of + the last "stock move line" performed for that lot. + +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 smash it by providing detailed and welcomed feedback. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Contributors +------------ + +* Ana Juaristi +* Alfredo de la Fuente diff --git a/stock_lot_last_move_locations/__init__.py b/stock_lot_last_move_locations/__init__.py new file mode 100644 index 0000000000..7d9b457e68 --- /dev/null +++ b/stock_lot_last_move_locations/__init__.py @@ -0,0 +1,18 @@ +from . import models +from odoo import api, SUPERUSER_ID + + +def _post_install_put_last_move_locations_in_lots(cr, registry): + """ + This method will set the production cost on already done manufacturing orders. + """ + env = api.Environment(cr, SUPERUSER_ID, {}) + lots = env["stock.lot"].search([]) + for lot in lots: + cond = [("qty_done", ">", 0), ("state", "=", "done"), ("lot_id", "=", lot.id)] + lines = env["stock.move.line"].search(cond) + if lines: + latest_line = lines.sorted(key=lambda line: line.write_date, reverse=True)[ + 0 + ] + latest_line._put_last_move_locations_in_lots() diff --git a/stock_lot_last_move_locations/__manifest__.py b/stock_lot_last_move_locations/__manifest__.py new file mode 100644 index 0000000000..f5e6ed23c5 --- /dev/null +++ b/stock_lot_last_move_locations/__manifest__.py @@ -0,0 +1,16 @@ +# Copyright 2024 Alfredo de la Fuente - AvanzOSC +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +{ + "name": "Stock Lot Last Move Locations", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "author": "Avanzosc", + "category": "Inventory/Inventory", + "website": "https://github.com/avanzosc/odoo-addons", + "depends": ["product", "stock"], + "data": [ + "views/stock_lot_views.xml", + ], + "installable": True, + "post_init_hook": "_post_install_put_last_move_locations_in_lots", +} diff --git a/stock_lot_last_move_locations/i18n/ca_ES.po b/stock_lot_last_move_locations/i18n/ca_ES.po new file mode 100644 index 0000000000..f28ae88aac --- /dev/null +++ b/stock_lot_last_move_locations/i18n/ca_ES.po @@ -0,0 +1,32 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_lot_last_move_locations +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-12-02 10:47+0000\n" +"PO-Revision-Date: 2024-12-02 10:47+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: stock_lot_last_move_locations +#: model:ir.model.fields,field_description:stock_lot_last_move_locations.field_stock_lot__last_move_locations +#: model_terms:ir.ui.view,arch_db:stock_lot_last_move_locations.search_product_lot_filter +msgid "Last Move Locations" +msgstr "" + +#. module: stock_lot_last_move_locations +#: model:ir.model,name:stock_lot_last_move_locations.model_stock_lot +msgid "Lot/Serial" +msgstr "Lot/núm. de sèrie" + +#. module: stock_lot_last_move_locations +#: model:ir.model,name:stock_lot_last_move_locations.model_stock_move_line +msgid "Product Moves (Stock Move Line)" +msgstr "Moviment del producte (línia de moviment d'estoc)" diff --git a/stock_lot_last_move_locations/i18n/en_GB.po b/stock_lot_last_move_locations/i18n/en_GB.po new file mode 100644 index 0000000000..8a2313ef33 --- /dev/null +++ b/stock_lot_last_move_locations/i18n/en_GB.po @@ -0,0 +1,32 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_lot_last_move_locations +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-12-02 10:47+0000\n" +"PO-Revision-Date: 2024-12-02 10:47+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: stock_lot_last_move_locations +#: model:ir.model.fields,field_description:stock_lot_last_move_locations.field_stock_lot__last_move_locations +#: model_terms:ir.ui.view,arch_db:stock_lot_last_move_locations.search_product_lot_filter +msgid "Last Move Locations" +msgstr "" + +#. module: stock_lot_last_move_locations +#: model:ir.model,name:stock_lot_last_move_locations.model_stock_lot +msgid "Lot/Serial" +msgstr "" + +#. module: stock_lot_last_move_locations +#: model:ir.model,name:stock_lot_last_move_locations.model_stock_move_line +msgid "Product Moves (Stock Move Line)" +msgstr "" diff --git a/stock_lot_last_move_locations/i18n/es.po b/stock_lot_last_move_locations/i18n/es.po new file mode 100644 index 0000000000..2b0b8f00a4 --- /dev/null +++ b/stock_lot_last_move_locations/i18n/es.po @@ -0,0 +1,32 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_lot_last_move_locations +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-12-02 10:48+0000\n" +"PO-Revision-Date: 2024-12-02 10:48+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: stock_lot_last_move_locations +#: model:ir.model.fields,field_description:stock_lot_last_move_locations.field_stock_lot__last_move_locations +#: model_terms:ir.ui.view,arch_db:stock_lot_last_move_locations.search_product_lot_filter +msgid "Last Move Locations" +msgstr "Ubic. Último Mvto." + +#. module: stock_lot_last_move_locations +#: model:ir.model,name:stock_lot_last_move_locations.model_stock_lot +msgid "Lot/Serial" +msgstr "Lote/Número de serie" + +#. module: stock_lot_last_move_locations +#: model:ir.model,name:stock_lot_last_move_locations.model_stock_move_line +msgid "Product Moves (Stock Move Line)" +msgstr "Movimientos de Producto (Stock Move Line)" diff --git a/stock_lot_last_move_locations/i18n/fr.po b/stock_lot_last_move_locations/i18n/fr.po new file mode 100644 index 0000000000..943d51336b --- /dev/null +++ b/stock_lot_last_move_locations/i18n/fr.po @@ -0,0 +1,32 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_lot_last_move_locations +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-12-02 10:48+0000\n" +"PO-Revision-Date: 2024-12-02 10:48+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: stock_lot_last_move_locations +#: model:ir.model.fields,field_description:stock_lot_last_move_locations.field_stock_lot__last_move_locations +#: model_terms:ir.ui.view,arch_db:stock_lot_last_move_locations.search_product_lot_filter +msgid "Last Move Locations" +msgstr "" + +#. module: stock_lot_last_move_locations +#: model:ir.model,name:stock_lot_last_move_locations.model_stock_lot +msgid "Lot/Serial" +msgstr "Lot/série" + +#. module: stock_lot_last_move_locations +#: model:ir.model,name:stock_lot_last_move_locations.model_stock_move_line +msgid "Product Moves (Stock Move Line)" +msgstr "Mouvements de stock" diff --git a/stock_lot_last_move_locations/i18n/stock_lot_last_move_locations.pot b/stock_lot_last_move_locations/i18n/stock_lot_last_move_locations.pot new file mode 100644 index 0000000000..8a2313ef33 --- /dev/null +++ b/stock_lot_last_move_locations/i18n/stock_lot_last_move_locations.pot @@ -0,0 +1,32 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_lot_last_move_locations +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-12-02 10:47+0000\n" +"PO-Revision-Date: 2024-12-02 10:47+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: stock_lot_last_move_locations +#: model:ir.model.fields,field_description:stock_lot_last_move_locations.field_stock_lot__last_move_locations +#: model_terms:ir.ui.view,arch_db:stock_lot_last_move_locations.search_product_lot_filter +msgid "Last Move Locations" +msgstr "" + +#. module: stock_lot_last_move_locations +#: model:ir.model,name:stock_lot_last_move_locations.model_stock_lot +msgid "Lot/Serial" +msgstr "" + +#. module: stock_lot_last_move_locations +#: model:ir.model,name:stock_lot_last_move_locations.model_stock_move_line +msgid "Product Moves (Stock Move Line)" +msgstr "" diff --git a/stock_lot_last_move_locations/models/__init__.py b/stock_lot_last_move_locations/models/__init__.py new file mode 100644 index 0000000000..2a9dc5d232 --- /dev/null +++ b/stock_lot_last_move_locations/models/__init__.py @@ -0,0 +1,2 @@ +from . import stock_lot +from . import stock_move_line diff --git a/stock_lot_last_move_locations/models/stock_lot.py b/stock_lot_last_move_locations/models/stock_lot.py new file mode 100644 index 0000000000..12b28a427c --- /dev/null +++ b/stock_lot_last_move_locations/models/stock_lot.py @@ -0,0 +1,9 @@ +# Copyright 2024 Alfredo de la Fuente - AvanzOSC +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from odoo import fields, models + + +class StockLot(models.Model): + _inherit = "stock.lot" + + last_move_locations = fields.Char(copy=False) diff --git a/stock_lot_last_move_locations/models/stock_move_line.py b/stock_lot_last_move_locations/models/stock_move_line.py new file mode 100644 index 0000000000..103737976c --- /dev/null +++ b/stock_lot_last_move_locations/models/stock_move_line.py @@ -0,0 +1,21 @@ +# Copyright 2024 Alfredo de la Fuente - AvanzOSC +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from odoo import models + + +class StockMoveLine(models.Model): + _inherit = "stock.move.line" + + def write(self, vals): + result = super().write(vals) + if "qty_done" in vals: + self._put_last_move_locations_in_lots() + return result + + def _put_last_move_locations_in_lots(self): + for line in self.filtered(lambda x: x.move_id.state == "done" and x.lot_id): + last_move_locations = ("%s - %s") % ( + line.location_id.name, + line.location_dest_id.name, + ) + line.lot_id.last_move_locations = last_move_locations diff --git a/stock_lot_last_move_locations/views/stock_lot_views.xml b/stock_lot_last_move_locations/views/stock_lot_views.xml new file mode 100644 index 0000000000..e6ba693df0 --- /dev/null +++ b/stock_lot_last_move_locations/views/stock_lot_views.xml @@ -0,0 +1,40 @@ + + + + stock.lot + + + + + + + + + + stock.lot + + + + + + + + + + stock.lot + + + + + + + + + + + diff --git a/stock_lot_origin_global_gap/__manifest__.py b/stock_lot_origin_global_gap/__manifest__.py index f4b2783c41..36d74b593f 100644 --- a/stock_lot_origin_global_gap/__manifest__.py +++ b/stock_lot_origin_global_gap/__manifest__.py @@ -5,9 +5,12 @@ "version": "16.0.1.2.0", "category": "Inventory/Inventory", "license": "AGPL-3", - "author": "https://github.com/avanzosc/odoo-addons", + "author": "AvanzOSC", "website": "https://github.com/avanzosc/odoo-addons", - "depends": ["stock", "mrp"], + "depends": [ + "stock", + "mrp", + ], "data": [ "views/product_template_views.xml", "views/stock_move_line_views.xml", diff --git a/stock_lot_sequence/models/stock_lot.py b/stock_lot_sequence/models/stock_lot.py index 0eac85ae9a..a142b08c58 100644 --- a/stock_lot_sequence/models/stock_lot.py +++ b/stock_lot_sequence/models/stock_lot.py @@ -12,6 +12,7 @@ def create(self, vals_list): lot = super().create(vals_list) if len(lot.name) == 5 and "9999" in lot.name: self.update_lot_sequence() + return lot else: lots = self.env["stock.lot"] for vals in vals_list: diff --git a/stock_move_line_divide/models/stock_move_line.py b/stock_move_line_divide/models/stock_move_line.py index 6c96513e95..a58f6eb590 100644 --- a/stock_move_line_divide/models/stock_move_line.py +++ b/stock_move_line_divide/models/stock_move_line.py @@ -21,9 +21,9 @@ def action_divide(self): "qty_done": qty_assign, } ) - package_type = self.package_type_id.id + package_type = self.packaging_id.id self.picking_id._put_in_pack(self, create_package_level=True) - self.package_type_id = package_type + self.packaging_id = package_type vals = { "product_id": self.product_id.id, "location_id": self.location_id.id, @@ -31,7 +31,7 @@ def action_divide(self): "lot_id": self.lot_id.id, "reserved_uom_qty": qty_assign, "product_uom_id": self.product_uom_id.id, - "package_type_id": self.package_type_id.id, + "package_id": self.package_id.id, } for _record in range(1, self.divide): line = self.env["stock.move.line"].create(vals) diff --git a/stock_move_line_package_dimension/README.rst b/stock_move_line_package_dimension/README.rst new file mode 100644 index 0000000000..15897561fc --- /dev/null +++ b/stock_move_line_package_dimension/README.rst @@ -0,0 +1,29 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +================================= +Stock Move Line Package Dimension +================================= + +Volume, height, width, length fields in stock move line. + +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 smash it by providing detailed and welcomed feedback. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Contributors +------------ + +* Berezi Amubieta +* Alfredo de la Fuente +* Ana Juaristi diff --git a/stock_move_line_package_dimension/__init__.py b/stock_move_line_package_dimension/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/stock_move_line_package_dimension/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/stock_move_line_package_dimension/__manifest__.py b/stock_move_line_package_dimension/__manifest__.py new file mode 100644 index 0000000000..a0f48ca0d3 --- /dev/null +++ b/stock_move_line_package_dimension/__manifest__.py @@ -0,0 +1,13 @@ +# Copyright 2021 Berezi - AvanzOSC +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +{ + "name": "Stock Move Line Package Dimension", + "version": "16.0.2.0.0", + "author": "AvanzOSC", + "website": "https://github.com/avanzosc/odoo-addons", + "category": "Inventory", + "depends": ["stock_picking_package_usability"], + "data": ["views/stock_move_line_views.xml", "views/product_packaging_views.xml"], + "license": "AGPL-3", + "installable": True, +} diff --git a/stock_move_line_package_dimension/i18n/es.po b/stock_move_line_package_dimension/i18n/es.po new file mode 100644 index 0000000000..173f0474a3 --- /dev/null +++ b/stock_move_line_package_dimension/i18n/es.po @@ -0,0 +1,66 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_move_line_package_dimension +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-01-11 10:24+0000\n" +"PO-Revision-Date: 2022-01-11 10:24+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: stock_move_line_package_dimension +#: model:ir.model.fields,field_description:stock_move_line_package_dimension.field_stock_move_line__display_name +msgid "Display Name" +msgstr "Nombre mostrado" + +#. module: stock_move_line_package_dimension +#: model:ir.model.fields,field_description:stock_move_line_package_dimension.field_stock_move_line__height +msgid "Height" +msgstr "Alto" + +#. module: stock_move_line_package_dimension +#: model:ir.model.fields,field_description:stock_move_line_package_dimension.field_stock_move_line__id +msgid "ID" +msgstr "" + +#. module: stock_move_line_package_dimension +#: model:ir.model.fields,field_description:stock_move_line_package_dimension.field_stock_move_line____last_update +msgid "Last Modified on" +msgstr "Última modificación el" + +#. module: stock_move_line_package_dimension +#: model:ir.model.fields,field_description:stock_move_line_package_dimension.field_stock_move_line__packaging_id +msgid "Package Type" +msgstr "Tipo de Paquete" + +#. module: stock_move_line_package_dimension +#: model:ir.model.fields,field_description:stock_move_line_package_dimension.field_stock_move_line__packaging_length +msgid "Packaging Length" +msgstr "Largo" + +#. module: stock_move_line_package_dimension +#: model:ir.model,name:stock_move_line_package_dimension.model_stock_move_line +msgid "Product Moves (Stock Move Line)" +msgstr "Movimientos de Producto (Stock Move Line)" + +#. module: stock_move_line_package_dimension +#: model:ir.model.fields,help:stock_move_line_package_dimension.field_stock_move_line__volume +msgid "The Packaging volume" +msgstr "Volumen del paquete" + +#. module: stock_move_line_package_dimension +#: model:ir.model.fields,field_description:stock_move_line_package_dimension.field_stock_move_line__volume +msgid "Volume" +msgstr "Volumen" + +#. module: stock_move_line_package_dimension +#: model:ir.model.fields,field_description:stock_move_line_package_dimension.field_stock_move_line__width +msgid "Width" +msgstr "Ancho" diff --git a/stock_move_line_package_dimension/i18n/stock_move_line_package_dimension.pot b/stock_move_line_package_dimension/i18n/stock_move_line_package_dimension.pot new file mode 100644 index 0000000000..5494121b9f --- /dev/null +++ b/stock_move_line_package_dimension/i18n/stock_move_line_package_dimension.pot @@ -0,0 +1,66 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_move_line_package_dimension +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-01-11 10:24+0000\n" +"PO-Revision-Date: 2022-01-11 10:24+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: stock_move_line_package_dimension +#: model:ir.model.fields,field_description:stock_move_line_package_dimension.field_stock_move_line__display_name +msgid "Display Name" +msgstr "" + +#. module: stock_move_line_package_dimension +#: model:ir.model.fields,field_description:stock_move_line_package_dimension.field_stock_move_line__height +msgid "Height" +msgstr "" + +#. module: stock_move_line_package_dimension +#: model:ir.model.fields,field_description:stock_move_line_package_dimension.field_stock_move_line__id +msgid "ID" +msgstr "" + +#. module: stock_move_line_package_dimension +#: model:ir.model.fields,field_description:stock_move_line_package_dimension.field_stock_move_line____last_update +msgid "Last Modified on" +msgstr "" + +#. module: stock_move_line_package_dimension +#: model:ir.model.fields,field_description:stock_move_line_package_dimension.field_stock_move_line__packaging_id +msgid "Package Type" +msgstr "" + +#. module: stock_move_line_package_dimension +#: model:ir.model.fields,field_description:stock_move_line_package_dimension.field_stock_move_line__packaging_length +msgid "Packaging Length" +msgstr "" + +#. module: stock_move_line_package_dimension +#: model:ir.model,name:stock_move_line_package_dimension.model_stock_move_line +msgid "Product Moves (Stock Move Line)" +msgstr "" + +#. module: stock_move_line_package_dimension +#: model:ir.model.fields,help:stock_move_line_package_dimension.field_stock_move_line__volume +msgid "The Packaging volume" +msgstr "" + +#. module: stock_move_line_package_dimension +#: model:ir.model.fields,field_description:stock_move_line_package_dimension.field_stock_move_line__volume +msgid "Volume" +msgstr "" + +#. module: stock_move_line_package_dimension +#: model:ir.model.fields,field_description:stock_move_line_package_dimension.field_stock_move_line__width +msgid "Width" +msgstr "" diff --git a/stock_move_line_package_dimension/models/__init__.py b/stock_move_line_package_dimension/models/__init__.py new file mode 100644 index 0000000000..431f51c274 --- /dev/null +++ b/stock_move_line_package_dimension/models/__init__.py @@ -0,0 +1 @@ +from . import stock_move_line diff --git a/stock_move_line_package_dimension/models/stock_move_line.py b/stock_move_line_package_dimension/models/stock_move_line.py new file mode 100644 index 0000000000..2fad2a195c --- /dev/null +++ b/stock_move_line_package_dimension/models/stock_move_line.py @@ -0,0 +1,14 @@ +# Copyright 2021 Berezi - AvanzOSC +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from odoo import fields, models + + +class StockMoveLine(models.Model): + _inherit = "stock.move.line" + + height = fields.Float(string="Height", related="packaging_id.height", store=True) + width = fields.Float(string="Width", related="packaging_id.width", store=True) + packaging_length = fields.Float( + string="Packaging Length", related="packaging_id.packaging_length", store=True + ) + volume = fields.Float(string="Volume", related="packaging_id.volume", store=True) diff --git a/stock_move_line_package_dimension/views/product_packaging_views.xml b/stock_move_line_package_dimension/views/product_packaging_views.xml new file mode 100644 index 0000000000..e345d413f8 --- /dev/null +++ b/stock_move_line_package_dimension/views/product_packaging_views.xml @@ -0,0 +1,15 @@ + + + + + product.packaging + + + + + + + + + + diff --git a/stock_move_line_package_dimension/views/stock_move_line_views.xml b/stock_move_line_package_dimension/views/stock_move_line_views.xml new file mode 100644 index 0000000000..6050787131 --- /dev/null +++ b/stock_move_line_package_dimension/views/stock_move_line_views.xml @@ -0,0 +1,18 @@ + + + + + stock.move.line + + + + + + + + + + + + + diff --git a/stock_move_line_product_lot_reader/README.rst b/stock_move_line_product_lot_reader/README.rst index d399ac6cde..a3dd9289d4 100644 --- a/stock_move_line_product_lot_reader/README.rst +++ b/stock_move_line_product_lot_reader/README.rst @@ -8,6 +8,9 @@ Stock move line product lot reader * In detailed operations of pickings new field "Reader", to read with a reader the "product", or "product lot", separated by a space. +* The product will be searched for by the "Internal Reference" field. If the + product is not found, and it is an incoming delivery note, it will be + searched in supplierinfo by the Vendor Product Code field. Bug Tracker =========== diff --git a/stock_move_line_product_lot_reader/__manifest__.py b/stock_move_line_product_lot_reader/__manifest__.py index 17020154cd..8f1d990ad5 100644 --- a/stock_move_line_product_lot_reader/__manifest__.py +++ b/stock_move_line_product_lot_reader/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). { "name": "Stock Move Line Product Lot Reader", - "version": "16.0.1.0.0", + "version": "16.0.1.1.0", "author": "Avanzosc", "website": "https://github.com/avanzosc/odoo-addons", "category": "Inventory", diff --git a/stock_move_line_product_lot_reader/models/stock_move_line.py b/stock_move_line_product_lot_reader/models/stock_move_line.py index 5bbc138b22..6e1f81ce53 100644 --- a/stock_move_line_product_lot_reader/models/stock_move_line.py +++ b/stock_move_line_product_lot_reader/models/stock_move_line.py @@ -12,12 +12,15 @@ class StockMoveLine(models.Model): @api.onchange("reader") def onchange_reader(self): if self.reader: + default_code = "" pos = self.reader.find(" ") cond = [("default_code", "=", self.reader)] if pos > 0: default_code = self.reader[0:pos] cond = [("default_code", "=", default_code)] product = self.env["product.product"].search(cond, limit=1) + if not product and self.picking_id.picking_type_id.code == "incoming": + product = self._catch_supplierinfo_from_reader(pos, default_code) if not product: message = _("Product not found, reader information: %(reader)s") % { "reader": self.reader, @@ -28,13 +31,24 @@ def onchange_reader(self): name = self.reader[pos + 1 : len(self.reader)] cond = [("name", "=", name), ("product_id", "=", product.id)] lot = self.env["stock.lot"].search(cond, limit=1) - if not lot: - message = _( - "Lot: %(lot)s, for product: %(product)s not found. " - "Reader information: %(reader)s" - ) % {"lot": name, "product": product.name, "reader": self.reader} - raise ValidationError(message) - self.lot_id = lot.id + if not lot and self.picking_id: + if ( + self.picking_id.picking_type_id.use_existing_lots + and not self.picking_id.picking_type_id.use_create_lots + ): + message = _( + "Lot: %(lot)s, for product: %(product)s not found. " + "Reader information: %(reader)s" + ) % { + "lot": name, + "product": product.name, + "reader": self.reader, + } + raise ValidationError(message) + if self.picking_id.picking_type_id.use_create_lots: + self.lot_name = name + if lot: + self.lot_id = lot.id if "from_stock_picking" in self.env.context and self.env.context.get( "from_stock_picking", False ): @@ -50,6 +64,25 @@ def onchange_reader(self): raise ValidationError(message) self.move_id = stock_move.id + def _catch_supplierinfo_from_reader(self, pos, default_code): + product = self.env["product.product"] + cond = [("partner_id", "=", self.picking_id.partner_id.id)] + if pos > 0: + cond.append(("product_code", "=", default_code)) + else: + cond.append(("product_code", "=", self.reader)) + supplierinfo = self.env["product.supplierinfo"].search(cond) + if supplierinfo: + if supplierinfo.product_id: + product = supplierinfo.product_id + else: + if ( + supplierinfo.product_tmpl_id + and supplierinfo.product_tmpl_id.product_variant_ids + ): + product = supplierinfo.product_tmpl_id.product_variant_ids[0] + return product + @api.model_create_multi def create(self, vals_list): for values in vals_list: diff --git a/stock_orderpoint_usability/README.rst b/stock_orderpoint_usability/README.rst index c1f5c2c02e..a411423889 100644 --- a/stock_orderpoint_usability/README.rst +++ b/stock_orderpoint_usability/README.rst @@ -2,11 +2,12 @@ :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 -========================= -Stock ordepoint usability -========================= +================================= +Stock - Reordering Rule Usability +================================= * In "Procurement Order" tree editable view, show name. +* This module adds a wizard to generate stock warehouse orderpoints from different ways. Bug Tracker =========== diff --git a/stock_orderpoint_usability/__init__.py b/stock_orderpoint_usability/__init__.py index 0650744f6b..aee8895e7a 100644 --- a/stock_orderpoint_usability/__init__.py +++ b/stock_orderpoint_usability/__init__.py @@ -1 +1,2 @@ from . import models +from . import wizards diff --git a/stock_orderpoint_usability/__manifest__.py b/stock_orderpoint_usability/__manifest__.py index 992eb5dcf8..0b1cf3a149 100644 --- a/stock_orderpoint_usability/__manifest__.py +++ b/stock_orderpoint_usability/__manifest__.py @@ -1,7 +1,7 @@ # Copyright 2022 Alfredo de la Fuente - AvanzOSC # License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html { - "name": "Stock Orderpoint Usability", + "name": "Stock - Reordering Rule Usability", "version": "16.0.1.0.0", "license": "AGPL-3", "depends": [ @@ -11,7 +11,9 @@ "website": "https://github.com/avanzosc/odoo-addons", "category": "Hidden", "data": [ + "security/ir.model.access.csv", "views/stock_orderpoint_view.xml", + "wizards/stock_orderpoint_generator_view.xml", ], "installable": True, } diff --git a/stock_orderpoint_usability/i18n/es.po b/stock_orderpoint_usability/i18n/es.po index ad3cb204b4..79d7b84410 100644 --- a/stock_orderpoint_usability/i18n/es.po +++ b/stock_orderpoint_usability/i18n/es.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-12 15:12+0000\n" -"PO-Revision-Date: 2023-12-12 15:12+0000\n" +"POT-Creation-Date: 2024-10-07 08:59+0000\n" +"PO-Revision-Date: 2024-10-07 08:59+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -15,6 +15,82 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" +#. module: stock_orderpoint_usability +#: model_terms:ir.ui.view,arch_db:stock_orderpoint_usability.stock_orderpoint_generator_view_form +msgid "Cancel" +msgstr "Cancelar" + +#. module: stock_orderpoint_usability +#: model:ir.model.fields,help:stock_orderpoint_usability.field_stock_orderpoint_generator__update +msgid "Check this if you want just update existing orderpoint rules." +msgstr "" + +#. module: stock_orderpoint_usability +#: model:ir.actions.act_window,name:stock_orderpoint_usability.action_rule_generation_form +msgid "Create Orderpoint Rules" +msgstr "Crear reglas de abastecimiento" + +#. module: stock_orderpoint_usability +#: model:ir.model.fields,field_description:stock_orderpoint_usability.field_stock_orderpoint_generator__create_uid +msgid "Created by" +msgstr "" + +#. module: stock_orderpoint_usability +#: model:ir.model.fields,field_description:stock_orderpoint_usability.field_stock_orderpoint_generator__create_date +msgid "Created on" +msgstr "" + +#. module: stock_orderpoint_usability +#: model:ir.model.fields,field_description:stock_orderpoint_usability.field_stock_orderpoint_generator__display_name +msgid "Display Name" +msgstr "" + +#. module: stock_orderpoint_usability +#: model:ir.model.fields,field_description:stock_orderpoint_usability.field_stock_orderpoint_generator__location_from +msgid "From Location" +msgstr "Desde ubicación" + +#. module: stock_orderpoint_usability +#: model:ir.model.fields.selection,name:stock_orderpoint_usability.selection__stock_orderpoint_generator__generation_type__all_0 +msgid "Generate 0 Min/Max" +msgstr "Generar 0 Min/Max" + +#. module: stock_orderpoint_usability +#: model:ir.ui.menu,name:stock_orderpoint_usability.menu_rule_generation +msgid "Generate Orderpoint Rules" +msgstr "Generar reglas de abastecimiento" + +#. module: stock_orderpoint_usability +#: model:ir.model.fields,field_description:stock_orderpoint_usability.field_stock_orderpoint_generator__generation_type +#: model_terms:ir.ui.view,arch_db:stock_orderpoint_usability.stock_orderpoint_generator_view_form +msgid "Generate Orderpoints" +msgstr "Generar Reglas de abastecimiento" + +#. module: stock_orderpoint_usability +#: model:ir.model.fields.selection,name:stock_orderpoint_usability.selection__stock_orderpoint_generator__generation_type__from_location +msgid "Generate from Location" +msgstr "Generar desde ubicación" + +#. module: stock_orderpoint_usability +#: model:ir.model.fields,field_description:stock_orderpoint_usability.field_stock_orderpoint_generator__id +msgid "ID" +msgstr "" + +#. module: stock_orderpoint_usability +#: model:ir.model.fields,field_description:stock_orderpoint_usability.field_stock_orderpoint_generator____last_update +msgid "Last Modified on" +msgstr "" + +#. module: stock_orderpoint_usability +#: model:ir.model.fields,field_description:stock_orderpoint_usability.field_stock_orderpoint_generator__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: stock_orderpoint_usability +#: model:ir.model.fields,field_description:stock_orderpoint_usability.field_stock_orderpoint_generator__write_date +msgid "Last Updated on" +msgstr "" + #. module: stock_orderpoint_usability #: model:ir.model,name:stock_orderpoint_usability.model_stock_warehouse_orderpoint msgid "Minimum Inventory Rule" @@ -33,8 +109,23 @@ msgstr "Recalcular ctd para ordenar" #. module: stock_orderpoint_usability #. odoo-python -#: code:addons/other-addons/stock_orderpoint_usability/models/stock_warehouse_orderpoint.py:0 +#: code:addons/stock_orderpoint_usability/models/stock_warehouse_orderpoint.py:0 #: code:addons/stock_orderpoint_usability/models/stock_warehouse_orderpoint.py:0 #, python-format msgid "Reordering Rule" msgstr "Regla de abastecimiento" + +#. module: stock_orderpoint_usability +#: model:ir.model.fields,field_description:stock_orderpoint_usability.field_stock_orderpoint_generator__location_to +msgid "To Location" +msgstr "En Ubicación" + +#. module: stock_orderpoint_usability +#: model:ir.model.fields,field_description:stock_orderpoint_usability.field_stock_orderpoint_generator__update +msgid "Update" +msgstr "Actualizar" + +#. module: stock_orderpoint_usability +#: model:ir.model,name:stock_orderpoint_usability.model_stock_orderpoint_generator +msgid "Wizard to generate stock.warehouse.orderpoints" +msgstr "Asistente para generar reglas de abastecimiento" diff --git a/stock_orderpoint_usability/i18n/stock_orderpoint_usability.pot b/stock_orderpoint_usability/i18n/stock_orderpoint_usability.pot index dcfd32f6c6..1bbe7c7984 100644 --- a/stock_orderpoint_usability/i18n/stock_orderpoint_usability.pot +++ b/stock_orderpoint_usability/i18n/stock_orderpoint_usability.pot @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-12 15:12+0000\n" -"PO-Revision-Date: 2023-12-12 15:12+0000\n" +"POT-Creation-Date: 2024-10-07 08:58+0000\n" +"PO-Revision-Date: 2024-10-07 08:58+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -15,6 +15,82 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" +#. module: stock_orderpoint_usability +#: model_terms:ir.ui.view,arch_db:stock_orderpoint_usability.stock_orderpoint_generator_view_form +msgid "Cancel" +msgstr "" + +#. module: stock_orderpoint_usability +#: model:ir.model.fields,help:stock_orderpoint_usability.field_stock_orderpoint_generator__update +msgid "Check this if you want just update existing orderpoint rules." +msgstr "" + +#. module: stock_orderpoint_usability +#: model:ir.actions.act_window,name:stock_orderpoint_usability.action_rule_generation_form +msgid "Create Orderpoint Rules" +msgstr "" + +#. module: stock_orderpoint_usability +#: model:ir.model.fields,field_description:stock_orderpoint_usability.field_stock_orderpoint_generator__create_uid +msgid "Created by" +msgstr "" + +#. module: stock_orderpoint_usability +#: model:ir.model.fields,field_description:stock_orderpoint_usability.field_stock_orderpoint_generator__create_date +msgid "Created on" +msgstr "" + +#. module: stock_orderpoint_usability +#: model:ir.model.fields,field_description:stock_orderpoint_usability.field_stock_orderpoint_generator__display_name +msgid "Display Name" +msgstr "" + +#. module: stock_orderpoint_usability +#: model:ir.model.fields,field_description:stock_orderpoint_usability.field_stock_orderpoint_generator__location_from +msgid "From Location" +msgstr "" + +#. module: stock_orderpoint_usability +#: model:ir.model.fields.selection,name:stock_orderpoint_usability.selection__stock_orderpoint_generator__generation_type__all_0 +msgid "Generate 0 Min/Max" +msgstr "" + +#. module: stock_orderpoint_usability +#: model:ir.ui.menu,name:stock_orderpoint_usability.menu_rule_generation +msgid "Generate Orderpoint Rules" +msgstr "" + +#. module: stock_orderpoint_usability +#: model:ir.model.fields,field_description:stock_orderpoint_usability.field_stock_orderpoint_generator__generation_type +#: model_terms:ir.ui.view,arch_db:stock_orderpoint_usability.stock_orderpoint_generator_view_form +msgid "Generate Orderpoints" +msgstr "" + +#. module: stock_orderpoint_usability +#: model:ir.model.fields.selection,name:stock_orderpoint_usability.selection__stock_orderpoint_generator__generation_type__from_location +msgid "Generate from Location" +msgstr "" + +#. module: stock_orderpoint_usability +#: model:ir.model.fields,field_description:stock_orderpoint_usability.field_stock_orderpoint_generator__id +msgid "ID" +msgstr "" + +#. module: stock_orderpoint_usability +#: model:ir.model.fields,field_description:stock_orderpoint_usability.field_stock_orderpoint_generator____last_update +msgid "Last Modified on" +msgstr "" + +#. module: stock_orderpoint_usability +#: model:ir.model.fields,field_description:stock_orderpoint_usability.field_stock_orderpoint_generator__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: stock_orderpoint_usability +#: model:ir.model.fields,field_description:stock_orderpoint_usability.field_stock_orderpoint_generator__write_date +msgid "Last Updated on" +msgstr "" + #. module: stock_orderpoint_usability #: model:ir.model,name:stock_orderpoint_usability.model_stock_warehouse_orderpoint msgid "Minimum Inventory Rule" @@ -33,8 +109,23 @@ msgstr "" #. module: stock_orderpoint_usability #. odoo-python -#: code:addons/other-addons/stock_orderpoint_usability/models/stock_warehouse_orderpoint.py:0 +#: code:addons/stock_orderpoint_usability/models/stock_warehouse_orderpoint.py:0 #: code:addons/stock_orderpoint_usability/models/stock_warehouse_orderpoint.py:0 #, python-format msgid "Reordering Rule" msgstr "" + +#. module: stock_orderpoint_usability +#: model:ir.model.fields,field_description:stock_orderpoint_usability.field_stock_orderpoint_generator__location_to +msgid "To Location" +msgstr "" + +#. module: stock_orderpoint_usability +#: model:ir.model.fields,field_description:stock_orderpoint_usability.field_stock_orderpoint_generator__update +msgid "Update" +msgstr "" + +#. module: stock_orderpoint_usability +#: model:ir.model,name:stock_orderpoint_usability.model_stock_orderpoint_generator +msgid "Wizard to generate stock.warehouse.orderpoints" +msgstr "" diff --git a/stock_orderpoint_usability/security/ir.model.access.csv b/stock_orderpoint_usability/security/ir.model.access.csv new file mode 100644 index 0000000000..e444489ad9 --- /dev/null +++ b/stock_orderpoint_usability/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_stock_orderpoint_generator,access.stock.orderpoint.generator,model_stock_orderpoint_generator,stock.group_stock_manager,1,1,1,1 diff --git a/stock_orderpoint_usability/wizards/__init__.py b/stock_orderpoint_usability/wizards/__init__.py new file mode 100644 index 0000000000..4051647374 --- /dev/null +++ b/stock_orderpoint_usability/wizards/__init__.py @@ -0,0 +1 @@ +from . import stock_orderpoint_generator diff --git a/stock_orderpoint_usability/wizards/stock_orderpoint_generator.py b/stock_orderpoint_usability/wizards/stock_orderpoint_generator.py new file mode 100644 index 0000000000..1ec901a3e0 --- /dev/null +++ b/stock_orderpoint_usability/wizards/stock_orderpoint_generator.py @@ -0,0 +1,85 @@ +# Copyright 2021 Daniel Campos - AvanzOSC +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from odoo import fields, models + + +class StockOrderpointGenerator(models.TransientModel): + _name = "stock.orderpoint.generator" + _description = "Wizard to generate stock.warehouse.orderpoints" + + generation_type = fields.Selection( + selection=[ + ("from_location", "Generate from Location"), + ("all_0", "Generate 0 Min/Max"), + ], + string="Generate Orderpoints", + ) + location_from = fields.Many2one( + comodel_name="stock.location", + string="From Location", + domain="[('usage','=', 'internal')]", + ) + location_to = fields.Many2many( + comodel_name="stock.location", + string="To Location", + domain="[('usage','=', 'internal')]", + ) + update = fields.Boolean( + help="Check this if you want just update existing orderpoint rules.", + ) + + def _update_orderpoint_rule(self, rule, location): + """Create/Update location_id with the rule_id provided""" + orderpoint_obj = self.env["stock.warehouse.orderpoint"] + rule2update = orderpoint_obj.search( + [ + ("location_id", "=", location.id), + ("product_id", "=", rule.product_id.id), + ] + ) + if rule2update: + rule2update.product_min_qty = rule.product_min_qty + rule2update.product_max_qty = rule.product_max_qty + rule2update.qty_multiple = rule.qty_multiple + else: + rule.copy( + { + "warehouse_id": location.warehouse_id.id, + "location_id": location.id, + } + ) + + def button_generate(self): + orderpoint_obj = self.env["stock.warehouse.orderpoint"].with_context( + active_test=False + ) + product_obj = self.env["product.product"] + if self.generation_type == "from_location": + orderpoint_rules = orderpoint_obj.search( + [("location_id", "=", self.location_from.id)] + ) + for rule in orderpoint_rules: + for location in self.location_to: + self._update_orderpoint_rule(rule, location) + elif self.generation_type == "all_0": + products = product_obj.search([("type", "=", "product")]) + for location in self.location_to: + for product in products: + rule_exist = orderpoint_obj.search( + [ + ("location_id", "=", location.id), + ("product_id", "=", product.id), + ] + ) + if rule_exist: + continue + rule_data = { + "warehouse_id": location.warehouse_id.id, + "location_id": location.id, + "product_id": product.id, + } + try: + orderpoint_obj.create(rule_data) + except Exception: + continue diff --git a/stock_orderpoint_usability/wizards/stock_orderpoint_generator_view.xml b/stock_orderpoint_usability/wizards/stock_orderpoint_generator_view.xml new file mode 100644 index 0000000000..14074eccad --- /dev/null +++ b/stock_orderpoint_usability/wizards/stock_orderpoint_generator_view.xml @@ -0,0 +1,50 @@ + + + + stock.orderpoint.generator + +
+ + + + + + +
+
+
+
+
+
+ + Create Orderpoint Rules + stock.orderpoint.generator + ir.actions.act_window + form + + new + + + + +
diff --git a/stock_picking_automatic_lot/README.rst b/stock_picking_automatic_lot/README.rst new file mode 100644 index 0000000000..01940bf3fd --- /dev/null +++ b/stock_picking_automatic_lot/README.rst @@ -0,0 +1,30 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +=========================== +Stock picking automatic lot +=========================== + +* When validating a picking, the error "You need to supply a Lot/Serial number + for products xxxxx." will no longer be displayed, as a lot will be created + automatically using the lot sequence. + +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 smash it by providing detailed and welcomed feedback. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Contributors +------------ + +* Berezi Amubieta +* Alfredo de la Fuente diff --git a/stock_picking_automatic_lot/__init__.py b/stock_picking_automatic_lot/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/stock_picking_automatic_lot/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/stock_picking_automatic_lot/__manifest__.py b/stock_picking_automatic_lot/__manifest__.py new file mode 100644 index 0000000000..ba110485f1 --- /dev/null +++ b/stock_picking_automatic_lot/__manifest__.py @@ -0,0 +1,15 @@ +# Copyright 2024 Alfredo de la Fuente - AvanzOSC +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +{ + "name": "Stock Picking Automatic Lot", + "version": "16.0.1.0.0", + "category": "Inventory/Inventory", + "license": "AGPL-3", + "author": "Avanzosc", + "website": "https://github.com/avanzosc/odoo-addons", + "depends": [ + "stock", + ], + "data": [], + "installable": True, +} diff --git a/stock_picking_automatic_lot/i18n/ca_ES.po b/stock_picking_automatic_lot/i18n/ca_ES.po new file mode 100644 index 0000000000..2e9403aa3c --- /dev/null +++ b/stock_picking_automatic_lot/i18n/ca_ES.po @@ -0,0 +1,21 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_picking_automatic_lot +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-29 07:33+0000\n" +"PO-Revision-Date: 2024-10-29 07:33+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: stock_picking_automatic_lot +#: model:ir.model,name:stock_picking_automatic_lot.model_stock_picking +msgid "Transfer" +msgstr "Transferència" diff --git a/stock_picking_automatic_lot/i18n/en_GB.po b/stock_picking_automatic_lot/i18n/en_GB.po new file mode 100644 index 0000000000..8b0f558a25 --- /dev/null +++ b/stock_picking_automatic_lot/i18n/en_GB.po @@ -0,0 +1,21 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_picking_automatic_lot +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-29 07:33+0000\n" +"PO-Revision-Date: 2024-10-29 07:33+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: stock_picking_automatic_lot +#: model:ir.model,name:stock_picking_automatic_lot.model_stock_picking +msgid "Transfer" +msgstr "" diff --git a/stock_picking_automatic_lot/i18n/es.po b/stock_picking_automatic_lot/i18n/es.po new file mode 100644 index 0000000000..23512d18d1 --- /dev/null +++ b/stock_picking_automatic_lot/i18n/es.po @@ -0,0 +1,21 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_picking_automatic_lot +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-29 07:35+0000\n" +"PO-Revision-Date: 2024-10-29 07:35+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: stock_picking_automatic_lot +#: model:ir.model,name:stock_picking_automatic_lot.model_stock_picking +msgid "Transfer" +msgstr "Albarán" diff --git a/stock_picking_automatic_lot/i18n/fr.po b/stock_picking_automatic_lot/i18n/fr.po new file mode 100644 index 0000000000..98d6b0defd --- /dev/null +++ b/stock_picking_automatic_lot/i18n/fr.po @@ -0,0 +1,21 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_picking_automatic_lot +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-29 07:34+0000\n" +"PO-Revision-Date: 2024-10-29 07:34+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: stock_picking_automatic_lot +#: model:ir.model,name:stock_picking_automatic_lot.model_stock_picking +msgid "Transfer" +msgstr "Transfert" diff --git a/stock_picking_automatic_lot/i18n/stock_picking_automatic_lot.pot b/stock_picking_automatic_lot/i18n/stock_picking_automatic_lot.pot new file mode 100644 index 0000000000..8b0f558a25 --- /dev/null +++ b/stock_picking_automatic_lot/i18n/stock_picking_automatic_lot.pot @@ -0,0 +1,21 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_picking_automatic_lot +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-29 07:33+0000\n" +"PO-Revision-Date: 2024-10-29 07:33+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: stock_picking_automatic_lot +#: model:ir.model,name:stock_picking_automatic_lot.model_stock_picking +msgid "Transfer" +msgstr "" diff --git a/stock_picking_automatic_lot/models/__init__.py b/stock_picking_automatic_lot/models/__init__.py new file mode 100644 index 0000000000..ae4c27227f --- /dev/null +++ b/stock_picking_automatic_lot/models/__init__.py @@ -0,0 +1 @@ +from . import stock_picking diff --git a/stock_picking_automatic_lot/models/stock_picking.py b/stock_picking_automatic_lot/models/stock_picking.py new file mode 100644 index 0000000000..1db8c636a5 --- /dev/null +++ b/stock_picking_automatic_lot/models/stock_picking.py @@ -0,0 +1,47 @@ +# Copyright 2024 Alfredo de la Fuente - AvanzOSC +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from odoo import models +from odoo.tools.float_utils import float_is_zero + + +class StockPicking(models.Model): + _inherit = "stock.picking" + + def _sanity_check(self, separate_pickings=True): + precision_digits = self.env["decimal.precision"].precision_get( + "Product Unit of Measure" + ) + no_quantities_done_ids = set() + no_reserved_quantities_ids = set() + for picking in self: + if all( + float_is_zero(move_line.qty_done, precision_digits=precision_digits) + for move_line in picking.move_line_ids.filtered( + lambda m: m.state not in ("done", "cancel") + ) + ): + no_quantities_done_ids.add(picking.id) + if all( + float_is_zero( + move_line.reserved_qty, + precision_rounding=move_line.product_uom_id.rounding, + ) + for move_line in picking.move_line_ids + ): + no_reserved_quantities_ids.add(picking.id) + pickings_using_lots = self.filtered( + lambda p: p.picking_type_id.use_create_lots + or p.picking_type_id.use_existing_lots + ) + if pickings_using_lots: + lines_to_check = pickings_using_lots._get_lot_move_lines_for_sanity_check( + no_quantities_done_ids, separate_pickings + ) + for line in lines_to_check: + if not line.lot_name and not line.lot_id: + vals = line._get_value_production_lot() + vals["name"] = self.env.ref( + "stock.sequence_production_lots" + ).next_by_id() + line.lot_id = self.env["stock.lot"].create(vals).id + return super()._sanity_check(separate_pickings=separate_pickings) diff --git a/stock_picking_batch_package/README.rst b/stock_picking_batch_package/README.rst new file mode 100644 index 0000000000..dc6e4e43cf --- /dev/null +++ b/stock_picking_batch_package/README.rst @@ -0,0 +1,31 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +=========================== +Stock Picking Batch Package +=========================== + +* Transporter field in the stock picking batch. +* Number of packages and shipping weight compute fields in stock picking batch. +* Report for stock picking batch. + +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 smash it by providing detailed and welcomed feedback. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Contributors +------------ + +* Berezi Amubieta +* Alfredo de la Fuente +* Ana Juaristi diff --git a/stock_picking_batch_package/__init__.py b/stock_picking_batch_package/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/stock_picking_batch_package/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/stock_picking_batch_package/__manifest__.py b/stock_picking_batch_package/__manifest__.py new file mode 100644 index 0000000000..c8cd512176 --- /dev/null +++ b/stock_picking_batch_package/__manifest__.py @@ -0,0 +1,22 @@ +# Copyright 2021 Berezi Amubieta - AvanzOSC +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +{ + "name": "Stock Picking Batch Package", + "version": "16.0.1.0.0", + "author": "AvanzOSC", + "category": "Inventory", + "website": "https://github.com/avanzosc/odoo-addons", + "depends": [ + "delivery_carrier_partner", + "stock_picking_batch", + "stock_picking_package_usability", + ], + "data": [ + "views/stock_picking_batch_view.xml", + "views/stock_picking_view.xml", + "report/batch_report.xml", + "report/picking_report_template.xml", + ], + "license": "AGPL-3", + "installable": True, +} diff --git a/stock_picking_batch_package/i18n/es.po b/stock_picking_batch_package/i18n/es.po new file mode 100644 index 0000000000..b0e1eb9d73 --- /dev/null +++ b/stock_picking_batch_package/i18n/es.po @@ -0,0 +1,121 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_picking_batch_package +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-09-27 09:49+0000\n" +"PO-Revision-Date: 2024-09-27 09:49+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: stock_picking_batch_package +#: model:ir.actions.report,print_report_name:stock_picking_batch_package.action_report_pickingbatch +msgid "'Picking batch - %s' % (object.name)" +msgstr "'Agrupación de albaranes - %s' % (object.name)" + +#. module: stock_picking_batch_package +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package.external_layout_standard_pickingbatch +msgid "Date:" +msgstr "Fecha:" + +#. module: stock_picking_batch_package +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package.report_pickingbatch_document +msgid "Total:" +msgstr "" + +#. module: stock_picking_batch_package +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package.external_layout_standard_pickingbatch +msgid "Transporter:" +msgstr "Transporte:" + +#. module: stock_picking_batch_package +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package.report_pickingbatch_document +msgid "ADDRESSEE" +msgstr "DESTINATARIO" + +#. module: stock_picking_batch_package +#: model:ir.model,name:stock_picking_batch_package.model_stock_picking_batch +msgid "Batch Transfer" +msgstr "Agrupación de albarán" + +#. module: stock_picking_batch_package +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package.report_pickingbatch_document +msgid "CITY" +msgstr "POBLACIÓN" + +#. module: stock_picking_batch_package +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package.report_pickingbatch_document +msgid "COUNTRY" +msgstr "PAÍS" + +#. module: stock_picking_batch_package +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package.report_pickingbatch_document +msgid "DIRECTION" +msgstr "DIRECCIÓN" + +#. module: stock_picking_batch_package +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package.view_picking_tree_batch +msgid "Delivery Address" +msgstr "Dirección de entrega" + +#. module: stock_picking_batch_package +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package.external_layout_standard_pickingbatch +msgid "Logo" +msgstr "" + +#. module: stock_picking_batch_package +#: model:ir.model.fields,field_description:stock_picking_batch_package.field_stock_picking_batch__number_of_packages +msgid "Number of Packages" +msgstr "Número de bultos" + +#. module: stock_picking_batch_package +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package.report_pickingbatch_document +msgid "PACKAGES" +msgstr "BULTOS" + +#. module: stock_picking_batch_package +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package.external_layout_standard_pickingbatch +msgid "Page: / " +msgstr "Página: / " + +#. module: stock_picking_batch_package +#: model:ir.actions.report,name:stock_picking_batch_package.action_report_pickingbatch +msgid "Picking Batch With Package" +msgstr "Agrupación de albaranes con paquetes" + +#. module: stock_picking_batch_package +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package.report_pickingbatch_document +msgid "STATE" +msgstr "PROVINCIA" + +#. module: stock_picking_batch_package +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package.view_picking_tree_batch +msgid "Shipping Method" +msgstr "Método de envío" + +#. module: stock_picking_batch_package +#: model:ir.model.fields,field_description:stock_picking_batch_package.field_stock_picking_batch__shipping_weight +msgid "Shipping Weight" +msgstr "Peso de envío" + +#. module: stock_picking_batch_package +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package.report_pickingbatch_document +msgid "TRANSFER" +msgstr "ALBARÁN" + +#. module: stock_picking_batch_package +#: model:ir.model.fields,field_description:stock_picking_batch_package.field_stock_picking_batch__partner_id +msgid "Transporter" +msgstr "Transportista" + +#. module: stock_picking_batch_package +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package.report_pickingbatch_document +msgid "WEIGHT/KG" +msgstr "PESO/KG" diff --git a/stock_picking_batch_package/i18n/stock_picking_batch_package.pot b/stock_picking_batch_package/i18n/stock_picking_batch_package.pot new file mode 100644 index 0000000000..82f44be7c1 --- /dev/null +++ b/stock_picking_batch_package/i18n/stock_picking_batch_package.pot @@ -0,0 +1,121 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_picking_batch_package +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-09-27 09:49+0000\n" +"PO-Revision-Date: 2024-09-27 09:49+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: stock_picking_batch_package +#: model:ir.actions.report,print_report_name:stock_picking_batch_package.action_report_pickingbatch +msgid "'Picking batch - %s' % (object.name)" +msgstr "" + +#. module: stock_picking_batch_package +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package.external_layout_standard_pickingbatch +msgid "Date:" +msgstr "" + +#. module: stock_picking_batch_package +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package.report_pickingbatch_document +msgid "Total:" +msgstr "" + +#. module: stock_picking_batch_package +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package.external_layout_standard_pickingbatch +msgid "Transporter:" +msgstr "" + +#. module: stock_picking_batch_package +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package.report_pickingbatch_document +msgid "ADDRESSEE" +msgstr "" + +#. module: stock_picking_batch_package +#: model:ir.model,name:stock_picking_batch_package.model_stock_picking_batch +msgid "Batch Transfer" +msgstr "" + +#. module: stock_picking_batch_package +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package.report_pickingbatch_document +msgid "CITY" +msgstr "" + +#. module: stock_picking_batch_package +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package.report_pickingbatch_document +msgid "COUNTRY" +msgstr "" + +#. module: stock_picking_batch_package +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package.report_pickingbatch_document +msgid "DIRECTION" +msgstr "" + +#. module: stock_picking_batch_package +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package.view_picking_tree_batch +msgid "Delivery Address" +msgstr "" + +#. module: stock_picking_batch_package +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package.external_layout_standard_pickingbatch +msgid "Logo" +msgstr "" + +#. module: stock_picking_batch_package +#: model:ir.model.fields,field_description:stock_picking_batch_package.field_stock_picking_batch__number_of_packages +msgid "Number of Packages" +msgstr "" + +#. module: stock_picking_batch_package +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package.report_pickingbatch_document +msgid "PACKAGES" +msgstr "" + +#. module: stock_picking_batch_package +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package.external_layout_standard_pickingbatch +msgid "Page: / " +msgstr "" + +#. module: stock_picking_batch_package +#: model:ir.actions.report,name:stock_picking_batch_package.action_report_pickingbatch +msgid "Picking Batch With Package" +msgstr "" + +#. module: stock_picking_batch_package +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package.report_pickingbatch_document +msgid "STATE" +msgstr "" + +#. module: stock_picking_batch_package +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package.view_picking_tree_batch +msgid "Shipping Method" +msgstr "" + +#. module: stock_picking_batch_package +#: model:ir.model.fields,field_description:stock_picking_batch_package.field_stock_picking_batch__shipping_weight +msgid "Shipping Weight" +msgstr "" + +#. module: stock_picking_batch_package +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package.report_pickingbatch_document +msgid "TRANSFER" +msgstr "" + +#. module: stock_picking_batch_package +#: model:ir.model.fields,field_description:stock_picking_batch_package.field_stock_picking_batch__partner_id +msgid "Transporter" +msgstr "" + +#. module: stock_picking_batch_package +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package.report_pickingbatch_document +msgid "WEIGHT/KG" +msgstr "" diff --git a/stock_picking_batch_package/models/__init__.py b/stock_picking_batch_package/models/__init__.py new file mode 100644 index 0000000000..07b5490f6c --- /dev/null +++ b/stock_picking_batch_package/models/__init__.py @@ -0,0 +1 @@ +from . import stock_picking_batch diff --git a/stock_picking_batch_package/models/stock_picking_batch.py b/stock_picking_batch_package/models/stock_picking_batch.py new file mode 100644 index 0000000000..e2b76350ac --- /dev/null +++ b/stock_picking_batch_package/models/stock_picking_batch.py @@ -0,0 +1,37 @@ +# Copyright 2021 Berezi Amubieta - AvanzOSC +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from odoo import fields, models + + +class StockPickingBatch(models.Model): + _inherit = "stock.picking.batch" + + def set_domain_for_partner_id(self): + delivery_carrier = self.env["delivery.carrier"].search([(1, "=", 1)]) + partner_list = [] + for record in delivery_carrier: + if record.partner_id: + partner_list.append(record.partner_id.id) + return [("id", "in", partner_list)] + + partner_id = fields.Many2one( + string="Transporter", + comodel_name="res.partner", + domain=set_domain_for_partner_id, + ) + number_of_packages = fields.Integer( + string="Number of Packages", compute="_compute_number_of_packages" + ) + shipping_weight = fields.Float(compute="_compute_shipping_weight") + + def _compute_number_of_packages(self): + for transfer in self: + transfer.number_of_packages = sum( + transfer.picking_ids.mapped("number_of_packages") + ) + + def _compute_shipping_weight(self): + for transfer in self: + transfer.shipping_weight = sum( + transfer.picking_ids.mapped("shipping_weight") + ) diff --git a/stock_picking_batch_package/report/batch_report.xml b/stock_picking_batch_package/report/batch_report.xml new file mode 100644 index 0000000000..01f80d7588 --- /dev/null +++ b/stock_picking_batch_package/report/batch_report.xml @@ -0,0 +1,126 @@ + + + + + + + + + + Picking Batch With Package + stock.picking.batch + qweb-pdf + stock_picking_batch_package.report_pickingbatch + stock_picking_batch_package.report_pickingbatch + 'Picking batch - %s' % (object.name) + + report + + + diff --git a/stock_picking_batch_package/report/picking_report_template.xml b/stock_picking_batch_package/report/picking_report_template.xml new file mode 100644 index 0000000000..7c06c833f5 --- /dev/null +++ b/stock_picking_batch_package/report/picking_report_template.xml @@ -0,0 +1,99 @@ + + + + + + diff --git a/stock_picking_batch_package/views/stock_picking_batch_view.xml b/stock_picking_batch_package/views/stock_picking_batch_view.xml new file mode 100644 index 0000000000..72969d6faf --- /dev/null +++ b/stock_picking_batch_package/views/stock_picking_batch_view.xml @@ -0,0 +1,14 @@ + + + + stock.picking.batch + + + + + + + + + + diff --git a/stock_picking_batch_package/views/stock_picking_view.xml b/stock_picking_batch_package/views/stock_picking_view.xml new file mode 100644 index 0000000000..35e569ea09 --- /dev/null +++ b/stock_picking_batch_package/views/stock_picking_view.xml @@ -0,0 +1,15 @@ + + + + stock.picking + + + + + + + + + + + diff --git a/stock_picking_batch_package_usability/README.rst b/stock_picking_batch_package_usability/README.rst new file mode 100644 index 0000000000..4169e04aae --- /dev/null +++ b/stock_picking_batch_package_usability/README.rst @@ -0,0 +1,29 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +===================================== +Stock Picking Batch Package Usability +===================================== + +* One to many from batch to package. +* In batch, button to generate indicated packages. + +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 smash it by providing detailed and welcomed feedback. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Contributors +------------ + +* Berezi Amubieta +* Ana Juaristi diff --git a/stock_picking_batch_package_usability/__init__.py b/stock_picking_batch_package_usability/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/stock_picking_batch_package_usability/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/stock_picking_batch_package_usability/__manifest__.py b/stock_picking_batch_package_usability/__manifest__.py new file mode 100644 index 0000000000..a80307dc95 --- /dev/null +++ b/stock_picking_batch_package_usability/__manifest__.py @@ -0,0 +1,20 @@ +# Copyright 2024 Berezi Amubieta - AvanzOSC +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +{ + "name": "Stock Picking Batch Package Usability", + "version": "16.0.1.1.0", + "author": "Avanzosc", + "category": "Inventory", + "website": "https://github.com/avanzosc/odoo-addons", + "depends": [ + "stock_picking_batch", + "stock_picking_package_usability", + "stock_picking_batch_package", + ], + "data": [ + "views/stock_quant_package_view.xml", + "views/stock_picking_batch_view.xml", + ], + "license": "AGPL-3", + "installable": True, +} diff --git a/stock_picking_batch_package_usability/i18n/es.po b/stock_picking_batch_package_usability/i18n/es.po new file mode 100644 index 0000000000..65791c6d69 --- /dev/null +++ b/stock_picking_batch_package_usability/i18n/es.po @@ -0,0 +1,51 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_picking_batch_package_usability +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-10 14:46+0000\n" +"PO-Revision-Date: 2024-10-10 14:46+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: stock_picking_batch_package_usability +#: model:ir.model.fields,field_description:stock_picking_batch_package_usability.field_stock_quant_package__batch_id +msgid "Batch" +msgstr "Agrupación de albaranes" + +#. module: stock_picking_batch_package_usability +#: model:ir.model,name:stock_picking_batch_package_usability.model_stock_picking_batch +msgid "Batch Transfer" +msgstr "Agrupación de albarán" + +#. module: stock_picking_batch_package_usability +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package_usability.stock_picking_batch_form +msgid "Create Packs" +msgstr "Crear paquetes" + +#. module: stock_picking_batch_package_usability +#: model:ir.model.fields,field_description:stock_picking_batch_package_usability.field_stock_picking_batch__qty_packages +msgid "Number of Packages" +msgstr "Cantidad de paquetes" + +#. module: stock_picking_batch_package_usability +#. odoo-python +#: code:addons/stock_picking_batch_package_usability/models/stock_picking_batch.py:0 +#: model:ir.model,name:stock_picking_batch_package_usability.model_stock_quant_package +#: model:ir.model.fields,field_description:stock_picking_batch_package_usability.field_stock_picking_batch__quant_package_ids +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package_usability.stock_picking_batch_form +#, python-format +msgid "Packages" +msgstr "Paquetes" + +#. module: stock_picking_batch_package_usability +#: model:ir.model.fields,field_description:stock_picking_batch_package_usability.field_stock_picking_batch__packages_qty +msgid "Packages Quantity" +msgstr "Cantidad de paquetes" diff --git a/stock_picking_batch_package_usability/i18n/stock_picking_batch_package_usability.pot b/stock_picking_batch_package_usability/i18n/stock_picking_batch_package_usability.pot new file mode 100644 index 0000000000..6cf1ca3900 --- /dev/null +++ b/stock_picking_batch_package_usability/i18n/stock_picking_batch_package_usability.pot @@ -0,0 +1,51 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_picking_batch_package_usability +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-10 14:45+0000\n" +"PO-Revision-Date: 2024-10-10 14:45+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: stock_picking_batch_package_usability +#: model:ir.model.fields,field_description:stock_picking_batch_package_usability.field_stock_quant_package__batch_id +msgid "Batch" +msgstr "" + +#. module: stock_picking_batch_package_usability +#: model:ir.model,name:stock_picking_batch_package_usability.model_stock_picking_batch +msgid "Batch Transfer" +msgstr "" + +#. module: stock_picking_batch_package_usability +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package_usability.stock_picking_batch_form +msgid "Create Packs" +msgstr "" + +#. module: stock_picking_batch_package_usability +#: model:ir.model.fields,field_description:stock_picking_batch_package_usability.field_stock_picking_batch__qty_packages +msgid "Number of Packages" +msgstr "" + +#. module: stock_picking_batch_package_usability +#. odoo-python +#: code:addons/stock_picking_batch_package_usability/models/stock_picking_batch.py:0 +#: model:ir.model,name:stock_picking_batch_package_usability.model_stock_quant_package +#: model:ir.model.fields,field_description:stock_picking_batch_package_usability.field_stock_picking_batch__quant_package_ids +#: model_terms:ir.ui.view,arch_db:stock_picking_batch_package_usability.stock_picking_batch_form +#, python-format +msgid "Packages" +msgstr "" + +#. module: stock_picking_batch_package_usability +#: model:ir.model.fields,field_description:stock_picking_batch_package_usability.field_stock_picking_batch__packages_qty +msgid "Packages Quantity" +msgstr "" diff --git a/stock_picking_batch_package_usability/models/__init__.py b/stock_picking_batch_package_usability/models/__init__.py new file mode 100644 index 0000000000..e524d72b73 --- /dev/null +++ b/stock_picking_batch_package_usability/models/__init__.py @@ -0,0 +1,2 @@ +from . import stock_picking_batch +from . import stock_quant_package diff --git a/stock_picking_batch_package_usability/models/stock_picking_batch.py b/stock_picking_batch_package_usability/models/stock_picking_batch.py new file mode 100644 index 0000000000..2552b272ba --- /dev/null +++ b/stock_picking_batch_package_usability/models/stock_picking_batch.py @@ -0,0 +1,43 @@ +# Copyright 2024 Berezi Amubieta - AvanzOSC +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from odoo import _, api, fields, models + + +class StockPickingBatch(models.Model): + _inherit = "stock.picking.batch" + + @api.depends("quant_package_ids") + def _compute_packages_qty(self): + for picking in self: + picking.packages_qty = len(picking.quant_package_ids) + + quant_package_ids = fields.One2many( + string="Packages", comodel_name="stock.quant.package", inverse_name="batch_id" + ) + qty_packages = fields.Integer(string="Number of Packages") + packages_qty = fields.Integer( + string="Packages Quantity", compute="_compute_packages_qty", store=True + ) + + def action_view_package(self): + context = self.env.context.copy() + context.update({"default_batch_id": self.id}) + return { + "name": _("Packages"), + "view_mode": "tree", + "res_model": "stock.quant.package", + "domain": [("id", "in", self.quant_package_ids.ids)], + "type": "ir.actions.act_window", + "view_id": self.env.ref( + "stock_picking_package_usability.stock_quant_package_view_tree" + ).id, + "context": context, + } + + def action_create_package(self): + self.ensure_one() + pack_vals = {"batch_id": self.id} + for i in range(1, self.qty_packages + 1): + name = "{} {} {:0>3}".format(self.name, "-", i) + pack_vals.update({"name": name}) + self.env["stock.quant.package"].create(pack_vals) diff --git a/stock_picking_batch_package_usability/models/stock_quant_package.py b/stock_picking_batch_package_usability/models/stock_quant_package.py new file mode 100644 index 0000000000..8b04a37435 --- /dev/null +++ b/stock_picking_batch_package_usability/models/stock_quant_package.py @@ -0,0 +1,17 @@ +# Copyright 2024 Berezi Amubieta - AvanzOSC +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from odoo import api, fields, models + + +class StockQuantPackage(models.Model): + _inherit = "stock.quant.package" + + batch_id = fields.Many2one(string="Batch", comodel_name="stock.picking.batch") + + @api.model + def create(self, vals): + line = super().create(vals) + line.name = "{} {} {:0>3}".format( + line.batch_id.name, "-", len(line.batch_id.quant_package_ids) + ) + return line diff --git a/stock_picking_batch_package_usability/views/stock_picking_batch_view.xml b/stock_picking_batch_package_usability/views/stock_picking_batch_view.xml new file mode 100644 index 0000000000..13619a8c37 --- /dev/null +++ b/stock_picking_batch_package_usability/views/stock_picking_batch_view.xml @@ -0,0 +1,29 @@ + + + + stock.picking.batch + + +
+ +
+ + + + +
+ +
diff --git a/stock_picking_button_show_details/views/stock_picking_views.xml b/stock_picking_button_show_details/views/stock_picking_views.xml new file mode 100644 index 0000000000..929904d7dc --- /dev/null +++ b/stock_picking_button_show_details/views/stock_picking_views.xml @@ -0,0 +1,13 @@ + + + + stock.picking + + + + + + + diff --git a/stock_picking_create_repair_invoice_address/README.rst b/stock_picking_create_repair_invoice_address/README.rst new file mode 100644 index 0000000000..8dd77d7719 --- /dev/null +++ b/stock_picking_create_repair_invoice_address/README.rst @@ -0,0 +1,29 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +=========================================== +Stock picking create repair invoice address +=========================================== + +* When create the repair order, pass the invoice address from the sales order + to the repair order. + +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 smash it by providing detailed and welcomed feedback. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Contributors +------------ + +* Berezi Amubieta +* Alfredo de la Fuente diff --git a/stock_picking_create_repair_invoice_address/__init__.py b/stock_picking_create_repair_invoice_address/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/stock_picking_create_repair_invoice_address/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/stock_picking_create_repair_invoice_address/__manifest__.py b/stock_picking_create_repair_invoice_address/__manifest__.py new file mode 100644 index 0000000000..823aedc4aa --- /dev/null +++ b/stock_picking_create_repair_invoice_address/__manifest__.py @@ -0,0 +1,17 @@ +# Copyright 2024 Alfredo de la Fuente - AvanzOSC +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +{ + "name": "Stock Picking Create Repair Invoice Address", + "version": "16.0.1.0.0", + "category": "Inventory/Inventory", + "license": "AGPL-3", + "author": "Avanzosc", + "website": "https://github.com/avanzosc/odoo-addons", + "depends": [ + "stock_picking_create_repair", + "repair_order_invoice_address", + ], + "data": [], + "installable": True, + "auto_install": True, +} diff --git a/stock_picking_create_repair_invoice_address/i18n/ca_ES.po b/stock_picking_create_repair_invoice_address/i18n/ca_ES.po new file mode 100644 index 0000000000..1d921f78cf --- /dev/null +++ b/stock_picking_create_repair_invoice_address/i18n/ca_ES.po @@ -0,0 +1,21 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_picking_create_repair_invoice_address +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-09-25 09:15+0000\n" +"PO-Revision-Date: 2024-09-25 09:15+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: stock_picking_create_repair_invoice_address +#: model:ir.model,name:stock_picking_create_repair_invoice_address.model_stock_move_line +msgid "Product Moves (Stock Move Line)" +msgstr "Moviment del producte (línia de moviment d'estoc)" diff --git a/stock_picking_create_repair_invoice_address/i18n/en_GB.po b/stock_picking_create_repair_invoice_address/i18n/en_GB.po new file mode 100644 index 0000000000..5a10267645 --- /dev/null +++ b/stock_picking_create_repair_invoice_address/i18n/en_GB.po @@ -0,0 +1,21 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_picking_create_repair_invoice_address +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-09-25 09:15+0000\n" +"PO-Revision-Date: 2024-09-25 09:15+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: stock_picking_create_repair_invoice_address +#: model:ir.model,name:stock_picking_create_repair_invoice_address.model_stock_move_line +msgid "Product Moves (Stock Move Line)" +msgstr "" diff --git a/stock_picking_create_repair_invoice_address/i18n/es.po b/stock_picking_create_repair_invoice_address/i18n/es.po new file mode 100644 index 0000000000..47d07d97da --- /dev/null +++ b/stock_picking_create_repair_invoice_address/i18n/es.po @@ -0,0 +1,21 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_picking_create_repair_invoice_address +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-09-25 09:16+0000\n" +"PO-Revision-Date: 2024-09-25 09:16+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: stock_picking_create_repair_invoice_address +#: model:ir.model,name:stock_picking_create_repair_invoice_address.model_stock_move_line +msgid "Product Moves (Stock Move Line)" +msgstr "Movimientos de Producto (Stock Move Line)" diff --git a/stock_picking_create_repair_invoice_address/i18n/fr.po b/stock_picking_create_repair_invoice_address/i18n/fr.po new file mode 100644 index 0000000000..925f53a0cc --- /dev/null +++ b/stock_picking_create_repair_invoice_address/i18n/fr.po @@ -0,0 +1,21 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_picking_create_repair_invoice_address +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-09-25 09:15+0000\n" +"PO-Revision-Date: 2024-09-25 09:15+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: stock_picking_create_repair_invoice_address +#: model:ir.model,name:stock_picking_create_repair_invoice_address.model_stock_move_line +msgid "Product Moves (Stock Move Line)" +msgstr "Mouvements de stock" diff --git a/stock_picking_create_repair_invoice_address/i18n/stock_picking_create_repair_invoice_address.pot b/stock_picking_create_repair_invoice_address/i18n/stock_picking_create_repair_invoice_address.pot new file mode 100644 index 0000000000..c2285cee42 --- /dev/null +++ b/stock_picking_create_repair_invoice_address/i18n/stock_picking_create_repair_invoice_address.pot @@ -0,0 +1,21 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_picking_create_repair_invoice_address +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-09-25 09:14+0000\n" +"PO-Revision-Date: 2024-09-25 09:14+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: stock_picking_create_repair_invoice_address +#: model:ir.model,name:stock_picking_create_repair_invoice_address.model_stock_move_line +msgid "Product Moves (Stock Move Line)" +msgstr "" diff --git a/stock_picking_create_repair_invoice_address/models/__init__.py b/stock_picking_create_repair_invoice_address/models/__init__.py new file mode 100644 index 0000000000..431f51c274 --- /dev/null +++ b/stock_picking_create_repair_invoice_address/models/__init__.py @@ -0,0 +1 @@ +from . import stock_move_line diff --git a/stock_picking_create_repair_invoice_address/models/stock_move_line.py b/stock_picking_create_repair_invoice_address/models/stock_move_line.py new file mode 100644 index 0000000000..548c78913e --- /dev/null +++ b/stock_picking_create_repair_invoice_address/models/stock_move_line.py @@ -0,0 +1,15 @@ +# Copyright 2024 Alfredo de la Fuente - AvanzOSC +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from odoo import models + + +class StockMoveLine(models.Model): + _inherit = "stock.move.line" + + def catch_values_from_create_repair_from_picking(self): + vals = super().catch_values_from_create_repair_from_picking() + if self.picking_id.sale_order_id.partner_invoice_id: + vals["partner_invoice_id"] = ( + self.picking_id.sale_order_id.partner_invoice_id.id + ) + return vals diff --git a/stock_picking_package_usability/README.rst b/stock_picking_package_usability/README.rst new file mode 100644 index 0000000000..5730e08e21 --- /dev/null +++ b/stock_picking_package_usability/README.rst @@ -0,0 +1,31 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +=============================== +Stock Picking Package Usability +=============================== + +* Packaging length, width and height fields float instead of integer. +* One to many from stock piking to package. +* In transfers, button to generate indicated packages. + +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 smash it by providing detailed and welcomed feedback. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Contributors +------------ + +* Berezi Amubieta +* Alfredo de la Fuente +* Ana Juaristi diff --git a/stock_picking_package_usability/__init__.py b/stock_picking_package_usability/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/stock_picking_package_usability/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/stock_picking_package_usability/__manifest__.py b/stock_picking_package_usability/__manifest__.py new file mode 100644 index 0000000000..a4fb44be56 --- /dev/null +++ b/stock_picking_package_usability/__manifest__.py @@ -0,0 +1,18 @@ +# Copyright 2021 Berezi Amubieta - AvanzOSC +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +{ + "name": "Stock Picking Package Usability", + "version": "16.0.1.1.0", + "author": "Avanzosc", + "category": "Inventory", + "website": "https://github.com/avanzosc/odoo-addons", + "depends": ["delivery_package_number", "stock_quant_package_dimension"], + "data": [ + "views/stock_quant_package_views.xml", + "views/stock_picking_views.xml", + "views/stock_move_line_views.xml", + "views/product_packaging_views.xml", + ], + "license": "AGPL-3", + "installable": True, +} diff --git a/stock_picking_package_usability/i18n/es.po b/stock_picking_package_usability/i18n/es.po new file mode 100644 index 0000000000..664d4b4faf --- /dev/null +++ b/stock_picking_package_usability/i18n/es.po @@ -0,0 +1,150 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_picking_package_usability +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-09-27 08:46+0000\n" +"PO-Revision-Date: 2024-09-27 08:46+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_stock_picking__packages_qty_weight +msgid "# Packages" +msgstr "# Paquetes" + +#. module: stock_picking_package_usability +#: model_terms:ir.ui.view,arch_db:stock_picking_package_usability.view_picking_form +msgid "Create Packs" +msgstr "Crear paquetes" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_stock_quant_package__partner_id +msgid "Delivery Address" +msgstr "Dirección de entrega" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_product_packaging__max_weight +msgid "Max Weight" +msgstr "Peso máximo" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_stock_quant_package__max_weight +msgid "Maximum Weight" +msgstr "Peso máximo" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_stock_picking__qty_packages +msgid "Number of Packages" +msgstr "Número de paquetes" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_product_packaging__height +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_stock_quant_package__height +msgid "Pack Height" +msgstr "Altura" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_product_packaging__packaging_length +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_stock_quant_package__pack_length +msgid "Pack Length" +msgstr "Largo" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_product_packaging__width +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_stock_quant_package__width +msgid "Pack Width" +msgstr "Ancho" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_stock_move_line__packaging_id +msgid "Package Type" +msgstr "Tipo de Paquete" + +#. module: stock_picking_package_usability +#. odoo-python +#: code:addons/stock_picking_package_usability/models/stock_picking.py:0 +#: model:ir.model,name:stock_picking_package_usability.model_stock_quant_package +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_stock_picking__quant_package_ids +#: model_terms:ir.ui.view,arch_db:stock_picking_package_usability.view_picking_form +#, python-format +msgid "Packages" +msgstr "Paquetes" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_stock_picking__packages_qty +msgid "Packages Quantity" +msgstr "Número de paquetes" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_stock_picking__packages_volume +#: model_terms:ir.ui.view,arch_db:stock_picking_package_usability.view_picking_withcarrier_out_form +msgid "Packages Volume" +msgstr "Volumen de paquetes" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_stock_picking__packages_weight +#: model_terms:ir.ui.view,arch_db:stock_picking_package_usability.view_picking_withcarrier_out_form +msgid "Packages Weight" +msgstr "Peso de paquetes" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,help:stock_picking_package_usability.field_stock_move_line__packaging_id +msgid "" +"Packaging of the product, used for internal logisticstransfers, put-away " +"rules, ..." +msgstr "" +"Embalaje del producto, utilizado para traslados logísticos internos, normas de almacenamiento, ..." +#. module: stock_picking_package_usability +#: model:ir.model,name:stock_picking_package_usability.model_stock_move_line +msgid "Product Moves (Stock Move Line)" +msgstr "Movimientos de Producto (Stock Move Line)" + +#. module: stock_picking_package_usability +#: model:ir.model,name:stock_picking_package_usability.model_product_packaging +msgid "Product Packaging" +msgstr "Empaquetado del producto" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_stock_move_line__shipping_weight +msgid "Shipping Weight" +msgstr "Peso del envío" + +#. module: stock_picking_package_usability +#: model_terms:ir.ui.view,arch_db:stock_picking_package_usability.stock_quant_package_view_tree +#: model_terms:ir.ui.view,arch_db:stock_picking_package_usability.view_quant_package_tree +msgid "Total Shipping Weight" +msgstr "Peso total de envío" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,help:stock_picking_package_usability.field_stock_move_line__shipping_weight +msgid "Total weight of the package." +msgstr "Peso total de los paquetes." + +#. module: stock_picking_package_usability +#: model_terms:ir.ui.view,arch_db:stock_picking_package_usability.stock_quant_package_view_tree +msgid "Totat Volume" +msgstr "Volumen total" + +#. module: stock_picking_package_usability +#: model:ir.model,name:stock_picking_package_usability.model_stock_picking +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_stock_quant_package__picking_id +msgid "Transfer" +msgstr "Albarán" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_stock_picking__volume_uom_name +msgid "Volume UOM" +msgstr "Volumen UdM" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_stock_move_line__weight_uom_name +msgid "Weight UOM" +msgstr "Peso UdM" diff --git a/stock_picking_package_usability/i18n/stock_picking_package_usability.pot b/stock_picking_package_usability/i18n/stock_picking_package_usability.pot new file mode 100644 index 0000000000..f14b5d7265 --- /dev/null +++ b/stock_picking_package_usability/i18n/stock_picking_package_usability.pot @@ -0,0 +1,150 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_picking_package_usability +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-09-27 08:46+0000\n" +"PO-Revision-Date: 2024-09-27 08:46+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_stock_picking__packages_qty_weight +msgid "# Packages" +msgstr "" + +#. module: stock_picking_package_usability +#: model_terms:ir.ui.view,arch_db:stock_picking_package_usability.view_picking_form +msgid "Create Packs" +msgstr "" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_stock_quant_package__partner_id +msgid "Delivery Address" +msgstr "" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_product_packaging__max_weight +msgid "Max Weight" +msgstr "" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_stock_quant_package__max_weight +msgid "Maximum Weight" +msgstr "" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_stock_picking__qty_packages +msgid "Number of Packages" +msgstr "" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_product_packaging__height +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_stock_quant_package__height +msgid "Pack Height" +msgstr "" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_product_packaging__packaging_length +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_stock_quant_package__pack_length +msgid "Pack Length" +msgstr "" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_product_packaging__width +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_stock_quant_package__width +msgid "Pack Width" +msgstr "" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_stock_move_line__packaging_id +msgid "Package Type" +msgstr "" + +#. module: stock_picking_package_usability +#. odoo-python +#: code:addons/stock_picking_package_usability/models/stock_picking.py:0 +#: model:ir.model,name:stock_picking_package_usability.model_stock_quant_package +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_stock_picking__quant_package_ids +#: model_terms:ir.ui.view,arch_db:stock_picking_package_usability.view_picking_form +#, python-format +msgid "Packages" +msgstr "" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_stock_picking__packages_qty +msgid "Packages Quantity" +msgstr "" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_stock_picking__packages_volume +#: model_terms:ir.ui.view,arch_db:stock_picking_package_usability.view_picking_withcarrier_out_form +msgid "Packages Volume" +msgstr "" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_stock_picking__packages_weight +#: model_terms:ir.ui.view,arch_db:stock_picking_package_usability.view_picking_withcarrier_out_form +msgid "Packages Weight" +msgstr "" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,help:stock_picking_package_usability.field_stock_move_line__packaging_id +msgid "" +"Packaging of the product, used for internal logisticstransfers, put-away " +"rules, ..." +msgstr "" + +#. module: stock_picking_package_usability +#: model:ir.model,name:stock_picking_package_usability.model_stock_move_line +msgid "Product Moves (Stock Move Line)" +msgstr "" + +#. module: stock_picking_package_usability +#: model:ir.model,name:stock_picking_package_usability.model_product_packaging +msgid "Product Packaging" +msgstr "" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_stock_move_line__shipping_weight +msgid "Shipping Weight" +msgstr "" + +#. module: stock_picking_package_usability +#: model_terms:ir.ui.view,arch_db:stock_picking_package_usability.stock_quant_package_view_tree +#: model_terms:ir.ui.view,arch_db:stock_picking_package_usability.view_quant_package_tree +msgid "Total Shipping Weight" +msgstr "" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,help:stock_picking_package_usability.field_stock_move_line__shipping_weight +msgid "Total weight of the package." +msgstr "" + +#. module: stock_picking_package_usability +#: model_terms:ir.ui.view,arch_db:stock_picking_package_usability.stock_quant_package_view_tree +msgid "Totat Volume" +msgstr "" + +#. module: stock_picking_package_usability +#: model:ir.model,name:stock_picking_package_usability.model_stock_picking +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_stock_quant_package__picking_id +msgid "Transfer" +msgstr "" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_stock_picking__volume_uom_name +msgid "Volume UOM" +msgstr "" + +#. module: stock_picking_package_usability +#: model:ir.model.fields,field_description:stock_picking_package_usability.field_stock_move_line__weight_uom_name +msgid "Weight UOM" +msgstr "" diff --git a/stock_picking_package_usability/models/__init__.py b/stock_picking_package_usability/models/__init__.py new file mode 100644 index 0000000000..9522caf1e0 --- /dev/null +++ b/stock_picking_package_usability/models/__init__.py @@ -0,0 +1,4 @@ +from . import stock_picking +from . import stock_quant_package +from . import stock_move_line +from . import product_packaging diff --git a/stock_picking_package_usability/models/product_packaging.py b/stock_picking_package_usability/models/product_packaging.py new file mode 100644 index 0000000000..ba88e5d315 --- /dev/null +++ b/stock_picking_package_usability/models/product_packaging.py @@ -0,0 +1,12 @@ +# Copyright 2021 Berezi Amubieta - AvanzOSC +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from odoo import fields, models + + +class ProductPackaging(models.Model): + _inherit = "product.packaging" + + packaging_length = fields.Float(string="Pack Length") + width = fields.Float(string="Pack Width") + height = fields.Float(string="Pack Height") + max_weight = fields.Float() diff --git a/stock_picking_package_usability/models/stock_move_line.py b/stock_picking_package_usability/models/stock_move_line.py new file mode 100644 index 0000000000..3b8a71fb93 --- /dev/null +++ b/stock_picking_package_usability/models/stock_move_line.py @@ -0,0 +1,55 @@ +# Copyright 2021 Berezi Amubieta - AvanzOSC +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from odoo import api, fields, models + + +class StockMoveLine(models.Model): + _inherit = "stock.move.line" + + packaging_id = fields.Many2one( + string="Package Type", + comodel_name="product.packaging", + related="result_package_id.product_packaging_id", + store=True, + readonly=False, + ) + shipping_weight = fields.Float( + string="Shipping Weight", + related="result_package_id.shipping_weight", + readonly=False, + ) + weight_uom_name = fields.Char( + string="Weight UOM", related="result_package_id.weight_uom_name", store=True + ) + + def write(self, values): + result = super().write(values) + if "result_package_id" in values: + for line in self: + line.result_package_id.picking_id = line.picking_id.id + line.result_package_id.height = line.packaging_id.height + line.result_package_id.width = line.packaging_id.width + line.result_package_id.pack_length = line.packaging_id.packaging_length + line.result_package_id.max_weight = line.packaging_id.max_weight + if "packaging_id" in values: + for line in self: + if not line.result_package_id.height: + line.result_package_id.height = line.packaging_id.height + if not line.result_package_id.width: + line.result_package_id.width = line.packaging_id.width + if not line.result_package_id.pack_length: + line.result_package_id.pack_length = ( + line.packaging_id.packaging_length + ) + if not line.result_package_id.max_weight: + line.result_package_id.max_weight = line.packaging_id.max_weight + return result + + @api.model_create_multi + def create(self, vals_list): + for vals in vals_list: + if "move_id" in vals: + move = self.env["stock.move"].browse(vals.get("move_id")) + if move and move.product_packaging_id: + vals["packaging_id"] = move.product_packaging_id.id + return super().create(vals_list) diff --git a/stock_picking_package_usability/models/stock_picking.py b/stock_picking_package_usability/models/stock_picking.py new file mode 100644 index 0000000000..2fb840817e --- /dev/null +++ b/stock_picking_package_usability/models/stock_picking.py @@ -0,0 +1,87 @@ +# Copyright 2021 Berezi Amubieta - AvanzOSC +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from odoo import _, api, fields, models + + +class StockPicking(models.Model): + _inherit = "stock.picking" + + @api.depends("quant_package_ids", "quant_package_ids.shipping_weight") + def _compute_packages_weight(self): + for picking in self: + picking.packages_weight = sum( + picking.quant_package_ids.mapped("shipping_weight") + ) + + @api.depends("quant_package_ids", "quant_package_ids.volume") + def _compute_packages_volume(self): + for picking in self: + picking.packages_volume = sum(picking.quant_package_ids.mapped("volume")) + + @api.depends("quant_package_ids") + def _compute_packages_qty(self): + for picking in self: + picking.packages_qty = len(picking.quant_package_ids) + + def _compute_volume_uom_name(self): + for package in self: + if package.quant_package_ids: + package.volume_uom_name = package.quant_package_ids[0].volume_uom_name + + @api.depends("packages_qty", "packages_weight", "weight_uom_name") + def _compute_packages_qty_weight(self): + for picking in self: + picking.packages_qty_weight = "{} {} {} {}".format( + picking.packages_qty, + "-", + picking.packages_weight, + picking.weight_uom_name, + ) + + quant_package_ids = fields.One2many( + string="Packages", comodel_name="stock.quant.package", inverse_name="picking_id" + ) + packages_qty_weight = fields.Char( + string="# Packages", compute="_compute_packages_qty_weight", store=True + ) + qty_packages = fields.Integer(string="Number of Packages") + packages_weight = fields.Float(compute="_compute_packages_weight", store=True) + packages_volume = fields.Float(compute="_compute_packages_volume", store=True) + volume_uom_name = fields.Char( + string="Volume UOM", compute="_compute_volume_uom_name", store=True + ) + packages_qty = fields.Integer( + string="Packages Quantity", compute="_compute_packages_qty", store=True + ) + + def action_view_package(self): + context = self.env.context.copy() + context.update({"default_picking_id": self.id}) + return { + "name": _("Packages"), + "view_mode": "tree", + "res_model": "stock.quant.package", + "domain": [("id", "in", self.quant_package_ids.ids)], + "type": "ir.actions.act_window", + "view_id": self.env.ref( + "stock_picking_package_usability.stock_quant_package_view_tree" + ).id, + "context": context, + } + + def action_create_package(self): + self.ensure_one() + pack_vals = {"picking_id": self.id} + for i in range(1, self.qty_packages + 1): + name = "{} {} {:0>3}".format(self.name, "-", i) + pack_vals.update({"name": name}) + self.env["stock.quant.package"].create(pack_vals) + + def _put_in_pack(self, move_line_ids, create_package_level=True): + move_line_ids = move_line_ids.filtered(lambda x: not x.result_package_id) + if move_line_ids: + result = super()._put_in_pack(move_line_ids, create_package_level=True) + result.name = "{} {} {:0>3}".format( + self.name, "-", len(self.quant_package_ids) + ) + return result diff --git a/stock_picking_package_usability/models/stock_quant_package.py b/stock_picking_package_usability/models/stock_quant_package.py new file mode 100644 index 0000000000..4fdaabe0a0 --- /dev/null +++ b/stock_picking_package_usability/models/stock_quant_package.py @@ -0,0 +1,46 @@ +# Copyright 2021 Berezi Amubieta - AvanzOSC +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from odoo import api, fields, models + + +class StockQuantPackage(models.Model): + _inherit = "stock.quant.package" + + picking_id = fields.Many2one(string="Transfer", comodel_name="stock.picking") + max_weight = fields.Float( + string="Maximum Weight", related="product_packaging_id.max_weight", store=True + ) + pack_length = fields.Float() + width = fields.Float(string="Pack Width") + height = fields.Float(string="Pack Height") + partner_id = fields.Many2one( + string="Delivery Address", + comodel_name="res.partner", + related="picking_id.partner_id", + store=True, + ) + + @api.onchange("product_packaging_id") + def onchange_dimension(self): + if self.product_packaging_id.height: + self.height = self.product_packaging_id.height + if self.product_packaging_id.width: + self.width = self.product_packaging_id.width + if self.product_packaging_id.packaging_length: + self.pack_length = self.product_packaging_id.packaging_length + if self.product_packaging_id.length_uom_id: + self.length_uom_id = self.product_packaging_id.length_uom_id.id + if self.product_packaging_id.volume_uom_id: + self.volume_uom_id = self.product_packaging_id.volume_uom_id.id + if self.product_packaging_id.weight_uom_id: + self.weight_uom_id = self.product_packaging_id.weight_uom_id.id + if self.product_packaging_id.volume: + self.volume = self.product_packaging_id.volume + + @api.model + def create(self, vals): + line = super().create(vals) + line.name = "{} {} {:0>3}".format( + line.picking_id.name, "-", len(line.picking_id.quant_package_ids) + ) + return line diff --git a/stock_picking_package_usability/views/product_packaging_views.xml b/stock_picking_package_usability/views/product_packaging_views.xml new file mode 100644 index 0000000000..679604db1b --- /dev/null +++ b/stock_picking_package_usability/views/product_packaging_views.xml @@ -0,0 +1,19 @@ + + + + product.packaging + + + + + + + + + + + + + + + diff --git a/stock_picking_package_usability/views/stock_move_line_views.xml b/stock_picking_package_usability/views/stock_move_line_views.xml new file mode 100644 index 0000000000..7111ddb549 --- /dev/null +++ b/stock_picking_package_usability/views/stock_move_line_views.xml @@ -0,0 +1,40 @@ + + + + stock.move.line + + + + [('picking_id','=',picking_id)] + + + + + + + + + + + stock.move.line + + + + [('picking_id','=',picking_id)] + + + + + + stock.move.line + + + + [('picking_id','=',picking_id)] + + + + diff --git a/stock_picking_package_usability/views/stock_picking_views.xml b/stock_picking_package_usability/views/stock_picking_views.xml new file mode 100644 index 0000000000..2f8267691b --- /dev/null +++ b/stock_picking_package_usability/views/stock_picking_views.xml @@ -0,0 +1,62 @@ + + + + stock.picking + + +
+ +
+ + +