83 lines
3.0 KiB
Python
83 lines
3.0 KiB
Python
#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)
|
|
|
|
from trytond.transaction import Transaction
|
|
|
|
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')
|
|
purchase = purchases[0]
|
|
|
|
for line in purchase.lines:
|
|
if line.product.equipment:
|
|
equipment = Equipment(
|
|
company=line.company,
|
|
equipment_type=line.product.equipment_type,
|
|
propietary_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'))
|
|
|
|
|
|
class Line(metaclass=PoolMeta):
|
|
__name__ = 'purchase.line'
|
|
|
|
address_equipment = fields.Many2One('party.address', "Direccion", required=True)
|
|
serial_equipment = fields.Char("Serial", size=None, required=True)
|
|
refurbish = fields.Boolean("Refurbish")
|
|
|
|
def default_address_equipment():
|
|
pool = Pool()
|
|
Company = pool.get('company.company')
|
|
company = Transaction().context.get('company')
|
|
if company:
|
|
company = Company(company)
|
|
return company.party.addresses[0].id
|
|
|
|
"""
|
|
@classmethod
|
|
def view_attributes(cls):
|
|
return super(Line, cls).view_attributes() + [
|
|
('//page[@id="equipment"]', 'states', {
|
|
'invisible': Eval('product.equipment'),
|
|
})]
|
|
"""
|
|
|