bzr revid: nch@tinyerp.com-20100209044813-qtz4f813w3hl4uwg
This commit is contained in:
nch@tinyerp.com
2010-02-09 10:18:13 +05:30
56 changed files with 924 additions and 821 deletions
+1 -1
View File
@@ -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"/>
+11 -1
View File
@@ -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):
+2 -3
View File
@@ -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 -1
View File
@@ -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>
+1 -1
View File
@@ -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
View File
@@ -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:
+10 -9
View File
@@ -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>
+38 -25
View File
@@ -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>
+23 -16
View File
@@ -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>
+18 -14
View File
@@ -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>
+51 -41
View File
@@ -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','&lt;', time.strftime('%%Y-%%m-%%d')), ('date','&gt;=',(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','&lt;', time.strftime('%%Y-%%m-%%d')), ('date','&gt;=',(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>
+15 -16
View File
@@ -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"/>
+47 -36
View File
@@ -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','&lt;', time.strftime('%%Y-%%m-%%d')), ('date','&gt;=',(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','&lt;', time.strftime('%%Y-%%m-%%d')), ('date','&gt;=',(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>
+58 -47
View File
@@ -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>
+2 -2
View File
@@ -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"/>
+1 -1
View File
@@ -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 -1
View File
@@ -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 -1
View File
@@ -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"
+27 -27
View File
@@ -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 -1
View File
@@ -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 -1
View File
@@ -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"/>
+1
View File
@@ -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>
+36 -36
View File
@@ -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 -3
View File
@@ -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>
+1 -1
View File
@@ -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"
+1 -1
View File
@@ -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
View File
File diff suppressed because it is too large Load Diff
+8 -7
View File
@@ -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 -1
View File
@@ -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"/>
+92 -124
View File
@@ -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:
+4 -3
View File
@@ -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']])
+2 -2
View File
@@ -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 -7
View File
@@ -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"
+40 -36
View File
@@ -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 -1
View File
@@ -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 -1
View File
@@ -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">
+1 -1
View File
@@ -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
+11 -9
View File
@@ -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','&gt;=',time.strftime('%Y-%m-01')),('state','&lt;&gt;','draft'),('state','&lt;&gt;','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>
+3 -3
View File
@@ -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>
+1 -1
View File
@@ -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
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
8 access_account_invoice_salesman account_invoice salesman account.model_account_invoice group_sale_user 1 1 1 1
9 access_account_invoice_line_salesman account_invoice.line salesman account.model_account_invoice_line group_sale_user 1 1 1 1
10 access_account_payment_term_salesman account_payment_term salesman account.model_account_payment_term group_sale_user 1 0 0 0
11 access_account_analytic_account_salesman account_analytic_account salesman account.model_account_analytic_account analytic.model_account_analytic_account group_sale_user 1 1 1 1
12 access_stock_picking_salesman stock_picking salesman stock.model_stock_picking group_sale_user 1 1 1 1
13 access_stock_move_salesman stock_move salesman stock.model_stock_move group_sale_user 1 1 1 0
14 access_mrp_property_salesman mrp.property salesman mrp.model_mrp_property group_sale_user 1 0 0 0
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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="&quot;&quot;&quot;subflow&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Analytic account&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Reflect the contract made with customer&quot;&quot;&quot;" name="note"/>
+9 -9
View File
@@ -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 -1
View File
@@ -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':
+32 -15
View File
@@ -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'):
+1 -10
View File
@@ -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 -1
View File
@@ -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"/>