diff --git a/party.py b/party.py index e0afa1f..360d82f 100644 --- a/party.py +++ b/party.py @@ -2,7 +2,8 @@ from trytond.pool import PoolMeta from trytond.model import ModelSQL, ModelView, fields from . import equipment -_CLIENT_TYPE = [('ips', 'IPS'), +_CLIENT_TYPE = [('otro', 'Otro'), + ('ips', 'IPS'), ('optica', 'Optica')] class Party(metaclass=PoolMeta): diff --git a/purchase.py b/purchase.py index d693086..eb7e142 100644 --- a/purchase.py +++ b/purchase.py @@ -1,7 +1,8 @@ #This file is part of Tryton. The COPYRIGHT file at the top level of #txhis repository contains the full copyright notices and license terms from trytond.pool import Pool, PoolMeta -from trytond.model import ModelView, ModelSQL, fields +from trytond.model import ( + ModelView, ModelSQL, Workflow, fields) from trytond.pyson import Eval, If, Bool from trytond.exceptions import UserError from trytond.i18n import gettext @@ -106,7 +107,8 @@ class Line(metaclass=PoolMeta): self.type = 'line' self.amount = self.on_change_with_amount() - self.product_equipment = True + if self.product.equipment: + self.product_equipment = True def default_address_equipment(): pool = Pool() diff --git a/subscription.py b/subscription.py index db49e90..9ee107a 100644 --- a/subscription.py +++ b/subscription.py @@ -1,10 +1,45 @@ -from trytond.pool import PoolMeta -from trytond.model import ModelSQL, ModelView, fields +from trytond.pool import Pool, PoolMeta +from trytond.model import ( + ModelSQL, ModelView, Workflow, fields) +from trytond.modules.company.model import set_employee +from trytond.exceptions import UserError class Subscription(metaclass=PoolMeta): __name__ = 'sale.subscription' - equipments = fields.Many2Many('sale.subscription-optical_equipment.equipment', 'subscription', 'equipment', "Equipments") + equipments = fields.Many2Many('sale.subscription-optical_equipment.equipment', 'subscription', + 'equipment', "Equipments") + + @classmethod + @ModelView.button + @Workflow.transition('running') + @set_employee('run_by') + def run(cls, subscriptions): + pool = Pool() + Equipment = pool.get('optical_equipment.equipment') + Line = pool.get('sale.subscription.line') + lines = [] + subscription = subscriptions[0] + + for unit in subscription.equipments: + unit.propietary=subscription.party, + unit.propietary_address=subscription.invoice_address, + unit.mark_category=unit.mark_category, + unit.model_category=unit.model_category + unit.save() + + for subscription in subscriptions: + if not subscription.next_invoice_date: + subscription.next_invoice_date = ( + subscription.compute_next_invoice_date()) + for line in subscription.lines: + if (line.next_consumption_date is None + and not line.consumed_until): + line.next_consumption_date = ( + line.compute_next_consumption_date()) + lines.extend(subscription.lines) + Line.save(lines) + cls.save(subscriptions) class SubscriptionEquipment(ModelSQL): 'Optical Equipment - Subscription'