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

41
sale.py
View File

@ -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

View File

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