From 09a6255d9c42721ece622ff7a0d6fba8e66b808c Mon Sep 17 00:00:00 2001
From: mgw <1392924357@qq.com>
Date: Fri, 2 Aug 2024 09:57:52 +0800
Subject: [PATCH 01/36] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E6=97=A0=E7=94=A8?=
=?UTF-8?q?=E6=96=87=E4=BB=B6=E5=A4=B9=E5=8F=8A=E6=9C=AA=E7=94=A8po?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../translation_Po/zh_CN.po | 5856 -----------------
1 file changed, 5856 deletions(-)
delete mode 100644 sf_manufacturing_translation/translation_Po/zh_CN.po
diff --git a/sf_manufacturing_translation/translation_Po/zh_CN.po b/sf_manufacturing_translation/translation_Po/zh_CN.po
deleted file mode 100644
index 377374df..00000000
--- a/sf_manufacturing_translation/translation_Po/zh_CN.po
+++ /dev/null
@@ -1,5856 +0,0 @@
-# Translation of Odoo Server.
-# This file contains the translation of the following modules:
-# * mrp
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Odoo Server 16.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-02-01 09:28+0000\n"
-"PO-Revision-Date: 2023-02-01 17:32+0800\n"
-"Last-Translator: \n"
-"Language-Team: \n"
-"Language: zh_CN\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: \n"
-"X-Generator: Poedit 3.2.2\n"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_production__state model:ir.model.fields,help:mrp.field_mrp_workorder__production_state
-msgid ""
-" * Draft: The MO is not confirmed yet.\n"
-" * Confirmed: The MO is confirmed, the stock rules and the reordering of the components are trigerred.\n"
-" * In Progress: The production has started (on the MO or on the WO).\n"
-" * To Close: The production is done, the MO has to be closed.\n"
-" * Done: The MO is closed, the stock moves are posted. \n"
-" * Cancelled: The MO has been cancelled, can't be confirmed anymore."
-msgstr ""
-" * 草稿:尚未确认MO。\n"
-"* 已确认:已确认MO,将触发库存规则和组件的重订购规则。\n"
-"* 进行中:生产已经开始(MO或WO)。\n"
-"* 关闭:生产完成后,必须关闭MO。\n"
-"* 完成:MO已关闭,库存移动已过帐。\n"
-"* 已取消:MO已被取消,无法再确认。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/stock_rule.py:0
-#, python-format
-msgid " The components will be taken from %s ."
-msgstr " 组件将取自%s ."
-
-#. module: mrp
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_bom__ready_to_produce__all_available
-msgid " When all components are available"
-msgstr " 当所有组件都可用时"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_product_product__bom_count
-#: model:ir.model.fields,field_description:mrp.field_product_template__bom_count
-msgid "# Bill of Material"
-msgstr "# BOM"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_product_product__used_in_bom_count
-msgid "# BoM Where Used"
-msgstr "# BOM 使用"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__workorder_ready_count
-msgid "# Read Work Orders"
-msgstr "# 读取工单"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_routing_workcenter__workorder_count
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__workorder_count
-msgid "# Work Orders"
-msgstr "# 工单"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_product_template__used_in_bom_count
-msgid "# of BoM Where is Used"
-msgstr "# BOM 使用"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_unbuild.py:0
-#, python-format
-msgid "%(qty)s %(measure)s unbuilt in %(order)s"
-msgstr "%(qty)s %(measure)s 未建立于 %(order)s 中"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_routing.py:0
-#, python-format
-msgid "%i work orders"
-msgstr "%i 工单"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_bom.py:0
-#, python-format
-msgid "%s (new) %s"
-msgstr "%s (新的) %s"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "%s Child MO's"
-msgstr "%s 下级 MO's"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "%s cannot be deleted. Try to cancel them before."
-msgstr "%s无法被删除。 尝试先取消。"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_immediate_production
-msgid ">"
-msgstr ""
-
-#. module: mrp
-#: model:ir.actions.report,print_report_name:mrp.action_report_bom_structure
-msgid "'Bom Overview - %s' % object.display_name"
-msgstr "'Bom 结构 - %s' % object.display_name"
-
-#. module: mrp
-#: model:ir.actions.report,print_report_name:mrp.action_report_finished_product
-msgid "'Finished products - %s' % object.name"
-msgstr "'完工产品- %s' % object.name"
-
-#. module: mrp
-#: model:ir.actions.report,print_report_name:mrp.action_report_production_order
-msgid "'Production Order - %s' % object.name"
-msgstr "'制造单 - %s' % object.name"
-
-#. module: mrp
-#: model:ir.actions.report,print_report_name:mrp.action_report_workorder
-msgid "'Work Order - %s' % object.name"
-msgstr "'工单 - %s' % object.name"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/stock_rule.py:0
-#, python-format
-msgid "+ %d day(s)"
-msgstr "+ %d天(s)"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.exception_on_mo
-msgid ""
-".\n"
-" Manual actions may be needed."
-msgstr ""
-".\n"
-" 可能需要手动动作。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_unbuild.py:0
-#, python-format
-msgid ": Insufficient Quantity To Unbuild"
-msgstr ":数量不足以拆解"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_kanban model_terms:ir.ui.view,arch_db:mrp.stock_production_type_kanban
-msgid ""
-msgstr ""
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.workcenter_line_kanban
-msgid ""
-msgstr ""
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.workcenter_line_kanban
-msgid ""
-msgstr ""
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.workcenter_line_kanban
-msgid ""
-msgstr ""
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_bom.py:0
-#, python-format
-msgid ""
-"
\n"
-" Upload files to your product\n"
-"
\n"
-" Use this feature to store any files, like drawings or specifications.\n"
-"
"
-msgstr ""
-"\n"
-" 上传文件到产品\n"
-"
\n"
-" 使用此功能存储任何文件,如图纸或规格。\n"
-"
"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.res_config_settings_view_form
-msgid ""
-""
-msgstr ""
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view
-msgid "To Produce "
-msgstr "待生产 "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view
-msgid "Backorders "
-msgstr "欠单 "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view
-msgid "Child MO "
-msgstr "子MO 子"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_view
-msgid "Load "
-msgstr "负载 "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_view
-msgid "Lost "
-msgstr "损失 "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.product_product_form_view_bom_button
-#: model_terms:ir.ui.view,arch_db:mrp.product_template_form_view_bom_button
-msgid "Manufactured "
-msgstr "制造 "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_view
-msgid "OEE "
-msgstr ""
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_bom_form_view
-msgid "Operations Performance "
-msgstr "作业 效能 "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_view
-msgid "Performance "
-msgstr "效能 "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view model_terms:ir.ui.view,arch_db:mrp.mrp_production_workorder_form_view_inherit
-msgid "Scraps "
-msgstr "报废 "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view
-msgid "Source MO "
-msgstr "源 MO "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view
-msgid "Unbuilds "
-msgstr "未建立 "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.report_mrp_production_components
-msgid ""
-"\n"
-" Components\n"
-" "
-msgstr ""
-"\n"
-" 物料清单\n"
-" "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_kanban
-msgid "Actions "
-msgstr "动作 "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_assign_serial_numbers_production
-msgid "Generate "
-msgstr "生成 "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.stock_production_type_kanban
-msgid "New "
-msgstr "新建 "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.stock_production_type_kanban
-msgid "Orders "
-msgstr "订单 "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_kanban
-msgid "PLAN ORDERS "
-msgstr "安排订单 "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.stock_report_delivery_no_kit_section
-msgid "Products not associated with a kit "
-msgstr "产品与套件无关联 "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_kanban
-msgid "Reporting "
-msgstr "报告 "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_kanban
-msgid "WORK ORDERS "
-msgstr "工单 "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_workorder_form_view_inherit
-msgid "minutes "
-msgstr "分钟 "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_workorder_form_view_inherit
-msgid "to "
-msgstr "到 "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.report_mrporder
-msgid "Actual Duration (minutes) "
-msgstr "实际期间 (分) "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.report_mrporder
-msgid "Deadline: "
-msgstr "截止日期: "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.report_mrporder
-msgid "Description: "
-msgstr "描述: "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.report_mrporder
-msgid "Duration (minutes) "
-msgstr "期间 (分) "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_workcenter_productivity_loss_kanban
-msgid "Effectiveness Category: "
-msgstr "有效性类别: "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.report_mrp_workorder
-msgid "Finished Product: "
-msgstr "完工产品: "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_workcenter_productivity_loss_kanban
-msgid "Is a Blocking Reason? "
-msgstr "是阻塞原因? "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.report_mrp_workorder
-msgid "Manufacturing Order: "
-msgstr "制造订单 : "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.report_mrporder
-msgid "Operation "
-msgstr "作业 "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.report_mrporder
-msgid "Product: "
-msgstr "产品: "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.report_mrporder
-msgid "Quantity Producing: "
-msgstr "正在生产数量 "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.report_mrp_workorder model_terms:ir.ui.view,arch_db:mrp.report_mrporder
-msgid "Quantity to Produce: "
-msgstr "待生产数量: "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_workcenter_productivity_loss_kanban
-msgid "Reason: "
-msgstr "原因: "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.report_mrp_workorder model_terms:ir.ui.view,arch_db:mrp.report_mrporder
-msgid "Responsible: "
-msgstr "负责人: "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.report_mrporder
-msgid "Source: "
-msgstr "来源: "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workorder_view_gantt model_terms:ir.ui.view,arch_db:mrp.workcenter_line_gantt_production
-msgid "Start Date: "
-msgstr "开始日期: "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workorder_view_gantt model_terms:ir.ui.view,arch_db:mrp.workcenter_line_gantt_production
-msgid "Stop Date: "
-msgstr "停止日期: "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.report_mrp_bom
-msgid "Unit Cost "
-msgstr "单位成本 "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.report_mrporder
-msgid "WorkCenter "
-msgstr "工作中心 "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workorder_view_gantt model_terms:ir.ui.view,arch_db:mrp.workcenter_line_gantt_production
-msgid "Workcenter: "
-msgstr "工作中心: "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.stock_warn_insufficient_qty_unbuild_form_view
-msgid "? This may lead to inconsistencies in your inventory."
-msgstr "?这可能会导致库存不一致。"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_bom_form_view
-msgid "A BoM of type kit is used to split the product into its components."
-msgstr "BoM类型套件用于将产品拆分为其组件。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_workorder.py:0
-#, python-format
-msgid "A Manufacturing Order is already done or cancelled."
-msgstr "制造订单已经完成或者被取消."
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/stock_warehouse.py:0
-#, python-format
-msgid "A product with a kit-type bill of materials can not have a reordering rule."
-msgstr "具有套件类型BOM的产品不能具有重新订购规则。"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_document__access_token
-msgid "Access Token"
-msgstr "访问令牌"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_rule__action
-msgid "Action"
-msgstr "动作"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__message_needaction
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__message_needaction
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__message_needaction
-msgid "Action Needed"
-msgstr "需要动作"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__active model:ir.model.fields,field_description:mrp.field_mrp_document__active
-#: model:ir.model.fields,field_description:mrp.field_mrp_routing_workcenter__active
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__active
-msgid "Active"
-msgstr "启用"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__activity_ids
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__activity_ids
-msgid "Activities"
-msgstr "活动"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__activity_exception_decoration
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__activity_exception_decoration
-msgid "Activity Exception Decoration"
-msgstr "活动异常勋章"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__activity_state
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__activity_state
-msgid "Activity State"
-msgstr "活动状态"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__activity_type_icon
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__activity_type_icon
-msgid "Activity Type Icon"
-msgstr "活动类型图表"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_block_wizard_form
-msgid "Add a description..."
-msgstr "添加描述。"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_routing_workcenter_bom_tree_view
-msgid "Add a line"
-msgstr "添加明细行"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.res_config_settings_view_form
-msgid ""
-"Add by-products to bills of materials. This can be used to get several finished products as well. Without this option you only do: A + B = "
-"C. With the option: A + B = C + D."
-msgstr "添加副产品到BOM。 这也可以用来获得几个完工产品。 没有这个选项,您只能这样做:A + B = C。选项:A + B = C + D."
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.res_config_settings_view_form
-msgid "Add quality checks to your work orders"
-msgstr "为您的工单增加质量检查"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_mrp_workcenter_tag
-msgid "Add tag for the workcenter"
-msgstr "为工作中心添加标签"
-
-#. module: mrp
-#: model:res.groups,name:mrp.group_mrp_manager
-msgid "Administrator"
-msgstr "管理员"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.stock_production_type_kanban
-msgid "All"
-msgstr "全部"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/controller/main.py:0
-#, python-format
-msgid "All files uploaded"
-msgstr "已上载所有文件"
-
-#. module: mrp
-#: model:ir.model.constraint,message:mrp.constraint_mrp_bom_line_bom_qty_zero
-msgid ""
-"All product quantities must be greater or equal to 0.\n"
-"Lines with 0 quantities can be used as optional lines. \n"
-"You should install the mrp_byproduct module if you want to manage extra products on BoMs !"
-msgstr ""
-"所有产品数量必须大于或等于0。\n"
-"数量为0的行可以用作可选行。\n"
-"如果要管理BOM上的额外产品,则应安装mrp_byproduct模块!"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view
-msgid "Allocation"
-msgstr "分配"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_res_config_settings__group_mrp_reception_report
-msgid "Allocation Report for Manufacturing Orders"
-msgstr ""
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__allow_workorder_dependencies
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__allow_workorder_dependencies
-msgid "Allow Work Order Dependencies"
-msgstr "容许工单依赖"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_production__use_auto_consume_components_lots
-#: model:ir.model.fields,help:mrp.field_stock_picking_type__use_auto_consume_components_lots
-msgid "Allow automatic consumption of tracked components that are reserved"
-msgstr ""
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.res_config_settings_view_form
-msgid "Allow manufacturing users to modify quantities to consume, without the need for prior approval"
-msgstr "允许生产用户修改消耗的数量,而不需要事先批准"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_production__use_create_components_lots
-#: model:ir.model.fields,help:mrp.field_stock_picking_type__use_create_components_lots
-msgid "Allow to create new lot/serial numbers for the components"
-msgstr "允许为组件创建新的批号/序列号"
-
-#. module: mrp
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_bom__consumption__flexible
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_consumption_warning__consumption__flexible
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_production__consumption__flexible
-msgid "Allowed"
-msgstr "允许"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__reserve_visible
-msgid "Allowed to Reserve Production"
-msgstr "允许预留生产"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__unreserve_visible
-msgid "Allowed to Unreserve Production"
-msgstr "允许取消预留生产"
-
-#. module: mrp
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_bom__consumption__warning
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_consumption_warning__consumption__warning
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_production__consumption__warning
-msgid "Allowed with warning"
-msgstr "允许但警告"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__alternative_workcenter_ids
-msgid "Alternative Workcenters"
-msgstr "替代工作中心"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_workcenter__alternative_workcenter_ids
-msgid "Alternative workcenters that can be substituted to this one in order to dispatch production"
-msgstr "可以替代此工作中心进行生产的其他工作中心"
-
-#. module: mrp
-#: model_terms:ir.actions.act_window,help:mrp.mrp_unbuild
-msgid "An unbuild order is used to break down a finished product into its components."
-msgstr "拆解单用于将成品分解为其组件。"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_assign_serial_numbers_production model_terms:ir.ui.view,arch_db:mrp.view_immediate_production
-msgid "Apply"
-msgstr "应用"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_byproduct__bom_product_template_attribute_value_ids
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_line__bom_product_template_attribute_value_ids
-#: model:ir.model.fields,field_description:mrp.field_mrp_routing_workcenter__bom_product_template_attribute_value_ids
-msgid "Apply on Variants"
-msgstr "应用于变体"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_change_production_qty_wizard
-msgid "Approve"
-msgstr "批准"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_routing_workcenter_bom_tree_view
-msgid "Archive Operation"
-msgstr "归档作业"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_bom_form_view model_terms:ir.ui.view,arch_db:mrp.mrp_routing_workcenter_filter
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_routing_workcenter_form_view model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_view
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_bom_filter model_terms:ir.ui.view,arch_db:mrp.view_mrp_workcenter_search
-msgid "Archived"
-msgstr "已归档"
-
-#. module: mrp
-#: model:ir.actions.act_window,name:mrp.act_assign_serial_numbers_production
-msgid "Assign Serial Numbers"
-msgstr "分配序列号"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_bom_form_view
-msgid "At the creation of a Manufacturing Order."
-msgstr "在创建制造订单时。"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_bom_form_view
-msgid "At the creation of a Stock Transfer."
-msgstr "在库存调拨创建时。"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_document_form
-msgid "Attached To"
-msgstr "附加于"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__message_attachment_count
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__message_attachment_count
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__message_attachment_count
-msgid "Attachment Count"
-msgstr "附件数量"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_document__local_url
-msgid "Attachment URL"
-msgstr "附件网址"
-
-#. module: mrp
-#. odoo-javascript
-#. odoo-python
-#: code:addons/mrp/models/mrp_bom.py:0 code:addons/mrp/static/src/components/bom_overview_line/mrp_bom_overview_line.js:0
-#: code:addons/mrp/static/src/components/bom_overview_table/mrp_bom_overview_table.xml:0
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_document_form
-#, python-format
-msgid "Attachments"
-msgstr "附件"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_line__attachments_count
-msgid "Attachments Count"
-msgstr "附件数"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__product_variant_attributes
-msgid "Attribute Values"
-msgstr "属性值"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_display_filter/mrp_bom_overview_display_filter.js:0
-#, python-format
-msgid "Availabilities"
-msgstr "可用性"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_table/mrp_bom_overview_table.xml:0
-#, python-format
-msgid "Availabilities on products."
-msgstr "产品可用数量"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_table/mrp_bom_overview_table.xml:0
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_workcenter_productivity_loss_type__loss_type__availability
-#: model_terms:ir.ui.view,arch_db:mrp.report_mrp_bom
-#, python-format
-msgid "Availability"
-msgstr "可用量"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.oee_search_view
-msgid "Availability Losses"
-msgstr "可用性损失"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0 code:addons/mrp/report/mrp_report_bom_structure.py:0
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_production__components_availability_state__available
-#, python-format
-msgid "Available"
-msgstr "可用"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.workcenter_line_kanban
-msgid "Avatar"
-msgstr "形象"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_product_product__produce_delay model:ir.model.fields,help:mrp.field_product_template__produce_delay
-msgid ""
-"Average lead time in days to manufacture this product. In the case of multi-level BOM, the manufacturing lead times of the components will "
-"be added. In case the product is subcontracted, this can be used to determine the date at which components should be sent to the "
-"subcontractor."
-msgstr ""
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_report_mrp_report_bom_structure
-msgid "BOM Overview Report"
-msgstr "BOM总览报表"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_product_product__variant_bom_ids
-msgid "BOM Product Variants"
-msgstr "BOM产品变体"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_bom_byproduct__bom_product_template_attribute_value_ids
-#: model:ir.model.fields,help:mrp.field_mrp_bom_line__bom_product_template_attribute_value_ids
-#: model:ir.model.fields,help:mrp.field_mrp_routing_workcenter__bom_product_template_attribute_value_ids
-msgid "BOM Product Variants needed to apply this line."
-msgstr "BOM产品变体需要应用到此行。"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_line__child_line_ids
-msgid "BOM lines of the referred bom"
-msgstr "参考BOM中的BOM行"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_mrp_production_backorder_line
-msgid "Backorder Confirmation Line"
-msgstr "欠单确认行"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_backorder__mrp_production_backorder_line_ids
-msgid "Backorder Confirmation Lines"
-msgstr "欠单确认明细行"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "Backorder MO"
-msgstr "欠单MO"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "Backorder MO's"
-msgstr "欠单MO的"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__backorder_sequence
-msgid "Backorder Sequence"
-msgstr "欠单序号"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_production__backorder_sequence
-msgid "Backorder sequence, if equals to 0 means there is not related backorder"
-msgstr "欠单顺序,如果等于0表示没有相关的欠单"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.report_mrp_production_components
-msgid "Barcode"
-msgstr "条码"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_routing_workcenter__time_mode_batch
-msgid "Based on"
-msgstr "基于"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_mrp_bom model:ir.model.fields,field_description:mrp.field_mrp_production__bom_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_routing_workcenter__bom_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__bom_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__production_bom_id model_terms:ir.ui.view,arch_db:mrp.mrp_bom_form_view
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_routing_workcenter_filter
-msgid "Bill of Material"
-msgstr "物料清单"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_mrp_bom_line
-msgid "Bill of Material Line"
-msgstr "BOM明细行"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_bom_line_view_form
-msgid "Bill of Material line"
-msgstr "BOM明细行"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__mo_bom_id
-msgid "Bill of Material used on the Production Order"
-msgstr "生产单上使用的BOM"
-
-#. module: mrp
-#: model:ir.actions.act_window,name:mrp.product_open_bom model:ir.actions.act_window,name:mrp.template_open_bom
-#: model:ir.model.fields,field_description:mrp.field_product_product__bom_ids
-#: model:ir.model.fields,field_description:mrp.field_product_template__bom_ids
-#: model:ir.model.fields,field_description:mrp.field_stock_warehouse_orderpoint__bom_id model_terms:ir.ui.view,arch_db:mrp.mrp_bom_tree_view
-#: model_terms:ir.ui.view,arch_db:mrp.product_product_form_view_bom_button
-#: model_terms:ir.ui.view,arch_db:mrp.product_template_form_view_bom_button model_terms:ir.ui.view,arch_db:mrp.view_mrp_bom_filter
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_product_template_form_inherited
-msgid "Bill of Materials"
-msgstr "BOM"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_production__bom_id model:ir.model.fields,help:mrp.field_mrp_unbuild__mo_bom_id
-#: model:ir.model.fields,help:mrp.field_mrp_workorder__production_bom_id
-msgid "Bill of Materials allow you to define the list of required components to make a finished product."
-msgstr "材料明细表允许您定义制造成品所需的组件清单。"
-
-#. module: mrp
-#: model:ir.actions.act_window,name:mrp.mrp_bom_form_action model:ir.ui.menu,name:mrp.menu_mrp_bom_form_action
-msgid "Bills of Materials"
-msgstr "物料清单"
-
-#. module: mrp
-#: model_terms:ir.actions.act_window,help:mrp.mrp_bom_form_action
-msgid ""
-"Bills of materials allow you to define the list of required raw\n"
-" materials used to make a finished product; through a manufacturing\n"
-" order or a pack of products."
-msgstr ""
-"BOM(BOM)可定义制造成品所需原的材料,\n"
-"包括工单或包装。"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_workorder_tree_editable_view
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_block_wizard_form
-msgid "Block"
-msgstr "区块"
-
-#. module: mrp
-#: model:ir.actions.act_window,name:mrp.act_mrp_block_workcenter model:ir.actions.act_window,name:mrp.act_mrp_block_workcenter_wo
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_block_wizard_form
-msgid "Block Workcenter"
-msgstr "阻塞工作中心"
-
-#. module: mrp
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_bom__consumption__strict
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_consumption_warning__consumption__strict
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_production__consumption__strict
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_workcenter__working_state__blocked
-msgid "Blocked"
-msgstr "暂停"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_routing_workcenter__blocked_by_operation_ids
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__blocked_by_workorder_ids
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_workorder_form_view_inherit
-msgid "Blocked By"
-msgstr "阻塞被"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__blocked_time
-msgid "Blocked Time"
-msgstr "阻塞时间"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_workcenter__blocked_time
-msgid "Blocked hours over the last month"
-msgstr "过去一月阻塞的时数"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity_loss__name
-msgid "Blocking Reason"
-msgstr "阻塞原因"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_routing_workcenter__needed_by_operation_ids
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__needed_by_workorder_ids
-msgid "Blocks"
-msgstr "阻塞数"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_byproduct__bom_id
-msgid "BoM"
-msgstr "BOM"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_product_product__bom_line_ids
-#: model:ir.model.fields,field_description:mrp.field_product_template__bom_line_ids
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_product_product_search_view model_terms:ir.ui.view,arch_db:mrp.mrp_product_template_search_view
-msgid "BoM Components"
-msgstr "BOM组件"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_table/mrp_bom_overview_table.xml:0 model_terms:ir.ui.view,arch_db:mrp.report_mrp_bom
-#, python-format
-msgid "BoM Cost"
-msgstr "BOM成本"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_move__bom_line_id
-msgid "BoM Line"
-msgstr "BOM行"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__bom_line_ids
-msgid "BoM Lines"
-msgstr "BOM明细行"
-
-#. module: mrp
-#: model:ir.actions.client,name:mrp.action_report_mrp_bom model:ir.actions.report,name:mrp.action_report_bom_structure
-#: model_terms:ir.ui.view,arch_db:mrp.report_mrp_bom
-msgid "BoM Overview"
-msgstr "BOM 概要"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__type model_terms:ir.ui.view,arch_db:mrp.view_mrp_bom_filter
-msgid "BoM Type"
-msgstr "BOM类型"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_bom.py:0
-#, python-format
-msgid "BoM line product %s should not be the same as BoM product."
-msgstr "BoM明细中的产品%s不应与BoM产品相同。"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_special_line/mrp_bom_overview_special_line.xml:0
-#: model:ir.model.fields,field_description:mrp.field_res_config_settings__group_mrp_byproducts
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view
-#, python-format
-msgid "By-Products"
-msgstr "副产品"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_byproduct__product_id
-msgid "By-product"
-msgstr "副产品"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_bom.py:0
-#, python-format
-msgid "By-product %s should not be the same as BoM product."
-msgstr "副产品%s不应该与BoM产品相同。"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_stock_move__byproduct_id
-msgid "By-product line that generated the move in a manufacturing order"
-msgstr "在制造订单中产生库存移动的副产品明细"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__byproduct_ids
-#: model:ir.model.fields,field_description:mrp.field_stock_move__byproduct_id model_terms:ir.ui.view,arch_db:mrp.mrp_bom_form_view
-msgid "By-products"
-msgstr "副产品"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_bom.py:0 code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "By-products cost shares must be positive."
-msgstr "副产品的成本分摊必须是正数。"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_mrp_bom_byproduct model_terms:ir.ui.view,arch_db:mrp.mrp_bom_byproduct_form_view
-msgid "Byproduct"
-msgstr "副产品"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/report/mrp_report_bom_structure.py:0
-#, python-format
-msgid "Byproducts"
-msgstr "副产品"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/stock_warehouse.py:0
-#, python-format
-msgid "Can't find any production location."
-msgstr "找不到任何制造位置 。"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view model_terms:ir.ui.view,arch_db:mrp.mrp_production_tree_view
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_block_wizard_form model_terms:ir.ui.view,arch_db:mrp.view_assign_serial_numbers_production
-#: model_terms:ir.ui.view,arch_db:mrp.view_change_production_qty_wizard model_terms:ir.ui.view,arch_db:mrp.view_immediate_production
-msgid "Cancel"
-msgstr "取消"
-
-#. module: mrp
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_production__state__cancel
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_workorder__state__cancel
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_filter
-msgid "Cancelled"
-msgstr "已取消"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "Cannot delete a manufacturing order in done state."
-msgstr "无法删除状态为完成的制造订单。"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__default_capacity
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_capacity__capacity
-msgid "Capacity"
-msgstr "产能"
-
-#. module: mrp
-#: model:ir.model.constraint,message:mrp.constraint_mrp_workcenter_capacity_positive_capacity
-msgid "Capacity should be a positive number."
-msgstr "容量应该是一个正数。"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__qty_reported_from_previous_wo
-msgid "Carried Quantity"
-msgstr "已运送数量"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__product_uom_category_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_byproduct__product_uom_category_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_line__product_uom_category_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__product_uom_category_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity_loss__loss_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity_loss_type__loss_type
-#: model_terms:ir.ui.view,arch_db:mrp.oee_loss_tree_view
-msgid "Category"
-msgstr "类别"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_change_production_qty_wizard
-msgid "Change Product Qty"
-msgstr "变更产品数量"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_change_production_qty
-msgid "Change Production Qty"
-msgstr "变更生产数量"
-
-#. module: mrp
-#: model:ir.actions.act_window,name:mrp.action_change_production_qty
-msgid "Change Quantity To Produce"
-msgstr "变更待生产数量"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view
-msgid "Check availability"
-msgstr "检查可用性"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_document__checksum
-msgid "Checksum/SHA1"
-msgstr "校验和/SHA1"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__time_stop
-msgid "Cleanup Time"
-msgstr "清理时间"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_capacity__time_stop
-msgid "Cleanup Time (minutes)"
-msgstr "清理时间 (分钟)"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__code model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_view_kanban
-msgid "Code"
-msgstr "代号"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__color
-msgid "Color"
-msgstr "颜色"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_tag__color
-msgid "Color Index"
-msgstr "颜色索引"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_res_company
-msgid "Companies"
-msgstr "公司"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__company_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_byproduct__company_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_line__company_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_document__company_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__company_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_routing_workcenter__company_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__company_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__company_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity__company_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__company_id model_terms:ir.ui.view,arch_db:mrp.view_mrp_workcenter_search
-msgid "Company"
-msgstr "公司"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_line__product_id model_terms:ir.ui.view,arch_db:mrp.mrp_bom_line_view_form
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_bom_filter model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_filter
-#, fuzzy
-msgid "Component"
-msgstr "物料清单"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__components_availability
-msgid "Component Status"
-msgstr "组件状态"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/mrp_forecasted/forecasted_details.xml:0
-#, python-format
-msgid "Component of Draft MO"
-msgstr "草稿状态MO的组件"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__move_raw_ids model_terms:ir.ui.view,arch_db:mrp.mrp_bom_form_view
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view model_terms:ir.ui.view,arch_db:mrp.mrp_production_workorder_form_view_inherit
-msgid "Components"
-msgstr "物料清单"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__components_availability_state
-msgid "Components Availability State"
-msgstr "组件可用性状态"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__location_src_id
-msgid "Components Location"
-msgstr "组件位置"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_production__priority
-msgid "Components will be reserved first for the MO with the highest priorities."
-msgstr "将首先为具有最高优先级的MO预留组件。"
-
-#. module: mrp
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_routing_workcenter__time_mode__auto
-msgid "Compute based on tracked time"
-msgstr "根据跟踪时间进行计算"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_product_template_form_inherited
-msgid "Compute from BoM"
-msgstr "从BOM计算"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_product_template_form_inherited
-msgid "Compute the days required to resupply all components from BoM, by either buying or manufacturing the components and/or subassemblies."
-msgstr "通过购买或制造组件和/或子组件,计算出从BoM重新供应所有组件所需的天数。"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_routing_workcenter__time_computed_on
-msgid "Computed on last"
-msgstr "最后计算"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_res_config_settings
-msgid "Config Settings"
-msgstr "配置设置"
-
-#. module: mrp
-#: model:ir.ui.menu,name:mrp.menu_mrp_configuration model_terms:ir.ui.view,arch_db:mrp.stock_production_type_kanban
-msgid "Configuration"
-msgstr "配置"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view model_terms:ir.ui.view,arch_db:mrp.view_mrp_consumption_warning_form
-msgid "Confirm"
-msgstr "确认"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__confirm_cancel
-msgid "Confirm Cancel"
-msgstr "确认取消"
-
-#. module: mrp
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_production__state__confirmed
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_filter
-msgid "Confirmed"
-msgstr "已确认"
-
-#. module: mrp
-#: model_terms:ir.actions.act_window,help:mrp.mrp_production_action
-msgid "Consume"
-msgstr "消耗"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__use_auto_consume_components_lots
-#: model:ir.model.fields,field_description:mrp.field_stock_picking_type__use_auto_consume_components_lots
-msgid "Consume Reserved Lots/Serial Numbers automatically"
-msgstr "自动消耗保留的批号/序列号"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_consumption_warning_line__product_consumed_qty_uom
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view model_terms:ir.ui.view,arch_db:mrp.mrp_production_workorder_form_view_inherit
-#: model_terms:ir.ui.view,arch_db:mrp.production_message model_terms:ir.ui.view,arch_db:mrp.report_mrp_production_components
-#: model_terms:ir.ui.view,arch_db:mrp.view_stock_move_operations_raw
-msgid "Consumed"
-msgstr "已消耗"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__consume_line_ids
-msgid "Consumed Disassembly Lines"
-msgstr "消耗的拆解明细行"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_move__consume_unbuild_id
-msgid "Consumed Disassembly Order"
-msgstr "消耗的拆解单"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_line__operation_id
-msgid "Consumed in Operation"
-msgstr "消耗在作业"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_consumption_warning__consumption
-#: model:ir.model.fields,field_description:mrp.field_mrp_consumption_warning_line__consumption
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__consumption
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__consumption
-msgid "Consumption"
-msgstr "消耗"
-
-#. module: mrp
-#: model:ir.actions.act_window,name:mrp.action_mrp_consumption_warning model_terms:ir.ui.view,arch_db:mrp.view_mrp_consumption_warning_form
-msgid "Consumption Warning"
-msgstr "消耗警告"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_bom__product_uom_category_id
-#: model:ir.model.fields,help:mrp.field_mrp_bom_byproduct__product_uom_category_id
-#: model:ir.model.fields,help:mrp.field_mrp_bom_line__product_uom_category_id
-#: model:ir.model.fields,help:mrp.field_mrp_production__product_uom_category_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: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_routing_workcenter_bom_tree_view
-msgid "Copy Existing Operations"
-msgstr "复制现有的作业"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_routing_workcenter_copy_to_bom_tree_view
-msgid "Copy selected operations"
-msgstr "复制选定的作业"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_byproduct__cost_share
-#: model:ir.model.fields,field_description:mrp.field_stock_move__cost_share
-msgid "Cost Share (%)"
-msgstr "成本分摊(%)"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__costs_hour
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__costs_hour
-msgid "Cost per hour"
-msgstr "每小时成本"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_view
-msgid "Costing Information"
-msgstr "成本信息"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_display_filter/mrp_bom_overview_display_filter.js:0
-#, python-format
-msgid "Costs"
-msgstr "费用"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/views/fields/google_slides_viewer.js:0
-#, python-format
-msgid "Could not display the selected spreadsheet"
-msgstr "无法显示选择的电子表格"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__mrp_production_backorder_count
-msgid "Count of linked backorder"
-msgstr "缺货的欠单数量"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_assign_serial_numbers_production
-msgid "Create Backorder"
-msgstr "创建欠单"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__use_create_components_lots
-#: model:ir.model.fields,field_description:mrp.field_stock_picking_type__use_create_components_lots
-msgid "Create New Lots/Serial Numbers for Components"
-msgstr "创建组件的新批号/序列号"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_backorder_form
-msgid "Create a Backorder"
-msgstr "创建一个欠单"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_backorder_form
-msgid ""
-"Create a backorder if you expect to process the remaining products later. Do not create a backorder if you will not process the remaining "
-"products."
-msgstr "如果您希望以后再处理剩余产品,请创建一个欠单。 如果您将不处理剩余产品,请不要创建欠单。"
-
-#. module: mrp
-#: model_terms:ir.actions.act_window,help:mrp.mrp_production_report
-msgid "Create a new manufacturing order"
-msgstr "创建制造订单"
-
-#. module: mrp
-#: model_terms:ir.actions.act_window,help:mrp.mrp_routing_action
-msgid "Create a new operation"
-msgstr "创建一个新作业"
-
-#. module: mrp
-#: model_terms:ir.actions.act_window,help:mrp.mrp_workcenter_action model_terms:ir.actions.act_window,help:mrp.mrp_workcenter_kanban_action
-msgid "Create a new work center"
-msgstr "创建新的工作中心"
-
-#. module: mrp
-#: model_terms:ir.actions.act_window,help:mrp.mrp_workorder_report model_terms:ir.actions.act_window,help:mrp.mrp_workorder_workcenter_report
-msgid "Create a new work orders performance"
-msgstr "创建工单效能"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_product_product__days_to_prepare_mo
-#: model:ir.model.fields,help:mrp.field_product_template__days_to_prepare_mo
-msgid ""
-"Create and confirm Manufacturing Orders these many days in advance, to have enough time to replenish components or manufacture semi-finished "
-"products.\n"
-"Note that this does not affect the MO scheduled date, which still respects the just-in-time mechanism."
-msgstr ""
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_backorder_form
-msgid "Create backorder"
-msgstr "创建欠单"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.res_config_settings_view_form
-msgid "Create customizable worksheets for your quality checks"
-msgstr "为您的质量检查创建可定制的工作表"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_bom__allow_operation_dependencies
-#: model:ir.model.fields,help:mrp.field_mrp_routing_workcenter__allow_operation_dependencies
-msgid ""
-"Create operation level dependencies that will influence both planning and the status of work orders upon MO confirmation. If this feature is "
-"ticked, and nothing is specified, Odoo will assume that all operations can be started simultaneously."
-msgstr "创建操作级依赖项,该依赖项将在MO确认时影响计划和工单状态。如果勾选此功能,且未指定任何内容,Odoo将假定所有操作都可以同时启动"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_move__created_production_id
-msgid "Created Production Order"
-msgstr "创建生产订单"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_change_production_qty__create_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__create_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_byproduct__create_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_line__create_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_consumption_warning__create_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_consumption_warning_line__create_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_document__create_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_immediate_production__create_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_immediate_production_line__create_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__create_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_backorder__create_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_backorder_line__create_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split__create_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split_line__create_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split_multi__create_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_routing_workcenter__create_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__create_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__create_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_capacity__create_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity__create_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity_loss__create_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity_loss_type__create_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_tag__create_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__create_uid
-#: model:ir.model.fields,field_description:mrp.field_stock_warn_insufficient_qty_unbuild__create_uid
-msgid "Created by"
-msgstr "创建人"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_change_production_qty__create_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__create_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_byproduct__create_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_line__create_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_consumption_warning__create_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_consumption_warning_line__create_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_document__create_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_immediate_production__create_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_immediate_production_line__create_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__create_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_backorder__create_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_backorder_line__create_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split__create_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split_line__create_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split_multi__create_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_routing_workcenter__create_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__create_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__create_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_capacity__create_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity__create_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity_loss__create_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity_loss_type__create_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_tag__create_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__create_date
-#: model:ir.model.fields,field_description:mrp.field_stock_warn_insufficient_qty_unbuild__create_date
-msgid "Created on"
-msgstr "创建时间"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view
-msgid "Creates a new serial/lot number"
-msgstr "创建新序列号/批次号码"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_document_form
-msgid "Creation"
-msgstr "创建日期"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__currency_id
-msgid "Currency"
-msgstr "币种"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_stock_move__product_qty_available
-msgid ""
-"Current quantity of products.\n"
-"In a context with a single Stock Location, this includes goods stored at this Location, or any of its children.\n"
-"In a context with a single Warehouse, this includes goods stored in the Stock Location of this Warehouse, or any of its children.\n"
-"stored in the Stock Location of the Warehouse of this Shop, or any of its children.\n"
-"Otherwise, this includes goods stored in any Stock Location with 'internal' type."
-msgstr ""
-"当前产品数量。 \n"
-"对单一库存位置来说,包括了此位置或其任何子位置所存储的产品。 \n"
-"对单一库存来说,包括了此仓位置置或其任何子位置所存储的产品。 \n"
-"另外,这包括了所有'内部'类型的任何库存位置所存储的产品。"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__qty_producing
-msgid "Currently Produced Quantity"
-msgstr "当前的已生产数量"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__product_description_variants
-msgid "Custom Description"
-msgstr "自定义说明"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_document__db_datas
-msgid "Database Data"
-msgstr "数据库数据"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.oee_search_view
-msgid "Date"
-msgstr "日期"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_production__date_planned_finished
-msgid "Date at which you plan to finish the production."
-msgstr "您安排完成生产的日期。"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_production__date_planned_start model:ir.model.fields,help:mrp.field_mrp_workorder__production_date
-msgid "Date at which you plan to start the production."
-msgstr "您安排开始生产的日期。"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_line/mrp_bom_overview_line.xml:0 model_terms:ir.ui.view,arch_db:mrp.report_mrp_bom
-#: model_terms:ir.ui.view,arch_db:mrp.report_mrp_bom_pdf_line
-#, python-format
-msgid "Days"
-msgstr "天"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/stock_rule.py:0
-#, python-format
-msgid "Days to Supply Components"
-msgstr "供应组件的天数"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_product_product__days_to_prepare_mo
-#: model:ir.model.fields,field_description:mrp.field_product_template__days_to_prepare_mo
-msgid "Days to prepare Manufacturing Order"
-msgstr "生产订单准备天数"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__date_deadline
-msgid "Deadline"
-msgstr "截止日期"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_routing_workcenter_form_view
-msgid "Default Duration"
-msgstr "默认时长"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_res_config_settings__use_manufacturing_lead
-msgid "Default Manufacturing Lead Time"
-msgstr "默认制造提前期"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_workcenter__default_capacity
-msgid ""
-"Default number of pieces (in product UoM) that can be produced in parallel (at the same time) at this work center. For example: the capacity "
-"is 5 and you need to produce 10 units, then the operation time listed on the BOM will be multiplied by two. However, note that both time "
-"before and after production will only be counted once."
-msgstr ""
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_consumption_warning_line__product_uom_id
-#: model:ir.model.fields,help:mrp.field_mrp_workcenter_capacity__product_uom_id
-msgid "Default unit of measure used for all stock operations."
-msgstr "所有库存作业的默认单位。"
-
-#. module: mrp
-#: model_terms:ir.actions.act_window,help:mrp.product_template_action
-msgid ""
-"Define the components and finished products you wish to use in\n"
-" bill of materials and manufacturing orders."
-msgstr ""
-"定义您希望使用的组件和完工产品\n"
-" BOM和制造订单。"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_bom__consumption
-msgid ""
-"Defines if you can consume more or less components than the quantity defined on the BoM:\n"
-" * Allowed: allowed for all manufacturing users.\n"
-" * Allowed with warning: allowed for all manufacturing users with summary of consumption differences when closing the manufacturing order.\n"
-" Note that in the case of component Manual Consumption, where consumption is registered manually exclusively, consumption warnings will "
-"still be issued when appropriate also.\n"
-" * Blocked: only a manager can close a manufacturing order when the BoM consumption is not respected."
-msgstr ""
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__delay_alert_date
-msgid "Delay Alert Date"
-msgstr "延迟警报日期"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_document_file_kanban_mrp
-msgid "Delete"
-msgstr "删除"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__delivery_count
-msgid "Delivery Orders"
-msgstr "交货单"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_document__description
-#: model:ir.model.fields,field_description:mrp.field_mrp_routing_workcenter__note
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__note
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity__description
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__operation_note model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_view
-msgid "Description"
-msgstr "说明"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_view
-msgid "Description of the work center..."
-msgstr "工作中心说明..."
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__location_dest_id
-msgid "Destination Location"
-msgstr "目的位置"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_move__unbuild_id
-msgid "Disassembly Order"
-msgstr "拆解单"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_unbuild_form_view_simplified model_terms:ir.ui.view,arch_db:mrp.view_mrp_consumption_warning_form
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_backorder_form model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_split_form
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_split_multi_form
-msgid "Discard"
-msgstr "丢弃"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_change_production_qty__display_name
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__display_name
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_byproduct__display_name
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_line__display_name
-#: model:ir.model.fields,field_description:mrp.field_mrp_consumption_warning__display_name
-#: model:ir.model.fields,field_description:mrp.field_mrp_consumption_warning_line__display_name
-#: model:ir.model.fields,field_description:mrp.field_mrp_document__display_name
-#: model:ir.model.fields,field_description:mrp.field_mrp_immediate_production__display_name
-#: model:ir.model.fields,field_description:mrp.field_mrp_immediate_production_line__display_name
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__display_name
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_backorder__display_name
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_backorder_line__display_name
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split__display_name
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split_line__display_name
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split_multi__display_name
-#: model:ir.model.fields,field_description:mrp.field_mrp_routing_workcenter__display_name
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__display_name
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__display_name
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_capacity__display_name
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity__display_name
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity_loss__display_name
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity_loss_type__display_name
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_tag__display_name
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__display_name
-#: model:ir.model.fields,field_description:mrp.field_stock_warn_insufficient_qty_unbuild__display_name
-msgid "Display Name"
-msgstr "显示名称"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__show_serial_mass_produce
-msgid "Display the serial mass produce wizard action"
-msgstr ""
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__show_lot_ids
-msgid "Display the serial number shortcut on the moves"
-msgstr "显示库存移动的序列号快捷方式"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_display_filter/mrp_bom_overview_display_filter.xml:0
-#, python-format
-msgid "Display:"
-msgstr "显示:"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view
-msgid "Displays the consumed Lot/Serial Numbers."
-msgstr ""
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.stock_warn_insufficient_qty_unbuild_form_view
-msgid "Do you confirm you want to unbuild"
-msgstr "您确认要拆解吗"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_document_file_kanban_mrp
-msgid "Document"
-msgstr "单据"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.res_config_settings_view_form
-msgid "Documentation"
-msgstr "文档"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_move__is_done
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_production__state__done
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_unbuild__state__done
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_workorder_tree_editable_view model_terms:ir.ui.view,arch_db:mrp.mrp_unbuild_search_view
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_filter model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_work_order_search
-msgid "Done"
-msgstr "完成"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_document_file_kanban_mrp
-msgid "Download"
-msgstr "下载"
-
-#. module: mrp
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_production__state__draft
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_unbuild__state__draft model_terms:ir.ui.view,arch_db:mrp.mrp_unbuild_search_view
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_filter
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_workorder_form_view_filter
-msgid "Draft"
-msgstr "草稿"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_document_file_kanban_mrp
-msgid "Dropdown menu"
-msgstr "下拉菜单"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/wizard/stock_assign_serial_numbers.py:0
-#, python-format
-msgid "Duplicate Serial Numbers (%s)"
-msgstr "重复的序列号(%s)。"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_routing_workcenter__time_cycle
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity__duration model_terms:ir.ui.view,arch_db:mrp.oee_tree_view
-msgid "Duration"
-msgstr "时长"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_routing_workcenter_tree_view model_terms:ir.ui.view,arch_db:mrp.oee_graph_view
-#: model_terms:ir.ui.view,arch_db:mrp.oee_pie_view model_terms:ir.ui.view,arch_db:mrp.oee_pivot_view
-#: model_terms:ir.ui.view,arch_db:mrp.oee_tree_view model_terms:ir.ui.view,arch_db:mrp.workcenter_line_graph
-#: model_terms:ir.ui.view,arch_db:mrp.workcenter_line_pivot
-msgid "Duration (minutes)"
-msgstr "时长(分钟)"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_routing_workcenter__time_mode
-msgid "Duration Computation"
-msgstr "时长计算"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__duration_percent
-msgid "Duration Deviation (%)"
-msgstr "时长偏差(%)"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__duration_unit
-msgid "Duration Per Unit"
-msgstr "每单元时长"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_document_file_kanban_mrp
-msgid "Edit"
-msgstr "编辑"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity__loss_type
-msgid "Effectiveness"
-msgstr "有效性"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity_loss__loss_type
-msgid "Effectiveness Category"
-msgstr "有效性类别"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__date_finished
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity__date_end
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__date_finished
-msgid "End Date"
-msgstr "结束日期"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_bom_line__tracking model:ir.model.fields,help:mrp.field_mrp_production__product_tracking
-#: model:ir.model.fields,help:mrp.field_mrp_unbuild__has_tracking model:ir.model.fields,help:mrp.field_mrp_workorder__product_tracking
-msgid "Ensure the traceability of a storable product in your warehouse."
-msgstr "确保可追溯到仓库中的产品。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/report/mrp_report_bom_structure.py:0
-#, python-format
-msgid "Estimated %s"
-msgstr "预估 %s"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.exception_on_mo
-msgid "Exception(s) occurred on the manufacturing order(s):"
-msgstr "制造订单发生例外情况:"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.exception_on_mo
-msgid "Exception(s):"
-msgstr "异常:"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/wizard/stock_assign_serial_numbers.py:0
-#, python-format
-msgid "Existing Serial Numbers (%s)"
-msgstr "现有序列号(%s)"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "Exp %s"
-msgstr "预计%s"
-
-#. module: mrp
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_production__components_availability_state__expected
-msgid "Expected"
-msgstr "预计"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/report/mrp_report_bom_structure.py:0
-#, python-format
-msgid "Expected %s"
-msgstr "预计: %s"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__production_duration_expected
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__duration_expected
-msgid "Expected Duration"
-msgstr "预计时长"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_work_center_load_graph model_terms:ir.ui.view,arch_db:mrp.view_workcenter_load_pivot
-msgid "Expected Duration (minutes)"
-msgstr "预计持续时间(分钟)"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_assign_serial__expected_qty
-msgid "Expected Quantity"
-msgstr "预计的数量"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_document__datas
-msgid "File Content (base64)"
-msgstr "文件内容(base64)"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_document__raw
-msgid "File Content (raw)"
-msgstr "文件内容(raw)"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_document__file_size
-msgid "File Size"
-msgstr "文件大小"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_table/mrp_bom_overview_table.xml:0
-#, python-format
-msgid "Files attached to the product."
-msgstr "附加到产品的文件"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_unbuild_search_view
-msgid "Filters"
-msgstr "筛选"
-
-#. module: mrp
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_workorder__state__done
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_workorder_form_view_filter
-msgid "Finished"
-msgstr "已完工"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_move__order_finished_lot_id
-msgid "Finished Lot/Serial Number"
-msgstr "完工批次/序列号"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__move_finished_ids
-msgid "Finished Moves"
-msgstr "完工移动"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__finished_move_line_ids
-msgid "Finished Product"
-msgstr "完工产品"
-
-#. module: mrp
-#: model:ir.actions.report,name:mrp.action_report_finished_product
-msgid "Finished Product Label (PDF)"
-msgstr "完工产品标签(PDF)"
-
-#. module: mrp
-#: model:ir.actions.report,name:mrp.label_manufacture_template
-msgid "Finished Product Label (ZPL)"
-msgstr "完工产品标签(ZPL)"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__move_finished_ids
-msgid "Finished Products"
-msgstr "完工产品"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__location_dest_id
-msgid "Finished Products Location"
-msgstr "完工产品位置"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__consumption
-msgid "Flexible Consumption"
-msgstr "灵活消耗"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__message_follower_ids
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__message_follower_ids
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__message_follower_ids
-msgid "Followers"
-msgstr "关注者"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__message_partner_ids
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__message_partner_ids
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__message_partner_ids
-msgid "Followers (Partners)"
-msgstr "关注者(业务伙伴)"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_production__activity_type_icon model:ir.model.fields,help:mrp.field_mrp_unbuild__activity_type_icon
-msgid "Font awesome icon e.g. fa-tasks"
-msgstr "完美的图标,例如FA任务"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_consumption_warning_form
-msgid "Force"
-msgstr "强制"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_line/mrp_bom_overview_line.xml:0
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view
-#, python-format
-msgid "Forecast Report"
-msgstr "预估报表"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_stock_move__product_virtual_available
-msgid ""
-"Forecast quantity (computed as Quantity On Hand - Outgoing + Incoming)\n"
-"In a context with a single Stock Location, this includes goods stored in this location, or any of its children.\n"
-"In a context with a single Warehouse, this includes goods stored in the Stock Location of this Warehouse, or any of its children.\n"
-"Otherwise, this includes goods stored in any Stock Location with 'internal' type."
-msgstr ""
-"预测数量(计算为手上数量 - 出库 + 入库) \n"
-"对于单一库存位置来说,这包括了存储在此位置及其子位置的货物。\n"
-"对于单一库存来说,这包括了存储在此库存的库存位置及其子位置的货物。\n"
-"否则,这包括存储在任何“内部”类型的任何库存位置的货物。"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_workorder_form_view_inherit
-msgid "Forecasted"
-msgstr "预测"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__forecasted_issue
-msgid "Forecasted Issue"
-msgstr "预测的问题"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_table/mrp_bom_overview_table.xml:0
-#, python-format
-msgid "Free to Use"
-msgstr "免费使用"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_table/mrp_bom_overview_table.xml:0 model_terms:ir.ui.view,arch_db:mrp.report_mrp_bom
-#, python-format
-msgid "Free to Use / On Hand"
-msgstr "免费使用 / 在手"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view
-msgid "From"
-msgstr "从"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.oee_search_view
-msgid "Fully Productive"
-msgstr "全部生产力"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_unbuild_search_view model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_filter
-msgid "Future Activities"
-msgstr "未来活动"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_view
-msgid "General Information"
-msgstr "基本信息"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_assign_serial_numbers_production
-msgid "Generate Serial Numbers"
-msgstr "生成序列号"
-
-#. module: mrp
-#: model_terms:ir.actions.act_window,help:mrp.action_mrp_routing_time
-msgid "Get statistics about the work orders duration related to this routing."
-msgstr "获取有关与此工艺路线相关的工单工期的统计信息。"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_routing_workcenter__sequence
-msgid "Gives the sequence order when displaying a list of routing Work Centers."
-msgstr "指定编号,用于显示多个工作中心时排序。"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_workcenter__sequence
-msgid "Gives the sequence order when displaying a list of work centers."
-msgstr "显示工作中心列表时显示顺序。"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_bom_line__sequence
-msgid "Gives the sequence order when displaying."
-msgstr "用于显示顺序."
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_routing_workcenter__worksheet_google_slide
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_routing_workcenter__worksheet_type__google_slide
-msgid "Google Slide"
-msgstr "谷歌幻灯片"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_routing_workcenter_form_view
-msgid "Google Slide Link"
-msgstr "谷歌幻灯片链接"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/views/fields/google_slides_viewer.js:0
-#, python-format
-msgid "Google Slides Viewer"
-msgstr "Google幻灯片浏览器"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_workorder_form_view_filter
-msgid "Group By"
-msgstr "分组"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_bom_filter model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_filter
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_work_order_search model_terms:ir.ui.view,arch_db:mrp.view_mrp_workcenter_search
-msgid "Group By..."
-msgstr "分组"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_unbuild_search_view model_terms:ir.ui.view,arch_db:mrp.oee_search_view
-msgid "Group by..."
-msgstr "分组…"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__is_produced
-msgid "Has Been Produced"
-msgstr "已生产"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_picking__has_kits
-msgid "Has Kits"
-msgstr "有套件"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__has_message
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__has_message
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__has_message
-msgid "Has Message"
-msgstr "有信息"
-
-#. module: mrp
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_document__priority__2
-msgid "High"
-msgstr "高"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_document_form
-msgid "History"
-msgstr "历史"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_workcenter__costs_hour
-msgid "Hourly processing cost."
-msgstr ""
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_view
-msgid "Hours"
-msgstr "小时"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_change_production_qty__id model:ir.model.fields,field_description:mrp.field_mrp_bom__id
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_byproduct__id model:ir.model.fields,field_description:mrp.field_mrp_bom_line__id
-#: model:ir.model.fields,field_description:mrp.field_mrp_consumption_warning__id
-#: model:ir.model.fields,field_description:mrp.field_mrp_consumption_warning_line__id
-#: model:ir.model.fields,field_description:mrp.field_mrp_document__id
-#: model:ir.model.fields,field_description:mrp.field_mrp_immediate_production__id
-#: model:ir.model.fields,field_description:mrp.field_mrp_immediate_production_line__id
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__id
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_backorder__id
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_backorder_line__id
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split__id
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split_line__id
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split_multi__id
-#: model:ir.model.fields,field_description:mrp.field_mrp_routing_workcenter__id
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__id model:ir.model.fields,field_description:mrp.field_mrp_workcenter__id
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_capacity__id
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity__id
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity_loss__id
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity_loss_type__id
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_tag__id model:ir.model.fields,field_description:mrp.field_mrp_workorder__id
-#: model:ir.model.fields,field_description:mrp.field_stock_warn_insufficient_qty_unbuild__id
-msgid "ID"
-msgstr ""
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__activity_exception_icon
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__activity_exception_icon
-msgid "Icon"
-msgstr "图标"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_production__activity_exception_icon
-#: model:ir.model.fields,help:mrp.field_mrp_unbuild__activity_exception_icon
-msgid "Icon to indicate an exception activity."
-msgstr "表示异常活动的图标。"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_bom__product_id
-msgid "If a product variant is defined the BOM is available only for this product."
-msgstr "如果定义了产品变体,那么BOM仅用于本产品。"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_bom__message_needaction model:ir.model.fields,help:mrp.field_mrp_production__message_needaction
-#: model:ir.model.fields,help:mrp.field_mrp_unbuild__message_needaction
-msgid "If checked, new messages require your attention."
-msgstr "确认后, 出现提示消息."
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_bom__message_has_error model:ir.model.fields,help:mrp.field_mrp_bom__message_has_sms_error
-#: model:ir.model.fields,help:mrp.field_mrp_production__message_has_error
-#: model:ir.model.fields,help:mrp.field_mrp_production__message_has_sms_error
-#: model:ir.model.fields,help:mrp.field_mrp_unbuild__message_has_error model:ir.model.fields,help:mrp.field_mrp_unbuild__message_has_sms_error
-msgid "If checked, some messages have a delivery error."
-msgstr "如果勾选此项, 某些消息将会产生传递错误。"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_production__propagate_cancel
-msgid ""
-"If checked, when the previous move of the move (which was generated by a next procurement) is cancelled or split, the move generated by this "
-"move will too"
-msgstr "如果选中这里。当(从下一个需求单生成的)工序被取消或分割,与从工序相关的其他工序也会被取消或分割"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_workcenter__active
-msgid "If the active field is set to False, it will allow you to hide the resource record without removing it."
-msgstr "如设置为未启用,不需删除就可以隐藏。"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_document__image_height
-msgid "Image Height"
-msgstr "图像高度"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_document__image_src
-msgid "Image Src"
-msgstr "图像来源"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_document__image_width
-msgid "Image Width"
-msgstr "图像宽度"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_document_file_kanban_mrp
-msgid "Image is a link"
-msgstr "图像为链接"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_mrp_immediate_production
-#: model:ir.model.fields,field_description:mrp.field_mrp_immediate_production_line__immediate_production_id
-msgid "Immediate Production"
-msgstr "立即生产"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_mrp_immediate_production_line
-msgid "Immediate Production Line"
-msgstr "立即生产明细"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_immediate_production__immediate_production_line_ids
-msgid "Immediate Production Lines"
-msgstr "立即生产明细"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "Immediate Production?"
-msgstr "立即生产?"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_immediate_production
-msgid "Immediate production?"
-msgstr "立即生产?"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.exception_on_mo
-msgid "Impacted Transfer(s):"
-msgstr "受影响的调拨:"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_bom.py:0
-#, python-format
-msgid "Import Template for Bills of Materials"
-msgstr "BOM的导入模板"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_workorder.py:0
-#, python-format
-msgid "Impossible to plan the workorder. Please check the workcenter availabilities."
-msgstr "无法安排工单。 请检查工作中心的可用性。"
-
-#. module: mrp
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_production__state__progress
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_workcenter__working_state__done
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_workorder__state__progress model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_kanban
-#: model_terms:ir.ui.view,arch_db:mrp.stock_production_type_kanban model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_filter
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_work_order_search
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_workorder_form_view_filter
-msgid "In Progress"
-msgstr "进行中"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_document__index_content
-msgid "Indexed Content"
-msgstr "已索引的内容"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_production__date_deadline
-msgid "Informative date allowing to define when the manufacturing order should be processed at the latest to fulfill delivery on time."
-msgstr "可以定义何时最迟应处理制造订单以按时交货的日期信息。"
-
-#. module: mrp
-#: model:ir.actions.act_window,name:mrp.action_mrp_production_moves
-msgid "Inventory Moves"
-msgstr "库存移动"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_workorder__move_line_ids
-msgid "Inventory moves for which you must scan a lot number at this work order"
-msgstr "库存移动,您必须在此工单扫描批次号码"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__message_is_follower
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__message_is_follower
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__message_is_follower
-msgid "Is Follower"
-msgstr "关注者"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_product_product__is_kits
-#: model:ir.model.fields,field_description:mrp.field_product_template__is_kits
-msgid "Is Kits"
-msgstr "是套件"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__is_locked
-msgid "Is Locked"
-msgstr "是锁定"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity_loss__manual
-msgid "Is a Blocking Reason"
-msgstr "是阻塞理由"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_workcenter_productivity_loss_kanban
-msgid "Is a Blocking Reason?"
-msgstr "是阻塞原因?"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_document__public
-msgid "Is public document"
-msgstr "这是公开文档"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__is_user_working
-msgid "Is the Current User Working"
-msgstr "当前用户正在工作吗"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_workcenter.py:0
-#, python-format
-msgid "It has already been unblocked."
-msgstr "已经解除阻塞."
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_workorder.py:0
-#, python-format
-msgid ""
-"It is not possible to unplan one single Work Order. You should unplan the Manufacturing Order instead in order to unplan all the linked "
-"operations."
-msgstr "无法取消安排一个工单。您应该取消安排制造订单,以便取消安排所有链接的作业。"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__is_planned
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__is_planned
-msgid "Its Operations are Planned"
-msgstr "已安排其作业"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__json_popover
-msgid "JSON data for the popover widget"
-msgstr "弹出式窗口小部件的JSON数据"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_move__description_bom_line
-#: model:ir.model.fields,field_description:mrp.field_stock_move_line__description_bom_line
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_bom__type__phantom model_terms:ir.ui.view,arch_db:mrp.view_mrp_bom_filter
-msgid "Kit"
-msgstr "套件"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_change_production_qty____last_update
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom____last_update
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_byproduct____last_update
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_line____last_update
-#: model:ir.model.fields,field_description:mrp.field_mrp_consumption_warning____last_update
-#: model:ir.model.fields,field_description:mrp.field_mrp_consumption_warning_line____last_update
-#: model:ir.model.fields,field_description:mrp.field_mrp_document____last_update
-#: model:ir.model.fields,field_description:mrp.field_mrp_immediate_production____last_update
-#: model:ir.model.fields,field_description:mrp.field_mrp_immediate_production_line____last_update
-#: model:ir.model.fields,field_description:mrp.field_mrp_production____last_update
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_backorder____last_update
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_backorder_line____last_update
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split____last_update
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split_line____last_update
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split_multi____last_update
-#: model:ir.model.fields,field_description:mrp.field_mrp_routing_workcenter____last_update
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild____last_update
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter____last_update
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_capacity____last_update
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity____last_update
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity_loss____last_update
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity_loss_type____last_update
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_tag____last_update
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder____last_update
-#: model:ir.model.fields,field_description:mrp.field_stock_warn_insufficient_qty_unbuild____last_update
-msgid "Last Modified on"
-msgstr "最后修改时间"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_change_production_qty__write_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__write_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_byproduct__write_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_line__write_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_consumption_warning__write_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_consumption_warning_line__write_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_document__write_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_immediate_production__write_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_immediate_production_line__write_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__write_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_backorder__write_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_backorder_line__write_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split__write_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split_line__write_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split_multi__write_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_routing_workcenter__write_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__write_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__write_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_capacity__write_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity__write_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity_loss__write_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity_loss_type__write_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_tag__write_uid
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__write_uid
-#: model:ir.model.fields,field_description:mrp.field_stock_warn_insufficient_qty_unbuild__write_uid
-msgid "Last Updated by"
-msgstr "最后更新人"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_change_production_qty__write_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__write_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_byproduct__write_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_line__write_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_consumption_warning__write_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_consumption_warning_line__write_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_document__write_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_immediate_production__write_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_immediate_production_line__write_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__write_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_backorder__write_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_backorder_line__write_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split__write_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split_line__write_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split_multi__write_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_routing_workcenter__write_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__write_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__write_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_capacity__write_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity__write_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity_loss__write_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity_loss_type__write_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_tag__write_date
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__write_date
-#: model:ir.model.fields,field_description:mrp.field_stock_warn_insufficient_qty_unbuild__write_date
-msgid "Last Updated on"
-msgstr "最后更新时间"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__last_working_user_id
-msgid "Last user that worked on this work order."
-msgstr "上一个在此工单工作的用户."
-
-#. module: mrp
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_production__components_availability_state__late
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_kanban model_terms:ir.ui.view,arch_db:mrp.stock_production_type_kanban
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_work_order_search
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_workorder_form_view_filter
-msgid "Late"
-msgstr "迟到"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_unbuild_search_view model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_filter
-msgid "Late Activities"
-msgstr "最近的活动"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_filter
-msgid "Late MO or Late delivery of components"
-msgstr "延迟MO或延迟交付组件"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_production__components_availability
-msgid "Latest component availability status for this MO. If green, then the MO's readiness status is ready, as per BOM configuration."
-msgstr "该MO的最新组件可用性状态。如果是绿色,那么根据BOM配置,该MO的就绪状态为就绪。"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_table/mrp_bom_overview_table.xml:0 model_terms:ir.ui.view,arch_db:mrp.report_mrp_bom
-#, python-format
-msgid "Lead Time"
-msgstr "前置时间"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_display_filter/mrp_bom_overview_display_filter.js:0
-#, python-format
-msgid "Lead Times"
-msgstr "前置时间"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__leave_id
-msgid "Leave"
-msgstr "离开"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_mrp_consumption_warning_line
-msgid "Line of issue consumption"
-msgstr "消耗申报明细"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "Lines need to be deleted, but can not as you still have some quantities to consume in them. "
-msgstr "有消耗数量存在,无法删除数据. "
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_warn_insufficient_qty_unbuild__location_id
-msgid "Location"
-msgstr "位置"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_unbuild__location_id
-msgid "Location where the product you want to unbuild is."
-msgstr "您想要拆解产品的库位是。"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_production__location_src_id
-msgid "Location where the system will look for components."
-msgstr "系统将寻找组件的位置。"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_production__location_dest_id
-msgid "Location where the system will stock the finished products."
-msgstr "系统存储成品的位置."
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_unbuild__location_dest_id
-msgid "Location where you want to send the components resulting from the unbuild order."
-msgstr "您要将拆解订单产生的组件发送到的位置。"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view
-msgid "Lock"
-msgstr "锁定"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view
-msgid "Lock the manufacturing order to prevent changes to what has been consumed or produced."
-msgstr "锁定制造订单以防止更改已消耗或生产的产品。"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity__loss_id model_terms:ir.ui.view,arch_db:mrp.oee_search_view
-msgid "Loss Reason"
-msgstr "损失原因"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_stock_lot model_terms:ir.ui.view,arch_db:mrp.mrp_production_workorder_tree_editable_view
-msgid "Lot/Serial"
-msgstr "批次/序列号"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__lot_producing_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__lot_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__finished_lot_id
-msgid "Lot/Serial Number"
-msgstr "批次/序列号码"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view
-msgid "Lot/Serial Numbers"
-msgstr "批次/序列号码"
-
-#. module: mrp
-#: model:ir.ui.menu,name:mrp.menu_mrp_traceability
-msgid "Lots/Serial Numbers"
-msgstr "批次/序列号码"
-
-#. module: mrp
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_document__priority__1
-msgid "Low"
-msgstr "低"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_backorder_line__mrp_production_backorder_id
-msgid "MO Backorder"
-msgstr "MO欠单"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "MO Generated by %s"
-msgstr "%s生成的MO"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__reservation_state
-msgid "MO Readiness"
-msgstr "MO 准备就绪"
-
-#. module: mrp
-#: model:ir.actions.client,name:mrp.mrp_reception_action
-msgid "MRP Reception Report"
-msgstr "MRP收料报告"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_res_config_settings__group_mrp_routings
-msgid "MRP Work Orders"
-msgstr "MRP 工单"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_mrp_workcenter_productivity_loss_type
-msgid "MRP Workorder productivity losses"
-msgstr "MRP工单生产力损失"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__message_main_attachment_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__message_main_attachment_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__message_main_attachment_id
-msgid "Main Attachment"
-msgstr "主要附件"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/stock_warehouse.py:0
-#, python-format
-msgid "Make To Order"
-msgstr "按订单产生"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "Make sure enough quantities of these components are reserved to do the production:\n"
-msgstr "确保已预留足够数量的这些组件以进行生产:\n"
-
-#. module: mrp
-#: model:res.groups,name:mrp.group_mrp_routings
-msgid "Manage Work Order Operations"
-msgstr "管理工单作业"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_line__manual_consumption
-#: model:ir.model.fields,field_description:mrp.field_stock_move__manual_consumption
-msgid "Manual Consumption"
-msgstr ""
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_routing_workcenter__time_cycle_manual
-msgid "Manual Duration"
-msgstr "人工时长"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_product_template_form_inherited
-msgid "Manuf. Lead Time"
-msgstr "制造前置时间"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/stock_warehouse.py:0 model:ir.model.fields,field_description:mrp.field_stock_warehouse__manufacture_steps
-#: model:ir.model.fields.selection,name:mrp.selection__stock_rule__action__manufacture model:stock.route,name:mrp.route_warehouse0_manufacture
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_report_stock_rule
-#, python-format
-msgid "Manufacture"
-msgstr "制造"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/stock_warehouse.py:0
-#: model:ir.model.fields.selection,name:mrp.selection__stock_warehouse__manufacture_steps__mrp_one_step
-#, python-format
-msgid "Manufacture (1 step)"
-msgstr "制造(1 步)"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_warehouse__manufacture_mto_pull_id
-msgid "Manufacture MTO Rule"
-msgstr "制造MTO规则"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_warehouse__manufacture_pull_id
-msgid "Manufacture Rule"
-msgstr "制造规则"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/stock_rule.py:0
-#, python-format
-msgid "Manufacture Security Lead Time"
-msgstr "制造安全提前时间"
-
-#. module: mrp
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_bom__type__normal
-msgid "Manufacture this product"
-msgstr "制造此产品"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_warehouse__manufacture_to_resupply
-msgid "Manufacture to Resupply"
-msgstr "制造补给"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_product_product__mrp_product_qty
-#: model:ir.model.fields,field_description:mrp.field_product_template__mrp_product_qty
-msgid "Manufactured"
-msgstr "已生产"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_product_product_search_view model_terms:ir.ui.view,arch_db:mrp.mrp_product_template_search_view
-msgid "Manufactured Products"
-msgstr "制造的产品"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.product_product_form_view_bom_button
-#: model_terms:ir.ui.view,arch_db:mrp.product_template_form_view_bom_button
-msgid "Manufactured in the last 365 days"
-msgstr "在过去一年内制造的"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/stock_warehouse.py:0 model:ir.model.fields.selection,name:mrp.selection__stock_picking_type__code__mrp_operation
-#: model:ir.ui.menu,name:mrp.menu_mrp_root model_terms:ir.ui.view,arch_db:mrp.res_config_settings_view_form
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_bom_filter
-#, python-format
-msgid "Manufacturing"
-msgstr "制造"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/mrp_forecasted/forecasted_buttons.xml:0
-#, python-format
-msgid "Manufacturing Forecast"
-msgstr "制造预测"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/stock_rule.py:0 model:ir.model.fields,field_description:mrp.field_product_product__produce_delay
-#: model:ir.model.fields,field_description:mrp.field_product_template__produce_delay
-#: model:ir.model.fields,field_description:mrp.field_res_company__manufacturing_lead
-#: model:ir.model.fields,field_description:mrp.field_res_config_settings__manufacturing_lead
-#, python-format
-msgid "Manufacturing Lead Time"
-msgstr "制造前置时间"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_warehouse__manu_type_id
-msgid "Manufacturing Operation Type"
-msgstr "制造作业类型"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_change_production_qty__mo_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_consumption_warning_line__mrp_production_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_backorder_line__mrp_production_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split__production_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__mo_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity__production_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__production_id
-#: model:ir.model.fields,field_description:mrp.field_stock_scrap__production_id model_terms:ir.ui.view,arch_db:mrp.mrp_unbuild_search_view
-#: model_terms:ir.ui.view,arch_db:mrp.stock_production_type_kanban model_terms:ir.ui.view,arch_db:mrp.stock_scrap_search_view_inherit_mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_filter
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_workorder_form_view_filter
-msgid "Manufacturing Order"
-msgstr "制造订单"
-
-#. module: mrp
-#: model:ir.actions.act_window,name:mrp.act_product_mrp_production_workcenter model:ir.actions.act_window,name:mrp.action_mrp_production_form
-#: model:ir.actions.act_window,name:mrp.mrp_production_action model:ir.actions.act_window,name:mrp.mrp_production_action_picking_deshboard
-#: model:ir.actions.act_window,name:mrp.mrp_production_report model:ir.ui.menu,name:mrp.menu_mrp_production_action
-#: model:ir.ui.menu,name:mrp.menu_mrp_production_report model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_tree_view model_terms:ir.ui.view,arch_db:mrp.view_production_calendar
-#: model_terms:ir.ui.view,arch_db:mrp.view_production_graph model_terms:ir.ui.view,arch_db:mrp.view_production_pivot
-msgid "Manufacturing Orders"
-msgstr "制造订单"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_filter
-msgid "Manufacturing Orders which are in confirmed state."
-msgstr "确认状态的制造订单."
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__ready_to_produce model_terms:ir.ui.view,arch_db:mrp.mrp_bom_form_view
-msgid "Manufacturing Readiness"
-msgstr "制造准备就绪"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view
-msgid "Manufacturing Reference"
-msgstr "制造参考"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_warehouse_orderpoint__manufacturing_visibility_days
-msgid "Manufacturing Visibility Days"
-msgstr ""
-
-#. module: mrp
-#: model_terms:ir.actions.act_window,help:mrp.mrp_workcenter_action
-msgid ""
-"Manufacturing operations are processed at Work Centers. A Work Center can be composed of\n"
-" workers and/or machines, they are used for costing, scheduling, capacity planning, etc."
-msgstr ""
-"所有的制造订单作业都可以排到工作中心,安排制造安排到工作中心里去。 这工作中心是什么意思呢?工作中心它可以是\n"
-" 工人和/或机器的统称,意思是工作也可以叫一个工作中心,一台车床可以叫一个工作中心,它们用来做成本核算,排安排,产能安排等。"
-
-#. module: mrp
-#: model_terms:ir.actions.act_window,help:mrp.mrp_workcenter_kanban_action
-msgid ""
-"Manufacturing operations are processed at Work Centers. A Work Center can be composed of\n"
-" workers and/or machines, they are used for costing, scheduling, capacity planning, etc.\n"
-" They can be defined via the configuration menu."
-msgstr ""
-"所有的制造订单作业都可以排到工作中心,安排制造安排到工作中心里去。 这工作中心是什么意思呢?工作中心它可以是\n"
-" 工人和/或机器的统称,意思是工作也可以叫一个工作中心,一台车床可以叫一个工作中心,它们用来做成本核算,排安排,产能安排等。\n"
-"您可以通过配置菜单来设置并定义它。"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_production__reservation_state
-#: model:ir.model.fields,help:mrp.field_mrp_workorder__production_availability
-msgid ""
-"Manufacturing readiness for this MO, as per bill of material configuration:\n"
-" * Ready: The material is available to start the production.\n"
-" * Waiting: The material is not available to start the production.\n"
-msgstr ""
-"根据材料清单的配置,该MO的制造准备就绪。\n"
-" * 准备好了。该材料可用于开始生产。\n"
-" * 等待中。该材料不能开始生产。\n"
-
-#. module: mrp
-#: model:ir.actions.server,name:mrp.action_production_order_mark_done model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view
-msgid "Mark as Done"
-msgstr "标记为完成"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view
-msgid "Mass Produce"
-msgstr "批量生产"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_res_config_settings__module_mrp_mps
-msgid "Master Production Schedule"
-msgstr "主生产调度"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_filter
-msgid "Material Availability"
-msgstr "物料可用性"
-
-#. module: mrp
-#: model:ir.actions.server,name:mrp.action_production_order_merge
-msgid "Merge"
-msgstr "合并"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__message_has_error
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__message_has_error
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__message_has_error
-msgid "Message Delivery error"
-msgstr "消息传递错误"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__message_ids
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__message_ids
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__message_ids
-msgid "Messages"
-msgstr "消息"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_document__mimetype
-msgid "Mime Type"
-msgstr "MIME 类型"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_stock_warehouse_orderpoint
-msgid "Minimum Inventory Rule"
-msgstr "最小库存规则"
-
-#. module: mrp
-#. odoo-javascript
-#. odoo-python
-#: code:addons/mrp/report/mrp_report_bom_structure.py:0
-#: code:addons/mrp/static/src/components/bom_overview_special_line/mrp_bom_overview_special_line.xml:0
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_view
-#, python-format
-msgid "Minutes"
-msgstr "分钟"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_bom_form_view model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view
-msgid "Miscellaneous"
-msgstr "杂项"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_immediate_production__mo_ids
-msgid "Mo"
-msgstr ""
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__move_byproduct_ids
-msgid "Move Byproduct"
-msgstr "移动副产品"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__move_line_ids
-msgid "Moves to Track"
-msgstr "待追踪的产品"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_consumption_warning__mrp_consumption_warning_line_ids
-msgid "Mrp Consumption Warning Line"
-msgstr "Mrp消耗警告明细"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_consumption_warning__mrp_production_ids
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_backorder__mrp_production_ids
-#: model:ir.model.fields,field_description:mrp.field_procurement_group__mrp_production_ids
-msgid "Mrp Production"
-msgstr "MRP生产"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_consumption_warning__mrp_production_count
-msgid "Mrp Production Count"
-msgstr "Mrp生产计数"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_assign_serial__multiple_lot_components_names
-msgid "Multiple Lot Components Names"
-msgstr ""
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__my_activity_date_deadline
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__my_activity_date_deadline
-msgid "My Activity Deadline"
-msgstr "我的活动截止时间"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_document__name
-msgid "Name"
-msgstr "名称"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0 code:addons/mrp/models/mrp_unbuild.py:0 code:addons/mrp/models/stock_rule.py:0
-#, python-format
-msgid "New"
-msgstr "新建"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_tree_view
-msgid "Next Activity"
-msgstr "下一个活动"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__activity_date_deadline
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__activity_date_deadline
-msgid "Next Activity Deadline"
-msgstr "下一活动截止日期"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__activity_summary
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__activity_summary
-msgid "Next Activity Summary"
-msgstr "下一活动摘要"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__activity_type_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__activity_type_id
-msgid "Next Activity Type"
-msgstr "下一活动类型"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_assign_serial_numbers_production
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_backorder_form
-msgid "No Backorder"
-msgstr "没有欠单"
-
-#. module: mrp
-#: model_terms:ir.actions.act_window,help:mrp.mrp_bom_form_action
-msgid "No bill of materials found. Let's create one!"
-msgstr "还没有BOM。 让我们创建一个!"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_table/mrp_bom_overview_table.xml:0 model_terms:ir.ui.view,arch_db:mrp.report_mrp_bom
-#, python-format
-msgid "No data available."
-msgstr "无数据可用."
-
-#. module: mrp
-#: model_terms:ir.actions.act_window,help:mrp.action_mrp_routing_time
-#: model_terms:ir.actions.act_window,help:mrp.action_mrp_workcenter_load_report_graph
-#: model_terms:ir.actions.act_window,help:mrp.mrp_production_report
-msgid "No data yet!"
-msgstr "还没有数据耶!"
-
-#. module: mrp
-#: model_terms:ir.actions.act_window,help:mrp.mrp_production_action
-msgid "No manufacturing order found. Let's create one."
-msgstr "还没有制造订单。 让我们创建一个。"
-
-#. module: mrp
-#: model_terms:ir.actions.act_window,help:mrp.product_template_action
-msgid "No product found. Let's create one!"
-msgstr "现在还没有产品, 我们先创建一个!"
-
-#. module: mrp
-#: model_terms:ir.actions.act_window,help:mrp.mrp_workcenter_productivity_report_blocked
-msgid "No productivity loss for this equipment"
-msgstr "该设备无生产力损失"
-
-#. module: mrp
-#: model_terms:ir.actions.act_window,help:mrp.mrp_unbuild
-msgid "No unbuild order found"
-msgstr "没有拆解单"
-
-#. module: mrp
-#: model_terms:ir.actions.act_window,help:mrp.action_mrp_workorder_production
-#: model_terms:ir.actions.act_window,help:mrp.action_mrp_workorder_production_specific
-#: model_terms:ir.actions.act_window,help:mrp.action_mrp_workorder_workcenter model_terms:ir.actions.act_window,help:mrp.mrp_workorder_todo
-msgid "No work orders to do!"
-msgstr "没有待办的工单!"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_kanban
-msgid "No workorder currently in progress. Click to mark work center as blocked."
-msgstr "没有生产的工单。单击以将工作中心标记为阻塞。"
-
-#. module: mrp
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_document__priority__0
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_production__priority__0
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_workcenter__working_state__normal
-msgid "Normal"
-msgstr "正常"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0 code:addons/mrp/report/mrp_report_bom_structure.py:0
-#, python-format
-msgid "Not Available"
-msgstr "不可用"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_workcenter.py:0
-#, python-format
-msgid ""
-"Note that archived work center(s): '%s' is/are still linked to active Bill of Materials, which means that operations can still be planned on "
-"it/them. To prevent this, deletion of the work center is recommended instead."
-msgstr "请注意,已归档的工作中心:'%s'仍然与活动的BOM相联系,这意味着仍然可以对它/它们进行作业安排。为了防止这种情况,建议删除该工作中心。"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_assign_serial_numbers_production
-msgid "Note that components"
-msgstr "备注那些部件"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__message_needaction_counter
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__message_needaction_counter
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__message_needaction_counter
-msgid "Number of Actions"
-msgstr "动作数量"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_picking_type__count_mo_late
-msgid "Number of Manufacturing Orders Late"
-msgstr "延迟的制造订单数量"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_picking_type__count_mo_waiting
-msgid "Number of Manufacturing Orders Waiting"
-msgstr "制造订单等待的数量"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_picking_type__count_mo_todo
-msgid "Number of Manufacturing Orders to Process"
-msgstr "制造订单的数量"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__unbuild_count
-msgid "Number of Unbuilds"
-msgstr "未建立数量"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__message_has_error_counter
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__message_has_error_counter
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__message_has_error_counter
-msgid "Number of errors"
-msgstr "错误数"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__mrp_production_child_count
-msgid "Number of generated MO"
-msgstr "生成的MO数量"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_bom__message_needaction_counter
-#: model:ir.model.fields,help:mrp.field_mrp_production__message_needaction_counter
-#: model:ir.model.fields,help:mrp.field_mrp_unbuild__message_needaction_counter
-msgid "Number of messages which requires an action"
-msgstr "需要作业消息数量"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_bom__message_has_error_counter
-#: model:ir.model.fields,help:mrp.field_mrp_production__message_has_error_counter
-#: model:ir.model.fields,help:mrp.field_mrp_unbuild__message_has_error_counter
-msgid "Number of messages with delivery error"
-msgstr "发送错误的消息数量"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_workcenter_capacity__capacity
-msgid "Number of pieces that can be produced in parallel for this product."
-msgstr ""
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__mrp_production_source_count
-msgid "Number of source MO"
-msgstr "源MO数量"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_kanban
-msgid "OEE"
-msgstr ""
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__oee_target
-msgid "OEE Target"
-msgstr "OEE 目标"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__oee
-msgid "Oee"
-msgstr "OEE"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_workorder_form_view_inherit
-msgid "On Hand"
-msgstr "在手"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "Only manufacturing orders in either a draft or confirmed state can be %s."
-msgstr "只有处于草稿或确认状态的制造订单才可以%s。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "Only manufacturing orders with a Bill of Materials can be %s."
-msgstr "只有有物料清单的制造订单才能%s。"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_workorder_tree_editable_view
-msgid "Open Work Order"
-msgstr "打开工单"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_routing_workcenter__name
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__operation_id model_terms:ir.ui.view,arch_db:mrp.mrp_bom_form_view
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_bom_line_view_form model_terms:ir.ui.view,arch_db:mrp.mrp_production_workorder_form_view_inherit
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_workorder_tree_editable_view
-msgid "Operation"
-msgstr "操作"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__allow_operation_dependencies
-#: model:ir.model.fields,field_description:mrp.field_mrp_routing_workcenter__allow_operation_dependencies
-msgid "Operation Dependencies"
-msgstr "作业依赖"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_move__operation_id
-msgid "Operation To Consume"
-msgstr "待加工的作业"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__picking_type_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__picking_type_id
-msgid "Operation Type"
-msgstr "作业类型"
-
-#. module: mrp
-#: model_terms:ir.actions.act_window,help:mrp.mrp_routing_action
-msgid ""
-"Operation define that need to be done to realize a Work Order.\n"
-" Each operation is done at a specific Work Center and has a specific duration."
-msgstr ""
-"作业定义实现工单需要完成的工作。\n"
-" 每个作业都在特定的工作中心完成,并且具有特定的持续时间。"
-
-#. module: mrp
-#. odoo-javascript
-#. odoo-python
-#: code:addons/mrp/report/mrp_report_bom_structure.py:0
-#: code:addons/mrp/static/src/components/bom_overview_display_filter/mrp_bom_overview_display_filter.js:0
-#: code:addons/mrp/static/src/components/bom_overview_special_line/mrp_bom_overview_special_line.xml:0
-#: model:ir.actions.act_window,name:mrp.mrp_routing_action model:ir.model.fields,field_description:mrp.field_mrp_bom__operation_ids
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_byproduct__allowed_operation_ids
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_line__allowed_operation_ids
-#: model:ir.model.fields,field_description:mrp.field_stock_move__allowed_operation_ids model:ir.ui.menu,name:mrp.menu_mrp_manufacturing
-#: model:ir.ui.menu,name:mrp.menu_mrp_routing_action model_terms:ir.ui.view,arch_db:mrp.mrp_bom_form_view
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_view model_terms:ir.ui.view,arch_db:mrp.mrp_workorder_view_gantt
-#: model_terms:ir.ui.view,arch_db:mrp.oee_loss_search_view model_terms:ir.ui.view,arch_db:mrp.oee_search_view
-#: model_terms:ir.ui.view,arch_db:mrp.report_mrporder model_terms:ir.ui.view,arch_db:mrp.res_config_settings_view_form
-#: model_terms:ir.ui.view,arch_db:mrp.workcenter_line_calendar model_terms:ir.ui.view,arch_db:mrp.workcenter_line_gantt_production
-#: model_terms:ir.ui.view,arch_db:mrp.workcenter_line_graph model_terms:ir.ui.view,arch_db:mrp.workcenter_line_pivot
-#, python-format
-msgid "Operations"
-msgstr "作业"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.report_mrporder
-msgid "Operations Done"
-msgstr "完成作业"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.report_mrporder
-msgid "Operations Planned"
-msgstr "作业已安排"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_routing_workcenter_filter
-msgid "Operations Search Filters"
-msgstr "作业搜索过滤器"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_routing_workcenter__needed_by_operation_ids
-msgid "Operations that cannot start before this operation is completed."
-msgstr ""
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_routing_workcenter__blocked_by_operation_ids
-msgid "Operations that need to be completed before this operation can start."
-msgstr ""
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__orderpoint_id
-msgid "Orderpoint"
-msgstr "订货点"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__order_ids
-msgid "Orders"
-msgstr "订单"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_document__original_id
-msgid "Original (unoptimized, unresized) attachment"
-msgstr "原始(未优化,未调整大小)附件"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__qty_production
-msgid "Original Production Quantity"
-msgstr "原始生产数量"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_workcenter__oee_target
-msgid "Overall Effective Efficiency Target in percentage"
-msgstr "总体有效效率目标百分比"
-
-#. module: mrp
-#: model:ir.actions.act_window,name:mrp.mrp_workcenter_productivity_report
-#: model:ir.actions.act_window,name:mrp.mrp_workcenter_productivity_report_oee
-#: model:ir.ui.menu,name:mrp.menu_mrp_workcenter_productivity_report
-msgid "Overall Equipment Effectiveness"
-msgstr "整体设备效率"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_workcenter__oee
-msgid "Overall Equipment Effectiveness, based on the last month"
-msgstr "整体设备效率,基于最近月份"
-
-#. module: mrp
-#: model_terms:ir.actions.act_window,help:mrp.mrp_workcenter_productivity_report
-#: model_terms:ir.actions.act_window,help:mrp.mrp_workcenter_productivity_report_oee
-msgid "Overall Equipment Effectiveness: no working or blocked time"
-msgstr "整体设备效率:无工作或阻塞时间"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_bom_form_view
-msgid "Overview"
-msgstr "概述"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_routing_workcenter__worksheet
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_routing_workcenter__worksheet_type__pdf
-msgid "PDF"
-msgstr ""
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_line__bom_id
-msgid "Parent BoM"
-msgstr "父级 BoM"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_line__parent_product_tmpl_id
-msgid "Parent Product Template"
-msgstr "父产品模板"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_consumption_warning_line__mrp_consumption_warning_id
-msgid "Parent Wizard"
-msgstr "父向导"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_routing_workcenter__worksheet_google_slide
-#: model:ir.model.fields,help:mrp.field_mrp_workorder__worksheet_google_slide
-msgid "Paste the url of your Google Slide. Make sure the access to the document is public."
-msgstr "粘贴您的Google幻灯片的网址。 确保对文档的访问是公开的。"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_workorder_tree_editable_view
-msgid "Pause"
-msgstr "暂停"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_work_order_search
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_workorder_form_view_filter
-msgid "Pending"
-msgstr "待定"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__performance
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_workcenter_productivity_loss_type__loss_type__performance
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_kanban
-msgid "Performance"
-msgstr "效能"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.oee_search_view
-msgid "Performance Losses"
-msgstr "效能损失"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_workcenter__performance
-msgid "Performance over the last month"
-msgstr "最近一月效能"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/stock_warehouse.py:0
-#, python-format
-msgid "Pick Components"
-msgstr "捡取组件"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/stock_warehouse.py:0
-#, python-format
-msgid "Pick components and then manufacture"
-msgstr "捡取组件并制造"
-
-#. module: mrp
-#: model:ir.model.fields.selection,name:mrp.selection__stock_warehouse__manufacture_steps__pbm
-msgid "Pick components and then manufacture (2 steps)"
-msgstr "选择组件然后制造(2个步骤)"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/stock_warehouse.py:0 model:ir.model.fields.selection,name:mrp.selection__stock_warehouse__manufacture_steps__pbm_sam
-#, python-format
-msgid "Pick components, manufacture and then store products (3 steps)"
-msgstr "捡取组件制造,然后储存产品 (3 步)"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_warehouse__pbm_mto_pull_id
-msgid "Picking Before Manufacturing MTO Rule"
-msgstr "在制造(按订单补货)MTO规则之前拣货"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_warehouse__pbm_type_id
-msgid "Picking Before Manufacturing Operation Type"
-msgstr "在制造作业类型前拣货"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_warehouse__pbm_route_id
-msgid "Picking Before Manufacturing Route"
-msgstr "在制造路线前拣货"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_stock_picking_type
-msgid "Picking Type"
-msgstr "拣货类型"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__picking_ids
-msgid "Picking associated to this manufacturing order"
-msgstr "与此制造订单相关的拣货"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_warehouse__pbm_loc_id
-msgid "Picking before Manufacturing Location"
-msgstr "在制造位置前拣货"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view model_terms:ir.ui.view,arch_db:mrp.mrp_production_tree_view
-msgid "Plan"
-msgstr "安排"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_kanban
-msgid "Plan Orders"
-msgstr "安排订单"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.res_config_settings_view_form
-msgid "Plan manufacturing or purchase orders based on forecasts"
-msgstr "根据预测安排制造或采购订单"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.stock_production_type_kanban model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_filter
-msgid "Planned"
-msgstr "已计划"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_workorder_form_view_inherit
-msgid "Planned Date"
-msgstr "安排的日期"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_workorder.py:0
-#, python-format
-msgid "Planned at the same time as other workorder(s) at %s"
-msgstr "与其他工单安排时间重复:%s"
-
-#. module: mrp
-#: model:ir.ui.menu,name:mrp.mrp_planning_menu_root model_terms:ir.ui.view,arch_db:mrp.res_config_settings_view_form
-msgid "Planning"
-msgstr "计划"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_filter
-msgid "Planning Issues"
-msgstr "计划问题"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__json_popover
-msgid "Popover Data JSON"
-msgstr "JSON数据弹窗"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__possible_product_template_attribute_value_ids
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_byproduct__possible_bom_product_template_attribute_value_ids
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_line__possible_bom_product_template_attribute_value_ids
-#: model:ir.model.fields,field_description:mrp.field_mrp_routing_workcenter__possible_bom_product_template_attribute_value_ids
-msgid "Possible Product Template Attribute Value"
-msgstr "可能的产品模板属性值"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/stock_warehouse.py:0
-#, python-format
-msgid "Post-Production"
-msgstr "制造后"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/stock_warehouse.py:0
-#, python-format
-msgid "Pre-Production"
-msgstr "制造前"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_control_panel/mrp_bom_overview_control_panel.xml:0
-#, python-format
-msgid "Print"
-msgstr "打印"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_control_panel/mrp_bom_overview_control_panel.xml:0
-#, python-format
-msgid "Print All Variants"
-msgstr "打印所有变体"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_document__priority
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__priority
-msgid "Priority"
-msgstr "优先级"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.res_config_settings_view_form
-msgid "Process operations at specific work centers"
-msgstr "特定工作中心的流程作业"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__produce_line_ids
-msgid "Processed Disassembly Lines"
-msgstr "已处理的拆解明细"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_procurement_group model:ir.model.fields,field_description:mrp.field_mrp_production__procurement_group_id
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_filter
-msgid "Procurement Group"
-msgstr "补货组"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_stock_warehouse__manufacture_steps
-msgid ""
-"Produce : Move the components to the production location directly and start the manufacturing process.\n"
-"Pick / Produce : Unload the components from the Stock to Input location first, and then transfer it to the Production location."
-msgstr ""
-"制造:将组件直接移动到制造位置并开始制造过程。\n"
-"拣配/制造:首先将组件从“库存”卸载到“输入”位置,然后将其转移到“制造”位置。"
-
-#. module: mrp
-#: model:res.groups,name:mrp.group_mrp_byproducts
-msgid "Produce residual products"
-msgstr "生产残留产品"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.res_config_settings_view_form
-msgid "Produce residual products (A + B -> C + D)"
-msgstr "产生残留产物(A + B -> C + D)"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view model_terms:ir.ui.view,arch_db:mrp.production_message
-#: model_terms:ir.ui.view,arch_db:mrp.view_stock_move_operations_finished
-msgid "Produced"
-msgstr "生产"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_assign_serial__produced_qty
-msgid "Produced Quantity"
-msgstr "生产的数量"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_assign_serial__serial_numbers
-msgid "Produced Serial Numbers"
-msgstr "生产的序列号"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_byproduct__operation_id
-msgid "Produced in Operation"
-msgstr "生产的作业"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_table/mrp_bom_overview_table.xml:0 model:ir.model,name:mrp.model_product_template
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__product_tmpl_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_consumption_warning_line__product_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__product_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split__product_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__product_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_capacity__product_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__product_id
-#: model:ir.model.fields,field_description:mrp.field_stock_warn_insufficient_qty_unbuild__product_id
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_unbuild_search_view model_terms:ir.ui.view,arch_db:mrp.report_mrp_bom
-#: model_terms:ir.ui.view,arch_db:mrp.report_mrp_production_components model_terms:ir.ui.view,arch_db:mrp.view_mrp_bom_filter
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_filter model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_work_order_search
-#, python-format
-msgid "Product"
-msgstr "产品"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_bom_form_view
-msgid "Product Attachments"
-msgstr "产品文档附件"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__capacity_ids
-msgid "Product Capacities"
-msgstr ""
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_table/mrp_bom_overview_table.xml:0 model_terms:ir.ui.view,arch_db:mrp.report_mrp_bom
-#, python-format
-msgid "Product Cost"
-msgstr "产品成本"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_move__product_virtual_available
-msgid "Product Forecasted Quantity"
-msgstr "产品预测数量"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_res_config_settings__module_mrp_plm
-msgid "Product Lifecycle Management (PLM)"
-msgstr "产品生命周期管理 (PLM)"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view model_terms:ir.ui.view,arch_db:mrp.mrp_unbuild_form_view
-msgid "Product Moves"
-msgstr "产品移动"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_stock_move_line
-msgid "Product Moves (Stock Move Line)"
-msgstr "产品移动(移库明细)"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_move__product_qty_available
-msgid "Product On Hand Quantity"
-msgstr "产品在手数量"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_production_graph
-msgid "Product Quantity"
-msgstr "产品数量"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_line__product_tmpl_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__product_tmpl_id
-msgid "Product Template"
-msgstr "产品模板"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_line__product_uom_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__product_uom_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split__product_uom_id
-msgid "Product Unit of Measure"
-msgstr "产品计量单位"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_capacity__product_uom_id
-msgid "Product UoM"
-msgstr "产品计量单位"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_product_product model:ir.model.fields,field_description:mrp.field_mrp_bom__product_id
-msgid "Product Variant"
-msgstr "产品变体"
-
-#. module: mrp
-#: model:ir.actions.act_window,name:mrp.mrp_product_variant_action model:ir.ui.menu,name:mrp.product_variant_mrp
-msgid "Product Variants"
-msgstr "产品变体"
-
-#. module: mrp
-#: model:ir.model.constraint,message:mrp.constraint_mrp_workcenter_capacity_unique_product
-msgid "Product capacity should be unique for each workcenter."
-msgstr ""
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_immediate_production_line__production_id
-#: model:ir.model.fields,field_description:mrp.field_stock_assign_serial__production_id
-msgid "Production"
-msgstr "生产"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__production_capacity
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split__production_capacity
-msgid "Production Capacity"
-msgstr "生产能力"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__production_date
-msgid "Production Date"
-msgstr "生产日期"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_mrp_document
-msgid "Production Document"
-msgstr "生产文档"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_view
-msgid "Production Information"
-msgstr "生产信息"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__production_location_id
-msgid "Production Location"
-msgstr "生产位置"
-
-#. module: mrp
-#: model:ir.actions.report,name:mrp.action_report_production_order
-#: model:ir.model.fields,field_description:mrp.field_stock_move_line__production_id
-msgid "Production Order"
-msgstr "生产订单"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_move__raw_material_production_id
-msgid "Production Order for components"
-msgstr "组件的生产订单"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_move__production_id
-msgid "Production Order for finished products"
-msgstr "成品的生产订单"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__production_state
-msgid "Production State"
-msgstr "生产状态"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_workorder_form_view_inherit
-msgid "Production Workcenter"
-msgstr "生产工作中心"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/mrp_forecasted/forecasted_details.xml:0
-#, python-format
-msgid "Production of Draft MO"
-msgstr "草稿状态MO的生产"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_workorder_form_view_filter
-msgid "Production started late"
-msgstr "生产开始延迟"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split_multi__production_ids
-msgid "Productions To Split"
-msgstr ""
-
-#. module: mrp
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_workcenter_productivity_loss_type__loss_type__productive
-msgid "Productive"
-msgstr "生产力"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__productive_time
-msgid "Productive Time"
-msgstr "生产时间"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_workcenter__productive_time
-msgid "Productive hours over the last month"
-msgstr "生产性时数最近月份"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_workorder_form_view_inherit
-msgid "Productivity"
-msgstr "生产力"
-
-#. module: mrp
-#: model:ir.actions.act_window,name:mrp.mrp_workcenter_productivity_report_blocked
-msgid "Productivity Losses"
-msgstr "生产力损失"
-
-#. module: mrp
-#: model:ir.actions.act_window,name:mrp.product_template_action model:ir.ui.menu,name:mrp.menu_mrp_bom
-#: model:ir.ui.menu,name:mrp.menu_mrp_product_form
-msgid "Products"
-msgstr "产品"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__progress
-msgid "Progress Done (%)"
-msgstr "完成进度 (%)"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__propagate_cancel
-msgid "Propagate cancel and split"
-msgstr "传播取消以及拆分"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_res_config_settings__module_quality_control
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_workcenter_productivity_loss_type__loss_type__quality
-msgid "Quality"
-msgstr "质量"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.oee_search_view
-msgid "Quality Losses"
-msgstr "质量损失"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_res_config_settings__module_quality_control_worksheet
-msgid "Quality Worksheet"
-msgstr "质量工作表"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_warn_insufficient_qty_unbuild__quant_ids
-msgid "Quant"
-msgstr "量化"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_table/mrp_bom_overview_table.xml:0
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__product_qty
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_byproduct__product_qty
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_line__product_qty
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__product_qty
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__qty_produced
-#: model:ir.model.fields,field_description:mrp.field_stock_warn_insufficient_qty_unbuild__quantity
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_bom_form_view model_terms:ir.ui.view,arch_db:mrp.mrp_bom_line_view_form
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view model_terms:ir.ui.view,arch_db:mrp.mrp_production_tree_view
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_workorder_tree_editable_view model_terms:ir.ui.view,arch_db:mrp.report_mrp_bom
-#, python-format
-msgid "Quantity"
-msgstr "数量"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__qty_produced model_terms:ir.ui.view,arch_db:mrp.view_production_graph
-msgid "Quantity Produced"
-msgstr "已生产数量"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__qty_producing
-msgid "Quantity Producing"
-msgstr "正在生产的数量"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__qty_remaining
-msgid "Quantity To Be Produced"
-msgstr "将被生产的数量"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_move__should_consume_qty
-msgid "Quantity To Consume"
-msgstr "待消耗的数量"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_change_production_qty__product_qty
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__product_qty
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split__product_qty
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split_line__quantity
-msgid "Quantity To Produce"
-msgstr "待生产数量"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_production__production_capacity
-#: model:ir.model.fields,help:mrp.field_mrp_production_split__production_capacity
-msgid "Quantity that can be produced with the current stock of components"
-msgstr ""
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_control_panel/mrp_bom_overview_control_panel.xml:0
-#, python-format
-msgid "Quantity:"
-msgstr "数量:"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__move_raw_ids
-msgid "Raw Moves"
-msgstr "原材料移动"
-
-#. module: mrp
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_production__reservation_state__assigned
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_workorder__state__ready
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_filter model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_work_order_search
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_workorder_form_view_filter
-msgid "Ready"
-msgstr "就绪"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_table/mrp_bom_overview_table.xml:0 model_terms:ir.ui.view,arch_db:mrp.report_mrp_bom
-#, python-format
-msgid "Ready to Produce"
-msgstr "准备生产"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__production_real_duration
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__duration
-msgid "Real Duration"
-msgstr "实际时长"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_table/mrp_bom_overview_table.xml:0
-#, python-format
-msgid "Reception time estimation."
-msgstr "接收时间估计。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_bom.py:0
-#, python-format
-msgid "Recursion error! A product with a Bill of Material should not have itself in its BoM or child BoMs!"
-msgstr "递归错误!一个BOM的产品不应该在本身BOM或子BOM中!"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__code model:ir.model.fields,field_description:mrp.field_mrp_production__name
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__name
-msgid "Reference"
-msgstr "参考"
-
-#. module: mrp
-#: model:ir.model.constraint,message:mrp.constraint_mrp_production_name_uniq
-msgid "Reference must be unique per Company!"
-msgstr "必须在公司内唯一!"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_production__origin
-msgid "Reference of the document that generated this production order request."
-msgstr "生成本生产订单的前置文档编号."
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_table/mrp_bom_overview_table.xml:0 model_terms:ir.ui.view,arch_db:mrp.report_mrp_bom
-#, python-format
-msgid "Reference:"
-msgstr "参照:"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_document__ir_attachment_id
-msgid "Related attachment"
-msgstr "相关的附件"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/widgets/mrp_workorder_popover.xml:0
-#, python-format
-msgid "Replan"
-msgstr "重新安排"
-
-#. module: mrp
-#: model:ir.ui.menu,name:mrp.menu_mrp_reporting
-msgid "Reporting"
-msgstr "报告"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/mrp_forecasted/forecasted_details.xml:0
-#, python-format
-msgid "Reserve"
-msgstr "预留"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view model_terms:ir.ui.view,arch_db:mrp.mrp_production_workorder_form_view_inherit
-msgid "Reserved"
-msgstr "已预留"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__resource_id
-msgid "Resource"
-msgstr "资源"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_document__res_field
-msgid "Resource Field"
-msgstr "资源字段"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_document__res_id
-msgid "Resource ID"
-msgstr "资源ID"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_document__res_model
-msgid "Resource Model"
-msgstr "资源模型"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_document__res_name
-msgid "Resource Name"
-msgstr "资源名称"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__user_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split_line__user_id
-msgid "Responsible"
-msgstr "负责人"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__activity_user_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__activity_user_id
-msgid "Responsible User"
-msgstr "负责用户"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_table/mrp_bom_overview_table.xml:0
-#, python-format
-msgid "Resupply lead time."
-msgstr "重新供应前置时间."
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_table/mrp_bom_overview_table.xml:0 model_terms:ir.ui.view,arch_db:mrp.report_mrp_bom
-#, python-format
-msgid "Route"
-msgstr "路线"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__routing_line_ids
-msgid "Routing Lines"
-msgstr "工艺明细行"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_routing_workcenter_form_view model_terms:ir.ui.view,arch_db:mrp.mrp_routing_workcenter_tree_view
-msgid "Routing Work Centers"
-msgstr "工艺工作中心"
-
-#. module: mrp
-#: model:ir.ui.menu,name:mrp.menu_procurement_compute_mrp
-msgid "Run Scheduler"
-msgstr "运行调度器"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__message_has_sms_error
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__message_has_sms_error
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__message_has_sms_error
-msgid "SMS Delivery error"
-msgstr "短信发送错误"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split_line__date
-msgid "Schedule Date"
-msgstr "预定日期"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.res_config_settings_view_form
-msgid "Schedule manufacturing orders earlier to avoid delays"
-msgstr "提前安排制造订单以避免延误"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__date_planned_start
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_filter
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_workorder_form_view_filter
-msgid "Scheduled Date"
-msgstr "安排的日期"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_filter
-msgid "Scheduled Date by Month"
-msgstr "按安排日期"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__date_planned_finished
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__date_planned_finished
-msgid "Scheduled End Date"
-msgstr "安排结束日期"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__date_planned_start
-msgid "Scheduled Start Date"
-msgstr "安排开始日期"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_workorder.py:0
-#, python-format
-msgid "Scheduled before the previous work order, planned from %(start)s to %(end)s"
-msgstr "安排在上一个工单之前,安排从%(start)s到%(end)s"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/widgets/mrp_workorder_popover.xml:0
-#, python-format
-msgid "Scheduling Information"
-msgstr "调度信息"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0 code:addons/mrp/models/mrp_workorder.py:0 model:ir.model,name:mrp.model_stock_scrap
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__scrap_ids model:ir.ui.menu,name:mrp.menu_mrp_scrap
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view
-#, python-format
-msgid "Scrap"
-msgstr "报废"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__scrap_count
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__scrap_count
-msgid "Scrap Move"
-msgstr "报废移动"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__scrap_ids
-msgid "Scraps"
-msgstr "报废"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_unbuild_search_view
-msgid "Search"
-msgstr "搜索"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_bom_filter
-msgid "Search Bill Of Material"
-msgstr "搜索BOM"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_filter
-msgid "Search Production"
-msgstr "搜索生产"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_workorder_form_view_filter
-msgid "Search Work Orders"
-msgstr "搜索工单"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_workcenter_search
-msgid "Search for mrp workcenter"
-msgstr "MRP工作中心的搜索"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.res_config_settings_view_form
-msgid "Security Lead Time"
-msgstr "安全提前时间"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_res_company__manufacturing_lead
-#: model:ir.model.fields,help:mrp.field_res_config_settings__manufacturing_lead
-msgid "Security days for each manufacturing operation."
-msgstr "每个制造作业的确保天数."
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_routing.py:0
-#, python-format
-msgid "Select Operations to Copy"
-msgstr "选择要复制的作业"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__sequence
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_byproduct__sequence
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_line__sequence
-#: model:ir.model.fields,field_description:mrp.field_mrp_routing_workcenter__sequence
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__sequence
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity_loss__sequence
-msgid "Sequence"
-msgstr "序号"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/stock_warehouse.py:0
-#, python-format
-msgid "Sequence picking before manufacturing"
-msgstr "制造前拣货序号"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/stock_warehouse.py:0
-#, python-format
-msgid "Sequence production"
-msgstr "制造序号"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/stock_warehouse.py:0
-#, python-format
-msgid "Sequence stock after manufacturing"
-msgstr "制造后库存序号"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_assign_serial_numbers_production
-msgid "Serial Mass Produce"
-msgstr "序列号批量生产"
-
-#. module: mrp
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_routing_workcenter__time_mode__manual
-msgid "Set duration manually"
-msgstr "手动设置时长"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.res_config_settings_view_form
-msgid "Set the order that work orders should be processed in. Activate the feature within each BoM's Miscellaneous tab"
-msgstr "设置处理工作订单的顺序。激活每个BoM的杂项选项卡中的功能"
-
-#. module: mrp
-#: model:ir.actions.act_window,name:mrp.action_mrp_configuration model:ir.ui.menu,name:mrp.menu_mrp_config
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_kanban
-msgid "Settings"
-msgstr "设置"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__time_start
-msgid "Setup Time"
-msgstr "设置时间"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_capacity__time_start
-msgid "Setup Time (minutes)"
-msgstr ""
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__show_allocation
-msgid "Show Allocation"
-msgstr "显示分配"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_assign_serial__show_apply
-msgid "Show Apply"
-msgstr "显示应用"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_assign_serial__show_backorders
-msgid "Show Backorders"
-msgstr "显示滞销品"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_warehouse_orderpoint__show_bom
-msgid "Show BoM column"
-msgstr "显示BOM列"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view
-msgid "Show Details"
-msgstr "显示详情"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__show_final_lots
-msgid "Show Final Lots"
-msgstr "显示最后一批"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__show_lock
-msgid "Show Lock/unlock buttons"
-msgstr "显示锁定/解锁按钮"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__show_json_popover
-msgid "Show Popover?"
-msgstr "显示弹窗?"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_immediate_production__show_productions
-msgid "Show Productions"
-msgstr "显示制造"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_unbuild_search_view model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_filter
-msgid "Show all records which has next action date is before today"
-msgstr "显示所有的在今天之前的下一个行动日期的记录"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_backorder__show_backorder_lines
-msgid "Show backorder lines"
-msgstr "显示制造欠单明细"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/views/fields/google_slides_viewer.xml:0
-#, python-format
-msgid "Slides viewer"
-msgstr "幻灯片查看器"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_workorder__leave_id
-msgid "Slot into workcenter calendar once planned"
-msgstr "一旦安排就插入工作中心日历"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_unbuild.py:0
-#, python-format
-msgid "Some of your byproducts are tracked, you have to specify a manufacturing order in order to retrieve the correct byproducts."
-msgstr "某些副产品已被跟踪,您必须指定制造订单才能检索正确的副产品。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_unbuild.py:0
-#, python-format
-msgid "Some of your components are tracked, you have to specify a manufacturing order in order to retrieve the correct components."
-msgstr "跟踪了一些组件,必须指定制造订单才能检索正确的组件。"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view
-msgid ""
-"Some product moves have already been confirmed, this manufacturing order can't be completely cancelled. Are you still sure you want to "
-"process ?"
-msgstr "已经确认了一些产品移库,无法完全取消此制造订单。 您还确定要处理吗?"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "Some work orders are already done, you cannot unplan this manufacturing order."
-msgstr "一些工单已经完成,您不能取消该制造订单的安排。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "Some work orders have already started, you cannot unplan this manufacturing order."
-msgstr "一些工单已经开始,您不能取消该制造订单的安排计划."
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__origin
-msgid "Source"
-msgstr "来源"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__location_id
-msgid "Source Location"
-msgstr "源位置"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_view
-msgid "Specific Capacities"
-msgstr ""
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_workcenter__capacity_ids
-msgid "Specific number of pieces that can be produced in parallel per product."
-msgstr ""
-
-#. module: mrp
-#: model:ir.actions.server,name:mrp.action_production_order_split model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_split_form
-msgid "Split"
-msgstr "拆分"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split__counter
-msgid "Split #"
-msgstr "拆分 #"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split__production_detailed_vals_ids
-msgid "Split Details"
-msgstr ""
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split_line__mrp_production_split_id
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_split_form model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_split_multi_form
-msgid "Split Production"
-msgstr ""
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_mrp_production_split_line
-msgid "Split Production Detail"
-msgstr ""
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split__production_split_multi_id
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_split_multi_form
-msgid "Split Productions"
-msgstr ""
-
-#. module: mrp
-#: model:ir.actions.act_window,name:mrp.action_mrp_production_split
-msgid "Split production"
-msgstr "生产拆分"
-
-#. module: mrp
-#: model:ir.actions.act_window,name:mrp.action_mrp_production_split_multi
-msgid "Split productions"
-msgstr "生产拆分"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_filter
-msgid "Starred"
-msgstr "星标消息"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_workorder_tree_editable_view
-msgid "Start"
-msgstr "开始"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__date_start
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity__date_start
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__date_start
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_work_order_search
-msgid "Start Date"
-msgstr "开始日期"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__state
-msgid "State"
-msgstr "状态"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__state model:ir.model.fields,field_description:mrp.field_mrp_workorder__state
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_filter
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_workorder_form_view_filter
-msgid "Status"
-msgstr "状态"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_production__activity_state model:ir.model.fields,help:mrp.field_mrp_unbuild__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: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_warehouse__sam_type_id
-msgid "Stock After Manufacturing Operation Type"
-msgstr "制造运营类型后的库存"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_warehouse__sam_rule_id
-msgid "Stock After Manufacturing Rule"
-msgstr "制造规则后的库存"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_stock_assign_serial
-msgid "Stock Assign Serial Numbers"
-msgstr "库存指定序列号码"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__production_availability
-msgid "Stock Availability"
-msgstr "库存可用性"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_stock_move
-msgid "Stock Move"
-msgstr "库存移动"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__move_dest_ids
-msgid "Stock Movements of Produced Goods"
-msgstr "生产货物的库存移动"
-
-#. module: mrp
-#: model:ir.actions.act_window,name:mrp.action_mrp_unbuild_moves
-msgid "Stock Moves"
-msgstr "库存移动"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_report_stock_report_reception
-msgid "Stock Reception Report"
-msgstr "库存接收报告"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_report_stock_report_product_product_replenishment
-msgid "Stock Replenishment Report"
-msgstr "库存补货报告"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_stock_rule
-msgid "Stock Rule"
-msgstr "库存规则"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_warehouse__sam_loc_id
-msgid "Stock after Manufacturing Location"
-msgstr "制造地点后的库存"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_report_stock_report_stock_rule
-msgid "Stock rule report"
-msgstr "库存规则报告"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/stock_warehouse.py:0
-#, python-format
-msgid "Store Finished Product"
-msgstr "生产入库单"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_document__store_fname
-msgid "Stored Filename"
-msgstr "存储的文件名"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_line__child_bom_id
-msgid "Sub BoM"
-msgstr "子 BOM"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.res_config_settings_view_form
-msgid "Subcontract the production of some products"
-msgstr "外包一些产品的生产"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_res_config_settings__module_mrp_subcontracting
-msgid "Subcontracting"
-msgstr "外包"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__tag_ids
-msgid "Tag"
-msgstr "标签"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_tag__name
-msgid "Tag Name"
-msgstr "标签名"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_production__show_allocation
-msgid "Technical Field used to decide whether the button \"Allocation\" should be displayed."
-msgstr "用于决定是否应显示 \"分配 \"按钮的技术字段。"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_production__reserve_visible
-msgid "Technical field to check when we can reserve quantities"
-msgstr "检查何时可以保留数量的技术字段"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_production__unreserve_visible
-msgid "Technical field to check when we can unreserve"
-msgstr "技术领域来检查何时可以保留"
-
-#. module: mrp
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_routing_workcenter__worksheet_type__text
-msgid "Text"
-msgstr "文本"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_bom.py:0
-#, python-format
-msgid "The Product Unit of Measure you chose has a different category than in the product form."
-msgstr "选择的计量单位跟产品表单的计量单位在不同的类别。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_workcenter.py:0
-#, python-format
-msgid "The Workorder (%s) cannot be started twice!"
-msgstr "工单 (%s) 无法启动两次!"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_bom.py:0
-#, python-format
-msgid "The attribute value %(attribute)s set on product %(product)s does not match the BoM product %(bom_product)s."
-msgstr "产品%(product)s上设置的属性值%(attribute)s与BoM产品%(bom_product)s不匹配。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_workcenter.py:0
-#, python-format
-msgid "The capacity must be strictly positive."
-msgstr "容量必须严格为正数."
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "The component %s should not be the same as the product to produce."
-msgstr "组件 %s 不应与要生产的产品相同。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/stock_orderpoint.py:0
-#, python-format
-msgid "The following replenishment order has been generated"
-msgstr "已生成以下补货订单"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_workorder__qty_produced
-msgid "The number of products already handled by this work order"
-msgstr "此工单已处理的产品数量"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_bom_line__operation_id
-msgid "The operation where the components are consumed, or the finished products created."
-msgstr "作业,在此组件消耗或完工产品创建"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_bom_byproduct__cost_share
-msgid ""
-"The percentage of the final production cost for this by-product line (divided between the quantity produced).The total of all by-products' "
-"cost share must be less than or equal to 100."
-msgstr "该副产品生产线的最终生产成本的百分比(除以生产数量)。所有副产品的成本份额总和必须小于或等于100。"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_stock_move__cost_share
-msgid ""
-"The percentage of the final production cost for this by-product. The total of all by-products' cost share must be smaller or equal to 100."
-msgstr "该副产品的最终生产成本的百分比。所有副产品的成本份额之和必须小于或等于100。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_workorder.py:0
-#, python-format
-msgid "The planned end date of the work order cannot be prior to the planned start date, please correct this to save the work order."
-msgstr "工作订单的安排结束日期不能早于安排开始日期,请更正此日期以保存工单。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_bom.py:0
-#, python-format
-msgid ""
-"The product has already been used at least once, editing its structure may lead to undesirable behaviours. You should rather archive the "
-"product and create a new one with a new bill of materials."
-msgstr "该产品已至少使用过一次,编辑其结构可能会导致不良行为。您应该归档产品并使用新的BOM创建一个新产品."
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_workorder__qty_reported_from_previous_wo
-msgid "The quantity already produced awaiting allocation in the backorders chain."
-msgstr ""
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0 model:ir.model.constraint,message:mrp.constraint_mrp_bom_qty_positive
-#: model:ir.model.constraint,message:mrp.constraint_mrp_production_qty_positive
-#, python-format
-msgid "The quantity to produce must be positive!"
-msgstr "待生产的数量必须是正数!"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_unbuild.py:0
-#, python-format
-msgid "The selected serial number does not correspond to the one used in the manufacturing order, please select another one."
-msgstr "选择的序列号与制造订单中使用的序列号不对应,请选择另一个序列号."
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "The serial number %(number)s used for byproduct %(product_name)s has already been produced"
-msgstr "用于副产品%(product_name)s的序列号%(number)s已经生产"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "The serial number %(number)s used for component %(component)s has already been consumed"
-msgstr "用于组件%(component)s的序列号%(number)s已经消耗"
-
-#. module: mrp
-#: model:ir.model.constraint,message:mrp.constraint_mrp_workcenter_tag_tag_name_unique
-msgid "The tag name must be unique."
-msgstr "标签必须唯一."
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_bom.py:0
-#, python-format
-msgid "The total cost share for a BoM's by-products cannot exceed 100."
-msgstr "一个BoM的副产品的总成本分别他吧不能超过100。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "The total cost share for a manufacturing order's by-products cannot exceed 100."
-msgstr "一个制造订单的副产品的总成本分摊不能超过100。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_workorder.py:0
-#, python-format
-msgid "The work order should have already been processed."
-msgstr "工单应该已经被处理。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/wizard/stock_assign_serial_numbers.py:0
-#, python-format
-msgid "There are more Serial Numbers than the Quantity to Produce"
-msgstr "序列号的数量多于生产的数量"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view
-msgid "There are no components to consume. Are you still sure you want to continue?"
-msgstr "没有要消耗的组件。 您仍然确定要继续吗?"
-
-#. module: mrp
-#: model_terms:ir.actions.act_window,help:mrp.action_mrp_unbuild_moves
-msgid "There's no product move yet"
-msgstr "还没有产品移动"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_workcenter__tz
-msgid "This field is used in order to define in which timezone the resources will work."
-msgstr "此字段用于定义资源工作的时区。"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_workcenter__time_efficiency
-msgid ""
-"This field is used to calculate the expected duration of a work order at this work center. For example, if a work order takes one hour and "
-"the efficiency factor is 100%, then the expected duration will be one hour. If the efficiency factor is 200%, however the expected duration "
-"will be 30 minutes."
-msgstr ""
-"该字段用于计算该工作中心的工单的预期工期。 例如,如果工单花费一小时且效率系数是100%,则预期持续时间将是一小时。 如果效率因子为200%,则预期"
-"持续时间将为30分钟。"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_line/mrp_bom_overview_line.xml:0
-#, python-format
-msgid "This is a BoM of type Kit!"
-msgstr "这是套件BOM!"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_table/mrp_bom_overview_table.xml:0
-#, python-format
-msgid ""
-"This is the cost based on the BoM of the product. It is computed by summing the costs of the components and operations needed to build the "
-"product."
-msgstr "这是基于产品的BOM(BOM)的成本。 它是通过汇总构建产品所需的组件和作业的成本来计算的。"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_table/mrp_bom_overview_table.xml:0
-#, python-format
-msgid "This is the cost defined on the product."
-msgstr "这是产品的定义成本。"
-
-#. module: mrp
-#: model_terms:ir.actions.act_window,help:mrp.action_mrp_unbuild_moves
-msgid ""
-"This menu gives you the full traceability of inventory operations on a specific product.\n"
-" You can filter on the product to see all the past movements for the product."
-msgstr ""
-"此菜单使您可以完全跟踪特定产品上的库存作业。\n"
-" 您可以过滤产品以查看产品过去的所有移动。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "This production has been merge in %s"
-msgstr "该作品已于%s合并"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/stock_rule.py:0
-#, python-format
-msgid "This production order has been created from Replenishment Report."
-msgstr "这个生产订单是由补货报告创建的。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "This serial number for product %s has already been produced"
-msgstr "产品%s的该序列号已经产生"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_bom__product_qty
-msgid ""
-"This should be the smallest quantity that this product can be produced in. If the BOM contains operations, make sure the work center "
-"capacity is accurate."
-msgstr ""
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__time_ids
-msgid "Time"
-msgstr "时间"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__time_efficiency
-msgid "Time Efficiency"
-msgstr "时间效率"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__time_ids
-msgid "Time Logs"
-msgstr "时间日志"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_workorder_form_view_inherit
-msgid "Time Tracking"
-msgstr "时间跟踪"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_workorder.py:0
-#, python-format
-msgid "Time Tracking: %(user)s"
-msgstr "时间跟踪:%(user)s"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_workcenter_capacity__time_stop
-msgid "Time in minutes for the cleaning."
-msgstr "清理的时间,以分钟计."
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_workcenter_capacity__time_start
-msgid "Time in minutes for the setup."
-msgstr "用于设置的时间,以分钟计."
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_routing_workcenter__time_cycle_manual
-msgid "Time in minutes:- In manual mode, time used- In automatic mode, supposed first time when there aren't any work orders yet"
-msgstr "以分钟为单位的时间:-在手动模式下为使用时间-在自动模式下,尚无任何工单的假设第一次计时"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__tz
-msgid "Timezone"
-msgstr "时区"
-
-#. module: mrp
-#: model:digest.tip,name:mrp.digest_tip_mrp_0 model_terms:digest.tip,tip_description:mrp.digest_tip_mrp_0
-msgid "Tip: Use tablets in the shop to control manufacturing"
-msgstr "提示:在商店中使用平板电脑来控制生产"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view
-msgid "To"
-msgstr "至"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_backorder_line__to_backorder
-msgid "To Backorder"
-msgstr "创建欠单"
-
-#. module: mrp
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_production__state__to_close
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_filter
-msgid "To Close"
-msgstr "待关闭"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_consumption_warning_line__product_expected_qty_uom
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view model_terms:ir.ui.view,arch_db:mrp.mrp_production_workorder_form_view_inherit
-#: model_terms:ir.ui.view,arch_db:mrp.report_mrp_production_components
-msgid "To Consume"
-msgstr "待消耗"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_filter
-msgid "To Do"
-msgstr "待办"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_kanban
-msgid "To Launch"
-msgstr "待启动"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_immediate_production_line__to_immediate
-#: model_terms:ir.ui.view,arch_db:mrp.stock_production_type_kanban
-msgid "To Process"
-msgstr "待处理"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view model_terms:ir.ui.view,arch_db:mrp.view_stock_move_operations_finished
-msgid "To Produce"
-msgstr "待生产"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_unbuild_search_view model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_filter
-msgid "Today Activities"
-msgstr "今天的活动"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_routing_workcenter_bom_tree_view
-msgid "Total Duration"
-msgstr "总时长"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__workorder_late_count
-msgid "Total Late Orders"
-msgstr "延迟的订单合计"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__workorder_pending_count
-msgid "Total Pending Orders"
-msgstr "待定的订单合计"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_tree_view
-msgid "Total Qty"
-msgstr "总数量"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__product_uom_qty
-msgid "Total Quantity"
-msgstr "数量总计"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__workorder_progress_count
-msgid "Total Running Orders"
-msgstr "运行的订单合计"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_stock_move_operations_raw
-msgid "Total To Consume"
-msgstr "待消耗总计"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_workorder_form_view_inherit
-msgid "Total duration"
-msgstr "总时长"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_tree_view
-msgid "Total expected duration"
-msgstr "预计总工期"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_production__production_duration_expected
-msgid "Total expected duration (in minutes)"
-msgstr "预计总时间(分钟)"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_tree_view
-msgid "Total real duration"
-msgstr "实际总时间"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_production__production_real_duration
-msgid "Total real duration (in minutes)"
-msgstr "实际总时间(分钟)"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view model_terms:ir.ui.view,arch_db:mrp.view_picking_type_form_inherit_mrp
-msgid "Traceability"
-msgstr "追溯"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_stock_traceability_report
-msgid "Traceability Report"
-msgstr "追溯报告"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_line__tracking
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__product_tracking
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__has_tracking
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__product_tracking
-msgid "Tracking"
-msgstr "追溯"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_stock_picking
-msgid "Transfer"
-msgstr "调拨"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view
-msgid "Transfers"
-msgstr "调拨"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_document__type
-msgid "Type"
-msgstr "类型"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_picking_type__code
-msgid "Type of Operation"
-msgstr "作业类型"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_production__activity_exception_decoration
-#: model:ir.model.fields,help:mrp.field_mrp_unbuild__activity_exception_decoration
-msgid "Type of the exception activity on record."
-msgstr "记录的异常活动类型。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "Unable to split with more than the quantity to produce."
-msgstr "无法以超过生产数量的方式进行分割。"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_workorder_tree_editable_view
-msgid "Unblock"
-msgstr "解锁"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_warn_insufficient_qty_unbuild__unbuild_id
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view model_terms:ir.ui.view,arch_db:mrp.mrp_unbuild_form_view
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_unbuild_form_view_simplified
-msgid "Unbuild"
-msgstr "拆解"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_mrp_unbuild model_terms:ir.ui.view,arch_db:mrp.mrp_unbuild_form_view
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_unbuild_form_view_simplified
-msgid "Unbuild Order"
-msgstr "拆解单"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_unbuild.py:0
-#, python-format
-msgid "Unbuild Order product quantity has to be strictly positive."
-msgstr "拆解单产品数量必须严格为正数。"
-
-#. module: mrp
-#: model:ir.actions.act_window,name:mrp.mrp_unbuild model:ir.ui.menu,name:mrp.menu_mrp_unbuild
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_unbuild_form_view
-msgid "Unbuild Orders"
-msgstr "拆解单"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "Unbuild: %s"
-msgstr "拆解:%s"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__unbuild_ids
-msgid "Unbuilds"
-msgstr ""
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_filter
-msgid "Unbuilt"
-msgstr "未建立"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_control_panel/mrp_bom_overview_control_panel.xml:0
-#, python-format
-msgid "Unfold"
-msgstr "展开"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_table/mrp_bom_overview_table.xml:0
-#, python-format
-msgid "Unit Cost"
-msgstr "单位成本"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_move__unit_factor
-msgid "Unit Factor"
-msgstr "单位因子"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__product_uom_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom_byproduct__product_uom_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_consumption_warning_line__product_uom_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__product_uom_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__product_uom_id
-#: model:ir.model.fields,field_description:mrp.field_stock_warn_insufficient_qty_unbuild__product_uom_name
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_bom_tree_view model_terms:ir.ui.view,arch_db:mrp.view_mrp_bom_filter
-msgid "Unit of Measure"
-msgstr "计量单位"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_bom__product_uom_id model:ir.model.fields,help:mrp.field_mrp_bom_line__product_uom_id
-msgid "Unit of Measure (Unit of Measure) is the unit of measurement for the inventory control"
-msgstr "计量单位是库存控制的量度单位"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view
-msgid "Unlock"
-msgstr "解锁"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_res_config_settings__group_unlocked_by_default
-msgid "Unlock Manufacturing Orders"
-msgstr "解锁制造订单"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view
-msgid "Unlock the manufacturing order to adjust what has been consumed or produced."
-msgstr "解锁制造订单以调整已消耗物料或产成品。"
-
-#. module: mrp
-#: model:res.groups,name:mrp.group_unlocked_by_default
-msgid "Unlocked by default"
-msgstr "默认情况下是解锁的"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view
-msgid "Unplan"
-msgstr "取消安排"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/mrp_forecasted/forecasted_details.xml:0 model:ir.actions.server,name:mrp.mrp_production_action_unreserve_tree
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view model_terms:ir.ui.view,arch_db:mrp.mrp_production_tree_view
-#, python-format
-msgid "Unreserve"
-msgstr "取消保留"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_tree_view
-msgid "UoM"
-msgstr "计量单位"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/views/mrp_documents_kanban/mrp_documents_kanban_controller.xml:0
-#: code:addons/mrp/static/src/xml/mrp_document_template.xml:0
-#, python-format
-msgid "Upload"
-msgstr "上传"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_routing_workcenter_form_view
-msgid "Upload your PDF file."
-msgstr "上传PDF文件."
-
-#. module: mrp
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_production__priority__1
-msgid "Urgent"
-msgstr "紧急"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_document__url
-msgid "Url"
-msgstr ""
-
-#. module: mrp
-#: model:res.groups,name:mrp.group_mrp_workorder_dependencies
-msgid "Use Operation Dependencies"
-msgstr ""
-
-#. module: mrp
-#: model:res.groups,name:mrp.group_mrp_reception_report
-msgid "Use Reception Report with Manufacturing Orders"
-msgstr ""
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.product_product_form_view_bom_button
-#: model_terms:ir.ui.view,arch_db:mrp.product_template_form_view_bom_button
-msgid "Used In"
-msgstr "用于"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity__user_id model:res.groups,name:mrp.group_mrp_user
-#: model_terms:ir.ui.view,arch_db:mrp.oee_search_view
-msgid "User"
-msgstr "用户"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.res_config_settings_view_form
-msgid ""
-"Using a MPS report to schedule your reordering and manufacturing operations is useful if you have long lead time and if you produce based on "
-"sales forecasts."
-msgstr "如果交货时间过长,并根据销售预测进行生产,那么使用MPS报告来安排重新排序和制造作业是非常有用的。"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_production_split__valid_details
-msgid "Valid"
-msgstr "有效"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_backorder_form
-msgid "Validate"
-msgstr "验证"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_control_panel/mrp_bom_overview_control_panel.xml:0
-#, python-format
-msgid "Variant:"
-msgstr "变体:"
-
-#. module: mrp
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_document__priority__3
-msgid "Very High"
-msgstr "非常高"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_workorder_form_view_inherit
-msgid "View WorkOrder"
-msgstr "查看工单"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.res_config_settings_view_form
-msgid "View and allocate manufactured quantities"
-msgstr ""
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_stock_warehouse_orderpoint__manufacturing_visibility_days
-msgid "Visibility Days applied on the manufacturing routes."
-msgstr ""
-
-#. module: mrp
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_production__reservation_state__confirmed
-#: model_terms:ir.ui.view,arch_db:mrp.stock_production_type_kanban model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_filter
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_work_order_search
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_workorder_form_view_filter
-msgid "Waiting"
-msgstr "正在等待"
-
-#. module: mrp
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_production__reservation_state__waiting
-msgid "Waiting Another Operation"
-msgstr "等待其它作业"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_kanban
-msgid "Waiting Availability"
-msgstr "等待可用量"
-
-#. module: mrp
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_workorder__state__pending
-msgid "Waiting for another WO"
-msgstr "等待其他工单"
-
-#. module: mrp
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_workorder__state__waiting
-msgid "Waiting for components"
-msgstr "等待物料"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_workorder.py:0
-#, python-format
-msgid "Waiting the previous work order, planned from %(start)s to %(end)s"
-msgstr "等待上一个工单,安排从%(start)s到%(end)s"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_stock_warehouse model:ir.model.fields,field_description:mrp.field_mrp_production__warehouse_id
-msgid "Warehouse"
-msgstr "仓库"
-
-#. module: mrp
-#. odoo-javascript
-#: code:addons/mrp/static/src/components/bom_overview_control_panel/mrp_bom_overview_control_panel.xml:0
-#, python-format
-msgid "Warehouse:"
-msgstr "仓库:"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_stock_warn_insufficient_qty_unbuild
-msgid "Warn Insufficient Unbuild Quantity"
-msgstr "拆解数量短缺警告"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_bom.py:0 code:addons/mrp/models/mrp_production.py:0 code:addons/mrp/models/mrp_unbuild.py:0
-#: code:addons/mrp/models/stock_scrap.py:0
-#, python-format
-msgid "Warning"
-msgstr "警告"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_filter
-msgid "Warnings"
-msgstr "警告"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_bom__website_message_ids
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__website_message_ids
-#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild__website_message_ids
-msgid "Website Messages"
-msgstr "网站消息"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_bom__website_message_ids model:ir.model.fields,help:mrp.field_mrp_production__website_message_ids
-#: model:ir.model.fields,help:mrp.field_mrp_unbuild__website_message_ids
-msgid "Website communication history"
-msgstr "网上沟通记录"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_bom__picking_type_id
-msgid ""
-"When a procurement has a ‘produce’ route with a operation type set, it will try to create a Manufacturing Order for that product using a BoM "
-"of the same operation type. That allows to define stock rules which trigger different manufacturing orders with different BoMs."
-msgstr ""
-"当采购具有设定作业类型的“生产”路线时,它将尝试使用相同作业类型的BoM为该产品创建制造订单。 这允许定义触发与不同BOM的不同制造订单的采购规则。"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_bom_line__manual_consumption model:ir.model.fields,help:mrp.field_stock_move__manual_consumption
-msgid ""
-"When activated, then the registration of consumption for that component is recorded manually exclusively.\n"
-"If not activated, and any of the components consumption is edited manually on the manufacturing order, Odoo assumes manual consumption also."
-msgstr ""
-
-#. module: mrp
-#: model:ir.model.fields.selection,name:mrp.selection__mrp_bom__ready_to_produce__asap
-msgid "When components for 1st operation are available"
-msgstr "当第一次作业的组件可用时"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_stock_warehouse__manufacture_to_resupply
-msgid "When products are manufactured, they can be manufactured in this warehouse."
-msgstr "当产品为制造品,由此仓库制造."
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/stock_rule.py:0
-#, python-format
-msgid "When products are needed in %s , a manufacturing order is created to fulfill the need."
-msgstr "当需要产品在%s 时, 创建制造订单以满足需要。"
-
-#. module: mrp
-#: model_terms:digest.tip,tip_description:mrp.digest_tip_mrp_0
-msgid ""
-"With the Odoo work center control panel, your worker can start work orders in the shop and follow instructions of the worksheet. Quality "
-"tests are perfectly integrated into the process. Workers can trigger feedback loops, maintenance alerts, scrap products, etc."
-msgstr ""
-"使用Odoo工作中心控制面板,您的工人可以在商店中启动工作订单并遵循工作表中的说明。 质量测试已完美集成到流程中。 工人可以触发反馈流程,维护警"
-"报,报废产品等。"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_mrp_consumption_warning
-msgid "Wizard in case of consumption in warning/strict and more component has been used for a MO (related to the bom)"
-msgstr "如果在警告/严格状态下使用向导,并且MO使用了更多组件(与物料清单标准用量比较)"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_mrp_production_split_multi
-msgid "Wizard to Split Multiple Productions"
-msgstr ""
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_mrp_production_split
-msgid "Wizard to Split a Production"
-msgstr "生产单分拆向导"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_mrp_production_backorder
-msgid "Wizard to mark as done or create back order"
-msgstr "标记为已完成或创建欠单的向导"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_mrp_workcenter model:ir.model.fields,field_description:mrp.field_mrp_routing_workcenter__workcenter_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__name
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_capacity__workcenter_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity__workcenter_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__workcenter_id model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_tree_view
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_view model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_filter
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_workorder_form_view_filter
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_workcenter_search
-msgid "Work Center"
-msgstr "工作中心"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_mrp_workcenter_capacity
-msgid "Work Center Capacity"
-msgstr "工作中心能力"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__workcenter_load
-msgid "Work Center Load"
-msgstr "工作中心负载"
-
-#. module: mrp
-#: model:ir.actions.act_window,name:mrp.action_mrp_workcenter_load_report_graph model_terms:ir.ui.view,arch_db:mrp.view_workcenter_load_pivot
-msgid "Work Center Loads"
-msgstr "工作中心负载"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_view
-msgid "Work Center Name"
-msgstr "工作中心名称"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_mrp_routing_workcenter
-msgid "Work Center Usage"
-msgstr "工作中心使用情况"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_work_center_load_graph
-msgid "Work Center load"
-msgstr "工作中心负载"
-
-#. module: mrp
-#: model:ir.actions.act_window,name:mrp.mrp_workcenter_action model:ir.ui.menu,name:mrp.menu_view_resource_search_mrp
-#: model_terms:ir.ui.view,arch_db:mrp.res_config_settings_view_form
-msgid "Work Centers"
-msgstr "工作中心"
-
-#. module: mrp
-#: model:ir.actions.act_window,name:mrp.mrp_workcenter_kanban_action
-msgid "Work Centers Overview"
-msgstr "工作中心概览"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_workorder_form_view_inherit
-msgid "Work Instruction"
-msgstr "工作指令"
-
-#. module: mrp
-#: model:ir.actions.report,name:mrp.action_report_workorder model:ir.model,name:mrp.model_mrp_workorder
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity__workorder_id
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__name
-#: model:ir.model.fields,field_description:mrp.field_stock_move_line__workorder_id
-#: model:ir.model.fields,field_description:mrp.field_stock_scrap__workorder_id
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_workorder_form_view_filter
-msgid "Work Order"
-msgstr "工单"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_res_config_settings__group_mrp_workorder_dependencies
-msgid "Work Order Dependencies"
-msgstr "工单依赖"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.res_config_settings_view_form
-msgid ""
-"Work Order Operations allow you to create and manage the manufacturing operations that should be followed within your work centers in order "
-"to produce a product. They are attached to bills of materials that will define the required components."
-msgstr "工单作业允许您创建和管理在生产中心应遵循的制造作业。 它们附在定义所需组件的BOM上。"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_stock_move__workorder_id
-msgid "Work Order To Consume"
-msgstr "待消耗的工单"
-
-#. module: mrp
-#: model:ir.actions.act_window,name:mrp.action_mrp_routing_time model:ir.actions.act_window,name:mrp.action_mrp_workorder_production_specific
-#: model:ir.actions.act_window,name:mrp.action_work_orders model:ir.actions.act_window,name:mrp.mrp_workorder_mrp_production_form
-#: model:ir.actions.act_window,name:mrp.mrp_workorder_report model:ir.actions.act_window,name:mrp.mrp_workorder_todo
-#: model:ir.model.fields,field_description:mrp.field_mrp_production__workorder_ids
-#: model:ir.model.fields,field_description:mrp.field_mrp_routing_workcenter__workorder_ids
-#: model:ir.model.fields,field_description:mrp.field_res_config_settings__module_mrp_workorder
-#: model:ir.ui.menu,name:mrp.menu_mrp_work_order_report model:ir.ui.menu,name:mrp.menu_mrp_workorder_todo
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_form_view model_terms:ir.ui.view,arch_db:mrp.res_config_settings_view_form
-msgid "Work Orders"
-msgstr "工单"
-
-#. module: mrp
-#: model:ir.actions.act_window,name:mrp.mrp_workorder_workcenter_report
-msgid "Work Orders Performance"
-msgstr "工单效能"
-
-#. module: mrp
-#: model:ir.actions.act_window,name:mrp.action_mrp_workorder_production model:ir.actions.act_window,name:mrp.action_mrp_workorder_workcenter
-msgid "Work Orders Planning"
-msgstr "工单计划"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_routing_workcenter_form_view
-msgid "Work Sheet"
-msgstr "工作表"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_production_work_order_search
-msgid "Work center"
-msgstr "工作中心"
-
-#. module: mrp
-#: model_terms:ir.actions.act_window,help:mrp.action_mrp_workorder_production
-#: model_terms:ir.actions.act_window,help:mrp.action_mrp_workorder_production_specific
-#: model_terms:ir.actions.act_window,help:mrp.action_mrp_workorder_workcenter model_terms:ir.actions.act_window,help:mrp.mrp_workorder_todo
-msgid ""
-"Work orders are operations to do as part of a manufacturing order.\n"
-" Operations are defined in the bill of materials or added in the manufacturing order directly."
-msgstr ""
-"工单是作为制造订单一部分执行的作业。\n"
-"作业在BOM中定义或直接在制造订单中添加。"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_kanban
-msgid "Work orders in progress. Click to block work center."
-msgstr "工单进行中。点击阻塞工作中心."
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_routing_workcenter_filter model_terms:ir.ui.view,arch_db:mrp.oee_search_view
-msgid "Workcenter"
-msgstr "工作中心"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_workcenter.py:0
-#, python-format
-msgid "Workcenter %s cannot be an alternative of itself."
-msgstr "工作中心%s不能成为其自身的替代品。"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.oee_form_view model_terms:ir.ui.view,arch_db:mrp.oee_graph_view
-#: model_terms:ir.ui.view,arch_db:mrp.oee_pie_view model_terms:ir.ui.view,arch_db:mrp.oee_pivot_view
-#: model_terms:ir.ui.view,arch_db:mrp.oee_tree_view
-msgid "Workcenter Productivity"
-msgstr "工作中心生产力"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_mrp_workcenter_productivity
-msgid "Workcenter Productivity Log"
-msgstr "工作中心生产力日志"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.oee_loss_form_view model_terms:ir.ui.view,arch_db:mrp.oee_loss_tree_view
-msgid "Workcenter Productivity Loss"
-msgstr "工作中心生产力损失"
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_mrp_workcenter_productivity_loss
-msgid "Workcenter Productivity Losses"
-msgstr "工作中心生产力损失"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__working_state
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__working_state
-msgid "Workcenter Status"
-msgstr "工作中心状态"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_kanban
-msgid "Workcenter blocked, click to unblock."
-msgstr "工作中心已阻塞,点击解除阻塞."
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter__resource_calendar_id
-msgid "Working Hours"
-msgstr "工作时间"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__working_user_ids
-msgid "Working user on this work order."
-msgstr "在此工单工作的用户."
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_routing_workcenter__worksheet_type
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__worksheet
-msgid "Worksheet"
-msgstr "工作记录表"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__worksheet_type
-msgid "Worksheet Type"
-msgstr "工作表类型"
-
-#. module: mrp
-#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__worksheet_google_slide
-msgid "Worksheet URL"
-msgstr "工作表格URL"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/stock_lot.py:0
-#, python-format
-msgid ""
-"You are not allowed to create or edit a lot or serial number for the components with the operation type \"Manufacturing\". To change this, "
-"go on the operation type and tick the box \"Create New Lots/Serial Numbers for Components\"."
-msgstr "不允许为使用作业类型为“制造”的组创建或编辑件批号或序列号。 要更改此设置,请在作业类型中,勾选“为组件创建新的批号/序列号”框。"
-
-#. module: mrp
-#: model:ir.model.fields,help:mrp.field_mrp_document__type
-msgid "You can either upload a file from your computer or copy/paste an internet link to your file."
-msgstr "您可以从您的电脑上传一个文件或者复制/粘贴一个 Internet 链接到您的文件."
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_bom.py:0
-#, python-format
-msgid "You can not create a kit-type bill of materials for products that have at least one reordering rule."
-msgstr "不能为至少具有一个重新订购规则的产品创建套件类型的BOM表。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_bom.py:0
-#, python-format
-msgid ""
-"You can not delete a Bill of Material with running manufacturing orders.\n"
-"Please close or cancel it first."
-msgstr "正在生产中的BOM不可删除,请先关闭或取消制造订单."
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "You can only merge manufacturing orders of identical products with same BoM."
-msgstr "您只能合并具有相同BOM的相同产品的制造订单。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "You can only merge manufacturing orders with no additional components or by-products."
-msgstr "您只能合并没有额外组件或副产品的制造订单。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "You can only merge manufacturing with the same operation type"
-msgstr "您只能合并具有相同作业类型的制造。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "You can only merge manufacturing with the same state."
-msgstr "您只能合并具有相同状态的制造。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_workorder.py:0
-#, python-format
-msgid "You cannot change the workcenter of a work order that is in progress or done."
-msgstr "您无法更改用正在执行或已完成工单的工作中心。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_bom.py:0
-#, python-format
-msgid "You cannot create a new Bill of Material from here."
-msgstr "您不能从此处创建新的BOM。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_routing.py:0 code:addons/mrp/models/mrp_workorder.py:0
-#, python-format
-msgid "You cannot create cyclic dependency."
-msgstr "您不能创建周期性的依赖关系。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_unbuild.py:0
-#, python-format
-msgid "You cannot delete an unbuild order if the state is 'Done'."
-msgstr "无法删除状态为“完成”的拆解单。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "You cannot have %s as the finished product and in the Byproducts"
-msgstr "您不能将%s作为完工产品和副产品"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_workorder.py:0
-#, python-format
-msgid "You cannot link this work order to another manufacturing order."
-msgstr "您不能将此工单链接到另一个制造订单。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "You cannot move a manufacturing order once it is cancelled or done."
-msgstr "您不能移动取消或完成状态的制造订单。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_workorder.py:0
-#, python-format
-msgid "You cannot produce the same serial number twice."
-msgstr "不能重复生产相同的序列号。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_unbuild.py:0
-#, python-format
-msgid "You cannot unbuild a undone manufacturing order."
-msgstr "无法取消未完成的制造订单。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_bom.py:0
-#, python-format
-msgid "You cannot use the 'Apply on Variant' functionality and simultaneously create a BoM for a specific variant."
-msgstr "您不能在应用 \"应用于变体 \"功能的同时,为一个特定的变体创建一个BoM。"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_consumption_warning_form
-msgid ""
-"You consumed a different quantity than expected for the following products.\n"
-" \n"
-" Please confirm it has been done on purpose.\n"
-" \n"
-" \n"
-" Please review your component consumption or ask a manager to validate \n"
-" this manufacturing order \n"
-" these manufacturing orders .\n"
-" "
-msgstr ""
-"以下产品您消耗了与标准用量不同的数量。\n"
-"\n"
-"请验证您的操作。\n"
-" \n"
-"\n"
-"请检查您的组件消耗量或请经理进行验证\n"
-"这个制造订单 \n"
-"这些制造订单 。\n"
-" "
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/wizard/change_production_qty.py:0
-#, python-format
-msgid "You have already processed %(quantity)s. Please input a quantity higher than %(minimum)s "
-msgstr "您已经处理了 %(quantity)s. 请输入比 %(minimum)s 更高的数量 "
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_assign_serial_numbers_production
-msgid ""
-"You have entered less serial numbers than the quantity to produce. \n"
-" Create a backorder if you expect to process the remaining quantities later. \n"
-" Do not create a backorder if you will not process the remaining products."
-msgstr ""
-"您输入的序列号比要生产的数量少。 \n"
-" 如果您希望以后能处理剩余的数量,请创建一个后备订单。 \n"
-" 如果您不打算处理剩余的产品,就不要创建后备订单。"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_immediate_production
-msgid ""
-"You have not recorded produced quantities yet, by clicking on apply Odoo will produce all the finished products and consume "
-"all components."
-msgstr "您尚未记录生产量 ,通过单击应用 Odoo将生产所有完工产品并消耗所有组件。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "You must indicate a non-zero amount consumed for at least one of your components"
-msgstr "您必须表明至少有一个组件的消耗量不为零"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "You need at least two production orders to merge them."
-msgstr "您至少需要两个生产订单来合并它们。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_workorder.py:0
-#, python-format
-msgid ""
-"You need to define at least one productivity loss in the category 'Performance'. Create one from the Manufacturing app, menu: "
-"Configuration / Productivity Losses."
-msgstr "需在“绩效”类别中至少定义一个生产力损失。 从制造应用程序创建一个菜单:配置/生产力损失。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_workorder.py:0
-#, python-format
-msgid ""
-"You need to define at least one productivity loss in the category 'Productivity'. Create one from the Manufacturing app, menu: "
-"Configuration / Productivity Losses."
-msgstr "需在“生产力”类别中至少定义一个生产力损失。 从制造应用程序创建一个菜单:配置/生产力损失。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_workcenter.py:0
-#, python-format
-msgid ""
-"You need to define at least one unactive productivity loss in the category 'Performance'. Create one from the Manufacturing app, menu: "
-"Configuration / Productivity Losses."
-msgstr "需在“绩效”类别中定义至少一个未启用的生产力损失。 从制造应用程序创建一个菜单:配置/生产力损失。"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_workorder.py:0
-#, python-format
-msgid "You need to provide a lot for the finished product."
-msgstr "需为完工产品提供批号."
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/wizard/mrp_immediate_production.py:0
-#, python-format
-msgid "You need to supply Lot/Serial Number for products:"
-msgstr "您需要提供产品的批号/序列号:"
-
-#. module: mrp
-#: model:ir.actions.act_window,name:mrp.action_mrp_production_backorder
-msgid "You produced less than initial demand"
-msgstr "您生产的数量少于初始需求"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_unbuild.py:0
-#, python-format
-msgid "You should provide a lot number for the final product."
-msgstr "需为成品提供批号。"
-
-#. module: mrp
-#: model_terms:ir.actions.act_window,help:mrp.mrp_production_action
-msgid "and build finished products using"
-msgstr "并且制造完工产品,使用"
-
-#. module: mrp
-#: model_terms:ir.actions.act_window,help:mrp.mrp_production_action
-msgid "bills of materials"
-msgstr "BOM"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.exception_on_mo
-msgid "cancelled"
-msgstr "已取消"
-
-#. module: mrp
-#: model_terms:ir.actions.act_window,help:mrp.mrp_production_action
-#, fuzzy
-msgid "components"
-msgstr "物料清单"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_assign_serial_numbers_production
-msgid "copy paste a list and/or use Generate"
-msgstr "复制粘贴列表和/或使用 \"生成\""
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.res_config_settings_view_form model_terms:ir.ui.view,arch_db:mrp.view_mrp_product_template_form_inherited
-msgid "days"
-msgstr "天数"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_workorder_form_view_inherit
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_workorder_tree_editable_view
-msgid "expected duration"
-msgstr "预计期限"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.stock_warn_insufficient_qty_unbuild_form_view
-msgid "from location"
-msgstr "来自位置"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_assign_serial_numbers_production
-msgid ""
-"have multiple lot reservations. \n"
-" Do you want to confirm anyway ?"
-msgstr ""
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_routing_workcenter_form_view
-msgid "last"
-msgstr "最后的"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "manufacturing order"
-msgstr "制造订单"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "merged"
-msgstr "已合并"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/report/mrp_report_bom_structure.py:0 model_terms:ir.ui.view,arch_db:mrp.mrp_routing_workcenter_form_view
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_view
-#, python-format
-msgid "minutes"
-msgstr "分钟"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.exception_on_mo
-msgid "of"
-msgstr "的"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.view_mrp_document_form
-msgid "on"
-msgstr "在"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.exception_on_mo
-msgid "ordered instead of"
-msgstr "已订购,替换"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_workcenter_view
-msgid "per workcenter"
-msgstr "每个工作中心"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.production_message
-msgid "quantity has been updated."
-msgstr "数量已更新."
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_production_workorder_tree_editable_view
-msgid "real duration"
-msgstr "实际时长"
-
-#. module: mrp
-#. odoo-python
-#: code:addons/mrp/models/mrp_production.py:0
-#, python-format
-msgid "split"
-msgstr "拆分"
-
-#. module: mrp
-#: model_terms:ir.ui.view,arch_db:mrp.mrp_routing_workcenter_form_view
-msgid "work orders"
-msgstr "工单"
-
-#. module: mrp
-#: model_terms:ir.actions.act_window,help:mrp.action_work_orders
-msgid ""
-"使用工作台工作中心控制面板直接登记车间中的操作.\n"
-" 平板电脑为您的工人提供工作表,并允许他们报废产品,跟踪时间,\n"
-" 发起维护请求,执行质量测试等."
-msgstr ""
-
-#. module: mrp
-#: model:ir.model,name:mrp.model_mrp_production
-msgid "制造订单"
-msgstr ""
-
-#. module: mrp
-#: model_terms:ir.actions.act_window,help:mrp.action_work_orders
-msgid ""
-"工作订单是作为制造订单的一部分执行的操作。\n"
-" 工序在物料清单中定义或直接添加到制造订单中。"
-msgstr ""
-
-#. module: mrp
-#: model_terms:ir.actions.act_window,help:mrp.action_work_orders
-msgid "没有工单要做!"
-msgstr ""
From fc18d3449513d1fb72cdaae75bb1dd7dd9be5ce6 Mon Sep 17 00:00:00 2001
From: mgw <1392924357@qq.com>
Date: Mon, 5 Aug 2024 16:04:53 +0800
Subject: [PATCH 02/36] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=A4=A7=E5=B1=8F?=
=?UTF-8?q?=E7=94=A8=E8=8E=B7=E5=8F=96cnc=E6=9C=BA=E5=BA=8A=E5=88=97?=
=?UTF-8?q?=E8=A1=A8=E6=8E=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_manufacturing/controllers/controllers.py | 33 +++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/sf_manufacturing/controllers/controllers.py b/sf_manufacturing/controllers/controllers.py
index babda164..2b5f8c6f 100644
--- a/sf_manufacturing/controllers/controllers.py
+++ b/sf_manufacturing/controllers/controllers.py
@@ -600,3 +600,36 @@ class Manufacturing_Connect(http.Controller):
res = {'Succeed': False, 'ErrorCode': 202, 'Error': e}
logging.info('AGVDownProduct error:%s' % e)
return json.JSONEncoder().encode(res)
+
+ # 返回CNC机床列表
+ @http.route('/api/CNCList', type='http', auth='public', methods=['GET', 'POST'], csrf=False,
+ cors="*")
+ def CNCList(self, **kw):
+ """
+ 获取CNC机床列表
+ :param kw:
+ :return:
+ """
+
+ logging.info('CNCList:%s' % kw)
+ try:
+ res = {'Succeed': True}
+ # cnc_list = request.env['sf.cnc.equipment'].sudo().search([])
+ # cnc_list = ["XT-GNJC-WZZX-X800-Y550-Z550-T24-A5-1", "XT-GNJC-LSZX-X800-Y550-Z550-T24-A3-3",
+ # "XT-GNJC-LSZX-X800-Y550-Z550-T24-A3-4", "XT-GNJC-LSZX-X800-Y550-Z550-T24-A3-5",
+ # "XT-GNJC-LSZX-X800-Y550-Z550-T24-A3-6", "XT-GNJC-LSZX-X800-Y550-Z550-T24-A3-7",
+ # "XT-GNJC-LSZX-X800-Y550-Z550-T24-A3-8", "XT-GNJC-WZZX-X800-Y550-Z550-T24-A5-2",
+ # "XT-GNJC-GSZG-X600-Y400-Z350-T21-A3-9", "XT-GNJC-GSZG-X600-Y400-Z350-T21-A3-10",
+ # "XT-GNJC-GSZG-X600-Y400-Z350-T21-A3-11", "XT-GNJC-GSZG-X600-Y400-Z350-T21-A3-12",
+ # "XT-GNJC-GSZG-X600-Y400-Z350-T21-A3-13", "XT-GNJC-GSZG-X600-Y400-Z350-T21-A3-14"]
+
+ cnc_list_obj = request.env['maintenance.equipment'].sudo().search(
+ [('function_type', '!=', False), ('active', '=', True)])
+ cnc_list = list(map(lambda x: x.code, cnc_list_obj))
+ print('cnc_list: %s' % cnc_list)
+ res['CNCList'] = cnc_list
+
+ except Exception as e:
+ res = {'Succeed': False, 'ErrorCode': 202, 'Error': e}
+ logging.info('CNCList error:%s' % e)
+ return json.JSONEncoder().encode(res)
From 6e50774b23f17eb3d6dcfefcd8567cb384cf909d Mon Sep 17 00:00:00 2001
From: mgw <1392924357@qq.com>
Date: Mon, 5 Aug 2024 16:23:27 +0800
Subject: [PATCH 03/36] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=9C=BA=E5=BA=8A?=
=?UTF-8?q?=E5=88=97=E8=A1=A8=E6=8E=A5=E5=8F=A3=E4=BD=8D=E7=BD=AE=EF=BC=9B?=
=?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=9C=BA=E5=BA=8A=E5=93=81=E7=89=8C=E5=9E=8B?=
=?UTF-8?q?=E5=8F=B7=E8=BF=94=E5=9B=9E?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_machine_connect/controllers/controllers.py | 34 +++++++++++++++++++
sf_manufacturing/controllers/controllers.py | 33 ------------------
2 files changed, 34 insertions(+), 33 deletions(-)
diff --git a/sf_machine_connect/controllers/controllers.py b/sf_machine_connect/controllers/controllers.py
index ba8139d0..b006e4b2 100644
--- a/sf_machine_connect/controllers/controllers.py
+++ b/sf_machine_connect/controllers/controllers.py
@@ -37,6 +37,7 @@ class Sf_Dashboard_Connect(http.Controller):
res['data'].append({
'id': machine_data.id,
'name': machine_data.name,
+ 'brand': machine_data.type_id.name,
'code': machine_data.code,
'status': machine_data.status,
'run_status': machine_data.run_status,
@@ -96,3 +97,36 @@ class Sf_Dashboard_Connect(http.Controller):
res['status'] = -1
res['message'] = '前端请求机床数据失败,原因:%s' % e
return json.JSONEncoder().encode(res)
+
+ # 返回CNC机床列表
+ @http.route('/api/CNCList', type='http', auth='public', methods=['GET', 'POST'], csrf=False,
+ cors="*")
+ def CNCList(self, **kw):
+ """
+ 获取CNC机床列表
+ :param kw:
+ :return:
+ """
+
+ # logging.info('CNCList:%s' % kw)
+ try:
+ res = {'Succeed': True}
+ # cnc_list = request.env['sf.cnc.equipment'].sudo().search([])
+ # cnc_list = ["XT-GNJC-WZZX-X800-Y550-Z550-T24-A5-1", "XT-GNJC-LSZX-X800-Y550-Z550-T24-A3-3",
+ # "XT-GNJC-LSZX-X800-Y550-Z550-T24-A3-4", "XT-GNJC-LSZX-X800-Y550-Z550-T24-A3-5",
+ # "XT-GNJC-LSZX-X800-Y550-Z550-T24-A3-6", "XT-GNJC-LSZX-X800-Y550-Z550-T24-A3-7",
+ # "XT-GNJC-LSZX-X800-Y550-Z550-T24-A3-8", "XT-GNJC-WZZX-X800-Y550-Z550-T24-A5-2",
+ # "XT-GNJC-GSZG-X600-Y400-Z350-T21-A3-9", "XT-GNJC-GSZG-X600-Y400-Z350-T21-A3-10",
+ # "XT-GNJC-GSZG-X600-Y400-Z350-T21-A3-11", "XT-GNJC-GSZG-X600-Y400-Z350-T21-A3-12",
+ # "XT-GNJC-GSZG-X600-Y400-Z350-T21-A3-13", "XT-GNJC-GSZG-X600-Y400-Z350-T21-A3-14"]
+
+ cnc_list_obj = request.env['maintenance.equipment'].sudo().search(
+ [('function_type', '!=', False), ('active', '=', True)])
+ cnc_list = list(map(lambda x: x.code, cnc_list_obj))
+ print('cnc_list: %s' % cnc_list)
+ res['CNCList'] = cnc_list
+
+ except Exception as e:
+ res = {'Succeed': False, 'ErrorCode': 202, 'Error': e}
+ logging.info('CNCList error:%s' % e)
+ return json.JSONEncoder().encode(res)
diff --git a/sf_manufacturing/controllers/controllers.py b/sf_manufacturing/controllers/controllers.py
index 2b5f8c6f..babda164 100644
--- a/sf_manufacturing/controllers/controllers.py
+++ b/sf_manufacturing/controllers/controllers.py
@@ -600,36 +600,3 @@ class Manufacturing_Connect(http.Controller):
res = {'Succeed': False, 'ErrorCode': 202, 'Error': e}
logging.info('AGVDownProduct error:%s' % e)
return json.JSONEncoder().encode(res)
-
- # 返回CNC机床列表
- @http.route('/api/CNCList', type='http', auth='public', methods=['GET', 'POST'], csrf=False,
- cors="*")
- def CNCList(self, **kw):
- """
- 获取CNC机床列表
- :param kw:
- :return:
- """
-
- logging.info('CNCList:%s' % kw)
- try:
- res = {'Succeed': True}
- # cnc_list = request.env['sf.cnc.equipment'].sudo().search([])
- # cnc_list = ["XT-GNJC-WZZX-X800-Y550-Z550-T24-A5-1", "XT-GNJC-LSZX-X800-Y550-Z550-T24-A3-3",
- # "XT-GNJC-LSZX-X800-Y550-Z550-T24-A3-4", "XT-GNJC-LSZX-X800-Y550-Z550-T24-A3-5",
- # "XT-GNJC-LSZX-X800-Y550-Z550-T24-A3-6", "XT-GNJC-LSZX-X800-Y550-Z550-T24-A3-7",
- # "XT-GNJC-LSZX-X800-Y550-Z550-T24-A3-8", "XT-GNJC-WZZX-X800-Y550-Z550-T24-A5-2",
- # "XT-GNJC-GSZG-X600-Y400-Z350-T21-A3-9", "XT-GNJC-GSZG-X600-Y400-Z350-T21-A3-10",
- # "XT-GNJC-GSZG-X600-Y400-Z350-T21-A3-11", "XT-GNJC-GSZG-X600-Y400-Z350-T21-A3-12",
- # "XT-GNJC-GSZG-X600-Y400-Z350-T21-A3-13", "XT-GNJC-GSZG-X600-Y400-Z350-T21-A3-14"]
-
- cnc_list_obj = request.env['maintenance.equipment'].sudo().search(
- [('function_type', '!=', False), ('active', '=', True)])
- cnc_list = list(map(lambda x: x.code, cnc_list_obj))
- print('cnc_list: %s' % cnc_list)
- res['CNCList'] = cnc_list
-
- except Exception as e:
- res = {'Succeed': False, 'ErrorCode': 202, 'Error': e}
- logging.info('CNCList error:%s' % e)
- return json.JSONEncoder().encode(res)
From 5d8f0f83b2229b56540698db5a543273d774b982 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=83=A1=E5=B0=A7?=
Date: Wed, 7 Aug 2024 17:44:43 +0800
Subject: [PATCH 04/36] =?UTF-8?q?=E5=A2=9E=E5=8A=A0AGV=E8=B0=83=E5=BA=A6?=
=?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=B7=A5=E5=8D=95=E9=A1=B5=E9=9D=A2?=
=?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=87=AA=E5=AE=9A=E4=B9=89=E7=AD=9B=E9=80=89?=
=?UTF-8?q?=E5=AD=97=E6=AE=B5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_machine_connect/models/__init__.py | 1 +
sf_machine_connect/models/mrp_workorder.py | 38 ++++++++++++++
.../views/WorkCenterBarcodes.xml | 1 +
sf_manufacturing/__manifest__.py | 2 +-
sf_manufacturing/controllers/controllers.py | 2 +-
sf_manufacturing/models/__init__.py | 1 +
sf_manufacturing/models/agv_dispatch.py | 50 +++++++++++++++++++
sf_manufacturing/models/agv_setting.py | 13 ++++-
sf_manufacturing/models/mrp_workcenter.py | 2 +
sf_manufacturing/models/mrp_workorder.py | 3 ++
sf_manufacturing/security/ir.model.access.csv | 2 +
sf_manufacturing/views/agv_dispatch_views.xml | 50 +++++++++++++++++++
sf_manufacturing/views/agv_setting_views.xml | 7 +--
.../views/mrp_workcenter_views.xml | 1 +
14 files changed, 167 insertions(+), 6 deletions(-)
create mode 100644 sf_machine_connect/models/mrp_workorder.py
create mode 100644 sf_manufacturing/models/agv_dispatch.py
create mode 100644 sf_manufacturing/views/agv_dispatch_views.xml
diff --git a/sf_machine_connect/models/__init__.py b/sf_machine_connect/models/__init__.py
index ef61fd83..01ae60ae 100644
--- a/sf_machine_connect/models/__init__.py
+++ b/sf_machine_connect/models/__init__.py
@@ -2,3 +2,4 @@ from . import ftp_client
from . import ftp_operate
from . import py2opcua
from . import res_config_setting
+from . import mrp_workorder
diff --git a/sf_machine_connect/models/mrp_workorder.py b/sf_machine_connect/models/mrp_workorder.py
new file mode 100644
index 00000000..21cc96ac
--- /dev/null
+++ b/sf_machine_connect/models/mrp_workorder.py
@@ -0,0 +1,38 @@
+import re
+
+from odoo import fields, models, api
+
+
+class ResMrpWorkOrder(models.Model):
+ _inherit = 'mrp.workorder'
+
+ mixed_search_field = fields.Char(string='坯料产品名称/RFID')
+
+ @api.model
+ def web_read_group(self, domain, fields, groupby, limit=None, offset=0, orderby=False,
+ lazy=True, expand=False, expand_limit=None, expand_orderby=False):
+ domain = domain or []
+ for index, item in enumerate(domain):
+ if isinstance(item, list):
+ if item[0] == 'mixed_search_field':
+ if self._is_rfid_code(item[2]):
+ domain[index] = ['rfid_code', item[1], item[2]]
+ else:
+ domain[index] = ['product_tmpl_name', item[1], item[2]]
+
+ return super(ResMrpWorkOrder, self).web_read_group(domain, fields, groupby, limit=limit, offset=offset, orderby=orderby,
+ lazy=lazy, expand=expand, expand_limit=expand_limit, expand_orderby=expand_orderby)
+
+ def _is_rfid_code(self, tag):
+ """
+ 判断是否是rfid_code
+ """
+ # 基于长度判断(假设RFID标签长度为10到16个字符)
+ if not 10 <= len(tag) <= 16:
+ return False
+
+ # 基于字符集判断(仅包含数字和字母)
+ if not re.match("^[0-9]*$", tag):
+ return False
+
+ return True
\ No newline at end of file
diff --git a/sf_machine_connect/views/WorkCenterBarcodes.xml b/sf_machine_connect/views/WorkCenterBarcodes.xml
index 9e5d3982..97fee70e 100644
--- a/sf_machine_connect/views/WorkCenterBarcodes.xml
+++ b/sf_machine_connect/views/WorkCenterBarcodes.xml
@@ -26,6 +26,7 @@
+
diff --git a/sf_manufacturing/__manifest__.py b/sf_manufacturing/__manifest__.py
index 39da4482..a4199939 100644
--- a/sf_manufacturing/__manifest__.py
+++ b/sf_manufacturing/__manifest__.py
@@ -21,6 +21,7 @@
'wizard/rework_wizard_views.xml',
'wizard/production_wizard_views.xml',
'views/mrp_views_menus.xml',
+ 'views/agv_dispatch_views.xml',
'views/stock_lot_views.xml',
'views/mrp_production_addional_change.xml',
'views/mrp_routing_workcenter_view.xml',
@@ -30,7 +31,6 @@
'views/model_type_view.xml',
'views/agv_setting_views.xml',
'views/sf_maintenance_equipment.xml',
-
],
'assets': {
diff --git a/sf_manufacturing/controllers/controllers.py b/sf_manufacturing/controllers/controllers.py
index babda164..037730bc 100644
--- a/sf_manufacturing/controllers/controllers.py
+++ b/sf_manufacturing/controllers/controllers.py
@@ -429,7 +429,7 @@ class Manufacturing_Connect(http.Controller):
logging.info('LocationChange error:%s' % e)
return json.JSONEncoder().encode(res)
- @http.route('/AutoDeviceApi/AGVToProduct', type='json', auth='sf_token', methods=['GET', 'POST'], csrf=False,
+ @http.route('/AutoDeviceApi/AGVToProduct', type='json', auth='public', methods=['GET', 'POST'], csrf=False,
cors="*")
def AGVToProduct(self, **kw):
"""
diff --git a/sf_manufacturing/models/__init__.py b/sf_manufacturing/models/__init__.py
index 3de23ef3..0b212cdb 100644
--- a/sf_manufacturing/models/__init__.py
+++ b/sf_manufacturing/models/__init__.py
@@ -9,3 +9,4 @@ from . import stock
from . import res_user
from . import production_line_base
from . import agv_setting
+from . import agv_dispatch
diff --git a/sf_manufacturing/models/agv_dispatch.py b/sf_manufacturing/models/agv_dispatch.py
new file mode 100644
index 00000000..f82b3f07
--- /dev/null
+++ b/sf_manufacturing/models/agv_dispatch.py
@@ -0,0 +1,50 @@
+from odoo import models, fields, api
+from odoo.exceptions import ValidationError
+
+
+class AgvDispatch(models.Model):
+ _name = 'sf.agv.dispatch'
+ _description = 'agv调度'
+
+ name = fields.Char('任务单号')
+
+ def _get_agv_route_type_selection(self):
+ return self.env['sf.agv.task.route'].fields_get(['route_type'])['route_type']['selection']
+
+ agv_route_type = fields.Selection(selection=_get_agv_route_type_selection, string='任务类型')
+ agv_route_name = fields.Char('任务路线名称')
+ start_site_id = fields.Many2one('sf.agv.site', '起点接驳站')
+ end_site_id = fields.Many2one('sf.agv.site', '终点接驳站')
+ site_state = fields.Selection([
+ ('占用', '占用'),
+ ('空闲', '空闲')], string='终点接驳站状态')
+ state = fields.Selection([
+ ('待下发', '待下发'),
+ ('配送中', '配送中'),
+ ('已配送', '已配送'),
+ ('已取消', '已取消')], string='状态', default='待下发')
+ workpiece_delivery_ids = fields.One2many('sf.workpiece.delivery', 'agv_dispatch_id', string='工件配送单')
+ delivery_workpieces = fields.Char('配送工件', compute='_compute_delivery_workpieces')
+
+ @api.depends('workpiece_delivery_ids')
+ def _compute_delivery_workpieces(self):
+ for rec in self:
+ rec.delivery_workpieces = '\\'.join(rec.workpiece_delivery_ids.mapped('name'))
+
+ task_create_time = fields.Datetime('任务创建时间')
+ task_delivery_time = fields.Datetime('任务下发时间')
+ task_completion_time = fields.Datetime('任务完成时间')
+ task_duration = fields.Char('任务时长', compute='_compute_task_duration')
+
+ @api.depends('task_completion_time', 'task_delivery_time')
+ def _compute_task_duration(self):
+ for rec in self:
+ if rec.task_completion_time and rec.task_delivery_time:
+ rec.task_duration = str(rec.task_completion_time - rec.task_delivery_time)
+ else:
+ rec.task_duration = ''
+
+ def add_queue(self, vals):
+ if not vals.get('agv_route_type') or vals.get('agv_route_type') not in self._get_agv_route_type_selection():
+ raise ValidationError('无效的路线类型!')
+ self.env['sf.agv.dispatch'].sudo().create(vals)
diff --git a/sf_manufacturing/models/agv_setting.py b/sf_manufacturing/models/agv_setting.py
index 06f9edba..833b2659 100644
--- a/sf_manufacturing/models/agv_setting.py
+++ b/sf_manufacturing/models/agv_setting.py
@@ -11,12 +11,14 @@ class AgvSetting(models.Model):
_description = 'agv站点'
name = fields.Char('位置编号')
- owning_region = fields.Char('所属区域')
+ # owning_region = fields.Char('所属区域')
state = fields.Selection([
('占用', '占用'),
('空闲', '空闲')], string='状态')
divide_the_work = fields.Char('主要分工')
active = fields.Boolean('有效', default=True)
+ region = fields.Many2one(string='所属区域', comodel_name='mrp.workcenter', tracking=True,
+ domain=[('is_agv_dispatch', '=', True)])
def update_site_state(self):
# 调取中控的接驳站接口并修改对应站点的状态
@@ -71,6 +73,15 @@ class AgvTaskRoute(models.Model):
if self.end_site_id == self.start_site_id:
raise UserError("您选择的终点接驳站与起点接驳站重复,请重新选择")
+ region = fields.Many2one(string='所属区域', comodel_name='mrp.workcenter', domain=[('is_agv_dispatch', '=', True)],
+ compute="_compute_region")
+
+ @api.depends('end_site_id')
+ def _compute_region(self):
+ for record in self:
+ if record.end_site_id:
+ record.region = record.end_site_id.region
+
class Center_controlInterfaceLog(models.Model):
_name = 'center_control.interface.log'
diff --git a/sf_manufacturing/models/mrp_workcenter.py b/sf_manufacturing/models/mrp_workcenter.py
index 64cf2d8d..8fb62e7d 100644
--- a/sf_manufacturing/models/mrp_workcenter.py
+++ b/sf_manufacturing/models/mrp_workcenter.py
@@ -124,6 +124,8 @@ class ResWorkcenter(models.Model):
res[wc_id] = [(datetime.fromtimestamp(s), datetime.fromtimestamp(e)) for s, e, _ in final_intervals_wc]
return res
+ # AGV是否可配送
+ is_agv_dispatch = fields.Boolean(string="AGV配送", tracking=True)
class ResWorkcenterProductivity(models.Model):
_inherit = 'mrp.workcenter.productivity'
diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py
index 8f045703..060b06cf 100644
--- a/sf_manufacturing/models/mrp_workorder.py
+++ b/sf_manufacturing/models/mrp_workorder.py
@@ -1744,6 +1744,9 @@ class WorkPieceDelivery(models.Model):
else:
obj.delivery_duration = 0.0
+ # agv调度单
+ agv_dispatch_id = fields.Many2one('sf.agv.dispatch', 'agv调度单')
+
class CMMprogram(models.Model):
_name = 'sf.cmm.program'
diff --git a/sf_manufacturing/security/ir.model.access.csv b/sf_manufacturing/security/ir.model.access.csv
index 9b5b5e28..2fd16b53 100644
--- a/sf_manufacturing/security/ir.model.access.csv
+++ b/sf_manufacturing/security/ir.model.access.csv
@@ -150,5 +150,7 @@ access_sf_processing_panel_group_sf_order_user,sf_processing_panel_group_sf_orde
access_sf_production_wizard_group_sf_order_user,sf_production_wizard_group_sf_order_user,model_sf_production_wizard,sf_base.group_sf_order_user,1,1,1,0
access_sf_processing_panel_group_plan_dispatch,sf_processing_panel_group_plan_dispatch,model_sf_processing_panel,sf_base.group_plan_dispatch,1,1,1,0
+access_sf_agv_dispatch_admin,sf_agv_dispatch_admin,model_sf_agv_dispatch,base.group_system,1,1,1,1
+
diff --git a/sf_manufacturing/views/agv_dispatch_views.xml b/sf_manufacturing/views/agv_dispatch_views.xml
new file mode 100644
index 00000000..5cf608b6
--- /dev/null
+++ b/sf_manufacturing/views/agv_dispatch_views.xml
@@ -0,0 +1,50 @@
+
+
+
+
+
+ agv调度
+ sf.agv.dispatch
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AGV调度
+ sf.agv.dispatch
+ tree
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sf_manufacturing/views/agv_setting_views.xml b/sf_manufacturing/views/agv_setting_views.xml
index 377bee74..66f728f0 100644
--- a/sf_manufacturing/views/agv_setting_views.xml
+++ b/sf_manufacturing/views/agv_setting_views.xml
@@ -8,7 +8,7 @@
-
+
@@ -40,8 +40,9 @@
-
+
+
+
diff --git a/sf_manufacturing/views/mrp_workcenter_views.xml b/sf_manufacturing/views/mrp_workcenter_views.xml
index ad433bf6..61242cba 100644
--- a/sf_manufacturing/views/mrp_workcenter_views.xml
+++ b/sf_manufacturing/views/mrp_workcenter_views.xml
@@ -182,6 +182,7 @@
+
From 36fd17b6c78c320763b3ca788ef4984bc861eb5d Mon Sep 17 00:00:00 2001
From: yuxianghui <3437689193@qq.com>
Date: Thu, 8 Aug 2024 17:03:36 +0800
Subject: [PATCH 05/36] =?UTF-8?q?1=E3=80=81=E5=A4=84=E7=90=86=20=E6=99=BA?=
=?UTF-8?q?=E8=83=BD=E5=B7=A5=E5=8E=82=EF=BC=8C=E9=94=80=E5=94=AE=E8=A7=92?=
=?UTF-8?q?=E8=89=B2=E4=B8=8E=E9=87=87=E8=B4=AD=E8=A7=92=E8=89=B2=E6=9D=83?=
=?UTF-8?q?=E9=99=90=E6=9B=B4=E6=96=B0=20=E9=9C=80=E6=B1=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_sale/__manifest__.py | 3 ++-
sf_sale/models/sale_order.py | 5 +++++
sf_sale/security/ir.model.access.csv | 23 +++++++++++++++++++++++
sf_sale/views/purchase_menu.xml | 23 +++++++++++++++++++++++
sf_sale/views/sale_order_view.xml | 7 +++++++
5 files changed, 60 insertions(+), 1 deletion(-)
create mode 100644 sf_sale/views/purchase_menu.xml
diff --git a/sf_sale/__manifest__.py b/sf_sale/__manifest__.py
index efe72de6..45c95030 100644
--- a/sf_sale/__manifest__.py
+++ b/sf_sale/__manifest__.py
@@ -20,7 +20,8 @@
'views/sale_order_view.xml',
'views/res_partner_view.xml',
'views/purchase_order_view.xml',
- 'views/quick_easy_order_view.xml'
+ 'views/quick_easy_order_view.xml',
+ 'views/purchase_menu.xml'
],
'assets': {
'web.assets_backend': [
diff --git a/sf_sale/models/sale_order.py b/sf_sale/models/sale_order.py
index 31a89c00..d0bd95a3 100644
--- a/sf_sale/models/sale_order.py
+++ b/sf_sale/models/sale_order.py
@@ -13,6 +13,11 @@ READONLY_FIELD_STATES = {
class ReSaleOrder(models.Model):
_inherit = 'sale.order'
+ mrp_production_count = fields.Integer(
+ "Count of MO generated",
+ compute='_compute_mrp_production_ids',
+ groups='mrp.group_mrp_user,sf_base.group_sale_salemanager,sf_base.group_sale_director')
+
logistics_way = fields.Selection([('自提', '自提'), ('到付', '到付'), ('在线支付', '在线支付')], string='物流方式')
state = fields.Selection(
selection=[
diff --git a/sf_sale/security/ir.model.access.csv b/sf_sale/security/ir.model.access.csv
index 0e2f0684..0747340c 100644
--- a/sf_sale/security/ir.model.access.csv
+++ b/sf_sale/security/ir.model.access.csv
@@ -96,5 +96,28 @@ access_product_supplierinfo_group_plan_director,product.supplierinfo user,produc
access_product_category_group_plan_director,product.category user,product.model_product_category,sf_base.group_plan_director,1,1,1,0
+access_purchase_report_sf_base_group_purchase,purchase_report_sf_base_group_purchase,purchase.model_purchase_report,sf_base.group_purchase,1,0,0,0
+access_purchase_report_sf_base_group_purchase_director,purchase_report_sf_base_group_purchase_director,purchase.model_purchase_report,sf_base.group_purchase_director,1,0,0,0
+access_sale_order_sf_base_group_purchase,sale_order_sf_base_group_purchase,model_sale_order,sf_base.group_purchase,1,0,0,0
+access_sale_order_sf_base_group_purchase_director,sale_order_sf_base_group_purchase_director,model_sale_order,sf_base.group_purchase_director,1,0,0,0
+
+
+access_quality_check_group_sale_salemanager,quality_check_group_sale_salemanager,quality.model_quality_check,sf_base.group_sale_salemanager,1,0,0,0
+access_quality_check_group_sale_director,quality_check_group_sale_director,quality.model_quality_check,sf_base.group_sale_director,1,0,0,0
+access_stock_picking_group_sale_salemanager,stock_picking_group_sale_salemanager,stock.model_stock_picking,sf_base.group_sale_salemanager,1,0,0,0
+access_stock_picking_group_sale_director,stock_picking_group_sale_director,stock.model_stock_picking,sf_base.group_sale_director,1,0,0,0
+access_mrp_workorder_group_sale_salemanager,mrp_workorder_group_sale_salemanager,mrp.model_mrp_workorder,sf_base.group_sale_salemanager,1,0,0,0
+access_mrp_workorder_group_sale_director,mrp_workorder_group_sale_director,mrp.model_mrp_workorder,sf_base.group_sale_director,1,0,0,0
+access_mrp_unbuild_group_sale_salemanager,mrp_unbuild_group_sale_salemanager,mrp.model_mrp_unbuild,sf_base.group_sale_salemanager,1,0,0,0
+access_mrp_unbuild_group_sale_director,mrp_unbuild_group_sale_director,mrp.model_mrp_unbuild,sf_base.group_sale_director,1,0,0,0
+access_mrp_workcenter_productivity_group_sale_salemanager,mrp_workcenter_productivity_group_sale_salemanager,mrp.model_mrp_workcenter_productivity,sf_base.group_sale_salemanager,1,0,0,0
+access_mrp_workcenter_productivity_group_sale_director,mrp_workcenter_productivity_group_sale_director,mrp.model_mrp_workcenter_productivity,sf_base.group_sale_director,1,0,0,0
+access_sf_detection_result_group_sale_salemanager,sf_detection_result_group_sale_salemanager,sf_manufacturing.model_sf_detection_result,sf_base.group_sale_salemanager,1,0,0,0
+access_sf_detection_result_group_sale_director,sf_detection_result_group_sale_director,sf_manufacturing.model_sf_detection_result,sf_base.group_sale_director,1,0,0,0
+access_stock_scrap_group_sale_salemanager,stock_scrap_group_sale_salemanager,stock.model_stock_scrap,sf_base.group_sale_salemanager,1,0,0,0
+access_stock_scrap_group_sale_director,stock_scrap_group_sale_director,stock.model_stock_scrap,sf_base.group_sale_director,1,0,0,0
+
+
+
diff --git a/sf_sale/views/purchase_menu.xml b/sf_sale/views/purchase_menu.xml
new file mode 100644
index 00000000..3b92ca4b
--- /dev/null
+++ b/sf_sale/views/purchase_menu.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sf_sale/views/sale_order_view.xml b/sf_sale/views/sale_order_view.xml
index 00cca206..75e2d0c1 100644
--- a/sf_sale/views/sale_order_view.xml
+++ b/sf_sale/views/sale_order_view.xml
@@ -6,6 +6,13 @@
sale.order
+
+ sf_base.group_sale_salemanager,sf_base.group_sale_director
+
+
+ mrp.group_mrp_user,sf_base.group_sale_salemanager,sf_base.group_sale_director
+
+
From a79500d0ad9d33211a3b1e27f66a6ad38f5c6d35 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=83=A1=E5=B0=A7?=
Date: Thu, 8 Aug 2024 17:47:03 +0800
Subject: [PATCH 06/36] =?UTF-8?q?=E5=A2=9E=E5=8A=A0agv=E8=B0=83=E5=BA=A6?=
=?UTF-8?q?=E7=B3=BB=E7=BB=9F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_manufacturing/__manifest__.py | 1 +
sf_manufacturing/data/agv_dispatch_data.xml | 12 ++
sf_manufacturing/models/agv_dispatch.py | 48 ++++--
sf_manufacturing/models/agv_setting.py | 8 +-
sf_manufacturing/models/mrp_workorder.py | 149 ++++++++----------
sf_manufacturing/views/agv_setting_views.xml | 4 +-
sf_manufacturing/views/mrp_workorder_view.xml | 12 +-
.../wizard/workpiece_delivery_views.xml | 14 +-
.../wizard/workpiece_delivery_wizard.py | 46 +++++-
9 files changed, 168 insertions(+), 126 deletions(-)
create mode 100644 sf_manufacturing/data/agv_dispatch_data.xml
diff --git a/sf_manufacturing/__manifest__.py b/sf_manufacturing/__manifest__.py
index a4199939..f17a40df 100644
--- a/sf_manufacturing/__manifest__.py
+++ b/sf_manufacturing/__manifest__.py
@@ -15,6 +15,7 @@
'data/stock_data.xml',
'data/empty_racks_data.xml',
'data/panel_data.xml',
+ 'data/agv_dispatch_data.xml',
'security/group_security.xml',
'security/ir.model.access.csv',
'wizard/workpiece_delivery_views.xml',
diff --git a/sf_manufacturing/data/agv_dispatch_data.xml b/sf_manufacturing/data/agv_dispatch_data.xml
new file mode 100644
index 00000000..32b76406
--- /dev/null
+++ b/sf_manufacturing/data/agv_dispatch_data.xml
@@ -0,0 +1,12 @@
+
+
+
+
+ AGV调度
+ sf.agv.dispatch
+ B%(year)s%(month)s%(day)s
+ 4
+
+
+
+
\ No newline at end of file
diff --git a/sf_manufacturing/models/agv_dispatch.py b/sf_manufacturing/models/agv_dispatch.py
index f82b3f07..74c981f1 100644
--- a/sf_manufacturing/models/agv_dispatch.py
+++ b/sf_manufacturing/models/agv_dispatch.py
@@ -1,20 +1,24 @@
-from odoo import models, fields, api
-from odoo.exceptions import ValidationError
+from odoo import models, fields, api, _
+from odoo.exceptions import UserError
+
+import logging
+
+_logger = logging.getLogger(__name__)
class AgvDispatch(models.Model):
_name = 'sf.agv.dispatch'
_description = 'agv调度'
- name = fields.Char('任务单号')
+ name = fields.Char('任务单号', index=True, copy=False)
def _get_agv_route_type_selection(self):
return self.env['sf.agv.task.route'].fields_get(['route_type'])['route_type']['selection']
- agv_route_type = fields.Selection(selection=_get_agv_route_type_selection, string='任务类型')
+ agv_route_type = fields.Selection(selection=_get_agv_route_type_selection, string='任务类型', required=True)
agv_route_name = fields.Char('任务路线名称')
- start_site_id = fields.Many2one('sf.agv.site', '起点接驳站')
- end_site_id = fields.Many2one('sf.agv.site', '终点接驳站')
+ start_site_id = fields.Many2one('sf.agv.site', '起点接驳站', required=True)
+ end_site_id = fields.Many2one('sf.agv.site', '终点接驳站', tracking=True)
site_state = fields.Selection([
('占用', '占用'),
('空闲', '空闲')], string='终点接驳站状态')
@@ -22,7 +26,8 @@ class AgvDispatch(models.Model):
('待下发', '待下发'),
('配送中', '配送中'),
('已配送', '已配送'),
- ('已取消', '已取消')], string='状态', default='待下发')
+ ('已取消', '已取消')], string='状态', default='待下发', tracking=True)
+ productions = fields.Char('制造订单', compute='_compute_productions')
workpiece_delivery_ids = fields.One2many('sf.workpiece.delivery', 'agv_dispatch_id', string='工件配送单')
delivery_workpieces = fields.Char('配送工件', compute='_compute_delivery_workpieces')
@@ -44,7 +49,28 @@ class AgvDispatch(models.Model):
else:
rec.task_duration = ''
- def add_queue(self, vals):
- if not vals.get('agv_route_type') or vals.get('agv_route_type') not in self._get_agv_route_type_selection():
- raise ValidationError('无效的路线类型!')
- self.env['sf.agv.dispatch'].sudo().create(vals)
+ @api.model_create_multi
+ def create(self, vals_list):
+ # We generate a standard reference
+ for vals in vals_list:
+ vals['name'] = self.env['ir.sequence'].next_by_code('sf.agv.dispatch') or _('New')
+ return super().create(vals_list)
+
+ def add_queue(self, agv_start_site_id, agv_route_type, production_ids, delivery_ids):
+ """
+ 根据参数增加AGV调度任务
+ """
+ vals = {
+ 'start_site_id': agv_start_site_id,
+ 'agv_route_type': agv_route_type,
+ 'productions': '、'.join(production_ids.mapped('name')),
+ 'workpiece_delivery_ids': delivery_ids or [],
+ 'task_create_time': fields.Datetime.now()
+ }
+ try:
+ dispatch = self.env['sf.agv.dispatch'].sudo().create(vals)
+ except Exception as e:
+ _logger.error('添加AGV调度任务失败: %s', e)
+ raise UserError(e)
+
+ return dispatch
diff --git a/sf_manufacturing/models/agv_setting.py b/sf_manufacturing/models/agv_setting.py
index 833b2659..8fe22715 100644
--- a/sf_manufacturing/models/agv_setting.py
+++ b/sf_manufacturing/models/agv_setting.py
@@ -17,7 +17,7 @@ class AgvSetting(models.Model):
('空闲', '空闲')], string='状态')
divide_the_work = fields.Char('主要分工')
active = fields.Boolean('有效', default=True)
- region = fields.Many2one(string='所属区域', comodel_name='mrp.workcenter', tracking=True,
+ workcenter_id = fields.Many2one(string='所属区域', comodel_name='mrp.workcenter', tracking=True,
domain=[('is_agv_dispatch', '=', True)])
def update_site_state(self):
@@ -73,14 +73,16 @@ class AgvTaskRoute(models.Model):
if self.end_site_id == self.start_site_id:
raise UserError("您选择的终点接驳站与起点接驳站重复,请重新选择")
- region = fields.Many2one(string='所属区域', comodel_name='mrp.workcenter', domain=[('is_agv_dispatch', '=', True)],
+ workcenter_id = fields.Many2one(string='所属区域', comodel_name='mrp.workcenter', domain=[('is_agv_dispatch', '=', True)],
compute="_compute_region")
@api.depends('end_site_id')
def _compute_region(self):
for record in self:
if record.end_site_id:
- record.region = record.end_site_id.region
+ record.workcenter_id = record.end_site_id.workcenter_id
+ else:
+ record.workcenter_id = None
class Center_controlInterfaceLog(models.Model):
diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py
index 060b06cf..792ecb9f 100644
--- a/sf_manufacturing/models/mrp_workorder.py
+++ b/sf_manufacturing/models/mrp_workorder.py
@@ -634,25 +634,33 @@ class ResMrpWorkOrder(models.Model):
k, item),
'cmm_ids': False if route.routing_type != 'CNC加工' else self.env['sf.cmm.program']._json_cmm_program(k,
item),
- 'workpiece_delivery_ids': False if not route.routing_type == '装夹预调' else self._json_workpiece_delivery_list(
- production)
+ # 'workpiece_delivery_ids': False if not route.routing_type == '装夹预调' else self._json_workpiece_delivery_list(
+ # production)
}]
return workorders_values_str
- def _json_workpiece_delivery_list(self, production):
- up_route = self.env['sf.agv.task.route'].search([('route_type', '=', '上产线')], limit=1, order='id asc')
- down_route = self.env['sf.agv.task.route'].search([('route_type', '=', '下产线')], limit=1, order='id asc')
+ def _json_workpiece_delivery_list(self):
+ # 修改在装夹工单完成后,生成上产线的工件配送单
+
+ # up_route = self.env['sf.agv.task.route'].search([('route_type', '=', '上产线')], limit=1, order='id asc')
+ # down_route = self.env['sf.agv.task.route'].search([('route_type', '=', '下产线')], limit=1, order='id asc')
return [
[0, '',
- {'production_id': production.id, 'production_line_id': production.production_line_id.id, 'type': '上产线',
- 'route_id': up_route.id,
- 'feeder_station_start_id': up_route.start_site_id.id,
- 'feeder_station_destination_id': up_route.end_site_id.id}],
- [0, '',
- {'production_id': production.id, 'production_line_id': production.production_line_id.id, 'type': '下产线',
- 'route_id': down_route.id,
- 'feeder_station_start_id': down_route.start_site_id.id,
- 'feeder_station_destination_id': down_route.end_site_id.id}]]
+ {
+ 'production_id': self.production_id.id,
+ 'production_line_id': self.production_id.production_line_id.id,
+ 'type': '上产线',
+ # 'route_id': up_route.id,
+ # 'feeder_station_start_id': agv_start_site_id,
+ # 'feeder_station_destination_id': up_route.end_site_id.id
+ }
+ ],
+ # [0, '',
+ # {'production_id': production.id, 'production_line_id': production.production_line_id.id, 'type': '下产线',
+ # 'route_id': down_route.id,
+ # 'feeder_station_start_id': down_route.start_site_id.id,
+ # 'feeder_station_destination_id': down_route.end_site_id.id}]
+ ]
# 拼接工单对象属性值(表面工艺)
def _json_workorder_surface_process_str(self, production, route, process_parameter, supplier_id):
@@ -1182,6 +1190,8 @@ class ResMrpWorkOrder(models.Model):
raw_move.write({'state': 'done'})
record.production_id.button_mark_done1()
# record.production_id.state = 'done'
+ # 生成工件配送单
+ record.workpiece_delivery_ids = record._json_workpiece_delivery_list()
# 将FTP的检测报告文件下载到临时目录
def download_reportfile_tmp(self, workorder, reportpath):
@@ -1485,7 +1495,7 @@ class SfWorkOrderBarcodes(models.Model):
class WorkPieceDelivery(models.Model):
_name = "sf.workpiece.delivery"
- _inherit = ['mail.thread', 'mail.activity.mixin']
+ _inherit = ['mail.thread', 'mail.activity.mixin', "barcodes.barcode_events_mixin"]
_description = '工件配送'
name = fields.Char('单据编码')
@@ -1501,11 +1511,14 @@ class WorkPieceDelivery(models.Model):
feeder_station_destination_id = fields.Many2one('sf.agv.site', '目的接驳站')
task_delivery_time = fields.Datetime('任务下发时间')
task_completion_time = fields.Datetime('任务完成时间')
- type = fields.Selection(
- [('上产线', '上产线'), ('下产线', '下产线'), ('运送空料架', '运送空料架')], string='类型')
+
+ def _get_agv_route_type_selection(self):
+ return self.env['sf.agv.task.route'].fields_get(['route_type'])['route_type']['selection']
+
+ type = fields.Selection(selection=_get_agv_route_type_selection, string='类型')
delivery_duration = fields.Float('配送时长', compute='_compute_delivery_duration')
status = fields.Selection(
- [('待下发', '待下发'), ('待配送', '待配送'), ('已配送', '已配送'), ('已取消', '已取消')], string='状态',
+ [('待下发', '待下发'), ('已下发', '已下发'), ('已配送', '已配送'), ('已取消', '已取消')], string='状态',
default='待下发',
tracking=True)
is_cnc_program_down = fields.Boolean('程序是否下发', default=False, tracking=True)
@@ -1564,82 +1577,41 @@ class WorkPieceDelivery(models.Model):
production_ids = []
is_cnc_down = 0
is_not_production_line = 0
- is_not_route = 0
same_production_line_id = None
same_route_id = None
- down_status = '待下发'
- production_type = None
- num = 0
+ production_type = '上产线'
+ max_num = 4 # 最大配送数量
+ if len(self) > max_num:
+ raise UserError('仅限于配送1-4个制造订单,请重新选择')
for item in self:
- num += 1
- if production_type is None:
- production_type = item.type
- if item.type == "运送空料架":
- if num >= 2:
- raise UserError('仅选择一条路线进行配送,请重新选择')
- else:
- delivery_ids.append(item.id)
- else:
- if num > 4:
- raise UserError('仅限于配送1-4个制造订单,请重新选择')
- if item.status in ['待配送', '已配送']:
- raise UserError('请选择状态为【待下发】的制造订单进行配送')
- if item.route_id:
- if same_route_id is None:
- same_route_id = item.route_id.id
- if item.route_id.id != same_route_id:
- is_not_route += 1
- # else:
- # raise UserError('请选择【任务路线】再进行配送')
- # if item.production_id.production_line_state == '已下产线' and item.state == '待下发' and item.type == '下产线':
- # raise UserError('该制造订单已下产线,无需配送')
- if production_type != item.type:
- raise UserError('请选择类型为%s的制造订单进行配送' % production_type)
- if down_status != item.status:
- up_workpiece = self.search([('type', '=', '上产线'), ('production_id', '=', item.production_id),
- ('status', '=', '待下发')])
- if up_workpiece:
- raise UserError('您所选择的制造订单暂未上产线,请在上产线后再进行配送')
- else:
- raise UserError('请选择状态为【待下发】的制造订单进行配送')
-
- if same_production_line_id is None:
- same_production_line_id = item.production_line_id.id
- if item.production_line_id.id != same_production_line_id:
- is_not_production_line += 1
- if item.is_cnc_program_down is False:
- is_cnc_down += 1
- if is_cnc_down == 0 and is_not_production_line == 0 and is_not_route == 0:
- delivery_ids.append(item.id)
- production_ids.append(item.production_id.id)
+ if item.status != '待下发':
+ raise UserError('请选择状态为【待下发】的制造订单进行配送')
+ if same_production_line_id is None:
+ same_production_line_id = item.production_line_id.id
+ if item.production_line_id.id != same_production_line_id:
+ is_not_production_line += 1
+ if item.is_cnc_program_down is False:
+ is_cnc_down += 1
+ if is_cnc_down == 0 and is_not_production_line == 0:
+ delivery_ids.append(item.id)
+ production_ids.append(item.production_id.id)
if is_cnc_down >= 1:
raise UserError('您所选择制造订单的【CNC程序】暂未下发,请在程序下发后再进行配送')
if is_not_production_line >= 1:
raise UserError('您所选择制造订单的【目的生产线】不一致,请重新确认')
- if is_not_route >= 1:
- raise UserError('您所选择制造订单的【任务路线】不一致,请重新确认')
- is_free = self._check_avgsite_state()
- if is_free is True:
- if delivery_ids:
- return {
- 'name': _('确认'),
- 'type': 'ir.actions.act_window',
- 'view_mode': 'form',
- 'res_model': 'sf.workpiece.delivery.wizard',
- 'target': 'new',
- 'context': {
- 'default_delivery_ids': [(6, 0, delivery_ids)],
- 'default_production_ids': [(6, 0, production_ids)],
- 'default_destination_production_line_id': same_production_line_id,
- 'default_route_id': same_route_id,
- 'default_type': production_type,
- }}
- else:
- if production_type == '运送空料架':
- raise UserError("您所选择的【任务路线】的【终点接驳站】已占用,请在该接驳站空闲时进行配送")
- else:
- raise UserError(
- "您所选择制造订单的【任务路线】的【终点接驳站】已占用,请在该接驳站空闲时或选择其他路线进行配送")
+ if delivery_ids:
+ return {
+ 'name': _('确认'),
+ 'type': 'ir.actions.act_window',
+ 'view_mode': 'form',
+ 'res_model': 'sf.workpiece.delivery.wizard',
+ 'target': 'new',
+ 'context': {
+ 'default_delivery_ids': [(6, 0, delivery_ids)],
+ 'default_production_ids': [(6, 0, production_ids)],
+ 'default_type': production_type,
+ }}
+
# 验证agv站点是否可用
def _check_avgsite_state(self):
@@ -1747,6 +1719,9 @@ class WorkPieceDelivery(models.Model):
# agv调度单
agv_dispatch_id = fields.Many2one('sf.agv.dispatch', 'agv调度单')
+ def on_barcode_scanned(self, barcode):
+ logging.info('Rfid:%s' % barcode)
+
class CMMprogram(models.Model):
_name = 'sf.cmm.program'
diff --git a/sf_manufacturing/views/agv_setting_views.xml b/sf_manufacturing/views/agv_setting_views.xml
index 66f728f0..62e3c623 100644
--- a/sf_manufacturing/views/agv_setting_views.xml
+++ b/sf_manufacturing/views/agv_setting_views.xml
@@ -8,7 +8,7 @@
-
+
@@ -42,7 +42,7 @@
-
+
diff --git a/sf_manufacturing/views/mrp_workorder_view.xml b/sf_manufacturing/views/mrp_workorder_view.xml
index 805dcb1f..60c0b8a0 100644
--- a/sf_manufacturing/views/mrp_workorder_view.xml
+++ b/sf_manufacturing/views/mrp_workorder_view.xml
@@ -643,15 +643,15 @@
-
+
+
-
+
-
-
-
+
+
+
diff --git a/sf_manufacturing/wizard/workpiece_delivery_views.xml b/sf_manufacturing/wizard/workpiece_delivery_views.xml
index a8d00d72..96ccfc7f 100644
--- a/sf_manufacturing/wizard/workpiece_delivery_views.xml
+++ b/sf_manufacturing/wizard/workpiece_delivery_views.xml
@@ -9,23 +9,17 @@
-
+
-
-
+
+
+
-
-
-
-
-
- 是否确定配送
-
diff --git a/sf_manufacturing/wizard/workpiece_delivery_wizard.py b/sf_manufacturing/wizard/workpiece_delivery_wizard.py
index fdf64bf9..04623a09 100644
--- a/sf_manufacturing/wizard/workpiece_delivery_wizard.py
+++ b/sf_manufacturing/wizard/workpiece_delivery_wizard.py
@@ -18,15 +18,40 @@ class WorkpieceDeliveryWizard(models.TransientModel):
route_id = fields.Many2one('sf.agv.task.route', '任务路线', domain=[('route_type', 'in', ['上产线', '下产线'])])
feeder_station_start_id = fields.Many2one('sf.agv.site', '起点接驳站')
feeder_station_destination_id = fields.Many2one('sf.agv.site', '目的接驳站')
- type = fields.Selection(
- [('上产线', '上产线'), ('下产线', '下产线'), ('运送空料架', '运送空料架')], string='类型')
+ workcenter_id = fields.Many2one(string='所属区域', comodel_name='mrp.workcenter', tracking=True)
+
+ @api.onchange('type')
+ def _onchange_type(self):
+ routes = self.env['sf.agv.task.route'].search([('route_type', '=', self.type)])
+ if self.type:
+ start_site_ids = routes.mapped('start_site_id.id')
+ workcenter_ids = routes.mapped('end_site_id.workcenter_id.id')
+ if workcenter_ids:
+ self.workcenter_id = workcenter_ids[0]
+ return {
+ 'domain':
+ {
+ 'feeder_station_start_id': [('id', 'in', start_site_ids)],
+ 'workcenter_id': [('id', 'in', workcenter_ids)],
+ }
+ }
+ else:
+ return {
+ 'domain':
+ {
+ 'feeder_station_start_id': [],
+ 'workcenter_id': [],
+ }
+ }
+
+ def _get_agv_route_type_selection(self):
+ return self.env['sf.agv.task.route'].fields_get(['route_type'])['route_type']['selection']
+
+ type = fields.Selection(selection=_get_agv_route_type_selection, string='类型')
def confirm(self):
- if self.type != '运送空料架':
- if not self.route_id:
- raise UserError('请选择路线')
if self.workorder_id:
- self.workorder_id.workpiece_delivery_ids[0]._delivery_avg()
+ self.workorder_id.workpiece_delivery_ids[0].agv_dispatch_id()
else:
is_not_production_line = 0
same_production_line_id = None
@@ -40,7 +65,14 @@ class WorkpieceDeliveryWizard(models.TransientModel):
if is_not_production_line >= 1:
raise UserError('制造订单号为%s的目的生产线不一致' % notsame_production_line_str)
else:
- self.delivery_ids._delivery_avg()
+ # self.delivery_ids._delivery_avg()
+ agv_dispatch_id = self.env['sf.agv.dispatch'].add_queue(
+ agv_start_site_id=self.feeder_station_start_id.id,
+ agv_route_type=self.type,
+ production_ids=self.production_ids,
+ delivery_ids=self.delivery_ids.ids
+ )
+ self.delivery_ids.agv_dispatch_id = agv_dispatch_id
def recognize_production(self):
# production_ids = []
From e6ca4c27ac8998b42f7b6ccc9af6876fc274ef6f Mon Sep 17 00:00:00 2001
From: yuxianghui <3437689193@qq.com>
Date: Fri, 9 Aug 2024 17:19:03 +0800
Subject: [PATCH 07/36] =?UTF-8?q?1=E3=80=81=E5=BA=93=E4=BD=8D=E5=8F=98?=
=?UTF-8?q?=E6=9B=B4=E6=8E=A5=E5=8F=A3=E3=80=81=E5=BA=93=E4=BD=8D=E4=BF=A1?=
=?UTF-8?q?=E6=81=AF=E6=8E=A5=E5=8F=A3=E4=BC=98=E5=8C=96=EF=BC=9B2?=
=?UTF-8?q?=E3=80=81=E5=8A=9F=E8=83=BD=E5=88=80=E5=85=B7=E9=A2=84=E8=AD=A6?=
=?UTF-8?q?=E6=A8=A1=E5=9E=8B=E4=BC=98=E5=8C=96=EF=BC=9B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_manufacturing/controllers/controllers.py | 88 +++++++++++++------
sf_tool_management/models/base.py | 82 ++++++++---------
sf_tool_management/models/functional_tool.py | 63 ++++++++-----
.../views/functional_tool_views.xml | 41 ++++-----
sf_warehouse/models/model.py | 4 +-
sf_warehouse/models/sync_common.py | 29 +++---
6 files changed, 173 insertions(+), 134 deletions(-)
diff --git a/sf_manufacturing/controllers/controllers.py b/sf_manufacturing/controllers/controllers.py
index babda164..8075f126 100644
--- a/sf_manufacturing/controllers/controllers.py
+++ b/sf_manufacturing/controllers/controllers.py
@@ -396,34 +396,66 @@ class Manufacturing_Connect(http.Controller):
OldDeciveStart = ret['OldDeciveStart']
OldDeciveEnd = ret['OldDeciveEnd']
- temp_val_sn_id = None
- old_localtion = None
- # if ChangeType == 'Part' or ChangeType == 'Tool':
- stock_lot_obj = request.env['stock.lot'].sudo().search(
- [('rfid', '=', RfidCode)], limit=1)
- logging.info('stock_lot_obj===========:%s' % stock_lot_obj)
- if not stock_lot_obj:
- res = {'Succeed': False, 'ErrorCode': 202, 'Error': '未根据RfidCode找到该产品'}
- return json.JSONEncoder().encode(res)
- if OldPosition:
- old_localtion = request.env['sf.shelf.location'].sudo().search(
- [('barcode', '=', OldPosition)], limit=1)
- logging.info('old_localtion===========:%s' % old_localtion)
- new_localtion = request.env['sf.shelf.location'].sudo().search(
- [('barcode', '=', NewPosition)], limit=1)
- logging.info('new_localtion===========:%s' % new_localtion)
- if not new_localtion:
- res = {'Succeed': False, 'ErrorCode': 202, 'Error': '没有该目标位置'}
- return json.JSONEncoder().encode(res)
- if old_localtion:
- temp_val_sn_id = old_localtion.product_sn_id
- logging.info('temp_val_sn_id===========:%s' % temp_val_sn_id)
- old_localtion.product_sn_id = None
- new_localtion.product_sn_id = temp_val_sn_id
- logging.info('====1======')
- else:
- new_localtion.product_sn_id = stock_lot_obj.id
- logging.info('=====2======')
+ if ChangeType == 'Part':
+ temp_val_sn_id = None
+ old_localtion = None
+ # if ChangeType == 'Part' or ChangeType == 'Tool':
+ stock_lot_obj = request.env['stock.lot'].sudo().search(
+ [('rfid', '=', RfidCode)], limit=1)
+ logging.info('stock_lot_obj===========:%s' % stock_lot_obj)
+ if not stock_lot_obj:
+ res = {'Succeed': False, 'ErrorCode': 202, 'Error': '未根据RfidCode找到该产品'}
+ return json.JSONEncoder().encode(res)
+ if OldPosition:
+ old_localtion = request.env['sf.shelf.location'].sudo().search(
+ [('barcode', '=', OldPosition)], limit=1)
+ logging.info('old_localtion===========:%s' % old_localtion)
+ new_localtion = request.env['sf.shelf.location'].sudo().search(
+ [('barcode', '=', NewPosition)], limit=1)
+ logging.info('new_localtion===========:%s' % new_localtion)
+ if not new_localtion:
+ res = {'Succeed': False, 'ErrorCode': 202, 'Error': '没有该目标位置'}
+ return json.JSONEncoder().encode(res)
+ if old_localtion:
+ temp_val_sn_id = old_localtion.product_sn_id
+ logging.info('temp_val_sn_id===========:%s' % temp_val_sn_id)
+ old_localtion.product_sn_id = None
+ new_localtion.product_sn_id = temp_val_sn_id
+ logging.info('====1======')
+ else:
+ new_localtion.product_sn_id = stock_lot_obj.id
+ logging.info('=====2======')
+ elif ChangeType == 'Tool':
+ # 对功能刀具库位变更信息进行更改
+ def write_tool(DeciveId):
+ if 'Tool' in DeciveId:
+ shelfinfo = self.env['sf.shelf.location'].get_sf_shelf_location_info(DeciveId)
+ for item in shelfinfo:
+ shelf_barcode = self.env['sf.shelf.location.datasync'].find_our_code(item['Postion'])
+ location_id = self.env['sf.shelf.location'].search([('barcode', '=', shelf_barcode)],
+ limit=1)
+ if location_id:
+ # 如果是线边刀库信息,则对功能刀具移动生成记录
+ if 'Tool' in item['Postion']:
+ tool = self.env['sf.functional.cutting.tool.entity'].sudo().search(
+ [('rfid', '=', item['RfidCode']), ('functional_tool_status', '!=', '已拆除')])
+ tool.tool_in_out_stock_location(location_id)
+ if tool:
+ location_id.product_sn_id = tool.barcode_id.id
+ else:
+ location_id.product_sn_id = False
+ else:
+ equipment_id = self.env['maintenance.equipment'].search([('name', '=', DeciveId)])
+ if equipment_id:
+ equipment_id.register_equipment_tool()
+ else:
+ res_1 = {'Succeed': False, 'ErrorCode': 202, 'Error': f'设备【{DeciveId}】不存在'}
+ return json.JSONEncoder().encode(res_1)
+
+ if OldDeciveId:
+ write_tool(OldDeciveId)
+ elif NewDeciveId:
+ write_tool(NewDeciveId)
except Exception as e:
res = {'Succeed': False, 'ErrorCode': 202, 'Error': e}
logging.info('LocationChange error:%s' % e)
diff --git a/sf_tool_management/models/base.py b/sf_tool_management/models/base.py
index 65475333..e756899b 100644
--- a/sf_tool_management/models/base.py
+++ b/sf_tool_management/models/base.py
@@ -94,47 +94,47 @@ class MachineTableToolChangingApply(models.Model):
if len(records) > 1:
raise ValidationError('该刀位号已存在,请重新选择!!!')
- @api.constrains('functional_tool_status')
- def automation_apply_for_tool_change(self):
- """
- 自动申请换刀
- :return:
- """
- # 更新数据到机台换刀申请界面
- if self.functional_tool_status == '报警' and not self.sf_functional_tool_assembly_id:
- machine_table_tool_changing_apply = self.env['sf.machine.table.tool.changing.apply'].search(
- [('maintenance_equipment_id', '=', self.maintenance_equipment_id.id),
- ('cutter_spacing_code_id', '=', self.cutter_spacing_code_id.id)
- ])
-
- # 创建功能刀具预警记录
- self.env['sf.functional.tool.warning'].create_tool_warning_record({'tool_changing_apply_id': self})
-
- # 新建组装任务
- sf_functional_tool_assembly = self.env['sf.functional.tool.assembly'].create({
- 'functional_tool_name': self.functional_tool_name,
- 'functional_tool_type_id': self.functional_tool_type_id.id,
- 'functional_tool_diameter': self.diameter,
- 'knife_tip_r_angle': self.knife_tip_r_angle,
- 'coarse_middle_thin': '3',
- 'new_former': '0',
- 'functional_tool_length': self.extension_length,
- 'effective_length': self.effective_length,
- 'loading_task_source': '1',
- 'use_tool_time': fields.Datetime.now() + timedelta(hours=4),
- 'production_line_name_id': self.production_line_id.id,
- 'machine_tool_name_id': self.maintenance_equipment_id.id,
- 'applicant': '系统自动',
- 'apply_time': fields.Datetime.now(),
- 'cutter_spacing_code_id': self.cutter_spacing_code_id.id,
- 'whether_standard_knife': self.whether_standard_knife,
- 'reason_for_applying': '机台报警自动换刀',
- 'sf_machine_table_tool_changing_apply_id': self.id
- })
-
- machine_table_tool_changing_apply.write(
- {'status': '1',
- 'sf_functional_tool_assembly_id': sf_functional_tool_assembly.id})
+ # @api.constrains('functional_tool_status')
+ # def automation_apply_for_tool_change(self):
+ # """
+ # 自动申请换刀
+ # :return:
+ # """
+ # # 更新数据到机台换刀申请界面
+ # if self.functional_tool_status == '报警' and not self.sf_functional_tool_assembly_id:
+ # machine_table_tool_changing_apply = self.env['sf.machine.table.tool.changing.apply'].search(
+ # [('maintenance_equipment_id', '=', self.maintenance_equipment_id.id),
+ # ('cutter_spacing_code_id', '=', self.cutter_spacing_code_id.id)
+ # ])
+ #
+ # # 创建功能刀具预警记录
+ # self.env['sf.functional.tool.warning'].create_tool_warning_record({'tool_changing_apply_id': self})
+ #
+ # # 新建组装任务
+ # sf_functional_tool_assembly = self.env['sf.functional.tool.assembly'].create({
+ # 'functional_tool_name': self.functional_tool_name,
+ # 'functional_tool_type_id': self.functional_tool_type_id.id,
+ # 'functional_tool_diameter': self.diameter,
+ # 'knife_tip_r_angle': self.knife_tip_r_angle,
+ # 'coarse_middle_thin': '3',
+ # 'new_former': '0',
+ # 'functional_tool_length': self.extension_length,
+ # 'effective_length': self.effective_length,
+ # 'loading_task_source': '1',
+ # 'use_tool_time': fields.Datetime.now() + timedelta(hours=4),
+ # 'production_line_name_id': self.production_line_id.id,
+ # 'machine_tool_name_id': self.maintenance_equipment_id.id,
+ # 'applicant': '系统自动',
+ # 'apply_time': fields.Datetime.now(),
+ # 'cutter_spacing_code_id': self.cutter_spacing_code_id.id,
+ # 'whether_standard_knife': self.whether_standard_knife,
+ # 'reason_for_applying': '机台报警自动换刀',
+ # 'sf_machine_table_tool_changing_apply_id': self.id
+ # })
+ #
+ # machine_table_tool_changing_apply.write(
+ # {'status': '1',
+ # 'sf_functional_tool_assembly_id': sf_functional_tool_assembly.id})
def revocation_1(self):
"""
diff --git a/sf_tool_management/models/functional_tool.py b/sf_tool_management/models/functional_tool.py
index 0d9473ca..2c677e60 100644
--- a/sf_tool_management/models/functional_tool.py
+++ b/sf_tool_management/models/functional_tool.py
@@ -53,6 +53,21 @@ class FunctionalCuttingToolEntity(models.Model):
safe_inventory_id = fields.Many2one('sf.real.time.distribution.of.functional.tools',
string='功能刀具安全库存', readonly=True)
+ @api.onchange('functional_tool_status')
+ def _onchange_functional_tool_status(self):
+ for item in self:
+ if item:
+ if item.functional_tool_status == '报警':
+ # 创建报警刀具拆解单
+ self.env['sf.functional.tool.dismantle'].sudo().create({
+ 'functional_tool_id': item.id,
+ 'dismantle_cause': '寿命到期报废'
+ })
+ # 创建刀具报警记录
+ # self.env['sf.functional.tool.warning'].sudo().create({
+ # ''
+ # })
+
@api.depends('barcode_id.quant_ids', 'barcode_id.quant_ids.location_id', 'functional_tool_status',
'current_shelf_location_id')
def _compute_current_location_id(self):
@@ -324,7 +339,7 @@ class FunctionalToolWarning(models.Model):
_description = '功能刀具预警'
code = fields.Char('编码', related='functional_tool_name_id.code')
- rfid = fields.Char('Rfid', related='functional_tool_name_id.rfid')
+ rfid = fields.Char('Rfid')
tool_groups_id = fields.Many2one('sf.tool.groups', '刀具组', related='functional_tool_name_id.tool_groups_id')
name = fields.Char('名称', invisible=True, readonly=True, related='functional_tool_name_id.name')
# 机床信息
@@ -338,7 +353,7 @@ class FunctionalToolWarning(models.Model):
domain="[('equipment_id', '=', maintenance_equipment_id)]")
# 功能刀具信息
functional_tool_name_id = fields.Many2one('sf.functional.tool.assembly', string='功能刀具名称')
- barcode_id = fields.Many2one('stock.lot', string='功能刀具序列号', related='functional_tool_name_id.barcode_id')
+ barcode_id = fields.Many2one('stock.lot', string='序列号', related='functional_tool_name_id.barcode_id')
mrs_cutting_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型')
diameter = fields.Float(string='刀具直径(mm)')
knife_tip_r_angle = fields.Float(string='刀尖R角(mm)')
@@ -361,28 +376,28 @@ class FunctionalToolWarning(models.Model):
machine_table_name_ids = categories._search([], order=order, access_rights_uid=SUPERUSER_ID)
return categories.browse(machine_table_name_ids)
- def create_tool_warning_record(self, obj):
- """
- 机台换刀申请报警状态时,创建功能刀具预警记录
- """
- if obj:
- for tool in obj.get('tool_changing_apply_id'):
- self.env['sf.functional.tool.warning'].create({
- 'production_line_id': tool.production_line_id.id,
- 'maintenance_equipment_id': tool.maintenance_equipment_id.id,
- 'machine_tool_code': tool.machine_tool_code,
- 'machine_table_type_id': tool.machine_table_type_id.id,
- 'cutter_spacing_code_id': tool.cutter_spacing_code_id.id,
- 'functional_tool_name_id': tool.functional_tool_name_id.id,
- 'barcode_id': tool.barcode_id.id,
- 'diameter': tool.diameter,
- 'knife_tip_r_angle': tool.knife_tip_r_angle,
- 'max_lifetime_value': tool.max_lifetime_value,
- 'alarm_value': tool.alarm_value,
- 'used_value': tool.used_value,
- 'functional_tool_status': tool.functional_tool_status,
- 'alarm_time': fields.Datetime.now(),
- })
+ # def create_tool_warning_record(self, obj):
+ # """
+ # 机台换刀申请报警状态时,创建功能刀具预警记录
+ # """
+ # if obj:
+ # for tool in obj.get('tool_changing_apply_id'):
+ # self.env['sf.functional.tool.warning'].create({
+ # 'production_line_id': tool.production_line_id.id,
+ # 'maintenance_equipment_id': tool.maintenance_equipment_id.id,
+ # 'machine_tool_code': tool.machine_tool_code,
+ # 'machine_table_type_id': tool.machine_table_type_id.id,
+ # 'cutter_spacing_code_id': tool.cutter_spacing_code_id.id,
+ # 'functional_tool_name_id': tool.functional_tool_name_id.id,
+ # 'barcode_id': tool.barcode_id.id,
+ # 'diameter': tool.diameter,
+ # 'knife_tip_r_angle': tool.knife_tip_r_angle,
+ # 'max_lifetime_value': tool.max_lifetime_value,
+ # 'alarm_value': tool.alarm_value,
+ # 'used_value': tool.used_value,
+ # 'functional_tool_status': tool.functional_tool_status,
+ # 'alarm_time': fields.Datetime.now(),
+ # })
class StockMoveLine(models.Model):
diff --git a/sf_tool_management/views/functional_tool_views.xml b/sf_tool_management/views/functional_tool_views.xml
index 103583c2..70edbafe 100644
--- a/sf_tool_management/views/functional_tool_views.xml
+++ b/sf_tool_management/views/functional_tool_views.xml
@@ -236,25 +236,26 @@
sf.functional.tool.warning
-
-
-
-
-
+
+
+
+
+
+
+
-
-
+
+
+
-
-
-
+
@@ -266,31 +267,19 @@
sf.functional.tool.warning
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
diff --git a/sf_warehouse/models/model.py b/sf_warehouse/models/model.py
index 5beeebc5..d3f9c585 100644
--- a/sf_warehouse/models/model.py
+++ b/sf_warehouse/models/model.py
@@ -507,13 +507,13 @@ class ShelfLocation(models.Model):
print('eeeeeee空闲', e)
# 调取获取货位信息接口
- def get_sf_shelf_location_info(self):
+ def get_sf_shelf_location_info(self, device_id='Cabinet-AL'):
config = self.env['res.config.settings'].get_values()
headers = {'Authorization': config['center_control_Authorization']}
crea_url = config['center_control_url'] + "/AutoDeviceApi/GetLocationInfos"
- params = {'DeviceId': 'Cabinet-AL'}
+ params = {'DeviceId': device_id}
r = requests.get(crea_url, params=params, headers=headers)
ret = r.json()
diff --git a/sf_warehouse/models/sync_common.py b/sf_warehouse/models/sync_common.py
index 3df97423..32632eac 100644
--- a/sf_warehouse/models/sync_common.py
+++ b/sf_warehouse/models/sync_common.py
@@ -13,13 +13,14 @@ class MrsShelfLocationDataSync(models.Model):
_name = 'sf.shelf.location.datasync'
_description = '同步库存信息'
- def _cron_shelf_location_datasync(self):
- try:
- # 建立对应关系的函数
- def align_data(my_data, their_data):
- paired_data = list(zip(my_data, their_data))
- return paired_data
+ def find_our_code(self, their_code):
+ # 建立对应关系的函数
+ def align_data(my_data, their_data):
+ paired_data = list(zip(my_data, their_data))
+ return paired_data
+
+ def get_total_data():
shelf_1_obj = self.env['sf.shelf'].search([('name', '=', '一号产线-一号线边刀架')], limit=1)
tool_location_objs_1 = self.env['sf.shelf.location'].search([('shelf_id', '=', shelf_1_obj.id)], order='id')
@@ -82,19 +83,21 @@ class MrsShelfLocationDataSync(models.Model):
total_data = aligned_data_1 + aligned_data_2 + aligned_data_3 + aligned_data_4 + aligned_data_5
print(total_data)
logging.info(f"total_data: {total_data}")
+ return total_data
+ for code_pair in get_total_data():
+ if code_pair[1] == their_code:
+ return code_pair[0]
+ return None # 如果没有找到对应的值,返回None或适当的默认值
+
+ def _cron_shelf_location_datasync(self):
+ try:
def find_their_code(my_code, aligned_data):
for code_pair in aligned_data:
if code_pair[0] == my_code:
return code_pair[1]
return None # 如果没有找到对应的值,返回None或适当的默认值
- def find_our_code(their_code, aligned_data):
- for code_pair in aligned_data:
- if code_pair[1] == their_code:
- return code_pair[0]
- return None # 如果没有找到对应的值,返回None或适当的默认值
-
# 定时更新所有设备机床刀库信息
equipment_ids = self.env['maintenance.equipment'].search(
[('equipment_type', '=', '机床'), ('function_type', '!=', False)])
@@ -105,7 +108,7 @@ class MrsShelfLocationDataSync(models.Model):
shelfinfo = self.env['sf.shelf.location'].get_sf_shelf_location_info()
print('shelfinfo:', shelfinfo)
for item in shelfinfo:
- shelf_barcode = find_our_code(item['Postion'], total_data)
+ shelf_barcode = self.find_our_code(item['Postion'])
location_id = self.env['sf.shelf.location'].search([('barcode', '=', shelf_barcode)], limit=1)
if location_id:
# 如果是线边刀库信息,则对功能刀具移动生成记录
From 9dbea66b73f0316ec8cf6a02453c6a014e069bd0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=83=A1=E5=B0=A7?=
Date: Fri, 9 Aug 2024 17:32:46 +0800
Subject: [PATCH 08/36] =?UTF-8?q?=E4=BF=AE=E6=94=B9AGV=E8=B0=83=E5=BA=A6?=
=?UTF-8?q?=E7=B3=BB=E7=BB=9F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_manufacturing/__manifest__.py | 4 +-
sf_manufacturing/controllers/controllers.py | 63 +++++-
...patch_data.xml => agv_scheduling_data.xml} | 6 +-
sf_manufacturing/models/__init__.py | 2 +-
sf_manufacturing/models/agv_dispatch.py | 76 -------
sf_manufacturing/models/agv_scheduling.py | 191 ++++++++++++++++++
sf_manufacturing/models/agv_setting.py | 80 +++++---
sf_manufacturing/models/mrp_workcenter.py | 2 +-
sf_manufacturing/models/mrp_workorder.py | 2 +-
sf_manufacturing/security/ir.model.access.csv | 2 +-
...tch_views.xml => agv_scheduling_views.xml} | 38 ++--
.../views/mrp_workcenter_views.xml | 2 +-
.../wizard/workpiece_delivery_views.xml | 2 +-
.../wizard/workpiece_delivery_wizard.py | 48 +++--
14 files changed, 349 insertions(+), 169 deletions(-)
rename sf_manufacturing/data/{agv_dispatch_data.xml => agv_scheduling_data.xml} (66%)
delete mode 100644 sf_manufacturing/models/agv_dispatch.py
create mode 100644 sf_manufacturing/models/agv_scheduling.py
rename sf_manufacturing/views/{agv_dispatch_views.xml => agv_scheduling_views.xml} (56%)
diff --git a/sf_manufacturing/__manifest__.py b/sf_manufacturing/__manifest__.py
index f17a40df..ca85c807 100644
--- a/sf_manufacturing/__manifest__.py
+++ b/sf_manufacturing/__manifest__.py
@@ -15,14 +15,14 @@
'data/stock_data.xml',
'data/empty_racks_data.xml',
'data/panel_data.xml',
- 'data/agv_dispatch_data.xml',
+ 'data/agv_scheduling_data.xml',
'security/group_security.xml',
'security/ir.model.access.csv',
'wizard/workpiece_delivery_views.xml',
'wizard/rework_wizard_views.xml',
'wizard/production_wizard_views.xml',
'views/mrp_views_menus.xml',
- 'views/agv_dispatch_views.xml',
+ 'views/agv_scheduling_views.xml',
'views/stock_lot_views.xml',
'views/mrp_production_addional_change.xml',
'views/mrp_routing_workcenter_view.xml',
diff --git a/sf_manufacturing/controllers/controllers.py b/sf_manufacturing/controllers/controllers.py
index 037730bc..27e18f25 100644
--- a/sf_manufacturing/controllers/controllers.py
+++ b/sf_manufacturing/controllers/controllers.py
@@ -2,6 +2,8 @@
import logging
import json
from datetime import datetime
+
+from odoo.addons.sf_manufacturing.models.agv_scheduling import RepeatTaskException
from odoo import http
from odoo.http import request
@@ -448,6 +450,9 @@ class Manufacturing_Connect(http.Controller):
if 'DeviceId' in ret:
logging.info('DeviceId:%s' % ret['DeviceId'])
if 'IsComplete' in ret:
+ first_rfid_code = None
+ production_ids = []
+ workpiece_validate = True
if ret['IsComplete'] is True or ret['IsComplete'] is False:
for i in range(1, 5):
logging.info('F-RfidCode:%s' % i)
@@ -455,6 +460,7 @@ class Manufacturing_Connect(http.Controller):
rfid_code = ret[f'RfidCode{i}']
logging.info('RfidCode:%s' % rfid_code)
if rfid_code is not None:
+ first_rfid_code = first_rfid_code or rfid_code
domain = [
('rfid_code', '=', rfid_code),
('routing_type', '=', 'CNC加工'), ('state', '!=', 'rework')
@@ -462,6 +468,7 @@ class Manufacturing_Connect(http.Controller):
workorder = request.env['mrp.workorder'].sudo().search(domain, order='id asc')
if workorder:
for order in workorder:
+ production_ids.append(order.production_id.id)
if order.production_line_state == '待上产线':
logging.info(
'工单产线状态:%s' % order.production_line_state)
@@ -470,23 +477,37 @@ class Manufacturing_Connect(http.Controller):
('processing_panel', '=', order.processing_panel)])
if panel_workorder:
panel_workorder.write({'production_line_state': '已上产线'})
- workpiece_delivery = request.env['sf.workpiece.delivery'].sudo().search(
- [
- ('rfid_code', '=', rfid_code), ('type', '=', '上产线'),
- ('production_id', '=', order.production_id.id),
- ('workorder_id', '=', order.id),
- ('workorder_state', '=', 'done')])
- if workpiece_delivery.status == '待下发':
- workpiece_delivery.write({'is_manual_work': True})
+ # workpiece_delivery = request.env['sf.workpiece.delivery'].sudo().search(
+ # [
+ # ('rfid_code', '=', rfid_code), ('type', '=', '上产线'),
+ # ('production_id', '=', order.production_id.id),
+ # ('workorder_id', '=', order.id),
+ # ('workorder_state', '=', 'done')])
+ # if workpiece_delivery.status == '待下发':
+ # workpiece_delivery.write({'is_manual_work': True})
+ # 下发
else:
+ workpiece_validate = False
res = {'Succeed': False, 'ErrorCode': 204,
'Error': 'DeviceId为%s没有对应的已配送工件数据' % ret['DeviceId']}
+ if ret['IsComplete'] is True:
+ # 将RFID_CODE对应的工件配送单对应的AGV任务调度状态设置为已配送
+ request.env['sf.workpiece.delivery'].sudo().search(
+ [('rfid_code', '=', first_rfid_code)]).agv_scheduling_id.write({'state': '已配送'})
+ # 向AGV任务调度下发运送空料架任务
+ productions = request.env['mrp.production'].sudo().search([('id', 'in', production_ids)])
+ # 获取设备ID对应的接驳站配置
+ agv_site = request.env['sf.agv.site'].sudo().search(
+ [('name', '=', ret['DeviceId'])], limit=1)
+ request.env['sf.agv.scheduling'].add_scheduling(agv_site.id, '运送空料架', productions)
else:
res = {'Succeed': False, 'ErrorCode': 203, 'Error': '未传IsComplete字段'}
else:
res = {'Succeed': False, 'ErrorCode': 201, 'Error': '未传DeviceId字段'}
+ except RepeatTaskException as e:
+ logging.info('AGVToProduct error:%s' % e)
except Exception as e:
- res = {'Succeed': False, 'ErrorCode': 202, 'Error': e}
+ res = {'Succeed': False, 'ErrorCode': 202, 'Error': str(e)}
logging.info('AGVToProduct error:%s' % e)
return json.JSONEncoder().encode(res)
@@ -600,3 +621,27 @@ class Manufacturing_Connect(http.Controller):
res = {'Succeed': False, 'ErrorCode': 202, 'Error': e}
logging.info('AGVDownProduct error:%s' % e)
return json.JSONEncoder().encode(res)
+
+ @http.route('/AutoDeviceApi/GetAgvStationState', type='json', auth='public', methods=['GET', 'POST'], csrf=False,
+ cors="*")
+ def AGVStationState(self, **kw):
+ """
+ 中控推送接驳站状态
+ :param kw:
+ :return:
+ """
+ logging.info('AGVStationState:%s' % kw)
+ try:
+ res = {'Succeed': True}
+ datas = request.httprequest.data
+ ret = json.loads(datas)
+ request.env['center_control.interface.log'].sudo().create(
+ {'content': ret, 'name': 'AutoDeviceApi/AGVStationState'})
+ logging.info('ret:%s' % ret)
+ if 'DeviceId' in ret and 'AtHome' in ret:
+ logging.info('DeviceId:%s, AtHome:%s' % (ret['DeviceId'], ret['AtHome']))
+ request.env['sf.agv.site'].update_site_state(ret['DeviceId'], ret['AtHome'])
+ except Exception as e:
+ res = {'Succeed': False, 'ErrorCode': 202, 'Error': str(e)}
+ logging.info('AGVDownProduct error:%s' % e)
+ return json.JSONEncoder().encode(res)
\ No newline at end of file
diff --git a/sf_manufacturing/data/agv_dispatch_data.xml b/sf_manufacturing/data/agv_scheduling_data.xml
similarity index 66%
rename from sf_manufacturing/data/agv_dispatch_data.xml
rename to sf_manufacturing/data/agv_scheduling_data.xml
index 32b76406..c5f6d6a1 100644
--- a/sf_manufacturing/data/agv_dispatch_data.xml
+++ b/sf_manufacturing/data/agv_scheduling_data.xml
@@ -1,9 +1,9 @@
-
-
+
+
AGV调度
- sf.agv.dispatch
+ sf.agv.scheduling
B%(year)s%(month)s%(day)s
4
diff --git a/sf_manufacturing/models/__init__.py b/sf_manufacturing/models/__init__.py
index 0b212cdb..b93d613e 100644
--- a/sf_manufacturing/models/__init__.py
+++ b/sf_manufacturing/models/__init__.py
@@ -9,4 +9,4 @@ from . import stock
from . import res_user
from . import production_line_base
from . import agv_setting
-from . import agv_dispatch
+from . import agv_scheduling
diff --git a/sf_manufacturing/models/agv_dispatch.py b/sf_manufacturing/models/agv_dispatch.py
deleted file mode 100644
index 74c981f1..00000000
--- a/sf_manufacturing/models/agv_dispatch.py
+++ /dev/null
@@ -1,76 +0,0 @@
-from odoo import models, fields, api, _
-from odoo.exceptions import UserError
-
-import logging
-
-_logger = logging.getLogger(__name__)
-
-
-class AgvDispatch(models.Model):
- _name = 'sf.agv.dispatch'
- _description = 'agv调度'
-
- name = fields.Char('任务单号', index=True, copy=False)
-
- def _get_agv_route_type_selection(self):
- return self.env['sf.agv.task.route'].fields_get(['route_type'])['route_type']['selection']
-
- agv_route_type = fields.Selection(selection=_get_agv_route_type_selection, string='任务类型', required=True)
- agv_route_name = fields.Char('任务路线名称')
- start_site_id = fields.Many2one('sf.agv.site', '起点接驳站', required=True)
- end_site_id = fields.Many2one('sf.agv.site', '终点接驳站', tracking=True)
- site_state = fields.Selection([
- ('占用', '占用'),
- ('空闲', '空闲')], string='终点接驳站状态')
- state = fields.Selection([
- ('待下发', '待下发'),
- ('配送中', '配送中'),
- ('已配送', '已配送'),
- ('已取消', '已取消')], string='状态', default='待下发', tracking=True)
- productions = fields.Char('制造订单', compute='_compute_productions')
- workpiece_delivery_ids = fields.One2many('sf.workpiece.delivery', 'agv_dispatch_id', string='工件配送单')
- delivery_workpieces = fields.Char('配送工件', compute='_compute_delivery_workpieces')
-
- @api.depends('workpiece_delivery_ids')
- def _compute_delivery_workpieces(self):
- for rec in self:
- rec.delivery_workpieces = '\\'.join(rec.workpiece_delivery_ids.mapped('name'))
-
- task_create_time = fields.Datetime('任务创建时间')
- task_delivery_time = fields.Datetime('任务下发时间')
- task_completion_time = fields.Datetime('任务完成时间')
- task_duration = fields.Char('任务时长', compute='_compute_task_duration')
-
- @api.depends('task_completion_time', 'task_delivery_time')
- def _compute_task_duration(self):
- for rec in self:
- if rec.task_completion_time and rec.task_delivery_time:
- rec.task_duration = str(rec.task_completion_time - rec.task_delivery_time)
- else:
- rec.task_duration = ''
-
- @api.model_create_multi
- def create(self, vals_list):
- # We generate a standard reference
- for vals in vals_list:
- vals['name'] = self.env['ir.sequence'].next_by_code('sf.agv.dispatch') or _('New')
- return super().create(vals_list)
-
- def add_queue(self, agv_start_site_id, agv_route_type, production_ids, delivery_ids):
- """
- 根据参数增加AGV调度任务
- """
- vals = {
- 'start_site_id': agv_start_site_id,
- 'agv_route_type': agv_route_type,
- 'productions': '、'.join(production_ids.mapped('name')),
- 'workpiece_delivery_ids': delivery_ids or [],
- 'task_create_time': fields.Datetime.now()
- }
- try:
- dispatch = self.env['sf.agv.dispatch'].sudo().create(vals)
- except Exception as e:
- _logger.error('添加AGV调度任务失败: %s', e)
- raise UserError(e)
-
- return dispatch
diff --git a/sf_manufacturing/models/agv_scheduling.py b/sf_manufacturing/models/agv_scheduling.py
new file mode 100644
index 00000000..f550149c
--- /dev/null
+++ b/sf_manufacturing/models/agv_scheduling.py
@@ -0,0 +1,191 @@
+from odoo import models, fields, api, _
+from odoo.exceptions import UserError
+
+import logging
+
+_logger = logging.getLogger(__name__)
+
+
+class RepeatTaskException(UserError):
+ pass
+
+
+class AgvScheduling(models.Model):
+ _name = 'sf.agv.scheduling'
+ _description = 'agv调度'
+
+ name = fields.Char('任务单号', index=True, copy=False)
+
+ def _get_agv_route_type_selection(self):
+ return self.env['sf.agv.task.route'].fields_get(['route_type'])['route_type']['selection']
+
+ agv_route_type = fields.Selection(selection=_get_agv_route_type_selection, string='任务类型', required=True)
+ agv_route_name = fields.Char('任务路线名称')
+ start_site_id = fields.Many2one('sf.agv.site', '起点接驳站', required=True)
+ end_site_id = fields.Many2one('sf.agv.site', '终点接驳站', tracking=True)
+ site_state = fields.Selection([
+ ('占用', '占用'),
+ ('空闲', '空闲')], string='终点接驳站状态', default='占用')
+ state = fields.Selection([
+ ('待下发', '待下发'),
+ ('配送中', '配送中'),
+ ('已配送', '已配送'),
+ ('已取消', '已取消')], string='状态', default='待下发', tracking=True)
+ workpiece_delivery_ids = fields.One2many('sf.workpiece.delivery', 'agv_scheduling_id', string='工件配送单')
+ delivery_workpieces = fields.Char('配送工件', required=True, index=True)
+ task_create_time = fields.Datetime('任务创建时间')
+ task_delivery_time = fields.Datetime('任务下发时间')
+ task_completion_time = fields.Datetime('任务完成时间')
+ task_duration = fields.Char('任务时长', compute='_compute_task_duration')
+
+ @api.depends('agv_route_type')
+ def _compute_delivery_workpieces(self):
+ for record in self:
+ if record.agv_route_type == '运送空料架':
+ record.delivery_workpieces_display = '/'
+ else:
+ record.delivery_workpieces_display = record.delivery_workpieces
+
+ delivery_workpieces_display = fields.Char('配送工件', compute=_compute_delivery_workpieces)
+
+ @api.depends('task_completion_time', 'task_delivery_time')
+ def _compute_task_duration(self):
+ for rec in self:
+ if rec.task_completion_time and rec.task_delivery_time:
+ rec.task_duration = str(rec.task_completion_time - rec.task_delivery_time)
+ else:
+ rec.task_duration = ''
+
+ @api.model_create_multi
+ def create(self, vals_list):
+ # We generate a standard reference
+ for vals in vals_list:
+ vals['name'] = self.env['ir.sequence'].next_by_code('sf.agv.scheduling') or _('New')
+ return super().create(vals_list)
+
+ def add_scheduling(self, agv_start_site_id, agv_route_type, productions, deliveries=None):
+ """ add_scheduling(agv_start_site_id, agv_route_type, productions, deliveries) -> agv_scheduling
+ 新增AGV调度
+ params:
+ agv_start_site_id: AGV起点接驳站ID
+ agv_route_type: AGV任务类型
+ productions: 制造订单
+ deliveries: 工件配送单
+ """
+ # 如果存在配送工件完全相同的AGV调度任务,则不新增
+ if self.sudo().search([
+ ('delivery_workpieces', '=', '、'.join(productions.mapped('name'))),
+ ('agv_route_type', '=', agv_route_type),
+ ('state', 'in', ['待下发', '配送中'])
+ ], limit=1):
+ raise RepeatTaskException('已存在相同的AGV调度任务,请勿重复下发!')
+
+ vals = {
+ 'start_site_id': agv_start_site_id,
+ 'agv_route_type': agv_route_type,
+ 'delivery_workpieces': '、'.join(productions.mapped('name')),
+ 'workpiece_delivery_ids': deliveries.mapped('id') if deliveries else [],
+ 'task_create_time': fields.Datetime.now()
+ }
+ # 如果只有唯一任务路线,则自动赋予终点接驳站跟任务名称
+ agv_routes = self.env['sf.agv.task.route'].sudo().search([
+ ('route_type', '=', agv_route_type),
+ ('start_site_id', '=', agv_start_site_id)
+ ])
+ if len(agv_routes) == 1:
+ vals.update({'end_site_id': agv_routes[0].end_site_id.id, 'agv_route_name': agv_routes[0].name})
+ try:
+ dispatch = self.env['sf.agv.scheduling'].sudo().create(vals)
+ except Exception as e:
+ _logger.error('添加AGV调度任务失败: %s', e)
+ raise UserError(_('添加AGV调度任务失败: %s', e))
+
+ return dispatch
+
+ def on_site_state_change(self, agv_site_id, agv_site_state):
+ agv_schedulings = self.env['sf.agv.scheduling'].sudo().search([('state', '=', '待下发')], order='id asc')
+ for scheduling in agv_schedulings:
+ if scheduling.end_site_id.id == agv_site_id and scheduling.site_state == '空闲':
+ # 下发AGV调度任务并修改接驳站状态为占用
+ # self._delivery_avg()
+ # 修改AGV调度任务信息
+ scheduling.state = '配送中'
+ scheduling.task_delivery_time = fields.Datetime.now()
+ scheduling.site_state = agv_site_state
+ # 更新接驳站状态
+ self.env['sf.agv.site'].update_site_state(scheduling.end_site_id.name, True)
+
+ def _delivery_avg(self):
+ config = self.env['res.config.settings'].get_values()
+ positionCode_Arr = []
+ delivery_Arr = []
+ feeder_station_start = None
+ feeder_station_destination = None
+ route_id = None
+ for item in self:
+ if route_id is None:
+ route_id = item.route_id.id
+ if feeder_station_start is None:
+ feeder_station_start = item.feeder_station_start_id
+ if feeder_station_destination is None:
+ feeder_station_destination = item.feeder_station_destination_id
+ if item.type in ['上产线', '下产线']:
+ item.route_id = route_id
+ item.feeder_station_start_id = feeder_station_start.id
+ item.feeder_station_destination_id = feeder_station_destination.id
+ delivery_Arr.append(item.name)
+ else:
+ self = self.create(
+ {'name': self.env['ir.sequence'].next_by_code('sf.workpiece.delivery'),
+ 'route_id': self.route_id.id,
+ 'feeder_station_start_id': self.feeder_station_start_id.id,
+ 'feeder_station_destination_id': self.feeder_station_destination_id.id})
+ delivery_Arr.append(self.name)
+ delivery_str = ','.join(map(str, delivery_Arr))
+ if feeder_station_start is not None:
+ positionCode_Arr.append({
+ 'positionCode': feeder_station_start.name,
+ 'code': '00'
+ })
+ if feeder_station_destination is not None:
+ positionCode_Arr.append({
+ 'positionCode': feeder_station_destination.name,
+ 'code': '00'
+ })
+ res = {'reqCode': delivery_str, 'reqTime': '', 'clientCode': '', 'tokenCode': '',
+ 'taskTyp': 'F01', 'ctnrTyp': '', 'ctnrCode': '', 'wbCode': config['wbcode'],
+ 'positionCodePath': positionCode_Arr,
+ 'podCode': '',
+ 'podDir': '', 'materialLot': '', 'priority': '', 'taskCode': '', 'agvCode': '', 'materialLot': '',
+ 'data': ''}
+ try:
+ logging.info('AGV请求路径:%s' % config['agv_rcs_url'])
+ logging.info('AGV-json:%s' % res)
+ headers = {'Content-Type': 'application/json'}
+ ret = requests.post((config['agv_rcs_url']), json=res, headers=headers)
+ ret = ret.json()
+ logging.info('config-ret:%s' % ret)
+ if ret['code'] == 0:
+ req_codes = ret['reqCode'].split(',')
+ for delivery_item in self:
+ for req_code in req_codes:
+ if delivery_item.name == req_code.strip():
+ logging.info('delivery_item-name:%s' % delivery_item.name)
+ delivery_item.write({
+ 'task_delivery_time': fields.Datetime.now(),
+ 'status': '待配送'
+ })
+ if delivery_item.type == "上产线":
+ delivery_item.workorder_id.write({'is_delivery': True})
+ else:
+ raise UserError(ret['message'])
+ except Exception as e:
+ logging.info('config-e:%s' % e)
+ raise UserError("工件配送请求agv失败:%s" % e)
+
+ def button_cancel(self):
+ # 弹出二次确认窗口后执行
+ for rec in self:
+ if rec.state != '待下发':
+ raise UserError('只有待下发状态的AGV调度任务才能取消!')
+ rec.state = '已取消'
diff --git a/sf_manufacturing/models/agv_setting.py b/sf_manufacturing/models/agv_setting.py
index 8fe22715..5f1f728e 100644
--- a/sf_manufacturing/models/agv_setting.py
+++ b/sf_manufacturing/models/agv_setting.py
@@ -18,39 +18,53 @@ class AgvSetting(models.Model):
divide_the_work = fields.Char('主要分工')
active = fields.Boolean('有效', default=True)
workcenter_id = fields.Many2one(string='所属区域', comodel_name='mrp.workcenter', tracking=True,
- domain=[('is_agv_dispatch', '=', True)])
+ domain=[('is_agv_scheduling', '=', True)])
- def update_site_state(self):
- # 调取中控的接驳站接口并修改对应站点的状态
- config = self.env['res.config.settings'].get_values()
- # token = sf_sync_config['token'Ba F2CF5DCC-1A00-4234-9E95-65603F70CC8A]
- headers = {'Authorization': config['center_control_Authorization']}
- center_control_url = config['center_control_url'] + "/AutoDeviceApi/GetAgvStationState?date="
- timestamp = int(time.time())
- center_control_url += str(timestamp)
- logging.info('工件配送-请求中控地址:%s' % center_control_url)
- try:
- center_control_r = requests.get(center_control_url, headers=headers, timeout=10) # 设置超时为60秒
- ret = center_control_r.json()
- logging.info('工件配送-请求中控站点信息:%s' % ret)
- self.env['center_control.interface.log'].sudo().create(
- {'content': ret, 'name': 'AutoDeviceApi/GetAgvStationState?date=%s' % str(timestamp)})
- if ret['Succeed'] is True:
- datas = ret['Datas']
- for item in self:
- for da in datas:
- if da['DeviceId'] == item.name:
- if da['AtHome'] is True:
- item.state = '占用'
- else:
- item.state = '空闲'
- return True
- except requests.exceptions.Timeout:
- logging.error('工件配送-请求中控接口超时')
- return False
- except requests.exceptions.RequestException as e:
- logging.error('工件配送-请求中控接口错误: %s', e)
- return False
+ # name必须唯一
+ _sql_constraints = [
+ ('name_uniq', 'unique (name)', '站点编号必须唯一!'),
+ ]
+
+ # def update_site_state(self):
+ # # 调取中控的接驳站接口并修改对应站点的状态
+ # config = self.env['res.config.settings'].get_values()
+ # # token = sf_sync_config['token'Ba F2CF5DCC-1A00-4234-9E95-65603F70CC8A]
+ # headers = {'Authorization': config['center_control_Authorization']}
+ # center_control_url = config['center_control_url'] + "/AutoDeviceApi/GetAgvStationState?date="
+ # timestamp = int(time.time())
+ # center_control_url += str(timestamp)
+ # logging.info('工件配送-请求中控地址:%s' % center_control_url)
+ # try:
+ # center_control_r = requests.get(center_control_url, headers=headers, timeout=10) # 设置超时为60秒
+ # ret = center_control_r.json()
+ # logging.info('工件配送-请求中控站点信息:%s' % ret)
+ # self.env['center_control.interface.log'].sudo().create(
+ # {'content': ret, 'name': 'AutoDeviceApi/GetAgvStationState?date=%s' % str(timestamp)})
+ # if ret['Succeed'] is True:
+ # datas = ret['Datas']
+ # for item in self:
+ # for da in datas:
+ # if da['DeviceId'] == item.name:
+ # if da['AtHome'] is True:
+ # item.state = '占用'
+ # else:
+ # item.state = '空闲'
+ # return True
+ # except requests.exceptions.Timeout:
+ # logging.error('工件配送-请求中控接口超时')
+ # return False
+ # except requests.exceptions.RequestException as e:
+ # logging.error('工件配送-请求中控接口错误: %s', e)
+ # return False
+
+ def update_site_state(self, agv_site_name, is_occupy):
+ if agv_site_name:
+ agv_site = self.env['sf.agv.site'].sudo().search([('name', '=', agv_site_name)])
+ if agv_site:
+ agv_site.state = '占用' if is_occupy else '空闲'
+ self.env['sf.agv.scheduling'].on_site_state_change(agv_site.id, agv_site.state)
+ else:
+ raise UserError("更新失败:接驳站站点错误!")
class AgvTaskRoute(models.Model):
@@ -73,7 +87,7 @@ class AgvTaskRoute(models.Model):
if self.end_site_id == self.start_site_id:
raise UserError("您选择的终点接驳站与起点接驳站重复,请重新选择")
- workcenter_id = fields.Many2one(string='所属区域', comodel_name='mrp.workcenter', domain=[('is_agv_dispatch', '=', True)],
+ workcenter_id = fields.Many2one(string='所属区域', comodel_name='mrp.workcenter', domain=[('is_agv_scheduling', '=', True)],
compute="_compute_region")
@api.depends('end_site_id')
diff --git a/sf_manufacturing/models/mrp_workcenter.py b/sf_manufacturing/models/mrp_workcenter.py
index 8fb62e7d..461ef6ad 100644
--- a/sf_manufacturing/models/mrp_workcenter.py
+++ b/sf_manufacturing/models/mrp_workcenter.py
@@ -125,7 +125,7 @@ class ResWorkcenter(models.Model):
return res
# AGV是否可配送
- is_agv_dispatch = fields.Boolean(string="AGV配送", tracking=True)
+ is_agv_scheduling = fields.Boolean(string="AGV所属区域", tracking=True)
class ResWorkcenterProductivity(models.Model):
_inherit = 'mrp.workcenter.productivity'
diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py
index 792ecb9f..2257fd51 100644
--- a/sf_manufacturing/models/mrp_workorder.py
+++ b/sf_manufacturing/models/mrp_workorder.py
@@ -1717,7 +1717,7 @@ class WorkPieceDelivery(models.Model):
obj.delivery_duration = 0.0
# agv调度单
- agv_dispatch_id = fields.Many2one('sf.agv.dispatch', 'agv调度单')
+ agv_scheduling_id = fields.Many2one('sf.agv.scheduling', 'agv调度单')
def on_barcode_scanned(self, barcode):
logging.info('Rfid:%s' % barcode)
diff --git a/sf_manufacturing/security/ir.model.access.csv b/sf_manufacturing/security/ir.model.access.csv
index 2fd16b53..f8affb19 100644
--- a/sf_manufacturing/security/ir.model.access.csv
+++ b/sf_manufacturing/security/ir.model.access.csv
@@ -150,7 +150,7 @@ access_sf_processing_panel_group_sf_order_user,sf_processing_panel_group_sf_orde
access_sf_production_wizard_group_sf_order_user,sf_production_wizard_group_sf_order_user,model_sf_production_wizard,sf_base.group_sf_order_user,1,1,1,0
access_sf_processing_panel_group_plan_dispatch,sf_processing_panel_group_plan_dispatch,model_sf_processing_panel,sf_base.group_plan_dispatch,1,1,1,0
-access_sf_agv_dispatch_admin,sf_agv_dispatch_admin,model_sf_agv_dispatch,base.group_system,1,1,1,1
+access_sf_agv_scheduling_admin,sf_agv_scheduling_admin,model_sf_agv_scheduling,base.group_system,1,1,1,1
diff --git a/sf_manufacturing/views/agv_dispatch_views.xml b/sf_manufacturing/views/agv_scheduling_views.xml
similarity index 56%
rename from sf_manufacturing/views/agv_dispatch_views.xml
rename to sf_manufacturing/views/agv_scheduling_views.xml
index 5cf608b6..4e7271f6 100644
--- a/sf_manufacturing/views/agv_dispatch_views.xml
+++ b/sf_manufacturing/views/agv_scheduling_views.xml
@@ -2,9 +2,9 @@
-
+
agv调度
- sf.agv.dispatch
+ sf.agv.scheduling
-
+
+
-
+
AGV调度
- sf.agv.dispatch
+ sf.agv.scheduling
tree
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/sf_manufacturing/views/mrp_workcenter_views.xml b/sf_manufacturing/views/mrp_workcenter_views.xml
index 61242cba..d0b4bee6 100644
--- a/sf_manufacturing/views/mrp_workcenter_views.xml
+++ b/sf_manufacturing/views/mrp_workcenter_views.xml
@@ -182,7 +182,7 @@
-
+
diff --git a/sf_manufacturing/wizard/workpiece_delivery_views.xml b/sf_manufacturing/wizard/workpiece_delivery_views.xml
index 96ccfc7f..2ea320a8 100644
--- a/sf_manufacturing/wizard/workpiece_delivery_views.xml
+++ b/sf_manufacturing/wizard/workpiece_delivery_views.xml
@@ -17,7 +17,7 @@
-
+
diff --git a/sf_manufacturing/wizard/workpiece_delivery_wizard.py b/sf_manufacturing/wizard/workpiece_delivery_wizard.py
index 04623a09..6b9fb840 100644
--- a/sf_manufacturing/wizard/workpiece_delivery_wizard.py
+++ b/sf_manufacturing/wizard/workpiece_delivery_wizard.py
@@ -50,29 +50,33 @@ class WorkpieceDeliveryWizard(models.TransientModel):
type = fields.Selection(selection=_get_agv_route_type_selection, string='类型')
def confirm(self):
- if self.workorder_id:
- self.workorder_id.workpiece_delivery_ids[0].agv_dispatch_id()
- else:
- is_not_production_line = 0
- same_production_line_id = None
- notsame_production_line_arr = []
- for item in self.production_ids:
- if same_production_line_id is None:
- same_production_line_id = item.production_line_id.id
- if item.production_line_id.id != same_production_line_id:
- notsame_production_line_arr.append(item.name)
- notsame_production_line_str = ','.join(map(str, notsame_production_line_arr))
- if is_not_production_line >= 1:
- raise UserError('制造订单号为%s的目的生产线不一致' % notsame_production_line_str)
+ try:
+ if self.workorder_id:
+ self.workorder_id.workpiece_delivery_ids[0].agv_scheduling_id()
else:
- # self.delivery_ids._delivery_avg()
- agv_dispatch_id = self.env['sf.agv.dispatch'].add_queue(
- agv_start_site_id=self.feeder_station_start_id.id,
- agv_route_type=self.type,
- production_ids=self.production_ids,
- delivery_ids=self.delivery_ids.ids
- )
- self.delivery_ids.agv_dispatch_id = agv_dispatch_id
+ is_not_production_line = 0
+ same_production_line_id = None
+ notsame_production_line_arr = []
+ for item in self.production_ids:
+ if same_production_line_id is None:
+ same_production_line_id = item.production_line_id.id
+ if item.production_line_id.id != same_production_line_id:
+ notsame_production_line_arr.append(item.name)
+ notsame_production_line_str = ','.join(map(str, notsame_production_line_arr))
+ if is_not_production_line >= 1:
+ raise UserError('制造订单号为%s的目的生产线不一致' % notsame_production_line_str)
+ else:
+ # self.delivery_ids._delivery_avg()
+ agv_scheduling_id = self.env['sf.agv.scheduling'].add_scheduling(
+ agv_start_site_id=self.feeder_station_start_id.id,
+ agv_route_type=self.type,
+ productions=self.production_ids,
+ deliveries=self.delivery_ids
+ )
+ self.delivery_ids.agv_scheduling_id = agv_scheduling_id
+ except Exception as e:
+ logging.info('工件配送任务下发失败:%s' % e)
+ raise UserError('工件配送任务下发失败:%s' % e)
def recognize_production(self):
# production_ids = []
From 0b85f292621f715dcf818db7bc17244f7f73d58e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=83=A1=E5=B0=A7?=
Date: Mon, 12 Aug 2024 11:08:04 +0800
Subject: [PATCH 09/36] =?UTF-8?q?=E4=BF=AE=E6=94=B9agv=E8=B0=83=E5=BA=A6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_manufacturing/models/agv_scheduling.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/sf_manufacturing/models/agv_scheduling.py b/sf_manufacturing/models/agv_scheduling.py
index f550149c..084dcf49 100644
--- a/sf_manufacturing/models/agv_scheduling.py
+++ b/sf_manufacturing/models/agv_scheduling.py
@@ -31,7 +31,7 @@ class AgvScheduling(models.Model):
('配送中', '配送中'),
('已配送', '已配送'),
('已取消', '已取消')], string='状态', default='待下发', tracking=True)
- workpiece_delivery_ids = fields.One2many('sf.workpiece.delivery', 'agv_scheduling_id', string='工件配送单')
+ workorder_ids = fields.One2many('mrp.workorder', string='关联工单')
delivery_workpieces = fields.Char('配送工件', required=True, index=True)
task_create_time = fields.Datetime('任务创建时间')
task_delivery_time = fields.Datetime('任务下发时间')
@@ -41,6 +41,7 @@ class AgvScheduling(models.Model):
@api.depends('agv_route_type')
def _compute_delivery_workpieces(self):
for record in self:
+ record.delivery_workpieces = '、'.join(record.workorder_ids.mapped('production_id.name'))
if record.agv_route_type == '运送空料架':
record.delivery_workpieces_display = '/'
else:
From 894d3b9ea30777b8bba85f83a079eb3fc95c3d79 Mon Sep 17 00:00:00 2001
From: yuxianghui <3437689193@qq.com>
Date: Mon, 12 Aug 2024 17:25:56 +0800
Subject: [PATCH 10/36] =?UTF-8?q?1=E3=80=81=E5=8A=9F=E8=83=BD=E5=88=80?=
=?UTF-8?q?=E5=85=B7=E6=8B=86=E8=A7=A3=E5=8D=95=E6=B7=BB=E5=8A=A0=E5=8A=9F?=
=?UTF-8?q?=E8=83=BD=E5=88=80=E5=85=B7=E5=94=AF=E4=B8=80=E6=A0=A1=E9=AA=8C?=
=?UTF-8?q?=EF=BC=9B2=E3=80=81=E5=8A=9F=E8=83=BD=E5=88=80=E5=85=B7?=
=?UTF-8?q?=E6=A8=A1=E5=9E=8Btree=E8=A7=86=E5=9B=BE=E7=9A=84=E7=8A=B6?=
=?UTF-8?q?=E6=80=81=E5=AD=97=E6=AE=B5=E6=A0=B9=E6=8D=AE=E4=B8=8D=E5=90=8C?=
=?UTF-8?q?=E7=8A=B6=E6=80=81=E6=B7=BB=E5=8A=A0=E4=B8=8D=E5=90=8C=E9=A2=9C?=
=?UTF-8?q?=E8=89=B2=EF=BC=9B=E5=BD=93=E5=8A=9F=E8=83=BD=E5=88=80=E5=85=B7?=
=?UTF-8?q?=E7=8A=B6=E6=80=81=E4=B8=BA=E6=8A=A5=E8=AD=A6=E6=97=B6=EF=BC=8C?=
=?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=88=9B=E5=BB=BA=E6=8B=86=E8=A7=A3=E5=8D=95?=
=?UTF-8?q?=E5=92=8C=E9=A2=84=E8=AD=A6=E8=AE=B0=E5=BD=95=EF=BC=8C=E5=B9=B6?=
=?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=8B=86=E8=A7=A3=E5=8D=95=E9=93=BE=E6=8E=A5?=
=?UTF-8?q?=E6=8C=89=E9=92=AE=EF=BC=9B=E6=B7=BB=E5=8A=A0tree=E8=A7=86?=
=?UTF-8?q?=E5=9B=BE=E6=8C=89=E7=8A=B6=E6=80=81=E6=8E=92=E5=BA=8F=EF=BC=8C?=
=?UTF-8?q?=E5=B0=86=E6=8A=A5=E8=AD=A6=E7=8A=B6=E6=80=81=E5=88=80=E5=85=B7?=
=?UTF-8?q?=E8=AE=B0=E5=BD=95=E6=98=BE=E7=A4=BA=E5=9C=A8=E6=9C=80=E5=89=8D?=
=?UTF-8?q?=E9=9D=A2=EF=BC=9B3=E3=80=81=E4=BC=98=E5=8C=96=E5=8A=9F?=
=?UTF-8?q?=E8=83=BD=E5=88=80=E5=85=B7=E9=A2=84=E8=AD=A6=E6=A8=A1=E5=9E=8B?=
=?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=8F=8A=E5=85=B3=E8=81=94=E5=85=B3=E7=B3=BB?=
=?UTF-8?q?=EF=BC=8C=E6=B7=BB=E5=8A=A0=E9=A2=84=E8=AD=A6=E8=AE=B0=E5=BD=95?=
=?UTF-8?q?=E8=B7=B3=E8=BD=AC=E5=88=B0=E5=AF=B9=E5=BA=94=E7=94=B1=E8=AF=A5?=
=?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=88=80=E5=85=B7=E7=94=9F=E6=88=90=E7=9A=84?=
=?UTF-8?q?=E6=8B=86=E8=A7=A3=E5=8D=95=E9=93=BE=E6=8E=A5=EF=BC=9B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_tool_management/models/base.py | 19 +++-
sf_tool_management/models/functional_tool.py | 91 ++++++++++++++-----
.../views/functional_tool_views.xml | 21 ++++-
sf_tool_management/views/tool_base_views.xml | 2 +-
4 files changed, 103 insertions(+), 30 deletions(-)
diff --git a/sf_tool_management/models/base.py b/sf_tool_management/models/base.py
index e756899b..fd9e6f29 100644
--- a/sf_tool_management/models/base.py
+++ b/sf_tool_management/models/base.py
@@ -760,6 +760,15 @@ class FunctionalToolDismantle(models.Model):
functional_tool_id = fields.Many2one('sf.functional.cutting.tool.entity', '功能刀具', required=True, tracking=True,
domain=[('functional_tool_status', '!=', '已拆除'),
('current_location', '=', '刀具房')])
+
+ @api.onchange('functional_tool_id')
+ def _onchange_functional_tool_id(self):
+ for item in self:
+ if item:
+ dismantle_id = self.search([('functional_tool_id', '=', item.functional_tool_id.id)])
+ if dismantle_id:
+ raise ValidationError(f'Rfid为【{item.rfid}】的功能刀具已经存在拆解单,单号是【{dismantle_id[0].code}】')
+
tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型', store=True,
compute='_compute_functional_tool_num')
tool_groups_id = fields.Many2one('sf.tool.groups', '刀具组', compute='_compute_functional_tool_num', store=True)
@@ -942,11 +951,13 @@ class FunctionalToolDismantle(models.Model):
logging.info('%s刀具确认开始拆解' % self.dismantle_cause)
code = self.code
if self.functional_tool_id.functional_tool_status == '已拆除':
- raise ValidationError('Rfid为【%s】的功能刀具已经拆解,请勿重复操作!' % self.functional_tool_id.rfid_dismantle)
+ raise ValidationError('Rfid为【%s】名称为【%s】的功能刀具已经拆解,请勿重复操作!' % (
+ self.functional_tool_id.rfid_dismantle, self.name))
# 对拆解的功能刀具进行校验,只有在刀具房的功能刀具才能拆解
- if self.functional_tool_id.tool_room_num == 0:
- raise ValidationError('Rfid为【%s】的功能刀具当前位置为【%s】,不能进行拆解!' % (
- self.rfid, self.functional_tool_id.current_location))
+ elif self.functional_tool_id.functional_tool_status != '报警':
+ if self.functional_tool_id.tool_room_num == 0:
+ raise ValidationError('Rfid为【%s】的功能刀具当前位置为【%s】,不能进行拆解!' % (
+ self.rfid, self.functional_tool_id.current_location))
# 目标重复校验
self.location_duplicate_check()
datas = {'scrap': [], 'picking': []}
diff --git a/sf_tool_management/models/functional_tool.py b/sf_tool_management/models/functional_tool.py
index 2c677e60..c48cf2ac 100644
--- a/sf_tool_management/models/functional_tool.py
+++ b/sf_tool_management/models/functional_tool.py
@@ -11,6 +11,7 @@ from odoo.exceptions import ValidationError
class FunctionalCuttingToolEntity(models.Model):
_name = 'sf.functional.cutting.tool.entity'
_description = '功能刀具列表'
+ _order = 'functional_tool_status'
functional_tool_name_id = fields.Many2one('sf.functional.tool.assembly', string='功能刀具组装单', readonly=True)
@@ -40,7 +41,7 @@ class FunctionalCuttingToolEntity(models.Model):
max_lifetime_value = fields.Integer(string='最大寿命值(min)', readonly=True)
alarm_value = fields.Integer(string='报警值(min)', readonly=True)
used_value = fields.Integer(string='已使用值(min)', readonly=True)
- functional_tool_status = fields.Selection([('正常', '正常'), ('报警', '报警'), ('已拆除', '已拆除')],
+ functional_tool_status = fields.Selection([('报警', '报警'), ('正常', '正常'), ('已拆除', '已拆除')],
string='状态', store=True, default='正常')
current_location_id = fields.Many2one('stock.location', string='当前位置', compute='_compute_current_location_id',
store=True)
@@ -60,13 +61,14 @@ class FunctionalCuttingToolEntity(models.Model):
if item.functional_tool_status == '报警':
# 创建报警刀具拆解单
self.env['sf.functional.tool.dismantle'].sudo().create({
- 'functional_tool_id': item.id,
+ 'functional_tool_id': item.ids[0],
'dismantle_cause': '寿命到期报废'
})
# 创建刀具报警记录
- # self.env['sf.functional.tool.warning'].sudo().create({
- # ''
- # })
+ self.env['sf.functional.tool.warning'].sudo().create({
+ 'rfid': item.rfid,
+ 'functional_tool_id': item.ids[0]
+ })
@api.depends('barcode_id.quant_ids', 'barcode_id.quant_ids.location_id', 'functional_tool_status',
'current_shelf_location_id')
@@ -253,10 +255,30 @@ class FunctionalCuttingToolEntity(models.Model):
functional_tool_model_ids.append(functional_tool_model.id)
return [(6, 0, functional_tool_model_ids)]
+ def open_functional_tool_dismantle_form(self):
+ self.ensure_one()
+ dismantle_ids = self.env['sf.functional.tool.dismantle'].sudo().search([('functional_tool_id', '=', self.id)])
+ action = {
+ 'res_model': 'sf.functional.tool.dismantle',
+ 'type': 'ir.actions.act_window',
+ 'name': '拆解单',
+ }
+ if len(dismantle_ids) == 1:
+ action.update({
+ 'view_mode': 'form',
+ 'res_id': dismantle_ids[0].id,
+ })
+ else:
+ action.update({
+ 'domain': [('id', 'in', dismantle_ids.ids)],
+ 'view_mode': 'tree,form',
+ })
+ return action
+
def open_functional_tool_warning(self):
action = self.env.ref('sf_tool_management.action_sf_functional_tool_warning')
result = action.read()[0]
- result['domain'] = [('functional_tool_name_id', '=', self.functional_tool_name_id.id)]
+ result['domain'] = [('functional_tool_id', '=', self.id)]
return result
def open_stock_move_line(self):
@@ -338,10 +360,10 @@ class FunctionalToolWarning(models.Model):
_name = 'sf.functional.tool.warning'
_description = '功能刀具预警'
- code = fields.Char('编码', related='functional_tool_name_id.code')
- rfid = fields.Char('Rfid')
- tool_groups_id = fields.Many2one('sf.tool.groups', '刀具组', related='functional_tool_name_id.tool_groups_id')
- name = fields.Char('名称', invisible=True, readonly=True, related='functional_tool_name_id.name')
+ code = fields.Char('编码', related='functional_tool_id.code')
+ rfid = fields.Char('Rfid', readonly=True)
+ tool_groups_id = fields.Many2one('sf.tool.groups', '刀具组', related='functional_tool_id.tool_groups_id')
+ name = fields.Char('名称', invisible=True, readonly=True, related='functional_tool_id.name')
# 机床信息
production_line_id = fields.Many2one('sf.production.line', string='生产线',
group_expand='_read_group_machine_table_name_ids')
@@ -352,30 +374,55 @@ class FunctionalToolWarning(models.Model):
cutter_spacing_code_id = fields.Many2one('maintenance.equipment.tool', string='刀位号',
domain="[('equipment_id', '=', maintenance_equipment_id)]")
# 功能刀具信息
- functional_tool_name_id = fields.Many2one('sf.functional.tool.assembly', string='功能刀具名称')
- barcode_id = fields.Many2one('stock.lot', string='序列号', related='functional_tool_name_id.barcode_id')
- mrs_cutting_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型')
- diameter = fields.Float(string='刀具直径(mm)')
- knife_tip_r_angle = fields.Float(string='刀尖R角(mm)')
+ functional_tool_id = fields.Many2one('sf.functional.cutting.tool.entity', string='功能刀具', readonly=True)
+ barcode_id = fields.Many2one('stock.lot', string='序列号', related='functional_tool_id.barcode_id')
+ mrs_cutting_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型',
+ related='functional_tool_id.sf_cutting_tool_type_id')
+ diameter = fields.Float(string='刀具直径(mm)', related='functional_tool_id.functional_tool_diameter')
+ knife_tip_r_angle = fields.Float(string='刀尖R角(mm)', related='functional_tool_id.knife_tip_r_angle')
# 其他信息
install_tool_time = fields.Datetime("刀具组装时间", related='functional_tool_name_id.tool_loading_time')
on_board_time = fields.Datetime('上机装刀时间')
- max_lifetime_value = fields.Integer(string='最大寿命值(min)')
- alarm_value = fields.Integer(string='报警值(min)')
- used_value = fields.Integer(string='已使用值(min)')
+ max_lifetime_value = fields.Integer(string='最大寿命值(min)', related='functional_tool_id.max_lifetime_value')
+ alarm_value = fields.Integer(string='报警值(min)', related='functional_tool_id.alarm_value')
+ used_value = fields.Integer(string='已使用值(min)', related='functional_tool_id.used_value')
functional_tool_status = fields.Selection([('正常', '正常'), ('报警', '报警'), ('已拆除', '已拆除')], string='状态')
- alarm_time = fields.Datetime('报警时间')
- dispose_user = fields.Char('处理人')
- dispose_time = fields.Char('处理时间')
- dispose_func = fields.Char('处理方法/措施', readonly=False)
+ alarm_time = fields.Datetime('报警时间', default=lambda self: fields.Datetime.now(), readonly=True)
+ dispose_user = fields.Char('处理人', readonly=True)
+ dispose_time = fields.Char('处理时间', readonly=True)
+ dispose_func = fields.Char('处理方法/措施', readonly=True)
active = fields.Boolean(string='已归档', default=True)
+ functional_tool_name_id = fields.Many2one('sf.functional.tool.assembly', string='功能刀具名称')
+
@api.model
def _read_group_machine_table_name_ids(self, categories, domain, order):
machine_table_name_ids = categories._search([], order=order, access_rights_uid=SUPERUSER_ID)
return categories.browse(machine_table_name_ids)
+ def action_open_dismantle(self):
+ self.ensure_one()
+ dismantle_ids = self.env['sf.functional.tool.dismantle'].sudo().search(
+ [('functional_tool_id', '=', self.functional_tool_id.id)])
+ action = {
+ 'res_model': 'sf.functional.tool.dismantle',
+ 'type': 'ir.actions.act_window',
+ 'name': '拆解单'
+ }
+ if len(dismantle_ids) == 1:
+ action.update({
+ 'view_mode': 'form',
+ 'res_id': dismantle_ids.ids[0]
+ })
+ elif dismantle_ids:
+ action.update({
+ 'view_mode': 'tree,form',
+ 'res_id': dismantle_ids.ids
+ })
+ else:
+ return False
+ return action
# def create_tool_warning_record(self, obj):
# """
# 机台换刀申请报警状态时,创建功能刀具预警记录
diff --git a/sf_tool_management/views/functional_tool_views.xml b/sf_tool_management/views/functional_tool_views.xml
index 70edbafe..b0c78117 100644
--- a/sf_tool_management/views/functional_tool_views.xml
+++ b/sf_tool_management/views/functional_tool_views.xml
@@ -25,7 +25,10 @@
-
+
@@ -48,6 +51,16 @@