diff --git a/addons/account/account_installer.xml b/addons/account/account_installer.xml index a9de51c3afb..a3570fae79a 100644 --- a/addons/account/account_installer.xml +++ b/addons/account/account_installer.xml @@ -73,7 +73,7 @@ - Add extra Accounting Addons to the ones already installed. Remember you can always install them at a later stage. + Add extra Accounting functionalities to the ones already installed. Configure diff --git a/addons/account/partner_view.xml b/addons/account/partner_view.xml index d53fb9fe80a..ca489acd9bd 100644 --- a/addons/account/partner_view.xml +++ b/addons/account/partner_view.xml @@ -72,7 +72,7 @@ 2 - + diff --git a/addons/association/profile_association.py b/addons/association/profile_association.py index f102d710fd8..eb9ac398500 100644 --- a/addons/association/profile_association.py +++ b/addons/association/profile_association.py @@ -27,13 +27,18 @@ class profile_association_config_install_modules_wizard(osv.osv_memory): _inherit = 'res.config.installer' _columns = { - 'hr_expense':fields.boolean('Expenses Tracking', help="Tracks the personal expenses process, from the employee expense encoding, to the reimbursement of the employee up to the reinvoicing to the final customer."), - 'project':fields.boolean('Project Management'), - 'event_project':fields.boolean('Organization and management of Events', help="This module allows you to create retro planning for managing your events."), + 'hr_expense':fields.boolean('Expenses Tracking', help="Tracks and manages employee expenses, and can " + "automatically re-invoice clients if the expenses are " + "project-related."), + 'project':fields.boolean('Project Management', + help="Helps you manage your projects and tasks by tracking them, " + "generating plannings, etc..."), + 'event_project':fields.boolean('Events', help="Helps you to manage and organize your events."), 'project_gtd':fields.boolean('Getting Things Done', help="GTD is a methodology to efficiently organise yourself and your tasks. This module fully integrates GTD principle with OpenERP's project management."), - 'wiki': fields.boolean('Wiki', - help="An integrated wiki content management system. This is really usefull to manage FAQ, quality manuals, etc.") + 'wiki': fields.boolean('Wiki', help="Lets you create wiki pages and page groups in order " + "to keep track of business knowledge and share it with " + "and between your employees."), } profile_association_config_install_modules_wizard() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/base_action_rule/base_action_rule_view.xml b/addons/base_action_rule/base_action_rule_view.xml index 526fe55f4a3..755f6680d34 100644 --- a/addons/base_action_rule/base_action_rule_view.xml +++ b/addons/base_action_rule/base_action_rule_view.xml @@ -14,11 +14,13 @@ form
- - - - - + + + + + + + diff --git a/addons/base_calendar/base_calendar_view.xml b/addons/base_calendar/base_calendar_view.xml index 35e3f794571..c3292452298 100644 --- a/addons/base_calendar/base_calendar_view.xml +++ b/addons/base_calendar/base_calendar_view.xml @@ -128,6 +128,11 @@ + + + - - @@ -457,21 +458,23 @@ - + - - + + + - + + diff --git a/addons/base_setup/installer.py b/addons/base_setup/installer.py index 0c8478ba57d..f415447e5fb 100644 --- a/addons/base_setup/installer.py +++ b/addons/base_setup/installer.py @@ -58,7 +58,7 @@ class base_setup_installer(osv.osv_memory): help="Helps you manage your purchase-related processes such as " "requests for quotations, supplier invoices, etc..."), 'hr':fields.boolean('Human Resources', - help="Helps you manage your human resources by encoding your employees structure, generating work sheets, tracking attendance and more"), + help="Helps you manage your human resources by encoding your employees structure, generating work sheets, tracking attendance and more."), 'point_of_sale':fields.boolean('Point of Sales', help="Helps you get the most out of your points of sales with " "fast sale encoding, simplified payment mode encoding, " @@ -74,7 +74,7 @@ class base_setup_installer(osv.osv_memory): # Vertical modules 'product_expiry':fields.boolean('Food Industry', help="Installs a preselected set of OpenERP applications " - "which will help you manage your industry"), + "which will help you manage your industry."), 'association':fields.boolean('Associations', help="Installs a preselected set of OpenERP " "applications which will help you manage your association " diff --git a/addons/caldav/caldav_node.py b/addons/caldav/caldav_node.py index 63e683bafb7..55be22f198e 100644 --- a/addons/caldav/caldav_node.py +++ b/addons/caldav/caldav_node.py @@ -103,7 +103,12 @@ class node_calendar_collection(nodes.node_dir): class node_calendar(nodes.node_class): our_type = 'collection' DAV_PROPS = { - "http://calendarserver.org/ns/" : ('getctag',), + "DAV:": ('principal-collection-set'), + "http://cal.me.com/_namespace/" : ('user-state'), + "http://calendarserver.org/ns/" : ( + 'dropbox-home-URL', + 'notification-URL', + 'getctag',), 'http://groupdav.org/': ('resourcetype',), "urn:ietf:params:xml:ns:caldav" : ( 'calendar-description', @@ -114,6 +119,7 @@ class node_calendar(nodes.node_class): 'schedule-outbox-URL',)} DAV_M_NS = { "DAV:" : '_get_dav', + "http://cal.me.com/_namespace/": '_get_dav', 'http://groupdav.org/': '_get_gdav', "http://calendarserver.org/ns/" : '_get_dav', "urn:ietf:params:xml:ns:caldav" : '_get_caldav'} @@ -134,6 +140,35 @@ class node_calendar(nodes.node_class): result = self._get_ttag(cr) + ':' + str(time.time()) return str(result) + def _get_dav_dropbox_home_URL(self, cr): + import xml.dom.minidom + import urllib + uid = self.context.uid + ctx = self.context.context.copy() + ctx.update(self.dctx) + calendar_obj = self.context._dirobj.pool.get('basic.calendar') + calendar = calendar_obj.browse(cr, uid, self.calendar_id, context=ctx) + res = '%s/%s' %(calendar.collection_id.name, calendar.name) + url = urllib.quote('/%s/%s' % (cr.dbname, res)) + return url + + def _get_dav_notification_URL(self, cr): + import xml.dom.minidom + import urllib + uid = self.context.uid + ctx = self.context.context.copy() + ctx.update(self.dctx) + calendar_obj = self.context._dirobj.pool.get('basic.calendar') + calendar = calendar_obj.browse(cr, uid, self.calendar_id, context=ctx) + res = '%s/%s' %(calendar.collection_id.name, calendar.name) + url = urllib.quote('/%s/%s' % (cr.dbname, res)) + return url + + def _get_dav_user_state(self, cr): + #TODO + return True + + def get_dav_resourcetype(self, cr): res = [ ('collection', 'DAV:'), (str(self.cal_type + '-collection'), 'http://groupdav.org/'), @@ -258,6 +293,86 @@ class node_calendar(nodes.node_class): def rmcol(self, cr): return False + + def _get_caldav_calendar_data(self, cr): + res = [] + for child in self.children(cr): + res.append(child._get_caldav_calendar_data(cr)) + return res + + def _get_caldav_calendar_description(self, cr): + uid = self.context.uid + calendar_obj = self.context._dirobj.pool.get('basic.calendar') + ctx = self.context.context.copy() + ctx.update(self.dctx) + calendar = calendar_obj.browse(cr, uid, self.calendar_id, context=ctx) + return calendar.description + + def _get_dav_principal_collection_set(self, uri): + import urllib + uid = self.context.uid + ctx = self.context.context.copy() + ctx.update(self.dctx) + calendar_obj = self.context._dirobj.pool.get('basic.calendar') + calendar = calendar_obj.browse(cr, uid, self.calendar_id, context=ctx) + res = '%s/%s' %(calendar.collection_id.name, calendar.name) + doc = xml.dom.minidom.getDOMImplementation().createDocument(None, 'href', None) + href = doc.documentElement + href.tagName = 'D:href' + huri = doc.createTextNode(urllib.quote('/%s/%s' % (cr.dbname, res))) + href.appendChild(huri) + return href + + def _get_caldav_calendar_home_set(self, cr): + import xml.dom.minidom + import urllib + uid = self.context.uid + ctx = self.context.context.copy() + ctx.update(self.dctx) + doc = xml.dom.minidom.getDOMImplementation().createDocument(None, 'href', None) + + calendar_obj = self.context._dirobj.pool.get('basic.calendar') + calendar = calendar_obj.browse(cr, uid, self.calendar_id, context=ctx) + huri = doc.createTextNode(urllib.quote('/%s/%s' % (cr.dbname, calendar.collection_id.name))) + href = doc.documentElement + href.tagName = 'D:href' + href.appendChild(huri) + return href + + def _get_caldav_calendar_user_address_set(self, cr): + import xml.dom.minidom + dirobj = self.context._dirobj + uid = self.context.uid + ctx = self.context.context.copy() + ctx.update(self.dctx) + user_obj = self.context._dirobj.pool.get('res.users') + user = user_obj.browse(cr, uid, uid, context=ctx) + doc = xml.dom.minidom.getDOMImplementation().createDocument(None, 'href', None) + href = doc.documentElement + href.tagName = 'D:href' + huri = doc.createTextNode('MAILTO:' + str(user.email) or str(user.name)) + href.appendChild(huri) + return href + + def _get_caldav_schedule_outbox_URL(self, cr): + return self._get_caldav_schedule_inbox_URL(cr) + + def _get_caldav_schedule_inbox_URL(self, cr): + import xml.dom.minidom + import urllib + uid = self.context.uid + ctx = self.context.context.copy() + ctx.update(self.dctx) + calendar_obj = self.context._dirobj.pool.get('basic.calendar') + calendar = calendar_obj.browse(cr, uid, self.calendar_id, context=ctx) + res = '%s/%s' %(calendar.collection_id.name, calendar.name) + doc = xml.dom.minidom.getDOMImplementation().createDocument(None, 'href', None) + href = doc.documentElement + href.tagName = 'D:href' + huri = doc.createTextNode(urllib.quote('/%s/%s' % (cr.dbname, res))) + href.appendChild(huri) + return href + class res_node_calendar(nodes.node_class): our_type = 'file' @@ -309,6 +424,9 @@ class res_node_calendar(nodes.node_class): context.update({'model': self.model, 'res_id':self.res_id}) res = calendar_obj.export_cal(cr, uid, [self.calendar_id], context=context) return res + + def _get_caldav_calendar_data(self, cr): + return self.get_data(cr) def get_data_len(self, cr, fil_obj = None): return self.content_length @@ -327,67 +445,6 @@ class res_node_calendar(nodes.node_class): res = '%d' % (self.calendar_id) return res - def _get_caldav_calendar_data(self, cr): - return self.get_data(cr) - - - def _get_caldav_calendar_description(self, cr): - uid = self.context.uid - calendar_obj = self.context._dirobj.pool.get('basic.calendar') - ctx = self.context.context.copy() - ctx.update(self.dctx) - calendar = calendar_obj.browse(cr, uid, self.calendar_id, context=ctx) - return calendar.description - - - def _get_caldav_calendar_home_set(self, cr): - import xml.dom.minidom - import urllib - uid = self.context.uid - ctx = self.context.context.copy() - ctx.update(self.dctx) - doc = xml.dom.minidom.getDOMImplementation().createDocument(None, 'href', None) - - calendar_obj = self.context._dirobj.pool.get('basic.calendar') - calendar = calendar_obj.browse(cr, uid, self.calendar_id, context=ctx) - huri = doc.createTextNode(urllib.quote('/%s/%s' % (cr.dbname, calendar.collection_id.name))) - href = doc.documentElement - href.tagName = 'D:href' - href.appendChild(huri) - return href - - def _get_caldav_calendar_user_address_set(self, cr): - import xml.dom.minidom - dirobj = self.context._dirobj - uid = self.context.uid - ctx = self.context.context.copy() - ctx.update(self.dctx) - user_obj = self.context._dirobj.pool.get('res.users') - user = user_obj.browse(cr, uid, uid, context=ctx) - doc = xml.dom.minidom.getDOMImplementation().createDocument(None, 'href', None) - href = doc.documentElement - href.tagName = 'D:href' - huri = doc.createTextNode('MAILTO:' + user.email) - href.appendChild(huri) - return href - - - def _get_caldav_schedule_inbox_URL(self, cr): - import xml.dom.minidom - import urllib - uid = self.context.uid - ctx = self.context.context.copy() - ctx.update(self.dctx) - calendar_obj = self.context._dirobj.pool.get('basic.calendar') - calendar = calendar_obj.browse(cr, uid, self.calendar_id, context=ctx) - res = '%s/%s' %(calendar.name, calendar.collection_id.name) - doc = xml.dom.minidom.getDOMImplementation().createDocument(None, 'href', None) - href = doc.documentElement - href.tagName = 'D:href' - huri = doc.createTextNode(urllib.quote('/%s/%s' % (cr.dbname, res))) - href.appendChild(huri) - return href - def rm(self, cr): uid = self.context.uid @@ -401,7 +458,6 @@ class res_node_calendar(nodes.node_class): return res - def _get_caldav_schedule_outbox_URL(self, cr): - return self._get_caldav_schedule_inbox_URL(cr) + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4 diff --git a/addons/caldav/calendar.py b/addons/caldav/calendar.py index 01c35880fbb..4f9afb034a4 100644 --- a/addons/caldav/calendar.py +++ b/addons/caldav/calendar.py @@ -453,7 +453,7 @@ class CalDAV(object): else: for key1, val1 in self.ical_get(field, 'mapping').items(): if val1 == data[map_field]: - vevent.add(field).value = key1 + vevent.add(field).value = key1.upper() return vevent def check_import(self, cr, uid, vals, context=None): diff --git a/addons/crm/crm.py b/addons/crm/crm.py index c8dde37d9e5..9b4f9e2ef96 100644 --- a/addons/crm/crm.py +++ b/addons/crm/crm.py @@ -587,7 +587,7 @@ class crm_case_categ(osv.osv): _description = "Category of case" _columns = { - 'name': fields.char('Case Category Name', size=64, required=True, translate=True), + 'name': fields.char('Name', size=64, required=True, translate=True), 'section_id': fields.many2one('crm.case.section', 'Sales Team'), 'object_id': fields.many2one('ir.model', 'Object Name'), } @@ -636,7 +636,7 @@ class crm_case_stage(osv.osv): 'section_id': fields.many2one('crm.case.section', 'Sales Team'), 'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of case stages."), 'object_id': fields.many2one('ir.model', 'Object Name'), - 'probability': fields.float('Probability (%)', required=True), + 'probability': fields.float('Probability (%)', required=True, help="This percentage depicts the default/average probability of the Case for this stage to be a success"), 'on_change': fields.boolean('Change Probability Automatically', \ help="Change Probability on next and previous stages."), 'requirements': fields.text('Requirements') diff --git a/addons/crm/crm_installer.py b/addons/crm/crm_installer.py index 6797afc62e0..3860a69b51c 100644 --- a/addons/crm/crm_installer.py +++ b/addons/crm/crm_installer.py @@ -33,15 +33,15 @@ class crm_installer(osv.osv_memory): _columns = { 'name': fields.char('Name', size=64), - 'crm_helpdesk': fields.boolean('Helpdesk', help="Manages an Helpdesk service."), + 'crm_helpdesk': fields.boolean('Helpdesk', help="Manages a Helpdesk service."), 'crm_fundraising': fields.boolean('Fundraising', help="This may help associations in their fundraising process and tracking."), 'crm_claim': fields.boolean('Claims', help="Manages the suppliers and customers claims, including your corrective or preventive actions."), 'crm_caldav': fields.boolean('Calendar Synchronizing', help="Helps you to synchronize the meetings with other calendar clients and mobiles."), 'sale_crm': fields.boolean('Opportunity to Quotation', help="This module relates sale from opportunity cases in the CRM."), - 'fetchmail': fields.boolean('Fetch Emails', help="Fetchmail Server."), - 'thunderbird': fields.boolean('Thunderbird', help="Allows you to link your e-mail to OpenERP's documents. You can attach it to any existing one in OpenERP or create a new one"), - 'outlook': fields.boolean('MS-Outlook', help="Allows you to link your e-mail to OpenERP's documents. You can attach it to any existing one in OpenERP or create a new one"), - 'wiki_sale_faq': fields.boolean('Sale FAQ', help="Sale FAQ."), + 'fetchmail': fields.boolean('Fetch Emails', help="Allows you to receive E-Mails from POP/IMAP server."), + 'thunderbird': fields.boolean('Thunderbird', help="Allows you to link your e-mail to OpenERP's documents. You can attach it to any existing one in OpenERP or create a new one."), + 'outlook': fields.boolean('MS-Outlook', help="Allows you to link your e-mail to OpenERP's documents. You can attach it to any existing one in OpenERP or create a new one."), + 'wiki_sale_faq': fields.boolean('Sale FAQ', help="Helps you manage wiki pages for Frequently Asked Questions on Sales Application."), } def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False): diff --git a/addons/crm/crm_installer_view.xml b/addons/crm/crm_installer_view.xml index 5fad3f41a3d..ece3bae31ec 100644 --- a/addons/crm/crm_installer_view.xml +++ b/addons/crm/crm_installer_view.xml @@ -16,7 +16,7 @@ - Enhance your CRM basic Application with additional Addons. + Enhance your core CRM Application with additional functionalities. 13 diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py index da09795547a..0a552a4165a 100644 --- a/addons/crm/crm_lead.py +++ b/addons/crm/crm_lead.py @@ -125,6 +125,7 @@ class crm_lead(crm_case, osv.osv): domain="['|',('section_id','=',section_id),('section_id','=',False)]"), 'channel_id': fields.many2one('res.partner.canal', 'Channel'), + 'contact_name': fields.char('Contact Name', size=64), 'partner_name': fields.char("Partner Name", size=64), 'optin': fields.boolean('Opt-In'), 'optout': fields.boolean('Opt-Out'), diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml index 41d41ef0502..2df1369bbb1 100644 --- a/addons/crm/crm_lead_view.xml +++ b/addons/crm/crm_lead_view.xml @@ -55,7 +55,7 @@ - + + + + - + @@ -211,7 +214,7 @@ -