From 9bb6f4066c7e5d118dfcf5e4dcf37fcabcb4a8fb Mon Sep 17 00:00:00 2001 From: sinergia Date: Mon, 11 Jul 2022 14:46:21 -0500 Subject: [PATCH] add field 'equipment' which contains the relation with 'optical_equipment.equipment' --- sale.py | 78 +++++++++++++++++++++++++++++++++-------- view/sale_line_form.xml | 4 ++- 2 files changed, 66 insertions(+), 16 deletions(-) diff --git a/sale.py b/sale.py index 7c4bdba..8906260 100644 --- a/sale.py +++ b/sale.py @@ -1,6 +1,8 @@ from trytond.pool import Pool, PoolMeta from trytond.model import ModelView, ModelSQL, fields from trytond.pyson import Eval, Bool, If +from decimal import Decimal + from trytond.transaction import Transaction from trytond.exceptions import UserError @@ -47,43 +49,89 @@ class CreateSubscription(Wizard): @property def _subscription_start(self): - 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) - + #raise UserError(str(dir(self))) + sale = self.records[0] + #raise UserError(str(dir(self.records[0]))) + 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) + def do_create_subscription(self, action): pool = Pool() Subscription = pool.get('sale.subscription') + #SubscriptionLine = pool.get('sale.subscription.line') + raise UserError(str(dir(Subscription.lines))) + a = self._subscription_start + 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'], + ) + subscription.save() - #subscription = subscription() - self._subscription_start + #raise UserError(str(dir(subscription))) + class SaleLine(metaclass=PoolMeta): 'SaleLine' __name__ = 'sale.line' - address_equipment = fields.Many2One('party.address', "Direccion") product_equipment = fields.Boolean("Product Equipment") + equipment = fields.Many2One('optical_equipment.equipment', "Equipment", + domain=[('state', '=', 'registred')], + states={'invisible': If(~Eval('product_equipment'), True)}) + address_equipment = fields.Many2One('party.address', "Direccion") unit_digits = fields.Function(fields.Integer('Unit Digits'), 'on_change_with_unit_digits') - + def on_change_with_unit_digits(self, name=None): if self.unit: return self.unit.digits return 2 - + + @fields.depends('equipment', methods=['on_change_product']) + def on_change_equipment(self): + if self.equipment: + self.product = self.equipment.product.id + self.on_change_product() + else: + self.product = None + self.unit= None + self.quantity = None + self.unit_price = None + self.amount = None + self.on_change_product() + + @fields.depends('product_equipment', methods=['on_change_equipment']) + def on_change_product_equipment(self): + if self.product_equipment == False: + self.equipment = None + #self.on_change_equipment() + + + @fields.depends('product', 'unit', 'quantity', 'sale', - '_parent_sale.party',methods=['_get_tax_rule_pattern', + '_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') + Product = Pool().get('product.product') if not self.product: self.product_equipment = False + self.unit = None return party = None diff --git a/view/sale_line_form.xml b/view/sale_line_form.xml index 4af72d0..9396360 100644 --- a/view/sale_line_form.xml +++ b/view/sale_line_form.xml @@ -9,8 +9,10 @@ + expr="/form/notebook/page[@id='general']/label[@name='product']" position="before">