diff --git a/stock_request_kanban/README.rst b/stock_request_kanban/README.rst new file mode 100644 index 00000000..e45b9cb3 --- /dev/null +++ b/stock_request_kanban/README.rst @@ -0,0 +1,158 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + +==================== +Stock Request kanban +==================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:86e9cfe3e58bfde9f939700f3580674f21d1c7d7356e47a6f80ec990a095c8f8 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/license-LGPL--3-blue.png + :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html + :alt: License: LGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fstock--logistics--request-lightgray.png?logo=github + :target: https://github.com/OCA/stock-logistics-request/tree/19.0/stock_request_kanban + :alt: OCA/stock-logistics-request +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/stock-logistics-request-19-0/stock-logistics-request-19-0-stock_request_kanban + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/stock-logistics-request&target_branch=19.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +On most companies there are products that must be purchased often but +cannot be stored as a usual product because no consumption moves are +made. Usually, they are stored as consumables or putaway rules are +defined. In both cases, reordering rules cannot be used. This module +allows to use stock request as reordering rules for this kind of +products. + +It is created following the concept of lean kanban cards. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +If the barcode does not contain a CRC check digit on the kanban card, +you should: + +- Access on Development mode +- Access 'Settings / Technical / Parameters / System Parameters' +- Create a parameter with name 'stock_request_kanban.crc' and set it to + value to 0 + +If the barcode contains a CRC check digit and you want to ignore it: + +- Create a paramenter with name 'stock_request_kanban.ignore_crc' and + set it to value to 1 + +If you want to change the format of the QR, you should: + +- Access on Development mode +- Access 'Settings / Technical / Parameters / System Parameters' +- Create a parameter with name 'stock_request_kanban.barcode_format' and + set the format of the barcode + +Usage +===== + +Creation +-------- + +- Go to 'Stock Requests / Stock Requests Kanban' and create a new + Kanban. +- Indicate a product, quantity and location. +- Press 'Save'. +- Print the kanban and put it in the storage of the product + +Request kanban +-------------- + +This should be used if you want to create the kanban when the card is +consumed. + +- Once the product is consumed, take the card +- Go to 'Stock Requests / Order Kanban Card' +- Scan the card +- The stock request is created + +Request kanban batch +-------------------- + +This should be used when you will store the cards and create request +orders for kanbans later. + +- Once the product is consumed, take the card and store it +- Create a store request order +- Press the scan button +- Scan all the pending kanban cards + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* Creu Blanca +* ForgeFlow + +Contributors +------------ + +- Enric Tobella +- Kitti Upariphutthiphong +- Marco Colombo < + +Maintainers +----------- + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-etobella| image:: https://github.com/etobella.png?size=40px + :target: https://github.com/etobella + :alt: etobella +.. |maintainer-LoisRForgeFlow| image:: https://github.com/LoisRForgeFlow.png?size=40px + :target: https://github.com/LoisRForgeFlow + :alt: LoisRForgeFlow + +Current `maintainers `__: + +|maintainer-etobella| |maintainer-LoisRForgeFlow| + +This module is part of the `OCA/stock-logistics-request `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/stock_request_kanban/__init__.py b/stock_request_kanban/__init__.py new file mode 100644 index 00000000..22ba1454 --- /dev/null +++ b/stock_request_kanban/__init__.py @@ -0,0 +1,5 @@ +# Copyright 2018 Creu Blanca +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +from . import models +from . import wizard diff --git a/stock_request_kanban/__manifest__.py b/stock_request_kanban/__manifest__.py new file mode 100644 index 00000000..6360430d --- /dev/null +++ b/stock_request_kanban/__manifest__.py @@ -0,0 +1,31 @@ +# Copyright 2018-22 Creu Blanca +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +{ + "name": "Stock Request kanban", + "version": "19.0.1.0.0", + "category": "Warehouse Management", + "website": "https://github.com/OCA/stock-logistics-request", + "author": "Creu Blanca, ForgeFlow, Odoo Community Association (OCA)", + "maintainers": ["etobella", "LoisRForgeFlow"], + "license": "LGPL-3", + "summary": "Adds a stock request order, and takes stock requests as lines", + "depends": ["stock_request", "barcodes"], + "data": [ + "data/stock_request_sequence_data.xml", + "report/report_paper_format.xml", + "wizard/wizard_stock_inventory_kanban_views.xml", + "wizard/wizard_stock_request_kanban_views.xml", + "wizard/wizard_stock_request_order_kanban_views.xml", + "views/stock_request_order_views.xml", + "views/stock_request_kanban_views.xml", + "views/stock_inventory_kanban_views.xml", + "views/stock_request_menu.xml", + "views/stock_request_views.xml", + "views/product_views.xml", + "report/stock_request_kanban_templates.xml", + "security/ir.model.access.csv", + ], + "installable": True, + "application": False, +} diff --git a/stock_request_kanban/data/stock_request_sequence_data.xml b/stock_request_kanban/data/stock_request_sequence_data.xml new file mode 100644 index 00000000..49e8fa6a --- /dev/null +++ b/stock_request_kanban/data/stock_request_sequence_data.xml @@ -0,0 +1,17 @@ + + + + Stock Request Kanban + stock.request.kanban + KB + 5 + + + + Stock Inventory Kanban + stock.inventory.kanban + IKB + 5 + + + diff --git a/stock_request_kanban/i18n/es.po b/stock_request_kanban/i18n/es.po new file mode 100644 index 00000000..177916a1 --- /dev/null +++ b/stock_request_kanban/i18n/es.po @@ -0,0 +1,777 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_request_kanban +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2018-09-06 11:53+0000\n" +"Last-Translator: Enric Tobella \n" +"Language-Team: none\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.1.1\n" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_product_product__kanban_card_count +#: model:ir.model.fields,field_description:stock_request_kanban.field_product_template__kanban_card_count +#, fuzzy +msgid "# Kanban Cards" +msgstr "Tarjetas Kanban" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_needaction +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_needaction +msgid "Action Needed" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__active +msgid "Active" +msgstr "Activo" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_ids +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_ids +#, fuzzy +msgid "Activities" +msgstr "Activo" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_exception_decoration +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_exception_decoration +msgid "Activity Exception Decoration" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_state +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_state +#, fuzzy +msgid "Activity State" +msgstr "Estado del Status" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_type_icon +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_type_icon +msgid "Activity Type Icon" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.actions.act_window,name:stock_request_kanban.wizard_stock_inventory_kanban_action +#: model:ir.actions.act_window,name:stock_request_kanban.wizard_stock_request_kanban_action +#: model:ir.actions.act_window,name:stock_request_kanban.wizard_stock_request_order_kanban_action +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.wizard_stock_inventory_kanban_form +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.wizard_stock_request_kanban_form +msgid "Add Kanban" +msgstr "Añadir Kanban" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_request_kanban.py:0 +#, python-format +msgid "Added kanban %(kanban)s for product %(product)s" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__allow_virtual_location +msgid "Allow Virtual locations on Stock Requests" +msgstr "" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.stock_request_kanban_search +msgid "Archived" +msgstr "Archivado" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_attachment_count +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_attachment_count +msgid "Attachment Count" +msgstr "" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_request_kanban_abstract.py:0 +#, python-format +msgid "" +"Barcode %s does not correspond to any Kanban. Try with another barcode or " +"press Close to finish scanning." +msgstr "" +"El código de barras %s no corresponde a ningún Kanban. Prueba otro código de " +"barras o haz click en Cerrar para acabar de escanear." + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_inventory_kanban.py:0 +#, fuzzy, python-format +msgid "Barcode %s is already scanned" +msgstr "El código %s ya está en la petición" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_inventory_kanban.py:0 +#, fuzzy, python-format +msgid "Barcode %s is not in the inventory" +msgstr "El código %s ya está en la petición" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_request_order_kanban.py:0 +#, python-format +msgid "Barcode %s is on the order" +msgstr "El código %s ya está en la petición" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban___barcode_scanned +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban___barcode_scanned +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban_abstract___barcode_scanned +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban___barcode_scanned +#, fuzzy +msgid "Barcode Scanned" +msgstr "El código %s ya está en la petición" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/models/stock_request_kanban.py:0 +#, python-format +msgid "CRC is not valid" +msgstr "El CRC no es válido" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Cancel" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields.selection,name:stock_request_kanban.selection__stock_inventory_kanban__state__cancelled +msgid "Cancelled" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__allowed_uom_categ_id +msgid "Category" +msgstr "" + +#. module: stock_request_kanban +#: model_terms:ir.actions.act_window,help:stock_request_kanban.stock_inventory_kanban_action +#, fuzzy +msgid "Click to add a Stock Inventory Kanban." +msgstr "Haz click para añadir un Kanban." + +#. module: stock_request_kanban +#: model_terms:ir.actions.act_window,help:stock_request_kanban.stock_request_kanban_action +msgid "Click to add a Stock Request Kanban." +msgstr "Haz click para añadir un Kanban." + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.wizard_stock_inventory_kanban_form +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.wizard_stock_request_kanban_form +msgid "Close" +msgstr "Cerrar" + +#. module: stock_request_kanban +#: model:ir.model.fields.selection,name:stock_request_kanban.selection__stock_inventory_kanban__state__closed +#, fuzzy +msgid "Closed" +msgstr "Cerrar" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__company_id +msgid "Company" +msgstr "" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_request_order_kanban.py:0 +#, python-format +msgid "Company must be the same" +msgstr "La Compañía debe ser la misma" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__allowed_uom_categ_id +msgid "" +"Conversion between Units of Measure can only occur if they belong to the " +"same category. The conversion will be made based on the ratios." +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__create_uid +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__create_uid +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__create_uid +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__create_uid +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__create_date +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__create_date +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__create_date +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__create_date +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__create_date +msgid "Created on" +msgstr "Creado el" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__display_name +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__display_name +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__display_name +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__display_name +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__display_name +msgid "Display Name" +msgstr "Nombre mostrado" + +#. module: stock_request_kanban +#: model:ir.model.fields.selection,name:stock_request_kanban.selection__stock_inventory_kanban__state__draft +msgid "Draft" +msgstr "" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Finish" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields.selection,name:stock_request_kanban.selection__stock_inventory_kanban__state__finished +msgid "Finished" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_follower_ids +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_follower_ids +msgid "Followers" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_partner_ids +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_partner_ids +msgid "Followers (Partners)" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__activity_type_icon +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__activity_type_icon +msgid "Font awesome icon e.g. fa-tasks" +msgstr "" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.stock_request_kanban_search +msgid "Group By" +msgstr "Agrupar por" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__has_message +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__has_message +msgid "Has Message" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__id +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__id +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__id +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__id +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__id +msgid "ID" +msgstr "ID" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_exception_icon +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_exception_icon +msgid "Icon" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__activity_exception_icon +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__activity_exception_icon +msgid "Icon to indicate an exception activity." +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__message_needaction +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__message_needaction +msgid "If checked, new messages require your attention." +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__message_has_error +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields.selection,name:stock_request_kanban.selection__stock_inventory_kanban__state__in_progress +msgid "In progress" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.ui.menu,name:stock_request_kanban.menu_wizard_stock_inventory_kanban +msgid "Inventory" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__inventory_kanban_id +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Inventory Kanban" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_stock_inventory_kanban +msgid "Inventory for Kanban" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_is_follower +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_is_follower +msgid "Is Follower" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__kanban_ids +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request__kanban_id +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__kanban_id +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__kanban_id +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban_abstract__kanban_id +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__kanban_id +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Kanban" +msgstr "Kanban" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.product_product_form_view_kanban_card_button +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.product_template_form_view_bom_button +#, fuzzy +msgid "Kanban Cards" +msgstr "Tarjetas Kanban" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.stock_request_kanban_kanban_view +#, fuzzy +msgid "Kanban Image" +msgstr "Tarjetas Kanban" + +#. module: stock_request_kanban +#: model:ir.ui.menu,name:stock_request_kanban.stock_request_kanban_menu +msgid "Kanban cards" +msgstr "Tarjetas Kanban" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__write_uid +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__write_uid +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__write_uid +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__write_uid +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__write_uid +msgid "Last Updated by" +msgstr "Actualizado por última vez por" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__write_date +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__write_date +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__write_date +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__write_date +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__write_date +msgid "Last Updated on" +msgstr "Actualizado por última vez el" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_request_order_kanban.py:0 +#, python-format +msgid "Lines only can be added on orders with draft state" +msgstr "Sólo se pueden añadir líneas en ordenes en estado borrador" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__location_ids +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__location_id +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.stock_request_kanban_search +msgid "Location" +msgstr "Localización" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_request_order_kanban.py:0 +#, python-format +msgid "Location must be the same" +msgstr "La localización debe coincidir" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_has_error +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_has_error +msgid "Message Delivery error" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_ids +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_ids +msgid "Messages" +msgstr "" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Missing" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__missing_kanban_ids +#, fuzzy +msgid "Missing Kanban" +msgstr "Imprimir kanban" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__count_missing_kanbans +msgid "Missing Kanbans" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__procurement_group_id +msgid "" +"Moves created through this stock request will be put in this procurement " +"group. If none is given, the moves generated by procurement rules will be " +"grouped into one big picking." +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__my_activity_date_deadline +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__my_activity_date_deadline +msgid "My Activity Deadline" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__name +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__name +msgid "Name" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_date_deadline +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_summary +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_summary +msgid "Next Activity Summary" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_type_id +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_type_id +msgid "Next Activity Type" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_needaction_counter +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_needaction_counter +msgid "Number of Actions" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_has_error_counter +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_has_error_counter +msgid "Number of errors" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__message_needaction_counter +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__message_has_error_counter +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__order_id +msgid "Order" +msgstr "Pedido" + +#. module: stock_request_kanban +#: model:ir.actions.report,name:stock_request_kanban.action_report_kanban +msgid "Print kanban" +msgstr "Imprimir kanban" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Print missing" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__procurement_group_id +#, fuzzy +msgid "Procurement Group" +msgstr "El grupo de reestablecimiento debe coincidir" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_request_order_kanban.py:0 +#, python-format +msgid "Procurement group must be the same" +msgstr "El grupo de reestablecimiento debe coincidir" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_product_template +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__product_id +msgid "Product" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__product_template_id +msgid "Product Template" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__product_uom_id +msgid "Product Unit of Measure" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_product_product +msgid "Product Variant" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__product_ids +msgid "Products" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__product_uom_qty +msgid "Quantity" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__product_qty +msgid "Quantity in the default UoM of the product" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__product_uom_qty +msgid "Quantity, specified in the unit of measure indicated in the request." +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__product_qty +msgid "Real Quantity" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.ui.menu,name:stock_request_kanban.menu_wizard_stock_request_kanban +msgid "Request from Kanban cards" +msgstr "Solicitar desde tarjetas Kanban" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_user_id +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_user_id +msgid "Responsible User" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__route_id +msgid "Route" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__route_ids +msgid "Routes" +msgstr "" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.stock_request_order_form +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Scan" +msgstr "Escanear" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_request_tree +#, fuzzy +msgid "Scan Kanban" +msgstr "Añadir Kanban" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +#, fuzzy +msgid "Scanned" +msgstr "Escanear" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__scanned_kanban_ids +#, fuzzy +msgid "Scanned Kanban" +msgstr "Añadir Kanban" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Set to draft" +msgstr "" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Start" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__state +#, fuzzy +msgid "State" +msgstr "Status" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__status +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__status +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban_abstract__status +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__status +msgid "Status" +msgstr "Status" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__status_state +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__status_state +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban_abstract__status_state +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__status_state +msgid "Status State" +msgstr "Estado del Status" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__activity_state +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__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_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +#, fuzzy +msgid "Stock Inventories" +msgstr "Solicitud de existencias" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_wizard_stock_inventory_kanban +#, fuzzy +msgid "Stock Inventory Kanban Wizard" +msgstr "Kanbans de Solicitud de Existencias" + +#. module: stock_request_kanban +#: model:ir.actions.act_window,name:stock_request_kanban.stock_inventory_kanban_action +#, fuzzy +msgid "Stock Inventory Kanbans" +msgstr "Kanbans de Solicitud de Existencias" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_stock_request +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__stock_request_id +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__stock_request_id +msgid "Stock Request" +msgstr "Solicitud de existencias" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_request_kanban_form +msgid "Stock Request Kanban" +msgstr "Kanban de Solicitud de Existencias" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_wizard_stock_request_kanban_abstract +#, fuzzy +msgid "Stock Request Kanban Abstract Wizard" +msgstr "Kanbans de Solicitud de Existencias" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_wizard_stock_request_kanban +#, fuzzy +msgid "Stock Request Kanban Wizard" +msgstr "Kanban de Solicitud de Existencias" + +#. module: stock_request_kanban +#: model:ir.actions.act_window,name:stock_request_kanban.stock_request_kanban_action +msgid "Stock Request Kanbans" +msgstr "Kanbans de Solicitud de Existencias" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_wizard_stock_request_order_kanban +#, fuzzy +msgid "Stock Request Order Kanban Wizard" +msgstr "Kanban de Solicitud de Existencias" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_request_kanban_form +msgid "Stock Requests" +msgstr "Solicitudes de existencias" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.stock_request_kanban_search +msgid "Stock Requests Kanban" +msgstr "Kanban de Solicitudes de Existencias" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__activity_exception_decoration +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__activity_exception_decoration +msgid "Type of the exception activity on record." +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_wizard_stock_inventory_kanban___barcode_scanned +#: model:ir.model.fields,help:stock_request_kanban.field_wizard_stock_request_kanban___barcode_scanned +#: model:ir.model.fields,help:stock_request_kanban.field_wizard_stock_request_kanban_abstract___barcode_scanned +#: model:ir.model.fields,help:stock_request_kanban.field_wizard_stock_request_order_kanban___barcode_scanned +msgid "Value of the last barcode scanned." +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__warehouse_ids +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__warehouse_id +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.stock_request_kanban_search +msgid "Warehouse" +msgstr "Almacén" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_request_order_kanban.py:0 +#, python-format +msgid "Warehouse must be the same" +msgstr "El almacén debe coincidir" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__website_message_ids +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__website_message_ids +msgid "Website Messages" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__website_message_ids +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__website_message_ids +msgid "Website communication history" +msgstr "" + +#~ msgid "Last Modified on" +#~ msgstr "Última modificación el" + +#, python-format +#~ msgid "Added kanban %s for product %s" +#~ msgstr "Se ha añadido el kanban %s para el product %s" + +#, fuzzy +#~ msgid "Planned" +#~ msgstr "Escanear" + +#, fuzzy +#~ msgid "wizard.stock.inventory.kanban" +#~ msgstr "wizard.stock.request.kanban" + +#~ msgid "wizard.stock.request.kanban" +#~ msgstr "wizard.stock.request.kanban" + +#~ msgid "wizard.stock.request.kanban.abstract" +#~ msgstr "wizard.stock.request.kanban.abstract" + +#~ msgid "wizard.stock.request.order.kanban" +#~ msgstr "wizard.stock.request.order.kanban" diff --git a/stock_request_kanban/i18n/it.po b/stock_request_kanban/i18n/it.po new file mode 100644 index 00000000..ae89a82a --- /dev/null +++ b/stock_request_kanban/i18n/it.po @@ -0,0 +1,744 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_request_kanban +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-09-18 09:06+0000\n" +"Last-Translator: mymage \n" +"Language-Team: none\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.6.2\n" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_product_product__kanban_card_count +#: model:ir.model.fields,field_description:stock_request_kanban.field_product_template__kanban_card_count +msgid "# Kanban Cards" +msgstr "N° schede Kanban" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_needaction +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_needaction +msgid "Action Needed" +msgstr "Azione richiesta" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__active +msgid "Active" +msgstr "Attiva" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_ids +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_ids +msgid "Activities" +msgstr "Attività" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_exception_decoration +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_exception_decoration +msgid "Activity Exception Decoration" +msgstr "Decorazione eccezione attività" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_state +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_state +msgid "Activity State" +msgstr "Stato attività" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_type_icon +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_type_icon +msgid "Activity Type Icon" +msgstr "Icona tipo attività" + +#. module: stock_request_kanban +#: model:ir.actions.act_window,name:stock_request_kanban.wizard_stock_inventory_kanban_action +#: model:ir.actions.act_window,name:stock_request_kanban.wizard_stock_request_kanban_action +#: model:ir.actions.act_window,name:stock_request_kanban.wizard_stock_request_order_kanban_action +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.wizard_stock_inventory_kanban_form +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.wizard_stock_request_kanban_form +msgid "Add Kanban" +msgstr "Aggiungi Kanban" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_request_kanban.py:0 +#, python-format +msgid "Added kanban %(kanban)s for product %(product)s" +msgstr "Kanban %(kanban)s aggiunto per il prodotto %(product)s" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__allow_virtual_location +msgid "Allow Virtual locations on Stock Requests" +msgstr "Consenti ubicazioni virtuali su richieste di magazzino" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.stock_request_kanban_search +msgid "Archived" +msgstr "In archivio" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_attachment_count +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_attachment_count +msgid "Attachment Count" +msgstr "Conteggio allegati" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_request_kanban_abstract.py:0 +#, python-format +msgid "" +"Barcode %s does not correspond to any Kanban. Try with another barcode or " +"press Close to finish scanning." +msgstr "" +"Il codice a barre %s non corrisponde a nessun Kanban. Provare con un altro " +"codice a barre o fare clic su Chiudi per terminare la lettura." + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_inventory_kanban.py:0 +#, python-format +msgid "Barcode %s is already scanned" +msgstr "Il codice a barre %s è già stato letto" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_inventory_kanban.py:0 +#, python-format +msgid "Barcode %s is not in the inventory" +msgstr "il codice a barre %s non è nell'inventario" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_request_order_kanban.py:0 +#, python-format +msgid "Barcode %s is on the order" +msgstr "Il codice a barre %s è nell'ordine" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban___barcode_scanned +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban___barcode_scanned +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban_abstract___barcode_scanned +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban___barcode_scanned +msgid "Barcode Scanned" +msgstr "Codice a barre letto" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/models/stock_request_kanban.py:0 +#, python-format +msgid "CRC is not valid" +msgstr "Il CRC non è valido" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Cancel" +msgstr "Annulla" + +#. module: stock_request_kanban +#: model:ir.model.fields.selection,name:stock_request_kanban.selection__stock_inventory_kanban__state__cancelled +msgid "Cancelled" +msgstr "Annullato" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__allowed_uom_categ_id +msgid "Category" +msgstr "Categoria" + +#. module: stock_request_kanban +#: model_terms:ir.actions.act_window,help:stock_request_kanban.stock_inventory_kanban_action +msgid "Click to add a Stock Inventory Kanban." +msgstr "Fare clic per aggiungere un Kanban inventario giacenza." + +#. module: stock_request_kanban +#: model_terms:ir.actions.act_window,help:stock_request_kanban.stock_request_kanban_action +msgid "Click to add a Stock Request Kanban." +msgstr "Fare clic per aggiungere un Kanban richiesta di magazzino." + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.wizard_stock_inventory_kanban_form +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.wizard_stock_request_kanban_form +msgid "Close" +msgstr "Chiudi" + +#. module: stock_request_kanban +#: model:ir.model.fields.selection,name:stock_request_kanban.selection__stock_inventory_kanban__state__closed +msgid "Closed" +msgstr "Chiuso" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__company_id +msgid "Company" +msgstr "Azienda" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_request_order_kanban.py:0 +#, python-format +msgid "Company must be the same" +msgstr "L'azienda deve essere la stessa" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__allowed_uom_categ_id +msgid "" +"Conversion between Units of Measure can only occur if they belong to the " +"same category. The conversion will be made based on the ratios." +msgstr "" +"Le conversioni tra unità di misura possono avvenire solo se appartengono " +"alla stessa categoria. La conversione verrà effettuata in base alle " +"proporzioni." + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__create_uid +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__create_uid +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__create_uid +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__create_uid +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__create_uid +msgid "Created by" +msgstr "Creato da" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__create_date +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__create_date +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__create_date +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__create_date +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__create_date +msgid "Created on" +msgstr "Creato il" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__display_name +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__display_name +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__display_name +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__display_name +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: stock_request_kanban +#: model:ir.model.fields.selection,name:stock_request_kanban.selection__stock_inventory_kanban__state__draft +msgid "Draft" +msgstr "Bozza" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Finish" +msgstr "Termina" + +#. module: stock_request_kanban +#: model:ir.model.fields.selection,name:stock_request_kanban.selection__stock_inventory_kanban__state__finished +msgid "Finished" +msgstr "Completato" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_follower_ids +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_follower_ids +msgid "Followers" +msgstr "Seguito da" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_partner_ids +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_partner_ids +msgid "Followers (Partners)" +msgstr "Seguito da (partner)" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__activity_type_icon +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__activity_type_icon +msgid "Font awesome icon e.g. fa-tasks" +msgstr "Icona Font Awesome es. fa-tasks" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.stock_request_kanban_search +msgid "Group By" +msgstr "Raggruppa per" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__has_message +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__has_message +msgid "Has Message" +msgstr "Ha un messaggio" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__id +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__id +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__id +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__id +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__id +msgid "ID" +msgstr "ID" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_exception_icon +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_exception_icon +msgid "Icon" +msgstr "Icona" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__activity_exception_icon +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__activity_exception_icon +msgid "Icon to indicate an exception activity." +msgstr "Icona per indicare un'attività eccezione." + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__message_needaction +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__message_needaction +msgid "If checked, new messages require your attention." +msgstr "Se selezionata, nuovi messaggi richiedono attenzione." + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__message_has_error +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "Se selezionata, alcuni messaggi hanno un errore di consegna." + +#. module: stock_request_kanban +#: model:ir.model.fields.selection,name:stock_request_kanban.selection__stock_inventory_kanban__state__in_progress +msgid "In progress" +msgstr "In corso" + +#. module: stock_request_kanban +#: model:ir.ui.menu,name:stock_request_kanban.menu_wizard_stock_inventory_kanban +msgid "Inventory" +msgstr "Inventario" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__inventory_kanban_id +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Inventory Kanban" +msgstr "Kanban inventario" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_stock_inventory_kanban +msgid "Inventory for Kanban" +msgstr "Inventario per Kanban" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_is_follower +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_is_follower +msgid "Is Follower" +msgstr "Segue" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__kanban_ids +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request__kanban_id +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__kanban_id +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__kanban_id +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban_abstract__kanban_id +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__kanban_id +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Kanban" +msgstr "Kanban" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.product_product_form_view_kanban_card_button +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.product_template_form_view_bom_button +msgid "Kanban Cards" +msgstr "Schede Kanban" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.stock_request_kanban_kanban_view +msgid "Kanban Image" +msgstr "Immagine Kanban" + +#. module: stock_request_kanban +#: model:ir.ui.menu,name:stock_request_kanban.stock_request_kanban_menu +msgid "Kanban cards" +msgstr "Schede Kanban" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__write_uid +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__write_uid +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__write_uid +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__write_uid +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__write_uid +msgid "Last Updated by" +msgstr "Ultimo aggiornamento di" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__write_date +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__write_date +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__write_date +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__write_date +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__write_date +msgid "Last Updated on" +msgstr "Ultimo aggiornamento il" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_request_order_kanban.py:0 +#, python-format +msgid "Lines only can be added on orders with draft state" +msgstr "Le righe possono essere aggiunte sono ad ordini in stato bozza" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__location_ids +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__location_id +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.stock_request_kanban_search +msgid "Location" +msgstr "Ubicazione" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_request_order_kanban.py:0 +#, python-format +msgid "Location must be the same" +msgstr "L'ubicazione deve essere la stessa" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_has_error +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_has_error +msgid "Message Delivery error" +msgstr "Errore di consegna messaggio" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_ids +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_ids +msgid "Messages" +msgstr "Messaggi" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Missing" +msgstr "Mancante" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__missing_kanban_ids +msgid "Missing Kanban" +msgstr "Kanban mancante" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__count_missing_kanbans +msgid "Missing Kanbans" +msgstr "Kanban mancanti" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__procurement_group_id +msgid "" +"Moves created through this stock request will be put in this procurement " +"group. If none is given, the moves generated by procurement rules will be " +"grouped into one big picking." +msgstr "" +"I movimenti creati tramite questa richiesta di magazzino verranno inseriti " +"in questo gruppo di approvvigionamento. Se non ne viene fornito nessuno, i " +"movimenti generati dalle regole di approvvigionamento verranno raggruppati " +"in un unico grande prelievo." + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__my_activity_date_deadline +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__my_activity_date_deadline +msgid "My Activity Deadline" +msgstr "Scadenza mia attività" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__name +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__name +msgid "Name" +msgstr "Nome" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_date_deadline +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "Scadenza prossima attività" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_summary +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_summary +msgid "Next Activity Summary" +msgstr "Riepilogo prossima attività" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_type_id +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_type_id +msgid "Next Activity Type" +msgstr "Tipo prossima attività" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_needaction_counter +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_needaction_counter +msgid "Number of Actions" +msgstr "Numero di azioni" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_has_error_counter +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_has_error_counter +msgid "Number of errors" +msgstr "Numero di errori" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__message_needaction_counter +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "Numero di messaggi che richiedono un'azione" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__message_has_error_counter +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "Numero di messaggi con errore di consegna" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__order_id +msgid "Order" +msgstr "Ordine" + +#. module: stock_request_kanban +#: model:ir.actions.report,name:stock_request_kanban.action_report_kanban +msgid "Print kanban" +msgstr "Stampa Kanban" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Print missing" +msgstr "Stampa mancanti" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__procurement_group_id +msgid "Procurement Group" +msgstr "Gruppo di approvvigionamento" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_request_order_kanban.py:0 +#, python-format +msgid "Procurement group must be the same" +msgstr "Il gruppo di approvvigionamento deve essere lo stesso" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_product_template +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__product_id +msgid "Product" +msgstr "Prodotto" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__product_template_id +msgid "Product Template" +msgstr "Modello prodotto" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__product_uom_id +msgid "Product Unit of Measure" +msgstr "Unità di misura del prodotto" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_product_product +msgid "Product Variant" +msgstr "Variante prodotto" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__product_ids +msgid "Products" +msgstr "Prodotti" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__product_uom_qty +msgid "Quantity" +msgstr "Quantità" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__product_qty +msgid "Quantity in the default UoM of the product" +msgstr "Quantità nell'UdM predefinita del prodotto" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__product_uom_qty +msgid "Quantity, specified in the unit of measure indicated in the request." +msgstr "Quantità, specificata nell'unità di misura indicata nella richiesta." + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__product_qty +msgid "Real Quantity" +msgstr "Quantità reale" + +#. module: stock_request_kanban +#: model:ir.ui.menu,name:stock_request_kanban.menu_wizard_stock_request_kanban +msgid "Request from Kanban cards" +msgstr "Richiesta da schede Kanban" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_user_id +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_user_id +msgid "Responsible User" +msgstr "Utente responsabile" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__route_id +msgid "Route" +msgstr "Percorso" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__route_ids +msgid "Routes" +msgstr "Percorsi" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.stock_request_order_form +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Scan" +msgstr "Leggi" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_request_tree +msgid "Scan Kanban" +msgstr "Leggi Kanban" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Scanned" +msgstr "Letto" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__scanned_kanban_ids +msgid "Scanned Kanban" +msgstr "Kanban letto" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Set to draft" +msgstr "Imposta a bozza" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Start" +msgstr "Avvia" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__state +msgid "State" +msgstr "Stato" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__status +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__status +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban_abstract__status +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__status +msgid "Status" +msgstr "Stato" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__status_state +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__status_state +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban_abstract__status_state +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__status_state +msgid "Status State" +msgstr "Stato stati" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__activity_state +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__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 "" +"Stato in base alle attività\n" +"Scaduto: la data richiesta è trascorsa\n" +"Oggi: la data attività è oggi\n" +"Pianificato: attività future." + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Stock Inventories" +msgstr "Inventari di magazzino" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_wizard_stock_inventory_kanban +msgid "Stock Inventory Kanban Wizard" +msgstr "Procedura guidata Kanban inventario di magazzino" + +#. module: stock_request_kanban +#: model:ir.actions.act_window,name:stock_request_kanban.stock_inventory_kanban_action +msgid "Stock Inventory Kanbans" +msgstr "Kanban inventario di magazzino" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_stock_request +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__stock_request_id +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__stock_request_id +msgid "Stock Request" +msgstr "Richiesta di magazzino" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_request_kanban_form +msgid "Stock Request Kanban" +msgstr "Kanban richiesta di magazzino" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_wizard_stock_request_kanban_abstract +msgid "Stock Request Kanban Abstract Wizard" +msgstr "Procedura guidata sintesi Kanban richiesta di magazzino" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_wizard_stock_request_kanban +msgid "Stock Request Kanban Wizard" +msgstr "Procedura guidata Kanban richiesta di magazzino" + +#. module: stock_request_kanban +#: model:ir.actions.act_window,name:stock_request_kanban.stock_request_kanban_action +msgid "Stock Request Kanbans" +msgstr "Kanban richiesta di magazzino" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_wizard_stock_request_order_kanban +msgid "Stock Request Order Kanban Wizard" +msgstr "Procedura guidata Kanban ordine richiesta di magazzino" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_request_kanban_form +msgid "Stock Requests" +msgstr "Richieste di magazzino" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.stock_request_kanban_search +msgid "Stock Requests Kanban" +msgstr "Kanban richieste di magazzino" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__activity_exception_decoration +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__activity_exception_decoration +msgid "Type of the exception activity on record." +msgstr "Tipo di attività eccezione sul record." + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_wizard_stock_inventory_kanban___barcode_scanned +#: model:ir.model.fields,help:stock_request_kanban.field_wizard_stock_request_kanban___barcode_scanned +#: model:ir.model.fields,help:stock_request_kanban.field_wizard_stock_request_kanban_abstract___barcode_scanned +#: model:ir.model.fields,help:stock_request_kanban.field_wizard_stock_request_order_kanban___barcode_scanned +msgid "Value of the last barcode scanned." +msgstr "Valore dell'ultimo codice a barre letto." + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__warehouse_ids +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__warehouse_id +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.stock_request_kanban_search +msgid "Warehouse" +msgstr "Magazzino" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_request_order_kanban.py:0 +#, python-format +msgid "Warehouse must be the same" +msgstr "Il magazzino deve essere lo stesso" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__website_message_ids +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__website_message_ids +msgid "Website Messages" +msgstr "Messaggi sito web" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__website_message_ids +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__website_message_ids +msgid "Website communication history" +msgstr "Cronologia comunicazioni sito web" diff --git a/stock_request_kanban/i18n/stock_request_kanban.pot b/stock_request_kanban/i18n/stock_request_kanban.pot new file mode 100644 index 00000000..f5100772 --- /dev/null +++ b/stock_request_kanban/i18n/stock_request_kanban.pot @@ -0,0 +1,717 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_request_kanban +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_product_product__kanban_card_count +#: model:ir.model.fields,field_description:stock_request_kanban.field_product_template__kanban_card_count +msgid "# Kanban Cards" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_needaction +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_needaction +msgid "Action Needed" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__active +msgid "Active" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_ids +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_ids +msgid "Activities" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_exception_decoration +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_exception_decoration +msgid "Activity Exception Decoration" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_state +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_state +msgid "Activity State" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_type_icon +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_type_icon +msgid "Activity Type Icon" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.actions.act_window,name:stock_request_kanban.wizard_stock_inventory_kanban_action +#: model:ir.actions.act_window,name:stock_request_kanban.wizard_stock_request_kanban_action +#: model:ir.actions.act_window,name:stock_request_kanban.wizard_stock_request_order_kanban_action +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.wizard_stock_inventory_kanban_form +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.wizard_stock_request_kanban_form +msgid "Add Kanban" +msgstr "" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_request_kanban.py:0 +msgid "Added kanban %(kanban)s for product %(product)s" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__allow_virtual_location +msgid "Allow Virtual locations on Stock Requests" +msgstr "" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.stock_request_kanban_search +msgid "Archived" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_attachment_count +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_attachment_count +msgid "Attachment Count" +msgstr "" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_request_kanban_abstract.py:0 +msgid "" +"Barcode %s does not correspond to any Kanban. Try with another barcode or " +"press Close to finish scanning." +msgstr "" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_inventory_kanban.py:0 +msgid "Barcode %s is already scanned" +msgstr "" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_inventory_kanban.py:0 +msgid "Barcode %s is not in the inventory" +msgstr "" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_request_order_kanban.py:0 +msgid "Barcode %s is on the order" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban___barcode_scanned +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban___barcode_scanned +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban_abstract___barcode_scanned +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban___barcode_scanned +msgid "Barcode Scanned" +msgstr "" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/models/stock_request_kanban.py:0 +msgid "CRC is not valid" +msgstr "" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Cancel" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields.selection,name:stock_request_kanban.selection__stock_inventory_kanban__state__cancelled +msgid "Cancelled" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__allowed_uom_categ_id +msgid "Category" +msgstr "" + +#. module: stock_request_kanban +#: model_terms:ir.actions.act_window,help:stock_request_kanban.stock_inventory_kanban_action +msgid "Click to add a Stock Inventory Kanban." +msgstr "" + +#. module: stock_request_kanban +#: model_terms:ir.actions.act_window,help:stock_request_kanban.stock_request_kanban_action +msgid "Click to add a Stock Request Kanban." +msgstr "" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.wizard_stock_inventory_kanban_form +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.wizard_stock_request_kanban_form +msgid "Close" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields.selection,name:stock_request_kanban.selection__stock_inventory_kanban__state__closed +msgid "Closed" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__company_id +msgid "Company" +msgstr "" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_request_order_kanban.py:0 +msgid "Company must be the same" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__allowed_uom_categ_id +msgid "" +"Conversion between Units of Measure can only occur if they belong to the " +"same category. The conversion will be made based on the ratios." +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__create_uid +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__create_uid +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__create_uid +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__create_uid +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__create_uid +msgid "Created by" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__create_date +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__create_date +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__create_date +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__create_date +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__create_date +msgid "Created on" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__display_name +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__display_name +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__display_name +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__display_name +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__display_name +msgid "Display Name" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields.selection,name:stock_request_kanban.selection__stock_inventory_kanban__state__draft +msgid "Draft" +msgstr "" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Finish" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields.selection,name:stock_request_kanban.selection__stock_inventory_kanban__state__finished +msgid "Finished" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_follower_ids +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_follower_ids +msgid "Followers" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_partner_ids +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_partner_ids +msgid "Followers (Partners)" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__activity_type_icon +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__activity_type_icon +msgid "Font awesome icon e.g. fa-tasks" +msgstr "" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.stock_request_kanban_search +msgid "Group By" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__has_message +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__has_message +msgid "Has Message" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__id +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__id +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__id +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__id +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__id +msgid "ID" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_exception_icon +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_exception_icon +msgid "Icon" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__activity_exception_icon +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__activity_exception_icon +msgid "Icon to indicate an exception activity." +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__message_needaction +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__message_needaction +msgid "If checked, new messages require your attention." +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__message_has_error +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__image_128 +msgid "Image 128" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields.selection,name:stock_request_kanban.selection__stock_inventory_kanban__state__in_progress +msgid "In progress" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.ui.menu,name:stock_request_kanban.menu_wizard_stock_inventory_kanban +msgid "Inventory" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__inventory_kanban_id +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Inventory Kanban" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_stock_inventory_kanban +msgid "Inventory for Kanban" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_is_follower +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_is_follower +msgid "Is Follower" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__kanban_ids +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request__kanban_id +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__kanban_id +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__kanban_id +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban_abstract__kanban_id +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__kanban_id +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Kanban" +msgstr "" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.product_product_form_view_kanban_card_button +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.product_template_form_view_bom_button +msgid "Kanban Cards" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.ui.menu,name:stock_request_kanban.stock_request_kanban_menu +msgid "Kanban cards" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__write_uid +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__write_uid +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__write_uid +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__write_uid +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__write_date +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__write_date +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__write_date +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__write_date +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__write_date +msgid "Last Updated on" +msgstr "" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_request_order_kanban.py:0 +msgid "Lines only can be added on orders with draft state" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__location_ids +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__location_id +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.stock_request_kanban_search +msgid "Location" +msgstr "" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_request_order_kanban.py:0 +msgid "Location must be the same" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_has_error +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_has_error +msgid "Message Delivery error" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_ids +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_ids +msgid "Messages" +msgstr "" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Missing" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__missing_kanban_ids +msgid "Missing Kanban" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__count_missing_kanbans +msgid "Missing Kanbans" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__procurement_group_id +msgid "" +"Moves created through this stock request will be put in this procurement " +"group. If none is given, the moves generated by procurement rules will be " +"grouped into one big picking." +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__my_activity_date_deadline +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__my_activity_date_deadline +msgid "My Activity Deadline" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__name +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__name +msgid "Name" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_date_deadline +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_summary +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_summary +msgid "Next Activity Summary" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_type_id +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_type_id +msgid "Next Activity Type" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_needaction_counter +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_needaction_counter +msgid "Number of Actions" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_has_error_counter +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_has_error_counter +msgid "Number of errors" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__message_needaction_counter +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__message_has_error_counter +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__order_id +msgid "Order" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.actions.report,name:stock_request_kanban.action_report_kanban +msgid "Print kanban" +msgstr "" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Print missing" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__procurement_group_id +msgid "Procurement Group" +msgstr "" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_request_order_kanban.py:0 +msgid "Procurement group must be the same" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_product_template +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__product_id +msgid "Product" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__product_template_id +msgid "Product Template" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__product_uom_id +msgid "Product Unit of Measure" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_product_product +msgid "Product Variant" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__product_ids +msgid "Products" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__product_uom_qty +msgid "Quantity" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__product_qty +msgid "Quantity in the default UoM of the product" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__product_uom_qty +msgid "Quantity, specified in the unit of measure indicated in the request." +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__product_qty +msgid "Real Quantity" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.ui.menu,name:stock_request_kanban.menu_wizard_stock_request_kanban +msgid "Request from Kanban cards" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_user_id +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_user_id +msgid "Responsible User" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__route_id +msgid "Route" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__route_ids +msgid "Routes" +msgstr "" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.stock_request_order_form +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Scan" +msgstr "" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_request_tree +msgid "Scan Kanban" +msgstr "" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Scanned" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__scanned_kanban_ids +msgid "Scanned Kanban" +msgstr "" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Set to draft" +msgstr "" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Start" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__state +msgid "State" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__status +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__status +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban_abstract__status +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__status +msgid "Status" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__status_state +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__status_state +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban_abstract__status_state +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__status_state +msgid "Status State" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__activity_state +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__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_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Stock Inventories" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_wizard_stock_inventory_kanban +msgid "Stock Inventory Kanban Wizard" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.actions.act_window,name:stock_request_kanban.stock_inventory_kanban_action +msgid "Stock Inventory Kanbans" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_stock_request +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__stock_request_id +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__stock_request_id +msgid "Stock Request" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_request_kanban_form +msgid "Stock Request Kanban" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_wizard_stock_request_kanban_abstract +msgid "Stock Request Kanban Abstract Wizard" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_wizard_stock_request_kanban +msgid "Stock Request Kanban Wizard" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.actions.act_window,name:stock_request_kanban.stock_request_kanban_action +msgid "Stock Request Kanbans" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_wizard_stock_request_order_kanban +msgid "Stock Request Order Kanban Wizard" +msgstr "" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_request_kanban_form +msgid "Stock Requests" +msgstr "" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.stock_request_kanban_search +msgid "Stock Requests Kanban" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__activity_exception_decoration +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__activity_exception_decoration +msgid "Type of the exception activity on record." +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_wizard_stock_inventory_kanban___barcode_scanned +#: model:ir.model.fields,help:stock_request_kanban.field_wizard_stock_request_kanban___barcode_scanned +#: model:ir.model.fields,help:stock_request_kanban.field_wizard_stock_request_kanban_abstract___barcode_scanned +#: model:ir.model.fields,help:stock_request_kanban.field_wizard_stock_request_order_kanban___barcode_scanned +msgid "Value of the last barcode scanned." +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__warehouse_ids +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__warehouse_id +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.stock_request_kanban_search +msgid "Warehouse" +msgstr "" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_request_order_kanban.py:0 +msgid "Warehouse must be the same" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__website_message_ids +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__website_message_ids +msgid "Website Messages" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__website_message_ids +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__website_message_ids +msgid "Website communication history" +msgstr "" diff --git a/stock_request_kanban/i18n/zh_CN.po b/stock_request_kanban/i18n/zh_CN.po new file mode 100644 index 00000000..f5996a36 --- /dev/null +++ b/stock_request_kanban/i18n/zh_CN.po @@ -0,0 +1,799 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_request_kanban +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2019-10-16 15:58+0000\n" +"Last-Translator: 黎伟杰 <674416404@qq.com>\n" +"Language-Team: none\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 3.8\n" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_product_product__kanban_card_count +#: model:ir.model.fields,field_description:stock_request_kanban.field_product_template__kanban_card_count +#, fuzzy +msgid "# Kanban Cards" +msgstr "看板卡" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_needaction +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_needaction +msgid "Action Needed" +msgstr "需要采取行动" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__active +msgid "Active" +msgstr "有效" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_ids +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_ids +msgid "Activities" +msgstr "活动" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_exception_decoration +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_exception_decoration +msgid "Activity Exception Decoration" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_state +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_state +msgid "Activity State" +msgstr "活动状态" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_type_icon +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_type_icon +msgid "Activity Type Icon" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.actions.act_window,name:stock_request_kanban.wizard_stock_inventory_kanban_action +#: model:ir.actions.act_window,name:stock_request_kanban.wizard_stock_request_kanban_action +#: model:ir.actions.act_window,name:stock_request_kanban.wizard_stock_request_order_kanban_action +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.wizard_stock_inventory_kanban_form +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.wizard_stock_request_kanban_form +msgid "Add Kanban" +msgstr "添加看板" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_request_kanban.py:0 +#, python-format +msgid "Added kanban %(kanban)s for product %(product)s" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__allow_virtual_location +msgid "Allow Virtual locations on Stock Requests" +msgstr "允许库存请求中的虚拟位置" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.stock_request_kanban_search +msgid "Archived" +msgstr "已归档" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_attachment_count +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_attachment_count +msgid "Attachment Count" +msgstr "附件数量" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_request_kanban_abstract.py:0 +#, python-format +msgid "" +"Barcode %s does not correspond to any Kanban. Try with another barcode or " +"press Close to finish scanning." +msgstr "条形码%s与任何看板都不对应。尝试使用其他条形码或按“关闭”完成扫描。" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_inventory_kanban.py:0 +#, python-format +msgid "Barcode %s is already scanned" +msgstr "条码%s已被扫描" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_inventory_kanban.py:0 +#, python-format +msgid "Barcode %s is not in the inventory" +msgstr "条码%s不在库存中" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_request_order_kanban.py:0 +#, python-format +msgid "Barcode %s is on the order" +msgstr "条码%s在订单上" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban___barcode_scanned +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban___barcode_scanned +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban_abstract___barcode_scanned +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban___barcode_scanned +msgid "Barcode Scanned" +msgstr "条码扫描" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/models/stock_request_kanban.py:0 +#, python-format +msgid "CRC is not valid" +msgstr "CRC无效" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Cancel" +msgstr "取消" + +#. module: stock_request_kanban +#: model:ir.model.fields.selection,name:stock_request_kanban.selection__stock_inventory_kanban__state__cancelled +msgid "Cancelled" +msgstr "已取消" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__allowed_uom_categ_id +msgid "Category" +msgstr "" + +#. module: stock_request_kanban +#: model_terms:ir.actions.act_window,help:stock_request_kanban.stock_inventory_kanban_action +msgid "Click to add a Stock Inventory Kanban." +msgstr "点击添加库存看板。" + +#. module: stock_request_kanban +#: model_terms:ir.actions.act_window,help:stock_request_kanban.stock_request_kanban_action +msgid "Click to add a Stock Request Kanban." +msgstr "点击添加库存请求看板。" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.wizard_stock_inventory_kanban_form +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.wizard_stock_request_kanban_form +msgid "Close" +msgstr "关闭" + +#. module: stock_request_kanban +#: model:ir.model.fields.selection,name:stock_request_kanban.selection__stock_inventory_kanban__state__closed +msgid "Closed" +msgstr "已关闭" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__company_id +msgid "Company" +msgstr "公司" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_request_order_kanban.py:0 +#, python-format +msgid "Company must be the same" +msgstr "公司必须相同" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__allowed_uom_categ_id +msgid "" +"Conversion between Units of Measure can only occur if they belong to the " +"same category. The conversion will be made based on the ratios." +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__create_uid +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__create_uid +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__create_uid +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__create_uid +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__create_uid +msgid "Created by" +msgstr "创建者" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__create_date +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__create_date +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__create_date +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__create_date +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__create_date +msgid "Created on" +msgstr "创建时间" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__display_name +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__display_name +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__display_name +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__display_name +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__display_name +msgid "Display Name" +msgstr "显示名称" + +#. module: stock_request_kanban +#: model:ir.model.fields.selection,name:stock_request_kanban.selection__stock_inventory_kanban__state__draft +msgid "Draft" +msgstr "草稿" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Finish" +msgstr "完成" + +#. module: stock_request_kanban +#: model:ir.model.fields.selection,name:stock_request_kanban.selection__stock_inventory_kanban__state__finished +msgid "Finished" +msgstr "已完成" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_follower_ids +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_follower_ids +msgid "Followers" +msgstr "关注者" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_partner_ids +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_partner_ids +msgid "Followers (Partners)" +msgstr "关注者(业务伙伴)" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__activity_type_icon +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__activity_type_icon +msgid "Font awesome icon e.g. fa-tasks" +msgstr "" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.stock_request_kanban_search +msgid "Group By" +msgstr "分组" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__has_message +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__has_message +msgid "Has Message" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__id +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__id +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__id +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__id +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__id +msgid "ID" +msgstr "ID" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_exception_icon +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_exception_icon +msgid "Icon" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__activity_exception_icon +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__activity_exception_icon +msgid "Icon to indicate an exception activity." +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__message_needaction +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__message_needaction +msgid "If checked, new messages require your attention." +msgstr "如果勾选此项,将会收到新消息提醒。" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__message_has_error +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "如果勾选此项, 某些信息将会产生传递错误。" + +#. module: stock_request_kanban +#: model:ir.model.fields.selection,name:stock_request_kanban.selection__stock_inventory_kanban__state__in_progress +msgid "In progress" +msgstr "进行中" + +#. module: stock_request_kanban +#: model:ir.ui.menu,name:stock_request_kanban.menu_wizard_stock_inventory_kanban +msgid "Inventory" +msgstr "库存" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__inventory_kanban_id +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Inventory Kanban" +msgstr "库存看板" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_stock_inventory_kanban +msgid "Inventory for Kanban" +msgstr "库存看板" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_is_follower +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_is_follower +msgid "Is Follower" +msgstr "是关注者" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__kanban_ids +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request__kanban_id +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__kanban_id +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__kanban_id +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban_abstract__kanban_id +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__kanban_id +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Kanban" +msgstr "看板" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.product_product_form_view_kanban_card_button +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.product_template_form_view_bom_button +#, fuzzy +msgid "Kanban Cards" +msgstr "看板卡" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.stock_request_kanban_kanban_view +msgid "Kanban Image" +msgstr "看板图片" + +#. module: stock_request_kanban +#: model:ir.ui.menu,name:stock_request_kanban.stock_request_kanban_menu +msgid "Kanban cards" +msgstr "看板卡" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__write_uid +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__write_uid +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__write_uid +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__write_uid +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__write_uid +msgid "Last Updated by" +msgstr "最后更新者" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__write_date +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__write_date +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__write_date +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__write_date +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__write_date +msgid "Last Updated on" +msgstr "最后更新时间" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_request_order_kanban.py:0 +#, python-format +msgid "Lines only can be added on orders with draft state" +msgstr "只有处于草稿状态的订单才能添加行" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__location_ids +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__location_id +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.stock_request_kanban_search +msgid "Location" +msgstr "位置" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_request_order_kanban.py:0 +#, python-format +msgid "Location must be the same" +msgstr "位置必须相同" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_has_error +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_has_error +msgid "Message Delivery error" +msgstr "消息递送错误" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_ids +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_ids +msgid "Messages" +msgstr "消息" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Missing" +msgstr "缺失" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__missing_kanban_ids +msgid "Missing Kanban" +msgstr "看板缺失" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__count_missing_kanbans +msgid "Missing Kanbans" +msgstr "看板缺失" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__procurement_group_id +msgid "" +"Moves created through this stock request will be put in this procurement " +"group. If none is given, the moves generated by procurement rules will be " +"grouped into one big picking." +msgstr "" +"通过此库存请求创建的移动将放入此采购组。如果没有给出,则由采购规则生成的移动" +"将被分组为一个大拣货。" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__my_activity_date_deadline +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__my_activity_date_deadline +msgid "My Activity Deadline" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__name +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__name +msgid "Name" +msgstr "名称" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_date_deadline +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "下一个活动截止日期" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_summary +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_summary +msgid "Next Activity Summary" +msgstr "下一个活动摘要" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_type_id +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_type_id +msgid "Next Activity Type" +msgstr "下一个活动类型" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_needaction_counter +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_needaction_counter +msgid "Number of Actions" +msgstr "操作次数" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__message_has_error_counter +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__message_has_error_counter +#, fuzzy +msgid "Number of errors" +msgstr "错误数" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__message_needaction_counter +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__message_has_error_counter +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "传递错误的消息数量" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__order_id +msgid "Order" +msgstr "订单" + +#. module: stock_request_kanban +#: model:ir.actions.report,name:stock_request_kanban.action_report_kanban +msgid "Print kanban" +msgstr "打印看板" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Print missing" +msgstr "打印缺失" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__procurement_group_id +msgid "Procurement Group" +msgstr "补货组" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_request_order_kanban.py:0 +#, python-format +msgid "Procurement group must be the same" +msgstr "补货组必须相同" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_product_template +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__product_id +msgid "Product" +msgstr "产品" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__product_template_id +#, fuzzy +msgid "Product Template" +msgstr "产品" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__product_uom_id +msgid "Product Unit of Measure" +msgstr "产品计量单位" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_product_product +msgid "Product Variant" +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__product_ids +msgid "Products" +msgstr "产品" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__product_uom_qty +msgid "Quantity" +msgstr "数量" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__product_qty +msgid "Quantity in the default UoM of the product" +msgstr "产品的默认计量单位数量" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__product_uom_qty +msgid "Quantity, specified in the unit of measure indicated in the request." +msgstr "数量,以请求中指示的计量单位指定。" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__product_qty +msgid "Real Quantity" +msgstr "实际数量" + +#. module: stock_request_kanban +#: model:ir.ui.menu,name:stock_request_kanban.menu_wizard_stock_request_kanban +msgid "Request from Kanban cards" +msgstr "来自看板卡的请求" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__activity_user_id +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__activity_user_id +msgid "Responsible User" +msgstr "责任用户" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__route_id +msgid "Route" +msgstr "路线" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__route_ids +msgid "Routes" +msgstr "路线" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.stock_request_order_form +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Scan" +msgstr "扫描" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_request_tree +#, fuzzy +msgid "Scan Kanban" +msgstr "已扫描看板" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Scanned" +msgstr "已扫描" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__scanned_kanban_ids +msgid "Scanned Kanban" +msgstr "已扫描看板" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Set to draft" +msgstr "设置为草稿" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Start" +msgstr "开始" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__state +msgid "State" +msgstr "状态" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__status +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__status +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban_abstract__status +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__status +msgid "Status" +msgstr "状态" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_inventory_kanban__status_state +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__status_state +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban_abstract__status_state +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__status_state +msgid "Status State" +msgstr "状态" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__activity_state +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__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 "" +"基于活动的状态\n" +"逾期:已经超过截止日期\n" +"现今:活动日期是当天\n" +"计划:未来的活动。" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_inventory_kanban_form +msgid "Stock Inventories" +msgstr "库存存货" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_wizard_stock_inventory_kanban +#, fuzzy +msgid "Stock Inventory Kanban Wizard" +msgstr "库存存货看板" + +#. module: stock_request_kanban +#: model:ir.actions.act_window,name:stock_request_kanban.stock_inventory_kanban_action +msgid "Stock Inventory Kanbans" +msgstr "库存存货看板" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_stock_request +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_kanban__stock_request_id +#: model:ir.model.fields,field_description:stock_request_kanban.field_wizard_stock_request_order_kanban__stock_request_id +msgid "Stock Request" +msgstr "库存请求" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_request_kanban_form +msgid "Stock Request Kanban" +msgstr "库存请求看板" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_wizard_stock_request_kanban_abstract +#, fuzzy +msgid "Stock Request Kanban Abstract Wizard" +msgstr "库存请求看板" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_wizard_stock_request_kanban +#, fuzzy +msgid "Stock Request Kanban Wizard" +msgstr "库存请求看板" + +#. module: stock_request_kanban +#: model:ir.actions.act_window,name:stock_request_kanban.stock_request_kanban_action +msgid "Stock Request Kanbans" +msgstr "库存请求看板" + +#. module: stock_request_kanban +#: model:ir.model,name:stock_request_kanban.model_wizard_stock_request_order_kanban +#, fuzzy +msgid "Stock Request Order Kanban Wizard" +msgstr "库存请求看板" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.view_stock_request_kanban_form +msgid "Stock Requests" +msgstr "库存请求" + +#. module: stock_request_kanban +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.stock_request_kanban_search +msgid "Stock Requests Kanban" +msgstr "库存请求看板" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__activity_exception_decoration +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__activity_exception_decoration +msgid "Type of the exception activity on record." +msgstr "" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_wizard_stock_inventory_kanban___barcode_scanned +#: model:ir.model.fields,help:stock_request_kanban.field_wizard_stock_request_kanban___barcode_scanned +#: model:ir.model.fields,help:stock_request_kanban.field_wizard_stock_request_kanban_abstract___barcode_scanned +#: model:ir.model.fields,help:stock_request_kanban.field_wizard_stock_request_order_kanban___barcode_scanned +msgid "Value of the last barcode scanned." +msgstr "最后扫描条形码的值。" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__warehouse_ids +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__warehouse_id +#: model_terms:ir.ui.view,arch_db:stock_request_kanban.stock_request_kanban_search +msgid "Warehouse" +msgstr "仓库" + +#. module: stock_request_kanban +#. odoo-python +#: code:addons/stock_request_kanban/wizard/wizard_stock_request_order_kanban.py:0 +#, python-format +msgid "Warehouse must be the same" +msgstr "仓库必须相同" + +#. module: stock_request_kanban +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_inventory_kanban__website_message_ids +#: model:ir.model.fields,field_description:stock_request_kanban.field_stock_request_kanban__website_message_ids +msgid "Website Messages" +msgstr "网站消息" + +#. module: stock_request_kanban +#: model:ir.model.fields,help:stock_request_kanban.field_stock_inventory_kanban__website_message_ids +#: model:ir.model.fields,help:stock_request_kanban.field_stock_request_kanban__website_message_ids +msgid "Website communication history" +msgstr "网站沟通记录" + +#~ msgid "Last Modified on" +#~ msgstr "最后修改时间" + +#~ msgid "Main Attachment" +#~ msgstr "附件" + +#~ msgid "Number of messages which requires an action" +#~ msgstr "需要操作消息数量" + +#~ msgid "Number of unread messages" +#~ msgstr "未读消息的数量" + +#, fuzzy +#~ msgid "SMS Delivery error" +#~ msgstr "消息递送错误" + +#~ msgid "Unread Messages" +#~ msgstr "未读消息" + +#~ msgid "Unread Messages Counter" +#~ msgstr "未读消息计数器" + +#, python-format +#~ msgid "Added kanban %s for product %s" +#~ msgstr "为产品%s添加了看板%s" + +#~ msgid "Followers (Channels)" +#~ msgstr "关注者(频道)" + +#~ msgid "If checked new messages require your attention." +#~ msgstr ".如果勾选此项,将会收到新消息提醒。" + +#~ msgid "Overdue" +#~ msgstr "逾期" + +#~ msgid "Planned" +#~ msgstr "计划" + +#~ msgid "Today" +#~ msgstr "今天" + +#~ msgid "wizard.stock.inventory.kanban" +#~ msgstr "wizard.stock.inventory.kanban" + +#~ msgid "wizard.stock.request.kanban" +#~ msgstr "wizard.stock.request.kanban" + +#~ msgid "wizard.stock.request.kanban.abstract" +#~ msgstr "wizard.stock.request.kanban.abstract" + +#~ msgid "wizard.stock.request.order.kanban" +#~ msgstr "wizard.stock.request.order.kanban" diff --git a/stock_request_kanban/models/__init__.py b/stock_request_kanban/models/__init__.py new file mode 100644 index 00000000..86624932 --- /dev/null +++ b/stock_request_kanban/models/__init__.py @@ -0,0 +1,7 @@ +# Copyright 2018 Creu Blanca +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +from . import stock_request +from . import stock_request_kanban +from . import stock_inventory_kanban +from . import product diff --git a/stock_request_kanban/models/product.py b/stock_request_kanban/models/product.py new file mode 100644 index 00000000..50c375ae --- /dev/null +++ b/stock_request_kanban/models/product.py @@ -0,0 +1,53 @@ +from odoo import fields, models + + +class ProductTemplate(models.Model): + _inherit = "product.template" + + kanban_card_count = fields.Integer( + "# Kanban Cards", compute="_compute_kanban_card_count", compute_sudo=False + ) + + def _compute_kanban_card_count(self): + for product in self: + count = 0 + for variant in product.product_variant_ids: + count += self.env["stock.request.kanban"].search_count( + [("product_id", "=", variant.id)] + ) + product.kanban_card_count = count + + def action_view_kanban_cards(self): + self.ensure_one() + action = self.env["ir.actions.act_window"]._for_xml_id( + "stock_request_kanban.stock_request_kanban_action" + ) + action["context"] = {"default_product_id": self.product_variant_id.id} + action["domain"] = [ + ("active", "=", True), + ("product_template_id", "=", self.id), + ] + return action + + +class ProductProduct(models.Model): + _inherit = "product.product" + + kanban_card_count = fields.Integer( + "# Kanban Cards", compute="_compute_kanban_card_count", compute_sudo=False + ) + + def _compute_kanban_card_count(self): + for product in self: + product.kanban_card_count += self.env["stock.request.kanban"].search_count( + [("product_id", "=", product.id)] + ) + + def action_view_kanban_cards(self): + self.ensure_one() + action = self.env["ir.actions.act_window"]._for_xml_id( + "stock_request_kanban.stock_request_kanban_action" + ) + action["context"] = {"default_product_id": self.id} + action["domain"] = [("active", "=", True), ("product_id", "=", self.id)] + return action diff --git a/stock_request_kanban/models/stock_inventory_kanban.py b/stock_request_kanban/models/stock_inventory_kanban.py new file mode 100644 index 00000000..a5bdcfde --- /dev/null +++ b/stock_request_kanban/models/stock_inventory_kanban.py @@ -0,0 +1,142 @@ +# Copyright 2018 Creu Blanca +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +from odoo import api, fields, models +from odoo.fields import Domain + + +class StockInventoryKanban(models.Model): + _name = "stock.inventory.kanban" + _description = "Inventory for Kanban" + _inherit = ["mail.thread", "mail.activity.mixin"] + + name = fields.Char(readonly=True, copy=False) + state = fields.Selection( + [ + ("draft", "Draft"), + ("in_progress", "In progress"), + ("finished", "Finished"), + ("closed", "Closed"), + ("cancelled", "Cancelled"), + ], + required=True, + default="draft", + readonly=True, + copy=False, + tracking=True, + ) + warehouse_ids = fields.Many2many( + "stock.warehouse", + string="Warehouse", + ondelete="cascade", + readonly=True, + ) + location_ids = fields.Many2many( + "stock.location", + string="Location", + domain=[("usage", "in", ["internal", "transit"])], + ondelete="cascade", + readonly=True, + ) + product_ids = fields.Many2many( + "product.product", + string="Products", + domain=[("type", "in", ["product", "consu"])], + ondelete="cascade", + readonly=True, + ) + kanban_ids = fields.Many2many( + "stock.request.kanban", + relation="stock_inventory_kanban_kanban", + readonly=True, + copy=False, + ) + scanned_kanban_ids = fields.Many2many( + "stock.request.kanban", + relation="stock_inventory_kanban_scanned_kanban", + readonly=True, + copy=False, + ) + missing_kanban_ids = fields.Many2many( + "stock.request.kanban", readonly=True, compute="_compute_missing_kanban" + ) + + count_missing_kanbans = fields.Integer( + "Missing Kanbans", readonly=True, compute="_compute_missing_kanban" + ) + + @api.depends("kanban_ids", "scanned_kanban_ids") + def _compute_missing_kanban(self): + for rec in self: + rec.missing_kanban_ids = rec.kanban_ids.filtered( + lambda r, rec=rec: r.id not in rec.scanned_kanban_ids.ids + ) + rec.count_missing_kanbans = len(rec.missing_kanban_ids) + + def _get_inventory_kanban_domain(self): + domain = Domain(1, "=", 1) + if self.warehouse_ids: + domain &= Domain("warehouse_id", "in", self.warehouse_ids.ids) + if self.product_ids: + domain &= Domain("product_id", "in", self.product_ids.ids) + if self.location_ids: + domain &= Domain("location_id", "in", self.location_ids.ids) + return domain + + def _start_inventory_values(self): + return {"state": "in_progress"} + + def _finish_inventory_values(self): + return {"state": "finished"} + + def _close_inventory_values(self): + return {"state": "closed"} + + @api.model_create_multi + def create(self, vals_list): + for vals in vals_list: + if vals.get("name", "/") == "/": + vals["name"] = self.env["ir.sequence"].next_by_code( + "stock.inventory.kanban" + ) + return super().create(vals_list) + + def calculate_kanbans(self): + for rec in self: + if rec.state == "draft": + rec.kanban_ids = self.env["stock.request.kanban"].search( + rec._get_inventory_kanban_domain() + ) + + def start_inventory(self): + self.calculate_kanbans() + self.write(self._start_inventory_values()) + + def finish_inventory(self): + self.write(self._finish_inventory_values()) + + def close_inventory(self): + self.write(self._close_inventory_values()) + + def print_missing_kanbans(self): + """Print the missing kanban cards in order to restore them""" + self.ensure_one() + return self.env.ref("stock_request_kanban.action_report_kanban").report_action( + self.missing_kanban_ids + ) + + def _cancel_inventory_values(self): + return {"state": "cancelled"} + + def cancel(self): + self.write(self._cancel_inventory_values()) + + def _to_draft_inventory_values(self): + return { + "state": "draft", + "kanban_ids": [(5, 0)], + "scanned_kanban_ids": [(5, 0)], + } + + def to_draft(self): + self.write(self._to_draft_inventory_values()) diff --git a/stock_request_kanban/models/stock_request.py b/stock_request_kanban/models/stock_request.py new file mode 100644 index 00000000..f8d2e3cd --- /dev/null +++ b/stock_request_kanban/models/stock_request.py @@ -0,0 +1,19 @@ +# Copyright 2018 Creu Blanca +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +from odoo import fields, models + + +class StockRequest(models.Model): + _inherit = "stock.request" + + kanban_id = fields.Many2one("stock.request.kanban", readonly=True) + + def action_scan_kanban(self): + return { + "res_model": "wizard.stock.request.kanban", + "views": [[False, "form"]], + "target": "new", + "type": "ir.actions.act_window", + "context": self.env.context, + } diff --git a/stock_request_kanban/models/stock_request_kanban.py b/stock_request_kanban/models/stock_request_kanban.py new file mode 100644 index 00000000..c7a5137e --- /dev/null +++ b/stock_request_kanban/models/stock_request_kanban.py @@ -0,0 +1,70 @@ +# Copyright 2018 Creu Blanca +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +from reportlab.graphics.barcode import getCodes + +from odoo import api, fields, models +from odoo.exceptions import ValidationError + + +class StockRequestKanban(models.Model): + _name = "stock.request.kanban" + _description = "Stock Request Kanban" + _inherit = "stock.request.abstract" + + active = fields.Boolean(default=True) + product_template_id = fields.Many2one(related="product_id.product_tmpl_id") + image_128 = fields.Image(related="product_id.image_128") + reference_ids = fields.Many2many( + comodel_name="stock.reference", + relation="stock_request_kanban_stock_reference_rel", + column1="stock_request_kanban_id", + column2="stock_reference_id", + string="References", + ) + + @api.model_create_multi + def create(self, vals_list): + for vals in vals_list: + if vals.get("name", "/") == "/": + vals["name"] = self.env["ir.sequence"].next_by_code( + "stock.request.kanban" + ) + return super().create(vals_list) + + @api.model + def get_barcode_format(self): + return ( + self.env["ir.config_parameter"] + .sudo() + .get_param("stock_request_kanban.barcode_format", default="Standard39") + ) + + @api.model + def _recompute_barcode(self, barcode): + if ( + self.env["ir.config_parameter"] + .sudo() + .get_param("stock_request_kanban.crc", default="1") + == "0" + ): + return barcode + if ( + self.env["ir.config_parameter"] + .sudo() + .get_param("stock_request_kanban.ignore_crc", default="0") + == "0" + ): + bcc = getCodes()[self.get_barcode_format()](value=barcode[:-1]) + bcc.validate() + bcc.encode() + if bcc.encoded[1:-1] != barcode: + raise ValidationError(self.env._("CRC is not valid")) + return barcode[:-1] + + @api.model + def search_barcode(self, barcode): + recomputed_barcode = self._recompute_barcode(barcode) + return self.env["stock.request.kanban"].search( + [("name", "ilike", recomputed_barcode)] + ) diff --git a/stock_request_kanban/pyproject.toml b/stock_request_kanban/pyproject.toml new file mode 100644 index 00000000..4231d0cc --- /dev/null +++ b/stock_request_kanban/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/stock_request_kanban/readme/CONFIGURE.md b/stock_request_kanban/readme/CONFIGURE.md new file mode 100644 index 00000000..50badbef --- /dev/null +++ b/stock_request_kanban/readme/CONFIGURE.md @@ -0,0 +1,19 @@ +If the barcode does not contain a CRC check digit on the kanban card, +you should: + +- Access on Development mode +- Access 'Settings / Technical / Parameters / System Parameters' +- Create a parameter with name 'stock_request_kanban.crc' and set it to + value to 0 + +If the barcode contains a CRC check digit and you want to ignore it: + +- Create a paramenter with name 'stock_request_kanban.ignore_crc' and + set it to value to 1 + +If you want to change the format of the QR, you should: + +- Access on Development mode +- Access 'Settings / Technical / Parameters / System Parameters' +- Create a parameter with name 'stock_request_kanban.barcode_format' and + set the format of the barcode diff --git a/stock_request_kanban/readme/CONTRIBUTORS.md b/stock_request_kanban/readme/CONTRIBUTORS.md new file mode 100644 index 00000000..6f8b1332 --- /dev/null +++ b/stock_request_kanban/readme/CONTRIBUTORS.md @@ -0,0 +1,3 @@ +- Enric Tobella \<\> +- Kitti Upariphutthiphong \<\> +- Marco Colombo \< diff --git a/stock_request_kanban/readme/DESCRIPTION.md b/stock_request_kanban/readme/DESCRIPTION.md new file mode 100644 index 00000000..d4d665b4 --- /dev/null +++ b/stock_request_kanban/readme/DESCRIPTION.md @@ -0,0 +1,8 @@ +On most companies there are products that must be purchased often but +cannot be stored as a usual product because no consumption moves are +made. Usually, they are stored as consumables or putaway rules are +defined. In both cases, reordering rules cannot be used. This module +allows to use stock request as reordering rules for this kind of +products. + +It is created following the concept of lean kanban cards. diff --git a/stock_request_kanban/readme/USAGE.md b/stock_request_kanban/readme/USAGE.md new file mode 100644 index 00000000..ea206cb2 --- /dev/null +++ b/stock_request_kanban/readme/USAGE.md @@ -0,0 +1,27 @@ +## Creation + +- Go to 'Stock Requests / Stock Requests Kanban' and create a new + Kanban. +- Indicate a product, quantity and location. +- Press 'Save'. +- Print the kanban and put it in the storage of the product + +## Request kanban + +This should be used if you want to create the kanban when the card is +consumed. + +- Once the product is consumed, take the card +- Go to 'Stock Requests / Order Kanban Card' +- Scan the card +- The stock request is created + +## Request kanban batch + +This should be used when you will store the cards and create request +orders for kanbans later. + +- Once the product is consumed, take the card and store it +- Create a store request order +- Press the scan button +- Scan all the pending kanban cards diff --git a/stock_request_kanban/report/report_paper_format.xml b/stock_request_kanban/report/report_paper_format.xml new file mode 100644 index 00000000..1c29095e --- /dev/null +++ b/stock_request_kanban/report/report_paper_format.xml @@ -0,0 +1,14 @@ + + + + Kanban format + A4 + Portrait + 0.0 + 0.0 + 0.0 + 0.0 + 0 + 72 + + diff --git a/stock_request_kanban/report/stock_request_kanban_templates.xml b/stock_request_kanban/report/stock_request_kanban_templates.xml new file mode 100644 index 00000000..dc721b1c --- /dev/null +++ b/stock_request_kanban/report/stock_request_kanban_templates.xml @@ -0,0 +1,103 @@ + + + + + + + Print kanban + stock.request.kanban + qweb-pdf + stock_request_kanban.report_kanban_label + stock_request_kanban.report_kanban_label + + + report + + diff --git a/stock_request_kanban/security/ir.model.access.csv b/stock_request_kanban/security/ir.model.access.csv new file mode 100644 index 00000000..244b3a41 --- /dev/null +++ b/stock_request_kanban/security/ir.model.access.csv @@ -0,0 +1,11 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_stock_request_kanban_user,stock request kanban user,model_stock_request_kanban,stock_request.group_stock_request_user,1,1,1, +access_stock_request_kanban_manager,stock request kanban manager,model_stock_request_kanban,stock_request.group_stock_request_manager,1,1,1,1 +access_stock_inventory_kanban_user,stock inventory kanban user,model_stock_inventory_kanban,stock_request.group_stock_request_user,1,1,1, +access_stock_inventory_kanban_manager,stock inventory kanban manager,model_stock_inventory_kanban,stock_request.group_stock_request_manager,1,1,1,1 +access_wizard_stock_request_kanban_user,wizard stock request kanban user,model_wizard_stock_request_kanban,stock_request.group_stock_request_user,1,1,1, +access_wizard_stock_request_kanban_manager,wizard stock request kanban manager,model_wizard_stock_request_kanban,stock_request.group_stock_request_manager,1,1,1,1 +access_wizard_stock_inventory_kanban_user,wizard stock inventory kanban user,model_wizard_stock_inventory_kanban,stock_request.group_stock_request_user,1,1,1, +access_wizard_stock_inventory_kanban_manager,wizard stock inventory kanban manager,model_wizard_stock_inventory_kanban,stock_request.group_stock_request_manager,1,1,1,1 +access_wizard_stock_request_order_kanban_user,wizard stock request order kanban user,model_wizard_stock_request_order_kanban,stock_request.group_stock_request_user,1,1,1, +access_wizard_stock_request_order_kanban_manager,wizard stock request order kanban manager,model_wizard_stock_request_order_kanban,stock_request.group_stock_request_manager,1,1,1,1 diff --git a/stock_request_kanban/static/description/icon.png b/stock_request_kanban/static/description/icon.png new file mode 100644 index 00000000..d4f6a65a Binary files /dev/null and b/stock_request_kanban/static/description/icon.png differ diff --git a/stock_request_kanban/static/description/index.html b/stock_request_kanban/static/description/index.html new file mode 100644 index 00000000..752f4436 --- /dev/null +++ b/stock_request_kanban/static/description/index.html @@ -0,0 +1,505 @@ + + + + + +README.rst + + + +
+ + + +Odoo Community Association + +
+

Stock Request kanban

+ +

Beta License: LGPL-3 OCA/stock-logistics-request Translate me on Weblate Try me on Runboat

+

On most companies there are products that must be purchased often but +cannot be stored as a usual product because no consumption moves are +made. Usually, they are stored as consumables or putaway rules are +defined. In both cases, reordering rules cannot be used. This module +allows to use stock request as reordering rules for this kind of +products.

+

It is created following the concept of lean kanban cards.

+

Table of contents

+ +
+

Configuration

+

If the barcode does not contain a CRC check digit on the kanban card, +you should:

+
    +
  • Access on Development mode
  • +
  • Access ‘Settings / Technical / Parameters / System Parameters’
  • +
  • Create a parameter with name ‘stock_request_kanban.crc’ and set it to +value to 0
  • +
+

If the barcode contains a CRC check digit and you want to ignore it:

+
    +
  • Create a paramenter with name ‘stock_request_kanban.ignore_crc’ and +set it to value to 1
  • +
+

If you want to change the format of the QR, you should:

+
    +
  • Access on Development mode
  • +
  • Access ‘Settings / Technical / Parameters / System Parameters’
  • +
  • Create a parameter with name ‘stock_request_kanban.barcode_format’ and +set the format of the barcode
  • +
+
+
+

Usage

+
+

Creation

+
    +
  • Go to ‘Stock Requests / Stock Requests Kanban’ and create a new +Kanban.
  • +
  • Indicate a product, quantity and location.
  • +
  • Press ‘Save’.
  • +
  • Print the kanban and put it in the storage of the product
  • +
+
+
+

Request kanban

+

This should be used if you want to create the kanban when the card is +consumed.

+
    +
  • Once the product is consumed, take the card
  • +
  • Go to ‘Stock Requests / Order Kanban Card’
  • +
  • Scan the card
  • +
  • The stock request is created
  • +
+
+
+

Request kanban batch

+

This should be used when you will store the cards and create request +orders for kanbans later.

+
    +
  • Once the product is consumed, take the card and store it
  • +
  • Create a store request order
  • +
  • Press the scan button
  • +
  • Scan all the pending kanban cards
  • +
+
+
+
+

Bug Tracker

+

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

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • Creu Blanca
  • +
  • ForgeFlow
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+ +Odoo Community Association + +

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

+

Current maintainers:

+

etobella LoisRForgeFlow

+

This module is part of the OCA/stock-logistics-request project on GitHub.

+

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

+
+
+
+
+ + diff --git a/stock_request_kanban/tests/__init__.py b/stock_request_kanban/tests/__init__.py new file mode 100644 index 00000000..4a5ebd19 --- /dev/null +++ b/stock_request_kanban/tests/__init__.py @@ -0,0 +1,2 @@ +from . import test_kanban +from . import test_inventory_kanban diff --git a/stock_request_kanban/tests/base_test.py b/stock_request_kanban/tests/base_test.py new file mode 100644 index 00000000..ab789952 --- /dev/null +++ b/stock_request_kanban/tests/base_test.py @@ -0,0 +1,17 @@ +# Copyright 2017 Creu Blanca +# Copyright 2017-2024 ForgeFlow, S.L. +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +from reportlab.graphics.barcode import getCodes + +from odoo.tests.common import TransactionCase + + +class TestBaseKanban(TransactionCase): + def pass_code(self, wizard, code): + bcc = getCodes()[self.env["stock.request.kanban"].get_barcode_format()]( + value=code + ) + bcc.validate() + bcc.encode() + wizard.on_barcode_scanned(bcc.encoded[1:-1]) diff --git a/stock_request_kanban/tests/test_inventory_kanban.py b/stock_request_kanban/tests/test_inventory_kanban.py new file mode 100644 index 00000000..e9dd8482 --- /dev/null +++ b/stock_request_kanban/tests/test_inventory_kanban.py @@ -0,0 +1,112 @@ +# Copyright 2017 Creu Blanca +# Copyright 2017-2024 ForgeFlow, S.L. +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +from .base_test import TestBaseKanban + + +class TestKanban(TestBaseKanban): + def setUp(self): + super().setUp() + self.main_company = self.env.ref("base.main_company") + self.route = self.env["stock.route"].create( + { + "name": "Transfer", + "product_categ_selectable": False, + "product_selectable": True, + "company_id": self.main_company.id, + "sequence": 10, + } + ) + self.product = self.env["product.product"].create( + {"name": "Product", "route_ids": [(4, self.route.id)], "company_id": False} + ) + self.product_2 = self.env["product.product"].create( + { + "name": "Product 2", + "route_ids": [(4, self.route.id)], + "company_id": False, + } + ) + self.kanban_1 = self.env["stock.request.kanban"].create( + { + "product_id": self.product.id, + "product_uom_id": self.product.uom_id.id, + "product_uom_qty": 1, + } + ) + self.kanban_2 = self.env["stock.request.kanban"].create( + { + "product_id": self.product.id, + "product_uom_id": self.product.uom_id.id, + "product_uom_qty": 1, + } + ) + self.kanban_3 = self.env["stock.request.kanban"].create( + { + "product_id": self.product_2.id, + "product_uom_id": self.product.uom_id.id, + "product_uom_qty": 1, + } + ) + + def test_inventory_warehouse(self): + inventory = self.env["stock.inventory.kanban"].create( + {"warehouse_ids": [(4, self.kanban_1.warehouse_id.id)]} + ) + inventory.start_inventory() + self.assertIn(self.kanban_1, inventory.kanban_ids) + self.assertIn(self.kanban_1, inventory.missing_kanban_ids) + + def test_inventory_location(self): + inventory = self.env["stock.inventory.kanban"].create( + {"location_ids": [(4, self.kanban_1.location_id.id)]} + ) + inventory.start_inventory() + self.assertIn(self.kanban_1, inventory.kanban_ids) + self.assertIn(self.kanban_1, inventory.missing_kanban_ids) + + def test_inventory_product(self): + inventory = self.env["stock.inventory.kanban"].create( + {"product_ids": [(4, self.product.id)]} + ) + inventory.start_inventory() + self.assertIn(self.kanban_1, inventory.kanban_ids) + self.assertNotIn(self.kanban_3, inventory.kanban_ids) + self.assertIn(self.kanban_1, inventory.missing_kanban_ids) + self.assertEqual(inventory.state, "in_progress") + wizard = ( + self.env["wizard.stock.inventory.kanban"] + .with_context(default_inventory_kanban_id=inventory.id) + .create({}) + ) + self.pass_code(wizard, self.kanban_3.name) + self.assertEqual(wizard.status_state, 1) + self.pass_code(wizard, self.kanban_1.name) + self.assertEqual(wizard.status_state, 0) + self.assertNotIn(self.kanban_1, inventory.missing_kanban_ids) + self.assertIn(self.kanban_1, inventory.scanned_kanban_ids) + self.pass_code(wizard, self.kanban_1.name) + self.assertEqual(wizard.status_state, 1) + self.assertNotIn(self.kanban_1, inventory.missing_kanban_ids) + self.assertIn(self.kanban_1, inventory.scanned_kanban_ids) + inventory.finish_inventory() + self.assertEqual(inventory.state, "finished") + inventory.close_inventory() + self.assertEqual(inventory.state, "closed") + + def test_cancel_inventory(self): + inventory = self.env["stock.inventory.kanban"].create( + {"product_ids": [(4, self.product.id)]} + ) + inventory.start_inventory() + self.assertIn(self.kanban_1, inventory.kanban_ids) + self.assertNotIn(self.kanban_3, inventory.kanban_ids) + self.assertIn(self.kanban_1, inventory.missing_kanban_ids) + self.assertEqual(inventory.state, "in_progress") + inventory.cancel() + self.assertEqual(inventory.state, "cancelled") + inventory.to_draft() + self.assertEqual(inventory.state, "draft") + self.assertFalse(inventory.kanban_ids) + self.assertFalse(inventory.scanned_kanban_ids) diff --git a/stock_request_kanban/tests/test_kanban.py b/stock_request_kanban/tests/test_kanban.py new file mode 100644 index 00000000..7daf08fb --- /dev/null +++ b/stock_request_kanban/tests/test_kanban.py @@ -0,0 +1,199 @@ +# Copyright 2017 Creu Blanca +# Copyright 2017-2024 ForgeFlow, S.L. +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +from odoo.exceptions import ValidationError + +from .base_test import TestBaseKanban + + +class TestKanban(TestBaseKanban): + def setUp(self): + super().setUp() + self.main_company = self.env.ref("base.main_company") + self.warehouse = self.env.ref("stock.warehouse0") + self.uom_unit = self.env.ref("uom.product_uom_unit") + + # common data + self.company_2 = self.env["res.company"].create({"name": "Comp2"}) + self.wh2 = self.env["stock.warehouse"].search( + [("company_id", "=", self.company_2.id)], limit=1 + ) + self.wh3 = self.env["stock.warehouse"].create( + { + "name": "Warehouse TEst", + "code": "WH-TEST", + "company_id": self.main_company.id, + } + ) + + self.ressuply_loc = self.env["stock.location"].create( + {"name": "Ressuply", "location_id": self.warehouse.view_location_id.id} + ) + self.route = self.env["stock.route"].create( + { + "name": "Transfer", + "product_categ_selectable": False, + "product_selectable": True, + "company_id": self.main_company.id, + "sequence": 10, + } + ) + self.product = self.env["product.product"].create( + {"name": "Product", "route_ids": [(4, self.route.id)], "company_id": False} + ) + self.uom_dozen = self.env["uom.uom"].create( + { + "name": "Test-DozenA", + "relative_uom_id": self.uom_unit.id, + "relative_factor": 12, + "rounding": 0.001, + } + ) + + self.env["stock.rule"].create( + { + "name": "Transfer", + "route_id": self.route.id, + "location_src_id": self.ressuply_loc.id, + "location_dest_id": self.warehouse.lot_stock_id.id, + "action": "pull_push", + "picking_type_id": self.warehouse.int_type_id.id, + "procure_method": "make_to_stock", + "warehouse_id": self.warehouse.id, + "company_id": self.main_company.id, + } + ) + self.env["ir.config_parameter"].set_param("stock_request_kanban.crc", "1") + + def test_onchanges(self): + kanban = self.env["stock.request.kanban"].new({}) + kanban.product_id = self.product + kanban.onchange_product_id() + kanban.company_id = self.main_company + kanban.onchange_company_id() + self.assertTrue(kanban.warehouse_id) + kanban.warehouse_id = self.wh2 + kanban.onchange_warehouse_id() + self.assertEqual(kanban.company_id, self.company_2) + kanban.location_id = self.warehouse.view_location_id + kanban.onchange_location_id() + self.assertEqual(kanban.company_id, self.main_company) + self.assertEqual(kanban.warehouse_id, self.warehouse) + + def test_create(self): + kanban = self.env["stock.request.kanban"].new({}) + kanban.product_id = self.product + kanban.onchange_product_id() + kanban.product_uom_qty = 1 + kanban = kanban.create(kanban._convert_to_write(kanban._cache)) + self.assertTrue(kanban.company_id) + self.assertIn(self.route, kanban.route_ids) + + def test_order_barcodes(self): + kanban_1 = self.env["stock.request.kanban"].create( + { + "product_id": self.product.id, + "product_uom_id": self.product.uom_id.id, + "product_uom_qty": 1, + } + ) + kanban_2 = self.env["stock.request.kanban"].create( + { + "product_id": self.product.id, + "product_uom_id": self.product.uom_id.id, + "product_uom_qty": 1, + } + ) + kanban_3 = self.env["stock.request.kanban"].create( + { + "product_id": self.product.id, + "product_uom_id": self.product.uom_id.id, + "product_uom_qty": 1, + "company_id": self.main_company.id, + "warehouse_id": self.wh3.id, + "location_id": self.wh3.lot_stock_id.id, + } + ) + order = self.env["stock.request.order"].create( + { + "company_id": self.main_company.id, + "warehouse_id": self.warehouse.id, + "location_id": self.warehouse.lot_stock_id.id, + } + ) + wizard = ( + self.env["wizard.stock.request.order.kanban"] + .with_context(default_order_id=order.id) + .create({}) + ) + with self.assertRaises(ValidationError): + wizard.on_barcode_scanned(kanban_1.name) + self.pass_code(wizard, kanban_1.name) + self.assertEqual(wizard.status_state, 0) + self.assertTrue( + order.stock_request_ids.filtered(lambda r: r.kanban_id == kanban_1) + ) + self.pass_code(wizard, kanban_2.name) + self.assertTrue( + order.stock_request_ids.filtered(lambda r: r.kanban_id == kanban_2) + ) + self.assertEqual(wizard.status_state, 0) + self.pass_code(wizard, kanban_1.name) + self.assertEqual(wizard.status_state, 1) + self.pass_code(wizard, kanban_2.name + kanban_1.name) + self.assertEqual(wizard.status_state, 1) + with self.assertRaises(ValidationError): + self.pass_code(wizard, kanban_3.name) + + def test_barcodes(self): + kanban_1 = self.env["stock.request.kanban"].create( + { + "product_id": self.product.id, + "product_uom_id": self.product.uom_id.id, + "product_uom_qty": 1, + } + ) + kanban_2 = self.env["stock.request.kanban"].create( + { + "product_id": self.product.id, + "product_uom_id": self.product.uom_id.id, + "product_uom_qty": 1, + } + ) + kanban_3 = self.env["stock.request.kanban"].create( + { + "product_id": self.product.id, + "product_uom_id": self.product.uom_id.id, + "product_uom_qty": 1, + } + ) + wizard = self.env["wizard.stock.request.kanban"].with_context().create({}) + with self.assertRaises(ValidationError): + wizard.on_barcode_scanned(kanban_1.name) + self.assertFalse( + self.env["stock.request"].search([("kanban_id", "=", kanban_1.id)]) + ) + self.pass_code(wizard, kanban_1.name) + self.assertEqual(wizard.status_state, 0) + self.assertTrue( + self.env["stock.request"].search([("kanban_id", "=", kanban_1.id)]) + ) + self.assertFalse( + self.env["stock.request"].search([("kanban_id", "=", kanban_2.id)]) + ) + self.pass_code(wizard, kanban_2.name) + self.assertTrue( + self.env["stock.request"].search([("kanban_id", "=", kanban_2.id)]) + ) + with self.assertRaises(ValidationError): + wizard.on_barcode_scanned(kanban_3.name) + self.assertFalse( + self.env["stock.request"].search([("kanban_id", "=", kanban_3.id)]) + ) + self.env["ir.config_parameter"].set_param("stock_request_kanban.crc", "0") + wizard.on_barcode_scanned(kanban_3.name) + self.assertEqual(wizard.status_state, 0) + self.assertTrue( + self.env["stock.request"].search([("kanban_id", "=", kanban_3.id)]) + ) diff --git a/stock_request_kanban/views/product_views.xml b/stock_request_kanban/views/product_views.xml new file mode 100644 index 00000000..1e12fa28 --- /dev/null +++ b/stock_request_kanban/views/product_views.xml @@ -0,0 +1,51 @@ + + + + + product.product.stock.request.kanban + product.product + + +
+ +
+
+
+ + product.template.stock.request.kanban + product.template + + +
+ +
+
+
+
diff --git a/stock_request_kanban/views/stock_inventory_kanban_views.xml b/stock_request_kanban/views/stock_inventory_kanban_views.xml new file mode 100644 index 00000000..80386b08 --- /dev/null +++ b/stock_request_kanban/views/stock_inventory_kanban_views.xml @@ -0,0 +1,124 @@ + + + + stock.inventory.kanban.tree + stock.inventory.kanban + + + + + + + + + + stock.inventory.kanban.form + stock.inventory.kanban + +
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + +
+ + +
+
+ + Stock Inventory Kanbans + stock.inventory.kanban + ir.actions.act_window + list,form + +

+ Click to add a Stock Inventory Kanban. +

+
+
+
diff --git a/stock_request_kanban/views/stock_request_kanban_views.xml b/stock_request_kanban/views/stock_request_kanban_views.xml new file mode 100644 index 00000000..10430307 --- /dev/null +++ b/stock_request_kanban/views/stock_request_kanban_views.xml @@ -0,0 +1,221 @@ + + + + + stock.request.kanban.tree + stock.request.kanban + + + + + + + + + + + + + + + + + stock.request.kanban.search + stock.request.kanban + + + + + + + + + + + + + + + + + + stock.request.kanban.form + stock.request.kanban + +
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + stock.request.kanban.kanban + stock.request.kanban + + + + + + + + + + + +
+ +
+ + + +
+
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • + + +
  • +
+
+
+ + + +
+ + + Stock Request Kanbans + stock.request.kanban + ir.actions.act_window + kanban,list,form + +

+ Click to add a Stock Request Kanban. +

+
+
+ diff --git a/stock_request_kanban/views/stock_request_menu.xml b/stock_request_kanban/views/stock_request_menu.xml new file mode 100644 index 00000000..8f915039 --- /dev/null +++ b/stock_request_kanban/views/stock_request_menu.xml @@ -0,0 +1,25 @@ + + + + + + diff --git a/stock_request_kanban/views/stock_request_order_views.xml b/stock_request_kanban/views/stock_request_order_views.xml new file mode 100644 index 00000000..a8ec592b --- /dev/null +++ b/stock_request_kanban/views/stock_request_order_views.xml @@ -0,0 +1,20 @@ + + + + stock.request.order.form + stock.request.order + + + +
+ +
+
+
diff --git a/stock_request_kanban/wizard/__init__.py b/stock_request_kanban/wizard/__init__.py new file mode 100644 index 00000000..c260008b --- /dev/null +++ b/stock_request_kanban/wizard/__init__.py @@ -0,0 +1,7 @@ +# Copyright 2018 Creu Blanca +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +from . import wizard_stock_request_kanban_abstract +from . import wizard_stock_request_kanban +from . import wizard_stock_request_order_kanban +from . import wizard_stock_inventory_kanban diff --git a/stock_request_kanban/wizard/wizard_stock_inventory_kanban.py b/stock_request_kanban/wizard/wizard_stock_inventory_kanban.py new file mode 100644 index 00000000..f6e05cd3 --- /dev/null +++ b/stock_request_kanban/wizard/wizard_stock_inventory_kanban.py @@ -0,0 +1,34 @@ +# Copyright 2017 Creu Blanca +# Copyright 2017-2024 ForgeFlow, S.L. +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +from odoo import fields, models + + +class WizardStockInventoryKanban(models.TransientModel): + _name = "wizard.stock.inventory.kanban" + _description = "Stock Inventory Kanban Wizard" + _inherit = "wizard.stock.request.kanban.abstract" + + inventory_kanban_id = fields.Many2one("stock.inventory.kanban", readonly=True) + + def barcode_ending(self): + res = super().barcode_ending() + self.inventory_kanban_id.write({"scanned_kanban_ids": [(4, self.kanban_id.id)]}) + return res + + def validate_kanban(self, barcode): + res = super().validate_kanban(barcode) + if not self.inventory_kanban_id.kanban_ids.filtered( + lambda r: r == self.kanban_id + ): + self.status = self.env._("Barcode %s is not in the inventory", barcode) + self.status_state = 1 + return False + if self.inventory_kanban_id.scanned_kanban_ids.filtered( + lambda r: r == self.kanban_id + ): + self.status = self.env._("Barcode %s is already scanned", barcode) + self.status_state = 1 + return False + return res diff --git a/stock_request_kanban/wizard/wizard_stock_inventory_kanban_views.xml b/stock_request_kanban/wizard/wizard_stock_inventory_kanban_views.xml new file mode 100644 index 00000000..e90b45d9 --- /dev/null +++ b/stock_request_kanban/wizard/wizard_stock_inventory_kanban_views.xml @@ -0,0 +1,54 @@ + + + + + wizard.stock.inventory.kanban.form + wizard.stock.inventory.kanban + +
+ + + + + +
+
+ +
+
+ + Add Kanban + wizard.stock.inventory.kanban + form + {'default_inventory_kanban_id': active_id} + new + +
diff --git a/stock_request_kanban/wizard/wizard_stock_request_kanban.py b/stock_request_kanban/wizard/wizard_stock_request_kanban.py new file mode 100644 index 00000000..dabab757 --- /dev/null +++ b/stock_request_kanban/wizard/wizard_stock_request_kanban.py @@ -0,0 +1,50 @@ +# Copyright 2017 Creu Blanca +# Copyright 2017-2024 ForgeFlow, S.L. +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +from odoo import Command, fields, models + + +class WizardStockRequestKanban(models.TransientModel): + _name = "wizard.stock.request.kanban" + _description = "Stock Request Kanban Wizard" + _inherit = "wizard.stock.request.kanban.abstract" + + stock_request_id = fields.Many2one("stock.request", readonly=True) + + def barcode_ending(self): + res = super().barcode_ending() + self.stock_request_id = self.env["stock.request"].create( + self.stock_request_kanban_values() + ) + self.stock_request_ending() + self.update_status() + return res + + def stock_request_ending(self): + self.stock_request_id.action_confirm() + + def update_status(self): + self.update( + { + "status_state": 0, + "status": self.env._( + "Added kanban %(kanban)s for product %(product)s", + kanban=self.stock_request_id.kanban_id.name, + product=self.stock_request_id.product_id.display_name, + ), + } + ) + + def stock_request_kanban_values(self): + return { + "company_id": self.kanban_id.company_id.id, + "reference_ids": [Command.set(self.kanban_id.reference_ids.ids)], + "location_id": self.kanban_id.location_id.id or False, + "warehouse_id": self.kanban_id.warehouse_id.id or False, + "product_id": self.kanban_id.product_id.id, + "product_uom_id": self.kanban_id.product_uom_id.id or False, + "route_id": self.kanban_id.route_id.id or False, + "product_uom_qty": self.kanban_id.product_uom_qty, + "kanban_id": self.kanban_id.id, + } diff --git a/stock_request_kanban/wizard/wizard_stock_request_kanban_abstract.py b/stock_request_kanban/wizard/wizard_stock_request_kanban_abstract.py new file mode 100644 index 00000000..f9fe3c21 --- /dev/null +++ b/stock_request_kanban/wizard/wizard_stock_request_kanban_abstract.py @@ -0,0 +1,42 @@ +# Copyright 2017 Creu Blanca +# Copyright 2017-2024 ForgeFlow, S.L. +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +from odoo import fields, models + + +class WizardStockRequestKanbanAbstract(models.AbstractModel): + _name = "wizard.stock.request.kanban.abstract" + _description = "Stock Request Kanban Abstract Wizard" + _inherit = "barcodes.barcode_events_mixin" + + kanban_id = fields.Many2one("stock.request.kanban", readonly=True) + status = fields.Text(readonly=True, default="Start scanning") + status_state = fields.Integer(default=0, readonly=True) + + def on_barcode_scanned(self, barcode): + self.kanban_id = self.env["stock.request.kanban"].search_barcode(barcode) + if not self.kanban_id: + self.status = self.env._( + "Barcode %s does not correspond to any " + "Kanban. Try with another barcode or " + "press Close to finish scanning.", + barcode, + ) + self.status_state = 1 + return + if self.validate_kanban(barcode): + self.status_state = 0 + self.barcode_ending() + return + + def barcode_ending(self): + pass + + def validate_kanban(self, barcode): + """ + It must return True if the kanban is valid, False otherwise + :param barcode: + :return: + """ + return True diff --git a/stock_request_kanban/wizard/wizard_stock_request_kanban_views.xml b/stock_request_kanban/wizard/wizard_stock_request_kanban_views.xml new file mode 100644 index 00000000..95c18577 --- /dev/null +++ b/stock_request_kanban/wizard/wizard_stock_request_kanban_views.xml @@ -0,0 +1,53 @@ + + + + + wizard.stock.request.kanban.form + wizard.stock.request.kanban + +
+ + + + + +
+
+ +
+
+ + Add Kanban + wizard.stock.request.kanban + form + new + +
diff --git a/stock_request_kanban/wizard/wizard_stock_request_order_kanban.py b/stock_request_kanban/wizard/wizard_stock_request_order_kanban.py new file mode 100644 index 00000000..3a3e0c40 --- /dev/null +++ b/stock_request_kanban/wizard/wizard_stock_request_order_kanban.py @@ -0,0 +1,55 @@ +# Copyright 2017 Creu Blanca +# Copyright 2017-2024 ForgeFlow, S.L. +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +from odoo import fields, models +from odoo.exceptions import ValidationError + + +class WizardStockRequestOrderKanban(models.TransientModel): + _name = "wizard.stock.request.order.kanban" + _description = "Stock Request Order Kanban Wizard" + _inherit = "wizard.stock.request.kanban" + + order_id = fields.Many2one("stock.request.order", required=True) + + def validate_kanban(self, barcode): + res = super().validate_kanban(barcode) + if self.order_id.stock_request_ids.filtered( + lambda r: r.kanban_id == self.kanban_id + ): + self.status = self.env._("Barcode %s is on the order", barcode) + self.status_state = 1 + return False + if self.order_id.state != "draft": + raise ValidationError( + self.env._("Lines only can be added on orders with draft state") + ) + if not self.order_id.company_id: + self.order_id.company_id = self.kanban_id.company_id + elif self.order_id.company_id != self.kanban_id.company_id: + raise ValidationError(self.env._("Company must be the same")) + if ( + self.kanban_id.reference_ids + and self.order_id.reference_ids != self.kanban_id.reference_ids + ): + raise ValidationError(self.env._("References must be the same")) + if self.order_id.location_id != self.kanban_id.location_id: + raise ValidationError(self.env._("Location must be the same")) + if self.order_id.warehouse_id != self.kanban_id.warehouse_id: + raise ValidationError(self.env._("Warehouse must be the same")) + return res + + def stock_request_kanban_values(self): + res = super().stock_request_kanban_values() + res["order_id"] = (self.order_id.id,) + res["expected_date"] = fields.Datetime.to_string(self.order_id.expected_date) + return res + + def stock_request_ending(self): + return + + def barcode_ending(self): + res = super().barcode_ending() + self.order_id = self.stock_request_id.order_id + return res diff --git a/stock_request_kanban/wizard/wizard_stock_request_order_kanban_views.xml b/stock_request_kanban/wizard/wizard_stock_request_order_kanban_views.xml new file mode 100644 index 00000000..96e70414 --- /dev/null +++ b/stock_request_kanban/wizard/wizard_stock_request_order_kanban_views.xml @@ -0,0 +1,26 @@ + + + + + wizard.stock.request.order.kanban.form + wizard.stock.request.order.kanban + primary + + + + + + + + + Add Kanban + wizard.stock.request.order.kanban + form + {'default_order_id': active_id} + new + +