diff --git a/__init__.py b/__init__.py index ef75e64..8fec32f 100644 --- a/__init__.py +++ b/__init__.py @@ -13,7 +13,7 @@ def register(): purchase.Line, sale.Sale, sale.SaleLine, - sale.CreateSubscriptionStart, + sale.CreateSubscriptionStart, equipment.OpticalEquipment, equipment.EquipmentMaintenance, configuration_equipment.Configuration, @@ -22,7 +22,9 @@ def register(): maintenance.MaintenanceLine, subscription.Subscription, subscription.SubscriptionEquipment, + subscription.CreateContractInvoiceStart, module='optical_equipment', type_='model') Pool.register( sale.CreateSubscription, + subscription.CreateContractInvoice, module='optical_equipment', type_='wizard') diff --git a/equipment.py b/equipment.py index 569f143..3a26337 100644 --- a/equipment.py +++ b/equipment.py @@ -97,10 +97,29 @@ class OpticalEquipment(DeactivableMixin, Workflow, ModelSQL, ModelView): maintenance_frequency = fields.Selection(_MAINTENANCE_FREQUENCY, "Maintenance Frequency", depends=['propietary']) - + purchase_origin = fields.Reference("Purchase Origin", selection='get_origin', select=True) del _states_serial + @classmethod + def _get_origin(cls): + 'Return list of Model names for origin Reference' + pool = Pool() + Purchase = pool.get('purchase.purchase') + + return [Purchase.__name__] + + + + + @classmethod + def get_origin(cls): + Model = Pool().get('ir.model') + get_name = Model.get_name + models = cls._get_origin() + + return [(None, '')] + [(m, get_name(m)) for m in models] + @classmethod def __setup__(cls): super(OpticalEquipment, cls).__setup__() diff --git a/locale/es.po b/locale/es.po index f3d4bb1..7e2953b 100644 --- a/locale/es.po +++ b/locale/es.po @@ -138,7 +138,9 @@ msgctxt "field:product.template,analog_resolution:" msgid "Analog resolution" msgstr "Resolución Analoga" - +msgctxt "field:product.template,a_factor_resolution:" +msgid "(a) Resolution" +msgstr "Factor a" msgctxt "field:sale.configuration,subscription_sequence:" msgid "Subscription Sequence" diff --git a/product.py b/product.py index 6a81906..c402077 100644 --- a/product.py +++ b/product.py @@ -127,21 +127,24 @@ class Template(metaclass=PoolMeta): states={'invisible': ~Bool(Eval('electrical_equipment'))}) frequency_uom = fields.Many2One('product.uom', "Frequency UOM", domain=[('category', '=', Id('optical_equipment', 'uom_cat_frequency'))], - states={'invisible' : If(Eval('frequency') == None, True)}, + states={'invisible' : If(Eval('frequency') == None, True) | + ~Eval('electrical_equipment', True)}, depends=['frequency'] ) voltageAC = fields.Float("Voltage AC", states={'invisible': ~Bool(Eval('electrical_equipment'))}) 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)}, + states={'invisible' : If(Eval('voltageAC') == None, True) | + ~Eval('electrical_equipment', True)}, depends=['voltageAC'] ) voltageDC = fields.Float("Voltage DC", states={'invisible': ~Bool(Eval('electrical_equipment'))}) 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)}, + states={'invisible' : If(Eval('voltageDC') == None, True) | + ~Eval('electrical_equipment', True)}, depends=['voltageDC']) useful_life = fields.Integer("Useful life") @@ -165,6 +168,9 @@ class Template(metaclass=PoolMeta): analog_resolution = fields.Float("Analog resolution", states={'invisible': If(Eval('resolution_type') != 'analoga', True)}, depends=['resolution_type']) + a_factor_resolution = fields.Float("(a) Resolution", + states={'invisible': If(Eval('resolution_type') != 'analoga', True)}, + depends=['resolution_type']) Usubi = fields.Integer("Usub i") @classmethod @@ -177,6 +183,16 @@ class Template(metaclass=PoolMeta): 'invisible': ~Eval('calibration')},) ] + @classmethod + @fields.depends('temperature_min') + def default_temperature_min(self): + return 0 + + @classmethod + @fields.depends('temperature_max') + def default_temperature_max(self): + return 0 + @classmethod @fields.depends('temperature') def default_temperature_uom(self): @@ -186,6 +202,10 @@ class Template(metaclass=PoolMeta): return measurement + @staticmethod + def default_frequency(): + return 0 + @staticmethod def default_frequency_uom(): pool = Pool() @@ -194,6 +214,14 @@ class Template(metaclass=PoolMeta): return measurement + @staticmethod + def default_moisture_min(): + return 0 + + @staticmethod + def default_moisture_max(): + return 0 + @staticmethod def default_moisture_uom(): pool = Pool() @@ -202,6 +230,10 @@ class Template(metaclass=PoolMeta): return measurement + @staticmethod + def default_voltageAC(): + return 0 + @staticmethod def default_voltageAC_uom(): pool = Pool() @@ -210,6 +242,10 @@ class Template(metaclass=PoolMeta): return measurement + @staticmethod + def default_voltageDC(): + return 0 + @staticmethod def default_voltageDC_uom(): pool = Pool() @@ -247,7 +283,14 @@ class Template(metaclass=PoolMeta): def default_refurbish(): return False - + + @fields.depends('d_resolution', 'analog_resolution', 'a_factor_resolution') + def on_change_resolution_type(self): + self.d_resolution = None + self.analog_resolution = None + self.a_factor_resolution = None + + @fields.depends('equipment', 'replacement') def on_change_equipment(self): if self.equipment: @@ -269,9 +312,9 @@ class Template(metaclass=PoolMeta): @fields.depends('electrical_equipment') def on_change_electrical_equipment(self): if self.electrical_equipment: - self.voltageAC = None - self.voltageDC = None - self.frequency = None + self.voltageAC = 0 + self.voltageDC = 0 + self.frequency = 0 class Product(metaclass=PoolMeta): __name__ = 'product.product' diff --git a/subscription.py b/subscription.py index d296792..288f012 100644 --- a/subscription.py +++ b/subscription.py @@ -4,6 +4,9 @@ from trytond.model import ( from trytond.modules.company.model import set_employee from trytond.exceptions import UserError +from trytond.wizard import ( + Button, StateAction, StateTransition, StateView, Wizard) + class Subscription(metaclass=PoolMeta): __name__ = 'sale.subscription' @@ -38,7 +41,55 @@ class Subscription(metaclass=PoolMeta): equipment.save() Line.save(lines) cls.save(subscriptions) + + +class CreateContractInvoice(Wizard): + "Create Contract Invoice" + __name__ = 'sale.subscription.create_invoice_contract' + + start = StateView( + 'sale.subscription.create_invoice_contract.start', + 'optical_equipment.create_invoice_contract_start_view_form',[ + Button("Cancel", 'end', 'tryton-cancel'), + Button("Create", 'create_invoice', 'tryton-ok', default=True), + ]) + + create_invoice = StateAction('account_invoice.act_invoice_form') + + + def do_create_invoice(self, action): + 'Create and return an invoice' + raise UserError(str(dir(action))) + invoice_lines = [] + for line in self.lines: + invoice_lines.append(line.get_invoice_line()) + invoice_lines = list(chain(*invoice_lines)) + + if not invoice_lines: + return + + + invoice = self._get_invoice_sale() + if getattr(invoice, 'lines', None): + invoice_lines = list(invoice.lines) + invoice_lines + invoice.lines = invoice_lines + + return invoice + +class CreateContractInvoiceStart(ModelView): + "Create Subscription Invoice" + __name__ = 'sale.subscription.create_invoice_contract.start' + + date = fields.Date("Date") + + @classmethod + def default_date(cls): + pool = Pool() + Date = pool.get('ir.date') + + return Date.today() + class SubscriptionEquipment(ModelSQL): 'Optical Equipment - Subscription' __name__ = 'sale.subscription-optical_equipment.equipment' diff --git a/subscription.xml b/subscription.xml index 5295e9b..5eabbbb 100644 --- a/subscription.xml +++ b/subscription.xml @@ -7,9 +7,24 @@ subscription_form - + - + + + sale.subscription.create_invoice_contract.start + form + create_invoice_contract_form + + + Invoice Contract + sale.subscription.create_invoice_contract + sale.subscription + + + form_action + sale.subscription,-1 + + diff --git a/tryton.cfg b/tryton.cfg index 364b409..299a347 100644 --- a/tryton.cfg +++ b/tryton.cfg @@ -12,6 +12,7 @@ depends: country sale_subscription account_stock_continental + account_invoice xml: address.xml party.xml diff --git a/view/optical_equipment_form.xml b/view/optical_equipment_form.xml index 77ab96b..42e4c87 100644 --- a/view/optical_equipment_form.xml +++ b/view/optical_equipment_form.xml @@ -58,8 +58,10 @@ + + + -