[IMP]: crm(meeting): Changes related crm meeting improvements bug #505206
* Changes related to out _inherit instead of _inherits * Meeting view improvement * Improvement in Attendee's Invitation and Recurrence's maintenance bzr revid: rpa@openerp.co.in-20100112094008-6qk7i4eqlgzb4ljg
This commit is contained in:
parent
6c547a3189
commit
7314cc0c9b
|
@ -29,134 +29,164 @@ import tools
|
|||
from tools.translate import _
|
||||
from dateutil import parser
|
||||
|
||||
class crm_meeting_categ(osv.osv):
|
||||
_name = "crm.meeting.categ"
|
||||
_description = "Category of Meetings"
|
||||
_columns = {
|
||||
'name': fields.char('Meeting Category Name', size=64, required=True, translate=True),
|
||||
'probability': fields.float('Probability (%)', required=True),
|
||||
'section_id': fields.many2one('crm.case.section', 'Case Section'),
|
||||
}
|
||||
_defaults = {
|
||||
'probability': lambda *args: 0.0
|
||||
}
|
||||
crm_meeting_categ()
|
||||
|
||||
class rrule_wizard(osv.osv):
|
||||
_inherit = "calendar.custom.rrule"
|
||||
|
||||
_columns = {
|
||||
'case_id':fields.many2one('crm.case','Case'),
|
||||
}
|
||||
rrule_wizard()
|
||||
|
||||
class crm_meeting(osv.osv):
|
||||
_name = 'crm.meeting'
|
||||
_description = "Meeting Cases"
|
||||
_order = "id desc"
|
||||
_inherits = {'crm.case': "inherit_case_id"}
|
||||
__attribute__ = {
|
||||
'class': {'field': 'class', 'type': 'selection'},
|
||||
'created': {'field': 'create_date', 'type': 'datetime'}, # keep none for now
|
||||
'description': {'field': 'description', 'type': 'text'},
|
||||
'dtstart': {'field': 'date', 'type': 'datetime'},
|
||||
'location': {'field': 'location', 'type': 'text'},
|
||||
#'organizer': {'field': 'partner_id', 'sub-field': 'name', 'type': 'many2one'},
|
||||
'priority': {'field': 'priority', 'type': 'int'},
|
||||
'dtstamp' : {'field': 'date', 'type': 'datetime'},
|
||||
'seq': None,
|
||||
'status': {'field': 'state', 'type': 'selection', 'mapping': {'tentative': 'draft', \
|
||||
'confirmed': 'open' , 'cancelled': 'cancel'}},
|
||||
'summary': {'field': 'name', 'type': 'text'},
|
||||
'transp': {'field': 'transparent', 'type': 'text'},
|
||||
'uid': {'field': 'id', 'type': 'text'},
|
||||
'url': {'field': 'caldav_url', 'type': 'text'},
|
||||
'recurid': None,
|
||||
# 'attach': {'field': 'attachment_ids', 'sub-field': 'datas', 'type': 'list'},
|
||||
'attendee': {'field': 'attendees', 'type': 'text'},
|
||||
# 'categories': {'field': 'categ_id', 'sub-field': 'name'},
|
||||
'categories': {'field': 'categ_id', 'type': 'many2one', 'object': 'crm.case.categ'},
|
||||
'comment': None,
|
||||
'contact': None,
|
||||
'exdate' : {'field': 'exdate', 'type': 'datetime'},
|
||||
'exrule' : {'field': 'exrule', 'type': 'text'},
|
||||
'rstatus': None,
|
||||
'related': None,
|
||||
'resources': None,
|
||||
'rdate': None,
|
||||
'rrule': {'field': 'rrule', 'type': 'text'},
|
||||
'x-openobject-model': {'value': _name, 'type': 'text'},
|
||||
# 'duration': {'field': 'duration'},
|
||||
'dtend': {'field': 'date_deadline', 'type': 'datetime'},
|
||||
'valarm': {'field': 'alarms', 'type': 'text'},
|
||||
_inherit = "crm.case"
|
||||
|
||||
__attribute__ = {
|
||||
'class': {'field': 'class', 'type': 'selection'},
|
||||
'created': {'field': 'create_date', 'type': 'datetime'},
|
||||
'description': {'field': 'description', 'type': 'text'},
|
||||
'dtstart': {'field': 'date', 'type': 'datetime'},
|
||||
'location': {'field': 'location', 'type': 'text'},
|
||||
#'organizer': {'field': 'partner_id', 'sub-field': 'name', 'type': 'many2one'},
|
||||
'priority': {'field': 'priority', 'type': 'int'},
|
||||
'dtstamp' : {'field': 'date', 'type': 'datetime'},
|
||||
'seq': None,
|
||||
'status': {'field': 'state', 'type': 'selection', 'mapping': {'tentative': 'draft', \
|
||||
'confirmed': 'open' , 'cancelled': 'cancel'}},
|
||||
'summary': {'field': 'name', 'type': 'text'},
|
||||
'transp': {'field': 'transparent', 'type': 'text'},
|
||||
'uid': {'field': 'id', 'type': 'text'},
|
||||
'url': {'field': 'caldav_url', 'type': 'text'},
|
||||
'recurid': None,
|
||||
# 'attach': {'field': 'attachment_ids', 'sub-field': 'datas', 'type': 'list'},
|
||||
'attendee': {'field': 'attendee_ids', 'type': 'many2many', 'object': 'crm.caldav.attendee'},
|
||||
# 'categories': {'field': 'categ_id', 'sub-field': 'name'},
|
||||
'categories': {'field': 'categ_id', 'type': 'many2one', 'object': 'crm.meeting.categ'},
|
||||
'comment': None,
|
||||
'contact': None,
|
||||
'exdate' : {'field': 'exdate', 'type': 'datetime'},
|
||||
'exrule' : {'field': 'exrule', 'type': 'text'},
|
||||
'rstatus': None,
|
||||
'related': None,
|
||||
'resources': None,
|
||||
'rdate': None,
|
||||
'rrule': {'field': 'rrule', 'type': 'text'},
|
||||
'x-openobject-model': {'value': _name, 'type': 'text'},
|
||||
# 'duration': {'field': 'duration'},
|
||||
'dtend': {'field': 'date_deadline', 'type': 'datetime'},
|
||||
'valarm': {'field': 'caldav_alarm_id', 'type': 'many2one', 'object': 'calendar.alarm'},
|
||||
}
|
||||
|
||||
def _get_data(self, cr, uid, ids, name, arg, context):
|
||||
result = {}
|
||||
attendee_obj = self.pool.get('calendar.attendee')
|
||||
alarm_obj = self.pool.get('calendar.alarm')
|
||||
model_obj = self.pool.get('ir.model')
|
||||
model_id = model_obj.search(cr, uid, [('model','=',self._name)])[0]
|
||||
for meeting_id in ids:
|
||||
result[meeting_id] = {}
|
||||
if "attendees" in name:
|
||||
attendee_ids = attendee_obj.search(cr, uid, [('ref','=','%s,%d'%(self._name, meeting_id))])
|
||||
result[meeting_id]["attendees"] = attendee_obj.export_cal(cr, uid, attendee_ids)
|
||||
if "alarms" in name:
|
||||
alarm_ids = alarm_obj.search(cr, uid, [('model_id','=',model_id), ('res_id','=',meeting_id)])
|
||||
result[meeting_id]["alarms"] = alarm_obj.export_cal(cr, uid, alarm_ids)
|
||||
return result
|
||||
|
||||
def _set_data(self, cr, uid, meeting_id, name, value, arg, context):
|
||||
if not value:
|
||||
return
|
||||
attendee_obj = self.pool.get('calendar.attendee')
|
||||
model_obj = self.pool.get('ir.model')
|
||||
alarm_obj = self.pool.get('calendar.alarm')
|
||||
eventdata = self.read(cr, uid, meeting_id, [name], context=context)
|
||||
if name == "attendees":
|
||||
attendee_ids = attendee_obj.import_cal(cr, uid, eventdata['attendees'])
|
||||
vals = {
|
||||
'ref':'%s,%d'%('crm.meeting', meeting_id)
|
||||
}
|
||||
attendee_obj.write(cr, uid, attendee_ids, vals)
|
||||
if name == "alarms":
|
||||
model_id = model_obj.search(cr, uid, [('model','=',self._name)])[0]
|
||||
alarm_ids = alarm_obj.import_cal(cr, uid, eventdata['alarms'])
|
||||
vals = {
|
||||
'res_id' : meeting.id,
|
||||
'model_id' : model_id,
|
||||
}
|
||||
alarm_obj.write(cr, uid, alarm_ids, vals)
|
||||
alarm = alarm_obj.browse(cr, uid, alarm_ids)[0]
|
||||
self.write(cr, uid, [meeting_id], {'alarm_id':alarm.alarm_id})
|
||||
def _get_duration(self, cr, uid, ids, name, arg, context):
|
||||
res = {}
|
||||
for id in ids:
|
||||
meeting = self.browse(cr, uid, id, context=context)
|
||||
start = datetime.datetime.strptime(meeting.date, "%Y-%m-%d %H:%M:%S")
|
||||
end = datetime.datetime.strptime(meeting.date_deadline[:19], "%Y-%m-%d %H:%M:%S")
|
||||
diff = end - start
|
||||
duration = float(diff.days)* 24 + (float(diff.seconds) / 3600)
|
||||
res[id] = round(duration, 2)
|
||||
return res
|
||||
|
||||
def _set_duration(self, cr, uid, id, name, value, arg, context):
|
||||
meeting = self.browse(cr, uid, id, context=context)
|
||||
start = datetime.datetime.strptime(meeting.date, "%Y-%m-%d %H:%M:%S")
|
||||
end = start + datetime.timedelta(hours=value)
|
||||
cr.execute("UPDATE crm_meeting set date_deadline='%s' \
|
||||
where id=%s"% (end.strftime("%Y-%m-%d %H:%M:%S"), id))
|
||||
return True
|
||||
|
||||
|
||||
def _get_rrule(self, cr, uid, ids, name, arg, context):
|
||||
res = {}
|
||||
rrule_obj = self.pool.get('calendar.custom.rrule')
|
||||
for id in ids:
|
||||
meeting = self.browse(cr, uid, id, context=context)
|
||||
type = meeting.rrule_type
|
||||
if type == 'none' or not type:
|
||||
res[id] = ''
|
||||
cr.execute('DELETE from calendar_custom_rrule where case_id=%s' % (id))
|
||||
elif type != 'custom':
|
||||
rrule = self.pool.get('calendar.custom.rrule')
|
||||
rrulestr = rrule.compute_rule_string(cr, uid, {'freq': type.upper(),\
|
||||
'interval': 1})
|
||||
res[id] = rrulestr
|
||||
cr.execute('DELETE from calendar_custom_rrule where case_id=%s' % (id))
|
||||
elif type == 'custom':
|
||||
for rrule in meeting.rule_ids:
|
||||
rule_datas = rrule_obj.read(cr, uid, rrule.id)
|
||||
rulestr = rrule_obj.compute_rule_string(cr, uid, rule_datas)
|
||||
res[id] = rulestr
|
||||
cr.commit()
|
||||
return res
|
||||
|
||||
_columns = {
|
||||
'inherit_case_id': fields.many2one('crm.case', 'Case', ondelete='cascade'),
|
||||
'name': fields.char('Description',size=64,required=True),
|
||||
'section_id': fields.many2one('crm.case.section', 'Section', select=True, help='Section to which Case belongs to. Define Responsible user and Email account for mail gateway.'),
|
||||
'date': fields.datetime('Date'),
|
||||
'date_deadline': fields.datetime('Deadline'),
|
||||
'duration': fields.function(_get_duration, method=True, \
|
||||
fnct_inv=_set_duration, string='Duration'),
|
||||
'categ_id': fields.many2one('crm.meeting.categ', 'Category', \
|
||||
domain="[('section_id','=',section_id)]", \
|
||||
help='Category related to the section.Subdivide the CRM cases \
|
||||
independently or section-wise.'),
|
||||
'description': fields.text('Your action'),
|
||||
'class': fields.selection([('public', 'Public'), ('private', 'Private'), \
|
||||
('confidential', 'Confidential')], 'Privacy'),
|
||||
'location': fields.char('Location', size=264, help="Gives Location of Meeting"),
|
||||
'freebusy': fields.text('FreeBusy'),
|
||||
('confidential', 'Confidential')], 'Mark as'),
|
||||
'location': fields.char('Location', size=264, help="Gives Location of Meeting"),
|
||||
'show_as': fields.selection([('free', 'Free'), \
|
||||
('busy', 'Busy')],
|
||||
'show_as'),
|
||||
'caldav_url': fields.char('Caldav URL', size=264),
|
||||
('busy', 'Busy')],
|
||||
'Show as'),
|
||||
'caldav_url': fields.char('Caldav URL', size=264),
|
||||
'exdate': fields.text('Exception Date/Times', help="This property defines the list\
|
||||
of date/time exceptions for arecurring calendar component."),
|
||||
of date/time exceptions for arecurring calendar component."),
|
||||
'exrule': fields.char('Exception Rule', size=352, help="defines a rule or repeating pattern\
|
||||
for anexception to a recurrence set"),
|
||||
'rrule': fields.char('Recurrent Rule', size=352, invisible="True"),
|
||||
for anexception to a recurrence set"),
|
||||
'rrule': fields.function(_get_rrule, string='Recurrent Rule', method=True,\
|
||||
store=True, type='char', size=124),
|
||||
'rrule_type' : fields.selection([('none', 'None'), ('daily', 'Daily'), \
|
||||
('weekly', 'Weekly'), ('monthly', 'Monthly'), ('yearly', 'Yearly'), ('custom','Custom')], 'Recurrency'),
|
||||
'attendees': fields.function(_get_data, method=True,\
|
||||
fnct_inv=_set_data, string='Attendees', type="text", multi='attendees'),
|
||||
'alarms': fields.function(_get_data, method=True,\
|
||||
fnct_inv=_set_data, string='Attendees', type="text", multi='alarms'),
|
||||
'alarm_id': fields.many2one('res.alarm', 'Alarm'),
|
||||
('weekly', 'Weekly'), ('monthly', 'Monthly'), ('yearly', 'Yearly'), ('custom', 'Custom')], 'Recurrency'),
|
||||
'attendee_ids': fields.many2many('calendar.attendee', 'crm_attendee_rel', 'case_id', \
|
||||
'attendee_id', 'Attendees'),
|
||||
'alarm_id': fields.many2one('res.alarm', 'Alarm'),
|
||||
'caldav_alarm_id': fields.many2one('calendar.alarm', 'Alarm'),
|
||||
'rule_ids': fields.one2many('calendar.custom.rrule', 'case_id', 'Rules'),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'class': lambda *a: 'public',
|
||||
'show_as' : lambda *a : 'busy',
|
||||
'class': lambda *a: 'public',
|
||||
'show_as' : lambda *a : 'busy',
|
||||
}
|
||||
|
||||
def do_alarm_create(self, cr, uid, ids, context={}):
|
||||
alarm_obj = self.pool.get('calendar.alarm')
|
||||
model_obj = self.pool.get('ir.model')
|
||||
attendee_obj = self.pool.get('calendar.attendee')
|
||||
model_id = model_obj.search(cr, uid, [('model','=',self._name)])[0]
|
||||
|
||||
for meeting in self.browse(cr, uid, ids):
|
||||
self.do_alarm_unlink(cr, uid, [meeting.id])
|
||||
attendee_ids = attendee_obj.search(cr, uid, [('ref','=','%s,%d'%(self._name, meeting.id))])
|
||||
basic_alarm = meeting.alarm_id
|
||||
if basic_alarm:
|
||||
vals = {
|
||||
'action': 'display',
|
||||
'description': meeting.description,
|
||||
'name': meeting.name,
|
||||
'attendee_ids': [(6,0, attendee_ids)],
|
||||
'attendee_ids': [(6,0, map(lambda x:x.id, meeting.attendee_ids))],
|
||||
'trigger_related': basic_alarm.trigger_related,
|
||||
'trigger_duration': basic_alarm.trigger_duration,
|
||||
'trigger_occurs': basic_alarm.trigger_occurs,
|
||||
|
@ -165,12 +195,13 @@ class crm_meeting(osv.osv):
|
|||
'repeat': basic_alarm.repeat,
|
||||
'state' : 'run',
|
||||
'event_date' : meeting.date,
|
||||
'event_end_date' : meeting.date_deadline,
|
||||
'res_id' : meeting.id,
|
||||
'model_id' : model_id,
|
||||
'user_id' : uid
|
||||
}
|
||||
alarm_id = alarm_obj.create(cr, uid, vals)
|
||||
cr.execute('Update crm_meeting set caldav_alarm_id=%s \
|
||||
where id=%s' % (alarm_id, meeting.id))
|
||||
cr.commit()
|
||||
return True
|
||||
|
||||
|
@ -182,6 +213,8 @@ class crm_meeting(osv.osv):
|
|||
alarm_ids = alarm_obj.search(cr, uid, [('model_id','=',model_id), ('res_id','=',meeting.id)])
|
||||
if alarm_ids and len(alarm_ids):
|
||||
alarm_obj.unlink(cr, uid, alarm_ids)
|
||||
cr.execute('Update crm_meeting set caldav_alarm_id=NULL, \
|
||||
alarm_id=NULL where id=%s' % (meeting.id))
|
||||
cr.commit()
|
||||
return True
|
||||
|
||||
|
@ -236,8 +269,7 @@ class crm_meeting(osv.osv):
|
|||
ids = select
|
||||
result = []
|
||||
if ids and (base_start_date or base_until_date):
|
||||
cr.execute("select m.id, m.rrule, c.date, m.exdate from crm_meeting m\
|
||||
join crm_case c on (c.id=m.inherit_case_id) \
|
||||
cr.execute("select m.id, m.rrule, m.date, m.exdate from crm_meeting m\
|
||||
where m.id in ("+ ','.join(map(lambda x: str(x), ids))+")")
|
||||
|
||||
count = 0
|
||||
|
@ -402,32 +434,6 @@ class crm_meeting(osv.osv):
|
|||
return res
|
||||
|
||||
|
||||
def _map_ids(self, method, cr, uid, ids, *args, **argv):
|
||||
if isinstance(ids, (str, int, long)):
|
||||
select = [ids]
|
||||
else:
|
||||
select = ids
|
||||
case_data = self.browse(cr, uid, select)
|
||||
new_ids = []
|
||||
for case in case_data:
|
||||
if case.inherit_case_id:
|
||||
new_ids.append(case.inherit_case_id.id)
|
||||
res = getattr(self.pool.get('crm.case'), method)(cr, uid, new_ids, *args, **argv)
|
||||
if isinstance(ids, (str, int, long)) and isinstance(res, list):
|
||||
return res and res[0] or False
|
||||
return res
|
||||
|
||||
def onchange_rrule_type(self, cr, uid, ids, type, *args, **argv):
|
||||
if type == 'none':
|
||||
return {'value': {'rrule': ''}}
|
||||
if type == 'custom':
|
||||
return {}
|
||||
rrule = self.pool.get('caldav.set.rrule')
|
||||
rrulestr = rrule.compute_rule_string(cr, uid, {'freq': type.upper(),\
|
||||
'interval': 1})
|
||||
return {'value': {'rrule': rrulestr}}
|
||||
|
||||
|
||||
def onchange_case_id(self, cr, uid, ids, *args, **argv):
|
||||
return self._map_ids('onchange_case_id', cr, uid, ids, *args, **argv)
|
||||
def onchange_partner_id(self, cr, uid, ids, *args, **argv):
|
||||
|
@ -529,10 +535,10 @@ class res_users(osv.osv):
|
|||
def _get_user_avail(self, cr, uid, ids, context=None):
|
||||
current_datetime = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
|
||||
res = super(res_users, self)._get_user_avail(cr, uid, ids, context)
|
||||
cr.execute("SELECT crm_case.user_id, 'busy' as status \
|
||||
FROM crm_meeting meeting, crm_case \
|
||||
WHERE meeting.inherit_case_id = crm_case.id \
|
||||
and crm_case.date <= %s and crm_case.date_deadline >= %s and crm_case.user_id = ANY(%s) and meeting.show_as = %s",
|
||||
cr.execute("SELECT m.user_id, 'busy' as status \
|
||||
FROM crm_meeting m\
|
||||
where m.date <= %s and m.date_deadline >= %s \
|
||||
and m.user_id = ANY(%s) and m.show_as = %s",
|
||||
(current_datetime, current_datetime , ids, 'busy'))
|
||||
result = cr.dictfetchall()
|
||||
for user_data in result:
|
||||
|
@ -541,4 +547,5 @@ class res_users(osv.osv):
|
|||
res.update({user_id:status})
|
||||
return res
|
||||
res_users()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -8,57 +8,19 @@
|
|||
</record>
|
||||
<!-- CASE CATEGORY(categ_id) -->
|
||||
|
||||
<record model="crm.case.categ" id="categ_meet1">
|
||||
<record model="crm.meeting.categ" id="categ_meet1">
|
||||
<field name="name">Customer Meeting</field>
|
||||
<field name="section_id" ref="section_support1"/>
|
||||
</record>
|
||||
<record model="crm.case.categ" id="categ_meet2">
|
||||
<record model="crm.meeting.categ" id="categ_meet2">
|
||||
<field name="name">Internal Meeting</field>
|
||||
<field name="section_id" ref="section_support1"/>
|
||||
</record>
|
||||
<record model="crm.case.categ" id="categ_meet3">
|
||||
<record model="crm.meeting.categ" id="categ_meet3">
|
||||
<field name="name">Phone Call</field>
|
||||
<field name="section_id" ref="section_support1"/>
|
||||
</record>
|
||||
|
||||
<!-- CASE CATEGORY2(category2_id) -->
|
||||
|
||||
<record model="crm.case.category2" id="category_meet1">
|
||||
<field name="name">Office</field>
|
||||
<field name="section_id" ref="section_support1"/>
|
||||
</record>
|
||||
<record model="crm.case.category2" id="category_meet2">
|
||||
<field name="name">Home</field>
|
||||
<field name="section_id" ref="section_support1"/>
|
||||
</record>
|
||||
<record model="crm.case.category2" id="category_meet3">
|
||||
<field name="name">Customer Office</field>
|
||||
<field name="section_id" ref="section_support1"/>
|
||||
</record>
|
||||
|
||||
<!-- CASE STAGE(stage_id) -->
|
||||
|
||||
<record model="crm.case.stage" id="stage_meet1">
|
||||
<field name="name">Fixed</field>
|
||||
<field name="section_id" ref="section_support1"/>
|
||||
</record>
|
||||
<record model="crm.case.stage" id="stage_meet2">
|
||||
<field name="name">Not fixed</field>
|
||||
<field name="section_id" ref="section_support1"/>
|
||||
</record>
|
||||
<record model="crm.case.stage" id="stage_meet3">
|
||||
<field name="name">Invalid</field>
|
||||
<field name="section_id" ref="section_support1"/>
|
||||
</record>
|
||||
<record model="crm.case.stage" id="stage_meet4">
|
||||
<field name="name">Awaiting Response</field>
|
||||
<field name="section_id" ref="section_support1"/>
|
||||
</record>
|
||||
<record model="crm.case.stage" id="stage_meet5">
|
||||
<field name="name">Future</field>
|
||||
<field name="section_id" ref="section_support1"/>
|
||||
</record>
|
||||
|
||||
<record model="res.request.link" id="request_link_meeting">
|
||||
<field name="name">Case Meeting</field>
|
||||
<field name="object">crm.meeting</field>
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
<field name="section_id" ref="crm.section_support1"/>
|
||||
<field eval="time.strftime('%Y-%m-03 10:20:03')" name="date"/>
|
||||
<field name="categ_id" ref="crm.categ_meet2"/>
|
||||
<field name="stage_id" ref="crm.stage_meet2"/>
|
||||
<field eval=""Follow-up on proposal"" name="name"/>
|
||||
<field eval="time.strftime('%Y-%m-10')" name="date_deadline"/>
|
||||
<field eval="6.3" name="duration"/>
|
||||
|
@ -26,7 +25,6 @@
|
|||
<record id="crm_case_initialdiscussion0" model="crm.meeting">
|
||||
<field name="partner_address_id" ref="base.res_partner_address_2"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field name="category2_id" ref="crm.category_meet1"/>
|
||||
<field eval="7.0" name="duration"/>
|
||||
<field name="partner_id" ref="base.res_partner_10"/>
|
||||
<field eval=""3"" name="priority"/>
|
||||
|
@ -35,7 +33,6 @@
|
|||
<field name="section_id" ref="crm.section_support1"/>
|
||||
<field eval="time.strftime('%Y-%m-05 12:01:01')" name="date"/>
|
||||
<field name="categ_id" ref="crm.categ_meet3"/>
|
||||
<field name="stage_id" ref="crm.stage_meet4"/>
|
||||
<field eval=""Initial discussion"" name="name"/>
|
||||
<field eval="time.strftime('%Y-%m-12')" name="date_deadline"/>
|
||||
<field eval=""contact@tecsas.fr"" name="email_from"/>
|
||||
|
@ -44,7 +41,6 @@
|
|||
<record id="crm_case_discusspricing0" model="crm.meeting">
|
||||
<field name="partner_address_id" ref="base.res_partner_address_zen"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field name="category2_id" ref="crm.category_meet3"/>
|
||||
<field eval="3.0" name="duration"/>
|
||||
<field name="partner_id" ref="base.res_partner_3"/>
|
||||
<field eval=""1"" name="priority"/>
|
||||
|
@ -54,7 +50,6 @@
|
|||
<field name="section_id" ref="crm.section_support1"/>
|
||||
<field eval="time.strftime('%Y-%m-12 15:55:05')" name="date"/>
|
||||
<field name="categ_id" ref="crm.categ_meet1"/>
|
||||
<field name="stage_id" ref="crm.stage_meet1"/>
|
||||
<field eval=""Discuss pricing"" name="name"/>
|
||||
<field eval="time.strftime('%Y-%m-20')" name="date_deadline"/>
|
||||
</record>
|
||||
|
@ -62,7 +57,6 @@
|
|||
<record id="crm_case_reviewneeds0" model="crm.meeting">
|
||||
<field name="partner_address_id" ref="base.res_partner_address_15"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field name="category2_id" ref="crm.category_meet2"/>
|
||||
<field eval="6.0" name="duration"/>
|
||||
<field name="partner_id" ref="base.res_partner_11"/>
|
||||
<field eval=""3"" name="priority"/>
|
||||
|
@ -71,7 +65,6 @@
|
|||
<field name="section_id" ref="crm.section_support1"/>
|
||||
<field eval="time.strftime('%Y-%m-20 10:02:02')" name="date"/>
|
||||
<field name="categ_id" ref="crm.categ_meet3"/>
|
||||
<field name="stage_id" ref="crm.stage_meet5"/>
|
||||
<field eval=""Review needs"" name="name"/>
|
||||
<field eval="time.strftime('%Y-%m-25')" name="date_deadline"/>
|
||||
</record>
|
||||
|
@ -79,7 +72,6 @@
|
|||
<record id="crm_case_changesindesigning0" model="crm.meeting">
|
||||
<field name="partner_address_id" ref="base.res_partner_address_1"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field name="category2_id" ref="crm.category_meet1"/>
|
||||
<field eval="05" name="duration"/>
|
||||
<field name="partner_id" ref="base.res_partner_9"/>
|
||||
<field eval=""3"" name="priority"/>
|
||||
|
@ -88,7 +80,6 @@
|
|||
<field name="section_id" ref="crm.section_support1"/>
|
||||
<field eval="time.strftime('%Y-%m-22 11:05:05')" name="date"/>
|
||||
<field name="categ_id" ref="crm.categ_meet2"/>
|
||||
<field name="stage_id" ref="crm.stage_meet2"/>
|
||||
<field eval=""Changes in Designing"" name="name"/>
|
||||
<field eval="time.strftime('%Y-%m-28')" name="date_deadline"/>
|
||||
<field eval=""info@opensides.be"" name="email_from"/>
|
||||
|
@ -97,7 +88,6 @@
|
|||
<record id="crm_case_updatethedata0" model="crm.meeting">
|
||||
<field name="partner_address_id" ref="base.res_partner_address_7"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field name="category2_id" ref="crm.category_meet2"/>
|
||||
<field name="partner_id" ref="base.res_partner_4"/>
|
||||
<field eval=""3"" name="priority"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
|
@ -105,7 +95,6 @@
|
|||
<field name="section_id" ref="crm.section_support1"/>
|
||||
<field eval="time.strftime('%Y-%m-18 13:12:49')" name="date"/>
|
||||
<field name="categ_id" ref="crm.categ_meet2"/>
|
||||
<field name="stage_id" ref="crm.stage_meet1"/>
|
||||
<field eval=""Update the data"" name="name"/>
|
||||
<field eval="13.3" name="duration"/>
|
||||
<field eval="time.strftime('%Y-%m-28')" name="date_deadline"/>
|
||||
|
|
|
@ -42,7 +42,13 @@
|
|||
<field name="act_window_id" ref="crm_case_categ_meet_create_partner"/>
|
||||
</record>
|
||||
|
||||
<act_window
|
||||
<!-- Available alarms-->
|
||||
|
||||
<menuitem name="Available alarms" id="menu_crm_meeting_avail_alarm"
|
||||
action="caldav.action_res_alarm_view"
|
||||
parent="menu_crm_configuration" />
|
||||
|
||||
<act_window
|
||||
id="crm_case_categ_meet_case"
|
||||
name="Schedule a Meeting"
|
||||
res_model="crm.meeting"
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
<field name="section_id" select="1" widget="selection"/>
|
||||
<field name="user_id"/>
|
||||
</group>
|
||||
<newline/>
|
||||
<newline/>
|
||||
<separator colspan="4"/>
|
||||
<group col="2" colspan="2">
|
||||
<button icon="gtk-cancel" special="cancel" string="Cancel"/>
|
||||
|
@ -39,68 +39,50 @@
|
|||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Meetings Form">
|
||||
<field name="name" select="1" string="Title"/>
|
||||
<group col="3" colspan="2">
|
||||
<field name="section_id" widget="selection"
|
||||
string="Calendar"/>
|
||||
<button string="Invite Attendees"
|
||||
name="%(caldav.action_view_calendar_invite_attendee_wizard)d"
|
||||
icon="terp-partner" type="action"
|
||||
context="{'model' : 'crm.meeting'}" />
|
||||
</group>
|
||||
<field name="location" />
|
||||
<field name="categ_id" select="2" on_change="onchange_categ_id(categ_id)"/>
|
||||
<field name="date" string="Start Date" required="1"/>
|
||||
<field name="date_deadline" string="End Date" required="1"/>
|
||||
<notebook colspan="4">
|
||||
<page string="Meeting">
|
||||
<field name="alarm_id" colspan="1" string="Alarm"/>
|
||||
<group colspan="2" col="3">
|
||||
<field name="rrule_type" string="Recurrency"
|
||||
on_change="onchange_rrule_type(rrule_type)"
|
||||
colspan="1" />
|
||||
<button string="Custom"
|
||||
name="%(caldav.action_view_caldav_set_rrule_wizard)d"
|
||||
icon="gtk-save-as" type="action" context="{'model' : 'crm.meeting'}"
|
||||
attrs="{'readonly':[('rrule_type','!=','custom')]}"
|
||||
/>
|
||||
</group>
|
||||
<separator string="Description" colspan="4"/>
|
||||
<field name="description" nolabel="1" colspan="4"/>
|
||||
<field name="show_as" string="Show as"/>
|
||||
<field name="class" string="Mark as"/>
|
||||
<separator string="" colspan="4"/>
|
||||
<group col="8" colspan="4">
|
||||
<field name="state" select="2"/>
|
||||
<button name="case_open" string="Confirm Meeting" states="draft,cancel,pending" type="object" icon="terp-crm"/>
|
||||
<button name="case_cancel" string="Cancel Meeting" states="draft,open,pending" type="object" icon="gtk-cancel"/>
|
||||
<button name="case_reset" string="Reset to Unconfirmed" states="done,open,cancel" type="object" icon="gtk-convert"/>
|
||||
</group>
|
||||
</page>
|
||||
|
||||
<page string="Partner Info">
|
||||
<field name="partner_id" on_change="onchange_partner_id(partner_id, email_from)" />
|
||||
<field name="partner_address_id" on_change="onchange_partner_address_id(partner_address_id, email_from)"/>
|
||||
<field name="email_from"/>
|
||||
</page>
|
||||
<page string="Other Info">
|
||||
<field name="user_id" select="2" string="Responsible" required="1"/>
|
||||
<group colspan="2">
|
||||
<field name="case_id" on_change="onchange_case_id(case_id, name, partner_id)"/>
|
||||
<button string="Assign" name="%(crm_meeting_generic_wizard_act)d" type="action" />
|
||||
</group>
|
||||
<separator string="Attendees" colspan="4"/>
|
||||
<field name="attendees" nolabel="1" colspan="4"/>
|
||||
<field name="rrule" string="Recurrent Rules" colspan="4"/>
|
||||
<field name="exrule" string="Exception Rules" colspan="4"/>
|
||||
<separator string="Exception Dates" colspan="4"/>
|
||||
<field name="exdate" nolabel="1" colspan="4" />
|
||||
|
||||
<group col="4" colspan="6">
|
||||
<field name="name" select="1" string="Summary"
|
||||
colspan="3" />
|
||||
<field name="section_id" widget="selection"
|
||||
colspan="1" />
|
||||
</group>
|
||||
<group col="6" colspan="6">
|
||||
<field name="date" string="Start Date" required="1" />
|
||||
<field name="duration" widget="float_time" />
|
||||
<field name="date_deadline" string="End Date" required="1" />
|
||||
<field name="location" />
|
||||
<field name="categ_id" widget="selection" />
|
||||
<field name="rrule_type" string="Repeat"/>
|
||||
</group>
|
||||
<group col="1" colspan="4" attrs="{'invisible': [('rrule_type', '!=', 'custom')]}">
|
||||
<field name="rule_ids" nolabel="1" colspan="4"
|
||||
mode="form,tree"/>
|
||||
</group>
|
||||
<notebook colspan="4">
|
||||
<page string="Description">
|
||||
<separator string="Description" colspan="4" />
|
||||
<field name="description" nolabel="1" colspan="4" />
|
||||
</page>
|
||||
</notebook>
|
||||
<page string="Attendee Detail">
|
||||
<button string="Invite People"
|
||||
name="%(caldav.action_view_calendar_invite_attendee_wizard)d"
|
||||
icon="terp-partner" type="action"
|
||||
context="{'model' : 'crm.meeting'}" colspan="2"/>
|
||||
<field name="attendee_ids" colspan="4"
|
||||
nolabel="1" widget="one2many" />
|
||||
</page>
|
||||
<page string="Other Information">
|
||||
<field name="alarm_id" string="Reminder" widget="selection" />
|
||||
<field name="case_id" string="Related Opportunity" />
|
||||
<field name="show_as"/>
|
||||
<field name="class"/>
|
||||
<field name="user_id"/>
|
||||
<field name="rrule"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="crm_case_tree_view_meet">
|
||||
<field name="name">CRM - Meetings Tree</field>
|
||||
<field name="model">crm.meeting</field>
|
||||
|
|
|
@ -12,9 +12,6 @@
|
|||
<wizard string="Export ICS File" model="crm.meeting" name="caldav.crm.export"
|
||||
id="wizard_crm_cal_export" multi="True"
|
||||
/>
|
||||
|
||||
<wizard string="Set RRULE" model="crm.meeting"
|
||||
name="caldav.set.rrule" id="wizard_crm_set_rrule" menu="False"
|
||||
/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
Loading…
Reference in New Issue