From 23c6cbf99e01942527698c009c6a5c2d1a244dcc Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Sun, 18 Jan 2015 13:19:15 +0100 Subject: [PATCH] [FIX+IMP] mrp_operations_extension FIX: Operation where is production properly handled IMP: Some views enhanced FIX: No warning at MO confirmation if there is no route. IMP: Show cycle length and capacity in route. FIX: Propagate capacity data. --- mrp_operations_extension/__openerp__.py | 2 +- mrp_operations_extension/i18n/es.po | 245 ++++++++++-------- .../i18n/mrp_operations_extension.pot | 117 +++++---- mrp_operations_extension/models/__init__.py | 2 +- mrp_operations_extension/models/mrp_bom.py | 2 + .../models/mrp_production.py | 53 ++-- .../models/mrp_routing.py | 123 +++++++++ .../models/mrp_routing_operation.py | 65 +---- .../models/mrp_routing_workcenter.py | 74 ------ .../views/mrp_production_view.xml | 55 ++-- .../views/mrp_routing_operation_view.xml | 38 +-- ...rkcenter_view.xml => mrp_routing_view.xml} | 56 ++-- 12 files changed, 415 insertions(+), 417 deletions(-) create mode 100644 mrp_operations_extension/models/mrp_routing.py delete mode 100644 mrp_operations_extension/models/mrp_routing_workcenter.py rename mrp_operations_extension/views/{mrp_routing_workcenter_view.xml => mrp_routing_view.xml} (54%) diff --git a/mrp_operations_extension/__openerp__.py b/mrp_operations_extension/__openerp__.py index 322dbe168..74d9a8ed0 100644 --- a/mrp_operations_extension/__openerp__.py +++ b/mrp_operations_extension/__openerp__.py @@ -41,7 +41,7 @@ "views/mrp_routing_operation_view.xml", "views/mrp_production_view.xml", "views/mrp_bom_view.xml", - "views/mrp_routing_workcenter_view.xml", + "views/mrp_routing_view.xml", "views/res_config_view.xml", "security/ir.model.access.csv", "security/mrp_operations_extension_security.xml", diff --git a/mrp_operations_extension/i18n/es.po b/mrp_operations_extension/i18n/es.po index b1be3bdaa..bb03bf4d2 100644 --- a/mrp_operations_extension/i18n/es.po +++ b/mrp_operations_extension/i18n/es.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 8.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-05 08:28+0000\n" -"PO-Revision-Date: 2015-01-05 08:28+0000\n" +"POT-Creation-Date: 2015-01-18 12:06+0000\n" +"PO-Revision-Date: 2015-01-18 12:06+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -18,31 +18,31 @@ msgstr "" #. module: mrp_operations_extension #: field:mrp.operation.workcenter,op_number:0 #: field:mrp.routing.operation,op_number:0 -msgid "# Operators" -msgstr "# Operators" +msgid "# operators" +msgstr "Nº operadores" #. module: mrp_operations_extension #: view:mrp.production:mrp_operations_extension.mrp_production_form_view_inh #: view:mrp.production.workcenter.line:mrp_operations_extension.workcenter_line_inh_form_view msgid "Actual Production Date" -msgstr "Fecha real de fabricación" +msgstr "Fecha real de producción" #. module: mrp_operations_extension -#: code:addons/mrp_operations_extension/models/mrp_production.py:78 +#: code:addons/mrp_operations_extension/models/mrp_production.py:29 #, python-format -msgid "At least one operation must have checked \"Move produced quantity to stock\"field" -msgstr "At least one operation must have checked \"Move produced quantity to stock\"field" +msgid "At least one work order must have checked 'Produce here'" +msgstr "Al menos una órden de trabajo debe tener marcada 'Producir aquí'" #. module: mrp_operations_extension #: model:ir.model,name:mrp_operations_extension.model_mrp_bom msgid "Bill of Material" -msgstr "Lista de material" +msgstr "Lista de materiales" #. module: mrp_operations_extension #: view:mrp.work.order.produce:mrp_operations_extension.view_mrp_product_consume_wizard #: view:mrp.work.order.produce:mrp_operations_extension.view_mrp_product_produce_wizard msgid "Cancel" -msgstr "Cancel" +msgstr "Cancelar" #. module: mrp_operations_extension #: view:mrp.production:mrp_operations_extension.mrp_production_operation_buttons_form_view @@ -51,67 +51,84 @@ msgstr "Cancelar orden" #. module: mrp_operations_extension #: field:mrp.operation.workcenter,capacity_per_cycle:0 -msgid "Capacity per Cycle" -msgstr "Capacity per Cycle" +msgid "Capacity per cycle" +msgstr "Capacidad por ciclo" + +#. module: mrp_operations_extension +#: code:addons/mrp_operations_extension/models/mrp_bom.py:67 +#, python-format +msgid "Changing Routing" +msgstr "Cambiando ruta" + +#. module: mrp_operations_extension +#: code:addons/mrp_operations_extension/models/mrp_bom.py:68 +#, python-format +msgid "Changing routing will cause to change the operation in which each component will be consumed, by default it is set the first one of the routing" +msgstr "Cambiar la ruta causará que cambie la operación en la que cada componente se consumirá. Por defecto se establece la primera de la ruta." #. module: mrp_operations_extension #: field:mrp.routing.operation,code:0 msgid "Code" -msgstr "Code" +msgstr "Código" #. module: mrp_operations_extension #: model:ir.actions.act_window,name:mrp_operations_extension.act_mrp_work_order_consume -#: view:mrp.production:mrp_operations_extension.mrp_production_form_view_inh +#: view:mrp.production:mrp_operations_extension.mrp_production_operation_buttons_form_view #: view:mrp.production.workcenter.line:mrp_operations_extension.workcenter_line_inh_form_view #: view:mrp.work.order.produce:mrp_operations_extension.view_mrp_product_consume_wizard msgid "Consume" -msgstr "Consume" +msgstr "Consumir" #. module: mrp_operations_extension #: view:mrp.work.order.produce:mrp_operations_extension.view_mrp_product_produce_wizard #: selection:mrp.work.order.produce,mode:0 msgid "Consume & Produce" -msgstr "Consume & Produce" +msgstr "Consumir y producir" #. module: mrp_operations_extension #: view:mrp.work.order.produce:mrp_operations_extension.view_mrp_product_consume_wizard #: view:mrp.work.order.produce:mrp_operations_extension.view_mrp_product_produce_wizard msgid "Consume Lines" -msgstr "Consume Lines" +msgstr "Líneas de consumo" #. module: mrp_operations_extension #: selection:mrp.work.order.produce,mode:0 msgid "Consume Only" -msgstr "Consume Only" +msgstr "Sólo consumir" #. module: mrp_operations_extension #: field:mrp.bom.line,operation:0 -msgid "Consumed" -msgstr "Consumed" +msgid "Consumed in" +msgstr "Consumido en" #. module: mrp_operations_extension #: field:mrp.operation.workcenter,create_uid:0 #: field:mrp.routing.operation,create_uid:0 #: field:mrp.work.order.produce,create_uid:0 msgid "Created by" -msgstr "Created by" +msgstr "Creado por" #. module: mrp_operations_extension #: field:mrp.operation.workcenter,create_date:0 #: field:mrp.routing.operation,create_date:0 #: field:mrp.work.order.produce,create_date:0 msgid "Created on" -msgstr "Created on" +msgstr "Creado en" #. module: mrp_operations_extension #: field:mrp.operation.workcenter,default:0 msgid "Default" -msgstr "Default" +msgstr "Por defecto" + +#. module: mrp_operations_extension +#: view:mrp.routing.workcenter:mrp_operations_extension.mrp_routing_workcenter_tree_view_inh +msgid "Default workcenter" +msgstr "Centro de trabajo por defecto" #. module: mrp_operations_extension #: field:mrp.routing.operation,description:0 msgid "Description" -msgstr "Description" +msgstr "Descripción" #. module: mrp_operations_extension #: view:mrp.production:mrp_operations_extension.mrp_production_form_view_inh @@ -121,18 +138,18 @@ msgstr "Duración" #. module: mrp_operations_extension #: field:mrp.operation.workcenter,time_efficiency:0 -msgid "Efficiency Factor" -msgstr "Efficiency Factor" +msgid "Efficiency factor" +msgstr "Factor de eficacia" #. module: mrp_operations_extension #: view:mrp.production.workcenter.line:mrp_operations_extension.workcenter_line_inh_form_view msgid "Extra Information" -msgstr "Extra Information" +msgstr "Información extra" #. module: mrp_operations_extension #: field:mrp.work.order.produce,final_product:0 msgid "Final Product to Stock" -msgstr "Final Product to Stock" +msgstr "Producto final a existencias" #. module: mrp_operations_extension #: field:mrp.operation.workcenter,id:0 @@ -141,6 +158,11 @@ msgstr "Final Product to Stock" msgid "ID" msgstr "ID" +#. module: mrp_operations_extension +#: help:mrp.routing.workcenter,do_production:0 +msgid "If enabled, the production and movement to stock of the final products will be done in this operation. There can be only one operation per route with this check marked." +msgstr "Si está habilitado, la producción y el movimiento a existencias de los productos finales se realizará en esta operación. Sólo puede haber una operación por ruta con esta casilla marcada." + #. module: mrp_operations_extension #: view:mrp.production:mrp_operations_extension.mrp_production_form_view_inh #: view:mrp.production.workcenter.line:mrp_operations_extension.workcenter_line_inh_form_view @@ -152,65 +174,49 @@ msgstr "Información" #: field:mrp.routing.operation,write_uid:0 #: field:mrp.work.order.produce,write_uid:0 msgid "Last Updated by" -msgstr "Last Updated by" +msgstr "Última actualización por" #. module: mrp_operations_extension #: field:mrp.operation.workcenter,write_date:0 #: field:mrp.routing.operation,write_date:0 #: field:mrp.work.order.produce,write_date:0 msgid "Last Updated on" -msgstr "Last Updated on" +msgstr "Última actualización en" #. module: mrp_operations_extension #: field:mrp.work.order.produce,lot_id:0 msgid "Lot" -msgstr "Lot" +msgstr "Lote" #. module: mrp_operations_extension #: model:ir.model,name:mrp_operations_extension.model_mrp_operation_workcenter msgid "MRP Operation Workcenter" -msgstr "MRP Operation Workcenter" +msgstr "Centro de trabajo de la operación" #. module: mrp_operations_extension #: model:ir.model,name:mrp_operations_extension.model_mrp_routing_operation msgid "MRP Routing Operation" -msgstr "MRP Routing Operation" +msgstr "Operación de la ruta" #. module: mrp_operations_extension #: field:mrp.config.settings,group_mrp_workers:0 msgid "Manage operators in work centers " -msgstr "Manage operators in work centers " +msgstr "Gestionar operadores en los centros de trabajo" #. module: mrp_operations_extension #: model:res.groups,name:mrp_operations_extension.group_mrp_workers msgid "Manufacturing Operators" -msgstr "Manufacturing Operators" - -#. module: mrp_operations_extension -#: model:ir.model,name:mrp_operations_extension.model_mrp_production -msgid "Manufacturing Order" -msgstr "Órden de producción" +msgstr "Operadores de fabricación" #. module: mrp_operations_extension #: view:mrp.production:mrp_operations_extension.mrp_production_form_view_inh msgid "Materials" -msgstr "Materials" +msgstr "Materiales" #. module: mrp_operations_extension #: field:mrp.work.order.produce,mode:0 msgid "Mode" -msgstr "Mode" - -#. module: mrp_operations_extension -#: field:mrp.production.workcenter.line,do_production:0 -#: field:mrp.routing.operation,do_production:0 -msgid "Move Final Product to Stock" -msgstr "Move Final Product to Stock" - -#. module: mrp_operations_extension -#: field:mrp.routing.workcenter,do_production:0 -msgid "Move produced quantity to stock" -msgstr "Move produced quantity to stock" +msgstr "Modo" #. module: mrp_operations_extension #: field:mrp.routing.operation,name:0 @@ -225,17 +231,17 @@ msgstr "Operación" #. module: mrp_operations_extension #: model:ir.ui.menu,name:mrp_operations_extension.mrp_routing_menu msgid "Operations" -msgstr "Operaciones" - -#. module: mrp_operations_extension -#: field:mrp.operation.workcenter,op_avg_cost:0 -msgid "Operator Average Cost" -msgstr "Coste medio de operador" +msgstr "" #. module: mrp_operations_extension #: field:mrp.workcenter,op_avg_cost:0 msgid "Operator average cost" -msgstr "Coste medio de operador" +msgstr "Coste medio del operador" + +#. module: mrp_operations_extension +#: field:mrp.operation.workcenter,op_avg_cost:0 +msgid "Operator avg. cost" +msgstr "Coste medio operador" #. module: mrp_operations_extension #: view:mrp.workcenter:mrp_operations_extension.mrp_workcenter_form_view_inh @@ -246,55 +252,65 @@ msgstr "Operadores" #. module: mrp_operations_extension #: field:mrp.routing.operation,picking_type_id:0 msgid "Picking Type" -msgstr "Picking Type" +msgstr "Tipo de albarán" #. module: mrp_operations_extension #: view:mrp.production:mrp_operations_extension.mrp_production_form_view_inh #: view:mrp.production.workcenter.line:mrp_operations_extension.workcenter_line_inh_form_view msgid "Planned Date" -msgstr "Fecha planeada" +msgstr "Fecha planificada" + +#. module: mrp_operations_extension +#: field:mrp.routing.workcenter,op_wc_lines:0 +msgid "Possible work centers for this operation" +msgstr "Posibles centros de trabajo para esta operación" + +#. module: mrp_operations_extension +#: view:mrp.routing.workcenter:mrp_operations_extension.mrp_routing_workcenter_form_view_inh +msgid "Possible workcenters" +msgstr "Posibles centros de trabajo" #. module: mrp_operations_extension #: field:mrp.workcenter,post_op_product:0 -msgid "Post Operation Cost" -msgstr "Coste de post-operación" +msgid "Post-operation costing product" +msgstr "" #. module: mrp_operations_extension #: field:mrp.workcenter,pre_op_product:0 -msgid "Pre Operation Cost" -msgstr "Coste de pre-operación" +msgid "Pre-operation costing product" +msgstr "Producto de coste de pre-operación" #. module: mrp_operations_extension #: model:ir.actions.act_window,name:mrp_operations_extension.act_mrp_work_order_produce -#: view:mrp.production:mrp_operations_extension.mrp_production_form_view_inh +#: view:mrp.production:mrp_operations_extension.mrp_production_operation_buttons_form_view #: view:mrp.production.workcenter.line:mrp_operations_extension.workcenter_line_inh_form_view #: view:mrp.work.order.produce:mrp_operations_extension.view_mrp_product_consume_wizard #: view:mrp.work.order.produce:mrp_operations_extension.view_mrp_product_produce_wizard msgid "Produce" -msgstr "Fabricar" +msgstr "Producir" #. module: mrp_operations_extension -#: code:addons/mrp_operations_extension/models/mrp_production.py:78 -#, python-format -msgid "Produce Operation" -msgstr "Produce Operation" +#: field:mrp.production.workcenter.line,do_production:0 +#: field:mrp.routing.workcenter,do_production:0 +msgid "Produce here" +msgstr "Producir aquí" #. module: mrp_operations_extension #: field:mrp.work.order.produce,product_id:0 msgid "Product" -msgstr "Product" +msgstr "Producto" #. module: mrp_operations_extension #: view:mrp.production:mrp_operations_extension.mrp_production_form_view_inh #: view:mrp.production.workcenter.line:mrp_operations_extension.workcenter_line_inh_form_view #: field:mrp.production.workcenter.line,product_line:0 msgid "Product Lines" -msgstr "Líneas de Producto" +msgstr "Líneas de producto" #. module: mrp_operations_extension #: model:ir.model,name:mrp_operations_extension.model_mrp_product_produce_line msgid "Product Produce Consume lines" -msgstr "Líneas de consumo de los producto producidos" +msgstr "Líneas de consumo de productos producidos" #. module: mrp_operations_extension #: view:mrp.production:mrp_operations_extension.mrp_production_form_view_inh @@ -305,45 +321,50 @@ msgstr "Producto a producir" #. module: mrp_operations_extension #: model:ir.model,name:mrp_operations_extension.model_mrp_production_product_line msgid "Production Scheduled Product" -msgstr "Fabricación planificada producto" +msgstr "Producto planificado de producción" #. module: mrp_operations_extension #: field:mrp.work.order.produce,consume_lines:0 msgid "Products Consumed" -msgstr "Products Consumed" +msgstr "Productos consumidos" #. module: mrp_operations_extension #: field:mrp.routing.operation,steps:0 msgid "Relevant Steps" -msgstr "Relevant Steps" +msgstr "Pasos relevantes" + +#. module: mrp_operations_extension +#: model:ir.model,name:mrp_operations_extension.model_mrp_routing +msgid "Routing" +msgstr "Ruta" #. module: mrp_operations_extension #: model:ir.actions.act_window,name:mrp_operations_extension.mrp_routing_operation_action #: view:mrp.routing.operation:mrp_operations_extension.rountig_operation_form #: view:mrp.routing.operation:mrp_operations_extension.rountig_operation_tree msgid "Routing Operation" -msgstr "Routing Operation" +msgstr "Operación de la ruta" #. module: mrp_operations_extension #: view:mrp.workcenter:mrp_operations_extension.mrp_workcenter_form_view_inh #: field:mrp.workcenter,rt_operations:0 msgid "Routing Operations" -msgstr "Routing Operations" +msgstr "Operaciones de la ruta" #. module: mrp_operations_extension #: field:mrp.production.workcenter.line,routing_wc_line:0 msgid "Routing WC Line" -msgstr "Routing WC Line" +msgstr "Línea de CT de la ruta" #. module: mrp_operations_extension #: field:mrp.operation.workcenter,routing_workcenter:0 -msgid "Routing Workcenter" -msgstr "Routing Workcenter" +msgid "Routing workcenter" +msgstr "Centro de trabajo de la ruta" #. module: mrp_operations_extension #: field:mrp.work.order.produce,product_qty:0 msgid "Select Quantity" -msgstr "Select Quantity" +msgstr "Seleccione cantidad" #. module: mrp_operations_extension #: model:ir.model,name:mrp_operations_extension.model_stock_move @@ -351,96 +372,94 @@ msgid "Stock Move" msgstr "Movimiento de existencias" #. module: mrp_operations_extension -#: code:addons/mrp_operations_extension/models/mrp_routing_workcenter.py:65 -#: code:addons/mrp_operations_extension/models/mrp_routing_workcenter.py:79 +#: code:addons/mrp_operations_extension/models/mrp_routing.py:57 #, python-format -msgid "There is another line set as default, disable it first." -msgstr "There is another line set as default, disable it first." +msgid "There must be one and only one line set as default." +msgstr "Debe haber una y sólo una línea marcado como por defecto." + +#. module: mrp_operations_extension +#: code:addons/mrp_operations_extension/models/mrp_routing.py:33 +#, python-format +msgid "There must be one and only one operation with 'Produce here' check marked." +msgstr "Debe haber una y sólo una operación con la casilla 'Producir aquí' marcada." #. module: mrp_operations_extension #: field:mrp.operation.workcenter,time_stop:0 msgid "Time after prod." -msgstr "Time after prod." +msgstr "Tiempo después de prod." #. module: mrp_operations_extension #: field:mrp.operation.workcenter,time_start:0 msgid "Time before prod." -msgstr "Time before prod." +msgstr "Tiempo antes de prod." #. module: mrp_operations_extension #: field:mrp.operation.workcenter,time_cycle:0 -msgid "Time for 1 cycle (hour)" -msgstr "Time for 1 cycle (hour)" +msgid "Time for 1 cycle (hours)" +msgstr "Tiempo para 1 ciclo (horas)" #. module: mrp_operations_extension #: help:mrp.operation.workcenter,time_cycle:0 msgid "Time in hours for doing one cycle." -msgstr "Time in hours for doing one cycle." +msgstr "Time en horas para realizar un ciclo." #. module: mrp_operations_extension #: help:mrp.operation.workcenter,time_stop:0 msgid "Time in hours for the cleaning." -msgstr "Time in hours for the cleaning." +msgstr "Tiempo en horas para la limpieza." #. module: mrp_operations_extension #: help:mrp.operation.workcenter,time_start:0 msgid "Time in hours for the setup." -msgstr "Time in hours for the setup." +msgstr "Tiempo en horas para la preparación" #. module: mrp_operations_extension #: view:mrp.work.order.produce:mrp_operations_extension.view_mrp_product_consume_wizard #: view:mrp.work.order.produce:mrp_operations_extension.view_mrp_product_produce_wizard msgid "To Consume" -msgstr "To Consume" +msgstr "A consumir" #. module: mrp_operations_extension #: field:mrp.work.order.produce,track_production:0 msgid "Track production" -msgstr "Track production" +msgstr "Rastrear producción" #. module: mrp_operations_extension #: model:ir.model,name:mrp_operations_extension.model_mrp_workcenter -#: field:mrp.operation.workcenter,workcenter:0 msgid "Work Center" -msgstr "Centro de producción" +msgstr "Centro de trabajo" #. module: mrp_operations_extension #: model:ir.model,name:mrp_operations_extension.model_mrp_routing_workcenter msgid "Work Center Usage" -msgstr "Utilización del centro de producción" +msgstr "Uso del centro de trabajo" #. module: mrp_operations_extension #: model:ir.model,name:mrp_operations_extension.model_mrp_production_workcenter_line #: field:mrp.production.product.line,work_order:0 #: field:stock.move,work_order:0 msgid "Work Order" -msgstr "Orden de trabajo" +msgstr "Órden de trabajo" #. module: mrp_operations_extension #: field:mrp.routing.operation,workcenters:0 msgid "Work centers" -msgstr "Centros de producción" +msgstr "Centros de trabajo" #. module: mrp_operations_extension #: field:mrp.product.produce.line,work_produce_id:0 msgid "Work produce id" -msgstr "Work produce id" +msgstr "ID de centro de producción" #. module: mrp_operations_extension -#: view:mrp.routing.workcenter:mrp_operations_extension.mrp_routing_workcenter_form_view_inh -#: field:mrp.routing.workcenter,op_wc_lines:0 -msgid "Workcenter Info Lines" -msgstr "Líneas de info. de centro de producción" +#: field:mrp.operation.workcenter,workcenter:0 +msgid "Workcenter" +msgstr "Centro de trabajo" #. module: mrp_operations_extension #: view:mrp.routing.operation:mrp_operations_extension.rountig_operation_form msgid "Workcenters" -msgstr "Workcenters" - -#. module: mrp_operations_extension -#: view:mrp.production:mrp_operations_extension.mrp_production_operation_buttons_form_view -msgid "oe_highlight" -msgstr "oe_highlight" +msgstr "Centros de trabajo" #. module: mrp_operations_extension #: view:mrp.work.order.produce:mrp_operations_extension.view_mrp_product_consume_wizard diff --git a/mrp_operations_extension/i18n/mrp_operations_extension.pot b/mrp_operations_extension/i18n/mrp_operations_extension.pot index 366ad219d..a4d8b72b7 100644 --- a/mrp_operations_extension/i18n/mrp_operations_extension.pot +++ b/mrp_operations_extension/i18n/mrp_operations_extension.pot @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 8.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-05 08:25+0000\n" -"PO-Revision-Date: 2015-01-05 08:25+0000\n" +"POT-Creation-Date: 2015-01-18 12:06+0000\n" +"PO-Revision-Date: 2015-01-18 12:06+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -18,7 +18,7 @@ msgstr "" #. module: mrp_operations_extension #: field:mrp.operation.workcenter,op_number:0 #: field:mrp.routing.operation,op_number:0 -msgid "# Operators" +msgid "# operators" msgstr "" #. module: mrp_operations_extension @@ -28,9 +28,9 @@ msgid "Actual Production Date" msgstr "" #. module: mrp_operations_extension -#: code:addons/mrp_operations_extension/models/mrp_production.py:78 +#: code:addons/mrp_operations_extension/models/mrp_production.py:29 #, python-format -msgid "At least one operation must have checked \"Move produced quantity to stock\"field" +msgid "At least one work order must have checked 'Produce here'" msgstr "" #. module: mrp_operations_extension @@ -51,7 +51,19 @@ msgstr "" #. module: mrp_operations_extension #: field:mrp.operation.workcenter,capacity_per_cycle:0 -msgid "Capacity per Cycle" +msgid "Capacity per cycle" +msgstr "" + +#. module: mrp_operations_extension +#: code:addons/mrp_operations_extension/models/mrp_bom.py:67 +#, python-format +msgid "Changing Routing" +msgstr "" + +#. module: mrp_operations_extension +#: code:addons/mrp_operations_extension/models/mrp_bom.py:68 +#, python-format +msgid "Changing routing will cause to change the operation in which each component will be consumed, by default it is set the first one of the routing" msgstr "" #. module: mrp_operations_extension @@ -61,7 +73,7 @@ msgstr "" #. module: mrp_operations_extension #: model:ir.actions.act_window,name:mrp_operations_extension.act_mrp_work_order_consume -#: view:mrp.production:mrp_operations_extension.mrp_production_form_view_inh +#: view:mrp.production:mrp_operations_extension.mrp_production_operation_buttons_form_view #: view:mrp.production.workcenter.line:mrp_operations_extension.workcenter_line_inh_form_view #: view:mrp.work.order.produce:mrp_operations_extension.view_mrp_product_consume_wizard msgid "Consume" @@ -86,7 +98,7 @@ msgstr "" #. module: mrp_operations_extension #: field:mrp.bom.line,operation:0 -msgid "Consumed" +msgid "Consumed in" msgstr "" #. module: mrp_operations_extension @@ -108,6 +120,11 @@ msgstr "" msgid "Default" msgstr "" +#. module: mrp_operations_extension +#: view:mrp.routing.workcenter:mrp_operations_extension.mrp_routing_workcenter_tree_view_inh +msgid "Default workcenter" +msgstr "" + #. module: mrp_operations_extension #: field:mrp.routing.operation,description:0 msgid "Description" @@ -121,7 +138,7 @@ msgstr "" #. module: mrp_operations_extension #: field:mrp.operation.workcenter,time_efficiency:0 -msgid "Efficiency Factor" +msgid "Efficiency factor" msgstr "" #. module: mrp_operations_extension @@ -141,6 +158,11 @@ msgstr "" msgid "ID" msgstr "" +#. module: mrp_operations_extension +#: help:mrp.routing.workcenter,do_production:0 +msgid "If enabled, the production and movement to stock of the final products will be done in this operation. There can be only one operation per route with this check marked." +msgstr "" + #. module: mrp_operations_extension #: view:mrp.production:mrp_operations_extension.mrp_production_form_view_inh #: view:mrp.production.workcenter.line:mrp_operations_extension.workcenter_line_inh_form_view @@ -186,11 +208,6 @@ msgstr "" msgid "Manufacturing Operators" msgstr "" -#. module: mrp_operations_extension -#: model:ir.model,name:mrp_operations_extension.model_mrp_production -msgid "Manufacturing Order" -msgstr "" - #. module: mrp_operations_extension #: view:mrp.production:mrp_operations_extension.mrp_production_form_view_inh msgid "Materials" @@ -201,17 +218,6 @@ msgstr "" msgid "Mode" msgstr "" -#. module: mrp_operations_extension -#: field:mrp.production.workcenter.line,do_production:0 -#: field:mrp.routing.operation,do_production:0 -msgid "Move Final Product to Stock" -msgstr "" - -#. module: mrp_operations_extension -#: field:mrp.routing.workcenter,do_production:0 -msgid "Move produced quantity to stock" -msgstr "" - #. module: mrp_operations_extension #: field:mrp.routing.operation,name:0 msgid "Name" @@ -228,13 +234,13 @@ msgid "Operations" msgstr "" #. module: mrp_operations_extension -#: field:mrp.operation.workcenter,op_avg_cost:0 -msgid "Operator Average Cost" +#: field:mrp.workcenter,op_avg_cost:0 +msgid "Operator average cost" msgstr "" #. module: mrp_operations_extension -#: field:mrp.workcenter,op_avg_cost:0 -msgid "Operator average cost" +#: field:mrp.operation.workcenter,op_avg_cost:0 +msgid "Operator avg. cost" msgstr "" #. module: mrp_operations_extension @@ -254,19 +260,29 @@ msgstr "" msgid "Planned Date" msgstr "" +#. module: mrp_operations_extension +#: field:mrp.routing.workcenter,op_wc_lines:0 +msgid "Possible work centers for this operation" +msgstr "" + +#. module: mrp_operations_extension +#: view:mrp.routing.workcenter:mrp_operations_extension.mrp_routing_workcenter_form_view_inh +msgid "Possible workcenters" +msgstr "" + #. module: mrp_operations_extension #: field:mrp.workcenter,post_op_product:0 -msgid "Post Operation Cost" +msgid "Post-operation costing product" msgstr "" #. module: mrp_operations_extension #: field:mrp.workcenter,pre_op_product:0 -msgid "Pre Operation Cost" +msgid "Pre-operation costing product" msgstr "" #. module: mrp_operations_extension #: model:ir.actions.act_window,name:mrp_operations_extension.act_mrp_work_order_produce -#: view:mrp.production:mrp_operations_extension.mrp_production_form_view_inh +#: view:mrp.production:mrp_operations_extension.mrp_production_operation_buttons_form_view #: view:mrp.production.workcenter.line:mrp_operations_extension.workcenter_line_inh_form_view #: view:mrp.work.order.produce:mrp_operations_extension.view_mrp_product_consume_wizard #: view:mrp.work.order.produce:mrp_operations_extension.view_mrp_product_produce_wizard @@ -274,9 +290,9 @@ msgid "Produce" msgstr "" #. module: mrp_operations_extension -#: code:addons/mrp_operations_extension/models/mrp_production.py:78 -#, python-format -msgid "Produce Operation" +#: field:mrp.production.workcenter.line,do_production:0 +#: field:mrp.routing.workcenter,do_production:0 +msgid "Produce here" msgstr "" #. module: mrp_operations_extension @@ -317,6 +333,11 @@ msgstr "" msgid "Relevant Steps" msgstr "" +#. module: mrp_operations_extension +#: model:ir.model,name:mrp_operations_extension.model_mrp_routing +msgid "Routing" +msgstr "" + #. module: mrp_operations_extension #: model:ir.actions.act_window,name:mrp_operations_extension.mrp_routing_operation_action #: view:mrp.routing.operation:mrp_operations_extension.rountig_operation_form @@ -337,7 +358,7 @@ msgstr "" #. module: mrp_operations_extension #: field:mrp.operation.workcenter,routing_workcenter:0 -msgid "Routing Workcenter" +msgid "Routing workcenter" msgstr "" #. module: mrp_operations_extension @@ -351,10 +372,15 @@ msgid "Stock Move" msgstr "" #. module: mrp_operations_extension -#: code:addons/mrp_operations_extension/models/mrp_routing_workcenter.py:65 -#: code:addons/mrp_operations_extension/models/mrp_routing_workcenter.py:79 +#: code:addons/mrp_operations_extension/models/mrp_routing.py:57 #, python-format -msgid "There is another line set as default, disable it first." +msgid "There must be one and only one line set as default." +msgstr "" + +#. module: mrp_operations_extension +#: code:addons/mrp_operations_extension/models/mrp_routing.py:33 +#, python-format +msgid "There must be one and only one operation with 'Produce here' check marked." msgstr "" #. module: mrp_operations_extension @@ -369,7 +395,7 @@ msgstr "" #. module: mrp_operations_extension #: field:mrp.operation.workcenter,time_cycle:0 -msgid "Time for 1 cycle (hour)" +msgid "Time for 1 cycle (hours)" msgstr "" #. module: mrp_operations_extension @@ -400,7 +426,6 @@ msgstr "" #. module: mrp_operations_extension #: model:ir.model,name:mrp_operations_extension.model_mrp_workcenter -#: field:mrp.operation.workcenter,workcenter:0 msgid "Work Center" msgstr "" @@ -427,9 +452,8 @@ msgid "Work produce id" msgstr "" #. module: mrp_operations_extension -#: view:mrp.routing.workcenter:mrp_operations_extension.mrp_routing_workcenter_form_view_inh -#: field:mrp.routing.workcenter,op_wc_lines:0 -msgid "Workcenter Info Lines" +#: field:mrp.operation.workcenter,workcenter:0 +msgid "Workcenter" msgstr "" #. module: mrp_operations_extension @@ -437,11 +461,6 @@ msgstr "" msgid "Workcenters" msgstr "" -#. module: mrp_operations_extension -#: view:mrp.production:mrp_operations_extension.mrp_production_operation_buttons_form_view -msgid "oe_highlight" -msgstr "" - #. module: mrp_operations_extension #: view:mrp.work.order.produce:mrp_operations_extension.view_mrp_product_consume_wizard #: view:mrp.work.order.produce:mrp_operations_extension.view_mrp_product_produce_wizard diff --git a/mrp_operations_extension/models/__init__.py b/mrp_operations_extension/models/__init__.py index 52a72a636..240ea76e9 100644 --- a/mrp_operations_extension/models/__init__.py +++ b/mrp_operations_extension/models/__init__.py @@ -16,7 +16,7 @@ # ############################################################################## -from . import mrp_routing_workcenter +from . import mrp_routing from . import mrp_production from . import mrp_bom from . import mrp_workcenter diff --git a/mrp_operations_extension/models/mrp_bom.py b/mrp_operations_extension/models/mrp_bom.py index 3a6b0a6d1..7d3ad683c 100644 --- a/mrp_operations_extension/models/mrp_bom.py +++ b/mrp_operations_extension/models/mrp_bom.py @@ -52,6 +52,8 @@ class MrpBom(models.Model): break if 'routing_wc_line' not in work_order: work_order['routing_wc_line'] = routing_line_id + wc = self.env['mrp.routing.workcenter'].browse(routing_line_id) + work_order['do_production'] = wc.do_production return result2 @api.multi diff --git a/mrp_operations_extension/models/mrp_production.py b/mrp_operations_extension/models/mrp_production.py index df4cf6045..77ecd59ef 100644 --- a/mrp_operations_extension/models/mrp_production.py +++ b/mrp_operations_extension/models/mrp_production.py @@ -22,17 +22,24 @@ from openerp import models, fields, api, exceptions, _ class MrpProduction(models.Model): _inherit = 'mrp.production' + @api.multi + def action_confirm(self): + if (self.routing_id and + not any([x.do_production for x in self.workcenter_lines])): + raise exceptions.Warning( + _("At least one work order must have checked 'Produce here'")) + return super(MrpProduction, self).action_confirm() + @api.multi def _action_compute_lines(self, properties=None): - res = super(MrpProduction, - self)._action_compute_lines(properties=properties) - self._get_workorder_in_product_lines(self.workcenter_lines, - self.product_lines, - properties=properties) + res = super(MrpProduction, self)._action_compute_lines( + properties=properties) + self._get_workorder_in_product_lines( + self.workcenter_lines, self.product_lines, properties=properties) return res - def _get_workorder_in_product_lines(self, workcenter_lines, product_lines, - properties=None): + def _get_workorder_in_product_lines( + self, workcenter_lines, product_lines, properties=None): for p_line in product_lines: for bom_line in self.bom_id.bom_line_ids: if bom_line.product_id.id == p_line.product_id.id: @@ -62,25 +69,6 @@ class MrpProduction(models.Model): move.work_order = line.work_order.id return res - @api.multi - def action_compute(self, properties=None): - res = super(MrpProduction, self).action_compute(properties=properties) - produce = False - if not self.routing_id: - produce = True - else: - for workcenter_line in self.workcenter_lines: - if workcenter_line.do_production: - produce = True - break - if not produce: - raise exceptions.Warning( - _('Produce Operation'), _('At least one operation ' - 'must have checked ' - '"Move produced quantity to stock"' - 'field')) - return res - class MrpProductionProductLine(models.Model): _inherit = 'mrp.production.product.line' @@ -96,15 +84,4 @@ class MrpProductionWorkcenterLine(models.Model): 'work_order', string='Product Lines') routing_wc_line = fields.Many2one('mrp.routing.workcenter', string='Routing WC Line') - do_production = fields.Boolean( - string='Move Final Product to Stock') - - @api.model - def create(self, data): - workcenter_obj = self.env['mrp.routing.workcenter'] - if 'routing_wc_line' in data: - routing_wc_line_id = data.get('routing_wc_line') - work = workcenter_obj.browse(routing_wc_line_id) - data.update({'do_production': - work.operation.do_production}) - return super(MrpProductionWorkcenterLine, self).create(data) + do_production = fields.Boolean(string='Produce here') diff --git a/mrp_operations_extension/models/mrp_routing.py b/mrp_operations_extension/models/mrp_routing.py new file mode 100644 index 000000000..6bb226f73 --- /dev/null +++ b/mrp_operations_extension/models/mrp_routing.py @@ -0,0 +1,123 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +############################################################################## + +from openerp import models, fields, api, _ +from openerp.addons import decimal_precision as dp + + +class MrpRouting(models.Model): + _inherit = 'mrp.routing' + + @api.one + @api.constrains('workcenter_lines') + def _check_produce_operation(self): + if not self.workcenter_lines: + return + num_produce = sum([x.do_production for x in self.workcenter_lines]) + if num_produce != 1: + raise Warning(_("There must be one and only one operation with " + "'Produce here' check marked.")) + + +class MrpRoutingWorkcenter(models.Model): + _inherit = 'mrp.routing.workcenter' + + operation = fields.Many2one('mrp.routing.operation', string='Operation') + op_wc_lines = fields.One2many( + 'mrp.operation.workcenter', 'routing_workcenter', + string='Possible work centers for this operation') + do_production = fields.Boolean( + string='Produce here', + help="If enabled, the production and movement to stock of the final " + "products will be done in this operation. There can be only one " + "operation per route with this check marked.") + + @api.constrains('op_wc_lines') + def _check_default_op_wc_lines(self): + if not self.op_wc_lines: + return + num_default = len([x for x in self.op_wc_lines if x.default]) + if num_default != 1: + raise Warning( + _('There must be one and only one line set as default.')) + + @api.one + @api.onchange('operation') + def onchange_operation(self): + if self.operation: + self.name = self.operation.name + self.note = self.operation.description + op_wc_lst = [] + for operation_wc in self.operation.workcenters: + data = { + 'workcenter': operation_wc.id, + 'capacity_per_cycle': operation_wc.capacity_per_cycle, + 'time_efficiency': operation_wc.time_efficiency, + 'time_cycle': operation_wc.time_cycle, + 'time_start': operation_wc.time_start, + 'time_stop': operation_wc.time_stop, + 'op_number': self.operation.op_number, + } + op_wc_lst.append(data) + op_wc_lst[0]['default'] = True + self.op_wc_lines = op_wc_lst + + @api.one + @api.onchange('op_wc_lines') + def onchange_lines_default(self): + for line in self.op_wc_lines: + if line.default: + self.workcenter_id = line.workcenter + self.cycle_nbr = line.capacity_per_cycle + self.hour_nbr = line.time_cycle + break + + +class MrpOperationWorkcenter(models.Model): + _name = 'mrp.operation.workcenter' + _description = 'MRP Operation Workcenter' + + workcenter = fields.Many2one( + 'mrp.workcenter', string='Workcenter', required=True) + routing_workcenter = fields.Many2one( + 'mrp.routing.workcenter', 'Routing workcenter', required=True) + time_efficiency = fields.Float('Efficiency factor') + capacity_per_cycle = fields.Float('Capacity per cycle') + time_cycle = fields.Float('Time for 1 cycle (hours)', + help="Time in hours for doing one cycle.") + time_start = fields.Float('Time before prod.', + help="Time in hours for the setup.") + time_stop = fields.Float('Time after prod.', + help="Time in hours for the cleaning.") + op_number = fields.Integer('# operators', default='0') + op_avg_cost = fields.Float( + string='Operator avg. cost', + digits=dp.get_precision('Product Price')) + default = fields.Boolean('Default') + + @api.one + @api.onchange('workcenter') + def onchange_workcenter(self): + if self.workcenter: + self.capacity_per_cycle = self.workcenter.capacity_per_cycle + self.time_efficiency = self.workcenter.time_efficiency + self.time_cycle = self.workcenter.time_cycle + self.time_start = self.workcenter.time_start + self.time_stop = self.workcenter.time_stop + self.op_number = self.workcenter.op_number + self.op_avg_cost = self.workcenter.op_avg_cost diff --git a/mrp_operations_extension/models/mrp_routing_operation.py b/mrp_operations_extension/models/mrp_routing_operation.py index fee7bc579..de73ef223 100644 --- a/mrp_operations_extension/models/mrp_routing_operation.py +++ b/mrp_operations_extension/models/mrp_routing_operation.py @@ -16,66 +16,7 @@ # ############################################################################## -from openerp import models, fields, api -from openerp.addons import decimal_precision as dp - - -class MrpOperationWorkcenter(models.Model): - _name = 'mrp.operation.workcenter' - _description = 'MRP Operation Workcenter' - - workcenter = fields.Many2one('mrp.workcenter', string='Work Center') - routing_workcenter = fields.Many2one('mrp.routing.workcenter', - 'Routing Workcenter') - time_efficiency = fields.Float('Efficiency Factor') - capacity_per_cycle = fields.Float('Capacity per Cycle') - time_cycle = fields.Float('Time for 1 cycle (hour)', - help="Time in hours for doing one cycle.") - time_start = fields.Float('Time before prod.', - help="Time in hours for the setup.") - time_stop = fields.Float('Time after prod.', - help="Time in hours for the cleaning.") - op_number = fields.Integer('# Operators', default='0') - op_avg_cost = fields.Float( - string='Operator Average Cost', - digits=dp.get_precision('Product Price')) - default = fields.Boolean('Default') - - @api.one - @api.onchange('workcenter') - def onchange_workcenter(self): - if self.workcenter: - self.capacity_per_cycle = self.workcenter.capacity_per_cycle - self.time_efficiency = self.workcenter.time_efficiency - self.time_cycle = self.workcenter.time_cycle - self.time_start = self.workcenter.time_start - self.time_stop = self.workcenter.time_stop - self.op_number = self.workcenter.op_number - self.op_avg_cost = self.workcenter.op_avg_cost - self.default = False - - @api.model - def create(self, vals): - res = super(MrpOperationWorkcenter, self).create(vals) - if vals.get('default', False): - routing_obj = self.env['mrp.routing.workcenter'] - routing = routing_obj.browse(vals.get('routing_workcenter', False)) - routing.workcenter_id = vals.get('workcenter', False) - for line in routing.op_wc_lines: - if line != res: - line.default = False - return res - - @api.multi - def write(self, vals): - res = super(MrpOperationWorkcenter, self).write(vals) - for record in self: - if vals.get('default', False): - record.routing_workcenter.workcenter_id = record.workcenter - for line in record.routing_workcenter.op_wc_lines: - if line != record: - line.default = False - return res +from openerp import models, fields class MrpRoutingOperation(models.Model): @@ -89,8 +30,6 @@ class MrpRoutingOperation(models.Model): workcenters = fields.Many2many( 'mrp.workcenter', 'mrp_operation_workcenter_rel', 'operation', 'workcenter', 'Work centers') - op_number = fields.Integer('# Operators', default='0') - do_production = fields.Boolean( - string='Move Final Product to Stock') + op_number = fields.Integer('# operators', default='0') picking_type_id = fields.Many2one( 'stock.picking.type', string='Picking Type') diff --git a/mrp_operations_extension/models/mrp_routing_workcenter.py b/mrp_operations_extension/models/mrp_routing_workcenter.py deleted file mode 100644 index b8c4ac1ed..000000000 --- a/mrp_operations_extension/models/mrp_routing_workcenter.py +++ /dev/null @@ -1,74 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -############################################################################## - -from openerp import models, fields, api, exceptions, _ - - -class MrpRoutingWorkcenter(models.Model): - _inherit = 'mrp.routing.workcenter' - - operation = fields.Many2one('mrp.routing.operation', string='Operation') - op_wc_lines = fields.One2many('mrp.operation.workcenter', - 'routing_workcenter', - 'Possible work centers for this operation') - do_production = fields.Boolean( - string='Move produced quantity to stock') - - @api.one - @api.onchange('operation') - def onchange_operation(self): - if self.operation: - self.name = self.operation.name - self.note = self.operation.description - op_wc_lst = [] - data = {} - for operation_wc in self.operation.workcenters: - data = { - 'workcenter': operation_wc.id, - 'capacity_per_cycle': operation_wc.capacity_per_cycle, - 'time_efficiency': operation_wc.time_efficiency, - 'time_cycle': operation_wc.time_cycle, - 'time_start': operation_wc.time_start, - 'time_stop': operation_wc.time_stop, - 'default': False, - 'op_number': self.operation.op_number, - } - op_wc_lst.append(data) - self.op_wc_lines = op_wc_lst - - @api.one - @api.onchange('workcenter_id') - def onchange_workcenter(self): - if self.workcenter_id: - self.hour_nbr = self.workcenter_id.time_cycle - for line in self.op_wc_lines: - line.default = False - if line.workcenter == self.workcenter_id: - line.default = True - - @api.one - @api.onchange('op_wc_lines') - def onchange_lines_default(self): - default = 0 - for line in self.op_wc_lines: - if line.default: - self.workcenter_id = line.workcenter - default += 1 - if default > 1: - raise exceptions.Warning(_('There is another line set as' - ' default, disable it first.')) diff --git a/mrp_operations_extension/views/mrp_production_view.xml b/mrp_operations_extension/views/mrp_production_view.xml index 7ea90b925..93edf1c9e 100644 --- a/mrp_operations_extension/views/mrp_production_view.xml +++ b/mrp_operations_extension/views/mrp_production_view.xml @@ -32,60 +32,45 @@ mrp.production - + - + - + - + - + + + + 2 - + - + - + + 1 - + + 1 - + + + + - - + @@ -159,7 +144,7 @@ - Work centre line inh + Workcenter line inh mrp.production.workcenter.line diff --git a/mrp_operations_extension/views/mrp_routing_operation_view.xml b/mrp_operations_extension/views/mrp_routing_operation_view.xml index 792d90300..6a0f2633e 100644 --- a/mrp_operations_extension/views/mrp_routing_operation_view.xml +++ b/mrp_operations_extension/views/mrp_routing_operation_view.xml @@ -2,36 +2,34 @@ - rountig.operation.tree + routing.operation.tree mrp.routing.operation - - rountig.operation.form + routing.operation.form mrp.routing.operation
- - - - - - - - - - - - - - + + + + + + + + + + + + +
@@ -44,7 +42,9 @@ tree,form
- + diff --git a/mrp_operations_extension/views/mrp_routing_workcenter_view.xml b/mrp_operations_extension/views/mrp_routing_view.xml similarity index 54% rename from mrp_operations_extension/views/mrp_routing_workcenter_view.xml rename to mrp_operations_extension/views/mrp_routing_view.xml index e58049b95..274a93123 100644 --- a/mrp_operations_extension/views/mrp_routing_workcenter_view.xml +++ b/mrp_operations_extension/views/mrp_routing_view.xml @@ -10,8 +10,17 @@ + + Default workcenter + - float_time + Total + + + Total + + + @@ -22,38 +31,37 @@ - - + - - + +