@@ -2,7 +2,7 @@
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<menuitem icon="terp-account" id="menu_finance" name="Financial Management"/>
|
||||
<menuitem icon="terp-account" id="menu_finance" name="Financial Management" sequence="5"/>
|
||||
<menuitem id="menu_finance_configuration" name="Configuration" parent="menu_finance" sequence="8"/>
|
||||
<menuitem id="base.menu_action_currency_form" parent="menu_finance_configuration" sequence="20"/>
|
||||
<menuitem id="menu_finance_accounting" name="Financial Accounting" parent="menu_finance_configuration"/>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<openerp>
|
||||
<data>
|
||||
<menuitem icon="terp-project" id="base.menu_main_pm" name="Project Management"/>
|
||||
<menuitem icon="terp-project" id="base.menu_main_pm" name="Project Management" sequence="1"/>
|
||||
<menuitem id="next_id_71" name="Financial Project Management" parent="base.menu_main_pm" groups="account.group_account_invoice" sequence="20"/>
|
||||
<menuitem id="menu_invoicing" name="Invoicing" parent="next_id_71" sequence="20"/>
|
||||
|
||||
|
||||
@@ -295,7 +295,7 @@
|
||||
menu="False"/>-->
|
||||
|
||||
<!--Menu for project management-->
|
||||
<menuitem icon="terp-project" id="base.menu_main_pm" name="Project Management"/>
|
||||
<menuitem icon="terp-project" id="base.menu_main_pm" name="Project Management" sequence="1"/>
|
||||
<menuitem id="base.menu_pm_invoicing" name="Invoicing" parent="base.menu_main_pm" sequence="7"/>
|
||||
<menuitem id="menu_pm_budget" name="Budgets" parent="base.menu_pm_invoicing"/>
|
||||
<menuitem action="open_budget_post_form" id="menu_pm_budget_post_form" parent="menu_pm_budget"/>
|
||||
|
||||
@@ -421,6 +421,16 @@ class basic_calendar_line(osv.osv):
|
||||
'domain': lambda *a: '[]',
|
||||
}
|
||||
|
||||
def create(self, cr, uid, vals, context={}):
|
||||
cr.execute("Select count(id) from basic_calendar_lines \
|
||||
where name='%s' and calendar_id=%s" % (vals.get('name'), vals.get('calendar_id')))
|
||||
res = cr.fetchone()
|
||||
if res:
|
||||
if res[0] > 0:
|
||||
raise osv.except_osv(_('Warning !'), _('Can not create \
|
||||
line "%s" more than once' % (vals.get('name'))))
|
||||
return super(basic_calendar_line, self).create(cr, uid, vals, context=context)
|
||||
|
||||
basic_calendar_line()
|
||||
|
||||
class basic_calendar_attribute(osv.osv):
|
||||
@@ -482,7 +492,7 @@ class basic_calendar_fields(osv.osv):
|
||||
res = cr.fetchone()
|
||||
if res:
|
||||
if res[0] > 0:
|
||||
raise osv.except_osv(_('Warning !'), _('Can not map same field more than once'))
|
||||
raise osv.except_osv(_('Warning !'), _('Can not map the field more than once'))
|
||||
return super(basic_calendar_fields, self).create(cr, uid, vals, context=context)
|
||||
|
||||
def write(self, cr, uid, ids, vals, context=None):
|
||||
|
||||
@@ -115,8 +115,6 @@
|
||||
<field name="search_view_id" ref="view_partner_contact_search"/>
|
||||
</record>
|
||||
<menuitem name="Contacts" id="menu_partner_contact_form" action="action_partner_contact_form" parent = "base.menu_address_book" sequence="2"/>
|
||||
<menuitem name="Addresses" id="base.menu_partner_address_form" parent = "base.menu_address_book" sequence="3"/>
|
||||
|
||||
|
||||
<!-- Views for Partners -->
|
||||
|
||||
@@ -353,6 +351,7 @@
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<!-- Views for res.partner.job -->
|
||||
<record model="ir.ui.view" id="view_partner_job_tree">
|
||||
<field name="name">res.partner.job.tree</field>
|
||||
@@ -428,7 +427,7 @@
|
||||
src_model="res.partner.address"
|
||||
/>
|
||||
|
||||
<menuitem icon="terp-purchase" id="base.menu_purchase_root" name="Procurement Management"/>
|
||||
<menuitem icon="terp-purchase" id="base.menu_purchase_root" name="Procurement Management" sequence="7"/>
|
||||
<menuitem id="base.menu_procurement_management_supplier" name="Suppliers"
|
||||
parent="base.menu_purchase_root" sequence="3"/>
|
||||
<menuitem name="Contacts" id="menu_partner_contact_supplier_form" action="action_partner_contact_form" parent = "base.menu_procurement_management_supplier" sequence="2"/>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
name="base_report_designer.modify"
|
||||
id="wizard_report_designer_modify"/>
|
||||
|
||||
<menuitem icon="terp-graph" id="base.reporting_menu" name="Reporting"/>
|
||||
<menuitem icon="terp-graph" id="base.reporting_menu" name="Reporting" sequence="8"/>
|
||||
<menuitem
|
||||
id="base.next_id_50"
|
||||
name="Configuration"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<menuitem icon="terp-graph" id="base.reporting_menu" name="Reporting"/>
|
||||
<menuitem icon="terp-graph" id="base.reporting_menu" name="Reporting" sequence="8"/>
|
||||
<!-- <menuitem icon="terp-graph" id="dashboard" name="Dashboards" sequence="2" parent="base.reporting_menu"/>-->
|
||||
<record id="view_board_note_tree" model="ir.ui.view">
|
||||
<field name="name">board.note.tree</field>
|
||||
|
||||
@@ -13,7 +13,7 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-07 04:38+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-08 04:45+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: board
|
||||
|
||||
+152
-118
@@ -172,6 +172,99 @@ html_invitation = """
|
||||
</html>
|
||||
"""
|
||||
|
||||
class invite_attendee_wizard(osv.osv_memory):
|
||||
_name = "caldav.invite.attendee"
|
||||
_description = "Invite Attendees"
|
||||
|
||||
_columns = {
|
||||
'type': fields.selection([('internal', 'Internal User'), \
|
||||
('external', 'External Email'), \
|
||||
('partner', 'Partner Contacts')], 'Type', required=True),
|
||||
'user_ids': fields.many2many('res.users', 'invite_user_rel',
|
||||
'invite_id', 'user_id', 'Users'),
|
||||
'partner_id': fields.many2one('res.partner', 'Partner'),
|
||||
'email': fields.char('Email', size=124),
|
||||
'contact_ids': fields.many2many('res.partner.address', 'invite_contact_rel',
|
||||
'invite_id', 'contact_id', 'Contacts'),
|
||||
'send_mail': fields.boolean('Send mail?', help='Check this if you want\
|
||||
to send an Email to Invited Person')
|
||||
}
|
||||
|
||||
def do_invite(self, cr, uid, ids, context={}):
|
||||
datas = self.read(cr, uid, ids)[0]
|
||||
model = False
|
||||
model_field = False
|
||||
if not context or not context.get('model'):
|
||||
return {}
|
||||
else:
|
||||
model = context.get('model')
|
||||
model_field = context.get('attendee_field', False)
|
||||
obj = self.pool.get(model)
|
||||
res_obj = obj.browse(cr, uid, context['active_id'])
|
||||
type = datas.get('type')
|
||||
att_obj = self.pool.get('calendar.attendee')
|
||||
vals = {}
|
||||
mail_to = []
|
||||
if not model == 'calendar.attendee':
|
||||
vals = {'ref': '%s,%s' % (model, caldav_id2real_id(context['active_id']))}
|
||||
|
||||
if type == 'internal':
|
||||
user_obj = self.pool.get('res.users')
|
||||
for user_id in datas.get('user_ids', []):
|
||||
user = user_obj.browse(cr, uid, user_id)
|
||||
if not user.address_id.email:
|
||||
raise osv.except_osv(_('Error!'), \
|
||||
("User does not have an email Address"))
|
||||
vals.update({'user_id': user_id,
|
||||
'email': user.address_id.email})
|
||||
mail_to.append(user.address_id.email)
|
||||
|
||||
elif type == 'external' and datas.get('email'):
|
||||
vals.update({'email': datas['email']})
|
||||
mail_to.append(datas['email'])
|
||||
elif type == 'partner':
|
||||
add_obj = self.pool.get('res.partner.address')
|
||||
for contact in add_obj.browse(cr, uid, datas['contact_ids']):
|
||||
if not contact.email:
|
||||
raise osv.except_osv(_('Error!'), \
|
||||
("Partner does not have an email Address"))
|
||||
vals.update({
|
||||
'partner_address_id': contact.id,
|
||||
'email': contact.email})
|
||||
mail_to.append(contact.email)
|
||||
|
||||
if model == 'calendar.attendee':
|
||||
att = att_obj.browse(cr, uid, context['active_id'])
|
||||
vals.update({
|
||||
'parent_ids' : [(4, att.id)],
|
||||
'ref': att.ref
|
||||
})
|
||||
att_id = att_obj.create(cr, uid, vals)
|
||||
if model_field:
|
||||
obj.write(cr, uid, res_obj.id, {model_field: [(4, att_id)],
|
||||
'state': 'delegated'})
|
||||
|
||||
if datas.get('send_mail'):
|
||||
att_obj._send_mail(cr, uid, [att_id], mail_to, \
|
||||
email_from=tools.config.get('email_from', False))
|
||||
|
||||
return {}
|
||||
|
||||
|
||||
def onchange_partner_id(self, cr, uid, ids, partner_id, *args, **argv):
|
||||
if not partner_id:
|
||||
return {'value': {'contact_ids': []}}
|
||||
cr.execute('select id from res_partner_address \
|
||||
where partner_id=%s' % (partner_id))
|
||||
contacts = map(lambda x: x[0], cr.fetchall())
|
||||
if not contacts:
|
||||
raise osv.except_osv(_('Error!'), \
|
||||
("Partner does not have any Contacts"))
|
||||
|
||||
return {'value': {'contact_ids': contacts}}
|
||||
|
||||
invite_attendee_wizard()
|
||||
|
||||
class calendar_attendee(osv.osv):
|
||||
_name = 'calendar.attendee'
|
||||
_description = 'Attendee information'
|
||||
@@ -206,10 +299,14 @@ class calendar_attendee(osv.osv):
|
||||
else:
|
||||
result[id][name] = self._get_address(None, attdata.email)
|
||||
if name == 'delegated_to':
|
||||
todata = map(lambda x:('MAILTO:' + x.email) or '', attdata.del_to_user_ids)
|
||||
todata = []
|
||||
for parent in attdata.parent_ids:
|
||||
todata.append('MAILTO:' + parent.email)
|
||||
result[id][name] = ', '.join(todata)
|
||||
if name == 'delegated_from':
|
||||
fromdata = map(lambda x:('MAILTO:' + x.email) or '', attdata.del_from_user_ids)
|
||||
fromdata = []
|
||||
for child in attdata.child_ids:
|
||||
fromdata.append('MAILTO:' + child.email)
|
||||
result[id][name] = ', '.join(fromdata)
|
||||
if name == 'event_date':
|
||||
if attdata.ref:
|
||||
@@ -277,13 +374,11 @@ class calendar_attendee(osv.osv):
|
||||
'delegated_to': fields.function(_compute_data, method=True, \
|
||||
string='Delegated To', type="char", size=124, store=True, \
|
||||
multi='delegated_to', help="The users that the original \
|
||||
request was delegated to"),
|
||||
'del_to_user_ids': fields.many2many('calendar.attendee', 'att_del_to_user_rel',
|
||||
'attendee_id', 'user_id', 'Users'),
|
||||
request was delegated to"),
|
||||
'delegated_from': fields.function(_compute_data, method=True, string=\
|
||||
'Delegated From', type="char", store=True, size=124, multi='delegated_from'),
|
||||
'del_from_user_ids': fields.many2many('calendar.attendee', 'att_del_from_user_rel', \
|
||||
'attendee_id', 'user_id', 'Users'),
|
||||
'Delegated From', type="char", store=True, size=124, multi='delegated_from'),
|
||||
'parent_ids': fields.many2many('calendar.attendee', 'calendar_attendee_parent_rel', 'attendee_id', 'parent_id', 'Delegrated From'),
|
||||
'child_ids': fields.many2many('calendar.attendee', 'calendar_attendee_child_rel', 'attendee_id', 'child_id', 'Delegrated To'),
|
||||
'sent_by': fields.function(_compute_data, method=True, string='Sent By', type="char", multi='sent_by', store=True, size=124, help="Specify the user that is acting on behalf of the calendar user"),
|
||||
'sent_by_uid': fields.function(_compute_data, method=True, string='Sent By User', type="many2one", relation="res.users", multi='sent_by_uid'),
|
||||
'cn': fields.function(_compute_data, method=True, string='Common name', type="char", size=124, multi='cn', store=True),
|
||||
@@ -291,7 +386,7 @@ request was delegated to"),
|
||||
'language': fields.function(_compute_data, method=True, string='Language', type="selection", selection=_lang_get, multi='language', store=True, help="To specify the language for text values in a property or property parameter."),
|
||||
'user_id': fields.many2one('res.users', 'User'),
|
||||
'partner_address_id': fields.many2one('res.partner.address', 'Contact'),
|
||||
'partner_id':fields.related('partner_address_id', 'partner_id', type='many2one', relation='res.partner', string='Partner'),
|
||||
'partner_id': fields.related('partner_address_id', 'partner_id', type='many2one', relation='res.partner', string='Partner'),
|
||||
'email': fields.char('Email', size=124, required=True),
|
||||
'event_date': fields.function(_compute_data, method=True, string='Event Date', type="datetime", multi='event_date'),
|
||||
'event_end_date': fields.function(_compute_data, method=True, string='Event End Date', type="datetime", multi='event_end_date'),
|
||||
@@ -302,7 +397,7 @@ request was delegated to"),
|
||||
'state': lambda *x: 'needs-action',
|
||||
}
|
||||
|
||||
response_re = response_re = re.compile("Are you coming\?.*(YES|NO|MAYBE).*", re.UNICODE)
|
||||
response_re = response_re = re.compile("Are you coming\?.*\n*.*(YES|NO|MAYBE).*", re.UNICODE)
|
||||
|
||||
def msg_new(self, cr, uid, msg):
|
||||
return False
|
||||
@@ -326,6 +421,43 @@ request was delegated to"),
|
||||
self.write(cr, uid, ids, {'state': status})
|
||||
return True
|
||||
|
||||
def _send_mail(self, cr, uid, ids, mail_to, email_from=tools.config.get('email_from', False), context={}):
|
||||
company = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.name
|
||||
for att in self.browse(cr, uid, ids, context=context):
|
||||
sign = att.sent_by_uid and att.sent_by_uid.signature or ''
|
||||
sign = '<br>'.join(sign and sign.split('\n') or [])
|
||||
model, res_id = tuple(att.ref.split(','))
|
||||
res_obj = self.pool.get(model).browse(cr, uid, res_id)
|
||||
if res_obj and len(res_obj):
|
||||
res_obj = res_obj[0]
|
||||
sub = '[%s Invitation][%d] %s' % (company, att.id, res_obj.name)
|
||||
att_infos = []
|
||||
other_invitaion_ids = self.search(cr, uid, [('ref','=',att.ref)])
|
||||
for att2 in self.browse(cr, uid, other_invitaion_ids):
|
||||
att_infos.append(((att2.user_id and att2.user_id.name) or \
|
||||
(att2.partner_id and att2.partner_id.name) or \
|
||||
att2.email) + ' - Status: ' + att2.state.title())
|
||||
body_vals = {'name': res_obj.name,
|
||||
'start_date': res_obj.date,
|
||||
'end_date': res_obj.date_deadline or None,
|
||||
'description': res_obj.description or '-',
|
||||
'location': res_obj.location or '-',
|
||||
'attendees': '<br>'.join(att_infos),
|
||||
'user': res_obj.user_id and res_obj.user_id.name or 'OpenERP User',
|
||||
'sign': sign,
|
||||
'company': company
|
||||
}
|
||||
body = html_invitation % body_vals
|
||||
if mail_to and email_from:
|
||||
tools.email_send(
|
||||
email_from,
|
||||
mail_to,
|
||||
sub,
|
||||
body,
|
||||
subtype='html',
|
||||
reply_to=email_from
|
||||
)
|
||||
return True
|
||||
def onchange_user_id(self, cr, uid, ids, user_id, *args, **argv):
|
||||
if not user_id:
|
||||
return {'value': {'email': ''}}
|
||||
@@ -621,6 +753,16 @@ rule or repeating pattern for anexception to a recurrence set"),
|
||||
'class': lambda *a: 'public',
|
||||
'show_as': lambda *a: 'busy',
|
||||
}
|
||||
|
||||
def onchange_user_id(self, cr, uid, ids, user_id, *args, **argv):
|
||||
if not user_id:
|
||||
return {'value': {'vtimezone': ''}}
|
||||
value = {}
|
||||
cr.execute('select context_tz from res_users where id=%s' % (user_id))
|
||||
timezone = cr.fetchone()
|
||||
if timezone:
|
||||
value.update({'vtimezone': timezone[0].lower()})
|
||||
return {'value': value}
|
||||
|
||||
def export_cal(self, cr, uid, ids, context={}):
|
||||
ids = map(lambda x: caldav_id2real_id(x), ids)
|
||||
@@ -1140,112 +1282,4 @@ class res_users(osv.osv):
|
||||
string='Free/Busy', method=True),
|
||||
}
|
||||
res_users()
|
||||
|
||||
class invite_attendee_wizard(osv.osv_memory):
|
||||
_name = "caldav.invite.attendee"
|
||||
_description = "Invite Attendees"
|
||||
|
||||
_columns = {
|
||||
'type': fields.selection([('internal', 'Internal User'), \
|
||||
('external', 'External Email'), \
|
||||
('partner', 'Partner Contacts')], 'Type', required=True),
|
||||
'user_ids': fields.many2many('res.users', 'invite_user_rel',
|
||||
'invite_id', 'user_id', 'Users'),
|
||||
'partner_id': fields.many2one('res.partner', 'Partner'),
|
||||
'email': fields.char('Email', size=124),
|
||||
'contact_ids': fields.many2many('res.partner.address', 'invite_contact_rel',
|
||||
'invite_id', 'contact_id', 'Contacts'),
|
||||
}
|
||||
|
||||
def do_invite(self, cr, uid, ids, context={}):
|
||||
model2field = {
|
||||
'calendar.attendee': 'del_to_user_ids',
|
||||
'crm.meeting': 'attendee_ids'}
|
||||
datas = self.read(cr, uid, ids)[0]
|
||||
if not context or not context.get('model'):
|
||||
return {}
|
||||
else:
|
||||
model = context.get('model')
|
||||
obj = self.pool.get(model)
|
||||
res_obj = obj.browse(cr, uid, context['active_id'])
|
||||
type = datas.get('type')
|
||||
att_obj = self.pool.get('calendar.attendee')
|
||||
vals = {}
|
||||
if not model == 'calendar.attendee':
|
||||
vals = {'ref': '%s,%s' % (model, caldav_id2real_id(context['active_id']))}
|
||||
if type == 'internal':
|
||||
user_obj = self.pool.get('res.users')
|
||||
for user_id in datas.get('user_ids', []):
|
||||
user = user_obj.browse(cr, uid, user_id)
|
||||
if not user.address_id.email:
|
||||
raise osv.except_osv(_('Error!'), \
|
||||
("User does not have an email Address"))
|
||||
vals.update({'user_id': user_id,
|
||||
'email': user.address_id.email})
|
||||
att_id = att_obj.create(cr, uid, vals)
|
||||
obj.write(cr, uid, res_obj.id, {model2field[model]: [(4, att_id)]})
|
||||
|
||||
elif type == 'external' and datas.get('email'):
|
||||
vals.update({'email': datas['email']})
|
||||
company = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.name
|
||||
att_infos = []
|
||||
for att in res_obj.attendee_ids:
|
||||
att_infos.append(((att.user_id and att.user_id.name) or \
|
||||
(att.partner_id and att.partner_id.name) or \
|
||||
att.email) + ' - Status: ' + att.state.title())
|
||||
att_id = att_obj.create(cr, uid, vals)
|
||||
obj.write(cr, uid, res_obj.id, {model2field[model]: [(4, att_id)]})
|
||||
sign = res_obj.user_id and res_obj.user_id.signature or ''
|
||||
sign = '<br>'.join(sign and sign.split('\n') or [])
|
||||
sub = '[%s Invitation][%d] %s' % (company, att_id, res_obj.name)
|
||||
body_vals = {'name': res_obj.name,
|
||||
'start_date': res_obj.date,
|
||||
'end_date': res_obj.date_deadline or None,
|
||||
'description': res_obj.description or '-',
|
||||
'location': res_obj.location or '-',
|
||||
'attendees': '<br>'.join(att_infos),
|
||||
'user': res_obj.user_id and res_obj.user_id.name or 'OpenERP User',
|
||||
'sign': sign,
|
||||
'company': company
|
||||
}
|
||||
body = html_invitation % body_vals
|
||||
mail_to = [datas['email']]
|
||||
tools.email_send(
|
||||
tools.config.get('email_from', False),
|
||||
mail_to,
|
||||
sub,
|
||||
body,
|
||||
subtype='html',
|
||||
reply_to=tools.config.get('email_from', False)
|
||||
)
|
||||
|
||||
elif type == 'partner':
|
||||
add_obj = self.pool.get('res.partner.address')
|
||||
for contact in add_obj.browse(cr, uid, datas['contact_ids']):
|
||||
if not contact.email:
|
||||
raise osv.except_osv(_('Error!'), \
|
||||
("Partner does not have an email Address"))
|
||||
vals.update({
|
||||
'partner_address_id': contact.id,
|
||||
'email': contact.email})
|
||||
att_id = att_obj.create(cr, uid, vals)
|
||||
obj.write(cr, uid, res_obj.id, {model2field[model]: [(4, att_id)]})
|
||||
return {}
|
||||
|
||||
|
||||
def onchange_partner_id(self, cr, uid, ids, partner_id, *args, **argv):
|
||||
if not partner_id:
|
||||
return {'value': {'contact_ids': []}}
|
||||
cr.execute('select id from res_partner_address \
|
||||
where partner_id=%s' % (partner_id))
|
||||
contacts = map(lambda x: x[0], cr.fetchall())
|
||||
if not contacts:
|
||||
raise osv.except_osv(_('Error!'), \
|
||||
("Partner does not have any Contacts"))
|
||||
|
||||
return {'value': {'contact_ids': contacts}}
|
||||
|
||||
invite_attendee_wizard()
|
||||
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<form string="Invite People">
|
||||
<field name="type" />
|
||||
<field name="send_mail" />
|
||||
<newline/>
|
||||
<group col="1" colspan="4"
|
||||
attrs="{'invisible': [('type', '!=', 'external')]}">
|
||||
@@ -84,28 +85,28 @@
|
||||
<field name="ref" colspan="4" readonly="1"/>
|
||||
</page>
|
||||
<page string="Delegation Info">
|
||||
<separator string="Delegated to" colspan="4" />
|
||||
<field name="del_to_user_ids" nolabel="1"
|
||||
<separator string="Delegated From" colspan="4" />
|
||||
<field name="parent_ids" nolabel="1"
|
||||
colspan="4" readonly="1" />
|
||||
<separator string="Delegated from" colspan="4" />
|
||||
<field name="del_from_user_ids" nolabel="1"
|
||||
<separator string="Delegated To" colspan="4" />
|
||||
<field name="child_ids" nolabel="1"
|
||||
colspan="4" readonly="1" />
|
||||
</page>
|
||||
</notebook>
|
||||
<group col="6" colspan="4">
|
||||
<field name="state" select="2" />
|
||||
<button name="do_tentative"
|
||||
<button name="do_tentative" states="needs-action,declined,accepted"
|
||||
string="Uncertain" type="object"
|
||||
icon="terp-crm" />
|
||||
<button name="do_accept" string="Accept"
|
||||
<button name="do_accept" string="Accept" states="needs-action,tentative,declined"
|
||||
type="object" icon="gtk-apply" />
|
||||
<button name="do_decline" string="Decline"
|
||||
<button name="do_decline" string="Decline" states="needs-action,tentative,accepted"
|
||||
type="object" icon="gtk-cancel" />
|
||||
<button
|
||||
name="%(caldav.action_view_calendar_invite_attendee_wizard)d"
|
||||
string="Delegate" type="action"
|
||||
icon="gtk-sort-descending"
|
||||
context="{'model' : 'calendar.attendee', 'state' : 'delegated'}" />
|
||||
icon="gtk-sort-descending" states="needs-action,tentative,declined,accepted"
|
||||
context="{'model' : 'calendar.attendee', 'attendee_field' : 'child_ids'}" />
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
|
||||
@@ -50,37 +50,49 @@
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Claims">
|
||||
<group colspan="4" col="6">
|
||||
<group colspan="4" col="4">
|
||||
<field name="name"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="user_id" string="Responsible" select="2"/>
|
||||
<newline/>
|
||||
<field name="section_id" widget="selection"/>
|
||||
<field name="date" string="Date of Claim"/>
|
||||
<field name="categ_id" string="Type of claim" select="1" on_change="onchange_categ_id(categ_id)"/>
|
||||
<label string="Stage: " align="1.0"/>
|
||||
<group colspan="1" col="2">
|
||||
<field name="stage_id" select="1" nolabel="1"/>
|
||||
<button icon="gtk-go-forward" string="" name="stage_next" type="object"/>
|
||||
</group>
|
||||
<field name="planned_cost" string="Claim Cost"/>
|
||||
</group>
|
||||
<group colspan="4" col="4">
|
||||
<notebook>
|
||||
<page string="Claims Info">
|
||||
<field name="partner_address_id" string="Contact" on_change="onchange_partner_address_id(partner_address_id, email_from)" colspan="1"/>
|
||||
<field name="email_from"/>
|
||||
<field name="partner_phone"/>
|
||||
<field name="partner_mobile"/>
|
||||
<newline/>
|
||||
<field name="planned_cost" string="Claim Cost"/>
|
||||
<field name="probability"/>
|
||||
<newline/>
|
||||
<field name="priority"/>
|
||||
<field name="type_id" string="Type of Action" select="1"/>
|
||||
<field name="ref"/>
|
||||
<field name="ref2"/>
|
||||
<separator colspan="4" string="Communication"/>
|
||||
<group colspan="4" col="4">
|
||||
<field name="partner_id" string="Partner"
|
||||
on_change="onchange_partner_id(partner_id)" />
|
||||
<field name="partner_address_id" string="Contact"
|
||||
on_change="onchange_partner_address_id(partner_address_id, email_from)" />
|
||||
<field name="partner_phone"/>
|
||||
<field name="partner_mobile"/>
|
||||
<field name="email_from"/>
|
||||
</group>
|
||||
<separator colspan="4" string="Status and Categarization"/>
|
||||
<group colspan="4" col="6">
|
||||
<field name="user_id" string="Responsible" select="2"/>
|
||||
<field name="section_id" widget="selection"/>
|
||||
<field name="probability"/>
|
||||
<label string="Stage: " align="1.0"/>
|
||||
<group colspan="1" col="2">
|
||||
<field name="stage_id" select="1" nolabel="1"/>
|
||||
<button icon="gtk-go-forward" string="" name="stage_next" type="object"/>
|
||||
</group>
|
||||
<field name="categ_id" select="1" widget="selection"
|
||||
on_change="onchange_categ_id(categ_id)"
|
||||
domain="[('object_id.model', '=', 'crm.claim')]" />
|
||||
<field name="type_id" string="Type of Action" select="1"
|
||||
domain="[('object_id.model', '=', 'crm.claim')]" />
|
||||
<field name="priority"/>
|
||||
</group>
|
||||
<separator colspan="4" string="References"/>
|
||||
<group colspan="4" col="4">
|
||||
<field name="ref"/>
|
||||
<field name="ref2"/>
|
||||
</group>
|
||||
<separator colspan="4" string="Claim/Action Description"/>
|
||||
<field name="description" colspan="4" nolabel="1"/>
|
||||
<separator colspan="4" string="Status"/>
|
||||
<separator colspan="4" string=""/>
|
||||
<group col="8" colspan="4">
|
||||
<field name="state" select="1"/>
|
||||
<button name="case_close" string="Done" states="open,draft,pending" type="object" icon="gtk-jump-to"/>
|
||||
@@ -90,7 +102,7 @@
|
||||
<button name="case_reset" string="Reset to Draft" states="done,cancel" type="object" icon="gtk-convert"/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="History">
|
||||
<page string="History" groups="base.group_extended">
|
||||
<field name="id" select="1"/>
|
||||
<field name="active"/>
|
||||
<field name="canal_id"/>
|
||||
@@ -139,6 +151,7 @@
|
||||
<button colspan="4" string="Send New Email" name="%(crm.wizard_crm_new_send_mail)d" context="{'mail':'new'}" icon="gtk-go-forward" type="action"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -59,27 +59,34 @@
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Funds Form">
|
||||
<group colspan="4" col="6">
|
||||
<field name="name" select="1" string="Name" colspan="2"/>
|
||||
<field name="section_id" colspan="1" widget="selection"/>
|
||||
<field name="categ_id" select="1" on_change="onchange_categ_id(categ_id)"/>
|
||||
<newline/>
|
||||
<field name="date" string="Next Meeting"/>
|
||||
<field name="duration"/>
|
||||
<field name="type_id" select="1" string="Payment Mode"/>
|
||||
<group colspan="4" col="4">
|
||||
<field name="name" select="1" string="Name"/>
|
||||
<field name="type_id" string="Payment Mode" select="1" widget="selection"
|
||||
domain="[('object_id.model', '=', 'crm.fundraising')]" />
|
||||
</group>
|
||||
<notebook colspan="4">
|
||||
<page string="Funds">
|
||||
<field name="partner_id" select="1" on_change="onchange_partner_id(partner_id, email_from)" colspan="2"/>
|
||||
<field name="partner_address_id" string="Contact" on_change="onchange_partner_address_id(partner_address_id, email_from)" colspan="1"/>
|
||||
<newline/>
|
||||
<field name="email_from" colspan="2"/>
|
||||
<field name="user_id" select="2" string="Responsible"/>
|
||||
<separator colspan="4" string="Communication"/>
|
||||
<group colspan="4" col="4">
|
||||
<field name="partner_id" select="1" on_change="onchange_partner_id(partner_id, email_from)" colspan="2"/>
|
||||
<field name="partner_address_id" string="Contact" on_change="onchange_partner_address_id(partner_address_id, email_from)" colspan="1"/>
|
||||
<field name="email_from" colspan="2"/>
|
||||
</group>
|
||||
<separator colspan="4" string="Estimates"/>
|
||||
<field name="planned_cost"/>
|
||||
<field name="planned_revenue"/>
|
||||
<field name="probability"/>
|
||||
<separator colspan="4" string="Description Information"/>
|
||||
<separator colspan="4" string="Categarization"/>
|
||||
<group colspan="4" col="6">
|
||||
<field name="user_id" select="2" string="Responsible"/>
|
||||
<field name="section_id" colspan="1" widget="selection"/>
|
||||
<field name="categ_id" select="1"
|
||||
on_change="onchange_categ_id(categ_id)" widget="selection"
|
||||
domain="[('object_id.model', '=', 'crm.fundraising')]" />
|
||||
<field name="date"/>
|
||||
<field name="duration"/>
|
||||
</group>
|
||||
<separator colspan="4" string="Details"/>
|
||||
<field name="description" nolabel="1" colspan="4"/>
|
||||
<separator colspan="4"/>
|
||||
<group col="8" colspan="4">
|
||||
@@ -92,7 +99,7 @@
|
||||
<button name="case_reset" string="Reset to Draft" states="done,cancel" type="object" icon="gtk-convert"/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="History">
|
||||
<page string="History" groups="base.group_extended">
|
||||
<field name="id" select="1"/>
|
||||
<field name="active"/>
|
||||
<field name="priority" string="Priority"/>
|
||||
@@ -119,7 +126,7 @@
|
||||
</form>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Emails">
|
||||
<page string="Emails" groups="base.group_extended">
|
||||
<group colspan="4">
|
||||
<field colspan="4" name="email_cc" string="CC"/>
|
||||
</group>
|
||||
|
||||
@@ -25,27 +25,31 @@
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Helpdesk Support">
|
||||
<group colspan="4" col="7">
|
||||
<field colspan="4" name="name" select="1"/>
|
||||
<field name="section_id" widget="selection"/>
|
||||
<newline/>
|
||||
<group colspan="4" col="4">
|
||||
<field colspan="4" name="name" select="1"/>
|
||||
<field name="date" select="1"/>
|
||||
<field name="date_deadline" select="2"/>
|
||||
<field name="priority"/>
|
||||
<field name="date_deadline" select="2"/>
|
||||
</group>
|
||||
<notebook colspan="4">
|
||||
<page string="General">
|
||||
<group col="8" colspan="4">
|
||||
<field colspan="4" name="partner_id" on_change="onchange_partner_id(partner_id, email_from)" select="1"/>
|
||||
<field colspan="3" name="partner_address_id" on_change="onchange_partner_address_id(partner_address_id, email_from)" select="2"/>
|
||||
<newline/>
|
||||
<field colspan="3" name="email_from" select="2"/>
|
||||
<separator colspan="4" string="Communication"/>
|
||||
<group col="7" colspan="4">
|
||||
<field name="partner_id" on_change="onchange_partner_id(partner_id, email_from)" select="1"/>
|
||||
<field name="partner_address_id" on_change="onchange_partner_address_id(partner_address_id, email_from)" select="2"/>
|
||||
|
||||
<field name="email_from" select="2"/>
|
||||
<button name="remind_partner" states="open,pending" string="Send Reminder" type="object" icon="gtk-go-forward"/>
|
||||
|
||||
</group>
|
||||
<separator colspan="4" string="Categarization"/>
|
||||
<group col="7" colspan="4">
|
||||
<field name="priority"/>
|
||||
<field name="section_id" widget="selection"/>
|
||||
<field name="user_id" select="1"/>
|
||||
<button name="remind_user" states="open,pending" string="Send Reminder" type="object" icon="gtk-go-forward"/>
|
||||
</group>
|
||||
|
||||
<separator colspan="4" string="Description"/>
|
||||
<separator colspan="4" string="Details"/>
|
||||
<field name="description" colspan="4" nolabel="1"/>
|
||||
<separator colspan="4"/>
|
||||
<group col="8" colspan="4">
|
||||
@@ -58,7 +62,7 @@
|
||||
<button name="case_reset" states="done,cancel" string="Reset to Draft" type="object" icon="gtk-convert"/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="History">
|
||||
<page string="History" groups="base.group_extended">
|
||||
<field name="id" select="1"/>
|
||||
<field name="active" select="2"/>
|
||||
<field name="categ_id" on_change="onchange_categ_id(categ_id)" select="2"/>
|
||||
@@ -86,7 +90,7 @@
|
||||
</form>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Emails">
|
||||
<page string="Emails" groups="base.group_extended">
|
||||
<group colspan="4">
|
||||
<field colspan="4" name="email_cc" string="CC"/>
|
||||
</group>
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
<group colspan="4" col="4">
|
||||
<notebook>
|
||||
<page string="Leads">
|
||||
<separator colspan="4" string="Communication"/>
|
||||
<separator colspan="4" string="Communication"/>
|
||||
<field name="partner_id" string="Partner"
|
||||
on_change="onchange_partner_id(partner_id)" />
|
||||
<field name="partner_address_id"
|
||||
@@ -58,17 +58,17 @@
|
||||
<group colspan="4" col="6">
|
||||
<field name="user_id" select="2"/>
|
||||
<field name="stage_id" select="1" string="Status" widget="selection" domain="[('object_id.model', '=', 'crm.lead')]"/>
|
||||
<field name="categ_id" select="1" on_change="onchange_categ_id(categ_id)" string="Lead Source" widget="selection" domain="[('object_id.model', '=', 'crm.opportunity')]"/>
|
||||
|
||||
<field name="categ_id" select="1"
|
||||
on_change="onchange_categ_id(categ_id)"
|
||||
string="Lead Source" widget="selection"
|
||||
domain="[('object_id.model', '=', 'crm.opportunity')]" />
|
||||
<field name="type_id" string="Campaign" select="1"/>
|
||||
<field name="section_id" colspan="1" widget="selection"/>
|
||||
<field name="priority" string="Priority"/>
|
||||
|
||||
<field name="date" string="Create Date"/>
|
||||
</group>
|
||||
<separator colspan="4" string="Details"/>
|
||||
<field name="description" nolabel="1" colspan="4"/>
|
||||
|
||||
<separator colspan="4"/>
|
||||
<group col="8" colspan="4">
|
||||
<field name="state" select="2"/>
|
||||
@@ -105,13 +105,13 @@
|
||||
<field name="date"/>
|
||||
</tree>
|
||||
</field>
|
||||
<button colspan="4" string="Send New Email" name="%(crm.wizard_crm_new_send_mail)d" context="{'mail':'new'}" icon="gtk-go-forward" type="action"/>
|
||||
<button colspan="4" string="Send New Email"
|
||||
name="%(crm.wizard_crm_new_send_mail)d"
|
||||
context="{'mail':'new'}" icon="gtk-go-forward"
|
||||
type="action" />
|
||||
</page>
|
||||
</notebook>
|
||||
</group>
|
||||
|
||||
|
||||
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
@@ -123,7 +123,7 @@
|
||||
<tree string="Leads Tree" colors="red:state=='open';black:state in ('draft', 'pending');grey: state in ('cancel','done')">
|
||||
<field name="partner_name" string="Lead Name"/>
|
||||
<field name="stage_id" string="Status"/>
|
||||
<field name="create_date"/>
|
||||
<field name="date" string="Create Date"/>
|
||||
<field name="categ_id" string="Lead Source"/>
|
||||
<field name="email_from" string="Email"/>
|
||||
<field name="user_id"/>
|
||||
@@ -156,37 +156,47 @@
|
||||
<field name="type">search</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Leads">
|
||||
<group col="3" colspan="1">
|
||||
<filter icon="gtk-home" string=" Today "
|
||||
separator="1"
|
||||
domain="[('date::date','=',time.strftime('%%Y-%%m-%%d'))]"
|
||||
help="Todays's Leads"
|
||||
/>
|
||||
<filter icon="gtk-media-rewind" string=" 7 Days "
|
||||
separator="1" help="Leads during last 7 days"
|
||||
domain="[('date','<', time.strftime('%%Y-%%m-%%d')), ('date','>=',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
|
||||
/>
|
||||
</group>
|
||||
<separator orientation="vertical"/>
|
||||
<group col="6" colspan="2">
|
||||
<field name="name" select="1"/>
|
||||
<field name="user_id" select="1" widget="selection">
|
||||
<filter icon="terp-partner"
|
||||
domain="[('user_id','=',uid)]" help="My Leads"
|
||||
default="1"
|
||||
/>
|
||||
</field>
|
||||
<field name="state" select="1">
|
||||
<filter icon="gtk-new" domain="[('state','in',('draft', 'open'))]" help="Current Leads" default="1"/>
|
||||
<filter icon="gtk-yes" domain="[('state','=','open')]" help="Open Leads"/>
|
||||
</field>
|
||||
<field name="section_id" select="1" default="context.get('section_id', False)" widget="selection" string="Section">
|
||||
<filter icon="terp-crm"
|
||||
domain="[('section_id','=',context.get('section_id',False))]"
|
||||
help="My section"
|
||||
/>
|
||||
</field>
|
||||
</group>
|
||||
<group colspan="4">
|
||||
<group col="3" colspan="1">
|
||||
<filter icon="gtk-home" string=" Today "
|
||||
separator="1"
|
||||
domain="[('date::date','=',time.strftime('%%Y-%%m-%%d'))]"
|
||||
help="Todays's Leads"
|
||||
/>
|
||||
<filter icon="gtk-media-rewind" string=" 7 Days "
|
||||
separator="1" help="Leads during last 7 days"
|
||||
domain="[('date','<', time.strftime('%%Y-%%m-%%d')), ('date','>=',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
|
||||
/>
|
||||
</group>
|
||||
<separator orientation="vertical"/>
|
||||
<group col="6" colspan="2">
|
||||
<field name="name" select="1"/>
|
||||
<field name="user_id" select="1" widget="selection">
|
||||
<filter icon="terp-partner"
|
||||
domain="[('user_id','=',uid)]" help="My Leads"
|
||||
default="1"
|
||||
/>
|
||||
</field>
|
||||
<field name="state" select="1">
|
||||
<filter icon="gtk-new" domain="[('state','in',('draft', 'open'))]" help="Current Leads" default="1"/>
|
||||
<filter icon="gtk-yes" domain="[('state','=','open')]" help="Open Leads"/>
|
||||
</field>
|
||||
<field name="section_id" select="1" default="context.get('section_id', False)" widget="selection" string="Section">
|
||||
<filter icon="terp-crm"
|
||||
domain="[('section_id','=',context.get('section_id',False))]"
|
||||
help="My section"
|
||||
/>
|
||||
</field>
|
||||
</group>
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand="1" string="Group By..." colspan="4" col="20">
|
||||
<filter string="By Status" icon="terp-crm" domain="[]" context="{'group_by':'stage_id'}"/>
|
||||
<filter string="By Lead Source" icon="terp-crm" domain="[]" context="{'group_by':'categ_id'}"/>
|
||||
<filter string="By Responsible" icon="terp-crm" domain="[]" context="{'group_by':'user_id'}"/>
|
||||
<filter string="By Create Date" icon="terp-crm" domain="[]" context="{'group_by':'date'}"/>
|
||||
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -24,19 +24,17 @@
|
||||
<field name="model">crm.meeting</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Meetings Form">
|
||||
<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">
|
||||
<form string="Meetings Form">
|
||||
<group col="6" colspan="4">
|
||||
<field name="name" select="1" string="Summary"
|
||||
colspan="4" />
|
||||
<field name="location" />
|
||||
<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"/>
|
||||
<field name="alarm_id" string="Reminder" widget="selection" />
|
||||
<group colspan="2" col="3" attrs="{'readonly':[('recurrent_uid','!=',False)]}">
|
||||
<field name="rrule_type" string="Recurrency"
|
||||
on_change="onchange_rrule_type(rrule_type)"
|
||||
@@ -58,7 +56,7 @@
|
||||
<button string="Invite People"
|
||||
name="%(caldav.action_view_calendar_invite_attendee_wizard)d"
|
||||
icon="terp-partner" type="action"
|
||||
context="{'model' : 'crm.meeting'}" colspan="2"/>
|
||||
context="{'model' : 'crm.meeting', 'attendee_field':'attendee_ids'}" colspan="2"/>
|
||||
<field name="attendee_ids" colspan="4"
|
||||
nolabel="1" widget="one2many" mode="tree,form">
|
||||
<tree string="Atendee details" editable="top">
|
||||
@@ -87,10 +85,11 @@
|
||||
</page>
|
||||
<page string="Other Information">
|
||||
<field name="priority"/>
|
||||
<field name="show_as"/>
|
||||
<field name="alarm_id" string="Reminder" widget="selection" />
|
||||
<field name="show_as"/>
|
||||
<field name="class"/>
|
||||
<field name="user_id"/>
|
||||
<field name="user_id" on_change="onchange_user_id(user_id)"/>
|
||||
<field name="section_id" widget="selection"
|
||||
/>
|
||||
<field name="vtimezone"/>
|
||||
<field name="recurrent_id" invisible="1" />
|
||||
<field name="recurrent_uid" invisible="1" />
|
||||
@@ -115,8 +114,8 @@
|
||||
<tree string="Meetings Tree" colors="red:state=='open';black:state in ('draft', 'cancel','done','pending')">
|
||||
<field name="id" widget="char"/>
|
||||
<field name="name" string="Title"/>
|
||||
<field name="date" string="Next Meeting"/>
|
||||
<field name="section_id" widget="selection"/>
|
||||
<field name="date" string="Meeting Date"/>
|
||||
<field name="section_id" />
|
||||
<field name="priority"/>
|
||||
<field name="categ_id"/>
|
||||
<field name="user_id"/>
|
||||
@@ -162,7 +161,7 @@
|
||||
<search string="Search Meetings">
|
||||
<group col="12" colspan="4">
|
||||
<filter icon="terp-crm" string="My Meetings" domain="[('user_id','=',uid)]" help="My Meetings"/>
|
||||
<filter icon="terp-crm" string="Draft" domain="[('state','in',('draft', 'open'))]" default="1" help="Current Meetings"/>
|
||||
<filter icon="terp-crm" string="Current" domain="[('state','in',('draft', 'open'))]" default="1" help="Current Meetings"/>
|
||||
<filter icon="terp-crm" string="Confirmed" domain="[('state','=','done')]" help="Confirmed Meetings"/>
|
||||
<separator orientation="vertical"/>
|
||||
<field name="name" select="1" string="Subject"/>
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
<field name="planned_revenue" required="1"/>
|
||||
<field name="planned_cost"/>
|
||||
<field name="probability"/>
|
||||
<field name="date_deadline" string="Excepted Close Date" required="1"/>
|
||||
<field name="date_deadline" string="Expected Close Date" required="1"/>
|
||||
<group colspan="4" col="5">
|
||||
<label string="" colspan="2"/>
|
||||
<button string="Schedule Meeting"
|
||||
@@ -71,7 +71,7 @@
|
||||
<field name="type_id" select="1" string="Campaign"/>
|
||||
<field name="section_id" colspan="1" widget="selection"/>
|
||||
<field name="priority" string="Priority"/>
|
||||
|
||||
<field name="date" string="Create Date"/>
|
||||
</group>
|
||||
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
</group>
|
||||
</page>
|
||||
|
||||
<page string="History">
|
||||
<page string="History" groups="base.group_extended">
|
||||
<field name="active"/>
|
||||
<field name="canal_id"/>
|
||||
<field name="som"/>
|
||||
@@ -116,7 +116,7 @@
|
||||
</form>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Emails">
|
||||
<page string="Emails" groups="base.group_extended">
|
||||
<group colspan="4">
|
||||
<field colspan="4" name="email_cc" string="CC"/>
|
||||
</group>
|
||||
@@ -158,8 +158,9 @@
|
||||
<field name="name" string="Opportunities"/>
|
||||
<field name="stage_id" string="Sales Stage"/>
|
||||
<field name="partner_id" string="Partner"/>
|
||||
<field name="planned_revenue"/>
|
||||
<field name="probability"/>
|
||||
<field name="planned_revenue" sum="Total of Planned Revenue"/>
|
||||
<field name="probability" avg="Avg. of Probability"/>
|
||||
<field name="date" string="Create Date"/>
|
||||
<field name="date_deadline" string="Excepted Close Date"/>
|
||||
<field name="user_id"/>
|
||||
<field name="state"/>
|
||||
@@ -189,36 +190,46 @@
|
||||
<field name="type">search</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Opportunities">
|
||||
<group col="3" colspan="1">
|
||||
<filter icon="gtk-home" string=" Today "
|
||||
separator="1"
|
||||
domain="[('date::date','=',time.strftime('%%Y-%%m-%%d'))]"
|
||||
help="Todays's Opportunities"
|
||||
/>
|
||||
<filter icon="gtk-media-rewind" string=" 7 Days "
|
||||
separator="1" help="Opportunities during last 7 days"
|
||||
domain="[('date','<', time.strftime('%%Y-%%m-%%d')), ('date','>=',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
|
||||
/>
|
||||
</group>
|
||||
<separator orientation="vertical"/>
|
||||
<group col="6" colspan="2">
|
||||
<field name="name" select="1" string="Opportunity"/>
|
||||
<field name="user_id" select="1" widget="selection">
|
||||
<filter icon="terp-partner"
|
||||
domain="[('user_id','=',uid)]"
|
||||
help="My Opportunities" default="1"
|
||||
/>
|
||||
</field>
|
||||
<field name="partner_id" select="1"/>
|
||||
<field name="state" select="1">
|
||||
<filter icon="gtk-index" domain="[('state','in',('open','draft'))]" help="Current " default="1"/>
|
||||
</field>
|
||||
<field name="section_id" default="context.get('section_id', False)" select="1" widget="selection" string="Section">
|
||||
<filter icon="terp-crm"
|
||||
domain="[('section_id','=',context.get('section_id',False))]"
|
||||
help="My section"/>
|
||||
</field>
|
||||
</group>
|
||||
<group colspan="4">
|
||||
<group col="3" colspan="1">
|
||||
<filter icon="gtk-home" string=" Today "
|
||||
separator="1"
|
||||
domain="[('date::date','=',time.strftime('%%Y-%%m-%%d'))]"
|
||||
help="Todays's Opportunities"
|
||||
/>
|
||||
<filter icon="gtk-media-rewind" string=" 7 Days "
|
||||
separator="1" help="Opportunities during last 7 days"
|
||||
domain="[('date','<', time.strftime('%%Y-%%m-%%d')), ('date','>=',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
|
||||
/>
|
||||
</group>
|
||||
<separator orientation="vertical"/>
|
||||
<group col="6" colspan="2">
|
||||
<field name="name" select="1" string="Opportunity"/>
|
||||
<field name="user_id" select="1" widget="selection">
|
||||
<filter icon="terp-partner"
|
||||
domain="[('user_id','=',uid)]"
|
||||
help="My Opportunities" default="1"
|
||||
/>
|
||||
</field>
|
||||
<field name="partner_id" select="1"/>
|
||||
<field name="state" select="1">
|
||||
<filter icon="gtk-index" domain="[('state','in',('open','draft'))]" help="Current " default="1"/>
|
||||
</field>
|
||||
<field name="section_id" default="context.get('section_id', False)" select="1" widget="selection" string="Section">
|
||||
<filter icon="terp-crm"
|
||||
domain="[('section_id','=',context.get('section_id',False))]"
|
||||
help="My section"/>
|
||||
</field>
|
||||
</group>
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand="1" string="Group By..." colspan="4">
|
||||
<filter string="By Stage" icon="terp-crm" domain="[]" context="{'group_by':'stage_id'}"/>
|
||||
<filter string="By Partner" icon="terp-crm" domain="[]" context="{'group_by':'partner_id'}"/>
|
||||
<filter string="By Responsible" icon="terp-crm" domain="[]" context="{'group_by':'user_id'}"/>
|
||||
<filter string="By Create Date" icon="terp-crm" domain="[]" context="{'group_by':'date'}"/>
|
||||
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -77,53 +77,64 @@
|
||||
<field name="model">crm.phonecall</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Phone Call">
|
||||
<group colspan="4" col="4">
|
||||
<field name="name" string="Subject"/>
|
||||
<field name="section_id" colspan="1" widget="selection"/>
|
||||
<field name="user_id" string="Assigned to" select="2"/>
|
||||
<field name="date" string="Planned Date"/>
|
||||
<field name="duration"/>
|
||||
<field name="opportunity_id" on_change="onchange_case_id(case_id, name, partner_id)"
|
||||
context="{'default_name':name,'default_section_id':section_id,'default_user_id':user_id,'default_duration':duration,
|
||||
'default_partner_id':partner_id,'default_partner_address_id':partner_address_id,'default_partner_phone':partner_phone,
|
||||
'default_partner_mobile':partner_mobile,'default_categ_id':categ_id}"/>
|
||||
<newline/>
|
||||
<group col="5" colspan="4">
|
||||
<label string="" colspan="2"/>
|
||||
<button string="Schedule a Meeting"
|
||||
name="%(wizard_crm_phonecall_meeting_set)d" icon="gtk-redo" type="action" />
|
||||
<button string="Convert to Opportunity" name="%(wizard_crm_phonecall_opportunity_set)d" icon="gtk-index" type="action" attrs="{'invisible':[('opportunity_id','!=',False)]}" />
|
||||
</group>
|
||||
<notebook colspan="4">
|
||||
<page string="General">
|
||||
<field name="categ_id" string="Direction" select="1" on_change="onchange_categ_id(categ_id)" required="1" readonly="1"/>
|
||||
<field name="active" string="Reminder"/>
|
||||
<group colspan="2" col="3">
|
||||
<field name="partner_id" string="Partner"/>
|
||||
<button string="Convert to Partner" icon="terp-crm" name="%(wizard_crm_phonecall_partner_create)d" type="action" attrs="{'invisible':[('partner_id','!=',False)]}" />
|
||||
</group>
|
||||
<field name="partner_address_id" string="Contact"/>
|
||||
<field name="partner_phone"/>
|
||||
<field name="partner_mobile"/>
|
||||
<newline/>
|
||||
<field name="som"/>
|
||||
<field name="priority" string="Relevant"/>
|
||||
<separator string= "Description" colspan="4"/>
|
||||
<field name="description" nolabel="1" colspan="4"/>
|
||||
<separator colspan="4"/>
|
||||
<group col="8" colspan="4">
|
||||
<field name="state" select="1"/>
|
||||
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
|
||||
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
|
||||
<button name="case_pending" string="Not Held" states="open" type="object" icon="gtk-undo"/>
|
||||
<button name="case_close" string="Held" states="open,draft,pending" type="object" icon="gtk-jump-to"/>
|
||||
<button name="case_reset" string="Reset to Draft" states="done,cancel" type="object" icon="gtk-convert"/>
|
||||
</group>
|
||||
</page>
|
||||
</notebook>
|
||||
</group>
|
||||
</form>
|
||||
<form string="Phone Call">
|
||||
<group colspan="4" col="4">
|
||||
<field name="name" string="Subject" />
|
||||
<field name="date" string="Planned Date" />
|
||||
<field name="partner_phone" />
|
||||
<field name="duration" />
|
||||
<newline />
|
||||
<group col="7" colspan="4">
|
||||
<label string="" colspan="2" />
|
||||
<button string="Schedule a Meeting"
|
||||
name="%(wizard_crm_phonecall_meeting_set)d" icon="gtk-redo"
|
||||
type="action" />
|
||||
<button string="Convert to Opportunity"
|
||||
name="%(wizard_crm_phonecall_opportunity_set)d"
|
||||
icon="gtk-index" type="action"
|
||||
attrs="{'invisible':[('opportunity_id','!=',False)]}" />
|
||||
<button string="Convert to Partner"
|
||||
icon="terp-crm"
|
||||
name="%(wizard_crm_phonecall_partner_create)d"
|
||||
type="action"
|
||||
attrs="{'invisible':[('partner_id','!=',False)]}" />
|
||||
</group>
|
||||
<group colspan="4" col="4">
|
||||
<notebook colspan="4">
|
||||
<page string="General">
|
||||
<separator colspan="4" string="Communication" />
|
||||
<field name="partner_id" />
|
||||
<field name="partner_address_id" string="Contact" />
|
||||
<field name="partner_mobile" />
|
||||
<separator colspan="4" string="Status and Categarization" />
|
||||
<group colspan="4" col="6">
|
||||
<field name="user_id" string="Assigned to" select="2" />
|
||||
<field name="section_id" colspan="1" widget="selection" />
|
||||
<field name="opportunity_id"
|
||||
on_change="onchange_case_id(case_id, name, partner_id)"
|
||||
context="{'default_name':name,'default_section_id':section_id,'default_user_id':user_id,'default_duration':duration,
|
||||
'default_partner_id':partner_id,'default_partner_address_id':partner_address_id,'default_partner_phone':partner_phone,
|
||||
'default_partner_mobile':partner_mobile,'default_categ_id':categ_id}" />
|
||||
<field name="som" />
|
||||
<field name="priority" />
|
||||
<field name="active" string="Reminder" />
|
||||
</group>
|
||||
<separator string="Description" colspan="4" />
|
||||
<field name="description" nolabel="1" colspan="4" />
|
||||
<separator colspan="4" />
|
||||
<group col="8" colspan="4">
|
||||
<field name="state" select="1" />
|
||||
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
|
||||
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
|
||||
<button name="case_pending" string="Not Held" states="open" type="object" icon="gtk-undo"/>
|
||||
<button name="case_close" string="Held" states="open,draft,pending" type="object" icon="gtk-jump-to"/>
|
||||
<button name="case_reset" string="Reset to Draft" states="done,cancel" type="object" icon="gtk-convert"/>
|
||||
</group>
|
||||
</page>
|
||||
</notebook>
|
||||
</group>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
@@ -372,7 +372,7 @@
|
||||
<button name="case_reset" states="done,cancel" string="Reset to Draft" type="object" icon="gtk-convert"/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="History">
|
||||
<page string="History" groups="base.group_extended">
|
||||
<field name="id" select="1"/>
|
||||
<field name="active" select="2"/>
|
||||
<separator colspan="4" string="Dates"/>
|
||||
@@ -390,7 +390,7 @@
|
||||
</form>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Emails">
|
||||
<page string="Emails" groups="base.group_extended">
|
||||
<group colspan="4">
|
||||
<field colspan="4" name="email_cc" string="CC"/>
|
||||
</group>
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<field name="view_id" ref="view_crm_project_bug_user_graph"/>
|
||||
<field name="search_view_id" ref="view_crm_project_bug_user_filter"/>
|
||||
</record>
|
||||
<menuitem icon="terp-project" id="base.menu_main_pm" name="Project Management"/>
|
||||
<menuitem icon="terp-project" id="base.menu_main_pm" name="Project Management" sequence="1"/>
|
||||
<menuitem id="base.menu_project_report" name="Reporting" parent="base.menu_main_pm" sequence="50"/>
|
||||
<menuitem name="Project Bug" id="menu_crm_project_bug_tree" parent="base.menu_project_report" sequence="1"/>
|
||||
<menuitem action="action_report_crm_project_bug_user_tree" id="menu_crm_project_bug_user_tree" parent="menu_crm_project_bug_tree"/>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<!--<menuitem name="Document Management" icon="terp-stock" id="menu_document"/>
|
||||
<menuitem name="Document Configuration" id="menu_document_configuration" parent="menu_document"/>-->
|
||||
|
||||
<menuitem name="Knowledge Management" icon="terp-stock" id="base.menu_document"/>
|
||||
<menuitem name="Knowledge Management" icon="terp-stock" id="base.menu_document" sequence="4"/>
|
||||
<menuitem name="Configuration" id="base.menu_document_configuration" parent="base.menu_document" sequence="50"/>
|
||||
<menuitem name="Document Management" id="menu_document_management_configuration" parent="base.menu_document_configuration" sequence="1"/>
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<menuitem name="Marketing" id="menu_marketing_event_main" icon="terp-calendar" />
|
||||
<menuitem name="Marketing" id="menu_marketing_event_main" icon="terp-calendar" sequence="9"/>
|
||||
<menuitem name="Events Organisation" id="menu_event_main" parent="menu_marketing_event_main" />
|
||||
<!-- EVENTS -->
|
||||
<!--<menuitem name="Events Organisation" id="menu_event_main" icon="terp-calendar" />-->
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<menuitem icon="terp-hr" id="menu_hr_root" name="Human Resources"/>
|
||||
<menuitem icon="terp-hr" id="menu_hr_root" name="Human Resources" sequence="6"/>
|
||||
<menuitem id="menu_hr_human_resources" sequence="1" name="Human Resources" parent="menu_hr_root"/>
|
||||
<!-- <menuitem
|
||||
id="menu_hr_reporting"
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<menuitem action="si_so" id="menu_si_so" parent="menu_hr_time_tracking" type="wizard" sequence="1"
|
||||
groups="group_hr_attendance"/>
|
||||
<!--Time Tracking menu for Project Management-->
|
||||
<menuitem icon="terp-project" id="base.menu_main_pm" name="Project Management"/>
|
||||
<menuitem icon="terp-project" id="base.menu_main_pm" name="Project Management" sequence="1"/>
|
||||
<menuitem
|
||||
id="base.menu_project_management_time_tracking"
|
||||
name="Time Tracking"
|
||||
|
||||
@@ -2,28 +2,28 @@
|
||||
<openerp>
|
||||
<data>
|
||||
<record id="survey_2" model="survey">
|
||||
<field name="title">EMPLOYEE EVALUATION</field>
|
||||
<field name="title">Employee Evaluation</field>
|
||||
<field name="max_response_limit">20</field>
|
||||
<field eval="[(6,0,[])]" name="users"/>
|
||||
</record>
|
||||
</data>
|
||||
<data>
|
||||
<record id="survey_3" model="survey">
|
||||
<field name="title">EMPLOYEE OPINION</field>
|
||||
<field name="title">Employee Opinion</field>
|
||||
<field name="max_response_limit">20</field>
|
||||
<field eval="[(6,0,[])]" name="users"/>
|
||||
</record>
|
||||
</data>
|
||||
<data>
|
||||
<record id="survey_page_1" model="survey.page">
|
||||
<field name="title">EMPLOYEE EVALUATION FORM</field>
|
||||
<field name="title">Employee Evaluation Form</field>
|
||||
<field name="survey_id" ref="survey_2"/>
|
||||
<field eval="1" name="sequence"/>
|
||||
</record>
|
||||
</data>
|
||||
<data>
|
||||
<record id="survey_page_2" model="survey.page">
|
||||
<field name="title">PROCESS</field>
|
||||
<field name="title">Process</field>
|
||||
<field name="survey_id" ref="survey_3"/>
|
||||
<field eval="1" name="sequence"/>
|
||||
</record>
|
||||
@@ -31,14 +31,14 @@
|
||||
|
||||
<data>
|
||||
<record id="survey_page_5" model="survey.page">
|
||||
<field name="title">WORK PLAN</field>
|
||||
<field name="title">Work Plan</field>
|
||||
<field name="survey_id" ref="survey_2"/>
|
||||
<field eval="2" name="sequence"/>
|
||||
</record>
|
||||
</data>
|
||||
<data>
|
||||
<record id="survey_page_6" model="survey.page">
|
||||
<field name="title">EMPLOYEE PERFORMANCE IN KEY AREAS</field>
|
||||
<field name="title">Employee Performance In Key Areas</field>
|
||||
<field name="survey_id" ref="survey_2"/>
|
||||
<field eval="3" name="sequence"/>
|
||||
<field name="note">The appraiser should rate the employee’s major work accomplishments and performance according to the metric provided below :
|
||||
@@ -52,7 +52,7 @@
|
||||
|
||||
<data>
|
||||
<record id="survey_page_16" model="survey.page">
|
||||
<field name="title">PROFESSIONAL DEVELOPMENT AND PERFORMANCE PLAN (optional)</field>
|
||||
<field name="title">Professional Development And Performance Plan (optional)</field>
|
||||
<field name="survey_id" ref="survey_2"/>
|
||||
<field eval="4" name="sequence"/>
|
||||
<field name="note">Identify professional, performance, or project objectives you recommend for employee’s continued career development over the coming year. </field>
|
||||
@@ -61,7 +61,7 @@
|
||||
|
||||
<data>
|
||||
<record id="survey_page_26" model="survey.page">
|
||||
<field name="title">EMPLOYEE COMMENTS</field>
|
||||
<field name="title">Employee Comments</field>
|
||||
<field name="survey_id" ref="survey_2"/>
|
||||
<field eval="5" name="sequence"/>
|
||||
</record>
|
||||
@@ -69,7 +69,7 @@
|
||||
|
||||
<data>
|
||||
<record id="survey_page_10" model="survey.page">
|
||||
<field name="title">SURVEY</field>
|
||||
<field name="title">Survey</field>
|
||||
<field name="survey_id" ref="survey_3"/>
|
||||
<field eval="5" name="sequence"/>
|
||||
</record>
|
||||
@@ -138,7 +138,7 @@
|
||||
<field eval="0" name="rating_allow_one_column_require"/>
|
||||
<field name="req_error_msg">This question requires an answer.</field>
|
||||
<field eval="1" name="sequence"/>
|
||||
<field name="question">ENGAGEMENT</field>
|
||||
<field name="question">Engagement</field>
|
||||
<field eval="0" name="is_require_answer"/>
|
||||
<field name="type">matrix_of_choices_only_one_ans</field>
|
||||
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
|
||||
@@ -162,10 +162,10 @@
|
||||
<field eval="0" name="rating_allow_one_column_require"/>
|
||||
<field name="req_error_msg">This question requires an answer.</field>
|
||||
<field eval="1" name="sequence"/>
|
||||
<field name="question">SUBJECT</field>
|
||||
<field name="question">Subject</field>
|
||||
<field eval="0" name="is_require_answer"/>
|
||||
<field name="type">matrix_of_choices_only_one_ans</field>
|
||||
<field name="column_name">RECOMMENDATIONS / EVALUATIONS</field>
|
||||
<field name="column_name">Recommendations / Evaluations</field>
|
||||
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
|
||||
<field eval="0" name="make_comment_field"/>
|
||||
<field eval="0" name="in_visible_menu_choice"/>
|
||||
@@ -188,7 +188,7 @@
|
||||
<field eval="0" name="rating_allow_one_column_require"/>
|
||||
<field name="req_error_msg">This question requires an answer.</field>
|
||||
<field eval="2" name="sequence"/>
|
||||
<field name="question">LEADERSHIP</field>
|
||||
<field name="question">Leadership</field>
|
||||
<field eval="0" name="is_require_answer"/>
|
||||
<field name="type">matrix_of_choices_only_one_ans</field>
|
||||
<field eval="0" name="in_visible_menu_choice"/>
|
||||
@@ -209,7 +209,7 @@
|
||||
<field eval="0" name="rating_allow_one_column_require"/>
|
||||
<field name="req_error_msg">This question requires an answer.</field>
|
||||
<field eval="2" name="sequence"/>
|
||||
<field name="question">PROCESS</field>
|
||||
<field name="question">Process</field>
|
||||
<field eval="0" name="is_require_answer"/>
|
||||
<field name="type">comment</field>
|
||||
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
|
||||
@@ -236,7 +236,7 @@
|
||||
<field name="question">Supervisors only : </field>
|
||||
<field eval="0" name="is_require_answer"/>
|
||||
<field name="type">matrix_of_choices_only_one_ans</field>
|
||||
<field name="column_name">RECOMMENDATIONS / EVALUATIONS </field>
|
||||
<field name="column_name">Recommendations / Evaluations</field>
|
||||
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
|
||||
<field eval="0" name="make_comment_field"/>
|
||||
<field eval="0" name="in_visible_menu_choice"/>
|
||||
@@ -259,7 +259,7 @@
|
||||
<field eval="0" name="rating_allow_one_column_require"/>
|
||||
<field name="req_error_msg">This question requires an answer.</field>
|
||||
<field eval="1" name="sequence"/>
|
||||
<field name="question">WORK PLAN</field>
|
||||
<field name="question">Work Plan</field>
|
||||
<field eval="0" name="is_require_answer"/>
|
||||
<field name="type">table</field>
|
||||
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
|
||||
@@ -269,7 +269,7 @@
|
||||
<field name="comment_label">Other</field>
|
||||
<field eval="0" name="in_visible_rating_weight"/>
|
||||
<field eval="0" name="allow_comment"/>
|
||||
<field eval="5" name="no_of_rows"/>
|
||||
<field eval="10" name="no_of_rows"/>
|
||||
</record>
|
||||
</data>
|
||||
|
||||
@@ -285,7 +285,7 @@
|
||||
<field eval="0" name="rating_allow_one_column_require"/>
|
||||
<field name="req_error_msg">This question requires an answer.</field>
|
||||
<field eval="3" name="sequence"/>
|
||||
<field name="question">EFFECTIVENESS</field>
|
||||
<field name="question">Effectiveness</field>
|
||||
<field eval="0" name="is_require_answer"/>
|
||||
<field name="type">matrix_of_choices_only_one_ans</field>
|
||||
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
|
||||
@@ -312,7 +312,7 @@
|
||||
<field eval="0" name="rating_allow_one_column_require"/>
|
||||
<field name="req_error_msg">This question requires an answer.</field>
|
||||
<field eval="4" name="sequence"/>
|
||||
<field name="question">CONTINUOUS IMPROVEMENT</field>
|
||||
<field name="question">Continuous Improvement</field>
|
||||
<field eval="0" name="is_require_answer"/>
|
||||
<field name="type">matrix_of_choices_only_one_ans</field>
|
||||
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
|
||||
@@ -362,7 +362,7 @@
|
||||
<field eval="0" name="rating_allow_one_column_require"/>
|
||||
<field name="req_error_msg">This question requires an answer.</field>
|
||||
<field eval="5" name="sequence"/>
|
||||
<field name="question">OPENNESS</field>
|
||||
<field name="question">Openness</field>
|
||||
<field eval="0" name="is_require_answer"/>
|
||||
<field name="type">matrix_of_choices_only_one_ans</field>
|
||||
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
|
||||
@@ -389,7 +389,7 @@
|
||||
<field eval="0" name="rating_allow_one_column_require"/>
|
||||
<field name="req_error_msg">This question requires an answer.</field>
|
||||
<field eval="3" name="sequence"/>
|
||||
<field name="question">OVERALL PERFORMANCE SUMMARY RATING</field>
|
||||
<field name="question">Overall Performance Summary Rating</field>
|
||||
<field eval="0" name="is_require_answer"/>
|
||||
<field name="type">descriptive_text</field>
|
||||
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
|
||||
@@ -415,7 +415,7 @@
|
||||
<field eval="0" name="rating_allow_one_column_require"/>
|
||||
<field name="req_error_msg">This question requires an answer.</field>
|
||||
<field eval="2" name="sequence"/>
|
||||
<field name="question">OVERALL PURPOSE OF EMPLOYEE APPRAISAL</field>
|
||||
<field name="question">Overall Purpose Of Employee Appraisal</field>
|
||||
<field eval="0" name="is_require_answer"/>
|
||||
<field name="type">descriptive_text</field>
|
||||
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
|
||||
@@ -442,7 +442,7 @@
|
||||
<field eval="0" name="rating_allow_one_column_require"/>
|
||||
<field name="req_error_msg">This question requires an answer.</field>
|
||||
<field eval="6" name="sequence"/>
|
||||
<field name="question">MISCELLANEOUS</field>
|
||||
<field name="question">Miscellaneous</field>
|
||||
<field eval="0" name="is_require_answer"/>
|
||||
<field name="type">matrix_of_choices_only_one_ans</field>
|
||||
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
|
||||
@@ -590,7 +590,7 @@ Once the form had been filled, the employee send it to his supervisor.
|
||||
<field eval="0" name="rating_allow_one_column_require"/>
|
||||
<field name="req_error_msg">This question requires an answer.</field>
|
||||
<field eval="3" name="sequence"/>
|
||||
<field name="question">EVALUATION PROCESS</field>
|
||||
<field name="question">Evaluation Process</field>
|
||||
<field eval="0" name="is_require_answer"/>
|
||||
<field name="type">descriptive_text</field>
|
||||
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
|
||||
@@ -634,7 +634,7 @@ Once the form had been filled, the employee send it to his supervisor.
|
||||
<field eval="0" name="rating_allow_one_column_require"/>
|
||||
<field name="req_error_msg">This question requires an answer.</field>
|
||||
<field eval="2" name="sequence"/>
|
||||
<field name="question">PROFESSIONAL DEVELOPMENT OBJECTIVES </field>
|
||||
<field name="question">Professional Development Objectives </field>
|
||||
<field eval="0" name="is_require_answer"/>
|
||||
<field name="type">comment</field>
|
||||
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
|
||||
@@ -659,7 +659,7 @@ Once the form had been filled, the employee send it to his supervisor.
|
||||
<field eval="0" name="rating_allow_one_column_require"/>
|
||||
<field name="req_error_msg">This question requires an answer.</field>
|
||||
<field eval="2" name="sequence"/>
|
||||
<field name="question">PERSONAL PERFORMANCE OBJECTIVES</field>
|
||||
<field name="question">Personal Performance Objectives</field>
|
||||
<field eval="0" name="is_require_answer"/>
|
||||
<field name="type">comment</field>
|
||||
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
|
||||
@@ -684,7 +684,7 @@ Once the form had been filled, the employee send it to his supervisor.
|
||||
<field eval="0" name="rating_allow_one_column_require"/>
|
||||
<field name="req_error_msg">This question requires an answer.</field>
|
||||
<field eval="4" name="sequence"/>
|
||||
<field name="question">PROJECT OBJECTIVES</field>
|
||||
<field name="question">Project Objectives</field>
|
||||
<field eval="0" name="is_require_answer"/>
|
||||
<field name="type">comment</field>
|
||||
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
|
||||
|
||||
@@ -220,7 +220,7 @@
|
||||
<field name="search_view_id" ref="view_hr_timesheet_sheet_filter"/>
|
||||
</record>
|
||||
<!--Time Tracking menu in project Management-->
|
||||
<menuitem icon="terp-project" id="base.menu_main_pm" name="Project Management"/>
|
||||
<menuitem icon="terp-project" id="base.menu_main_pm" name="Project Management" sequence="1"/>
|
||||
<menuitem
|
||||
id="base.menu_project_management_time_tracking"
|
||||
name="Time Tracking"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<menuitem name="Tools" id="base.menu_tools" icon="STOCK_PREFERENCES" />
|
||||
<menuitem name="Tools" id="base.menu_tools" icon="STOCK_PREFERENCES" sequence="15"/>
|
||||
<record model="ir.ui.view" id="view_idea_category_form">
|
||||
<field name="name">idea.category.form</field>
|
||||
<field name="model">idea.category</field>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<menuitem icon="STOCK_PREFERENCES" id="base.menu_tools" name="Tools"/>
|
||||
<menuitem icon="STOCK_PREFERENCES" id="base.menu_tools" name="Tools" sequence="15"/>
|
||||
<!--<menuitem name="Tools" id="menu_tools" icon="STOCK_PREFERENCES"/>
|
||||
<menuitem name="Lunch Order" parent="menu_tools" id="menu_lunch" sequence="1"/>
|
||||
<menuitem name="Reporting" parent="menu_tools" id="menu_lunch_reporting" sequence="4"/>
|
||||
|
||||
@@ -388,6 +388,7 @@ class mail_gateway_history(osv.osv):
|
||||
'name': fields.char('Message Id', size=64, help="Message Id in Email Server."),
|
||||
'res_id': fields.integer("Resource ID"),
|
||||
'gateway_id': fields.many2one('mail.gateway',"Mail Gateway", required=True),
|
||||
'model_id':fields.related('gateway_id', 'object_id', type='many2one', relation='ir.model', string='Model'),
|
||||
'note': fields.text('Notes'),
|
||||
}
|
||||
_order = 'id desc'
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
<field name="arch" type="xml">
|
||||
<form string="Gateway History">
|
||||
<field name="name"/>
|
||||
<field name="gateway_id"/>
|
||||
<field name="model_id"/>
|
||||
<field name="res_id"/>
|
||||
<separator string="Note" colspan="4"/>
|
||||
<field name="note" nolabel="1" colspan="4"/>
|
||||
@@ -22,6 +24,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Gateway History">
|
||||
<field name="name" select="1"/>
|
||||
<field name="model_id"/>
|
||||
<field name="res_id"/>
|
||||
<field name="gateway_id"/>
|
||||
</tree>
|
||||
|
||||
@@ -7,19 +7,19 @@ msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
|
||||
"PO-Revision-Date: 2009-11-17 07:46+0000\n"
|
||||
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
|
||||
"PO-Revision-Date: 2010-02-07 22:30+0000\n"
|
||||
"Last-Translator: Selma <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: 2009-12-16 05:07+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-08 04:45+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: membership
|
||||
#: model:process.transition,name:membership.process_transition_invoicetoassociate0
|
||||
msgid "invoice to associate"
|
||||
msgstr ""
|
||||
msgstr "Račun za saradnika"
|
||||
|
||||
#. module: membership
|
||||
#: model:process.process,name:membership.process_process_membershipprocess0
|
||||
@@ -35,7 +35,7 @@ msgstr "Plaćeni član"
|
||||
#. module: membership
|
||||
#: constraint:ir.actions.act_window:0
|
||||
msgid "Invalid model name in the action definition."
|
||||
msgstr ""
|
||||
msgstr "Neispravan naziv modela u definiciji zadatka."
|
||||
|
||||
#. module: membership
|
||||
#: field:report.partner_member.year,currency:0
|
||||
@@ -61,7 +61,7 @@ msgstr "Definiraj članski proizvod"
|
||||
#. module: membership
|
||||
#: field:product.product,membership_date_to:0
|
||||
msgid "Date to"
|
||||
msgstr ""
|
||||
msgstr "Datum do"
|
||||
|
||||
#. module: membership
|
||||
#: model:process.transition,name:membership.process_transition_waitingtoinvoice0
|
||||
@@ -71,7 +71,7 @@ msgstr "Čekanje za fakturiranje"
|
||||
#. module: membership
|
||||
#: model:process.transition,name:membership.process_transition_producttomember0
|
||||
msgid "Product to member"
|
||||
msgstr ""
|
||||
msgstr "Proizvod za člana"
|
||||
|
||||
#. module: membership
|
||||
#: field:res.partner,associate_member:0
|
||||
@@ -101,7 +101,7 @@ msgstr ""
|
||||
#. module: membership
|
||||
#: field:product.product,membership_date_from:0
|
||||
msgid "Date from"
|
||||
msgstr ""
|
||||
msgstr "Datum od"
|
||||
|
||||
#. module: membership
|
||||
#: field:membership.membership_line,partner:0
|
||||
@@ -117,7 +117,7 @@ msgstr "Slobodni članovi"
|
||||
#. module: membership
|
||||
#: model:process.transition,name:membership.process_transition_invoicetopaid0
|
||||
msgid "Invoice to paid"
|
||||
msgstr ""
|
||||
msgstr "Račun za platiti"
|
||||
|
||||
#. module: membership
|
||||
#: view:res.partner:0
|
||||
@@ -162,7 +162,7 @@ msgstr "Stanje"
|
||||
#. module: membership
|
||||
#: field:res.partner,membership_start:0
|
||||
msgid "Start membership date"
|
||||
msgstr ""
|
||||
msgstr "Datum učlanjenja"
|
||||
|
||||
#. module: membership
|
||||
#: model:process.node,name:membership.process_node_paidmember0
|
||||
@@ -174,7 +174,7 @@ msgstr "Plaćeni član"
|
||||
#: model:ir.ui.menu,name:membership.menu_report_partner_member_year
|
||||
#: view:report.partner_member.year:0
|
||||
msgid "Membership by Years"
|
||||
msgstr ""
|
||||
msgstr "Članstvo po godinama"
|
||||
|
||||
#. module: membership
|
||||
#: model:ir.ui.menu,name:membership.menu_reporting
|
||||
@@ -190,7 +190,7 @@ msgstr "Članovi"
|
||||
#: selection:membership.membership_line,state:0
|
||||
#: selection:res.partner,membership_state:0
|
||||
msgid "Non Member"
|
||||
msgstr ""
|
||||
msgstr "Nije član"
|
||||
|
||||
#. module: membership
|
||||
#: model:process.node,note:membership.process_node_invoicedmember0
|
||||
@@ -205,7 +205,7 @@ msgstr "Konfiguracija"
|
||||
#. module: membership
|
||||
#: model:process.transition,note:membership.process_transition_producttomember0
|
||||
msgid "Define product for membership."
|
||||
msgstr ""
|
||||
msgstr "Definiraj proizvod za članstvo"
|
||||
|
||||
#. module: membership
|
||||
#: model:process.transition,note:membership.process_transition_invoicetoassociate0
|
||||
@@ -226,7 +226,7 @@ msgstr ""
|
||||
#. module: membership
|
||||
#: model:ir.ui.menu,name:membership.menu_members_waiting
|
||||
msgid "Future members (invoice not confirmed)"
|
||||
msgstr ""
|
||||
msgstr "Budući članovi (račun nije potvrđen)"
|
||||
|
||||
#. module: membership
|
||||
#: model:process.node,name:membership.process_node_setassociation0
|
||||
@@ -254,7 +254,7 @@ msgstr "Poništeno"
|
||||
#. module: membership
|
||||
#: model:product.pricelist,name:membership.list1m
|
||||
msgid "Member Sale Pricelist"
|
||||
msgstr ""
|
||||
msgstr "Članski cjenovnik"
|
||||
|
||||
#. module: membership
|
||||
#: field:report.partner_member.year,invoiced_amount:0
|
||||
@@ -284,7 +284,7 @@ msgstr ""
|
||||
#. module: membership
|
||||
#: help:res.partner,membership_amount:0
|
||||
msgid "The price negociated by the partner"
|
||||
msgstr ""
|
||||
msgstr "Cijena ugovorena sa partnerom"
|
||||
|
||||
#. module: membership
|
||||
#: model:process.node,name:membership.process_node_associatedmember0
|
||||
@@ -299,17 +299,17 @@ msgstr ""
|
||||
#. module: membership
|
||||
#: field:res.partner,membership_cancel:0
|
||||
msgid "Cancel membership date"
|
||||
msgstr ""
|
||||
msgstr "Otkaži datum članstva"
|
||||
|
||||
#. module: membership
|
||||
#: model:ir.actions.act_window,name:membership.action_membership_products
|
||||
msgid "Membership Products"
|
||||
msgstr ""
|
||||
msgstr "Proizvodi članstva"
|
||||
|
||||
#. module: membership
|
||||
#: model:process.node,note:membership.process_node_paidmember0
|
||||
msgid "Membership invoice paid."
|
||||
msgstr ""
|
||||
msgstr "Račun za članstvo je uplaćen."
|
||||
|
||||
#. module: membership
|
||||
#: field:report.partner_member.year,paid_amount:0
|
||||
@@ -323,7 +323,7 @@ msgstr "Plaćeno"
|
||||
#: selection:membership.membership_line,state:0
|
||||
#: selection:res.partner,membership_state:0
|
||||
msgid "Invoiced Member"
|
||||
msgstr ""
|
||||
msgstr "Fakturisani član"
|
||||
|
||||
#. module: membership
|
||||
#: model:ir.module.module,shortdesc:membership.module_meta_information
|
||||
@@ -344,7 +344,7 @@ msgstr ""
|
||||
#: selection:membership.membership_line,state:0
|
||||
#: selection:res.partner,membership_state:0
|
||||
msgid "Waiting Member"
|
||||
msgstr ""
|
||||
msgstr "Član na čekanju"
|
||||
|
||||
#. module: membership
|
||||
#: model:process.transition,name:membership.process_transition_associationpartner0
|
||||
@@ -360,7 +360,7 @@ msgstr "Fakturisani članovi"
|
||||
#. module: membership
|
||||
#: constraint:product.pricelist.version:0
|
||||
msgid "You cannot have 2 pricelist versions that overlap!"
|
||||
msgstr ""
|
||||
msgstr "Nije moguće imati dva cjenovnika koja se preklapaju!"
|
||||
|
||||
#. module: membership
|
||||
#: model:ir.actions.act_window,name:membership.action_membership_members_old
|
||||
@@ -376,7 +376,7 @@ msgstr "Iznos članarine"
|
||||
#. module: membership
|
||||
#: wizard_view:wizard_invoice_membership,init:0
|
||||
msgid "Choose invoice details"
|
||||
msgstr ""
|
||||
msgstr "Odaberite detalje računa"
|
||||
|
||||
#. module: membership
|
||||
#: selection:membership.membership_line,state:0
|
||||
@@ -387,7 +387,7 @@ msgstr "Stari Član"
|
||||
#. module: membership
|
||||
#: field:membership.membership_line,date_to:0
|
||||
msgid "To"
|
||||
msgstr ""
|
||||
msgstr "Za"
|
||||
|
||||
#. module: membership
|
||||
#: field:report.partner_member.year,waiting_amount:0
|
||||
@@ -400,7 +400,7 @@ msgstr "Čekanje"
|
||||
#. module: membership
|
||||
#: model:process.transition,note:membership.process_transition_waitingtoinvoice0
|
||||
msgid "Draft invoice is now open."
|
||||
msgstr ""
|
||||
msgstr "Nacrt računa je otvoren."
|
||||
|
||||
#. module: membership
|
||||
#: model:ir.actions.act_window,name:membership.action_membership_members_waiting
|
||||
@@ -444,13 +444,13 @@ msgstr ""
|
||||
#. module: membership
|
||||
#: model:process.node,note:membership.process_node_waitingmember0
|
||||
msgid "Draft invoice for membership."
|
||||
msgstr ""
|
||||
msgstr "Nacrt računa za članstvo."
|
||||
|
||||
#. module: membership
|
||||
#: selection:membership.membership_line,state:0
|
||||
#: selection:res.partner,membership_state:0
|
||||
msgid "Canceled Member"
|
||||
msgstr ""
|
||||
msgstr "Otkazani član"
|
||||
|
||||
#. module: membership
|
||||
#: model:product.price.type,name:membership.product_price_type_memberprice
|
||||
@@ -461,12 +461,12 @@ msgstr ""
|
||||
#. module: membership
|
||||
#: field:res.partner,free_member:0
|
||||
msgid "Free member"
|
||||
msgstr ""
|
||||
msgstr "Besplatni član"
|
||||
|
||||
#. module: membership
|
||||
#: field:res.partner,membership_stop:0
|
||||
msgid "Stop membership date"
|
||||
msgstr ""
|
||||
msgstr "Datum prestanka članstva"
|
||||
|
||||
#. module: membership
|
||||
#: model:ir.actions.act_window,name:membership.action_membership_members
|
||||
@@ -479,22 +479,22 @@ msgstr "Aktivni članovi"
|
||||
#: model:ir.ui.menu,name:membership.menu_report_partner_member_year_new
|
||||
#: view:report.partner_member.year_new:0
|
||||
msgid "New Membership by Years"
|
||||
msgstr ""
|
||||
msgstr "Novo članstvo po godinama"
|
||||
|
||||
#. module: membership
|
||||
#: model:process.node,name:membership.process_node_invoicedmember0
|
||||
msgid "Invoiced member"
|
||||
msgstr ""
|
||||
msgstr "Fakturisani član"
|
||||
|
||||
#. module: membership
|
||||
#: field:membership.membership_line,date_cancel:0
|
||||
msgid "Cancel date"
|
||||
msgstr ""
|
||||
msgstr "Datum otkazivanja"
|
||||
|
||||
#. module: membership
|
||||
#: model:process.node,name:membership.process_node_waitingmember0
|
||||
msgid "Waiting member"
|
||||
msgstr ""
|
||||
msgstr "Član na čekanju"
|
||||
|
||||
#. module: membership
|
||||
#: model:ir.actions.wizard,name:membership.wizard_invoice_membership
|
||||
@@ -505,12 +505,12 @@ msgstr ""
|
||||
#: model:process.node,name:membership.process_node_membershipproduct0
|
||||
#: wizard_field:wizard_invoice_membership,init,product:0
|
||||
msgid "Membership product"
|
||||
msgstr ""
|
||||
msgstr "Proizvod članstva"
|
||||
|
||||
#. module: membership
|
||||
#: constraint:product.product:0
|
||||
msgid "Error: Invalid ean code"
|
||||
msgstr ""
|
||||
msgstr "Greška: nevažeći EAN kod"
|
||||
|
||||
#. module: membership
|
||||
#: field:report.partner_member.year,year:0
|
||||
@@ -521,4 +521,4 @@ msgstr "Godina"
|
||||
#. module: membership
|
||||
#: field:res.partner,membership_state:0
|
||||
msgid "Current membership state"
|
||||
msgstr ""
|
||||
msgstr "Trenutno stanje članstva"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<data>
|
||||
|
||||
<menuitem icon="terp-mrp" id="menu_mrp_root" name="Manufacturing"
|
||||
groups="group_mrp_user,group_mrp_manager"/>
|
||||
groups="group_mrp_user,group_mrp_manager" sequence="3"/>
|
||||
<menuitem id="menu_mrp_reordering" name="Automatic Procurements" parent="stock.menu_stock_root" sequence="4"/>
|
||||
<menuitem id="menu_mrp_manufacturing" name="Manufacturing" parent="menu_mrp_root" sequence="1"/>
|
||||
|
||||
@@ -544,7 +544,7 @@
|
||||
<filter string="By Product" icon="terp-mrp" domain="[]" context="{'group_by':'product_id'}"/>
|
||||
<filter string="By State" icon="terp-mrp" domain="[]" context="{'group_by':'state'}"/>
|
||||
<filter string="Scheduled Date" icon="terp-mrp" domain="[]" context="{'group_by':'date_planned'}"/>
|
||||
</group>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
@@ -762,7 +762,7 @@
|
||||
<filter string="By Product" icon="terp-mrp" domain="[]" context="{'group_by':'product_id'}"/>
|
||||
<filter string="By State" icon="terp-mrp" domain="[]" context="{'group_by':'state'}"/>
|
||||
<filter string="Scheduled Date" icon="terp-mrp" domain="[]" context="{'group_by':'date_planned'}"/>
|
||||
</group>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<!-- id="menu_bi"-->
|
||||
<!-- icon="terp-account" parent="base.next_id_50"/>-->
|
||||
|
||||
<menuitem icon="terp-graph" id="base.reporting_menu" name="Reporting"/>
|
||||
<menuitem icon="terp-graph" id="base.reporting_menu" name="Reporting" sequence="8"/>
|
||||
<menuitem
|
||||
id="base.next_id_50"
|
||||
name="Configuration"
|
||||
|
||||
@@ -165,7 +165,7 @@
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<menuitem name="Point of Sale" id="menu_point_root" />
|
||||
<menuitem name="Point of Sale" id="menu_point_root" sequence="10"/>
|
||||
<menuitem name="Point of Sale" id="menu_point_of_sale" parent="menu_point_root" sequence="1" />
|
||||
<menuitem name="New Sale" parent="menu_point_of_sale" id="menu_point_ofsale" action="action_pos_pos_form" sequence="1"/>
|
||||
<menuitem action="product.product_normal_action" id="menu_pos_products" parent="menu_point_of_sale" sequence="2" name="Products"/>
|
||||
|
||||
+188
-172
File diff suppressed because it is too large
Load Diff
@@ -371,13 +371,14 @@ class task(osv.osv):
|
||||
'ref_doc2': 'project.project,%d'% (project.id,),
|
||||
})
|
||||
self.write(cr, uid, [task.id], {'state': 'done', 'date_end':time.strftime('%Y-%m-%d %H:%M:%S'), 'remaining_hours': 0.0})
|
||||
if task.parent_ids and task.parent_ids.state in ('pending','draft'):
|
||||
reopen = True
|
||||
for child in task.parent_ids.child_ids:
|
||||
if child.id != task.id and child.state not in ('done','cancelled'):
|
||||
reopen = False
|
||||
if reopen:
|
||||
self.do_reopen(cr, uid, [task.parent_ids.id])
|
||||
for parent_id in task.parent_ids:
|
||||
if parent_id.state in ('pending','draft'):
|
||||
reopen = True
|
||||
for child in parent_id.child_ids:
|
||||
if child.id != task.id and child.state not in ('done','cancelled'):
|
||||
reopen = False
|
||||
if reopen:
|
||||
self.do_reopen(cr, uid, [parent_id.id])
|
||||
return True
|
||||
|
||||
def do_reopen(self, cr, uid, ids, *args):
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<menuitem icon="terp-project" id="base.menu_main_pm" name="Project Management"/>
|
||||
<menuitem icon="terp-project" id="base.menu_main_pm" name="Project Management" sequence="1"/>
|
||||
<menuitem id="menu_project_management" name="Project Management" parent="base.menu_main_pm" sequence="1"/>
|
||||
|
||||
<menuitem id="menu_definitions" name="Configuration" parent="base.menu_main_pm" sequence="60"/>
|
||||
|
||||
@@ -24,8 +24,6 @@ import pooler
|
||||
from tools.translate import _
|
||||
import datetime
|
||||
from resource.faces import *
|
||||
from new import classobj
|
||||
import operator
|
||||
|
||||
compute_form = """<?xml version="1.0" ?>
|
||||
<form string="Compute Scheduling of Tasks">
|
||||
@@ -34,7 +32,7 @@ compute_form = """<?xml version="1.0" ?>
|
||||
|
||||
success_msg = """<?xml version="1.0" ?>
|
||||
<form string="Compute Scheduling of Tasks">
|
||||
<label string="Task Scheduling completed successfully."/>
|
||||
<label string="Task Scheduling completed scccessfully."/>
|
||||
</form>"""
|
||||
|
||||
compute_fields = {
|
||||
@@ -42,18 +40,18 @@ compute_fields = {
|
||||
|
||||
}
|
||||
def timeformat_convert(cr, uid, time_string, context={}):
|
||||
# Function to convert input time string:: 8.5 to output time string 8:30
|
||||
|
||||
strg = str(time_string)[-2:]
|
||||
last_strg = str(time_string)[0:-2]
|
||||
if strg != '.0':
|
||||
if '.' not in strg:
|
||||
strg = '.' + strg
|
||||
last_strg = str(time_string)[:-3]
|
||||
|
||||
new_strg = round(float(strg) / 0.016666667)
|
||||
converted_strg = last_strg + ':' + str(new_strg)[:-2]
|
||||
else:
|
||||
converted_strg = last_strg + ':00'
|
||||
|
||||
return converted_strg
|
||||
|
||||
class wizard_compute_tasks(wizard.interface):
|
||||
@@ -65,145 +63,115 @@ class wizard_compute_tasks(wizard.interface):
|
||||
resource_pool = pool.get('resource.resource')
|
||||
resource_leaves_pool = pool.get('resource.calendar.leaves')
|
||||
resource_week_pool = pool.get('resource.calendar.week')
|
||||
user_pool = pool.get('res.users')
|
||||
|
||||
|
||||
project_id = data['form']['project_id']
|
||||
project = project_pool.browse(cr,uid,project_id)
|
||||
task_ids = task_pool.search(cr,uid,[('project_id','=',project_id)])
|
||||
if task_ids:
|
||||
wktime_cal = []
|
||||
leaves = []
|
||||
task_ids.sort()
|
||||
task_obj = task_pool.browse(cr,uid,task_ids)
|
||||
task_1 = task_obj[0]
|
||||
dt_start = datetime.datetime.strftime(datetime.datetime.strptime(project.date_start,"%Y-%m-%d"),"%Y-%m-%d %H:%M")
|
||||
calendar_id = project.resource_calendar_id.id
|
||||
if task_1.date_start:
|
||||
date_dt = datetime.datetime.strptime(task_1.date_start,"%Y-%m-%d %H:%M:%S")
|
||||
else:
|
||||
date_dt = datetime.datetime.strptime(project.date_start,"%Y-%m-%d")
|
||||
dt = datetime.datetime.strftime(date_dt,"%Y-%m-%d %H:%M")
|
||||
|
||||
# If project has a working calendar then that would be used otherwise
|
||||
# the default faces calendar would be used
|
||||
if calendar_id:
|
||||
resource_leave_ids = resource_leaves_pool.search(cr,uid,[('calendar_id','=',project.resource_calendar_id.id)])
|
||||
time_range = "8:00-8:00"
|
||||
non_working = ""
|
||||
wk = {"0":"mon","1":"tue","2":"wed","3":"thu","4":"fri","5":"sat","6":"sun"}
|
||||
wk_days = {}
|
||||
wk_time = {}
|
||||
wktime_list = []
|
||||
week_ids = resource_week_pool.search(cr,uid,[('calendar_id','=',calendar_id)])
|
||||
week_obj = resource_week_pool.read(cr,uid,week_ids,['dayofweek','hour_from','hour_to'])
|
||||
for i in range(len(task_obj)):
|
||||
final_lst = []
|
||||
leaves = []
|
||||
if task_obj[i].user_id.id:
|
||||
resource_id = resource_pool.search(cr,uid,[('user_id','=',task_obj[i].user_id.id)])
|
||||
if resource_id :
|
||||
resource_obj = resource_pool.browse(cr,uid,resource_id)[0]
|
||||
if resource_obj.calendar_id:
|
||||
calendar_id = resource_obj.calendar_id.id
|
||||
resource_leave_ids = resource_leaves_pool.search(cr,uid,[('resource_id','=',resource_id)])
|
||||
else:
|
||||
calendar_id = project.resource_calendar_id.id
|
||||
resource_leave_ids = resource_leaves_pool.search(cr,uid,[('calendar_id','=',project.resource_calendar_id.id)])
|
||||
|
||||
# Converting time formats into appropriate format required
|
||||
# and creating a list like [('mon', '8:00-12:00'), ('mon', '13:00-18:00')]
|
||||
for week in week_obj:
|
||||
res_str = ""
|
||||
if wk.has_key(week['dayofweek']):
|
||||
day = wk[week['dayofweek']]
|
||||
wk_days[week['dayofweek']] = wk[week['dayofweek']]
|
||||
time_range = "8:00-8:00"
|
||||
non_working = ""
|
||||
wk = {"0":"mon","1":"tue","2":"wed","3":"thu","4":"fri","5":"sat","6":"sun"}
|
||||
wk_days = {}
|
||||
wk_time = {}
|
||||
tlist = []
|
||||
week_ids = resource_week_pool.search(cr,uid,[('calendar_id','=',calendar_id)])
|
||||
week_obj = resource_week_pool.read(cr,uid,week_ids,['dayofweek','hour_from','hour_to'])
|
||||
|
||||
hour_from_str = timeformat_convert(cr,uid,week['hour_from'])
|
||||
hour_to_str = timeformat_convert(cr,uid,week['hour_to'])
|
||||
res_str = hour_from_str + '-' + hour_to_str
|
||||
wktime_list.append((day,res_str))
|
||||
for week in week_obj:
|
||||
res_str = ""
|
||||
if wk.has_key(week['dayofweek']):
|
||||
day = wk[week['dayofweek']]
|
||||
wk_days[week['dayofweek']] = wk[week['dayofweek']]
|
||||
|
||||
# Converting it to format like [('mon', '8:00-12:00', '13:00-18:00')]
|
||||
for item in wktime_list:
|
||||
if wk_time.has_key(item[0]):
|
||||
wk_time[item[0]].append(item[1])
|
||||
else:
|
||||
wk_time[item[0]] = [item[0]]
|
||||
wk_time[item[0]].append(item[1])
|
||||
hour_from_str = timeformat_convert(cr,uid,week['hour_from'])
|
||||
hour_to_str = timeformat_convert(cr,uid,week['hour_to'])
|
||||
res_str = hour_from_str + '-' + hour_to_str
|
||||
tlist.append((day,res_str))
|
||||
|
||||
for k,v in wk_time.items():
|
||||
wktime_cal.append(tuple(v))
|
||||
for item in tlist:
|
||||
if wk_time.has_key(item[0]):
|
||||
wk_time[item[0]].append(item[1])
|
||||
else:
|
||||
wk_time[item[0]] = [item[0]]
|
||||
wk_time[item[0]].append(item[1])
|
||||
|
||||
# For non working days adding [('tue,wed,fri,sat,sun', '8:00-8:00')]
|
||||
for k,v in wk_days.items():
|
||||
if wk.has_key(k):
|
||||
wk.pop(k)
|
||||
for v in wk.itervalues():
|
||||
non_working += v + ','
|
||||
if non_working:
|
||||
wktime_cal.append((non_working[:-1],time_range))
|
||||
for k,v in wk_time.items():
|
||||
final_lst.append(tuple(v))
|
||||
|
||||
# If project working calendar has any leaves
|
||||
if resource_leave_ids:
|
||||
res_leaves = resource_leaves_pool.read(cr,uid,resource_leave_ids,['date_from','date_to'])
|
||||
for leave in range(len(res_leaves)):
|
||||
dt_start = datetime.datetime.strptime(res_leaves[leave]['date_from'],'%Y-%m-%d %H:%M:%S')
|
||||
dt_end = datetime.datetime.strptime(res_leaves[leave]['date_to'],'%Y-%m-%d %H:%M:%S')
|
||||
no = dt_end - dt_start
|
||||
leave_days = no.days + 1
|
||||
[leaves.append((dt_start + datetime.timedelta(days=x)).strftime('%Y-%m-%d')) for x in range(int(leave_days))]
|
||||
leaves.sort()
|
||||
for k,v in wk_days.items():
|
||||
if wk.has_key(k):
|
||||
wk.pop(k)
|
||||
for v in wk.itervalues():
|
||||
non_working += v + ','
|
||||
if non_working:
|
||||
final_lst.append((non_working[:-1],time_range))
|
||||
|
||||
# To create resources which are the Project Members
|
||||
resource = project.members
|
||||
resource_objs = []
|
||||
for no in range(len(resource)):
|
||||
resource_id = resource_pool.search(cr,uid,[('user_id','=',resource[no].id)])
|
||||
resource_objs.append(classobj(str(resource[no].name),(Resource,),{'__doc__':resource[no].name,'__name__':resource[no].name}))
|
||||
if resource_leave_ids:
|
||||
res_leaves = resource_leaves_pool.read(cr,uid,resource_leave_ids,['date_from','date_to'])
|
||||
for leave in range(len(res_leaves)):
|
||||
dt_start = datetime.datetime.strptime(res_leaves[leave]['date_from'],'%Y-%m-%d %H:%M:%S')
|
||||
dt_end = datetime.datetime.strptime(res_leaves[leave]['date_to'],'%Y-%m-%d %H:%M:%S')
|
||||
no = dt_end - dt_start
|
||||
leave_days = no.days + 1
|
||||
[leaves.append((dt_start + datetime.timedelta(days=x)).strftime('%Y-%m-%d')) for x in range(int(leave_days))]
|
||||
leaves.sort()
|
||||
|
||||
# To create dynamic no of tasks
|
||||
def tasks(j,eff):
|
||||
def task():
|
||||
"""
|
||||
task is a dynamic method!
|
||||
"""
|
||||
effort = eff
|
||||
task.__doc__ = "TaskNO%d" %j
|
||||
task.__name__ = "task%d" %j
|
||||
return task
|
||||
|
||||
# To create dynamic no of tasks with the resource specified
|
||||
def tasks_resource(j,eff,obj):
|
||||
def task():
|
||||
"""
|
||||
task is a dynamic method!
|
||||
"""
|
||||
effort = eff
|
||||
resource = obj
|
||||
task.__doc__ = "TaskNO%d" %j
|
||||
task.__name__ = "task%d" %j
|
||||
return task
|
||||
hours = task_obj[i].remaining_hours / task_obj[i].occupation_rate
|
||||
hours = str(hours)[:-2] + 'H'
|
||||
|
||||
# Creating the project with all the tasks and resources
|
||||
def Project():
|
||||
resource = reduce(operator.or_,resource_objs)
|
||||
title = project.name
|
||||
start = dt_start
|
||||
class user(Resource):
|
||||
pass
|
||||
|
||||
# If project has calendar
|
||||
if wktime_cal or leaves:
|
||||
working_days = wktime_cal
|
||||
if i == 0:
|
||||
new_dt = dt
|
||||
else:
|
||||
data = task_pool.read(cr,uid,[task_obj[i-1].id],['date_end'])[0]
|
||||
new_dt = data['date_end'][0:16]
|
||||
|
||||
def Project_1():
|
||||
resource = user
|
||||
title = project.name
|
||||
start = new_dt
|
||||
effort = hours
|
||||
|
||||
if final_lst or leaves:
|
||||
working_days = final_lst
|
||||
vacation = tuple(leaves)
|
||||
|
||||
# Dynamic Creation of tasks
|
||||
for i in range(len(task_obj)):
|
||||
hours = str(task_obj[i].planned_hours / task_obj[i].occupation_rate)[:-2] + 'H'
|
||||
if task_obj[i].user_id:
|
||||
for resource_object in resource_objs:
|
||||
if resource_object.__name__ == task_obj[i].user_id.name:
|
||||
task = tasks_resource(i,hours,resource_object)
|
||||
else:
|
||||
task = tasks(i,hours)
|
||||
def task1():
|
||||
start = new_dt
|
||||
effort = hours
|
||||
title = task_obj[i].name
|
||||
|
||||
project_1 = BalancedProject(Project_1)
|
||||
s_date = project_1.calendar.WorkingDate(project_1.task1.start).to_datetime()
|
||||
e_date = project_1.calendar.WorkingDate(project_1.task1.end).to_datetime()
|
||||
task_pool.write(cr,uid,[task_obj[i].id],{'date_start':s_date,'date_end':e_date})
|
||||
|
||||
project = BalancedProject(Project)
|
||||
task_no = len(task_obj)
|
||||
loop_no = 0
|
||||
for t in project:
|
||||
no2 = loop_no
|
||||
while loop_no <= task_no:
|
||||
s_date = t.start.to_datetime()
|
||||
e_date = t.end.to_datetime()
|
||||
print 'Start Date And End Date:::',s_date,e_date,t.name,t.booked_resource
|
||||
if loop_no != 0:
|
||||
user_id = user_pool.search(cr,uid,[('name','=',t.booked_resource[0].__name__)])
|
||||
task_pool.write(cr,uid,[task_obj[loop_no - 1].id],{'date_start':s_date,'date_end':e_date,'user_id':user_id[0]})
|
||||
loop_no = task_no + 1
|
||||
loop_no = no2
|
||||
loop_no +=1
|
||||
return {}
|
||||
|
||||
states = {
|
||||
'init': {
|
||||
'actions': [],
|
||||
@@ -212,8 +180,7 @@ class wizard_compute_tasks(wizard.interface):
|
||||
('compute', 'Compute')
|
||||
]},
|
||||
},
|
||||
|
||||
|
||||
|
||||
'compute': {
|
||||
'actions': [_compute_date],
|
||||
'result': {'type':'form','arch':success_msg,'fields':{}, 'state':[('end', 'Ok')]},
|
||||
@@ -223,3 +190,4 @@ wizard_compute_tasks('wizard.compute.tasks')
|
||||
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -52,12 +52,12 @@ class wizard_delegate(wizard.interface):
|
||||
task_obj = pooler.get_pool(cr.dbname).get('project.task')
|
||||
task = task_obj.browse(cr, uid, data['id'], context)
|
||||
newname = data['form']['prefix'] or ''
|
||||
task_obj.copy(cr, uid, data['id'], {
|
||||
new_task_id = task_obj.copy(cr, uid, data['id'], {
|
||||
'name': data['form']['name'],
|
||||
'user_id': data['form']['user_id'],
|
||||
'planned_hours': data['form']['planned_hours'],
|
||||
'remaining_hours': data['form']['planned_hours'],
|
||||
'parent_id': data['id'],
|
||||
'parent_ids': [(6, 0, [data['id']])],
|
||||
'state': 'open',
|
||||
'description': data['form']['new_task_description'] or '',
|
||||
'child_ids': [],
|
||||
@@ -65,7 +65,8 @@ class wizard_delegate(wizard.interface):
|
||||
})
|
||||
task_obj.write(cr, uid, [data['id']], {
|
||||
'remaining_hours': data['form']['planned_hours_me'],
|
||||
'name': newname
|
||||
'name': newname,
|
||||
'child_ids': [(6, 0, [new_task_id])]
|
||||
})
|
||||
if data['form']['state']=='pending':
|
||||
task_obj.do_pending(cr, uid, [data['id']])
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<!--<menuitem icon="terp-purchase" id="base.menu_purchase_root" name="Purchase Management"
|
||||
groups="group_purchase_user"/>-->
|
||||
<menuitem icon="terp-purchase" id="base.menu_purchase_root" name="Procurement Management"
|
||||
groups="group_purchase_user"/>
|
||||
groups="group_purchase_user" sequence="7"/>
|
||||
<menuitem id="menu_procurement_management" name="Procurement Management"
|
||||
parent="base.menu_purchase_root" sequence="1"/>
|
||||
|
||||
@@ -165,7 +165,7 @@
|
||||
<filter string="By Supplier" icon="terp-purchase" domain="[]" context="{'group_by':'partner_id'}"/>
|
||||
<filter string="By State" icon="terp-purchase" domain="[]" context="{'group_by':'state'}"/>
|
||||
<filter string="By Order Date" icon="terp-purchase" domain="[]" context="{'group_by':'date_order'}"/>
|
||||
</group>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -7,13 +7,13 @@ msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
|
||||
"PO-Revision-Date: 2008-11-03 05:19+0000\n"
|
||||
"Last-Translator: Sergei Kostigoff <sergei.kostigoff@gmail.com>\n"
|
||||
"PO-Revision-Date: 2010-02-08 02:31+0000\n"
|
||||
"Last-Translator: Feelipok <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: 2009-12-16 05:22+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-08 04:45+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: report_mrp
|
||||
@@ -43,12 +43,12 @@ msgstr ""
|
||||
#. module: report_mrp
|
||||
#: view:report.workcenter.load:0
|
||||
msgid "Workcenters load"
|
||||
msgstr ""
|
||||
msgstr "Загрузка рабочей области"
|
||||
|
||||
#. module: report_mrp
|
||||
#: model:ir.model,name:report_mrp.model_report_workcenter_load
|
||||
msgid "Workcenter Load"
|
||||
msgstr ""
|
||||
msgstr "Загрузка рабочей области"
|
||||
|
||||
#. module: report_mrp
|
||||
#: model:ir.module.module,shortdesc:report_mrp.module_meta_information
|
||||
@@ -73,13 +73,13 @@ msgstr "Кол-во часов"
|
||||
#. module: report_mrp
|
||||
#: field:report.workcenter.load,workcenter_id:0
|
||||
msgid "Workcenter"
|
||||
msgstr ""
|
||||
msgstr "Рабочая область"
|
||||
|
||||
#. module: report_mrp
|
||||
#: model:ir.actions.act_window,name:report_mrp.action_report_workcenter_load_tree
|
||||
#: model:ir.ui.menu,name:report_mrp.menu_report_workcenter_load
|
||||
msgid "Workcenter Loads"
|
||||
msgstr ""
|
||||
msgstr "Загрузка рабочих областей"
|
||||
|
||||
#. module: report_mrp
|
||||
#: model:ir.actions.act_window,name:report_mrp.action_report_in_out_picking_tree
|
||||
|
||||
@@ -370,7 +370,7 @@
|
||||
<field name="view_id" ref="view_random_timesheet_lines_tree"/>
|
||||
</record>
|
||||
<!--Time Tracking menu in project Management-->
|
||||
<menuitem icon="terp-project" id="base.menu_main_pm" name="Project Management"/>
|
||||
<menuitem icon="terp-project" id="base.menu_main_pm" name="Project Management" sequence="1"/>
|
||||
<menuitem
|
||||
id="base.menu_project_management_time_tracking"
|
||||
name="Time Tracking"
|
||||
|
||||
@@ -60,7 +60,7 @@ SMART = 1
|
||||
#@+node:Exceptions
|
||||
#@+node:class AttributeError
|
||||
class AttributeError(AttributeError):
|
||||
#@ << class AttributeError declarations >>
|
||||
#@ << class AttributeError declarations >>
|
||||
#@+node:<< class AttributeError declarations >>
|
||||
is_frozen = False
|
||||
|
||||
@@ -72,7 +72,7 @@ class AttributeError(AttributeError):
|
||||
class RecursionError(Exception):
|
||||
"""This exception is raised in cas of cirular dependencies
|
||||
within an project"""
|
||||
#@ << class RecursionError declarations >>
|
||||
#@ << class RecursionError declarations >>
|
||||
#@+node:<< class RecursionError declarations >>
|
||||
pass
|
||||
|
||||
@@ -84,7 +84,7 @@ class RecursionError(Exception):
|
||||
class _IncompleteError(Exception):
|
||||
"""This exception is raised, when there is not enough
|
||||
data specified to calculate as task"""
|
||||
#@ @+others
|
||||
#@ @+others
|
||||
#@+node:__init__
|
||||
def __init__(self, *args):
|
||||
if isinstance(args[0], (basestring)):
|
||||
@@ -104,13 +104,13 @@ class _MeProxy(object):
|
||||
"""
|
||||
A Proxy class for the me attribute of tasks in the compile case
|
||||
"""
|
||||
#@ << declarations >>
|
||||
#@ << declarations >>
|
||||
#@+node:<< declarations >>
|
||||
__slots__ = "task"
|
||||
|
||||
#@-node:<< declarations >>
|
||||
#@nl
|
||||
#@ @+others
|
||||
#@ @+others
|
||||
#@+node:__init__
|
||||
def __init__(self, task):
|
||||
object.__setattr__(self, "task", task)
|
||||
@@ -153,7 +153,6 @@ class _MeProxy(object):
|
||||
#@-node:__setattr__
|
||||
#@+node:__iter__
|
||||
def __iter__(self):
|
||||
|
||||
return iter(self.task)
|
||||
#@nonl
|
||||
#@-node:__iter__
|
||||
@@ -173,26 +172,25 @@ class _MeProxyRecalc(_MeProxy):
|
||||
"""
|
||||
A Proxy class for the me attribute of tasks in the recalc case
|
||||
"""
|
||||
#@ @+others
|
||||
#@ @+others
|
||||
#@+node:__setattr__
|
||||
def __setattr__(self, name, value):
|
||||
if self.task._properties.has_key(name):
|
||||
if self.task._properties.has_key(name):
|
||||
self.task._set_attrib(name, value)
|
||||
#@-node:__setattr__
|
||||
#@-others
|
||||
#@-node:class _MeProxyRecalc
|
||||
#@+node:class _MeProxyError
|
||||
class _MeProxyError(_MeProxy):
|
||||
#@ << declarations >>
|
||||
#@ << declarations >>
|
||||
#@+node:<< declarations >>
|
||||
__slots__ = ("task", "attrib", "exc")
|
||||
|
||||
#@-node:<< declarations >>
|
||||
#@nl
|
||||
#@ @+others
|
||||
#@ @+others
|
||||
#@+node:__init__
|
||||
def __init__(self, task, attrib, exc):
|
||||
|
||||
_MeProxy.__init__(self, task)
|
||||
object.__setattr__(self, "attrib", attrib)
|
||||
object.__setattr__(self, "exc", exc)
|
||||
@@ -206,13 +204,13 @@ class _MeProxyError(_MeProxy):
|
||||
#@-node:class _MeProxyError
|
||||
#@+node:class _MeProxyWarn
|
||||
class _MeProxyWarn(_MeProxy):
|
||||
#@ << declarations >>
|
||||
#@ << declarations >>
|
||||
#@+node:<< declarations >>
|
||||
__slots__ = ("task", "attrib", "message")
|
||||
|
||||
#@-node:<< declarations >>
|
||||
#@nl
|
||||
#@ @+others
|
||||
#@ @+others
|
||||
#@+node:__init__
|
||||
def __init__(self, task, attrib, message):
|
||||
_MeProxy.__init__(self, task)
|
||||
@@ -476,7 +474,7 @@ class _Path(object):
|
||||
find out the source attribute (task and attribute name)
|
||||
of the value.
|
||||
"""
|
||||
#@ @+others
|
||||
#@ @+others
|
||||
#@+node:__init__
|
||||
def __init__(self, task, path_str):
|
||||
self._task = task
|
||||
@@ -539,7 +537,7 @@ class _ValueWrapper(object):
|
||||
a return value of a task method. It contains the value,
|
||||
and the supplier of that value
|
||||
"""
|
||||
#@ @+others
|
||||
#@ @+others
|
||||
#@+node:__init__
|
||||
def __init__(self, value, ref):
|
||||
self._value = value
|
||||
@@ -720,7 +718,7 @@ class _NEVER_USED_:
|
||||
class _StringConverter(object):
|
||||
"""This class is a helper for the to_string mechanism
|
||||
of tasks"""
|
||||
#@ @+others
|
||||
#@ @+others
|
||||
#@+node:__init__
|
||||
def __init__(self, source, format=None):
|
||||
self.source = source
|
||||
@@ -1013,7 +1011,7 @@ def _calc_maxload(task, resource):
|
||||
#@+node:class AllocationAlgorithm
|
||||
class AllocationAlgorithm(object):
|
||||
"""This class is a base for resource allocation algorithms"""
|
||||
#@ @+others
|
||||
#@ @+others
|
||||
#@+node:test_allocation
|
||||
def test_allocation(self, task, resource):
|
||||
"""This method simulates the allocation of a specific resource.
|
||||
@@ -1034,7 +1032,7 @@ class AllocationAlgorithm(object):
|
||||
#@+node:class StrictAllocator
|
||||
class StrictAllocator(AllocationAlgorithm):
|
||||
"""This class implements the STRICT resource allocation"""
|
||||
#@ @+others
|
||||
#@ @+others
|
||||
#@+node:_distribute_len_loads
|
||||
def _distribute_len_loads(self, task, resource, effort, length):
|
||||
# A special load calculation, if effort and length are given.
|
||||
@@ -1174,7 +1172,6 @@ class StrictAllocator(AllocationAlgorithm):
|
||||
effort = to_delta(length * factor\
|
||||
+ task.performed_effort).round()
|
||||
|
||||
|
||||
return (end, book_load), resource, calc_load, start, effort
|
||||
#@-node:test_allocation
|
||||
#@+node:allocate
|
||||
@@ -1228,7 +1225,7 @@ class StrictAllocator(AllocationAlgorithm):
|
||||
|
||||
|
||||
class SmartAllocator(StrictAllocator):
|
||||
#@ @+others
|
||||
#@ @+others
|
||||
#@+node:balance
|
||||
def balance(self, task, start, delta, adjust_date,
|
||||
calc_load, resource):
|
||||
@@ -1265,7 +1262,7 @@ class SmartAllocator(StrictAllocator):
|
||||
|
||||
|
||||
class SloppyAllocator(AllocationAlgorithm):
|
||||
#@ @+others
|
||||
#@ @+others
|
||||
#@+node:test_allocation
|
||||
def test_allocation(self, task, resource):
|
||||
if task.__dict__.has_key("effort"):
|
||||
@@ -1562,7 +1559,7 @@ def DailyMax(value):
|
||||
#@+node:Task
|
||||
#@+node:class _TaskProperty
|
||||
class _TaskProperty(object):
|
||||
#@ @+others
|
||||
#@ @+others
|
||||
#@+node:__init__
|
||||
def __init__(self, method):
|
||||
self.method = method
|
||||
@@ -1578,7 +1575,7 @@ class _TaskProperty(object):
|
||||
#@-node:class _TaskProperty
|
||||
#@+node:class _RoundingTaskProperty
|
||||
class _RoundingTaskProperty(object):
|
||||
#@ @+others
|
||||
#@ @+others
|
||||
#@+node:__init__
|
||||
def __init__(self, method, name):
|
||||
self.method = method
|
||||
@@ -1813,7 +1810,7 @@ class Task(object):
|
||||
#@nonl
|
||||
#@-node:<< description >>
|
||||
#@nl
|
||||
#@ << declarations >>
|
||||
#@ << declarations >>
|
||||
#@+node:<< declarations >>
|
||||
# Variables for the gui interface
|
||||
_date_completion = { "Date": 'Date("|")',
|
||||
@@ -1927,13 +1924,14 @@ class Task(object):
|
||||
#@nonl
|
||||
#@-node:<< declarations >>
|
||||
#@nl
|
||||
#@ @+others
|
||||
#@ @+others
|
||||
#@+node:__init__
|
||||
def __init__(self, func, name, parent=None, index=1):
|
||||
|
||||
assert(type(func) == types.FunctionType)
|
||||
|
||||
func_key = (func.func_code, func.func_closure and id(func.func_closure))
|
||||
|
||||
try:
|
||||
instrumented = instrumentation_cache[func_key]
|
||||
except KeyError:
|
||||
@@ -1943,7 +1941,7 @@ class Task(object):
|
||||
|
||||
func.task_func = instrumented # will be used in the gui
|
||||
self._function = instrumented
|
||||
self.name = func.func_name
|
||||
self.name = name
|
||||
self.up = parent
|
||||
self.children = []
|
||||
self._sources = {} # all tasks, I am linked to
|
||||
@@ -2189,6 +2187,7 @@ class Task(object):
|
||||
def formatter(self, attrib_name, arg=None, format=None):
|
||||
"""returns a function which is able
|
||||
to convert the value of the given attrib_name to a string"""
|
||||
|
||||
formats = self.formats
|
||||
format = format or formats.get(attrib_name)
|
||||
|
||||
@@ -2549,6 +2548,7 @@ class Task(object):
|
||||
#@+node:Setting methods
|
||||
#@+node:_set_attrib
|
||||
def _set_attrib(self, name, value):
|
||||
|
||||
if value is _NEVER_USED_: return
|
||||
|
||||
try:
|
||||
@@ -2715,6 +2715,7 @@ class Task(object):
|
||||
value = reduce(lambda a, b: a & b, value)
|
||||
|
||||
self.resource = value()
|
||||
|
||||
#@-node:_set_resource
|
||||
#@+node:_set_copy_src
|
||||
def _set_copy_src(self, value):
|
||||
@@ -2795,6 +2796,7 @@ class Task(object):
|
||||
def __renew_dates(self):
|
||||
for attrib in ("effort", "start", "end", "length", "todo"):
|
||||
try:
|
||||
|
||||
self._set_attrib(attrib, self._original_values[attrib])
|
||||
except KeyError:
|
||||
pass
|
||||
@@ -2827,6 +2829,7 @@ class Task(object):
|
||||
#@-node:_set_extra_work
|
||||
#@+node:_set_working_days
|
||||
def _set_working_days(self, value):
|
||||
|
||||
if type(value[0]) is str:
|
||||
value = (value, )
|
||||
|
||||
@@ -2856,6 +2859,7 @@ class Task(object):
|
||||
#@-node:_get_minimum_time_unit
|
||||
#@+node:_set_working_days_per_week
|
||||
def _set_working_days_per_week(self, value):
|
||||
|
||||
self.__make_calendar()
|
||||
self.calendar.working_days_per_week = value
|
||||
self._properties["working_days_per_week"] = True
|
||||
@@ -3345,7 +3349,7 @@ class _ProjectBase(Task):
|
||||
"""
|
||||
Base class for all projects.
|
||||
"""
|
||||
#@ << class _ProjectBase declarations >>
|
||||
#@ << class _ProjectBase declarations >>
|
||||
#@+node:<< class _ProjectBase declarations >>
|
||||
__attrib_completions__ = { }
|
||||
__attrib_completions__.update(Task.__attrib_completions__)
|
||||
@@ -3362,7 +3366,7 @@ class _ProjectBase(Task):
|
||||
|
||||
#@-node:<< class _ProjectBase declarations >>
|
||||
#@nl
|
||||
#@ @+others
|
||||
#@ @+others
|
||||
#@+node:__init__
|
||||
def __init__(self, top_task, scenario="_default", id=""):
|
||||
self.calendar = pcalendar.Calendar()
|
||||
@@ -3446,13 +3450,13 @@ class Project(_ProjectBase):
|
||||
other projects in the resource database. The default value for id
|
||||
is the name of top_task.
|
||||
"""
|
||||
#@ << class Project declarations >>
|
||||
#@ << class Project declarations >>
|
||||
#@+node:<< class Project declarations >>
|
||||
__call_completion__ = 'Project(|top_task, scenario="_default", id=None)'
|
||||
|
||||
#@-node:<< class Project declarations >>
|
||||
#@nl
|
||||
#@ @+others
|
||||
#@ @+others
|
||||
#@+node:__init__
|
||||
def __init__(self, top_task, scenario="_default", id=None):
|
||||
_ProjectBase.__init__(self, top_task, scenario, id)
|
||||
@@ -3470,7 +3474,7 @@ class Project(_ProjectBase):
|
||||
#@-node:class Project
|
||||
#@+node:class _AllocationPoject
|
||||
class _AllocationPoject(_ProjectBase):
|
||||
#@ @+others
|
||||
#@ @+others
|
||||
#@+node:unfreeze_parents
|
||||
def unfreeze_parents(self):
|
||||
if self.has_actual_data:
|
||||
@@ -3486,14 +3490,14 @@ class BalancedProject(_AllocationPoject):
|
||||
Generates a project with allocated resources. The tasks are balanced
|
||||
to fit the resources load conditions.
|
||||
"""
|
||||
#@ << class BalancedProject declarations >>
|
||||
#@ << class BalancedProject declarations >>
|
||||
#@+node:<< class BalancedProject declarations >>
|
||||
__call_completion__ = """BalancedProject(|top_task, scenario="_default",
|
||||
id=None, balance=SMART, performed=None)"""
|
||||
|
||||
#@-node:<< class BalancedProject declarations >>
|
||||
#@nl
|
||||
#@ @+others
|
||||
#@ @+others
|
||||
#@+node:__init__
|
||||
def __init__(self, top_task, scenario="_default",
|
||||
id=None, balance=SMART, performed=None):
|
||||
@@ -3646,13 +3650,13 @@ class AdjustedProject(_AllocationPoject):
|
||||
adjusted to the actual tracking data and balanced to fit the
|
||||
resources load conditions.
|
||||
"""
|
||||
#@ << class AdjustedProject declarations >>
|
||||
#@ << class AdjustedProject declarations >>
|
||||
#@+node:<< class AdjustedProject declarations >>
|
||||
__call_completion__ = 'AdjustedProject(|base_project)'
|
||||
|
||||
#@-node:<< class AdjustedProject declarations >>
|
||||
#@nl
|
||||
#@ @+others
|
||||
#@ @+others
|
||||
#@+node:__init__
|
||||
def __init__(self, base_project):
|
||||
_AllocationPoject.__init__(self, base_project._function,
|
||||
@@ -3848,4 +3852,4 @@ class AdjustedProject(_AllocationPoject):
|
||||
|
||||
"""
|
||||
#@-node:@file task.py
|
||||
#@-leo
|
||||
#@-leo
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<menuitem icon="terp-hr" id="menu_hr_root" name="Human Resources"/>
|
||||
<menuitem icon="terp-hr" id="menu_hr_root" name="Human Resources" sequence="6"/>
|
||||
<menuitem
|
||||
id="menu_hr_reporting"
|
||||
name="Reporting"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<menuitem icon="terp-project" id="base.menu_main" name="Project Management"/>
|
||||
<menuitem icon="terp-project" id="base.menu_main" name="Project Management" sequence="1"/>
|
||||
<menuitem id="base.menu_pm_resources" name="Resources" parent="base.menu_main" sequence="2"/>
|
||||
|
||||
<record id="resource_calendar_form" model="ir.ui.view">
|
||||
|
||||
@@ -13,7 +13,7 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-07 04:37+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-08 04:45+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: sale
|
||||
|
||||
@@ -7,33 +7,34 @@
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Sale Orders">
|
||||
<field name="partner_id"/>
|
||||
<field name="partner_id" invisible="True"/>
|
||||
<field name="date_order"/>
|
||||
<field name="invoiced_rate"/>
|
||||
<field name="picked_rate"/>
|
||||
<field name="amount_untaxed"/>
|
||||
<field name="amount_tax"/>
|
||||
<field name="amount_total"/>
|
||||
<field name="amount_total" sum="Total Amount"/>
|
||||
<field name="state"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_sale_order_report_all" model="ir.actions.act_window">
|
||||
<field name="name">Sale Orders By Month </field>
|
||||
<field name="name">Sale Orders By Customer </field>
|
||||
<field name="res_model">sale.order</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,graph</field>
|
||||
<field name="context">{'report':True}</field>
|
||||
<field name="domain">[('date_order','>=',time.strftime('%Y-%m-01')),('state','<>','draft'),('state','<>','cancel')]</field>
|
||||
<field name="search_view_id" ref="sale.view_sales_order_filter"/>
|
||||
</record>
|
||||
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_claim01">
|
||||
<record model="ir.actions.act_window.view" id="action_sale_order_01">
|
||||
<field name="sequence" eval="1"/>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="view_id" ref="sale.view_sale_order_report_tree"/>
|
||||
<field name="act_window_id" ref="action_sale_order_report_all"/>
|
||||
</record>
|
||||
<record model="ir.actions.act_window.view" id="action_order_product02">
|
||||
<record model="ir.actions.act_window.view" id="action_sale_order_02">
|
||||
<field name="sequence" eval="1"/>
|
||||
<field name="view_mode">graph</field>
|
||||
<field name="view_id" ref="sale.view_sale_order_graph"/>
|
||||
@@ -51,10 +52,11 @@
|
||||
<field name="name"/>
|
||||
<field name="order_id" invisible="True"/>
|
||||
<field name="product_uom_qty" />
|
||||
<field name="product_uom"/>
|
||||
<field name="product_uos_qty"/>
|
||||
<field name="product_uos"/>
|
||||
<field name="product_id"/>
|
||||
<field name="price_unit" />
|
||||
<field name="discount"/>
|
||||
<field name="price_net"/>
|
||||
<field name="price_subtotal" sum="Total"/>
|
||||
<field name="state"/>
|
||||
</tree>
|
||||
@@ -77,7 +79,7 @@
|
||||
<field name="act_window_id" ref="action_order_report_tree_all"/>
|
||||
</record>
|
||||
<record model="ir.actions.act_window.view" id="action_order_product02">
|
||||
<field name="sequence" eval="1"/>
|
||||
<field name="sequence" eval="2"/>
|
||||
<field name="view_mode">graph</field>
|
||||
<field name="view_id" ref="sale.view_order_line_graph"/>
|
||||
<field name="act_window_id" ref="action_order_report_tree_all"/>
|
||||
@@ -86,7 +88,7 @@
|
||||
<menuitem id="base.next_id_64" name="Reporting" parent="base.menu_base_partner" sequence="8"/>
|
||||
<menuitem action="action_sale_order_report_all" id="menu_report_sale_order_all" parent="base.next_id_64" sequence="3"/>
|
||||
|
||||
<menuitem action="action_order_report_tree_all" id="menu_report_order_product_all1" parent="base.next_id_64" sequence="3"/>
|
||||
<menuitem action="action_order_report_tree_all" id="menu_report_order_product_all1" parent="base.next_id_64" sequence="4"/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -244,7 +244,7 @@
|
||||
<field name="date_order" select="1"/>
|
||||
</group>
|
||||
<group expand="context.get('report',False)" string="Group By..." colspan="4" col="8">
|
||||
<filter string="By Parnter" icon="terp-sale" domain="[]" context="{'group_by':'partner_id'}"/>
|
||||
<filter string="By Customer" icon="terp-sale" domain="[]" default="1" context="{'group_by':'partner_id'}"/>
|
||||
<filter string="By State" icon="terp-sale" domain="[]" context="{'group_by':'state'}"/>
|
||||
<filter string="By Order Date" icon="terp-sale" domain="[]" context="{'group_by':'date_order'}"/>
|
||||
</group>
|
||||
@@ -412,9 +412,9 @@
|
||||
<filter icon="terp-sale" domain="[('salesman_id','child_of',[uid])]" help="My Departments Sale Order Lines"/>
|
||||
</field>
|
||||
<group expand="context.get('report',False)" string="Group By..." colspan="4" col="8">
|
||||
<filter string="By Product" icon="terp-sale" domain="[]" context="{'group_by':'product_id'}"/>
|
||||
<filter string="By Product" icon="terp-sale" default="1" domain="[]" context="{'group_by':'product_id'}"/>
|
||||
<filter string="By Order" icon="terp-sale" domain="[]" context="{'group_by':'order_id'}"/>
|
||||
<filter string="By State" icon="terp-sale" domain="[]" context="{'group_by':'state'}"/>
|
||||
<filter string="By Scheduled" icon="terp-sale" domain="[]" context="{'group_by':'state'}"/>
|
||||
</group>
|
||||
|
||||
</group>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
"access_account_invoice_salesman","account_invoice salesman","account.model_account_invoice","group_sale_user",1,1,1,1
|
||||
"access_account_invoice_line_salesman","account_invoice.line salesman","account.model_account_invoice_line","group_sale_user",1,1,1,1
|
||||
"access_account_payment_term_salesman","account_payment_term salesman","account.model_account_payment_term","group_sale_user",1,0,0,0
|
||||
"access_account_analytic_account_salesman","account_analytic_account salesman","account.model_account_analytic_account","group_sale_user",1,1,1,1
|
||||
"access_account_analytic_account_salesman","account_analytic_account salesman","analytic.model_account_analytic_account","group_sale_user",1,1,1,1
|
||||
"access_stock_picking_salesman","stock_picking salesman","stock.model_stock_picking","group_sale_user",1,1,1,1
|
||||
"access_stock_move_salesman","stock_move salesman","stock.model_stock_move","group_sale_user",1,1,1,0
|
||||
"access_mrp_property_salesman","mrp.property salesman","mrp.model_mrp_property","group_sale_user",1,0,0,0
|
||||
|
||||
|
@@ -13,7 +13,7 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-07 04:37+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-08 04:45+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: sale_crm
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
<record id="process_node_contractanalytic0" model="process.node">
|
||||
<field name="menu_id" ref="account.account_analytic_def_account"/>
|
||||
<field name="model_id" ref="account.model_account_analytic_account"/>
|
||||
<field name="model_id" ref="analytic.model_account_analytic_account"/>
|
||||
<field eval=""""subflow"""" name="kind"/>
|
||||
<field eval=""""Analytic account"""" name="name"/>
|
||||
<field eval=""""Reflect the contract made with customer"""" name="note"/>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<menuitem icon="terp-stock" id="menu_stock_root" name="Warehouse"/>
|
||||
<menuitem icon="terp-stock" id="menu_stock_root" name="Warehouse" sequence="2"/>
|
||||
<menuitem id="menu_stock_warehouse_mgmt" name="Warehouse Management" parent="menu_stock_root" sequence="1"/>
|
||||
<menuitem id="menu_stock_product" name="Product" parent="menu_stock_root" sequence="3"/>
|
||||
<menuitem action="product.product_normal_action" id="menu_stock_products_menu" parent="menu_stock_product" sequence="1"/>
|
||||
@@ -669,7 +669,7 @@
|
||||
<filter string="By Partner" icon="terp-stock" domain="[]" context="{'group_by':'address_id'}"/>
|
||||
<filter string="By State" icon="terp-stock" domain="[]" context="{'group_by':'state'}"/>
|
||||
<filter string="By Date" icon="terp-stock" domain="[]" context="{'group_by':'date'}"/>
|
||||
</group>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
@@ -794,8 +794,8 @@
|
||||
<group expand="context.get('report',False)" string="Group By..." colspan="4" col="10">
|
||||
<filter string="By Partner" icon="terp-stock" domain="[]" context="{'group_by':'address_id'}"/>
|
||||
<filter string="By State" icon="terp-stock" domain="[]" context="{'group_by':'state'}"/>
|
||||
<filter string="By Order Date" icon="terp-stock" domain="[]" context="{'group_by':'date'}"/>
|
||||
</group>
|
||||
<filter string="By Order Date" icon="terp-stock" domain="[]" context="{'group_by':'date'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
@@ -953,7 +953,7 @@
|
||||
<filter string="By Partner" icon="terp-stock" domain="[]" context="{'group_by':'address_id'}"/>
|
||||
<filter string="By State" icon="terp-stock" domain="[]" context="{'group_by':'state'}"/>
|
||||
<filter string="By Date" icon="terp-stock" domain="[]" context="{'group_by':'date'}"/>
|
||||
</group>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
@@ -1113,7 +1113,7 @@
|
||||
<filter string="By Partner" icon="terp-stock" domain="[]" context="{'group_by':'address_id'}"/>
|
||||
<filter string="By State" icon="terp-stock" domain="[]" context="{'group_by':'state'}"/>
|
||||
<filter string="By Date" icon="terp-stock" domain="[]" context="{'group_by':'date'}"/>
|
||||
</group>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
@@ -1166,7 +1166,7 @@
|
||||
<filter string="By Partner" icon="terp-stock" domain="[]" context="{'group_by':'address_id'}"/>
|
||||
<filter string="By State" icon="terp-stock" domain="[]" context="{'group_by':'state'}"/>
|
||||
<filter string="By Date" icon="terp-stock" domain="[]" context="{'group_by':'date'}"/>
|
||||
</group>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
@@ -1285,7 +1285,7 @@
|
||||
<filter string="By State" icon="terp-stock" domain="[]" context="{'group_by':'state'}"/>
|
||||
<filter string="By Destion Location" icon="terp-stock" domain="[]" context="{'group_by':'location_dest_id'}"/>
|
||||
<filter string="By Date" icon="terp-stock" domain="[]" context="{'group_by':'date'}"/>
|
||||
</group>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
@@ -1409,7 +1409,7 @@
|
||||
<filter string="By Product" icon="terp-stock" domain="[]" context="{'group_by':'product_id'}"/>
|
||||
<filter string="By State" icon="terp-stock" domain="[]" context="{'group_by':'state'}"/>
|
||||
<filter string="By Date" icon="terp-stock" domain="[]" context="{'group_by':'date'}"/>
|
||||
</group>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<menuitem icon="STOCK_PREFERENCES" id="base.menu_tools" name="Tools"/>
|
||||
<menuitem icon="STOCK_PREFERENCES" id="base.menu_tools" name="Tools" sequence="15"/>
|
||||
<!-- <menuitem icon="STOCK_PREFERENCES" id="menu_tools" name="Tools"/>-->
|
||||
<menuitem id="next_id_45" name="Recurring Events" parent="base.menu_tools" sequence="2"/>
|
||||
<!-- <menuitem id="menu_subscription_config" name="Configuration" parent="next_id_45"/>-->
|
||||
|
||||
@@ -158,7 +158,7 @@ class survey_browse_response(report_rml):
|
||||
<para style="terp_tblheader_General_Centre">Response Create Date </para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_tblheader_General_Centre">Respose By </para>
|
||||
<para style="terp_tblheader_General_Centre">Response By </para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_tblheader_General_Centre">Status</para>
|
||||
@@ -243,17 +243,17 @@ class survey_browse_response(report_rml):
|
||||
ans_list = []
|
||||
for ans in answer[0].response_answer_ids:
|
||||
ans_list.append(to_xml(tools.ustr(ans.answer_id.answer)))
|
||||
|
||||
|
||||
answer_choice=[]
|
||||
_divide_columns_for_matrix = 20
|
||||
_display_ans_in_rows = 5
|
||||
_tbl_widths = 500
|
||||
for ans in que['answer_choice_ids']:
|
||||
answer_choice.append(to_xml(tools.ustr((ans.answer))))
|
||||
|
||||
|
||||
def divide_list(lst, n):
|
||||
return [lst[i::n] for i in range(n)]
|
||||
|
||||
|
||||
divide_list = divide_list(answer_choice,_display_ans_in_rows)
|
||||
for lst in divide_list:
|
||||
if que.type == 'multiple_choice_multiple_ans':
|
||||
|
||||
@@ -72,6 +72,21 @@ class survey_form(report_rml):
|
||||
<blockValign value="TOP"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
|
||||
</blockTableStyle>
|
||||
<blockTableStyle id="tbl_white">
|
||||
<blockAlignment value="LEFT"/>
|
||||
<blockValign value="TOP"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
|
||||
<lineStyle kind="LINEBEFORE" colorName="#777777" start="0,0" stop="-1,-1"/>
|
||||
<lineStyle kind="LINEAFTER" colorName="#777777" start="0,0" stop="-1,-1"/>
|
||||
</blockTableStyle>
|
||||
<blockTableStyle id="tbl_gainsboro">
|
||||
<blockAlignment value="LEFT"/>
|
||||
<blockValign value="TOP"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
|
||||
<lineStyle kind="LINEBEFORE" colorName="#777777" start="0,0" stop="-1,-1"/>
|
||||
<lineStyle kind="LINEAFTER" colorName="#777777" start="0,0" stop="-1,-1"/>
|
||||
<blockBackground colorName="gainsboro" start="0,0" stop="-1,-1"/>
|
||||
</blockTableStyle>
|
||||
<blockTableStyle id="ans_tbl_white">
|
||||
<blockAlignment value="LEFT"/>
|
||||
<blockValign value="TOP"/>
|
||||
@@ -106,20 +121,13 @@ class survey_form(report_rml):
|
||||
<blockAlignment value="LEFT"/>
|
||||
<blockValign value="TOP"/>
|
||||
</blockTableStyle>
|
||||
<blockTableStyle id="Table4">
|
||||
<blockTableStyle id="tbl">
|
||||
<blockAlignment value="LEFT"/>
|
||||
<blockValign value="TOP"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#000000" start="0,0" stop="-1,-1"/>
|
||||
<lineStyle kind="LINEBEFORE" colorName="#777777" start="0,0" stop="-1,-1"/>
|
||||
<lineStyle kind="LINEAFTER" colorName="#777777" start="0,0" stop="-1,-1"/>
|
||||
</blockTableStyle>
|
||||
<blockTableStyle id="Table5">
|
||||
<blockAlignment value="LEFT"/>
|
||||
<blockValign value="TOP"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
|
||||
<lineStyle kind="LINEBEFORE" colorName="#777777" start="0,0" stop="-1,-1"/>
|
||||
<lineStyle kind="LINEAFTER" colorName="#777777" start="0,0" stop="-1,-1"/>
|
||||
</blockTableStyle>
|
||||
<initialize>
|
||||
<paraStyle name="all" alignment="justify"/>
|
||||
</initialize>
|
||||
@@ -144,6 +152,12 @@ class survey_form(report_rml):
|
||||
<blockTable colWidths='"""+_tbl_widths+"""' style="title_tbl">
|
||||
<tr><td><para style="title">""" + to_xml(tools.ustr(survey.title)) + """</para><para style="P2"><font></font></para></td></tr>
|
||||
</blockTable>"""
|
||||
if survey.note:
|
||||
rml += """
|
||||
<para style="P2"></para>
|
||||
<blockTable colWidths='"""+_tbl_widths+"""' style="note_table">
|
||||
<tr><td><para style="descriptive_text">""" + to_xml(tools.ustr(survey.note)) + """</para><para style="P2"><font></font></para></td></tr>
|
||||
</blockTable>"""
|
||||
seq = 0
|
||||
for page in survey.page_ids:
|
||||
seq+=1
|
||||
@@ -273,7 +287,6 @@ class survey_form(report_rml):
|
||||
<rect x="-0.1cm" y="-0.45cm" width='""" + tools.ustr(cols_widhts[-1] - 0.5) +"cm" + """' height="0.5cm" fill="yes" stroke="yes" round="0.1cm"/>"""
|
||||
elif que.type in ['matrix_of_choices_only_one_ans','rating_scale']:
|
||||
value = """ <fill color="white"/>
|
||||
<!--rect x="0.25cm" y="-0.5cm" width="0.8 cm" height="0.5cm" fill="yes" stroke="yes" round="0.1cm"/-->
|
||||
<circle x="0.35cm" y="-0.18cm" radius="0.25 cm" fill="yes" stroke="yes"/>"""
|
||||
else:
|
||||
value = """ <fill color="white"/>
|
||||
@@ -336,18 +349,22 @@ class survey_form(report_rml):
|
||||
cols_widhts.append(tbl_width/float(len(que.column_heading_ids)))
|
||||
colWidths = "cm,".join(map(tools.ustr, cols_widhts))
|
||||
colWidths = colWidths+'cm'
|
||||
rml+="""<blockTable colWidths=" """ + colWidths + """ " style="Table4"><tr>"""
|
||||
rml+="""<blockTable colWidths=" """ + colWidths + """ " style="tbl"><tr>"""
|
||||
for col in que.column_heading_ids:
|
||||
rml+="""<td><para style="terp_tblheader_Details">""" + to_xml(tools.ustr(col.title)) + """</para></td>"""
|
||||
rml+="""</tr></blockTable>
|
||||
<blockTable colWidths=" """ + colWidths + """ " style="Table5">"""
|
||||
rml+="""</tr></blockTable>"""
|
||||
i=0
|
||||
for r in range(0,que.no_of_rows):
|
||||
rml+="""<tr>"""
|
||||
if i%2!=0:
|
||||
style='tbl_white'
|
||||
else:
|
||||
style='tbl_gainsboro'
|
||||
i+=1
|
||||
rml+="""<blockTable colWidths=" """ + colWidths + """ " style='"""+style+"""'><tr>"""
|
||||
for c in que.column_heading_ids:
|
||||
rml+="""
|
||||
<td><para style="terp_default_9"><font color="white"> </font></para></td>"""
|
||||
rml+="""</tr>"""
|
||||
rml+="""</blockTable>"""
|
||||
rml+="""</tr></blockTable>"""
|
||||
if datas.has_key('form') and not datas['form']['without_pagebreak']:
|
||||
rml+="""<pageBreak/>"""
|
||||
elif not datas.has_key('form'):
|
||||
|
||||
@@ -2137,6 +2137,7 @@
|
||||
<data noupdate="1">
|
||||
<record id="survey_0_Community" model="survey">
|
||||
<field name="title">Community Survey</field>
|
||||
<field name="note">Please take a few minutes to complete this survey on the quality of service we provide. We welcome your feedback and appreciate your honesty. With your help, we hope to strengthen the bond between our clients.</field>
|
||||
<field eval="1" name="response_user"/>
|
||||
<field name="state">draft</field>
|
||||
<field name="responsible_id" ref="base.user_root"/>
|
||||
@@ -2146,7 +2147,6 @@
|
||||
</data>
|
||||
<data>
|
||||
<record id="survey_page_0_Community" model="survey.page">
|
||||
<field name="note">Please take a few minutes to complete this survey on the quality of service we provide. We welcome your feedback and appreciate your honesty. With your help, we hope to strengthen the bond between our clients.</field>
|
||||
<field name="title">Service Characteristics</field>
|
||||
<field name="survey_id" ref="survey_0_Community"/>
|
||||
<field eval="1" name="sequence"/>
|
||||
@@ -2805,13 +2805,4 @@
|
||||
<field eval="8" name="sequence"/>
|
||||
</record>
|
||||
</data>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</openerp>
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<menuitem name="Knowledge Management" icon="terp-stock" id="base.menu_document"/>
|
||||
<menuitem name="Knowledge Management" icon="terp-stock" id="base.menu_document" sequence="4"/>
|
||||
<menuitem name="Configuration" id="base.menu_document_configuration" parent="base.menu_document" sequence="50"/>
|
||||
<menuitem name="Wiki" id="menu_wiki_configuration" parent="base.menu_document_configuration" sequence="2"/>
|
||||
<menuitem id="base.menu_document2" name="Collaborative Content" parent="base.menu_document"/>
|
||||
|
||||
Reference in New Issue
Block a user