From 41ec2284078a4efcc8c3d7d2f58af1ba44d4e52d Mon Sep 17 00:00:00 2001 From: sinergia Date: Thu, 14 Jul 2022 21:09:07 -0500 Subject: [PATCH] wizard 'create equipments' --- equipment.py | 2 + product.py | 31 +++++++++----- sale.py | 72 ++++++++++++++------------------- view/optical_equipment_form.xml | 3 +- view/template_form.xml | 7 ++-- 5 files changed, 58 insertions(+), 57 deletions(-) diff --git a/equipment.py b/equipment.py index 6d5adf5..404ed92 100644 --- a/equipment.py +++ b/equipment.py @@ -58,6 +58,8 @@ class OpticalEquipment(Workflow, ModelSQL, ModelView): states={'readonly': True}) current_subscription = fields.Many2One('sale.subscription') + software_version = fields.Char("Software version", size=None) + @classmethod def __setup__(cls): diff --git a/product.py b/product.py index f8d71a3..525a0ca 100644 --- a/product.py +++ b/product.py @@ -49,15 +49,20 @@ class Template(metaclass=PoolMeta): equipment = fields.Boolean('It is equipment', states={'invisible': Eval('type', 'goods') != 'goods', - },depends=['type']) - + },depends=['type'] + ) maintenance_activity = fields.Boolean('Maintenance Activity', states={'invisible': Eval('type', 'service') != 'service', - },depends=['type']) + 'readonly': If(Eval('equipment',True), True) + | If(Eval('replacement',True), True) + },depends=['type'] + ) replacement = fields.Boolean('Replacement', states={'invisible': Eval('type', 'goods') != 'goods', - },depends=['type']) - + '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'] @@ -89,10 +94,10 @@ class Template(metaclass=PoolMeta): states={'required': Eval('equipment', False)}, depends=['equipment'] ) - reference = fields.Char("Reference", size=None) + reference_category = fields.Many2One('product.category', "Reference", + domain=[('parent', '=', Eval('model_category'))], + ) origin_country = fields.Many2One('country.country',"Origin Country") - software_version = fields.Char( - "Software version", size=None) refurbish = fields.Boolean('Refurbish') #These are measurements required for the equipments, are in this place @@ -203,10 +208,16 @@ class Template(metaclass=PoolMeta): return False - @fields.depends('mark_category', 'model_category') + @fields.depends('mark_category', 'model_category', 'reference_category') def on_change_mark_category(self): - if self.mark_category: + 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): diff --git a/sale.py b/sale.py index f12c216..a38ccbb 100644 --- a/sale.py +++ b/sale.py @@ -51,62 +51,52 @@ class CreateSubscription(Wizard): ]) create_subscription = StateAction('sale_subscription.act_subscription_form') - def get_subscription_lines(self): - pool = Pool() - SubscriptionLine = pool.get('sale.subscription.line') - subscription_line = SubscriptionLine() - subscription_line.start_date = self.start_date - subscription_line.end_date = self.end_date - subscription_line.service = self.service - subcription_line.quantity = self.quantity - subcription_line.unit = self.service.product.unit - subscription_line.consumpiton_recurrence = self.service.consumption_recurrence - #raise UserError(str(dir(subscription_line))) - return [subscription_line] - @property def _subscription_start(self): - sale = self.records[0] - #raise UserError(str(dir(self.records[0]))) subscription_lines = [] - #subscription.lines.append(get_subscription_lines()) - return dict(start_date = self.start.start_date, - end_date = self.start.end_date, - invoice_recurrence = self.start.invoice_recurrence, - invoice_start_date = self.start.invoice_start_date, - service = self.start.service, - quantity = self.start.quantity, - party=sale.party.id, - contact=sale.contact.id if sale.contact else None, - invoice_party=sale.invoice_party.id if sale.invoice_party else None, - invoice_address=sale.invoice_address.id, - payment_term=sale.payment_term.id if sale.payment_term else None, - ) - + return dict(start_date=self.start.start_date, + end_date=self.start.end_date, + invoice_recurrence=self.start.invoice_recurrence, + invoice_start_date=self.start.invoice_start_date, + service=self.start.service, + quantity=self.start.quantity, + unit_price=self.start.unit_price) + + def do_create_subscription(self, action): pool = Pool() Subscription = pool.get('sale.subscription') - #raise UserError(str(dir(self))) + SubscriptionLine = pool.get('sale.subscription.line') + + sale = self.records[0] a = self._subscription_start - #self.get_subscription_lines() - #raise UserError(str(dir(Subscription))) + + subscription_lines = [SubscriptionLine( + start_date=a['start_date'], + end_date=a['end_date'], + consumption_recurrence=a['invoice_recurrence'], + service=a['service'], + unit=a['service'].product.default_uom, + quantity=a['quantity'], + unit_price=a['unit_price'] + )] + subscription = Subscription( start_date=a['start_date'], end_date=a['end_date'], invoice_recurrence=a['invoice_recurrence'], invoice_start_date=a['invoice_start_date'], - party=a['party'], - contact=a['contact'], - invoice_party=a['contact'], - invoice_address=a['invoice_address'], - payment_term=a['payment_term'], + party=sale.party.id, + contact=sale.contact.id if sale.contact else None, + invoice_party=sale.invoice_party.id if sale.invoice_party else None, + invoice_address=sale.invoice_address.id, + payment_term=sale.payment_term.id if sale.payment_term else None, + lines=subscription_lines, ) - subscription.lines.append(get_subscription_lines()) subscription.save() - #raise UserError(str(dir(subscription))) - - + + class SaleLine(metaclass=PoolMeta): 'SaleLine' __name__ = 'sale.line' diff --git a/view/optical_equipment_form.xml b/view/optical_equipment_form.xml index 20aed25..3648c1e 100644 --- a/view/optical_equipment_form.xml +++ b/view/optical_equipment_form.xml @@ -42,8 +42,7 @@