#This file is part of Tryton. The COPYRIGHT file at the top level of #txhis repository contains the full copyright notices and license terms from trytond.pool import Pool, PoolMeta from trytond.model import ( ModelView, ModelSQL, fields, Exclude) from trytond.pyson import Bool, If, Eval, Id from trytond.exceptions import UserError _RISK = [('', ""), ('uno', 'I'), ('dosA', 'IIA'), ('dosB', 'IIB')] _USE = [('', ""), ('medico', 'Médico'), ('basico', 'Basico'), ('apoyo', 'Apoyo')] _BIOMEDICAL_CLASS = [ ('', ""), ('diagnostico', 'Diagnóstico'), ('rehabilitación', 'Rehabilitación')] _MAIN_TECNOLOGY = [ ('', ""), ('mecanico', 'Mecánico'), ('electrico', 'Electrico'), ('electronico', 'Electrónico'), ('hidraulico', 'Hidraulico'), ('neumatico', 'Neumatico')] _EQUIPMENT_TYPE = [ ('', ""), ('mobiliario_optico', 'Mobiliario óptico'), ('refraccion', 'Refracción'), ('medico', 'Medicion'), ('accesorios', 'Accesorios')] NON_MEASURABLE = ['service'] class Template(metaclass=PoolMeta): 'Template' __name__ = 'product.template' equipment = fields.Boolean('It is equipment', states={'invisible': Eval('type', 'goods') != 'goods', },depends=['type'] ) maintenance_activity = fields.Boolean('Maintenance Activity', states={'invisible': Eval('type', 'service') != 'service', 'readonly': If(Eval('equipment',True), True) | If(Eval('replacement',True), True) },depends=['type'] ) replacement = fields.Boolean('Replacement', states={'invisible': Eval('type', 'goods') != 'goods', 'readonly': If(Eval('equipment',True), True) | If(Eval('maintenance_activity',True), True) },depends=['type'] ) equipment_type = fields.Selection(_EQUIPMENT_TYPE, 'Equipment type', states={'required': Eval('equipment', False)}, depends=['equipment'] ) risk = fields.Selection(_RISK, 'Type risk') use = fields.Selection(_USE, 'Use', states={'required': Eval('equipment', False)}, depends=['equipment'] ) biomedical_class = fields.Selection(_BIOMEDICAL_CLASS,'Biomedical Class', states={'required': Eval('equipment', False)}, depends=['equipment'] ) main_tecnology = fields.Selection(_MAIN_TECNOLOGY,'Main tecnology', states={'required': Eval('equipment', False)}, depends=['equipment'] ) calibration = fields.Boolean("Apply calibration") observation = fields.Text('Observation') mark_category = fields.Many2One('product.category', 'Mark', domain=[('parent', '=', None), ('accounting', '=', False)], states={'required': Eval('equipment', False)}, depends=['equipment'] ) model_category = fields.Many2One('product.category', "Model", domain=[('parent', '=', Eval('mark_category')), ('accounting', '=', False)], states={'required': Eval('equipment', False)}, depends=['equipment'] ) reference_category = fields.Many2One('product.category', "Reference", domain=[('parent', '=', Eval('model_category'))], ) origin_country = fields.Many2One('country.country',"Origin Country") refurbish = fields.Boolean('Refurbish') #These are measurements required for the equipments, are in this place # for manage of class 'product.template' temperature = fields.Float("Temperature") temperature_uom = fields.Many2One('product.uom', 'Temperature UOM', domain=[('category', '=', Id('optical_equipment', "uom_cat_temperature"))], states={'invisible' : If(Eval('temperature') == None, True)}, depends=['temperature'] ) frequency = fields.Float("Frequency") frequency_uom = fields.Many2One('product.uom', "Frequency UOM", domain=[('category', '=', Id('optical_equipment', 'uom_cat_frequency'))], states={'invisible' : If(Eval('frequency') == None, True)}, depends=['frequency'] ) moisture = fields.Float("Moisture") moisture_uom = fields.Many2One('product.uom', "Moisture UOM", domain=[('category', '=', Id('optical_equipment', 'uom_cat_relative_humedity'))], states={'invisible' : If(Eval('moisture') == None, True)}, depends=['moisture'] ) voltageAC = fields.Float("Voltage AC") voltageAC_uom = fields.Many2One('product.uom', "Voltage AC UOM", domain=[('category', '=', Id('optical_equipment', 'uom_cat_electrical_tension'))], states={'invisible' : If(Eval('voltageAC') == None, True)}, depends=['voltageAC'] ) voltageDC = fields.Float("Voltage DC") voltageDC_uom = fields.Many2One('product.uom', "Voltage DC UOM", domain=[('category', '=', Id('optical_equipment', 'uom_cat_electrical_tension'))], states={'invisible' : If(Eval('voltageDC') == None, True)}, depends=['voltageDC']) useful_life = fields.Integer("Useful life") warranty = fields.Integer("Warranty") @classmethod @fields.depends('temperature') def default_temperature_uom(self): pool = Pool() Measurements = pool.get('product.uom') measurement = Measurements.search(['name', '=', 'Celsius'])[0].id return measurement @staticmethod def default_frequency_uom(): pool = Pool() Measurements = pool.get('product.uom') measurement = Measurements.search(['name', '=', 'Hertz'])[0].id return measurement @staticmethod def default_moisture_uom(): pool = Pool() Measurements = pool.get('product.uom') measurement = Measurements.search(['name', '=', 'Relative Humedity'])[0].id return measurement @staticmethod def default_voltageAC_uom(): pool = Pool() Measurements = pool.get('product.uom') measurement = Measurements.search(['name', '=', 'Volt'])[0].id return measurement @staticmethod def default_voltageDC_uom(): pool = Pool() Measurements = pool.get('product.uom') measurement = Measurements.search(['name', '=', 'Volt'])[0].id return measurement @staticmethod def default_risk(): return None @staticmethod def default_use(): return None @staticmethod def default_biomedical_class(): return None @staticmethod def default_main_tecnology(): return None @staticmethod def default_calibration(): return False @staticmethod def default_refurbish(): return False @staticmethod def default_refurbish(): return False @fields.depends('equipment', 'replacement') def on_change_equipment(self): if self.equipment: self.replacement=False self.maintenance_activity=False @fields.depends('mark_category', 'model_category', 'reference_category') def on_change_mark_category(self): if not self.mark_category: self.model_category = None self.reference_category = None @fields.depends('model_category', 'reference_category') def on_change_model_category(self): if not self.model_category: self.reference_category = None @classmethod def view_attributes(cls): return super(Template, cls).view_attributes() + [ ('//page[@id="features"]', 'states', { 'invisible': ~Eval('equipment'), })] class Product(metaclass=PoolMeta): __name__ = 'product.product'