diff --git a/addons/base_action_rule/base_action_rule.py b/addons/base_action_rule/base_action_rule.py
index df2d43d3a53..6eb45172dbc 100644
--- a/addons/base_action_rule/base_action_rule.py
+++ b/addons/base_action_rule/base_action_rule.py
@@ -33,18 +33,115 @@ class base_action_rule(osv.osv):
_name = 'base.action.rule'
_description = 'Action Rules'
+
+ def _state_get(self, cr, uid, context={}):
+ """ Get State
+ @param self: The object pointer
+ @param cr: the current row, from the database cursor,
+ @param uid: the current user’s ID for security checks,
+ @param context: A standard dictionary for contextual values """
+
+ return self.state_get(cr, uid, context=context)
+
+
+ def _priority_get(self, cr, uid, context={}):
+ """ Get Priority
+ @param self: The object pointer
+ @param cr: the current row, from the database cursor,
+ @param uid: the current user’s ID for security checks,
+ @param context: A standard dictionary for contextual values """
+
+ return self.priority_get(cr, uid, context=context)
+
+ def state_get(self, cr, uid, context={}):
+ """ Get State
+ @param self: The object pointer
+ @param cr: the current row, from the database cursor,
+ @param uid: the current user’s ID for security checks,
+ @param context: A standard dictionary for contextual values """
+
+ return [('','')]
+
+ def priority_get(self, cr, uid, context={}):
+ """ Get Priority
+ @param self: The object pointer
+ @param cr: the current row, from the database cursor,
+ @param uid: the current user’s ID for security checks,
+ @param context: A standard dictionary for contextual values """
+
+ return [('','')]
_columns = {
'name': fields.many2one('ir.model', 'Model', required=True),
'max_level': fields.integer('Max Level', help='Specifies maximum level.'),
- 'rule_lines': fields.one2many('base.action.rule.line','rule_id','Rule Lines'),
'create_date': fields.datetime('Create Date', readonly=1),
- 'active': fields.boolean('Active')
+ 'active': fields.boolean('Active', help="If the active field is set to true,\
+ it will allow you to hide the rule without removing it."),
+ 'sequence': fields.integer('Sequence', help="Gives the sequence order when\
+ displaying a list of rules."),
+
+ 'trg_date_type': fields.selection([
+ ('none','None'),
+ ('create','Creation Date'),
+ ('action_last','Last Action Date'),
+ ('date','Date'),
+ ('deadline', 'Deadline'),
+ ], 'Trigger Date', size=16),
+ 'trg_date_range': fields.integer('Delay after trigger date',help="Delay After Trigger Date,\
+ specifies you can put a negative number " \
+ "if you need a delay before the trigger date, like sending a reminder 15 minutes before a meeting."),
+ 'trg_date_range_type': fields.selection([('minutes', 'Minutes'),('hour','Hours'),\
+ ('day','Days'),('month','Months')], 'Delay type'),
+
+
+ 'trg_user_id': fields.many2one('res.users', 'Responsible'),
+
+ 'trg_partner_id': fields.many2one('res.partner', 'Partner'),
+ 'trg_partner_categ_id': fields.many2one('res.partner.category', 'Partner Category'),
+ 'trg_state_from': fields.selection(_state_get, 'State', size=16),
+ 'trg_state_to': fields.selection(_state_get, 'Button Pressed', size=16),
+ 'trg_priority_from': fields.selection(_priority_get, 'Minimum Priority'),
+ 'trg_priority_to': fields.selection(_priority_get, 'Maximum Priority'),
+
+ 'act_method': fields.char('Call Object Method', size=64),
+ 'act_user_id': fields.many2one('res.users', 'Set responsible to'),
+ 'act_state': fields.selection(_state_get, 'Set state to', size=16),
+ 'act_priority': fields.selection(_priority_get, 'Set priority to'),
+ 'act_email_cc': fields.char('Add watchers (Cc)', size=250, help="These people\
+ will receive a copy of the future communication between partner and users by email"),
+
+ 'act_remind_partner': fields.boolean('Remind Partner', help="Check this if\
+ you want the rule to send a reminder by email to the partner."),
+ 'act_remind_user': fields.boolean('Remind responsible', help="Check this if \
+ you want the rule to send a reminder by email to the user."),
+ 'act_reply_to': fields.char('Reply-To', size=64),
+ 'act_remind_attach': fields.boolean('Remind with attachment', help="Check this if\
+ you want that all documents attached to the object be attached \
+ to the reminder email sent."),
+
+ 'act_mail_to_user': fields.boolean('Mail to responsible',help="Check this if \
+ you want the rule to send an email to the responsible person."),
+ 'act_mail_to_watchers': fields.boolean('Mail to watchers (CC)',help="Check this\
+ if you want the rule to mark CC(mail to any other person\
+ defined in actions)."),
+ 'act_mail_to_email': fields.char('Mail to these emails', size=128,help="Email-id \
+ of the persons whom mail is to be sent"),
+ 'act_mail_body': fields.text('Mail body',help="Content of mail"),
+ 'regex_name': fields.char('Regular Expression on Model Name', size=128),
+ 'server_action_id': fields.many2one('ir.actions.server','Server Action',help="Describes the\
+ action name." \
+ "eg:on which object which action to be taken on basis of which condition"),
}
_defaults = {
'active': lambda *a: True,
'max_level': lambda *a: 15,
+ 'trg_date_type': lambda *a: 'none',
+ 'trg_date_range_type': lambda *a: 'day',
+ 'act_mail_to_user': lambda *a: 0,
+ 'act_remind_partner': lambda *a: 0,
+ 'act_remind_user': lambda *a: 0,
+ 'act_mail_to_watchers': lambda *a: 0,
}
def format_body(self, body):
@@ -201,175 +298,56 @@ class base_action_rule(osv.osv):
if not scrit:
scrit = []
- rule_line_obj = self.pool.get('base.action.rule.line')
- for rule in self.browse(cr, uid, ids):
- level = rule.max_level
+ for action in self.browse(cr, uid, ids):
+ level = action.max_level
if not level:
break
- newactions = []
- scrit += [('rule_id','=',rule.id)]
- line_ids = rule_line_obj.search(cr, uid, scrit)
- actions = rule_line_obj.browse(cr, uid, line_ids, context=context)
- model_obj = self.pool.get(rule.name.model)
+ model_obj = self.pool.get(action.name.model)
for obj in objects:
- for action in actions:
- ok = self.do_check(cr, uid, action, obj, context=context)
- if not ok:
- continue
+ ok = self.do_check(cr, uid, action, obj, context=context)
+ if not ok:
+ continue
- base = False
- if hasattr(obj, 'create_date') and action.trg_date_type=='create':
- base = mx.DateTime.strptime(obj.create_date[:19], '%Y-%m-%d %H:%M:%S')
- elif hasattr(obj, 'create_date') and action.trg_date_type=='action_last':
- if hasattr(obj, 'date_action_last') and obj.date_action_last:
- base = mx.DateTime.strptime(obj.date_action_last, '%Y-%m-%d %H:%M:%S')
- else:
- base = mx.DateTime.strptime(obj.create_date[:19], '%Y-%m-%d %H:%M:%S')
- elif hasattr(obj, 'date_deadline') and action.trg_date_type=='deadline' \
- and obj.date_deadline:
- base = mx.DateTime.strptime(obj.date_deadline, '%Y-%m-%d %H:%M:%S')
- elif hasattr(obj, 'date') and action.trg_date_type=='date' and obj.date:
- base = mx.DateTime.strptime(obj.date, '%Y-%m-%d %H:%M:%S')
- if base:
- fnct = {
- 'minutes': lambda interval: mx.DateTime.RelativeDateTime(minutes=interval),
- 'day': lambda interval: mx.DateTime.RelativeDateTime(days=interval),
- 'hour': lambda interval: mx.DateTime.RelativeDateTime(hours=interval),
- 'month': lambda interval: mx.DateTime.RelativeDateTime(months=interval),
- }
- d = base + fnct[action.trg_date_range_type](action.trg_date_range)
- dt = d.strftime('%Y-%m-%d %H:%M:%S')
- ok = False
- if hasattr(obj, 'date_action_last') and hasattr(obj, 'date_action_next'):
- ok = (dt <= time.strftime('%Y-%m-%d %H:%M:%S')) and \
- ((not obj.date_action_next) or \
- (dt >= obj.date_action_next and \
- obj.date_action_last < obj.date_action_next))
- if not ok:
- if not obj.date_action_next or dt < obj.date_action_next:
- obj.date_action_next = dt
- model_obj.write(cr, uid, [obj.id], {'date_action_next': dt}, context)
+ base = False
+ if hasattr(obj, 'create_date') and action.trg_date_type=='create':
+ base = mx.DateTime.strptime(obj.create_date[:19], '%Y-%m-%d %H:%M:%S')
+ elif hasattr(obj, 'create_date') and action.trg_date_type=='action_last':
+ if hasattr(obj, 'date_action_last') and obj.date_action_last:
+ base = mx.DateTime.strptime(obj.date_action_last, '%Y-%m-%d %H:%M:%S')
else:
- ok = action.trg_date_type=='none'
+ base = mx.DateTime.strptime(obj.create_date[:19], '%Y-%m-%d %H:%M:%S')
+ elif hasattr(obj, 'date_deadline') and action.trg_date_type=='deadline' \
+ and obj.date_deadline:
+ base = mx.DateTime.strptime(obj.date_deadline, '%Y-%m-%d %H:%M:%S')
+ elif hasattr(obj, 'date') and action.trg_date_type=='date' and obj.date:
+ base = mx.DateTime.strptime(obj.date, '%Y-%m-%d %H:%M:%S')
+ if base:
+ fnct = {
+ 'minutes': lambda interval: mx.DateTime.RelativeDateTime(minutes=interval),
+ 'day': lambda interval: mx.DateTime.RelativeDateTime(days=interval),
+ 'hour': lambda interval: mx.DateTime.RelativeDateTime(hours=interval),
+ 'month': lambda interval: mx.DateTime.RelativeDateTime(months=interval),
+ }
+ d = base + fnct[action.trg_date_range_type](action.trg_date_range)
+ dt = d.strftime('%Y-%m-%d %H:%M:%S')
+ ok = False
+ if hasattr(obj, 'date_action_last') and hasattr(obj, 'date_action_next'):
+ ok = (dt <= time.strftime('%Y-%m-%d %H:%M:%S')) and \
+ ((not obj.date_action_next) or \
+ (dt >= obj.date_action_next and \
+ obj.date_action_last < obj.date_action_next))
+ if not ok:
+ if not obj.date_action_next or dt < obj.date_action_next:
+ obj.date_action_next = dt
+ model_obj.write(cr, uid, [obj.id], {'date_action_next': dt}, context)
+ else:
+ ok = action.trg_date_type=='none'
- if ok:
- self.do_action(cr, uid, action, model_obj, obj, context)
- break
+ if ok:
+ self.do_action(cr, uid, action, model_obj, obj, context)
+ break
level -= 1
return True
-base_action_rule()
-
-class base_action_rule_line(osv.osv):
- _name = 'base.action.rule.line'
- _description = 'Action Rule Lines'
-
- def _state_get(self, cr, uid, context={}):
- """ Get State
- @param self: The object pointer
- @param cr: the current row, from the database cursor,
- @param uid: the current user’s ID for security checks,
- @param context: A standard dictionary for contextual values """
-
- return self.state_get(cr, uid, context=context)
- def _priority_get(self, cr, uid, context={}):
- """ Get Priority
- @param self: The object pointer
- @param cr: the current row, from the database cursor,
- @param uid: the current user’s ID for security checks,
- @param context: A standard dictionary for contextual values """
-
- return self.priority_get(cr, uid, context=context)
-
- def state_get(self, cr, uid, context={}):
- """ Get State
- @param self: The object pointer
- @param cr: the current row, from the database cursor,
- @param uid: the current user’s ID for security checks,
- @param context: A standard dictionary for contextual values """
-
- return [('','')]
- def priority_get(self, cr, uid, context={}):
- """ Get Priority
- @param self: The object pointer
- @param cr: the current row, from the database cursor,
- @param uid: the current user’s ID for security checks,
- @param context: A standard dictionary for contextual values """
-
- return [('','')]
-
- _columns = {
- 'name': fields.char('Rule Name',size=64, required=True),
- 'rule_id': fields.many2one('base.action.rule','Rule'),
- 'active': fields.boolean('Active', help="If the active field is set to true,\
- it will allow you to hide the rule without removing it."),
- 'sequence': fields.integer('Sequence', help="Gives the sequence order when\
- displaying a list of rules."),
-
- 'trg_date_type': fields.selection([
- ('none','None'),
- ('create','Creation Date'),
- ('action_last','Last Action Date'),
- ('date','Date'),
- ('deadline', 'Deadline'),
- ], 'Trigger Date', size=16),
- 'trg_date_range': fields.integer('Delay after trigger date',help="Delay After Trigger Date,\
- specifies you can put a negative number " \
- "if you need a delay before the trigger date, like sending a reminder 15 minutes before a meeting."),
- 'trg_date_range_type': fields.selection([('minutes', 'Minutes'),('hour','Hours'),\
- ('day','Days'),('month','Months')], 'Delay type'),
-
-
- 'trg_user_id': fields.many2one('res.users', 'Responsible'),
-
- 'trg_partner_id': fields.many2one('res.partner', 'Partner'),
- 'trg_partner_categ_id': fields.many2one('res.partner.category', 'Partner Category'),
- 'trg_state_from': fields.selection(_state_get, 'State', size=16),
- 'trg_state_to': fields.selection(_state_get, 'Button Pressed', size=16),
- 'trg_priority_from': fields.selection(_priority_get, 'Minimum Priority'),
- 'trg_priority_to': fields.selection(_priority_get, 'Maximum Priority'),
-
- 'act_method': fields.char('Call Object Method', size=64),
- 'act_user_id': fields.many2one('res.users', 'Set responsible to'),
- 'act_state': fields.selection(_state_get, 'Set state to', size=16),
- 'act_priority': fields.selection(_priority_get, 'Set priority to'),
- 'act_email_cc': fields.char('Add watchers (Cc)', size=250, help="These people\
- will receive a copy of the future communication between partner and users by email"),
-
- 'act_remind_partner': fields.boolean('Remind Partner', help="Check this if\
- you want the rule to send a reminder by email to the partner."),
- 'act_remind_user': fields.boolean('Remind responsible', help="Check this if \
- you want the rule to send a reminder by email to the user."),
- 'act_reply_to': fields.char('Reply-To', size=64),
- 'act_remind_attach': fields.boolean('Remind with attachment', help="Check this if\
- you want that all documents attached to the object be attached \
- to the reminder email sent."),
-
- 'act_mail_to_user': fields.boolean('Mail to responsible',help="Check this if \
- you want the rule to send an email to the responsible person."),
- 'act_mail_to_watchers': fields.boolean('Mail to watchers (CC)',help="Check this\
- if you want the rule to mark CC(mail to any other person\
- defined in actions)."),
- 'act_mail_to_email': fields.char('Mail to these emails', size=128,help="Email-id \
- of the persons whom mail is to be sent"),
- 'act_mail_body': fields.text('Mail body',help="Content of mail"),
- 'regex_name': fields.char('Regular Expression on Model Name', size=128),
- 'server_action_id': fields.many2one('ir.actions.server','Server Action',help="Describes the\
- action name." \
- "eg:on which object which action to be taken on basis of which condition"),
- }
-
- _defaults = {
- 'active': lambda *a: 1,
- 'trg_date_type': lambda *a: 'none',
- 'trg_date_range_type': lambda *a: 'day',
- 'act_mail_to_user': lambda *a: 0,
- 'act_remind_partner': lambda *a: 0,
- 'act_remind_user': lambda *a: 0,
- 'act_mail_to_watchers': lambda *a: 0,
- }
-
- _order = 'sequence'
-
def _check_mail(self, cr, uid, ids, context=None):
""" Check Mail
@@ -393,6 +371,6 @@ class base_action_rule_line(osv.osv):
(_check_mail, 'Error: The mail is not well formated', ['act_mail_body']),
]
-base_action_rule_line()
+base_action_rule()
# 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 09bbb2e2f5f..72cf3e5a9fb 100644
--- a/addons/base_action_rule/base_action_rule_view.xml
+++ b/addons/base_action_rule/base_action_rule_view.xml
@@ -17,51 +17,6 @@
-
-
-
-
-
-
-
-
-
- base.action.rule.tree
- base.action.rule
- tree
-
-
-
-
-
-
-
-
-
-
-
-
- Action Rules
- base.action.rule
- form
- tree,form
-
-
-
-
-
-
-
- base.action.rule.line.form
- base.action.rule.line
- form
-
-
-
+
-
+
-
- base.action.rule.line.tree
- base.action.rule.line
+
+ base.action.rule.tree
+ base.action.ruletree
-
-
-
+
+
+
+
+
+
+
+
+ Action Rules
+ base.action.rule
+ form
+ tree,form
+
-
+
+
diff --git a/addons/base_action_rule/security/ir.model.access.csv b/addons/base_action_rule/security/ir.model.access.csv
index 982dfdebfb5..99e4fc07c4b 100644
--- a/addons/base_action_rule/security/ir.model.access.csv
+++ b/addons/base_action_rule/security/ir.model.access.csv
@@ -1,3 +1,2 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_base_action_rule","base.action.rule","model_base_action_rule",,1,1,1,1
-"access_base_action_rule_line","base.action.rule.line","model_base_action_rule_line",,1,1,1,1
diff --git a/addons/base_calendar/base_calendar.py b/addons/base_calendar/base_calendar.py
index 7d3b43664ed..f4de02f7025 100644
--- a/addons/base_calendar/base_calendar.py
+++ b/addons/base_calendar/base_calendar.py
@@ -1213,7 +1213,7 @@ e.g.: Every other month on the last Sunday of the month for 10 occurrences:\
if isinstance(select, (str, int, long)):
return ids and ids[0] or False
return ids
-
+
def compute_rule_string(self, cr, uid, datas, context=None, *args):
"""
Compute rule string.
diff --git a/addons/base_calendar/base_calendar_view.xml b/addons/base_calendar/base_calendar_view.xml
index 2a48c0be32f..d9acae67a9e 100755
--- a/addons/base_calendar/base_calendar_view.xml
+++ b/addons/base_calendar/base_calendar_view.xml
@@ -190,7 +190,7 @@
+ on_change="onchange_dates(date,duration,False,allday)" attrs="{'invisible': [('allday', '=', True)]}"/>
diff --git a/addons/crm/__init__.py b/addons/crm/__init__.py
index 1c0cc81dd38..48d1193129e 100644
--- a/addons/crm/__init__.py
+++ b/addons/crm/__init__.py
@@ -27,9 +27,6 @@ import crm_meeting
import crm_opportunity
import crm_lead
import crm_phonecall
-import crm_claim
-import crm_fundraising
-import crm_helpdesk
import report
import wizard
diff --git a/addons/crm/__openerp__.py b/addons/crm/__openerp__.py
index e4dea534b65..37ffc80bd29 100644
--- a/addons/crm/__openerp__.py
+++ b/addons/crm/__openerp__.py
@@ -26,7 +26,7 @@
'category': 'Generic Modules/CRM & SRM',
'description': """The generic Open ERP Customer Relationship Management
system enables a group of people to intelligently and efficiently manage
-leads, opportunities, claims, meeting, phonecall etc.
+leads, opportunities, meeting, phonecall etc.
It manages key tasks such as communication, identification, prioritization,
assignment, resolution and notification.
@@ -55,13 +55,10 @@ between mails and Open ERP.""",
'init_xml': [
'crm_data.xml',
'crm_meeting_data.xml',
- 'crm_claims_data.xml',
- 'crm_fund_data.xml',
- 'crm_helpdesk_data.xml',
- 'crm_lead_data.xml',
- 'crm_meeting_data.xml',
- 'crm_opportunity_data.xml',
- 'crm_phonecall_data.xml',
+ 'crm_lead_data.xml',
+ 'crm_meeting_data.xml',
+ 'crm_opportunity_data.xml',
+ 'crm_phonecall_data.xml',
],
'update_xml': [
@@ -82,49 +79,37 @@ between mails and Open ERP.""",
'crm_action_rule_view.xml',
'crm_lead_view.xml',
'crm_lead_menu.xml',
+
'crm_meeting_view.xml',
'crm_meeting_menu.xml',
+
'crm_phonecall_view.xml',
'crm_phonecall_menu.xml',
+
'crm_opportunity_view.xml',
'crm_opportunity_menu.xml',
- 'crm_fund_view.xml',
- 'crm_fund_menu.xml',
- 'crm_claims_view.xml',
- 'crm_claims_menu.xml',
-
- 'crm_helpdesk_view.xml',
- 'crm_helpdesk_menu.xml',
-
+
'security/crm_security.xml',
'security/ir.model.access.csv',
'report/crm_report_view.xml',
- 'report/crm_claim_report_view.xml',
'report/crm_lead_report_view.xml',
- 'report/crm_fundraising_report_view.xml',
'report/crm_opportunity_report_view.xml' ,
'report/crm_phonecall_report_view.xml',
'process/crm_configuration_process.xml',
],
'demo_xml': [
- 'test/test_crm_meeting.yml',
'crm_demo.xml',
- 'crm_claims_demo.xml',
- 'crm_fund_demo.xml',
- 'crm_helpdesk_demo.xml',
'crm_lead_demo.xml',
'crm_meeting_demo.xml',
'crm_opportunity_demo.xml',
'crm_phonecall_demo.xml'
],
'test': ['test/test_crm_lead.yml',
+ 'test/test_crm_meeting.yml',
'test/test_crm_opportunity.yml',
'test/test_crm_phonecall.yml',
- 'test/test_crm_fund.yml',
- 'test/test_crm_claim.yml',
- 'test/test_crm_helpdesk.yml',
],
'installable': True,
'active': False,
diff --git a/addons/crm/crm_action_rule.py b/addons/crm/crm_action_rule.py
index ff390071456..78fc7e3bd8c 100644
--- a/addons/crm/crm_action_rule.py
+++ b/addons/crm/crm_action_rule.py
@@ -152,6 +152,18 @@ class base_action_rule(osv.osv):
""" Base Action Rule """
_inherit = 'base.action.rule'
_description = 'Action Rules'
+
+ _columns = {
+ 'trg_section_id': fields.many2one('crm.case.section', 'Sales Team'),
+ 'trg_max_history': fields.integer('Maximum Communication History'),
+ 'trg_categ_id': fields.many2one('crm.case.categ', 'Category'),
+ 'regex_history' : fields.char('Regular Expression on Case History', size=128),
+ 'act_section_id': fields.many2one('crm.case.section', 'Set Team to'),
+ 'act_categ_id': fields.many2one('crm.case.categ', 'Set Category to'),
+ 'act_mail_to_partner': fields.boolean('Mail to partner',help="Check this \
+ if you want the rule to send an email to the partner."),
+ }
+
def email_send(self, cr, uid, obj, emails, body, emailfrom=tools.config.get('email_from',False), context={}):
body = self.format_mail(obj, body)
@@ -207,7 +219,7 @@ class base_action_rule(osv.osv):
res = super(base_action_rule, self).do_action(cr, uid, action, model_obj, obj, context=context)
write = {}
- if hasattr(action, act_section_id) and action.act_section_id:
+ if hasattr(action, 'act_section_id') and action.act_section_id:
obj.section_id = action.act_section_id
write['section_id'] = action.act_section_id.id
@@ -231,13 +243,6 @@ class base_action_rule(osv.osv):
return True
-base_action_rule()
-
-class base_action_rule_line(osv.osv):
- """ Base Action Rule Line """
- _inherit = 'base.action.rule.line'
- _description = 'Base Action Rule Line'
-
def state_get(self, cr, uid, context={}):
"""@param self: The object pointer
@@ -245,7 +250,7 @@ class base_action_rule_line(osv.osv):
@param uid: the current user’s ID for security checks,
@param context: A standard dictionary for contextual values """
- res = super(base_action_rule_line, self).state_get(cr, uid, context=context)
+ res = super(base_action_rule, self).state_get(cr, uid, context=context)
return res + [('escalate','Escalate')] + crm.AVAILABLE_STATES
def priority_get(self, cr, uid, context={}):
@@ -255,20 +260,10 @@ class base_action_rule_line(osv.osv):
@param uid: the current user’s ID for security checks,
@param context: A standard dictionary for contextual values """
- res = super(base_action_rule_line, self).priority_get(cr, uid, context=context)
+ res = super(base_action_rule, self).priority_get(cr, uid, context=context)
return res + crm.AVAILABLE_PRIORITIES
- _columns = {
- 'trg_section_id': fields.many2one('crm.case.section', 'Sales Team'),
- 'trg_max_history': fields.integer('Maximum Communication History'),
- 'trg_categ_id': fields.many2one('crm.case.categ', 'Category'),
- 'regex_history' : fields.char('Regular Expression on Case History', size=128),
- 'act_section_id': fields.many2one('crm.case.section', 'Set Team to'),
- 'act_categ_id': fields.many2one('crm.case.categ', 'Set Category to'),
- 'act_mail_to_partner': fields.boolean('Mail to partner',help="Check this \
- if you want the rule to send an email to the partner."),
- }
-base_action_rule_line()
+base_action_rule()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/crm/crm_action_rule_view.xml b/addons/crm/crm_action_rule_view.xml
index 78767a2f795..6211714232c 100644
--- a/addons/crm/crm_action_rule_view.xml
+++ b/addons/crm/crm_action_rule_view.xml
@@ -3,9 +3,9 @@
- base.action.rule.line.form.inherit
- base.action.rule.line
-
+ base.action.rule.form.inherit
+ base.action.rule
+ form
@@ -19,9 +19,9 @@
- base.action.rule.line.form2.inherit
- base.action.rule.line
-
+ base.action.rule.form2.inherit
+ base.action.rule
+ form
@@ -35,9 +35,9 @@
- base.action.rule.line.form3.inherit
- base.action.rule.line
-
+ base.action.rule.form3.inherit
+ base.action.rule
+ form
diff --git a/addons/crm/crm_meeting_demo.xml b/addons/crm/crm_meeting_demo.xml
index a43f3e0d571..87d49d2f635 100644
--- a/addons/crm/crm_meeting_demo.xml
+++ b/addons/crm/crm_meeting_demo.xml
@@ -17,7 +17,7 @@
-
+
@@ -32,7 +32,7 @@
-
+
@@ -48,9 +48,9 @@
-
+
-
+
@@ -62,9 +62,9 @@
-
+
-
+
@@ -76,7 +76,7 @@
-
+
@@ -91,7 +91,7 @@
-
+
diff --git a/addons/crm/crm_meeting_view.xml b/addons/crm/crm_meeting_view.xml
index 35415a9d028..4c4856f46b0 100644
--- a/addons/crm/crm_meeting_view.xml
+++ b/addons/crm/crm_meeting_view.xml
@@ -25,12 +25,15 @@
@@ -208,7 +208,7 @@
diff --git a/addons/crm_fundraising/report/__init__.py b/addons/crm_fundraising/report/__init__.py
new file mode 100644
index 00000000000..747d6315fdb
--- /dev/null
+++ b/addons/crm_fundraising/report/__init__.py
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL ().
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+import crm_fundraising_report
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
diff --git a/addons/crm/report/crm_fundraising_report.py b/addons/crm_fundraising/report/crm_fundraising_report.py
similarity index 100%
rename from addons/crm/report/crm_fundraising_report.py
rename to addons/crm_fundraising/report/crm_fundraising_report.py
diff --git a/addons/crm/report/crm_fundraising_report_view.xml b/addons/crm_fundraising/report/crm_fundraising_report_view.xml
similarity index 97%
rename from addons/crm/report/crm_fundraising_report_view.xml
rename to addons/crm_fundraising/report/crm_fundraising_report_view.xml
index e1c32726b4f..dc759d0bf1c 100644
--- a/addons/crm/report/crm_fundraising_report_view.xml
+++ b/addons/crm_fundraising/report/crm_fundraising_report_view.xml
@@ -33,7 +33,7 @@
crm.fundraising.report.formcrm.fundraising.report
-
+ form
@@ -65,7 +65,7 @@
crm.fundraising.report.selectcrm.fundraising.report
-
+ search
diff --git a/addons/crm_fundraising/security/ir.model.access.csv b/addons/crm_fundraising/security/ir.model.access.csv
new file mode 100644
index 00000000000..43e607538ee
--- /dev/null
+++ b/addons/crm_fundraising/security/ir.model.access.csv
@@ -0,0 +1,3 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+"access_crm_fundraising","crm.fundraising","model_crm_fundraising","crm.group_crm_manager",1,1,1,1
+"access_crm_fundraising_report_user","crm.fundraising.report","model_crm_fundraising_report","crm.group_crm_user",1,0,0,0
diff --git a/addons/crm/test/test_crm_fund.yml b/addons/crm_fundraising/test/test_crm_fund.yml
similarity index 100%
rename from addons/crm/test/test_crm_fund.yml
rename to addons/crm_fundraising/test/test_crm_fund.yml
diff --git a/addons/crm_helpdesk/__init__.py b/addons/crm_helpdesk/__init__.py
new file mode 100644
index 00000000000..5d270dbebf8
--- /dev/null
+++ b/addons/crm_helpdesk/__init__.py
@@ -0,0 +1,26 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL ().
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+import crm_helpdesk
+import report
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
diff --git a/addons/crm_helpdesk/__openerp__.py b/addons/crm_helpdesk/__openerp__.py
new file mode 100644
index 00000000000..93bb5af70c9
--- /dev/null
+++ b/addons/crm_helpdesk/__openerp__.py
@@ -0,0 +1,49 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL ().
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+
+{
+ 'name': 'CRM Helpdesk',
+ 'version': '1.0',
+ 'category': 'Generic Modules/CRM & SRM',
+ 'description': """Helpdesk Management""",
+ 'author': 'Tiny',
+ 'website': 'http://www.openerp.com',
+ 'depends': ['crm'],
+ 'init_xml': [
+ 'crm_helpdesk_data.xml',
+ ],
+
+ 'update_xml': [
+ 'crm_helpdesk_view.xml',
+ 'crm_helpdesk_menu.xml',
+ 'security/ir.model.access.csv',
+ 'report/crm_helpdesk_report_view.xml',
+ ],
+ 'demo_xml': [
+ 'crm_helpdesk_demo.xml',
+ 'test/test_crm_helpdesk.yml'
+ ],
+ 'installable': True,
+ 'active': False,
+}
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/crm/crm_helpdesk.py b/addons/crm_helpdesk/crm_helpdesk.py
similarity index 99%
rename from addons/crm/crm_helpdesk.py
rename to addons/crm_helpdesk/crm_helpdesk.py
index 9bb93d17e1a..fda251d16ac 100644
--- a/addons/crm/crm_helpdesk.py
+++ b/addons/crm_helpdesk/crm_helpdesk.py
@@ -22,7 +22,7 @@
from osv import fields
from osv import orm
from osv import osv
-import crm
+from crm import crm
class crm_helpdesk(osv.osv):
""" Helpdesk Cases """
diff --git a/addons/crm/crm_helpdesk_data.xml b/addons/crm_helpdesk/crm_helpdesk_data.xml
similarity index 100%
rename from addons/crm/crm_helpdesk_data.xml
rename to addons/crm_helpdesk/crm_helpdesk_data.xml
diff --git a/addons/crm/crm_helpdesk_demo.xml b/addons/crm_helpdesk/crm_helpdesk_demo.xml
similarity index 100%
rename from addons/crm/crm_helpdesk_demo.xml
rename to addons/crm_helpdesk/crm_helpdesk_demo.xml
diff --git a/addons/crm/crm_helpdesk_menu.xml b/addons/crm_helpdesk/crm_helpdesk_menu.xml
similarity index 95%
rename from addons/crm/crm_helpdesk_menu.xml
rename to addons/crm_helpdesk/crm_helpdesk_menu.xml
index bd3f0889bd1..5030fd65506 100644
--- a/addons/crm/crm_helpdesk_menu.xml
+++ b/addons/crm_helpdesk/crm_helpdesk_menu.xml
@@ -11,7 +11,7 @@
crm.helpdesktree,calendar,form
-
+
diff --git a/addons/crm/crm_helpdesk_view.xml b/addons/crm_helpdesk/crm_helpdesk_view.xml
similarity index 98%
rename from addons/crm/crm_helpdesk_view.xml
rename to addons/crm_helpdesk/crm_helpdesk_view.xml
index fa2071f950b..15f00e66cf5 100644
--- a/addons/crm/crm_helpdesk_view.xml
+++ b/addons/crm_helpdesk/crm_helpdesk_view.xml
@@ -127,7 +127,7 @@
@@ -138,7 +138,7 @@
diff --git a/addons/crm_helpdesk/report/__init__.py b/addons/crm_helpdesk/report/__init__.py
new file mode 100644
index 00000000000..0e0ad35740e
--- /dev/null
+++ b/addons/crm_helpdesk/report/__init__.py
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL ().
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+import crm_helpdesk_report
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
diff --git a/addons/crm/report/crm_helpdesk_report.py b/addons/crm_helpdesk/report/crm_helpdesk_report.py
similarity index 100%
rename from addons/crm/report/crm_helpdesk_report.py
rename to addons/crm_helpdesk/report/crm_helpdesk_report.py
diff --git a/addons/crm/report/crm_helpdesk_report_view.xml b/addons/crm_helpdesk/report/crm_helpdesk_report_view.xml
similarity index 99%
rename from addons/crm/report/crm_helpdesk_report_view.xml
rename to addons/crm_helpdesk/report/crm_helpdesk_report_view.xml
index b10f51162e7..39101be2449 100644
--- a/addons/crm/report/crm_helpdesk_report_view.xml
+++ b/addons/crm_helpdesk/report/crm_helpdesk_report_view.xml
@@ -30,7 +30,7 @@
crm.helpdesk.report.formcrm.helpdesk.report
-
+ form
diff --git a/addons/crm_helpdesk/security/ir.model.access.csv b/addons/crm_helpdesk/security/ir.model.access.csv
new file mode 100644
index 00000000000..c1420a5b2d6
--- /dev/null
+++ b/addons/crm_helpdesk/security/ir.model.access.csv
@@ -0,0 +1,3 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+"access_crm_helpdesk","crm.helpdesk","model_crm_helpdesk","crm.group_crm_manager",1,1,1,1
+"access_report_crm_helpdesk","report.crm.helpdesk","model_crm_helpdesk_report","crm.group_crm_user",1,1,1,1
diff --git a/addons/crm/test/test_crm_helpdesk.yml b/addons/crm_helpdesk/test/test_crm_helpdesk.yml
similarity index 100%
rename from addons/crm/test/test_crm_helpdesk.yml
rename to addons/crm_helpdesk/test/test_crm_helpdesk.yml
diff --git a/addons/document_ftp/ftpserver/abstracted_fs.py b/addons/document_ftp/ftpserver/abstracted_fs.py
index 54b2cb9830f..58fe3cc358b 100644
--- a/addons/document_ftp/ftpserver/abstracted_fs.py
+++ b/addons/document_ftp/ftpserver/abstracted_fs.py
@@ -97,7 +97,7 @@ class content_wrapper(StringIO.StringIO):
cr = db.cursor()
cr.commit()
try:
- getattr(self.pool.get('document.directory.content'), 'process_write_'+self.node.content.extension[1:])(cr, self.uid, self.node, self.getvalue())
+ getattr(self.pool.get('document.directory.content'), 'process_write')(cr, self.uid, self.node, self.getvalue())
finally:
cr.commit()
cr.close()
diff --git a/addons/smtpclient/smtpclient.py b/addons/smtpclient/smtpclient.py
index 36b49c77bea..e37235de71f 100644
--- a/addons/smtpclient/smtpclient.py
+++ b/addons/smtpclient/smtpclient.py
@@ -539,8 +539,8 @@ class smtpclient(osv.osv):
sids = queue.search(cr, uid, [('state','not in',['send','sending']), ('server_id','in',ids)], order="priority", limit=30)
message = ""
- if len(ids) > 0:
- message = "sending %s emails from message queuq !" % (len(ids))
+ if len(sids) > 0:
+ message = "sending %s emails from message queue !" % (len(sids))
logger.notifyChannel('smtp', netsvc.LOG_INFO, message)
result = self. _send_emails(cr, uid, sids, {})