Partner module: initial commit

This commit is contained in:
Bertrand Chenal
2008-02-11 22:05:04 +01:00
commit 7c535c3cf6
4 changed files with 578 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
import partner
+11
View File
@@ -0,0 +1,11 @@
{
"name" : "Partners",
"version" : "1.0",
"author" : "B2CK",
"category" : "Generic Modules",
"description": "Define partners, addresses and co.",
"depends" : ["ir","res"],
"xml" : ["partner.xml"],
"installable": True,
}
+215
View File
@@ -0,0 +1,215 @@
from trytond.osv import fields, OSV
class CorporationType(OSV):
"Corporation Type"
_name = 'partner.corporation_type'
_description = __doc__
_order= 'name'
_columns = {
'name': fields.char('Name', required=True, size=64),
}
CorporationType()
class Category(OSV):
"Partner Category"
_name = "partner.category"
_description = __doc__
_order = 'parent,name'
_parent_name = 'parent'
def name_get(self, cursor, user, ids, context=None):
if not len(ids):
return []
categories = self.browse(cursor, user, ids, context=context)
res = []
for category in categories:
if category.parent:
name = category.parent.name+' / '+ category.name
else:
name = category.name
res.append((category.id, name))
return res
def _name_get_fnc(self, cursor, user, obj_id, name, value, arg,
context=None):
res = self.name_get(cursor, user, ids, context)
return dict(res)
def check_recursion(self, cursor, user, ids, parent=None):
return super(Category, self).check_recursion(cursor, user,
ids,parent="parent")
_columns = {
'name': fields.char('Category Name', required=True, size=64),
'parent': fields.many2one('partner.category', 'Parent Category',
select=True),
'complete_name': fields.function(_name_get_fnc, method=True,
type="char", string='Name'),
'childs': fields.one2many('partner.category', 'parent',
'Childs Category'),
'active' : fields.boolean('Active'),
}
_defaults = {
'active' : lambda *a: 1,
}
_constraints = [
(check_recursion,
'Error ! You can not create recursive categories.', ['parent'])
]
Category()
class Partner(OSV):
"Partner"
_description = __doc__
_name = "partner.partner"
_order = "name"
_columns = {
'name': fields.char('Name', size=128, required=True, select=True),
'corp_type': fields.many2one("partner.corporation_type", "Corp. Type"),
'lang': fields.many2one("ir.lang", 'Language'),
'vat': fields.char('VAT',size=32 ,help="Value Added Tax number"),
'website': fields.char('Website',size=64),
'addresses': fields.one2many('partner.address', 'partner',
'Addresses'),
'categories': fields.many2many(
'partner.category', 'partner_category_rel',
'partner', 'category', 'Categories'),
'active': fields.boolean('Active'),
}
_defaults = {
'active': lambda *a: True,
}
_sql_constraints = [
('name_uniq', 'unique (name)',
'The name of the partner must be unique !')
]
Partner()
class Country(OSV):
'Partner Country'
_name = 'partner.country'
_description = __doc__
_order='code'
_columns = {
'name': fields.char('Country Name', size=64,
help='The full name of the country.', required=True),
'code': fields.char('Country Code', size=2,
help='The ISO country code in two chars.\n'
'You can use this field for quick search.', required=True),
}
_sql_constraints = [
('name_uniq', 'unique (name)',
'The name of the country must be unique !'),
('code_uniq', 'unique (code)',
'The code of the country must be unique !')
]
def name_search(self, cr, user, name='', args=None, operator='ilike',
context=None, limit=80):
if not args:
args=[]
if not context:
context={}
ids = False
if len(name) <= 2:
ids = self.search(cr, user, [('code', '=', name)] + args,
limit=limit, context=context)
if not ids:
ids = self.search(cr, user, [('name', operator, name)] + args,
limit=limit, context=context)
return self.name_get(cr, user, ids, context)
def create(self, cursor, user, vals, context=None):
if 'code' in vals:
vals['code'] = vals['code'].upper()
return super(Country, self).create(cursor, user, vals, context=context)
def write(self, cursor, user, ids, vals, context=None):
if 'code' in vals:
vals['code'] = vals['code'].upper()
return super(Country, self).write(cursor, user, ids, vals,
context=context)
Country()
class State(OSV):
"Country state"
_name = 'partner.state'
_description = __doc__
_order = 'code'
_columns = {
'country': fields.many2one('partner.country', 'Country',
required=True),
'name': fields.char('State Name', size=64, required=True),
'code': fields.char('State Code', size=3, required=True),
}
def create(self, cursor, user, vals, context=None):
if 'code' in vals:
vals['code'] = vals['code'].upper()
return super(CountryState, self).create(cursor, user, vals,
context=context)
def write(self, cursor, user, ids, vals, context=None):
if 'code' in vals:
vals['code'] = vals['code'].upper()
return super(CountryState, self).write(cursor, user, ids, vals,
context=context)
State()
class Address(OSV):
"Partner Address"
_name = 'partner.address'
_description = __doc__
_order = 'partner'
_columns = {
'partner': fields.many2one('partner.partner', 'Partner', required=True,
ondelete='cascade', select=True),
'type': fields.selection( [ ('default','Default'),('invoice','Invoice'),
('delivery','Delivery'), ('contact','Contact'), ('other','Other') ],
'Address Type'),
'name': fields.char('Contact Name', size=64),
'street': fields.char('Street', size=128),
'streetbis': fields.char('Street (bis)', size=128),
'zip': fields.char('Zip', change_default=True, size=24),
'city': fields.char('City', size=128),
'state': fields.many2one("partner.state", 'State',
domain="[('country_id','=',country_id)]"),
'country': fields.many2one('partner.country', 'Country'),
'email': fields.char('E-Mail', size=64),
'phone': fields.char('Phone', size=64),
'fax': fields.char('Fax', size=64),
'mobile': fields.char('Mobile', size=64),
'active': fields.boolean('Active'),
}
_defaults = {
'active': lambda *a: 1,
}
Address()
+351
View File
@@ -0,0 +1,351 @@
<?xml version="1.0"?>
<tryton>
<data>
<menuitem name="Partners" sequence="0" icon="terp-partner"
id="menu_partner"/>
<!--Partner Address -->
<record model="ir.ui.view" id="view_partner_address_tree">
<field name="model">partner.address</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<![CDATA[
<tree string="Partner Addresses">
<field name="partner" />
<field name="name" />
<field name="type"/>
<field name="phone"/>
<field name="email"/>
</tree>
]]>
</field>
</record>
<record model="ir.ui.view" id="view_partner_address_form1">
<field name="model">partner.address</field>
<field name="type">form</field>
<field name="arch" type="xml">
<![CDATA[
<form string="Partner Addresses">
<label name="partner"/>
<field name="partner" select="1"/>
<newline/>
<label name="name"/>
<field name="name" select="1"/>
<label name="type"/>
<field name="type" select="2"/>
<label name="street"/>
<field name="street" select="2"/>
<label name="streetbis"/>
<field name="streetbis"/>
<newline/>
<label name="zip"/>
<field name="zip" select="2"/>
<label name="city"/>
<field name="city" select="2"/>
<newline/>
<label name="country"/>
<field name="country" select="1" completion="1"/>
<label name="state"/>
<field name="state" select="2"/>
<newline/>
<label name="phone"/>
<field name="phone" select="2"/>
<label name="fax"/>
<field name="fax"/>
<newline/>
<label name="mobile"/>
<field name="mobile" select="2"/>
<label name="email"/>
<field name="email" select="2"/>
</form>
]]>
</field>
</record>
<record model="ir.action.act_window" id="action_partner_address_list">
<field name="name">Partner Addresses</field>
<field name="type">ir.action.act_window</field>
<field name="res_model">partner.address</field>
<field name="view_type">form</field>
</record>
<record model="ir.action.act_window.view"
id="action_partner_address_list_view1">
<field name="sequence" eval="10"/>
<field name="view_id" ref="view_partner_address_tree"/>
<field name="act_window_id" ref="action_partner_address_list"/>
</record>
<record model="ir.action.act_window.view"
id="action_partner_address_list_view2">
<field name="sequence" eval="20"/>
<field name="view_id" ref="view_partner_address_form1"/>
<field name="act_window_id" ref="action_partner_address_list"/>
</record>
<menuitem name="Partner Address" parent_id="menu_partner"
sequence="2"
action="action_partner_address_list"
id="menu_partner_address_list"/>
<record model="ir.action.act_window" id="action_partner_address_form">
<field name="name">Partner Address</field>
<field name="type">ir.action.act_window</field>
<field name="res_model">partner.address</field>
<field name="view_type">form</field>
</record>
<record model="ir.action.act_window.view"
id="action_partner_address_form_view1">
<field name="sequence" eval="20"/>
<field name="view_id" ref="view_partner_address_tree"/>
<field name="act_window_id" ref="action_partner_address_form"/>
</record>
<record model="ir.action.act_window.view"
id="action_partner_address_form_view2">
<field name="sequence" eval="10"/>
<field name="view_id" ref="view_partner_address_form1"/>
<field name="act_window_id" ref="action_partner_address_form"/>
</record>
<menuitem name="New Address"
parent_id="menu_partner_address_list"
action="action_partner_address_form"
id="menu_partner_address_form"/>
<!--Partner-->
<record model="ir.ui.view" id="view_partner_tree">
<field name="model">partner.partner</field>
<field name="type">tree</field>
<field name="priority" eval="8"/>
<field name="arch" type="xml">
<![CDATA[
<tree string="Partners">
<field name="name" select="1"/>
<field name="corp_type" select="2"/>
<field name="lang" select="2"/>
<field name="website"/>
<field name="vat" select="1"/>
</tree>
]]>
</field>
</record>
<record model="ir.ui.view" id="view_partner_form">
<field name="model">partner.partner</field>
<field name="type">form</field>
<field name="arch" type="xml">
<![CDATA[
<form string="Partners">
<label name="name"/>
<field name="name"/>
<label name="lang"/>
<field name="lang"/>
<label name="active"/>
<field name="active"/>
<field name="addresses" mode="form,tree" colspan="4">
<form string="Partner addresses" col="6">
<label name="name"/>
<field name="name" />
<label name="type"/>
<field name="type" />
<newline/>
<label name="street"/>
<field name="street" />
<label name="streetbis"/>
<field name="streetbis"/>
<label name="zip"/>
<field name="zip" />
<label name="city"/>
<field name="city" />
<label name="country"/>
<field name="country" completion="1"/>
<label name="state"/>
<field name="state" />
<label name="phone"/>
<field name="phone"/>
<label name="fax"/>
<field name="fax"/>
<label name="mobile"/>
<field name="mobile"/>
<label name="email"/>
<field name="email" widget="email" />
</form>
<tree string="Partner Addresses">
<field name="name" />
<field name="zip"/>
<field name="city"/>
<field name="country"/>
</tree>
</field>
<separator string="Categories" colspan="4"/>
<label name="categories" />
<field name="categories" colspan="4" nolabel="1"/>
</form>
]]>
</field>
</record>
<record model="ir.action.act_window" id="action_partner_list">
<field name="name">Partners</field>
<field name="type">ir.action.act_window</field>
<field name="res_model">partner.partner</field>
<field name="view_type">form</field>
</record>
<record model="ir.action.act_window.view" id="action_partner_list_view1">
<field name="sequence" eval="10"/>
<field name="view_id" ref="view_partner_tree"/>
<field name="act_window_id" ref="action_partner_list"/>
</record>
<record model="ir.action.act_window.view" id="action_partner_list_view2">
<field name="sequence" eval="20"/>
<field name="view_id" ref="view_partner_form"/>
<field name="act_window_id" ref="action_partner_list"/>
</record>
<menuitem name="Partners" parent_id="menu_partner"
action="action_partner_list"
sequence="1"
id="menu_partner_list"/>
<record model="ir.action.act_window" id="action_partner_form">
<field name="name">Partners</field>
<field name="type">ir.action.act_window</field>
<field name="res_model">partner.partner</field>
<field name="view_type">form</field>
</record>
<record model="ir.action.act_window.view" id="action_partner_form_view1">
<field name="sequence" eval="20"/>
<field name="view_id" ref="view_partner_tree"/>
<field name="act_window_id" ref="action_partner_form"/>
</record>
<record model="ir.action.act_window.view" id="action_partner_form_view2">
<field name="sequence" eval="10"/>
<field name="view_id" ref="view_partner_form"/>
<field name="act_window_id" ref="action_partner_form"/>
</record>
<menuitem name="New Partner"
action="action_partner_form"
parent_id="menu_partner_list"
id="menu_partner_form"/>
<!--Categories-->
<record model="ir.ui.view" id="view_partner_category_form">
<field name="model">partner.category</field>
<field name="type">form</field>
<field name="arch" type="xml">
<![CDATA[
<form string="Partner categories">
<label name="name" />
<field name="name" select="1"/>
<label name="active" />
<field name="active" select="1" />
<label name="parent" />
<field name="parent"/>
</form>
]]>
</field>
</record>
<record model="ir.ui.view" id="view_partner_category_tree">
<field name="model">partner.category</field>
<field name="type">tree</field>
<field name="field_parent">childs</field>
<field name="arch" type="xml">
<![CDATA[
<tree string="Partner Categories">
<field name="name" select="1"/>
</tree>
]]>
</field>
</record>
<record model="ir.action.act_window" id="action_partner_by_category">
<field name="name">Partners</field>
<field name="res_model">partner.partner</field>
<field name="view_type">form</field>
<field name="domain">[('categories','child_of', [active_id])]</field>
</record>
<record model="ir.action.keyword" id="keyword_partner_by_category">
<field name="keyword" eval="'tree_open'"/>
<field name="model">partner.category,0</field>
<field name="action" ref="action_partner_by_category"/>
</record>
<record model="ir.action.act_window" id="action_partner_category">
<field name="name">Partner categories</field>
<field name="type">ir.action.act_window</field>
<field name="res_model">partner.category</field>
<field name="view_type">tree</field>
<field name="domain">[('parent','=',False)]</field>
</record>
<record model="ir.action.act_window.view"
id="action_partner_category_tree">
<field name="sequence" eval="10"/>
<field name="view_id" ref="view_partner_category_tree"/>
<field name="act_window_id" ref="action_partner_category"/>
</record>
<record model="ir.action.act_window.view"
id="action_partner_category_form">
<field name="sequence" eval="20"/>
<field name="view_id" ref="view_partner_category_form"/>
<field name="act_window_id" ref="action_partner_category"/>
</record>
<menuitem
name="Category Tree"
parent_id="menu_partner"
sequence="3"
action="action_partner_category"
id="menu_partner_category"/>
<record model="ir.action.act_window" id="action_partner_category_edit">
<field name="name">Partner categories</field>
<field name="type">ir.action.act_window</field>
<field name="res_model">partner.category</field>
<field name="view_type">form</field>
</record>
<record model="ir.action.act_window.view"
id="action_partner_category_tree_edit">
<field name="sequence" eval="10"/>
<field name="view_id" ref="view_partner_category_tree"/>
<field name="act_window_id" ref="action_partner_category_edit"/>
</record>
<record model="ir.action.act_window.view"
id="action_partner_category_form_edit">
<field name="sequence" eval="20"/>
<field name="view_id" ref="view_partner_category_form"/>
<field name="act_window_id" ref="action_partner_category_edit"/>
</record>
<menuitem name="Edit Categories" parent_id="menu_partner_category"
action="action_partner_category_edit"
id="menu_partner_category_form"/>
</data>
</tryton>