update product_seq

add all default
This commit is contained in:
ivan deng
2017-12-19 02:58:53 +08:00
parent 67e59352f3
commit 39c09334a5
12 changed files with 542 additions and 70 deletions

View File

@@ -15,7 +15,7 @@
# http://www.sunpop.cn/odoo10_developer_document_offline/ # http://www.sunpop.cn/odoo10_developer_document_offline/
# description: # description:
{ {
'name': 'App Product Auto Sequence, Auto Code(Variants Supported)', 'name': 'App Product Internal Type,Auto Sequence, Auto Code(Variants Supported)',
'summary': 'Auto Internal Reference.', 'summary': 'Auto Internal Reference.',
"version": '10.0.2.2', "version": '10.0.2.2',
'category': 'Sales', 'category': 'Sales',
@@ -46,8 +46,10 @@
'pre_init_hook': 'pre_init_hook', 'pre_init_hook': 'pre_init_hook',
'depends': [ 'depends': [
'product', 'product',
'sale',
'stock', 'stock',
'sale',
'purchase',
'mrp',
], ],
'data': [ 'data': [
# 视图 # 视图

View File

@@ -11,59 +11,99 @@
<field name="company_id" eval="False"/> <field name="company_id" eval="False"/>
<field name="initial">True</field> <field name="initial">True</field>
</record> </record>
<!-- 制造的成品 manufactured Products. --> <!-- 制造的成品,如"床" manufactured Products. -->
<record id="seq_manufacture" model="ir.sequence"> <record id="seq_mrp_product" model="ir.sequence">
<field name="name">Sequence for Manufactured Product</field> <field name="name">Sequence for Manufactured Product</field>
<field name="code">product.product</field> <field name="code">product.product</field>
<field name="prefix">D%(y)s%(month)s</field> <field name="prefix">CP%(y)s%(month)s</field>
<field name="padding">5</field> <field name="padding">5</field>
<field name="company_id" eval="False"/> <field name="company_id" eval="False"/>
<field name="initial">True</field> <field name="initial">True</field>
</record> </record>
<!-- 制造的原料 Components.--> <!-- 制造的板件,如"顶板" Components.-->
<record id="seq_component" model="ir.sequence"> <record id="seq_mrp_component" model="ir.sequence">
<field name="name">Sequence for Components Product</field> <field name="name">Sequence for Manufactured Components</field>
<field name="code">product.product</field> <field name="code">product.product</field>
<field name="prefix">C%(y)s%(month)s</field> <field name="prefix">BJ%(y)s%(month)s</field>
<field name="padding">5</field> <field name="padding">5</field>
<field name="company_id" eval="False"/> <field name="company_id" eval="False"/>
<field name="initial">True</field> <field name="initial">True</field>
</record> </record>
<!-- 采购的成品 Sourced Products.--> <!-- 生产原材料,采购的板材,如"16mm中纤板" Components.-->
<record id="seq_sourced" model="ir.sequence"> <record id="seq_sourced_material" model="ir.sequence">
<field name="name">Sequence for Sourced Material</field>
<field name="code">product.product</field>
<field name="prefix">BC%(y)s%(month)s</field>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
<field name="initial">True</field>
</record>
<!-- 采购的成品,如"五金",纯买入卖出类 Sourced Products.-->
<record id="seq_sourced_product" model="ir.sequence">
<field name="name">Sequence for Sourced Product</field> <field name="name">Sequence for Sourced Product</field>
<field name="code">product.product</field> <field name="code">product.product</field>
<field name="prefix">S%(y)s%(month)s</field> <field name="prefix">CL%(y)s%(month)s</field>
<field name="padding">5</field> <field name="padding">5</field>
<field name="company_id" eval="False"/> <field name="company_id" eval="False"/>
<field name="initial">True</field> <field name="initial">True</field>
</record> </record>
<!-- internal_type 数据--> <!-- internal_type 数据-->
<record id="internal_type_sourced" model="product.internal.type"> <!--[(4, ref('purchase.route_warehouse0_buy')),(4, ref('mrp.route_warehouse0_manufacture')),(4, ref('stock.route_warehouse0_mto'))]-->
<field name="name">Sourced Product</field> <!--成品-->
<field name="description">Set prefix as "S" in link sequence</field> <record id="internal_type_mrp_product" model="product.internal.type">
<field name="link_sequence" ref="seq_sourced"/> <field name="name">制造的成品</field>
<field name="ref">cp</field>
<field name="type">product</field>
<field name="sale_ok">1</field>
<field name="purchase_ok">0</field>
<field name="route_ids" eval="[(6,0, [ref('mrp.route_warehouse0_manufacture'),ref('stock.route_warehouse0_mto')])]"/>
<field name="description">Set prefix as "CP" in link sequence</field>
<field name="link_sequence" ref="seq_mrp_product"/>
</record> </record>
<record id="internal_type_manufacture" model="product.internal.type"> <!--板件-->
<field name="name">Manufactured Product</field> <record id="internal_type_mrp_component" model="product.internal.type">
<field name="description">Set prefix as "D" in link sequence</field> <field name="name">制造的板件</field>
<field name="link_sequence" ref="seq_manufacture"/> <field name="ref">bj</field>
<field name="type">product</field>
<field name="sale_ok">0</field>
<field name="purchase_ok">0</field>
<field name="route_ids" eval="[(6,0, [ref('mrp.route_warehouse0_manufacture'),ref('stock.route_warehouse0_mto')])]"/>
<field name="description">Set prefix as "BJ" in link sequence</field>
<field name="link_sequence" ref="seq_mrp_component"/>
</record> </record>
<record id="internal_type_component" model="product.internal.type"> <!--纯制造原材料,板材-->
<field name="name">Components Product</field> <record id="internal_type_sourced_material" model="product.internal.type">
<field name="description">Set prefix as "C" in link sequence</field> <field name="name">制造用原材料(板材)</field>
<field name="link_sequence" ref="seq_component"/> <field name="ref">bc</field>
<field name="type">product</field>
<field name="sale_ok">0</field>
<field name="purchase_ok">1</field>
<field name="route_ids" eval="[(6,0, [ref('purchase.route_warehouse0_buy'),ref('stock.route_warehouse0_mto')])]"/>
<field name="description">Set prefix as "BC" in link sequence</field>
<field name="link_sequence" ref="seq_sourced_material"/>
</record>
<!--其它外购品,如五金-->
<record id="internal_type_sourced_product" model="product.internal.type">
<field name="name">外购成品(五金等)</field>
<field name="ref">cl</field>
<field name="type">product</field>
<field name="sale_ok">1</field>
<field name="purchase_ok">1</field>
<field name="route_ids" eval="[(6,0, [ref('purchase.route_warehouse0_buy'),ref('stock.route_warehouse0_mto')])]"/>
<field name="description">Set prefix as "CL" in link sequence</field>
<field name="link_sequence" ref="seq_sourced_product"/>
</record> </record>
<!--设置产品默认值为外购产品--> <!--这个默认值可以不用因为在onchange事件会设置很多值-->
<!--设置产品默认值为制造成品-->
<record id="product_internal_type_default" model="ir.values"> <record id="product_internal_type_default" model="ir.values">
<field name="name">internal_type</field> <field name="name">internal_type</field>
<field name="model">product.template</field> <field name="model">product.template</field>
<field name="key">default</field> <field name="key">default</field>
<field name="key2"></field> <field name="key2"></field>
<field name="company_id" ref="base.main_company"/> <field name="company_id" ref="base.main_company"/>
<field name="value" eval="'I' + str(ref('app_product_sequence.internal_type_sourced'))+'\n.'"/> <field name="value" eval="'I' + str(ref('internal_type_mrp_product'))+'\n.'"/>
</record> </record>
</data> </data>
</odoo> </odoo>

View File

@@ -0,0 +1,84 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="0">
<!-- 更新序号规则 Auto Internal Reference. -->
<!-- 所有的 All Products. -->
<record id="seq_product_auto" model="ir.sequence">
<field name="name">Sequence for All Products</field>
<field name="code">product.product</field>
<field name="prefix">P%(y)s%(month)s</field>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
<field name="initial">True</field>
</record>
<!-- 制造的成品 manufactured Products. -->
<record id="seq_manufacture" model="ir.sequence">
<field name="name">Sequence for Manufactured Product</field>
<field name="code">product.product</field>
<field name="prefix">D%(y)s%(month)s</field>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
<field name="initial">True</field>
</record>
<!-- 制造的原料 Components.-->
<record id="seq_component" model="ir.sequence">
<field name="name">Sequence for Components Product</field>
<field name="code">product.product</field>
<field name="prefix">C%(y)s%(month)s</field>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
<field name="initial">True</field>
</record>
<!-- 采购的成品 Sourced Products.-->
<record id="seq_sourced" model="ir.sequence">
<field name="name">Sequence for Sourced Product</field>
<field name="code">product.product</field>
<field name="prefix">S%(y)s%(month)s</field>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
<field name="initial">True</field>
</record>
<!-- internal_type 数据-->
<record id="internal_type_manufacture" model="product.internal.type">
<field name="name">Manufactured Product</field>
<field name="ref">d</field>
<field name="type">product</field>
<field name="sale_ok">1</field>
<field name="purchase_ok">0</field>
<field name="route_ids" eval="[(6,0, [ref('mrp.route_warehouse0_manufacture'),ref('stock.route_warehouse0_mto')])]"/>
<field name="description">Set prefix as "D" in link sequence</field>
<field name="link_sequence" ref="seq_manufacture"/>
</record>
<record id="internal_type_sourced" model="product.internal.type">
<field name="name">Sourced Product</field>
<field name="ref">s</field>
<field name="type">product</field>
<field name="sale_ok">1</field>
<field name="purchase_ok">1</field>
<field name="route_ids" eval="[(6,0, [ref('purchase.route_warehouse0_buy'),ref('stock.route_warehouse0_mto')])]"/>
<field name="description">Set prefix as "S" in link sequence</field>
<field name="link_sequence" ref="seq_sourced"/>
</record>
<record id="internal_type_component" model="product.internal.type">
<field name="name">Components Product</field>
<field name="ref">c</field>
<field name="type">product</field>
<field name="sale_ok">0</field>
<field name="purchase_ok">1</field>
<field name="route_ids" eval="[(6,0, [ref('purchase.route_warehouse0_buy'),ref('stock.route_warehouse0_mto')])]"/>
<field name="description">Set prefix as "C" in link sequence</field>
<field name="link_sequence" ref="seq_component"/>
</record>
<!--设置产品默认值为制造产品-->
<record id="product_internal_type_default" model="ir.values">
<field name="name">internal_type</field>
<field name="model">product.template</field>
<field name="key">default</field>
<field name="key2"></field>
<field name="company_id" ref="base.main_company"/>
<field name="value" eval="'I' + str(ref('app_product_sequence.internal_type_manufacture'))+'\n.'"/>
</record>
</data>
</odoo>

View File

@@ -0,0 +1,92 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="0">
<!-- 更新序号规则 Auto Internal Reference. -->
<!-- 所有的 All Products. -->
<record id="seq_product_auto" model="ir.sequence">
<field name="name">Sequence for All Products</field>
<field name="code">product.product</field>
<field name="prefix">P%(y)s%(month)s</field>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
<field name="initial">True</field>
</record>
<!-- 制造的成品,如"床" manufactured Products. -->
<record id="seq_mrp_product" model="ir.sequence">
<field name="name">Sequence for Manufactured Product</field>
<field name="code">product.product</field>
<field name="prefix">CP%(y)s%(month)s</field>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
<field name="initial">True</field>
</record>
<!-- 制造的板件,如"顶板" Components.-->
<record id="seq_mrp_component" model="ir.sequence">
<field name="name">Sequence for Manufactured Components</field>
<field name="code">product.product</field>
<field name="prefix">BJ%(y)s%(month)s</field>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
<field name="initial">True</field>
</record>
<!-- 生产原材料,采购的板材,如"16mm中纤板" Components.-->
<record id="seq_sourced_material" model="ir.sequence">
<field name="name">Sequence for Sourced Material</field>
<field name="code">product.product</field>
<field name="prefix">BC%(y)s%(month)s</field>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
<field name="initial">True</field>
</record>
<!-- 采购的成品,如"五金",纯买入卖出类 Sourced Products.-->
<record id="seq_sourced_product" model="ir.sequence">
<field name="name">Sequence for Sourced Product</field>
<field name="code">product.product</field>
<field name="prefix">CL%(y)s%(month)s</field>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
<field name="initial">True</field>
</record>
<!-- internal_type 数据-->
<!--成品-->
<record id="internal_type_mrp_product" model="product.internal.type">
<field name="name">制造的成品</field>
<field name="ref">cp</field>
<field name="description">Set prefix as "CP" in link sequence</field>
<field name="link_sequence" ref="seq_mrp_product"/>
</record>
<!--板件-->
<record id="internal_type_mrp_component" model="product.internal.type">
<field name="name">制造的板件</field>
<field name="ref">bj</field>
<field name="description">Set prefix as "BJ" in link sequence</field>
<field name="link_sequence" ref="seq_mrp_component"/>
</record>
<!--纯制造原材料,板材-->
<record id="internal_type_sourced_material" model="product.internal.type">
<field name="name">制造用原材料(板材)</field>
<field name="ref">bc</field>
<field name="description">Set prefix as "BC" in link sequence</field>
<field name="link_sequence" ref="seq_sourced_material"/>
</record>
<!--其它外购品,如五金-->
<record id="internal_type_sourced_product" model="product.internal.type">
<field name="name">外购成品(五金等)</field>
<field name="ref">cl</field>
<field name="description">Set prefix as "cl" in link sequence</field>
<field name="link_sequence" ref="seq_sourced_product"/>
</record>
<!--这个默认值可以不用因为在onchange事件会设置很多值-->
<!--设置产品默认值为制造成品-->
<record id="product_internal_type_default" model="ir.values">
<field name="name">internal_type</field>
<field name="model">product.template</field>
<field name="key">default</field>
<field name="key2"></field>
<field name="company_id" ref="base.main_company"/>
<field name="value" eval="'I' + str(ref('internal_type_mrp_product'))+'\n.'"/>
</record>
</data>
</odoo>

View File

@@ -0,0 +1,91 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="0">
<!-- 更新序号规则 Auto Internal Reference. -->
<!-- 所有的 All Products. -->
<record id="seq_product_auto" model="ir.sequence">
<field name="name">Sequence for All Products</field>
<field name="code">product.product</field>
<field name="prefix">P%(y)s%(month)s</field>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
<field name="initial">True</field>
</record>
<!-- 制造的成品,如"床" manufactured Products. -->
<record id="seq_mrp_product" model="ir.sequence">
<field name="name">Sequence for Manufactured Product</field>
<field name="code">product.product</field>
<field name="prefix">CP%(y)s%(month)s</field>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
<field name="initial">True</field>
</record>
<!-- 制造的板件,如"顶板" Components.-->
<record id="seq_mrp_component" model="ir.sequence">
<field name="name">Sequence for Manufactured Components</field>
<field name="code">product.product</field>
<field name="prefix">BJ%(y)s%(month)s</field>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
<field name="initial">True</field>
</record>
<!-- 生产原材料,采购的板材,如"16mm中纤板" Components.-->
<record id="seq_sourced_material" model="ir.sequence">
<field name="name">Sequence for Sourced Material</field>
<field name="code">product.product</field>
<field name="prefix">BC%(y)s%(month)s</field>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
<field name="initial">True</field>
</record>
<!-- 采购的成品,如"五金",纯买入卖出类 Sourced Products.-->
<record id="seq_sourced_product" model="ir.sequence">
<field name="name">Sequence for Sourced Product</field>
<field name="code">product.product</field>
<field name="prefix">CL%(y)s%(month)s</field>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
<field name="initial">True</field>
</record>
<!-- internal_type 数据-->
<!--成品-->
<record id="internal_type_mrp_product" model="product.internal.type">
<field name="name">Manufactured Product</field>
<field name="ref">cp</field>
<field name="description">Set prefix as "CP" in link sequence</field>
<field name="link_sequence" ref="seq_mrp_product"/>
</record>
<!--板件-->
<record id="internal_type_mrp_component" model="product.internal.type">
<field name="name">Manufactured Components</field>
<field name="ref">bj</field>
<field name="description">Set prefix as "BJ" in link sequence</field>
<field name="link_sequence" ref="seq_mrp_component"/>
</record>
<!--纯制造原材料,板材-->
<record id="internal_type_sourced_material" model="product.internal.type">
<field name="name">Sourced Material</field>
<field name="ref">bc</field>
<field name="description">Set prefix as "BC" in link sequence</field>
<field name="link_sequence" ref="seq_sourced_material"/>
</record>
<!--其它外购品,如五金-->
<record id="internal_type_sourced_product" model="product.internal.type">
<field name="name">Sourced Product</field>
<field name="ref">cl</field>
<field name="description">Set prefix as "cl" in link sequence</field>
<field name="link_sequence" ref="seq_sourced_product"/>
</record>
<!--设置产品默认值为制造成品-->
<record id="product_internal_type_default" model="ir.values">
<field name="name">internal_type</field>
<field name="model">product.template</field>
<field name="key">default</field>
<field name="key2"></field>
<field name="company_id" ref="base.main_company"/>
<field name="value" eval="'I' + str(ref('internal_type_mrp_product'))+'\n.'"/>
</record>
</data>
</odoo>

View File

@@ -1,20 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * product
#
# Translators:
# Ivan Deng <300883@qq.com>
msgid ""
msgstr ""
"Project-Id-Version: Odoo 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-11-22 14:03+0000\n"
"PO-Revision-Date: 2016-01-30 10:36+0000\n"
"Last-Translator: Ivan Deng\n"
"Language-Team: English (United Kingdom) (http://www.transifex.com/odoo/"
"odoo-10/language/en_GB/)\n"
"Language: en_GB\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

View File

@@ -4,10 +4,10 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Odoo Server 10.0+e-20171014\n" "Project-Id-Version: Odoo Server 10.0-20171107\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-11-05 12:11+0000\n" "POT-Creation-Date: 2017-12-18 10:50+0000\n"
"PO-Revision-Date: 2017-11-05 12:11+0000\n" "PO-Revision-Date: 2017-12-18 10:50+0000\n"
"Last-Translator: <>\n" "Last-Translator: <>\n"
"Language-Team: \n" "Language-Team: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -15,6 +15,39 @@ msgstr ""
"Content-Transfer-Encoding: \n" "Content-Transfer-Encoding: \n"
"Plural-Forms: \n" "Plural-Forms: \n"
#. module: app_product_sequence
#: model:ir.model.fields,help:app_product_sequence.field_product_internal_type_type
msgid "A stockable product is a product for which you manage stock. The \"Inventory\" app has to be installed.\n"
"A consumable product, on the other hand, is a product for which stock is not managed.\n"
"A service is a non-material product you provide.\n"
"A digital content is a non-material product you sell online. The files attached to the products are the one that are sold on the e-commerce such as e-books, music, pictures,... The \"Digital Product\" module has to be installed."
msgstr "A stockable product is a product for which you manage stock. The \"Inventory\" app has to be installed.\n"
"A consumable product, on the other hand, is a product for which stock is not managed.\n"
"A service is a non-material product you provide.\n"
"A digital content is a non-material product you sell online. The files attached to the products are the one that are sold on the e-commerce such as e-books, music, pictures,... The \"Digital Product\" module has to be installed."
#. module: app_product_sequence
#: model:ir.model.fields,field_description:app_product_sequence.field_product_internal_type_purchase_ok
msgid "Can be Purchased"
msgstr "可用于采购"
#. module: app_product_sequence
#: model:ir.model.fields,field_description:app_product_sequence.field_product_internal_type_rental
msgid "Can be Rent"
msgstr "可用于出租"
#. module: app_product_sequence
#: model:ir.model.fields,field_description:app_product_sequence.field_product_internal_type_sale_ok
msgid "Can be Sold"
msgstr "可用于销售"
#. module: app_product_sequence
#: code:addons/app_product_sequence/models/product_internal_type.py:34
#: selection:product.internal.type,type:0
#, python-format
msgid "Consumable"
msgstr "可消耗"
#. module: app_product_sequence #. module: app_product_sequence
#: model:ir.model.fields,field_description:app_product_sequence.field_product_internal_type_create_uid #: model:ir.model.fields,field_description:app_product_sequence.field_product_internal_type_create_uid
msgid "Created by" msgid "Created by"
@@ -25,6 +58,21 @@ msgstr "创建人"
msgid "Created on" msgid "Created on"
msgstr "创建时间" msgstr "创建时间"
#. module: app_product_sequence
#: model:ir.model.fields,field_description:app_product_sequence.field_product_category_internal_type
msgid "Default Internal Type"
msgstr "默认产品内部类型"
#. module: app_product_sequence
#: model:ir.ui.view,arch_db:app_product_sequence.product_internal_type_form_view
msgid "Default Product value"
msgstr "自动设置产品默认参数"
#. module: app_product_sequence
#: model:ir.model.fields,help:app_product_sequence.field_product_internal_type_route_ids
msgid "Depending on the modules installed, this will allow you to define the route of the product: whether it will be bought, manufactured, MTO/MTS,..."
msgstr "取决于安装的模块它允许在产品定义路线购买制造MTO/MTS等等..."
#. module: app_product_sequence #. module: app_product_sequence
#: model:ir.model.fields,field_description:app_product_sequence.field_product_internal_type_description #: model:ir.model.fields,field_description:app_product_sequence.field_product_internal_type_description
msgid "Description" msgid "Description"
@@ -33,6 +81,7 @@ msgstr "说明"
#. module: app_product_sequence #. module: app_product_sequence
#: model:ir.model.fields,field_description:app_product_sequence.field_product_internal_type_display_name #: model:ir.model.fields,field_description:app_product_sequence.field_product_internal_type_display_name
#: model:ir.model.fields,field_description:app_product_sequence.field_product_internal_type_name #: model:ir.model.fields,field_description:app_product_sequence.field_product_internal_type_name
#: model:ir.ui.view,arch_db:app_product_sequence.product_internal_type_form_view
msgid "Display Name" msgid "Display Name"
msgstr "显示名称" msgstr "显示名称"
@@ -56,7 +105,7 @@ msgstr "主产品编码"
#: model:ir.model.fields,field_description:app_product_sequence.field_product_product_internal_type #: model:ir.model.fields,field_description:app_product_sequence.field_product_product_internal_type
#: model:ir.model.fields,field_description:app_product_sequence.field_product_template_internal_type #: model:ir.model.fields,field_description:app_product_sequence.field_product_template_internal_type
msgid "Internal Type" msgid "Internal Type"
msgstr "编码类型" msgstr "内部(编码)类型"
#. module: app_product_sequence #. module: app_product_sequence
#: model:ir.model.fields,field_description:app_product_sequence.field_product_internal_type___last_update #: model:ir.model.fields,field_description:app_product_sequence.field_product_internal_type___last_update
@@ -79,7 +128,7 @@ msgid "Link Sequence"
msgstr "使用的序列" msgstr "使用的序列"
#. module: app_product_sequence #. module: app_product_sequence
#: code:addons/app_product_sequence/models/product_template.py:38 #: code:addons/app_product_sequence/models/product_template.py:40
#, python-format #, python-format
msgid "Please save product first before adding varients!" msgid "Please save product first before adding varients!"
msgstr "增加产品变体前,请先保存当前产品!" msgstr "增加产品变体前,请先保存当前产品!"
@@ -94,14 +143,20 @@ msgstr "序列记录的前缀"
msgid "Product" msgid "Product"
msgstr "产品" msgstr "产品"
#. module: app_product_sequence
#: model:ir.model,name:app_product_sequence.model_product_category
msgid "Product Category"
msgstr "产品类别"
#. module: app_product_sequence #. module: app_product_sequence
#: model:ir.actions.act_window,name:app_product_sequence.internal_type_action #: model:ir.actions.act_window,name:app_product_sequence.internal_type_action
#: model:ir.ui.menu,name:app_product_sequence.menu_internal_type_action_sale #: model:ir.ui.menu,name:app_product_sequence.menu_internal_type_action_sale
#: model:ir.ui.menu,name:app_product_sequence.menu_internal_type_action_stock #: model:ir.ui.menu,name:app_product_sequence.menu_internal_type_action_stock
#: model:ir.ui.menu,name:app_product_sequence.menu_internal_type_action_sys #: model:ir.ui.menu,name:app_product_sequence.menu_internal_type_action_sys
#: model:ir.ui.view,arch_db:app_product_sequence.product_internal_type_form_view
#: model:ir.ui.view,arch_db:app_product_sequence.product_internal_type_tree_view #: model:ir.ui.view,arch_db:app_product_sequence.product_internal_type_tree_view
msgid "Product Internal Type" msgid "Product Internal Type"
msgstr "产品编码类型" msgstr "内部类型(编码)"
#. module: app_product_sequence #. module: app_product_sequence
#: model:ir.model,name:app_product_sequence.model_product_template #: model:ir.model,name:app_product_sequence.model_product_template
@@ -109,21 +164,56 @@ msgid "Product Template"
msgstr "产品模板" msgstr "产品模板"
#. module: app_product_sequence #. module: app_product_sequence
#: code:addons/app_product_sequence/models/product_product.py:80 #: model:ir.model.fields,field_description:app_product_sequence.field_product_internal_type_type
msgid "Product Type"
msgstr "产品类型"
#. module: app_product_sequence
#: code:addons/app_product_sequence/models/product_product.py:83
#, python-format #, python-format
msgid "Product varient can only create in Product view!" msgid "Product varient can only create in Product view!"
msgstr "请在产品管理页面增加产品的多属性!" msgstr "请在产品管理页面增加产品的多属性!"
#. module: app_product_sequence #. module: app_product_sequence
#: sql_constraint:product.internal.type:0 #: model:ir.model.fields,field_description:app_product_sequence.field_product_internal_type_route_ids
msgid "The Link Sequence must be unique" msgid "Routes"
msgstr "使用的序列不可重复!" msgstr "路线"
#. module: app_product_sequence #. module: app_product_sequence
#: model:ir.model.fields,field_description:app_product_sequence.field_product_internal_type_sequence_prefix
msgid "Sequence Prefix"
msgstr "编号前缀"
#. module: app_product_sequence
#: code:addons/app_product_sequence/models/product_internal_type.py:35
#: selection:product.internal.type,type:0
#, python-format
msgid "Service"
msgstr "服务"
#. module: app_product_sequence
#: model:ir.model.fields,help:app_product_sequence.field_product_internal_type_sale_ok
msgid "Specify if the product can be selected in a sales order line."
msgstr "如果产品能在销售单明细在被选择,则指定。"
#. module: app_product_sequence
#: code:addons/app_product_sequence/models/product_internal_type.py:36
#: selection:product.internal.type,type:0
#, python-format
msgid "Stockable Product"
msgstr "可库存产品"
#. module: app_product_sequence
#: sql_constraint:product.internal.type:0
#: sql_constraint:product.product:0 #: sql_constraint:product.product:0
msgid "The reference must be unique" msgid "The reference must be unique"
msgstr "产品内部编码不可重复!" msgstr "产品内部编码不可重复!"
#. module: app_product_sequence
#: model:ir.model.fields,field_description:app_product_sequence.field_product_internal_type_ref
msgid "Unique Code"
msgstr "唯一编码"
#. module: app_product_sequence #. module: app_product_sequence
#: model:ir.model,name:app_product_sequence.model_product_internal_type #: model:ir.model,name:app_product_sequence.model_product_internal_type
msgid "product.internal.type" msgid "product.internal.type"

View File

@@ -21,18 +21,42 @@ from openerp import api, fields, models, _
class ProductInternalType(models.Model): class ProductInternalType(models.Model):
_name = "product.internal.type" _name = "product.internal.type"
name = fields.Char('Display Name',default='Normal') name = fields.Char('Display Name', default='Normal', translate=True)
description = fields.Char('Description') description = fields.Char('Description')
# 因为default_code有odoo的处理方式影响面大故会将其另存到 default_code_stored ref = fields.Char('Unique Code', required=True)
link_sequence = fields.Many2one( link_sequence = fields.Many2one(
'ir.sequence', 'Link Sequence', 'ir.sequence', 'Link Sequence',
auto_join=True, required=True, domain="[('code', '=', 'product.product')]") auto_join=True, required=True, domain="[('code', '=', 'product.product')]")
sequence_prefix = fields.Char(u'Sequence Prefix', related='link_sequence.prefix', readonly=True, store=False) sequence_prefix = fields.Char(u'Sequence Prefix', related='link_sequence.prefix', readonly=True, store=False)
# 各种默认值,填则自动录入,不填则不管
type = fields.Selection([
('consu', _('Consumable')),
('service', _('Service')),
('product', _('Stockable Product'))], string='Product Type',
help='A stockable product is a product for which you manage stock. The "Inventory" app has to be installed.\n'
'A consumable product, on the other hand, is a product for which stock is not managed.\n'
'A service is a non-material product you provide.\n'
'A digital content is a non-material product you sell online. The files attached to the products are the one that are sold on '
'the e-commerce such as e-books, music, pictures,... The "Digital Product" module has to be installed.')
rental = fields.Boolean('Can be Rent')
sale_ok = fields.Boolean(
'Can be Sold', default=True,
help="Specify if the product can be selected in a sales order line.")
purchase_ok = fields.Boolean('Can be Purchased', default=True)
# 使用目录的默认路线来处理,暂时不用内部类型路线
route_ids = fields.Many2many('stock.location.route', string='Routes',
domain=[('product_selectable', '=', True)],
help="Depending on the modules installed, this will allow you to define the route of the product: whether it will be bought, manufactured, MTO/MTS,...")
# company_id = fields.Many2one( # company_id = fields.Many2one(
# 'res.company', 'Company', # 'res.company', 'Company',
# default=lambda self: self.env.user.company_id.id, index=1) # default=lambda self: self.env.user.company_id.id, index=1)
# _sql_constraints = [
# ('uniq_link_sequence', _sql_constraints = [
# 'unique(link_sequence)', ('uniq_ref',
# 'The Link Sequence must be unique'), 'unique(ref)',
# ] 'The reference must be unique'),
]

View File

@@ -73,6 +73,7 @@ class ProductProduct(models.Model):
else: else:
# create from product_product # create from product_product
sequence = self.env['product.internal.type'].search([('id', '=', vals['internal_type'])], limit=1) sequence = self.env['product.internal.type'].search([('id', '=', vals['internal_type'])], limit=1)
if sequence:
vals['default_code'] = sequence.link_sequence.next_by_id() vals['default_code'] = sequence.link_sequence.next_by_id()
return super(ProductProduct, self).create(vals) return super(ProductProduct, self).create(vals)

View File

@@ -22,6 +22,7 @@ class ProductTemplate(models.Model):
_name = "product.template" _name = "product.template"
_inherit = ['product.template'] _inherit = ['product.template']
# auto_join只要搜索product.template自动会join。如果经常用到 internal_type 效率会高。
internal_type = fields.Many2one( internal_type = fields.Many2one(
'product.internal.type', 'Internal Type', 'product.internal.type', 'Internal Type',
auto_join=True, required=True) auto_join=True, required=True)
@@ -58,6 +59,17 @@ class ProductTemplate(models.Model):
if len(self.product_variant_ids) == 1: if len(self.product_variant_ids) == 1:
self.product_variant_ids.default_code = self.default_code_stored self.product_variant_ids.default_code = self.default_code_stored
# 当内部类型变化时,改变产品模板的各默认值
@api.onchange('internal_type')
def _onchange_internal_type(self):
if self.internal_type:
self.type = self.internal_type.type
self.rental = self.internal_type.rental
self.sale_ok = self.internal_type.sale_ok
self.purchase_ok = self.internal_type.purchase_ok
self.route_ids = self.internal_type.route_ids
# 分类变动时,如果分类绑定了内部类型则联动
@api.onchange('categ_id') @api.onchange('categ_id')
def _onchange_cate_id(self): def _onchange_cate_id(self):
if self.categ_id and self.categ_id.internal_type: if self.categ_id and self.categ_id.internal_type:

View File

@@ -6,19 +6,72 @@
<field name="name">product.internal.type.tree</field> <field name="name">product.internal.type.tree</field>
<field name="model">product.internal.type</field> <field name="model">product.internal.type</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree string="Product Internal Type" editable="top"> <tree string="Product Internal Type">
<field name="name"/> <field name="name"/>
<field name="ref"/>
<field name="type"/>
<field name="sale_ok"/>
<field name="purchase_ok"/>
<field name="route_ids" widget="many2many_tags"/>
<field name="link_sequence" context="{'default_code': 'product.product'}"/> <field name="link_sequence" context="{'default_code': 'product.product'}"/>
<field name="sequence_prefix"/> <field name="sequence_prefix"/>
<field name="description"/> <field name="description"/>
</tree> </tree>
</field> </field>
</record> </record>
<!--产品内部类型from-->
<record id="product_internal_type_form_view" model="ir.ui.view">
<field name="name">product.internal.type.form</field>
<field name="model">product.internal.type</field>
<field name="arch" type="xml">
<form string="Product Internal Type">
<sheet>
<div class="oe_title">
<label class="oe_edit_only" for="name" string="Display Name"/>
<h1>
<field name="name"/>
</h1>
</div>
<group>
<group>
<field name="ref"/>
</group>
<group>
<field name="description"/>
</group>
</group>
<group>
<field name="link_sequence"/>
<field name="sequence_prefix"/>
</group>
<group string="Default Product value">
<group>
<field name="type"/>
<field name="route_ids" widget="many2many_checkboxes"/>
</group>
<group>
<div name="options" groups="base.group_user">
<div>
<field name="sale_ok"/>
<label for="sale_ok"/>
</div>
<div>
<field name="purchase_ok"/>
<label for="purchase_ok"/>
</div>
</div>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="internal_type_action" model="ir.actions.act_window"> <record id="internal_type_action" model="ir.actions.act_window">
<field name="name">Product Internal Type</field> <field name="name">Product Internal Type</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">product.internal.type</field> <field name="res_model">product.internal.type</field>
<field name="view_mode">tree</field> <field name="view_mode">tree,form</field>
</record> </record>
<menuitem action="app_product_sequence.internal_type_action" id="menu_internal_type_action_sys" parent="base.next_id_5"/> <menuitem action="app_product_sequence.internal_type_action" id="menu_internal_type_action_sys" parent="base.next_id_5"/>

View File

@@ -8,7 +8,7 @@
<field name="inherit_id" ref="product.product_template_tree_view"/> <field name="inherit_id" ref="product.product_template_tree_view"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<xpath expr="//field[@name='type']" position="before"> <xpath expr="//field[@name='type']" position="before">
<field name="internal_type"/> <field name="internal_type" on_change="_onchange_internal_type()"/>
</xpath> </xpath>
</field> </field>
</record> </record>
@@ -18,8 +18,11 @@
<field name="model">product.template</field> <field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_form_view"/> <field name="inherit_id" ref="product.product_template_form_view"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<xpath expr="//field[@name='categ_id']" position="after"> <xpath expr="//div[@name='options']" position="before">
<field name="internal_type"/> <div>
<label for="internal_type"/>
<field name="internal_type" options="{'no_create': True,'no_open': True}"/>
</div>
</xpath> </xpath>
</field> </field>
</record> </record>