diff --git a/sale.py b/sale.py index f792a00..f9d8235 100644 --- a/sale.py +++ b/sale.py @@ -1,8 +1,9 @@ from trytond.pool import Pool, PoolMeta from trytond.model import ModelView, ModelSQL, fields +from trytond.modules.currency.fields import Monetary from trytond.pyson import Eval, Bool, If from decimal import Decimal - +from trytond.modules.product import price_digits from trytond.transaction import Transaction from trytond.exceptions import UserError @@ -16,12 +17,15 @@ class CreateSubscriptionStart(ModelView): 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_recurrence = fields.Many2One('sale.subscription.recurrence.rule.set', + "Invoice Recurrence",required=True) invoice_start_date = fields.Date("Invoice Start Date", help='Billing start date') service = fields.Many2One('sale.subscription.service', "Service") quantity = fields.Float("Quantity", digits='unit') + unit_price = Monetary("Unit Price", currency='currency', + digits=price_digits, + ) @classmethod def default_start_date(cls): @@ -47,28 +51,45 @@ 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): - #raise UserError(str(dir(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, + 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) + 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))) + #raise UserError(str(dir(self))) a = self._subscription_start + #self.get_subscription_lines() + #raise UserError(str(dir(Subscription))) subscription = Subscription( start_date=a['start_date'], end_date=a['end_date'], @@ -80,6 +101,7 @@ class CreateSubscription(Wizard): invoice_address=a['invoice_address'], payment_term=a['payment_term'], ) + subscription.lines.append(get_subscription_lines()) subscription.save() #raise UserError(str(dir(subscription))) @@ -96,8 +118,7 @@ class SaleLine(metaclass=PoolMeta): 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 diff --git a/view/create_subscription_form.xml b/view/create_subscription_form.xml index 55922b5..c407ca4 100644 --- a/view/create_subscription_form.xml +++ b/view/create_subscription_form.xml @@ -21,5 +21,7 @@ this repository contains the full copyright notices and license terms. -->