106 lines
3.4 KiB
Python
106 lines
3.4 KiB
Python
# This file is part sale_shop module for Tryton.
|
|
# The COPYRIGHT file at the top level of this repository contains
|
|
# the full copyright notices and license terms.
|
|
from trytond.model import ModelView, ModelSQL, fields
|
|
from trytond.pool import Pool
|
|
|
|
__all__ = ['SaleShopTable', 'Reservation']
|
|
|
|
TYPE_VEHICLE = [
|
|
('', ''),
|
|
('motorcycle', 'Motorcycle'),
|
|
('bicycle', 'Bicycle'),
|
|
('Car', 'Car'),
|
|
]
|
|
|
|
|
|
class SaleShopTable(ModelSQL, ModelView):
|
|
'Sale Shop Table'
|
|
__name__ = 'sale.shop.table'
|
|
shop = fields.Many2One('sale.shop', 'Shop', required=True)
|
|
name = fields.Char('Table Name', required=True, select=True)
|
|
active = fields.Boolean('Active', select=True)
|
|
capacity = fields.Integer('Capacity', required=True, select=True)
|
|
state = fields.Selection([
|
|
('available', 'Available'),
|
|
('occupied', 'Occupied'),
|
|
('reserved', 'Reserved')
|
|
], 'State', states={'readonly': True}
|
|
)
|
|
|
|
@staticmethod
|
|
def default_active():
|
|
return True
|
|
|
|
@staticmethod
|
|
def default_state():
|
|
return 'available'
|
|
|
|
|
|
class Reservation(ModelSQL, ModelView):
|
|
'Sale Reservation'
|
|
__name__ = 'sale.reservation'
|
|
|
|
|
|
class PartyConsumer(ModelSQL, ModelView):
|
|
'Party Consumer'
|
|
__name__ = 'party.consumer'
|
|
_rec_name = 'name'
|
|
name = fields.Char('Name', required=True)
|
|
phone = fields.Char('Phone', required=True)
|
|
address = fields.Char('Address', required=True)
|
|
id_number = fields.Char('Id Number')
|
|
birthday = fields.Date('Birthday')
|
|
party = fields.Function(fields.Many2One('party.party', 'Party'), 'get_party')
|
|
|
|
def get_party(self, name):
|
|
Party = Pool().get('party.party')
|
|
parties = Party.search([('id_number', '=', self.id_number)])
|
|
if not parties:
|
|
return
|
|
return parties[0].id
|
|
|
|
@classmethod
|
|
def write(cls, records, values):
|
|
for rec in records:
|
|
if rec.id_number and not rec.party:
|
|
Party = Pool().get('party.party')
|
|
Party.create([{
|
|
'name': rec.name,
|
|
'type_document': '13',
|
|
'id_number': rec.id_number,
|
|
'addresses': [('create', [{
|
|
'street': rec.address,
|
|
}])],
|
|
'contact_mechanisms': [
|
|
('create', [
|
|
{'type': 'phone', 'value': rec.phone},
|
|
# {'type': 'email', 'value': email},
|
|
])
|
|
]
|
|
}])
|
|
super(PartyConsumer, cls).write(records, values)
|
|
|
|
@classmethod
|
|
def create(cls, vals):
|
|
records = super(PartyConsumer, cls).create(vals)
|
|
print(records)
|
|
for rec in records:
|
|
if rec.id_number and not rec.party:
|
|
Party = Pool().get('party.party')
|
|
Party.create([{
|
|
'name': rec.name,
|
|
'type_document': '13',
|
|
'id_number': rec.id_number,
|
|
'addresses': [('create', [{
|
|
'street': rec.address,
|
|
}])],
|
|
'contact_mechanisms': [
|
|
('create', [
|
|
{'type': 'phone', 'value': rec.phone},
|
|
# {'type': 'email', 'value': email},
|
|
])
|
|
]
|
|
}])
|
|
return records
|