merge lp:openobject-server
bzr revid: jam@tinyerp.com-20120720050642-tuaus4j1aulys392 bzr revid: jam@tinyerp.com-20120724035413-1zqmdei6flb2ngi4 bzr revid: jam@tinyerp.com-20120730123417-4igxvrqdq35quusr
This commit is contained in:
commit
c25ddd2ba1
|
@ -96,6 +96,6 @@
|
|||
'installable': True,
|
||||
'auto_install': True,
|
||||
'certificate': '0076807797149',
|
||||
"css": [ 'static/src/css/modules.css' ],
|
||||
'css': ['static/src/css/modules.css'],
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -286,6 +286,7 @@ CREATE TABLE ir_module_module (
|
|||
write_date timestamp without time zone,
|
||||
write_uid integer references res_users on delete set null,
|
||||
website character varying(256),
|
||||
summary character varying(256),
|
||||
name character varying(128) NOT NULL,
|
||||
author character varying(128),
|
||||
url character varying(128),
|
||||
|
|
|
@ -1,10 +1,19 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<menuitem id="menu_reporting" name="Reporting" sequence="90" groups="base.group_user"/>
|
||||
|
||||
<!-- Top menu item -->
|
||||
<menuitem name="Reporting"
|
||||
id="menu_reporting"
|
||||
groups="base.group_user"
|
||||
sequence="170"/>
|
||||
<menuitem id="menu_reporting_dashboard" name="Dashboards" parent="menu_reporting" sequence="0"/>
|
||||
<menuitem id="menu_reporting_config" name="Configuration" parent="menu_reporting" sequence="100" groups="base.group_system"/>
|
||||
<menuitem id="menu_administration" name="Settings" sequence="100"/>
|
||||
|
||||
<!-- Top menu item -->
|
||||
<menuitem name="Settings"
|
||||
id="menu_administration"
|
||||
sequence="500"/>
|
||||
<menuitem id="menu_management" name="Modules" parent="menu_administration" sequence="0"/>
|
||||
<menuitem id="menu_config" name="Configuration" parent="menu_administration" sequence="1"/>
|
||||
<menuitem id="menu_administration_shortcut" parent="menu_administration" name="Custom Shortcuts" sequence="50"/>
|
||||
|
@ -12,11 +21,13 @@
|
|||
<menuitem id="menu_translation" name="Translations" parent="menu_administration" sequence="7"/>
|
||||
<menuitem id="menu_translation_app" name="Application Terms" parent="menu_translation" sequence="4" groups="base.group_no_one"/>
|
||||
<menuitem id="menu_translation_export" name="Import / Export" parent="menu_translation" sequence="3" groups="base.group_no_one"/>
|
||||
|
||||
<menuitem id="menu_custom" name="Technical" parent="menu_administration" sequence="110" groups="base.group_no_one"/>
|
||||
<menuitem id="next_id_2" name="User Interface" parent="menu_custom"/>
|
||||
<menuitem id="menu_email" name="Email" parent="menu_custom" sequence="1"/>
|
||||
<menuitem id="menu_security" name="Security" parent="menu_custom" sequence="25"/>
|
||||
<menuitem id="menu_ir_property" name="Parameters" parent="menu_custom" sequence="24"/>
|
||||
<menuitem id="next_id_4" name="Low Level Objects" parent="menu_custom" sequence="30"/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -8,14 +8,14 @@ msgstr ""
|
|||
"Project-Id-Version: openobject-server\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
|
||||
"PO-Revision-Date: 2012-07-08 22:23+0000\n"
|
||||
"PO-Revision-Date: 2012-07-28 00:51+0000\n"
|
||||
"Last-Translator: Akira Hiyama <Unknown>\n"
|
||||
"Language-Team: Japanese <ja@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-07-19 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15637)\n"
|
||||
"X-Launchpad-Export-Date: 2012-07-29 04:36+0000\n"
|
||||
"X-Generator: Launchpad (build 15694)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
@ -459,7 +459,7 @@ msgstr "ir.ui.view_sc"
|
|||
#: field:res.widget.user,widget_id:0
|
||||
#: field:res.widget.wizard,widgets_list:0
|
||||
msgid "Widget"
|
||||
msgstr "ウィジット"
|
||||
msgstr "ウィジェット"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.model.access:0
|
||||
|
@ -1002,7 +1002,7 @@ msgstr "オマーン"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_mrp
|
||||
msgid "MRP"
|
||||
msgstr "MRP(資材所要量計画)"
|
||||
msgstr "MRP"
|
||||
|
||||
#. module: base
|
||||
#: report:ir.module.reference.graph:0
|
||||
|
@ -2514,7 +2514,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.actions.act_window,name:base.action_res_widget_wizard
|
||||
msgid "Homepage Widgets Management"
|
||||
msgstr "ホームページウィジット管理"
|
||||
msgstr "ホームページウィジェット管理"
|
||||
|
||||
#. module: base
|
||||
#: field:res.company,rml_header1:0
|
||||
|
@ -2782,7 +2782,7 @@ msgstr "インポート / エクスポート"
|
|||
#. module: base
|
||||
#: model:ir.actions.todo.category,name:base.category_tools_customization_config
|
||||
msgid "Tools / Customization"
|
||||
msgstr "ツール / カスタマイゼーション"
|
||||
msgstr "ツール / カスタム化"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.model.data,res_id:0
|
||||
|
@ -2895,7 +2895,7 @@ msgstr "マネジャ"
|
|||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_custom
|
||||
msgid "Customization"
|
||||
msgstr "カスタマイゼーション"
|
||||
msgstr "カスタム化"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.py
|
||||
|
@ -6423,7 +6423,7 @@ msgstr "多対1項目の属性削除"
|
|||
#. module: base
|
||||
#: model:ir.module.category,name:base.module_category_accounting_and_finance
|
||||
msgid "Accounting & Finance"
|
||||
msgstr "会計と金融"
|
||||
msgstr "会計と財務"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.server,write_id:0
|
||||
|
@ -7703,7 +7703,7 @@ msgstr "販売員"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_account_accountant
|
||||
msgid "Accounting and Finance"
|
||||
msgstr "会計と金融"
|
||||
msgstr "会計と財務"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/module/module.py:429
|
||||
|
@ -7797,7 +7797,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: view:res.widget.wizard:0
|
||||
msgid "Widget Wizard"
|
||||
msgstr "ウィジットウィザード"
|
||||
msgstr "ウィジェットウィザード"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_hn
|
||||
|
@ -11238,7 +11238,7 @@ msgid ""
|
|||
"(default: 465)"
|
||||
msgstr ""
|
||||
"接続の暗号化方式を選択:\n"
|
||||
"・ なし: SMTPセッションはクリアテキストで行われる。\n"
|
||||
"・ なし: SMTPセッションはクリアテキストで行われます。\n"
|
||||
"・ TLS(STARTTLS):TLS暗号化はSMTPセッションの開始において要求されます(推奨)。\n"
|
||||
"・ SSL/TLS:SMTPセッションは専用のポート(デフォルト:465)によってSSL/TLSで暗号化されます。"
|
||||
|
||||
|
@ -12068,7 +12068,7 @@ msgstr ""
|
|||
"このモジュールはパートナのアドレスの中にGoogleマップ項目を追加します。\n"
|
||||
"====================================================\n"
|
||||
"\n"
|
||||
"これを使うと、URLウィジットからGoogleマップを直接開くことができます。"
|
||||
"これを使うと、URLウィジェットからGoogleマップを直接開くことができます。"
|
||||
|
||||
#. module: base
|
||||
#: field:workflow.activity,action:0
|
||||
|
@ -12413,7 +12413,7 @@ msgstr "あなたが作成 / 書き込みたいオブジェクト。もし、そ
|
|||
#: selection:ir.module.module,state:0
|
||||
#: selection:ir.module.module.dependency,state:0
|
||||
msgid "Not Installed"
|
||||
msgstr "インストールされていません。"
|
||||
msgstr "未インストール"
|
||||
|
||||
#. module: base
|
||||
#: view:workflow.activity:0
|
||||
|
@ -14297,7 +14297,7 @@ msgstr "連絡先を隠すためにはアクティブな項目のチェックを
|
|||
#. module: base
|
||||
#: model:ir.model,name:base.model_res_widget_wizard
|
||||
msgid "Add a widget for User"
|
||||
msgstr "ユーザのウィジットを追加"
|
||||
msgstr "ユーザのウィジェットを追加"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.dk
|
||||
|
@ -15305,7 +15305,7 @@ msgstr "イラン"
|
|||
#: model:ir.actions.act_window,name:base.res_widget_user_act_window
|
||||
#: model:ir.ui.menu,name:base.menu_res_widget_user_act_window
|
||||
msgid "Widgets per User"
|
||||
msgstr "ユーザ当りのウィジット"
|
||||
msgstr "ユーザ当りのウィジェット"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,name:base.action_publisher_warranty_contract_form
|
||||
|
@ -15579,7 +15579,7 @@ msgstr "情報"
|
|||
#. module: base
|
||||
#: view:res.widget.user:0
|
||||
msgid "User Widgets"
|
||||
msgstr "ユーザウィジット"
|
||||
msgstr "ユーザウィジェット"
|
||||
|
||||
#. module: base
|
||||
#: view:base.module.update:0
|
||||
|
@ -17621,7 +17621,7 @@ msgstr "機能"
|
|||
#. module: base
|
||||
#: view:res.widget:0
|
||||
msgid "Search Widget"
|
||||
msgstr "ウィジットの検索"
|
||||
msgstr "ウィジェットの検索"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.category,description:base.module_category_customer_relationship_management
|
||||
|
@ -17742,7 +17742,7 @@ msgstr "受発注のドキュメントの内容に応じて、自動的に正し
|
|||
#: model:ir.actions.act_window,name:base.res_widget_act_window
|
||||
#: model:ir.ui.menu,name:base.menu_res_widget_act_window
|
||||
msgid "Homepage Widgets"
|
||||
msgstr "ホームページウィジット"
|
||||
msgstr "ホームページウィジェット"
|
||||
|
||||
#. module: base
|
||||
#: help:res.company,rml_footer2:0
|
||||
|
@ -17815,23 +17815,23 @@ msgid ""
|
|||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"このモジュールは何の開発もなしで新しいモジュールの作成ができます。\n"
|
||||
"このモジュールは何の開発もなしに新しいモジュールの作成ができます。\n"
|
||||
"======================================================================\n"
|
||||
"\n"
|
||||
"これは記録セッションの中でオブジェクトの全ての操作を記録します。そして、\n"
|
||||
".ZIPモジュールを生成します。それによって、OpenERPクライアントから直接\n"
|
||||
"独自モジュールを作成することができます。\n"
|
||||
"\n"
|
||||
"このバージョンは作成と既存のレコードの更新にために動作します。それは依存関係と、\n"
|
||||
"全てのウィジットのタイプのためリンク(多対1、多対多など)を再計算します。\n"
|
||||
"このバージョンは作成と既存のレコードの更新のために動作します。それは依存関係と、\n"
|
||||
"全てのウィジェットのタイプのためリンク(多対1、多対多など)を再計算します。\n"
|
||||
"また、ワークフローとデモ / 更新データもサポートします。\n"
|
||||
"\n"
|
||||
"カスタム設定とデモ / テストデータのために、簡単に再利用と公表可能なモジュールを\n"
|
||||
"作成するために役立つはずです。\n"
|
||||
"\n"
|
||||
"利用方法:\n"
|
||||
"モジュールウィザードの アドミニストレーション/カスタマイゼーション/モジュール \n"
|
||||
"作成/エクスポート カスタマイゼーション を実行します。\n"
|
||||
"モジュールウィザードの アドミニストレーション/カスタム化/モジュール \n"
|
||||
"作成/エクスポート カスタム化 を実行します。\n"
|
||||
"記録の日時の基準、記録されるオブジェクト、記録モジュールを選択します。\n"
|
||||
" "
|
||||
|
||||
|
|
|
@ -7,14 +7,14 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
|
||||
"PO-Revision-Date: 2012-01-31 16:29+0000\n"
|
||||
"Last-Translator: Antony Lesuisse (OpenERP) <al@openerp.com>\n"
|
||||
"PO-Revision-Date: 2012-07-26 16:30+0000\n"
|
||||
"Last-Translator: Rinat Karimov <Unknown>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-07-19 04:42+0000\n"
|
||||
"X-Generator: Launchpad (build 15637)\n"
|
||||
"X-Launchpad-Export-Date: 2012-07-27 05:22+0000\n"
|
||||
"X-Generator: Launchpad (build 15694)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
@ -2732,7 +2732,7 @@ msgstr "Очистить ID"
|
|||
#. module: base
|
||||
#: view:res.groups:0
|
||||
msgid "Inherited"
|
||||
msgstr ""
|
||||
msgstr "Унаследованный"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.model.fields,serialization_field_id:0
|
||||
|
@ -6614,7 +6614,7 @@ msgstr "Совет"
|
|||
#. module: base
|
||||
#: view:res.company:0
|
||||
msgid "Header/Footer of Reports"
|
||||
msgstr ""
|
||||
msgstr "Заголовок/подвал отчетов"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_users.py:746
|
||||
|
|
|
@ -482,6 +482,7 @@ class module(osv.osv):
|
|||
'application': terp.get('application', False),
|
||||
'auto_install': terp.get('auto_install', False),
|
||||
'icon': terp.get('icon', False),
|
||||
'summary': terp.get('summary', ''),
|
||||
}
|
||||
|
||||
# update the list of available packages
|
||||
|
|
|
@ -132,6 +132,11 @@
|
|||
<record model="res.groups" id="group_multi_company">
|
||||
<field name="category_id" ref="module_category_usability"/>
|
||||
</record>
|
||||
|
||||
<record model="res.groups" id="group_multi_currency">
|
||||
<field name="category_id" ref="module_category_usability"/>
|
||||
</record>
|
||||
|
||||
<record model="res.groups" id="group_no_one">
|
||||
<field name="category_id" ref="module_category_usability"/>
|
||||
</record>
|
||||
|
|
|
@ -66,6 +66,7 @@
|
|||
<field name="icon"/>
|
||||
<field name="name"/>
|
||||
<field name="state"/>
|
||||
<field name="summary"/>
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div class="oe_module_vignette oe_kanban_auto_height">
|
||||
|
@ -74,7 +75,8 @@
|
|||
<div class="oe_module_desc">
|
||||
<h4><a type="edit"><field name="shortdesc"/></a></h4>
|
||||
<p class="oe_module_name">
|
||||
<field name="name"/><br/>
|
||||
<t t-if="record.summary.raw_value"><field name="summary"/><br/></t>
|
||||
<i><field name="name" groups="base.group_no_one"/></i>
|
||||
</p>
|
||||
<button type="object" name="button_immediate_install" states="uninstalled">Install</button>
|
||||
<button t-if="installed" disabled="disabled">Installed</button>
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
<field name="help">Display and manage the list of all countries that can be assigned to your partner records. You can create or delete countries to make sure the ones you are working on will be maintained.</field>
|
||||
</record>
|
||||
|
||||
<menuitem id="menu_localisation" name="Localisation" parent="menu_config_address_book" sequence="1"/>
|
||||
<menuitem id="menu_localisation" name="Localisation" parent="menu_config_address_book" sequence="1" groups="base.group_no_one"/>
|
||||
|
||||
<menuitem action="action_country" id="menu_country_partner" parent="menu_localisation" sequence="0" groups="base.group_no_one"/>
|
||||
|
||||
|
|
|
@ -78,7 +78,7 @@
|
|||
<field name="search_view_id" ref="view_currency_search"/>
|
||||
</record>
|
||||
|
||||
<menuitem action="action_currency_form" id="menu_action_currency_form" parent="menu_localisation" sequence="3"/>
|
||||
<menuitem action="action_currency_form" id="menu_action_currency_form" parent="menu_localisation" sequence="3" groups="base.group_multi_currency"/>
|
||||
|
||||
<!--
|
||||
Currency Rate Type
|
||||
|
|
|
@ -19,9 +19,10 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
import os
|
||||
import math
|
||||
import os
|
||||
from osv import osv, fields
|
||||
import re
|
||||
import tools
|
||||
from tools.translate import _
|
||||
import logging
|
||||
|
@ -103,12 +104,15 @@ class res_partner_category(osv.osv):
|
|||
|
||||
class res_partner_title(osv.osv):
|
||||
_name = 'res.partner.title'
|
||||
_order = 'name'
|
||||
_columns = {
|
||||
'name': fields.char('Title', required=True, size=46, translate=True),
|
||||
'shortcut': fields.char('Abbreviation', required=True, size=16, translate=True),
|
||||
'shortcut': fields.char('Abbreviation', size=16, translate=True),
|
||||
'domain': fields.selection([('partner','Partner'),('contact','Contact')], 'Domain', required=True, size=24)
|
||||
}
|
||||
_order = 'name'
|
||||
_defaults = {
|
||||
'domain': 'contact',
|
||||
}
|
||||
|
||||
def _lang_get(self, cr, uid, context=None):
|
||||
lang_pool = self.pool.get('res.lang')
|
||||
|
@ -301,6 +305,37 @@ class res_partner(osv.osv):
|
|||
res.append((record.id, name))
|
||||
return res
|
||||
|
||||
def name_create(self, cr, uid, name, context=None):
|
||||
""" Override of orm's name_create method for partners. The purpose is
|
||||
to handle some basic formats to create partners using the
|
||||
name_create.
|
||||
Supported syntax:
|
||||
- 'raoul@grosbedon.fr': create a partner with name raoul@grosbedon.fr
|
||||
and sets its email to raoul@grosbedon.fr
|
||||
- 'Raoul Grosbedon <raoul@grosbedon.fr>': create a partner with name
|
||||
Raoul Grosbedon, and set its email to raoul@grosbedon.fr
|
||||
- anything else: fall back on the default name_create
|
||||
Regex :
|
||||
- ([a-zA-Z0-9._%-]+@[a-zA-Z0-9_-]+\.[a-zA-Z0-9._]{1,8}): raoul@grosbedon.fr
|
||||
- ([\w\s.\\-]+)[\<]([a-zA-Z0-9._%-]+@[a-zA-Z0-9_-]+\.[a-zA-Z0-9._]{1,8})[\>]:
|
||||
Raoul Grosbedon, raoul@grosbedon.fr
|
||||
"""
|
||||
contact_regex = re.compile('([\w\s.\\-]+)[\<]([a-zA-Z0-9._%-]+@[a-zA-Z0-9_-]+\.[a-zA-Z0-9._]{1,8})[\>]')
|
||||
email_regex = re.compile('([a-zA-Z0-9._%-]+@[a-zA-Z0-9_-]+\.[a-zA-Z0-9._]{1,8})')
|
||||
contact_regex_res = contact_regex.findall(name)
|
||||
email_regex_res = email_regex.findall(name)
|
||||
if contact_regex_res:
|
||||
name = contact_regex_res[0][0].rstrip(' ') # remove extra spaces on the right
|
||||
email = contact_regex_res[0][1]
|
||||
rec_id = self.create(cr, uid, {self._rec_name: name, 'email': email}, context);
|
||||
return self.name_get(cr, uid, [rec_id], context)[0]
|
||||
elif email_regex:
|
||||
email = '%s' % (email_regex_res[0])
|
||||
rec_id = self.create(cr, uid, {self._rec_name: email, 'email': email}, context);
|
||||
return self.name_get(cr, uid, [rec_id], context)[0]
|
||||
else:
|
||||
return super(res_partner, self).create(cr, uid, name, context)
|
||||
|
||||
def name_search(self, cr, uid, name, args=None, operator='ilike', context=None, limit=100):
|
||||
if not args:
|
||||
args = []
|
||||
|
|
|
@ -1,16 +1,18 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<menuitem icon="terp-partner" id="menu_base_partner" name="Sales" sequence="0" groups="base.group_sale_salesman"/>
|
||||
|
||||
<!-- Top menu item -->
|
||||
<menuitem name="Sales"
|
||||
id="menu_base_partner"
|
||||
groups="base.group_sale_salesman"
|
||||
sequence="30"/>
|
||||
|
||||
<menuitem id="base.menu_sales" parent="base.menu_base_partner" name="Sales" sequence="1" />
|
||||
<menuitem id="menu_base_config" parent="menu_base_partner" name="Configuration" sequence="30" groups="group_system"/>
|
||||
<menuitem id="menu_config_address_book" parent="menu_base_config" name="Address Book" sequence="40" groups="group_system"/>
|
||||
|
||||
<!--
|
||||
=======================
|
||||
Partner Titles
|
||||
=======================
|
||||
-->
|
||||
<!-- Partner Titles -->
|
||||
<record id="view_partner_title_tree" model="ir.ui.view">
|
||||
<field name="name">res.partner.title.tree</field>
|
||||
<field name="model">res.partner.title</field>
|
||||
|
@ -31,7 +33,6 @@
|
|||
<group col="4">
|
||||
<field name="name"/>
|
||||
<field name="shortcut"/>
|
||||
<field name="domain"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
|
@ -70,11 +71,8 @@
|
|||
</record>
|
||||
|
||||
<menuitem action="action_partner_title_contact" id="menu_partner_title_contact" name="Contact Titles" parent="menu_config_address_book" sequence="3" groups="base.group_no_one"/>
|
||||
<!--
|
||||
=======================
|
||||
Partner
|
||||
=======================
|
||||
-->
|
||||
|
||||
<!-- Partner -->
|
||||
<record id="view_partner_tree" model="ir.ui.view">
|
||||
<field name="name">res.partner.tree</field>
|
||||
<field name="model">res.partner</field>
|
||||
|
@ -104,11 +102,11 @@
|
|||
<field name="photo" widget='image' class="oe_avatar oe_left"/>
|
||||
<div class="oe_title">
|
||||
<div class="oe_edit_only">
|
||||
<label for="name" string="Customer Name"/>
|
||||
<label for="name" string="Customer Name"/>
|
||||
(<field name="is_company" on_change="onchange_type(is_company)" class="oe_inline"/> <label for="is_company" string="Is a Company?"/>)
|
||||
</div>
|
||||
<h1>
|
||||
<field name="name"/>
|
||||
<field name="name" default_focus="1"/>
|
||||
</h1>
|
||||
<field name="category_id" widget="many2many_tags" placeholder="Select Tags"/>
|
||||
</div>
|
||||
|
@ -119,7 +117,7 @@
|
|||
<field name="parent_id"
|
||||
domain="[('is_company', '=', True)]" context="{'default_is_company': True}"
|
||||
attrs="{'invisible': [('is_company','=', True)]}"
|
||||
on_change="onchange_address(use_parent_address, parent_id)"/>,
|
||||
on_change="onchange_address(use_parent_address, parent_id)"/>,
|
||||
<label for="type" attrs="{'invisible': [('parent_id','=', False)]}"/>
|
||||
<div attrs="{'invisible': [('parent_id','=', False)]}">
|
||||
<field class="oe_inline"
|
||||
|
@ -150,12 +148,12 @@
|
|||
<field name="fax"/>
|
||||
<field name="email" widget="email"/>
|
||||
<field name="title" domain="[('domain', '=', 'contact')]"
|
||||
class="oe_no_button" attrs="{'invisible': [('is_company','=', True)]}"/>
|
||||
options='{"no_open": true}' attrs="{'invisible': [('is_company','=', True)]}" />
|
||||
</group>
|
||||
</group>
|
||||
|
||||
<notebook colspan="4">
|
||||
<page string="Contacts">
|
||||
<page string="Contacts" attrs="{'invisible': [('is_company','=',False)]}">
|
||||
<field name="child_ids" context="{'default_parent_id': active_id}" mode="kanban">
|
||||
<kanban>
|
||||
<field name="color"/>
|
||||
|
@ -196,7 +194,7 @@
|
|||
<a t-if="record.email.raw_value" title="Mail" t-att-href="'mailto:'+record.email.value" style="text-decoration: none;" >
|
||||
<img src="/web/static/src/img/icons/terp-mail-message-new.png" border="0" width="16" height="16"/>
|
||||
</a>
|
||||
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
@ -214,18 +212,24 @@
|
|||
<group>
|
||||
<field name="user_id" />
|
||||
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="customer"/>
|
||||
<field name="supplier" invisible="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="ref"/>
|
||||
<field name="lang"/>
|
||||
<field name="date"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="customer"/>
|
||||
<field name="supplier"/>
|
||||
<field name="active"/>
|
||||
</group>
|
||||
</group>
|
||||
</page>
|
||||
<page string="History" invisible="True"></page>
|
||||
<!-- The History page becomes visible as soon as there is something to display inside -->
|
||||
<page string="History" name="page_history" invisible="True">
|
||||
</page>
|
||||
<page string="Internal Notes">
|
||||
<field name="comment" placeholder="Internal notes about this customer..."/>
|
||||
</page>
|
||||
|
@ -252,7 +256,7 @@
|
|||
<separator/>
|
||||
<filter string="Customers" name="customer" icon="terp-personal" domain="[('customer','=',1)]" help="Customer Partners"/>
|
||||
<separator/>
|
||||
<filter string="Suppliers" name="supplier" icon="terp-personal" domain="[('supplier','=',1)]" help="Supplier Partners"/>
|
||||
<filter string="Suppliers" name="supplier" icon="terp-personal" domain="[('supplier','=',1)]" help="Supplier Partners"/>
|
||||
<group expand="0" string="Group By...">
|
||||
<filter string="Salesman" icon="terp-personal" domain="[]" context="{'group_by' : 'user_id'}" />
|
||||
<filter string="Company" context="{'group_by': 'parent_id'}"/>
|
||||
|
@ -284,6 +288,7 @@
|
|||
<field name="country_id"/>
|
||||
<field name="mobile"/>
|
||||
<field name="state_id"/>
|
||||
<field name="category_id"/>
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div class="oe_kanban_vignette">
|
||||
|
@ -291,20 +296,20 @@
|
|||
<img t-att-src="kanban_image('res.partner', 'photo', record.id.value)" class="oe_kanban_image"/>
|
||||
</a>
|
||||
<div class="oe_kanban_details">
|
||||
<h4 class="oe_partner_heading"><a type="edit"><field name="name"/></a>
|
||||
</h4>
|
||||
<ul>
|
||||
<li t-if="record.parent_id.raw_value and !record.function.raw_value"><field name="parent_id"/></li>
|
||||
<li t-if="!record.parent_id.raw_value and record.function.raw_value"><field name="function"/></li>
|
||||
<li t-if="record.parent_id.raw_value and record.function.raw_value"><field name="function"/> at <field name="parent_id"/></li>
|
||||
<li t-if="record.city.raw_value and !record.country.raw_value"><field name="city"/></li>
|
||||
<li t-if="!record.city.raw_value and record.country.raw_value"><field name="country"/></li>
|
||||
<li t-if="record.city.raw_value and record.country.raw_value"><field name="city"/>, <field name="country"/></li>
|
||||
<li t-if="record.mobile.raw_value"><field name="mobile"/></li>
|
||||
<li t-if="record.phone.raw_value">Tel: <field name="phone"/></li>
|
||||
<li t-if="record.mobile.raw_value">Mobile: <field name="mobile"/></li>
|
||||
<li t-if="record.email.raw_value"><a t-attf-href="mailto:#{record.email.raw_value}"><field name="email"/></a></li>
|
||||
</ul>
|
||||
<h4 class="oe_partner_heading"><a type="edit"><field name="name"/></a></h4>
|
||||
<div class="oe_kanban_partner_categories"/>
|
||||
<div class="oe_kanban_partner_links"/>
|
||||
<ul>
|
||||
<li t-if="record.parent_id.raw_value and !record.function.raw_value"><field name="parent_id"/></li>
|
||||
<li t-if="!record.parent_id.raw_value and record.function.raw_value"><field name="function"/></li>
|
||||
<li t-if="record.parent_id.raw_value and record.function.raw_value"><field name="function"/> at <field name="parent_id"/></li>
|
||||
<li t-if="record.city.raw_value and !record.country.raw_value"><field name="city"/></li>
|
||||
<li t-if="!record.city.raw_value and record.country.raw_value"><field name="country"/></li>
|
||||
<li t-if="record.city.raw_value and record.country.raw_value"><field name="city"/>, <field name="country"/></li>
|
||||
<li t-if="record.phone.raw_value">Tel: <field name="phone"/></li>
|
||||
<li t-if="record.mobile.raw_value">Mobile: <field name="mobile"/></li>
|
||||
<li t-if="record.email.raw_value"><a t-attf-href="mailto:#{record.email.raw_value}"><field name="email"/></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -424,11 +429,8 @@
|
|||
<field name="view_type">form</field>
|
||||
<field name="view_id" ref="view_payterm_form"/>
|
||||
</record>
|
||||
<!--
|
||||
======================
|
||||
Categories
|
||||
======================
|
||||
-->
|
||||
|
||||
<!-- Categories -->
|
||||
<record id="view_partner_category_form" model="ir.ui.view">
|
||||
<field name="name">Partner Categories</field>
|
||||
<field name="model">res.partner.category</field>
|
||||
|
@ -507,4 +509,3 @@
|
|||
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
|
|
|
@ -58,7 +58,7 @@
|
|||
<field name="comment"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
@ -199,7 +199,7 @@
|
|||
<field name="name" readonly="1" class="oe_inline"/>
|
||||
(<field name="login" readonly="1" class="oe_inline"/>)
|
||||
</h1>
|
||||
<group col="4">
|
||||
<group name="preferences" col="4">
|
||||
<field name="context_lang" readonly="0"/>
|
||||
<field name="company_id" readonly="0"
|
||||
groups="base.group_multi_company" on_change="on_change_company_id(company_id)"/>
|
||||
|
|
|
@ -23,6 +23,10 @@
|
|||
<record model="res.groups" id="group_multi_company">
|
||||
<field name="name">Multi Companies</field>
|
||||
</record>
|
||||
|
||||
<record model="res.groups" id="group_multi_currency">
|
||||
<field name="name">Multi Currencies</field>
|
||||
</record>
|
||||
|
||||
<record model="res.groups" id="group_no_one">
|
||||
<field name="name">Technical Features</field>
|
||||
|
|
|
@ -19,10 +19,8 @@
|
|||
<rng:element name="value">
|
||||
<rng:optional><rng:attribute name="model" /></rng:optional>
|
||||
<rng:optional><rng:attribute name="search" /></rng:optional>
|
||||
<rng:optional>
|
||||
<rng:attribute name="eval"/>
|
||||
</rng:optional>
|
||||
<rng:empty />
|
||||
<rng:optional><rng:attribute name="eval" /></rng:optional>
|
||||
<rng:optional><rng:text/></rng:optional>
|
||||
</rng:element>
|
||||
</rng:define>
|
||||
|
||||
|
|
|
@ -77,8 +77,8 @@ def initialize(cr):
|
|||
|
||||
cr.execute('INSERT INTO ir_module_module \
|
||||
(author, website, name, shortdesc, description, \
|
||||
category_id, auto_install, state, certificate, web, license, application, icon, sequence) \
|
||||
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) RETURNING id', (
|
||||
category_id, auto_install, state, certificate, web, license, application, icon, sequence, summary) \
|
||||
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) RETURNING id', (
|
||||
info['author'],
|
||||
info['website'], i, info['name'],
|
||||
info['description'], category_id,
|
||||
|
@ -86,7 +86,7 @@ def initialize(cr):
|
|||
info['web'],
|
||||
info['license'],
|
||||
info['application'], info['icon'],
|
||||
info['sequence']))
|
||||
info['sequence'], info['summary']))
|
||||
id = cr.fetchone()[0]
|
||||
cr.execute('INSERT INTO ir_model_data \
|
||||
(name,model,module, res_id, noupdate) VALUES (%s,%s,%s,%s,%s)', (
|
||||
|
|
|
@ -341,6 +341,7 @@ def load_information_from_description_file(module):
|
|||
'web': False,
|
||||
'website': '',
|
||||
'sequence': 100,
|
||||
'summary': '',
|
||||
}
|
||||
info.update(itertools.izip(
|
||||
'depends data demo test init_xml update_xml demo_xml'.split(),
|
||||
|
|
|
@ -49,7 +49,7 @@ import simplejson
|
|||
_logger = logging.getLogger(__name__)
|
||||
|
||||
def _symbol_set(symb):
|
||||
if symb == None or symb == False:
|
||||
if symb is None or symb == False:
|
||||
return None
|
||||
elif isinstance(symb, unicode):
|
||||
return symb.encode('utf-8')
|
||||
|
@ -181,8 +181,8 @@ class reference(_column):
|
|||
class char(_column):
|
||||
_type = 'char'
|
||||
|
||||
def __init__(self, string, size, **args):
|
||||
_column.__init__(self, string=string, size=size, **args)
|
||||
def __init__(self, string="unknown", size=None, **args):
|
||||
_column.__init__(self, string=string, size=size or None, **args)
|
||||
self._symbol_set = (self._symbol_c, self._symbol_set_char)
|
||||
|
||||
# takes a string (encoded in utf8) and returns a string (encoded in utf8)
|
||||
|
@ -191,7 +191,7 @@ class char(_column):
|
|||
# * we need to remove the "symb==False" from the next line BUT
|
||||
# for now too many things rely on this broken behavior
|
||||
# * the symb==None test should be common to all data types
|
||||
if symb == None or symb == False:
|
||||
if symb is None or symb == False:
|
||||
return None
|
||||
|
||||
# we need to convert the string to a unicode object to be able
|
||||
|
|
|
@ -758,7 +758,7 @@ class BaseModel(object):
|
|||
'model_id': model_id,
|
||||
'model': self._name,
|
||||
'name': k,
|
||||
'field_description': f.string.replace("'", " "),
|
||||
'field_description': f.string,
|
||||
'ttype': f._type,
|
||||
'relation': f._obj or '',
|
||||
'view_load': (f.view_load and 1) or 0,
|
||||
|
@ -767,7 +767,7 @@ class BaseModel(object):
|
|||
'required': (f.required and 1) or 0,
|
||||
'selectable': (f.selectable and 1) or 0,
|
||||
'translate': (f.translate and 1) or 0,
|
||||
'relation_field': (f._type=='one2many' and isinstance(f, fields.one2many)) and f._fields_id or '',
|
||||
'relation_field': f._fields_id if isinstance(f, fields.one2many) else '',
|
||||
'serialization_field_id': None,
|
||||
}
|
||||
if getattr(f, 'serialization_field', None):
|
||||
|
|
Loading…
Reference in New Issue