#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.pyson import Eval, If, Bool from trytond.exceptions import UserError from trytond.i18n import gettext from .exceptions import ( InvalidNumberPurchases) class Purchase(metaclass=PoolMeta): __name__ = 'purchase.purchase' equipment_available = fields.Boolean("Equipments Availables", readonly=True) @classmethod def __setup__(cls): super(Purchase, cls).__setup__() cls._buttons.update({ 'create_equipments': { 'invisible': If(Bool(Eval('equipment_available')), True)}, }) @classmethod @ModelView.button def create_equipments(cls, purchases): if len(purchases) == 1: pool = Pool() Equipment = pool.get('optical_equipment.equipment') Line = pool.get('purchase.line') lines = [] purchase = purchases[0] for line in purchase.lines: if line.product.equipment: equipment = Equipment( company=line.company, equipment_type=line.product.equipment_type, party_address=line.address_equipment, product=line.product, risk=line.product.risk, use=line.product.use, biomedical_class=line.product.biomedical_class, calibration=line.product.calibration, refurbish=line.refurbish, serial=line.serial_equipment, software_version=line.product.software_version) equipment.save() else: continue purchase.equipment_available = True cls.save(purchases) #raise UserError(str(purchase.equipment_available)) else: raise InvalidNumberPurchases( gettext('purchase.msg_invalid_number_purchases')) """ @classmethod @ModelView.button def process(cls, purchases): pool = Pool() Equipment = pool.get('optical_equipment.equipment') #raise UserError(str(type(Equipment))) Line = pool.get('purchase.line') lines = [] process, done = [], [] cls.lock(purchases) for purchase in purchases: if purchase.state not in {'confirmed', 'processing', 'done'}: continue purchase.create_invoice() purchase.set_invoice_state() purchase.create_move('in') return_moves = purchase.create_move('return') if return_moves: purchase.create_return_shipment(return_moves) purchase.set_shipment_state() #raise UserError(str(dir(purchase))) #equipment = Equipment() for line in purchase.lines: #raise UserError(str(dir(line))) equipment = Equipment( company=line.company, equipment_type=line.product.equipment_type, party_address=line.address_equipment, product=line.product, risk=line.product.risk, use=line.product.use, biomedical_class=line.product.biomedical_class, calibration=line.product.calibration, refurbish=line.refurbish, serial=line.serial_equipment, software_version=line.product.software_version, ) equipment.save() #raise UserError(str([equipment.serial, equipment.software_version])) line.set_actual_quantity() lines.append(line) if purchase.is_done(): if purchase.state != 'done': if purchase.state == 'confirmed': process.append(purchase) done.append(purchase) elif purchase.state != 'processing': process.append(purchase) Line.save(lines) if process: cls.proceed(process) if done: cls.do(done) """ class Line(metaclass=PoolMeta): __name__ = 'purchase.line' address_equipment = fields.Many2One('party.address', "Direccion") serial_equipment = fields.Char("Serial", size=None, required=True) refurbish = fields.Boolean("Refurbish")