From 2c59b9f588a7c1fb6327e8dcd3ef0c1d42ba852f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sat, 1 Apr 2017 00:36:58 +0200 Subject: [PATCH] Remove Property fields issue2349 review28161002 --- __init__.py | 1 + sale.py | 66 ++++++++++++++++++++++++++++++++++++++++++++++------- sale.xml | 7 ------ 3 files changed, 59 insertions(+), 15 deletions(-) diff --git a/__init__.py b/__init__.py index f8a5cb4ff1..acce84fe91 100644 --- a/__init__.py +++ b/__init__.py @@ -15,6 +15,7 @@ def register(): Action_SaleLine, Action_InvoiceLine, Configuration, + ConfigurationSequence, Sale, InvoiceLine, module='sale_complaint', type_='model') diff --git a/sale.py b/sale.py index 88e541abee..8b3522a5dc 100644 --- a/sale.py +++ b/sale.py @@ -2,26 +2,76 @@ # this repository contains the full copyright notices and license terms. from __future__ import unicode_literals -from trytond.pool import PoolMeta +from trytond import backend +from trytond.pool import PoolMeta, Pool from trytond.model import fields from trytond.pyson import Eval -__all__ = ['Configuration', 'Sale'] +__all__ = ['Configuration', 'ConfigurationSequence', 'Sale'] class Configuration: __metaclass__ = PoolMeta __name__ = 'sale.configuration' - complaint_sequence = fields.Property(fields.Many2One('ir.sequence', - 'Complaint Sequence', domain=[ + complaint_sequence = fields.MultiValue(fields.Many2One( + 'ir.sequence', "Complaint Sequence", + domain=[ ('code', '=', 'sale.complaint'), - ['OR', - ('company', '=', Eval('context', {}).get('company', -1)), - ('company', '=', None), - ], + ('company', 'in', [ + Eval('context', {}).get('company', -1), None]), ])) + @classmethod + def multivalue_model(cls, field): + pool = Pool() + if field == 'complaint_sequence': + return pool.get('sale.configuration.sequence') + return super(Configuration, cls).multivalue_model(field) + + @classmethod + def default_complaint_sequence(cls): + return cls.multivalue_model( + 'complaint_sequence').default_complaint_sequence() + + +class ConfigurationSequence: + __metaclass__ = PoolMeta + __name__ = 'sale.configuration.sequence' + complaint_sequence = fields.Many2One( + 'ir.sequence', "Complaint Sequence", + domain=[ + ('code', '=', 'sale.complaint'), + ('company', 'in', [Eval('company', -1), None]), + ], + depends=['company']) + + @classmethod + def __register__(cls, module_name): + TableHandler = backend.get('TableHandler') + exist = TableHandler.table_exist(cls._table) + if exist: + table = TableHandler(cls, module_name) + exist &= table.column_exist('complaint_sequence') + + super(ConfigurationSequence, cls).__register__(module_name) + + if not exist: + cls._migrate_property([], [], []) + + @classmethod + def _migrate_property(cls, field_names, value_names, fields): + field_names.append('complaint_sequence') + value_names.append('complaint_sequence') + super(ConfigurationSequence, cls)._migrate_property( + field_names, value_names, fields) + + @classmethod + def default_complaint_sequence(cls): + pool = Pool() + ModelData = pool.get('ir.model.data') + return ModelData.get_id('sale_complaint', 'sequence_complaint') + class Sale: __metaclass__ = PoolMeta diff --git a/sale.xml b/sale.xml index 811b418d18..299f0ce8a3 100644 --- a/sale.xml +++ b/sale.xml @@ -29,11 +29,4 @@ this repository contains the full copyright notices and license terms. --> sale.complaint - - - - - -