From 4abf2cd01144f1bb9a27667b649fca0dc4b61d49 Mon Sep 17 00:00:00 2001 From: ivan deng Date: Fri, 22 Dec 2017 01:40:25 +0800 Subject: [PATCH] update seq --- .../data/product_sequence.xml | 28 ++++++++++++++++++- .../data/product_sequence_dp.xml | 4 +++ .../data/product_sequence_felive.xml | 28 ++++++++++++++++++- .../models/product_internal_type.py | 2 ++ .../models/product_product.py | 26 ++++++++++------- .../models/product_template.py | 8 ++++-- .../views/felive_view.xml | 21 ++++++++++++++ .../views/product_internal_type_view.xml | 2 ++ 8 files changed, 104 insertions(+), 15 deletions(-) create mode 100644 app_product_type_sequence/views/felive_view.xml diff --git a/app_product_type_sequence/data/product_sequence.xml b/app_product_type_sequence/data/product_sequence.xml index c0c7f9f6..f36a27f1 100644 --- a/app_product_type_sequence/data/product_sequence.xml +++ b/app_product_type_sequence/data/product_sequence.xml @@ -6,7 +6,7 @@ Sequence for All Products product.product - P%(y)s%(month)s + PR%(y)s%(month)s 5 True @@ -54,6 +54,7 @@ Manufactured Product cp + 1 product 1 0 @@ -65,6 +66,7 @@ Manufactured Components bj + 2 product 0 0 @@ -76,6 +78,7 @@ Components Product bc + 3 product 0 1 @@ -87,6 +90,7 @@ Sourced Product cl + 4 product 1 1 @@ -94,6 +98,28 @@ Set prefix as "CL" in link sequence + + + Service + fw + 5 + service + 1 + 1 + Set prefix as "PR" in link sequence + + + + + Consumer + xh + 6 + consu + 1 + 1 + Set prefix as "PR" in link sequence + + diff --git a/app_product_type_sequence/data/product_sequence_dp.xml b/app_product_type_sequence/data/product_sequence_dp.xml index 4b8b3ff3..abe76b7f 100644 --- a/app_product_type_sequence/data/product_sequence_dp.xml +++ b/app_product_type_sequence/data/product_sequence_dp.xml @@ -53,6 +53,7 @@ Manufactured Product d + 1 product 1 0 @@ -63,6 +64,7 @@ Components Product c + 2 product 0 1 @@ -73,6 +75,7 @@ Sourced Product s + 3 product 1 1 @@ -83,6 +86,7 @@ Service v + 4 service 1 1 diff --git a/app_product_type_sequence/data/product_sequence_felive.xml b/app_product_type_sequence/data/product_sequence_felive.xml index 4a502df7..7d7c8b64 100644 --- a/app_product_type_sequence/data/product_sequence_felive.xml +++ b/app_product_type_sequence/data/product_sequence_felive.xml @@ -54,6 +54,7 @@ 制造的成品 cp + 1 product 1 0 @@ -65,6 +66,7 @@ 制造的板件 bj + 2 product 0 0 @@ -76,6 +78,7 @@ 制造用原材料(板材) bc + 3 product 0 1 @@ -85,8 +88,9 @@ - 外购成品(五金等) + 外购材料(五金等) cl + 4 product 1 1 @@ -94,6 +98,28 @@ Set prefix as "CL" in link sequence + + + 服务与费用 + fw + 5 + service + 1 + 1 + Set prefix as "PR" in link sequence + + + + + 消耗品 + xh + 6 + consu + 0 + 0 + Set prefix as "PR" in link sequence + + diff --git a/app_product_type_sequence/models/product_internal_type.py b/app_product_type_sequence/models/product_internal_type.py index b8b172ad..5b8690f8 100644 --- a/app_product_type_sequence/models/product_internal_type.py +++ b/app_product_type_sequence/models/product_internal_type.py @@ -20,7 +20,9 @@ from openerp import api, fields, models, _ class ProductInternalType(models.Model): _name = "product.internal.type" + _order = 'sequence, name' + sequence = fields.Integer('Sequence', default=9) name = fields.Char('Display Name', default='Normal', translate=True) description = fields.Char('Description') ref = fields.Char('Unique Code', required=True) diff --git a/app_product_type_sequence/models/product_product.py b/app_product_type_sequence/models/product_product.py index 7ea3fd3f..fe30635a 100644 --- a/app_product_type_sequence/models/product_product.py +++ b/app_product_type_sequence/models/product_product.py @@ -20,20 +20,22 @@ from openerp import models, fields, api, exceptions, _ class ProductProduct(models.Model): _inherit = 'product.product' - default_code = fields.Char('Internal Reference', index=True, default=lambda self: _('New'), copy=False) + default_code = fields.Char('Internal Reference', index=True, default='New', copy=False) default_code_index = fields.Integer('Internal Reference Index', readonly=True) - _sql_constraints = [ - ('uniq_default_code', - 'unique(default_code)', - 'The reference must be unique'), - ] + # todo: 检查数据,要保证数据唯一性 + # 为免报错,不限制唯一性 + # _sql_constraints = [ + # ('uniq_default_code', + # 'unique(default_code)', + # 'The reference must be unique'), + # ] @api.model def create(self, vals): # todo: but 先建空白产品后,编辑2个以上变体,序号会少个 -1 # code_index: 当没有变体现时,值为0,有变体时,为该变体序号 - if 'default_code' not in vals or vals['default_code'] == _('New'): + if 'default_code' not in vals or vals['default_code'] == 'New': code_index = 0 if 'product_tmpl_id' in vals: template = self.env['product.template'].search([('id', '=', vals['product_tmpl_id'])], limit=1) @@ -73,12 +75,16 @@ class ProductProduct(models.Model): else: # create from product_product sequence = self.env['product.internal.type'].search([('id', '=', vals['internal_type'])], limit=1) + if not sequence: + sequence = self.env.ref('app_product_type_sequence.internal_type_mrp_product', raise_if_not_found=False) if sequence: vals['default_code'] = sequence.link_sequence.next_by_id() else: - sequence = self.env['product.internal.type'].search([('id', '=', vals['internal_type'])], limit=1) - if sequence: - vals['default_code'] = sequence.link_sequence.next_by_id() + # 如果有自己输入 ref,则不需要自运输生成 + # sequence = self.env['product.internal.type'].search([('id', '=', vals['internal_type'])], limit=1) + # if sequence: + # vals['default_code'] = sequence.link_sequence.next_by_id() + pass return super(ProductProduct, self).create(vals) @api.multi diff --git a/app_product_type_sequence/models/product_template.py b/app_product_type_sequence/models/product_template.py index f6f3325d..45927c01 100644 --- a/app_product_type_sequence/models/product_template.py +++ b/app_product_type_sequence/models/product_template.py @@ -32,9 +32,9 @@ class ProductTemplate(models.Model): compute='_compute_default_code', inverse='_set_default_code', store=True, - default=lambda self: _('New'), copy=False) + default='New', copy=False) # 因为default_code有odoo的处理方式,影响面大,故会将其另存到 default_code_stored - default_code_stored = fields.Char('Internal Reference Stored',default=lambda self: _('New')) + default_code_stored = fields.Char('Internal Reference Stored',default='New') @api.model def create(self, vals): @@ -44,8 +44,10 @@ class ProductTemplate(models.Model): if not (self.env.context.get('create_product_product')): # 当从产品模板界面建立时(如果从产品界面建立,则已经生成了编码,不需要再处理) - if 'default_code' not in vals or vals['default_code'] == _('New'): + if 'default_code' not in vals or vals['default_code'] == 'New': sequence = self.env['product.internal.type'].search([('id', '=', vals['internal_type'])], limit=1) + if not sequence: + sequence = self.env.ref('app_product_type_sequence.internal_type_mrp_product', raise_if_not_found=False) vals['default_code'] = sequence.link_sequence.next_by_id() vals['default_code_stored'] = vals['default_code'] return super(ProductTemplate, self).create(vals) diff --git a/app_product_type_sequence/views/felive_view.xml b/app_product_type_sequence/views/felive_view.xml new file mode 100644 index 00000000..568208fc --- /dev/null +++ b/app_product_type_sequence/views/felive_view.xml @@ -0,0 +1,21 @@ + + + + + + product.template.common.form + product.template + + + +
+

+

+
+
+
+
+
+
diff --git a/app_product_type_sequence/views/product_internal_type_view.xml b/app_product_type_sequence/views/product_internal_type_view.xml index c65edcd1..b6b9dc97 100644 --- a/app_product_type_sequence/views/product_internal_type_view.xml +++ b/app_product_type_sequence/views/product_internal_type_view.xml @@ -7,6 +7,7 @@ product.internal.type + @@ -35,6 +36,7 @@ +