47 lines
1.4 KiB
Python
47 lines
1.4 KiB
Python
from trytond.model import Model, ModelSQL, ModelView, fields
|
|
from trytond.pyson import Eval
|
|
|
|
|
|
class Device(Model):
|
|
'Devices'
|
|
__name__ = 'sale_device'
|
|
|
|
name = fields.Char("Name")
|
|
type_ = fields.Selection([
|
|
('usb', "USB"),
|
|
('network', "Network")], "Type")
|
|
ip_address = fields.Char(
|
|
'IP Address or Network',
|
|
states={'required': Eval('type_') == 'network',
|
|
'invisible': Eval('type_') == 'usb'},
|
|
help='IPv4 or IPv6 IP address or network. \
|
|
Valid values include: 192.168.0.26 or 192.168.0.0/24')
|
|
idVendor = fields.Char('idVendor', states={
|
|
'required': Eval('type_') == 'usb',
|
|
'invisible': Eval('type_') != 'usb',
|
|
})
|
|
idProduct = fields.Char('idProduct', states={
|
|
'required': Eval('type_') == 'usb',
|
|
'invisible': Eval('type_') != 'usb',
|
|
})
|
|
|
|
@classmethod
|
|
def default_type_(cls):
|
|
return 'network'
|
|
|
|
|
|
class Printer(Device, ModelSQL, ModelView):
|
|
'Printer'
|
|
__name__ = 'sale.printer'
|
|
|
|
zone = fields.Selection([('bar', "Bar"),
|
|
('kitchen', "Kitchen"),
|
|
('reception', "Reception")], "Zone")
|
|
shop = fields.Many2One('sale.shop', "Shop")
|
|
api = fields.Many2One('sale.printer_api', "API")
|
|
|
|
|
|
class Api(Device, ModelSQL, ModelView):
|
|
'Api printer'
|
|
__name__ = 'sale.printer_api'
|