diff --git a/__init__.py b/__init__.py index d33d6d1..e4a80fb 100644 --- a/__init__.py +++ b/__init__.py @@ -16,3 +16,7 @@ def register(): subscription.Subscription, subscription.SubscriptionEquipment, module='optical_equipment', type_='model') + Pool.register( + sale.CreateSubscriptionStart, + sale.CreateSubscription, + module='sale', type_='wizard') diff --git a/equipment.py b/equipment.py index 9b22e41..6d5adf5 100644 --- a/equipment.py +++ b/equipment.py @@ -130,5 +130,3 @@ class OpticalEquipment(Workflow, ModelSQL, ModelView): @Workflow.transition('registred') def registred(cls, equipments): cls.set_code(equipments) - - diff --git a/product.py b/product.py index bf245b3..4c79f88 100644 --- a/product.py +++ b/product.py @@ -93,33 +93,33 @@ class Template(metaclass=PoolMeta): 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'] + 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'] + domain=[('category', '=', Id('optical_equipment', 'uom_cat_frequency'))], + states={'invisible' : If(Eval('frequency') == None, True)}, + depends=['frequency'] ) wet = fields.Float("Wet") wet_uom = fields.Many2One('product.uom', "Wet UOM", - domain=[('category', '=', Id('optical_equipment', 'uom_cat_relative_humedity'))], - states={'invisible' : If(Eval('wet') == None, True)}, - depends=['wet'] + domain=[('category', '=', Id('optical_equipment', 'uom_cat_relative_humedity'))], + states={'invisible' : If(Eval('wet') == None, True)}, + depends=['wet'] ) 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'] + 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']) + 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") diff --git a/sale.py b/sale.py index a916ec3..067a81b 100644 --- a/sale.py +++ b/sale.py @@ -3,8 +3,32 @@ from trytond.model import ModelView, ModelSQL, fields from trytond.pyson import Eval, Bool, If from trytond.transaction import Transaction +from trytond.wizard import ( + Button, StateAction, StateTransition, StateView, Wizard) +class CreateSubscriptionStart(ModelView): + 'Create Subscription Start' + __name__ = 'sale.sale.subscription.start' + start_date = fields.Date("Start Date", required=True) + end_date = fields.Date("End Date", required=True) + invoice_recurrence = fields.Many2One('sale.subscription.recurrence.rule.set', "Invoice Recurrence", + required=True) + invoice_start_date = fields.Date("Invoice Start Date", + help='Billing start date') + +class CreateSubscription(Wizard): + 'Create Subscription' + __name__ = 'sale.sale.subscription' + + start = StateView('sale.sale.subscription.start', + 'sale.create_subscription_view_form',[ + Button('Cancel', 'cancel', 'tryton-cancel'), + Button('Create', 'create', 'tryton-ok', default=True), + ]) + + + class SaleLine(metaclass=PoolMeta): 'SaleLine' __name__ = 'sale.line' @@ -21,9 +45,8 @@ class SaleLine(metaclass=PoolMeta): return 2 @fields.depends('product', 'unit', 'quantity', 'sale', - '_parent_sale.party', - methods=['_get_tax_rule_pattern', '_get_context_sale_price', - 'on_change_with_amount']) + '_parent_sale.party',methods=['_get_tax_rule_pattern', + '_get_context_sale_price','on_change_with_amount']) def on_change_product(self): Product = Pool().get('product.product') if not self.product: diff --git a/sale.xml b/sale.xml index 706765d..78125ef 100644 --- a/sale.xml +++ b/sale.xml @@ -6,4 +6,19 @@ sale_line_form + + sale.sale.subscription.start + form + create_subscription_form + + + Subscription + sale.sale.subscription + sale.sale + + + form_action + sale.sale,-1 + + diff --git a/subscription.py b/subscription.py index bf259ad..b091b63 100644 --- a/subscription.py +++ b/subscription.py @@ -9,8 +9,8 @@ class Subscription(metaclass=PoolMeta): equipments = fields.Many2Many('sale.subscription-optical_equipment.equipment', 'subscription', 'equipment', "Equipments") - - """@classmethod + + @classmethod @ModelView.button @Workflow.transition('running') @set_employee('run_by') @@ -20,36 +20,6 @@ class Subscription(metaclass=PoolMeta): Line = pool.get('sale.subscription.line') lines = [] subscription = subscriptions[0] - - for unit in subscription.equipments: - unit.propietary=subscription.party, - unit.propietary_address=subscription.invoice_address, - unit.mark_category=unit.mark_category, - unit.model_category=unit.model_category - unit.save() - - for subscription in subscriptions: - if not subscription.next_invoice_date: - subscription.next_invoice_date = ( - subscription.compute_next_invoice_date()) - for line in subscription.lines: - if (line.next_consumption_date is None - and not line.consumed_until): - line.next_consumption_date = ( - line.compute_next_consumption_date()) - lines.extend(subscription.lines) - Line.save(lines) - cls.save(subscriptions)""" - - """ - @classmethod - def __setup__(cls): - super(Subscription, cls).__setup__() - cls._order = [ - ('end_date', 'DESC'), - ('id', 'DESC'), - ] - """ class SubscriptionEquipment(ModelSQL): 'Optical Equipment - Subscription' @@ -57,3 +27,8 @@ class SubscriptionEquipment(ModelSQL): subscription = fields.Many2One('sale.subscription', 'Subscription', select=True) equipment = fields.Many2One('optical_equipment.equipment', 'Equipment', select=True) + + +class Line(metaclass=PoolMeta): + __name__ = 'sale.subscriptioin.line' +