add lines to subcription

This commit is contained in:
sinergia 2022-07-12 11:54:19 -05:00
parent 76513e61c1
commit 3d14ee5dc0
2 changed files with 33 additions and 10 deletions

39
sale.py
View File

@ -1,8 +1,9 @@
from trytond.pool import Pool, PoolMeta from trytond.pool import Pool, PoolMeta
from trytond.model import ModelView, ModelSQL, fields from trytond.model import ModelView, ModelSQL, fields
from trytond.modules.currency.fields import Monetary
from trytond.pyson import Eval, Bool, If from trytond.pyson import Eval, Bool, If
from decimal import Decimal from decimal import Decimal
from trytond.modules.product import price_digits
from trytond.transaction import Transaction from trytond.transaction import Transaction
from trytond.exceptions import UserError from trytond.exceptions import UserError
@ -16,12 +17,15 @@ class CreateSubscriptionStart(ModelView):
start_date = fields.Date("Start Date", required=True) start_date = fields.Date("Start Date", required=True)
end_date = fields.Date("End Date", required=True) end_date = fields.Date("End Date", required=True)
invoice_recurrence = fields.Many2One('sale.subscription.recurrence.rule.set', "Invoice Recurrence", invoice_recurrence = fields.Many2One('sale.subscription.recurrence.rule.set',
required=True) "Invoice Recurrence",required=True)
invoice_start_date = fields.Date("Invoice Start Date", invoice_start_date = fields.Date("Invoice Start Date",
help='Billing start date') help='Billing start date')
service = fields.Many2One('sale.subscription.service', "Service") service = fields.Many2One('sale.subscription.service', "Service")
quantity = fields.Float("Quantity", digits='unit') quantity = fields.Float("Quantity", digits='unit')
unit_price = Monetary("Unit Price", currency='currency',
digits=price_digits,
)
@classmethod @classmethod
def default_start_date(cls): def default_start_date(cls):
@ -47,28 +51,45 @@ class CreateSubscription(Wizard):
]) ])
create_subscription = StateAction('sale_subscription.act_subscription_form') 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 @property
def _subscription_start(self): def _subscription_start(self):
#raise UserError(str(dir(self)))
sale = self.records[0] sale = self.records[0]
#raise UserError(str(dir(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, return dict(start_date = self.start.start_date,
end_date = self.start.end_date, end_date = self.start.end_date,
invoice_recurrence = self.start.invoice_recurrence, 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, quantity = self.start.quantity,
party=sale.party.id, party=sale.party.id,
contact=sale.contact.id if sale.contact else None, contact=sale.contact.id if sale.contact else None,
invoice_party=sale.invoice_party.id if sale.invoice_party else None, invoice_party=sale.invoice_party.id if sale.invoice_party else None,
invoice_address=sale.invoice_address.id, 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): def do_create_subscription(self, action):
pool = Pool() pool = Pool()
Subscription = pool.get('sale.subscription') Subscription = pool.get('sale.subscription')
#SubscriptionLine = pool.get('sale.subscription.line') #raise UserError(str(dir(self)))
raise UserError(str(dir(Subscription.lines)))
a = self._subscription_start a = self._subscription_start
#self.get_subscription_lines()
#raise UserError(str(dir(Subscription)))
subscription = Subscription( subscription = Subscription(
start_date=a['start_date'], start_date=a['start_date'],
end_date=a['end_date'], end_date=a['end_date'],
@ -80,6 +101,7 @@ class CreateSubscription(Wizard):
invoice_address=a['invoice_address'], invoice_address=a['invoice_address'],
payment_term=a['payment_term'], payment_term=a['payment_term'],
) )
subscription.lines.append(get_subscription_lines())
subscription.save() subscription.save()
#raise UserError(str(dir(subscription))) #raise UserError(str(dir(subscription)))
@ -97,7 +119,6 @@ class SaleLine(metaclass=PoolMeta):
unit_digits = fields.Function(fields.Integer('Unit Digits'), unit_digits = fields.Function(fields.Integer('Unit Digits'),
'on_change_with_unit_digits') 'on_change_with_unit_digits')
def on_change_with_unit_digits(self, name=None): def on_change_with_unit_digits(self, name=None):
if self.unit: if self.unit:
return self.unit.digits return self.unit.digits

View File

@ -21,5 +21,7 @@ this repository contains the full copyright notices and license terms. -->
<field name="service"/> <field name="service"/>
<label name="quantity"/> <label name="quantity"/>
<field name="quantity"/> <field name="quantity"/>
<label name="unit_price"/>
<field name="unit_price"/>
</group> </group>
</form> </form>