2008-02-11 22:05:04 +01:00
|
|
|
from trytond.osv import fields, OSV
|
2008-02-26 12:41:13 +01:00
|
|
|
STATES = {
|
|
|
|
|
'readonly': "active == False",
|
|
|
|
|
}
|
2008-02-11 22:05:04 +01:00
|
|
|
|
|
|
|
|
|
2008-02-15 18:46:25 +01:00
|
|
|
class PartnerType(OSV):
|
|
|
|
|
"Corporation Type"
|
|
|
|
|
|
|
|
|
|
_name = 'partner.partner.type'
|
|
|
|
|
_description = __doc__
|
|
|
|
|
_order= 'name'
|
2008-02-26 12:41:13 +01:00
|
|
|
name = fields.Char('Name', required=True, size=64)
|
2008-02-15 18:46:25 +01:00
|
|
|
|
|
|
|
|
PartnerType()
|
|
|
|
|
|
|
|
|
|
|
2008-02-11 22:05:04 +01:00
|
|
|
class Partner(OSV):
|
|
|
|
|
"Partner"
|
|
|
|
|
_description = __doc__
|
|
|
|
|
_name = "partner.partner"
|
|
|
|
|
_order = "name"
|
2008-03-04 15:43:44 +01:00
|
|
|
|
2008-02-26 12:41:13 +01:00
|
|
|
name = fields.Char('Name', size=128, required=True, select=True,
|
|
|
|
|
states=STATES)
|
|
|
|
|
type = fields.Many2One("partner.partner.type", "Type",
|
|
|
|
|
states=STATES)
|
|
|
|
|
lang = fields.Many2One("ir.lang", 'Language',
|
|
|
|
|
states=STATES)
|
|
|
|
|
vat = fields.Char('VAT',size=32 ,help="Value Added Tax number",
|
|
|
|
|
states=STATES)
|
|
|
|
|
website = fields.Char('Website',size=64,
|
|
|
|
|
states=STATES)
|
|
|
|
|
addresses = fields.One2Many('partner.address', 'partner',
|
|
|
|
|
'Addresses',states=STATES)
|
|
|
|
|
categories = fields.Many2Many(
|
|
|
|
|
'partner.category', 'partner_category_rel',
|
|
|
|
|
'partner', 'category', 'Categories',
|
|
|
|
|
states=STATES)
|
|
|
|
|
active = fields.Boolean('Active')
|
2008-03-04 11:50:22 +01:00
|
|
|
|
|
|
|
|
def __init__(self):
|
|
|
|
|
super(Partner, self).__init__()
|
|
|
|
|
self._sql_constraints = [
|
|
|
|
|
('name_uniq', 'unique (name)',
|
|
|
|
|
'The name of the partner must be unique!')
|
|
|
|
|
]
|
2008-02-17 17:30:02 +01:00
|
|
|
|
2008-02-26 16:23:30 +01:00
|
|
|
def default_active(self, cursor, user, context=None):
|
|
|
|
|
return 1
|
|
|
|
|
|
2008-03-06 01:07:08 +01:00
|
|
|
def address_get(self, cursor, user, partner_id, type=None):
|
2008-03-05 20:40:29 +01:00
|
|
|
"""
|
2008-03-06 01:07:08 +01:00
|
|
|
Try to find an address for the given type, if no type match
|
|
|
|
|
the first address is return.
|
2008-03-05 20:40:29 +01:00
|
|
|
"""
|
2008-03-06 01:07:08 +01:00
|
|
|
address_obj = self.pool.get("partner.address")
|
|
|
|
|
address_ids = address_obj.search(
|
2008-03-06 14:08:20 +01:00
|
|
|
cursor, user, [("partner","=",partner_id),("active","=",True)],
|
2008-03-06 17:58:28 +01:00
|
|
|
order="sequence, id")
|
2008-03-06 01:07:08 +01:00
|
|
|
if not address_ids:
|
|
|
|
|
return None
|
|
|
|
|
default_address = address_ids[0]
|
|
|
|
|
if not type:
|
|
|
|
|
return default_address
|
|
|
|
|
for address in address_obj.browse(cursor, user, address_ids):
|
|
|
|
|
if address[type]:
|
|
|
|
|
return address.id
|
|
|
|
|
return default_address
|
2008-03-04 15:43:44 +01:00
|
|
|
|
2008-02-11 22:05:04 +01:00
|
|
|
Partner()
|