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 @@
+
+
+
-
diff --git a/view/subscription_form.xml b/view/subscription_form.xml
index 756ee16..7fe1e8a 100644
--- a/view/subscription_form.xml
+++ b/view/subscription_form.xml
@@ -7,4 +7,8 @@
+
+
+
+
diff --git a/view/template_form.xml b/view/template_form.xml
index 72e22a8..ebdf85c 100644
--- a/view/template_form.xml
+++ b/view/template_form.xml
@@ -62,6 +62,9 @@ this repository contains the full copyright notices and license terms. -->
+
+
+