[MERGE]: Merged with lp:openobject-addons
bzr revid: atp@tinyerp.com-20120927041011-e90b4710saidnlcf
This commit is contained in:
commit
1c1978fbb7
|
@ -159,6 +159,5 @@ for a particular financial year and for preparation of vouchers there is a modul
|
|||
],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '0080331923549',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -43,6 +43,5 @@ It assigns manager and user access rights to the Administrator and only user rig
|
|||
'installable': True,
|
||||
'auto_install': False,
|
||||
'application': True,
|
||||
'certificate': '00395091383933390541',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -26,9 +26,11 @@
|
|||
<field name="res_id" ref="mail.group_all_employees"/>
|
||||
<field name="type">notification</field>
|
||||
<field name="subject">Accounting and Finance application installed!</field>
|
||||
<field name="body">With OpenERP's accounting, you get instant access to your financial data, and can setup analytic accounting, forecast taxes, control budgets, easily create and send invoices, record bank statements, etc.
|
||||
<field name="body"><![CDATA[
|
||||
With OpenERP's accounting, you get instant access to your financial data, and can setup analytic accounting, forecast taxes, control budgets, easily create and send invoices, record bank statements, etc.
|
||||
|
||||
The accounting features are fully integrated with other OpenERP applications to automate all your processes: creation of customer invoices, control of supplier invoices, point-of-sale integration, automated follow-ups, etc.</field>
|
||||
<p>The accounting features are fully integrated with other OpenERP applications to automate all your processes: creation of customer invoices, control of supplier invoices, point-of-sale integration, automated follow-ups, etc.</p>
|
||||
]]></field>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -47,7 +47,6 @@ Adds menu to show relevant information to each manager.You can also view the rep
|
|||
'demo': [],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '0042927202589',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -47,7 +47,6 @@ Allows to automatically select analytic accounts based on criterions:
|
|||
'demo': [],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '0074229833581',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -79,7 +79,6 @@ The analytic plan validates the minimum and maximum percentage at the time of cr
|
|||
'test': ['test/acount_analytic_plans_report.yml'],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '0036417675373',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -262,6 +262,7 @@ account_analytic_plan_instance()
|
|||
class account_analytic_plan_instance_line(osv.osv):
|
||||
_name = "account.analytic.plan.instance.line"
|
||||
_description = "Analytic Instance Line"
|
||||
_rec_name = "analytic_account_id"
|
||||
_columns = {
|
||||
'plan_id': fields.many2one('account.analytic.plan.instance', 'Plan Id'),
|
||||
'analytic_account_id': fields.many2one('account.analytic.account', 'Analytic Account', required=True, domain=[('type','<>','view')]),
|
||||
|
|
|
@ -46,7 +46,6 @@ account.""",
|
|||
'data': ['product_view.xml',],
|
||||
'auto_install': False,
|
||||
'installable': True,
|
||||
'certificate':'00557423080410733581',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -69,6 +69,5 @@ Three reports are available:
|
|||
],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '0043819694157',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -38,9 +38,6 @@ If set to true it allows user to cancel entries & invoices.
|
|||
'demo': [],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '001101250473177981989',
|
||||
|
||||
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -36,6 +36,5 @@ Deactivates minimal chart of accounts.
|
|||
'data': [],
|
||||
'demo': [],
|
||||
'installable': True,
|
||||
'certificate': '0073332443901',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -64,7 +64,6 @@ Note that if you want to check the follow-up level for a given partner/account e
|
|||
],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '0072481076453',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -65,6 +65,5 @@ have a new option to import payment orders as bank statement lines.
|
|||
],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '0061703998541',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -49,7 +49,6 @@ You can customize the following attributes of the sequence:
|
|||
'demo': [],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '00475376442024623469',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -72,7 +72,6 @@ This module manages:
|
|||
'test/case4_cad_chf.yml',
|
||||
'test/case_eur_usd.yml',
|
||||
],
|
||||
'certificate': '0037580727101',
|
||||
'auto_install': False,
|
||||
'application': True,
|
||||
'installable': True,
|
||||
|
|
|
@ -7,11 +7,11 @@
|
|||
<field name="res_id" ref="mail.group_all_employees"/>
|
||||
<field name="type">notification</field>
|
||||
<field name="subject">eInvoicing & Payments application installed!</field>
|
||||
<field name="body">OpenERP's electronic invoicing accelerates the creation of invoices and collection of customer payments. Invoices are created in a few clicks and your customers receive them by email. They can pay online and/or import them in their own system.
|
||||
<field name="body"><![CDATA[
|
||||
OpenERP's electronic invoicing accelerates the creation of invoices and collection of customer payments. Invoices are created in a few clicks and your customers receive them by email. They can pay online and/or import them in their own system.
|
||||
|
||||
You can track customer payments easily and automate follow-ups. You get an overview of the discussion with your customers on each invoice for easier traceability.
|
||||
|
||||
For advanced accounting features, you should install the "Accounting and Finance" module.</field>
|
||||
<p>You can track customer payments easily and automate follow-ups. You get an overview of the discussion with your customers on each invoice for easier traceability. For advanced accounting features, you should install the "Accounting and Finance" module.</p>
|
||||
]]></field>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -71,6 +71,7 @@
|
|||
</group>
|
||||
<notebook>
|
||||
<page string="Payment Information">
|
||||
<label for="line_dr_ids" attrs="{'invisible': [('type', '=', 'receipt')]}"/>
|
||||
<field name="line_dr_ids" attrs="{'invisible': [('type', '=', 'receipt')]}" context="{'journal_id':journal_id, 'type':type, 'partner_id':partner_id}" colspan="4" nolabel="1" height="140" on_change="onchange_line_ids(line_dr_ids, line_cr_ids, amount, currency_id, type, context)">
|
||||
<tree string="Open Supplier Journal Entries" editable="bottom" colors="gray:amount==0">
|
||||
<field name="move_line_id" context="{'journal_id':parent.journal_id, 'partner_id':parent.partner_id}"
|
||||
|
@ -84,6 +85,7 @@
|
|||
<field name="amount" sum="Total Allocation"/>
|
||||
</tree>
|
||||
</field>
|
||||
<label for="line_cr_ids" attrs="{'invisible': [('type', '=', 'payment')]}"/>
|
||||
<field name="line_cr_ids" attrs="{'invisible': [('type', '=', 'payment')]}" context="{'journal_id':journal_id, 'partner_id':partner_id}" on_change="onchange_line_ids(line_dr_ids, line_cr_ids, amount, currency_id, type, context)">
|
||||
<tree string="Open Customer Journal Entries" editable="bottom" colors="gray:amount==0">
|
||||
<field name="move_line_id" context="{'journal_id':parent.journal_id, 'partner_id':parent.partner_id}"
|
||||
|
@ -155,6 +157,7 @@
|
|||
</group>
|
||||
<notebook>
|
||||
<page string="Payment Information">
|
||||
<label for="line_dr_ids"/>
|
||||
<field name="line_dr_ids" context="{'journal_id':journal_id, 'type':type, 'partner_id':partner_id}">
|
||||
<tree string="Supplier Invoices and Outstanding transactions" editable="bottom" colors="gray:amount==0">
|
||||
<field name="move_line_id" context="{'journal_id':parent.journal_id, 'partner_id':parent.partner_id}"
|
||||
|
@ -170,6 +173,7 @@
|
|||
<field name="amount" sum="Total Allocation" on_change="onchange_amount(amount, amount_unreconciled, context)"/>
|
||||
</tree>
|
||||
</field>
|
||||
<label for="line_cr_ids" attrs="{'invisible': [('pre_line','=',False)]}"/>
|
||||
<field name="line_cr_ids" attrs="{'invisible': [('pre_line','=',False)]}" context="{'journal_id':journal_id, 'partner_id':partner_id}">
|
||||
<tree string="Credits" editable="bottom" colors="gray:amount==0">
|
||||
<field name="move_line_id" context="{'journal_id':parent.journal_id, 'partner_id':parent.partner_id}"
|
||||
|
@ -328,6 +332,7 @@
|
|||
|
||||
<notebook>
|
||||
<page string="Payment Information" groups="base.group_user">
|
||||
<label for="line_cr_ids"/>
|
||||
<field name="line_cr_ids" context="{'journal_id':journal_id, 'type':type, 'partner_id':partner_id}" on_change="onchange_line_ids(line_dr_ids, line_cr_ids, amount, currency_id, type, context)">
|
||||
<tree string="Invoices and outstanding transactions" editable="bottom" colors="gray:amount==0">
|
||||
<field name="move_line_id" context="{'journal_id':parent.journal_id, 'partner_id':parent.partner_id}"
|
||||
|
@ -344,6 +349,7 @@
|
|||
<field name="amount" sum="Total Allocation" on_change="onchange_amount(amount, amount_unreconciled, context)" string="Allocation"/>
|
||||
</tree>
|
||||
</field>
|
||||
<label for="line_dr_ids" attrs="{'invisible': [('pre_line','=',False)]}"/>
|
||||
<field name="line_dr_ids" attrs="{'invisible': [('pre_line','=',False)]}" context="{'journal_id':journal_id, 'partner_id':partner_id}" on_change="onchange_line_ids(line_dr_ids, line_cr_ids, amount, currency_id, type, context)">
|
||||
<tree string="Credits" editable="bottom" colors="gray:amount==0">
|
||||
<field name="move_line_id" context="{'journal_id':parent.journal_id, 'partner_id':parent.partner_id}"
|
||||
|
|
|
@ -43,6 +43,5 @@ that have no counterpart in the general financial accounts.
|
|||
'demo': [],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate' : '00462253285027988541',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -45,6 +45,5 @@ compatible with older configurations.
|
|||
'demo': [],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '0082277138269',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -48,7 +48,6 @@ anonymization process to recover your previous data.
|
|||
],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '00719010980872226045',
|
||||
'images': ['images/anonymization1.jpeg','images/anonymization2.jpeg','images/anonymization3.jpeg'],
|
||||
}
|
||||
|
||||
|
|
|
@ -37,7 +37,6 @@ membership products (schemes).
|
|||
'demo': [],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '0078696047261',
|
||||
'images': ['images/association1.jpeg'],
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -42,7 +42,6 @@ and can check logs.
|
|||
'demo': ['audittrail_demo.xml'],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '0062572348749',
|
||||
'images': ['images/audittrail1.jpeg','images/audittrail2.jpeg','images/audittrail3.jpeg'],
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -107,7 +107,6 @@ authentication if installed at the same time.
|
|||
],
|
||||
'auto_install': False,
|
||||
'installable': True,
|
||||
'certificate' : '001141446349334700221',
|
||||
'external_dependencies' : {
|
||||
'python' : ['ldap'],
|
||||
}
|
||||
|
|
|
@ -44,7 +44,6 @@ trigger an automatic reminder email.
|
|||
'demo': [],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate' : '001017908446466333429',
|
||||
'images': ['images/base_action_rule1.jpeg','images/base_action_rule2.jpeg','images/base_action_rule3.jpeg'],
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -21,6 +21,5 @@
|
|||
|
||||
import base_calendar
|
||||
import crm_meeting
|
||||
import wizard
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
'name': 'Calendar',
|
||||
'version': '1.0',
|
||||
'depends': ['base', 'base_status', 'mail', 'base_action_rule'],
|
||||
'summary': 'Personnal & Shared Agenda',
|
||||
'summary': 'Personal & Shared Calendar',
|
||||
'description': """
|
||||
This is a full-featured calendar system.
|
||||
========================================
|
||||
|
@ -32,7 +32,6 @@ It supports:
|
|||
------------
|
||||
- Calendar of events
|
||||
- Recurring events
|
||||
- Invitations to people
|
||||
|
||||
If you need to manage your meetings, you should install the CRM module.
|
||||
""",
|
||||
|
@ -43,7 +42,6 @@ If you need to manage your meetings, you should install the CRM module.
|
|||
'data': [
|
||||
'security/calendar_security.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'wizard/base_calendar_invite_attendee_view.xml',
|
||||
'base_calendar_view.xml',
|
||||
'crm_meeting_view.xml',
|
||||
'base_calendar_data.xml',
|
||||
|
@ -53,7 +51,6 @@ If you need to manage your meetings, you should install the CRM module.
|
|||
'installable': True,
|
||||
'application': True,
|
||||
'auto_install': False,
|
||||
'certificate': '00694071962960352821',
|
||||
'images': ['images/base_calendar1.jpeg','images/base_calendar2.jpeg','images/base_calendar3.jpeg','images/base_calendar4.jpeg',],
|
||||
}
|
||||
|
||||
|
|
|
@ -1060,6 +1060,37 @@ rule or repeating pattern of time to exclude from the recurring rule."),
|
|||
'recurrency': fields.boolean('Recurrent', help="Recurrent Meeting"),
|
||||
}
|
||||
|
||||
def create_attendees(self, cr, uid, ids, context):
|
||||
att_obj = self.pool.get('calendar.attendee')
|
||||
user_obj = self.pool.get('res.users')
|
||||
current_user = user_obj.browse(cr, uid, uid, context=context)
|
||||
for event in self.browse(cr, uid, ids, context):
|
||||
attendees = {}
|
||||
for att in event.attendee_ids:
|
||||
attendees[att.partner_id.id] = True
|
||||
new_attendees = []
|
||||
mail_to = []
|
||||
for partner in event.partner_ids:
|
||||
if partner.id in attendees:
|
||||
continue
|
||||
att_id = self.pool.get('calendar.attendee').create(cr, uid, {
|
||||
'partner_id': partner.id,
|
||||
'user_id': partner.user_ids and partner.user_ids[0].id or False,
|
||||
'ref': self._name+','+str(event.id),
|
||||
'email': partner.email
|
||||
}, context=context)
|
||||
if partner.email:
|
||||
mail_to.append(partner.email)
|
||||
self.write(cr, uid, [event.id], {
|
||||
'attendee_ids': [(4, att_id)]
|
||||
}, context=context)
|
||||
new_attendees.append(att_id)
|
||||
|
||||
if mail_to and current_user.email:
|
||||
att_obj._send_mail(cr, uid, new_attendees, mail_to,
|
||||
email_from = current_user.email)
|
||||
return True
|
||||
|
||||
def default_organizer(self, cr, uid, context=None):
|
||||
user_pool = self.pool.get('res.users')
|
||||
user = user_pool.browse(cr, uid, uid, context=context)
|
||||
|
@ -1366,6 +1397,8 @@ rule or repeating pattern of time to exclude from the recurring rule."),
|
|||
vals['vtimezone'] = vals['vtimezone'][40:]
|
||||
|
||||
res = super(calendar_event, self).write(cr, uid, ids, vals, context=context)
|
||||
if vals.get('partner_ids', False):
|
||||
self.create_attendees(cr, uid, ids, context)
|
||||
|
||||
if ('alarm_id' in vals or 'base_calendar_alarm_id' in vals)\
|
||||
or ('date' in vals or 'duration' in vals or 'date_deadline' in vals):
|
||||
|
@ -1489,17 +1522,10 @@ rule or repeating pattern of time to exclude from the recurring rule."),
|
|||
if vals.get('vtimezone', '') and vals.get('vtimezone', '').startswith('/freeassociation.sourceforge.net/tzfile/'):
|
||||
vals['vtimezone'] = vals['vtimezone'][40:]
|
||||
|
||||
#updated_vals = self.onchange_dates(cr, uid, [],
|
||||
# vals.get('date', False),
|
||||
# vals.get('duration', False),
|
||||
# vals.get('date_deadline', False),
|
||||
# vals.get('allday', False),
|
||||
# context=context)
|
||||
#vals.update(updated_vals.get('value', {}))
|
||||
|
||||
res = super(calendar_event, self).create(cr, uid, vals, context)
|
||||
alarm_obj = self.pool.get('res.alarm')
|
||||
alarm_obj.do_alarm_create(cr, uid, [res], self._name, 'date', context=context)
|
||||
self.create_attendees(cr, uid, [res], context)
|
||||
return res
|
||||
|
||||
def do_tentative(self, cr, uid, ids, context=None, *args):
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
<header>
|
||||
<button name="do_tentative" states="needs-action,declined,accepted" string="Uncertain" type="object" class="oe_highlight"/>
|
||||
<button name="do_accept" string="Accept" states="needs-action,tentative,declined" type="object" class="oe_highlight"/>
|
||||
<button name="%(base_calendar.action_view_calendar_invite_attendee_wizard)d" string="Delegate" type="action" states="needs-action,tentative,declined,accepted" context="{'model' : 'calendar.attendee', 'attendee_field' : 'child_ids'}"/>
|
||||
<button name="do_decline" string="Decline" states="needs-action,tentative,accepted" type="object" class="oe_highlight"/>
|
||||
<field name="state" widget="statusbar"
|
||||
statusbar_visible="tentative,needs-action,accepted" statusbar_colors='{"proforma":"blue"}'/>
|
||||
|
@ -226,10 +225,6 @@
|
|||
<field name="description"/>
|
||||
</page>
|
||||
<page string="Invitation Detail">
|
||||
<button string="Invite People"
|
||||
name="%(base_calendar.action_view_calendar_invite_attendee_wizard)d"
|
||||
icon="terp-partner" type="action"
|
||||
context="{'model' : 'calendar.event', 'attendee_field':'attendee_ids'}" colspan="2"/>
|
||||
<field name="attendee_ids" colspan="4"
|
||||
nolabel="1" widget="one2many" mode="tree">
|
||||
<tree string="Invitation details" editable="top">
|
||||
|
@ -248,12 +243,6 @@
|
|||
<button name="do_decline" string="Decline"
|
||||
states="needs-action,tentative,accepted"
|
||||
type="object" icon="gtk-cancel"/>
|
||||
<button
|
||||
name="%(base_calendar.action_view_calendar_invite_attendee_wizard)d"
|
||||
string="Delegate" type="action"
|
||||
icon="gtk-sort-descending"
|
||||
states="needs-action,tentative,declined,accepted"
|
||||
context="{'model' : 'calendar.attendee', 'attendee_field' : 'child_ids'}"/>
|
||||
</tree>
|
||||
<form string="Invitation details" version="7.0">
|
||||
<notebook colspan="4">
|
||||
|
@ -281,13 +270,6 @@
|
|||
states="needs-action,tentative,accepted"
|
||||
type="object"
|
||||
icon="gtk-cancel"/>
|
||||
<button
|
||||
name="%(base_calendar.action_view_calendar_invite_attendee_wizard)d"
|
||||
string="Delegate"
|
||||
type="action"
|
||||
icon="gtk-sort-descending"
|
||||
states="needs-action,tentative,declined,accepted"
|
||||
context="{'model' : 'calendar.attendee', 'attendee_field' : 'child_ids'}"/>
|
||||
</group>
|
||||
</page>
|
||||
</notebook>
|
||||
|
|
|
@ -71,6 +71,34 @@ class crm_meeting(base_state, osv.Model):
|
|||
default['attendee_ids'] = False
|
||||
return super(crm_meeting, self).copy(cr, uid, id, default, context)
|
||||
|
||||
def onchange_partner_ids(self, cr, uid, ids, value, context=None):
|
||||
""" The basic purpose of this method is to check that destination partners
|
||||
effectively have email addresses. Otherwise a warning is thrown.
|
||||
:param value: value format: [[6, 0, [3, 4]]]
|
||||
"""
|
||||
res = {'value': {}}
|
||||
if not value or not value[0] or not value[0][0] == 6:
|
||||
return
|
||||
res.update(self.check_partners_email(cr, uid, value[0][2], context=context))
|
||||
return res
|
||||
|
||||
def check_partners_email(self, cr, uid, partner_ids, context=None):
|
||||
""" Verify that selected partner_ids have an email_address defined.
|
||||
Otherwise throw a warning. """
|
||||
partner_wo_email_lst = []
|
||||
for partner in self.pool.get('res.partner').browse(cr, uid, partner_ids, context=context):
|
||||
if not partner.email:
|
||||
partner_wo_email_lst.append(partner)
|
||||
if not partner_wo_email_lst:
|
||||
return {}
|
||||
warning_msg = _('The following contacts have no email address :')
|
||||
for partner in partner_wo_email_lst:
|
||||
warning_msg += '\n- %s' % (partner.name)
|
||||
return {'warning': {
|
||||
'title': _('Email addresses not found'),
|
||||
'message': warning_msg,
|
||||
}
|
||||
}
|
||||
# ----------------------------------------
|
||||
# OpenChatter
|
||||
# ----------------------------------------
|
||||
|
@ -80,7 +108,7 @@ class crm_meeting(base_state, osv.Model):
|
|||
return [('date','<=',time.strftime('%Y-%M-%D 23:59:59')), ('date_deadline','>=', time.strftime('%Y-%M-%D 00:00:00')), ('user_id','=',uid)]
|
||||
|
||||
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
|
||||
return 'Meeting'
|
||||
return _('Meeting')
|
||||
|
||||
def case_open_send_note(self, cr, uid, ids, context=None):
|
||||
return self.message_post(cr, uid, ids, body=_("Meeting <b>confirmed</b>."), context=context)
|
||||
|
|
|
@ -80,7 +80,9 @@
|
|||
</h1>
|
||||
<label for="partner_ids" class="oe_edit_only"/>
|
||||
<h2>
|
||||
<field name="partner_ids" widget="many2many_tags"/>
|
||||
<field name="partner_ids" widget="many2many_tags"
|
||||
context="{'force_email':True}"
|
||||
on_change="onchange_partner_ids(partner_ids)"/>
|
||||
</h2>
|
||||
</div>
|
||||
<notebook>
|
||||
|
@ -88,11 +90,12 @@
|
|||
<group>
|
||||
<group>
|
||||
<field name="date" string="Starting at"/>
|
||||
<label for="duration" attrs="{'invisible': [('allday','=',True)]}"/>
|
||||
<div attrs="{'invisible': [('allday','=',True)]}">
|
||||
<label for="duration"/>
|
||||
<div>
|
||||
<field name="duration" widget="float_time"
|
||||
on_change="onchange_dates(date,duration,False,allday)"
|
||||
class="oe_inline"/> hours
|
||||
class="oe_inline" attrs="{'invisible': [('allday','=',True)]}"/>
|
||||
<label string="hours" attrs="{'invisible': [('allday','=',True)]}"/>
|
||||
(<field name="allday" on_change="onchange_dates(date,False,False,allday)" class="oe_inline"/>
|
||||
<label for="allday" string="All Day?"/>)
|
||||
</div>
|
||||
|
@ -165,18 +168,16 @@
|
|||
</group>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Invitation Detail">
|
||||
<button string="Invite People"
|
||||
name="%(base_calendar.action_view_calendar_invite_attendee_wizard)d"
|
||||
type="action"
|
||||
attrs="{'readonly': [('state', '=', 'done')]}"
|
||||
context="{'model' : 'crm.meeting', 'attendee_field':'attendee_ids'}" colspan="2"/>
|
||||
<!--
|
||||
Temporarily removing invitation feature as the implementation
|
||||
was not clean. Invitation should be trigerred automatically
|
||||
based on partner_ids.
|
||||
-->
|
||||
<page string="Invitations">
|
||||
<field name="attendee_ids" widget="one2many" mode="tree">
|
||||
<tree string="Invitation details" editable="top">
|
||||
<field name="sent_by_uid" string="From"/>
|
||||
<field name="user_id" string="To"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="email" string="Mail To"/>
|
||||
<field name="role" />
|
||||
<field name="state" />
|
||||
<button name="do_tentative"
|
||||
states="needs-action,declined,accepted"
|
||||
|
@ -188,11 +189,6 @@
|
|||
<button name="do_decline" string="Decline"
|
||||
states="needs-action,tentative,accepted"
|
||||
type="object" />
|
||||
<button
|
||||
name="%(base_calendar.action_view_calendar_invite_attendee_wizard)d"
|
||||
string="Delegate" type="action"
|
||||
states="needs-action,tentative,declined,accepted"
|
||||
context="{'model' : 'calendar.attendee', 'attendee_field' : 'child_ids'}" />
|
||||
</tree>
|
||||
<form string="Invitation details" version="7.0">
|
||||
<header>
|
||||
|
@ -205,10 +201,6 @@
|
|||
<button name="do_decline" type="object"
|
||||
states="needs-action,tentative,accepted"
|
||||
string="Decline" />
|
||||
<button name="%(base_calendar.action_view_calendar_invite_attendee_wizard)d" type="action"
|
||||
states="needs-action,tentative,declined,accepted"
|
||||
string="Delegate"
|
||||
context="{'model' : 'calendar.attendee', 'attendee_field' : 'child_ids'}" />
|
||||
<field name="state" widget="statusbar" statusbar_visible="draft,open,done"/>
|
||||
</header>
|
||||
<group>
|
||||
|
@ -219,6 +211,7 @@
|
|||
<field name="role" />
|
||||
</group>
|
||||
<group>
|
||||
<field name="partner_id"/>
|
||||
<field name="user_id"/>
|
||||
</group>
|
||||
</group>
|
||||
|
@ -307,7 +300,7 @@
|
|||
<p class="oe_view_nocontent_create">
|
||||
Click to schedule a new meeting.
|
||||
</p><p>
|
||||
The agenda is shared between employees and fully integrated with
|
||||
The calendar is shared between employees and fully integrated with
|
||||
other applications such as the employee holidays or the business
|
||||
opportunities.
|
||||
</p>
|
||||
|
@ -339,10 +332,10 @@
|
|||
</record>
|
||||
|
||||
<menuitem id="menu_crm_meeting" parent="base.menu_sales" sequence="8"
|
||||
name="Agenda" action="action_crm_meeting"/>
|
||||
name="Calendar" action="action_crm_meeting"/>
|
||||
|
||||
<menuitem name="Agenda"
|
||||
id="mail_menu_agenda" parent="mail.mail_my_stuff"
|
||||
<menuitem name="Calendar"
|
||||
id="mail_menu_calendar" parent="mail.mail_my_stuff"
|
||||
sequence="10" action="action_crm_meeting"/>
|
||||
|
||||
</data>
|
||||
|
|
|
@ -54,24 +54,3 @@
|
|||
-
|
||||
!python {model: calendar.event}: |
|
||||
self.write(cr, uid, [ref("calendar_event_alldaytestevent0")], {'alarm_id': ref("res_alarm_daybeforeeventstarts0")})
|
||||
-
|
||||
In order to assign attendee I will invite Demo user
|
||||
-
|
||||
!record {model: base_calendar.invite.attendee, id: base_calendar_invite_attendee_0}:
|
||||
type: internal
|
||||
send_mail: False
|
||||
partner_id: base.res_partner_9 # Put bcz of problem in read
|
||||
user_ids:
|
||||
- base.user_demo
|
||||
-
|
||||
Then I click on Invite Button
|
||||
-
|
||||
!python {model: base_calendar.invite.attendee}: |
|
||||
self.do_invite(cr, uid, [ref("base_calendar_invite_attendee_0")], {'active_id': ref("calendar_event_alldaytestevent0"), 'model' : 'calendar.event', 'attendee_field':'attendee_ids'})
|
||||
-
|
||||
Now I will Accept this invitation
|
||||
-
|
||||
!python {model: calendar.attendee}: |
|
||||
ids = self.search(cr, uid, [('ref', '=', 'calendar.event' + ',' + str(ref("calendar_event_alldaytestevent0")))])
|
||||
if ids:
|
||||
self.do_accept(cr, uid, ids, context=context)
|
||||
|
|
|
@ -1,25 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
import base_calendar_invite_attendee
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
@ -1,170 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from .. import base_calendar
|
||||
from osv import fields, osv
|
||||
from tools.translate import _
|
||||
import tools
|
||||
|
||||
|
||||
class base_calendar_invite_attendee(osv.osv_memory):
|
||||
"""
|
||||
Invite attendee.
|
||||
"""
|
||||
|
||||
_name = "base_calendar.invite.attendee"
|
||||
_description = "Invite Attendees"
|
||||
|
||||
_columns = {
|
||||
'type': fields.selection([('internal', 'Internal User'), \
|
||||
('external', 'External Email'), \
|
||||
('partner', 'Partner Contacts')], 'Type', required=True, help="Select whom you want to Invite"),
|
||||
'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, help="Provide external email address who will receive this invitation."),
|
||||
'contact_ids': fields.many2many('res.partner', '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')
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'type': 'internal',
|
||||
'send_mail': True
|
||||
}
|
||||
|
||||
def do_invite(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
Invites attendee for meeting..
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of base calendar invite attendee’s IDs.
|
||||
@param context: A standard dictionary for contextual values
|
||||
@return: Dictionary of {}.
|
||||
"""
|
||||
|
||||
if context is None:
|
||||
context = {}
|
||||
|
||||
model = False
|
||||
context_id = context and context.get('active_id', False) or False
|
||||
if not context or not context.get('model'):
|
||||
return {'type': 'ir.actions.act_window_close'}
|
||||
else:
|
||||
model = context.get('model')
|
||||
|
||||
model_field = context.get('attendee_field', False)
|
||||
obj = self.pool.get(model)
|
||||
res_obj = obj.browse(cr, uid, context_id, context=context)
|
||||
att_obj = self.pool.get('calendar.attendee')
|
||||
user_obj = self.pool.get('res.users')
|
||||
current_user = user_obj.browse(cr, uid, uid, context=context)
|
||||
|
||||
for datas in self.read(cr, uid, ids, context=context):
|
||||
type = datas.get('type')
|
||||
vals = []
|
||||
mail_to = []
|
||||
attendees = []
|
||||
ref = {}
|
||||
|
||||
if not model == 'calendar.attendee':
|
||||
if context_id:
|
||||
ref = {'ref': '%s,%s' % (model, base_calendar.base_calendar_id2real_id(context_id))}
|
||||
else:
|
||||
return {'type': 'ir.actions.act_window_close'}
|
||||
if type == 'internal':
|
||||
|
||||
if not datas.get('user_ids'):
|
||||
raise osv.except_osv(_('Error!'), ("Please select any user."))
|
||||
for user_id in datas.get('user_ids'):
|
||||
user = user_obj.browse(cr, uid, user_id)
|
||||
res = {
|
||||
'user_id': user_id,
|
||||
'email': user.email
|
||||
}
|
||||
res.update(ref)
|
||||
vals.append(res)
|
||||
if user.email:
|
||||
mail_to.append(user.email)
|
||||
|
||||
elif type == 'external' and datas.get('email'):
|
||||
res = {'email': datas['email']}
|
||||
res.update(ref)
|
||||
vals.append(res)
|
||||
mail_to.append(datas['email'])
|
||||
|
||||
elif type == 'partner':
|
||||
add_obj = self.pool.get('res.partner')
|
||||
for contact in add_obj.browse(cr, uid, datas['contact_ids']):
|
||||
res = {
|
||||
'partner_id': contact.id,
|
||||
'email': contact.email
|
||||
}
|
||||
res.update(ref)
|
||||
vals.append(res)
|
||||
if contact.email:
|
||||
mail_to.append(contact.email)
|
||||
|
||||
for att_val in vals:
|
||||
if model == 'calendar.attendee':
|
||||
att = att_obj.browse(cr, uid, context_id)
|
||||
att_val.update({
|
||||
'parent_ids': [(4, att.id)],
|
||||
'ref': att.ref and (att.ref._name + ',' +str(att.ref.id)) or False
|
||||
})
|
||||
|
||||
attendees.append(att_obj.create(cr, uid, att_val))
|
||||
if model_field:
|
||||
for attendee in attendees:
|
||||
obj.write(cr, uid, res_obj.id, {model_field: [(4, attendee)]})
|
||||
|
||||
if datas.get('send_mail'):
|
||||
if not mail_to:
|
||||
name = map(lambda x: x[1], filter(lambda x: type==x[0], \
|
||||
self._columns['type'].selection))
|
||||
raise osv.except_osv(_('Error!'), _("%s must have an email address to send mail.") %(name[0]))
|
||||
att_obj._send_mail(cr, uid, attendees, mail_to, \
|
||||
email_from = current_user.email or tools.config.get('email_from', False))
|
||||
|
||||
return {'type': 'ir.actions.act_window_close'}
|
||||
|
||||
|
||||
def onchange_partner_id(self, cr, uid, ids, partner_id, *args, **argv):
|
||||
"""
|
||||
Make entry on contact_ids on change of partner_id field.
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of base calendar invite attendee’s IDs.
|
||||
@param partner_id: id of Partner
|
||||
@return: dictionary of value.
|
||||
"""
|
||||
|
||||
if not partner_id:
|
||||
return {'value': {'contact_ids': []}}
|
||||
cr.execute('SELECT id FROM res_partner \
|
||||
WHERE id=%s or parent_id =%s' , (partner_id,partner_id,))
|
||||
contacts = map(lambda x: x[0], cr.fetchall())
|
||||
return {'value': {'contact_ids': contacts}}
|
||||
|
||||
base_calendar_invite_attendee()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
@ -1,55 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<!-- Attendee invite wizard-->
|
||||
|
||||
<record id="view_calendar_invite_attendee_wizard"
|
||||
model="ir.ui.view">
|
||||
<field name="name">Invite Attendees</field>
|
||||
<field name="model">base_calendar.invite.attendee</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Invite People" version="7.0">
|
||||
<separator string="Invite People" colspan="4"/>
|
||||
<field name="type"/>
|
||||
<field name="send_mail"/>
|
||||
<notebook colspan="4">
|
||||
<page string="Data">
|
||||
<group col="2" colspan="6" attrs="{'invisible': [('type', '!=', 'external')]}">
|
||||
<field name="email" colspan="4" attrs="{'required': [('type', '=', 'external')]}"/>
|
||||
</group>
|
||||
<group col="2" colspan="6" attrs="{'invisible': [('type', '!=', 'internal')]}">
|
||||
<separator string="Users" colspan="4"/>
|
||||
<field name="user_ids" colspan="4" nolabel="1" height="180"/>
|
||||
<newline/>
|
||||
</group>
|
||||
<group col="2" colspan="6" attrs="{'invisible': [('type', '!=', 'partner')]}">
|
||||
<field name="partner_id" colspan="2" on_change="onchange_partner_id(partner_id)" attrs="{'required': [('type', '=', 'partner')]}"/>
|
||||
<newline/>
|
||||
<separator string="Partner Contacts" colspan="6"/>
|
||||
<field name="contact_ids" colspan="4" nolabel="1" domain="[('id', 'child_of', [partner_id])]" attrs="{'readonly': [('type', '!=', 'partner')]}"/>
|
||||
</group>
|
||||
</page>
|
||||
</notebook>
|
||||
<footer>
|
||||
<button name="do_invite" string="Invite" type="object" class="oe_highlight"/>
|
||||
or
|
||||
<button string="Cancel" class="oe_link" special="cancel"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<!-- Attendee invite action-->
|
||||
|
||||
<record id="action_view_calendar_invite_attendee_wizard" model="ir.actions.act_window">
|
||||
<field name="name">Invite Attendees</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">base_calendar.invite.attendee</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
|
@ -58,7 +58,6 @@ will disable LDAP authentication completely if installed at the same time.
|
|||
'data': [],
|
||||
'auto_install': False,
|
||||
'installable': True,
|
||||
'certificate': '00721290471310299725',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -35,7 +35,6 @@ with a single statement.
|
|||
'data': ['base_iban_data.xml' , 'base_iban_view.xml'],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '0050014379549',
|
||||
'images': ['images/base_iban1.jpeg'],
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -42,7 +42,6 @@ This module generates the Technical Guides of selected modules in Restructured T
|
|||
],
|
||||
'demo': [],
|
||||
'installable': True,
|
||||
'certificate': '001288481437217734509',
|
||||
'images': ['images/base_module_doc_rst1.jpeg'],
|
||||
}
|
||||
|
||||
|
|
|
@ -53,7 +53,6 @@ Select datetime criteria of recording and objects to be recorded and Record modu
|
|||
],
|
||||
'demo': [],
|
||||
'installable': True,
|
||||
'certificate': '0083134865813',
|
||||
'images': ['images/base_module_record1.jpeg','images/base_module_record2.jpeg','images/base_module_record3.jpeg',]
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -38,7 +38,6 @@ Once you have modified it you can upload the report using the same wizard.
|
|||
'demo': [],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '0056379010493',
|
||||
'images': ['images/base_report_designer1.jpeg','images/base_report_designer2.jpeg',],
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -43,7 +43,6 @@ Shows you a list of applications features to install from.
|
|||
'demo': [],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '0086711085869',
|
||||
'images': ['images/base_setup1.jpeg','images/base_setup2.jpeg','images/base_setup3.jpeg','images/base_setup4.jpeg',],
|
||||
'js': ['static/src/js/base_setup.js'],
|
||||
'css': ['static/src/css/base_setup.css'],
|
||||
|
|
|
@ -307,7 +307,7 @@ class base_stage(object):
|
|||
destination=False)
|
||||
|
||||
def remind_user(self, cr, uid, ids, context=None, attach=False, destination=True):
|
||||
if 'message_post' in self:
|
||||
if hasattr(self, 'message_post'):
|
||||
for case in self.browse(cr, uid, ids, context=context):
|
||||
if destination:
|
||||
recipient_id = case.user_id.partner_id.id
|
||||
|
|
|
@ -13,7 +13,6 @@ Creates menu link for Tools from where tools like survey, lunch, idea are access
|
|||
""",
|
||||
'data': ['tools_view.xml'],
|
||||
'installable': True,
|
||||
'certificate' : '00571588675379342237'
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -58,7 +58,6 @@ only the country code will be validated.
|
|||
'data': ['base_vat_view.xml'],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '0084849360989',
|
||||
'images': ['images/1_partner_vat.jpeg'],
|
||||
}
|
||||
|
||||
|
|
|
@ -42,7 +42,6 @@ Allows users to create custom dashboard.
|
|||
'qweb': ['static/src/xml/*.xml'],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '0076912305725',
|
||||
'images': ['images/1_dashboard_definition.jpeg','images/2_publish_note.jpeg','images/3_admin_dashboard.jpeg',],
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -69,7 +69,6 @@ To access OpenERP Calendar using WebCal to remote site use the URL like:
|
|||
],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '00924841426645403741',
|
||||
'images': ['images/calendar_collections.jpeg','images/calendars.jpeg','images/export_ics_file.jpeg'],
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,819 @@
|
|||
# Bengali translation for openobject-addons
|
||||
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||
"PO-Revision-Date: 2012-09-25 17:39+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Bengali <bn@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-09-26 04:36+0000\n"
|
||||
"X-Generator: Launchpad (build 16022)\n"
|
||||
|
||||
#. module: caldav
|
||||
#: view:basic.calendar:0
|
||||
msgid "Value Mapping"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: help:caldav.browse,url:0
|
||||
msgid "Url of the caldav server, use for synchronization"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: code:addons/caldav/wizard/caldav_browse.py:99
|
||||
#, python-format
|
||||
msgid ""
|
||||
"\n"
|
||||
"Prerequire\n"
|
||||
"----------\n"
|
||||
"There is no buit-in way to synchronize calendar with caldav.\n"
|
||||
"So you need to install a third part software : Calendar (CalDav)\n"
|
||||
"for now it's the only one\n"
|
||||
"\n"
|
||||
"configuration\n"
|
||||
"-------------\n"
|
||||
"\n"
|
||||
"1. Open Calendar Sync\n"
|
||||
" I'll get an interface with 2 tabs\n"
|
||||
" Stay on the first one\n"
|
||||
"\n"
|
||||
"2. CaDAV Calendar URL : put the URL given above (ie : "
|
||||
"http://host.com:8069/webdav/db/calendars/users/demo/c/Meetings)\n"
|
||||
"\n"
|
||||
"3. Put your openerp username and password\n"
|
||||
"\n"
|
||||
"4. If your server don't use SSL, you'll get a warnign, say \"Yes\"\n"
|
||||
"\n"
|
||||
"5. Then you can synchronize manually or custom the settings to synchronize "
|
||||
"every x minutes.\n"
|
||||
"\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: field:basic.calendar.alias,name:0
|
||||
msgid "Filename"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: model:ir.model,name:caldav.model_calendar_event_export
|
||||
msgid "Event Export"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: view:calendar.event.subscribe:0
|
||||
msgid "Provide Path for Remote Calendar"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: model:ir.actions.act_window,name:caldav.action_calendar_event_import_values
|
||||
msgid "Import .ics File"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: view:caldav.browse:0
|
||||
#: view:calendar.event.export:0
|
||||
msgid "_Close"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: selection:basic.calendar.attributes,type:0
|
||||
#: selection:basic.calendar.lines,name:0
|
||||
msgid "Attendee"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: sql_constraint:basic.calendar.fields:0
|
||||
msgid "Can not map a field more than once"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: model:ir.actions.act_window,help:caldav.action_caldav_form
|
||||
msgid ""
|
||||
"\"Calendars\" allow you to Customize calendar event and todo attribute with "
|
||||
"any of OpenERP model.Caledars provide iCal Import/Export "
|
||||
"functionality.Webdav server that provides remote access to calendar.Help You "
|
||||
"to synchronize Meeting with Calendars client.You can access Calendars using "
|
||||
"CalDAV clients, like sunbird, Calendar Evaluation, Mobile."
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: code:addons/caldav/calendar.py:789
|
||||
#: code:addons/caldav/calendar.py:879
|
||||
#: code:addons/caldav/wizard/calendar_event_import.py:63
|
||||
#, python-format
|
||||
msgid "Warning !"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: field:basic.calendar.lines,object_id:0
|
||||
msgid "Object"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: view:basic.calendar:0
|
||||
msgid "Todo"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: model:ir.model,name:caldav.model_user_preference
|
||||
msgid "User preference Form"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: field:user.preference,service:0
|
||||
msgid "Services"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: selection:basic.calendar.fields,fn:0
|
||||
msgid "Expression as constant"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: selection:user.preference,device:0
|
||||
msgid "Evolution"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: view:calendar.event.import:0
|
||||
#: view:calendar.event.subscribe:0
|
||||
msgid "Ok"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: code:addons/caldav/wizard/caldav_browse.py:123
|
||||
#, python-format
|
||||
msgid ""
|
||||
"\n"
|
||||
" 1. Go to Calendar View\n"
|
||||
"\n"
|
||||
" 2. File -> New -> Calendar\n"
|
||||
"\n"
|
||||
" 3. Fill the form\n"
|
||||
" - type : CalDav\n"
|
||||
" - name : Whaterver you want (ie : Meeting)\n"
|
||||
" - url : "
|
||||
"http://HOST:PORT/webdav/DB_NAME/calendars/users/USER/c/Meetings (ie : "
|
||||
"http://localhost:8069/webdav/db_1/calendars/users/demo/c/Meetings) the one "
|
||||
"given on the top of this window\n"
|
||||
" - uncheck \"User SSL\"\n"
|
||||
" - Username : Your username (ie : Demo)\n"
|
||||
" - Refresh : everytime you want that evolution synchronize the data "
|
||||
"with the server\n"
|
||||
"\n"
|
||||
" 4. Click ok and give your openerp password\n"
|
||||
"\n"
|
||||
" 5. A new calendar named with the name you gave should appear on the left "
|
||||
"side.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: code:addons/caldav/calendar.py:879
|
||||
#, python-format
|
||||
msgid "Please provide proper configuration of \"%s\" in Calendar Lines"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: view:user.preference:0
|
||||
msgid "Caldav's host name configuration"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: field:caldav.browse,url:0
|
||||
msgid "Caldav Server"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: selection:basic.calendar.fields,fn:0
|
||||
msgid "Datetime In UTC"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: selection:user.preference,device:0
|
||||
msgid "iPhone"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: selection:basic.calendar,type:0
|
||||
#: selection:basic.calendar.attributes,type:0
|
||||
#: selection:basic.calendar.lines,name:0
|
||||
msgid "TODO"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: view:calendar.event.export:0
|
||||
msgid "Export ICS"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: selection:basic.calendar.fields,fn:0
|
||||
msgid "Use the field"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: code:addons/caldav/calendar.py:789
|
||||
#, python-format
|
||||
msgid "Can not create line \"%s\" more than once"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: view:basic.calendar:0
|
||||
msgid "Webcal Calendar"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: view:basic.calendar:0
|
||||
#: field:basic.calendar,line_ids:0
|
||||
#: model:ir.model,name:caldav.model_basic_calendar_lines
|
||||
msgid "Calendar Lines"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: model:ir.model,name:caldav.model_calendar_event_subscribe
|
||||
msgid "Event subscribe"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: view:calendar.event.import:0
|
||||
msgid "Import ICS"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: view:calendar.event.import:0
|
||||
#: view:calendar.event.subscribe:0
|
||||
#: view:user.preference:0
|
||||
msgid "_Cancel"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: model:ir.model,name:caldav.model_basic_calendar_event
|
||||
msgid "basic.calendar.event"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: view:basic.calendar:0
|
||||
#: selection:basic.calendar,type:0
|
||||
#: selection:basic.calendar.attributes,type:0
|
||||
#: selection:basic.calendar.lines,name:0
|
||||
msgid "Event"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: field:document.directory,calendar_collection:0
|
||||
#: field:user.preference,collection:0
|
||||
msgid "Calendar Collection"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: constraint:document.directory:0
|
||||
msgid "Error! You can not create recursive Directories."
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: view:user.preference:0
|
||||
msgid "_Open"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: view:user.preference:0
|
||||
msgid "Next"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: field:basic.calendar,type:0
|
||||
#: field:basic.calendar.attributes,type:0
|
||||
#: field:basic.calendar.fields,type_id:0
|
||||
#: field:basic.calendar.lines,name:0
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: help:calendar.event.export,name:0
|
||||
msgid "Save in .ics format"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: code:addons/caldav/calendar.py:1293
|
||||
#, python-format
|
||||
msgid "Error !"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: model:ir.model,name:caldav.model_basic_calendar_attributes
|
||||
msgid "Calendar attributes"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: model:ir.model,name:caldav.model_caldav_browse
|
||||
msgid "Caldav Browse"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: selection:user.preference,device:0
|
||||
msgid "Android based device"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: view:user.preference:0
|
||||
msgid "Configure your openerp hostname. For example : "
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: field:basic.calendar,create_date:0
|
||||
msgid "Created Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: view:basic.calendar:0
|
||||
msgid "Attributes Mapping"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: model:ir.model,name:caldav.model_document_directory
|
||||
msgid "Directory"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: field:calendar.event.subscribe,url_path:0
|
||||
msgid "Provide path for remote calendar"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: field:basic.calendar.lines,domain:0
|
||||
msgid "Domain"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: view:calendar.event.subscribe:0
|
||||
msgid "_Subscribe"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: field:basic.calendar,user_id:0
|
||||
msgid "Owner"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: view:basic.calendar:0
|
||||
#: field:basic.calendar.alias,cal_line_id:0
|
||||
#: field:basic.calendar.lines,calendar_id:0
|
||||
#: model:ir.ui.menu,name:caldav.menu_calendar
|
||||
#: field:user.preference,calendar:0
|
||||
msgid "Calendar"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: code:addons/caldav/calendar.py:41
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please install python-vobject from http://vobject.skyhouseconsulting.com/"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: code:addons/caldav/wizard/calendar_event_import.py:63
|
||||
#, python-format
|
||||
msgid "Invalid format of the ics, file can not be imported"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: selection:user.preference,service:0
|
||||
msgid "CalDAV"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: field:basic.calendar.fields,field_id:0
|
||||
msgid "OpenObject Field"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: field:basic.calendar.alias,res_id:0
|
||||
msgid "Res. ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: view:calendar.event.subscribe:0
|
||||
msgid "Message..."
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: view:basic.calendar:0
|
||||
#: field:basic.calendar,has_webcal:0
|
||||
msgid "WebCal"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: view:document.directory:0
|
||||
#: model:ir.actions.act_window,name:caldav.action_calendar_collection_form
|
||||
#: model:ir.ui.menu,name:caldav.menu_calendar_collection
|
||||
msgid "Calendar Collections"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: code:addons/caldav/calendar.py:815
|
||||
#: sql_constraint:basic.calendar.alias:0
|
||||
#, python-format
|
||||
msgid "The same filename cannot apply to two records!"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: sql_constraint:document.directory:0
|
||||
msgid "Directory cannot be parent of itself!"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: view:basic.calendar:0
|
||||
#: field:document.directory,calendar_ids:0
|
||||
#: model:ir.actions.act_window,name:caldav.action_caldav_form
|
||||
#: model:ir.ui.menu,name:caldav.menu_caldav_directories
|
||||
msgid "Calendars"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: field:basic.calendar,collection_id:0
|
||||
msgid "Collection"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: field:basic.calendar,write_date:0
|
||||
msgid "Write Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: code:addons/caldav/wizard/caldav_browse.py:32
|
||||
#, python-format
|
||||
msgid ""
|
||||
"\n"
|
||||
" * Webdav server that provides remote access to calendar\n"
|
||||
" * Synchronisation of calendar using WebDAV\n"
|
||||
" * Customize calendar event and todo attribute with any of OpenERP model\n"
|
||||
" * Provides iCal Import/Export functionality\n"
|
||||
"\n"
|
||||
" To access Calendars using CalDAV clients, point them to:\n"
|
||||
" "
|
||||
"http://HOSTNAME:PORT/webdav/DATABASE_NAME/calendars/users/USERNAME/c\n"
|
||||
"\n"
|
||||
" To access OpenERP Calendar using WebCal to remote site use the URL "
|
||||
"like:\n"
|
||||
" "
|
||||
"http://HOSTNAME:PORT/webdav/DATABASE_NAME/Calendars/CALENDAR_NAME.ics\n"
|
||||
"\n"
|
||||
" Where,\n"
|
||||
" HOSTNAME: Host on which OpenERP server(With webdav) is running\n"
|
||||
" PORT : Port on which OpenERP server is running (By Default : 8069)\n"
|
||||
" DATABASE_NAME: Name of database on which OpenERP Calendar is "
|
||||
"created\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: sql_constraint:document.directory:0
|
||||
msgid "The directory name must be unique !"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: view:user.preference:0
|
||||
msgid "User Preference"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: code:addons/caldav/wizard/calendar_event_subscribe.py:59
|
||||
#, python-format
|
||||
msgid "Please provide Proper URL !"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: model:ir.model,name:caldav.model_basic_calendar_timezone
|
||||
msgid "basic.calendar.timezone"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: field:basic.calendar.fields,expr:0
|
||||
msgid "Expression"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: model:ir.model,name:caldav.model_basic_calendar_attendee
|
||||
msgid "basic.calendar.attendee"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: model:ir.model,name:caldav.model_basic_calendar_alias
|
||||
msgid "basic.calendar.alias"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: view:calendar.event.import:0
|
||||
#: field:calendar.event.import,file_path:0
|
||||
msgid "Select ICS File"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: field:user.preference,device:0
|
||||
msgid "Software/Devices"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: field:basic.calendar.lines,mapping_ids:0
|
||||
msgid "Fields Mapping"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: code:addons/caldav/wizard/caldav_browse.py:141
|
||||
#, python-format
|
||||
msgid ""
|
||||
"\n"
|
||||
"Prerequire\n"
|
||||
"----------\n"
|
||||
"If you are using thunderbird, first you need to install the lightning "
|
||||
"module\n"
|
||||
"http://www.mozilla.org/projects/calendar/lightning/\n"
|
||||
"\n"
|
||||
"configuration\n"
|
||||
"-------------\n"
|
||||
"\n"
|
||||
"1. Go to Calendar View\n"
|
||||
"\n"
|
||||
"2. File -> New Calendar\n"
|
||||
"\n"
|
||||
"3. Chosse \"On the Network\"\n"
|
||||
"\n"
|
||||
"4. for format choose CalDav\n"
|
||||
" and as location the url given above (ie : "
|
||||
"http://host.com:8069/webdav/db/calendars/users/demo/c/Meetings)\n"
|
||||
"\n"
|
||||
"5. Choose a name and a color for the Calendar, and we advice you to uncheck "
|
||||
"\"alarm\"\n"
|
||||
"\n"
|
||||
"6. Then put your openerp login and password (to give the password only check "
|
||||
"the box \"Use password Manager to remember this password\"\n"
|
||||
"\n"
|
||||
"7. Then Finish, your meetings should appear now in your calendar view\n"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: view:caldav.browse:0
|
||||
msgid "Browse Caldav"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: field:user.preference,host_name:0
|
||||
msgid "Host Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: model:ir.model,name:caldav.model_basic_calendar
|
||||
msgid "basic.calendar"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: view:basic.calendar:0
|
||||
msgid "Other Info"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: selection:user.preference,device:0
|
||||
msgid "Other"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: view:basic.calendar:0
|
||||
msgid "My Calendar(s)"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: help:basic.calendar,has_webcal:0
|
||||
msgid ""
|
||||
"Also export a <name>.ics entry next to the calendar folder, with WebCal "
|
||||
"content."
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: field:basic.calendar.fields,fn:0
|
||||
msgid "Function"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: view:user.preference:0
|
||||
msgid "database.my.openerp.com or companyserver.com"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: view:basic.calendar:0
|
||||
#: field:basic.calendar,description:0
|
||||
#: view:caldav.browse:0
|
||||
#: field:caldav.browse,description:0
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: help:basic.calendar.alias,cal_line_id:0
|
||||
msgid "The calendar/line this mapping applies to"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: field:basic.calendar.fields,mapping:0
|
||||
msgid "Mapping"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: code:addons/caldav/wizard/calendar_event_import.py:86
|
||||
#, python-format
|
||||
msgid "Import Sucessful"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: view:calendar.event.import:0
|
||||
msgid "_Import"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: model:ir.model,name:caldav.model_calendar_event_import
|
||||
msgid "Event Import"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: selection:basic.calendar.fields,fn:0
|
||||
msgid "Interval in hours"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: field:calendar.event.export,name:0
|
||||
msgid "File name"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: view:calendar.event.subscribe:0
|
||||
msgid "Subscribe to Remote Calendar"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: help:basic.calendar,calendar_color:0
|
||||
msgid "For supporting clients, the color of the calendar entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: field:basic.calendar,name:0
|
||||
#: field:basic.calendar.attributes,name:0
|
||||
#: field:basic.calendar.fields,name:0
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: selection:basic.calendar.attributes,type:0
|
||||
#: selection:basic.calendar.lines,name:0
|
||||
msgid "Alarm"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: model:ir.model,name:caldav.model_basic_calendar_alarm
|
||||
msgid "basic.calendar.alarm"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: code:addons/caldav/calendar.py:1293
|
||||
#, python-format
|
||||
msgid "Attendee must have an Email Id"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: model:ir.actions.act_window,name:caldav.action_calendar_event_export_values
|
||||
msgid "Export .ics File"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: code:addons/caldav/calendar.py:41
|
||||
#, python-format
|
||||
msgid "vobject Import Error!"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: field:calendar.event.export,file_path:0
|
||||
msgid "Save ICS file"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: code:addons/caldav/wizard/caldav_browse.py:50
|
||||
#, python-format
|
||||
msgid ""
|
||||
"\n"
|
||||
" For SSL specific configuration see the documentation below\n"
|
||||
"\n"
|
||||
"Now, to setup the calendars, you need to:\n"
|
||||
"\n"
|
||||
"1. Click on the \"Settings\" and go to the \"Mail, Contacts, Calendars\" "
|
||||
"page.\n"
|
||||
"2. Go to \"Add account...\"\n"
|
||||
"3. Click on \"Other\"\n"
|
||||
"4. From the \"Calendars\" group, select \"Add CalDAV Account\"\n"
|
||||
"\n"
|
||||
"5. Enter the host's name\n"
|
||||
" (ie : if the url is http://openerp.com:8069/webdav/db_1/calendars/ , "
|
||||
"openerp.com is the host)\n"
|
||||
"\n"
|
||||
"6. Fill Username and password with your openerp login and password\n"
|
||||
"\n"
|
||||
"7. As a description, you can either leave the server's name or\n"
|
||||
" something like \"OpenERP calendars\".\n"
|
||||
"\n"
|
||||
"9. If you are not using a SSL server, you'll get an error, do not worry and "
|
||||
"push \"Continue\"\n"
|
||||
"\n"
|
||||
"10. Then click to \"Advanced Settings\" to specify the right\n"
|
||||
" ports and paths.\n"
|
||||
"\n"
|
||||
"11. Specify the port for the OpenERP server: 8071 for SSL, 8069 without.\n"
|
||||
"\n"
|
||||
"12. Set the \"Account URL\" to the right path of the OpenERP webdav:\n"
|
||||
" the url given by the wizard (ie : "
|
||||
"http://my.server.ip:8069/webdav/dbname/calendars/ )\n"
|
||||
"\n"
|
||||
"11. Click on Done. The phone will hopefully connect to the OpenERP server\n"
|
||||
" and verify it can use the account.\n"
|
||||
"\n"
|
||||
"12. Go to the main menu of the iPhone and enter the Calendar application.\n"
|
||||
" Your OpenERP calendars will be visible inside the selection of the\n"
|
||||
" \"Calendars\" button.\n"
|
||||
" Note that when creating a new calendar entry, you will have to specify\n"
|
||||
" which calendar it should be saved at.\n"
|
||||
"\n"
|
||||
"IF you need SSL (and your certificate is not a verified one, as usual),\n"
|
||||
"then you first will need to let the iPhone trust that. Follow these\n"
|
||||
"steps:\n"
|
||||
"\n"
|
||||
" s1. Open Safari and enter the https location of the OpenERP server:\n"
|
||||
" https://my.server.ip:8071/\n"
|
||||
" (assuming you have the server at \"my.server.ip\" and the HTTPS port\n"
|
||||
" is the default 8071)\n"
|
||||
" s2. Safari will try to connect and issue a warning about the "
|
||||
"certificate\n"
|
||||
" used. Inspect the certificate and click \"Accept\" so that iPhone\n"
|
||||
" now trusts it.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: selection:user.preference,device:0
|
||||
msgid "Sunbird/Thunderbird"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: field:basic.calendar,calendar_order:0
|
||||
msgid "Order"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: code:addons/caldav/wizard/calendar_event_subscribe.py:59
|
||||
#, python-format
|
||||
msgid "Error!"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: field:basic.calendar,calendar_color:0
|
||||
msgid "Color"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: view:basic.calendar:0
|
||||
msgid "MY"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: model:ir.model,name:caldav.model_basic_calendar_fields
|
||||
msgid "Calendar fields"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: view:calendar.event.import:0
|
||||
msgid "Import Message"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: model:ir.actions.act_window,name:caldav.action_calendar_event_subscribe
|
||||
#: model:ir.actions.act_window,name:caldav.action_calendar_event_subscribe_values
|
||||
msgid "Subscribe"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: sql_constraint:document.directory:0
|
||||
msgid "Directory must have a parent or a storage"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: model:ir.model,name:caldav.model_basic_calendar_todo
|
||||
msgid "basic.calendar.todo"
|
||||
msgstr ""
|
||||
|
||||
#. module: caldav
|
||||
#: help:basic.calendar,calendar_order:0
|
||||
msgid "For supporting clients, the order of this folder among the calendars"
|
||||
msgstr ""
|
|
@ -35,7 +35,6 @@ Adds a Claim link to the delivery order.
|
|||
'claim_delivery_data.xml',],
|
||||
'auto_install': False,
|
||||
'installable': True,
|
||||
'certificate' : '001101649349223746957',
|
||||
'images': ['images/1_claim_link_delivery_order.jpeg'],
|
||||
}
|
||||
|
||||
|
|
|
@ -122,7 +122,6 @@ Dashboard for CRM will include:
|
|||
'installable': True,
|
||||
'application': True,
|
||||
'auto_install': False,
|
||||
'certificate': '0079056041421',
|
||||
'images': ['images/sale_crm_crm_dashboard.png', 'images/crm_dashboard.jpeg','images/leads.jpeg','images/meetings.jpeg','images/opportunities.jpeg','images/outbound_calls.jpeg','images/stages.jpeg'],
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -304,6 +304,10 @@ class crm_lead(base_stage, format_address, osv.osv):
|
|||
'city' : partner.city,
|
||||
'state_id' : partner.state_id and partner.state_id.id or False,
|
||||
'country_id' : partner.country_id and partner.country_id.id or False,
|
||||
'email_from' : partner.email,
|
||||
'phone' : partner.phone,
|
||||
'mobile' : partner.mobile,
|
||||
'fax' : partner.fax,
|
||||
}
|
||||
return {'value' : values}
|
||||
|
||||
|
@ -598,6 +602,8 @@ class crm_lead(base_stage, format_address, osv.osv):
|
|||
'stage_id': stage_id or False,
|
||||
'date_action': time.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
'date_open': time.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
'email_from': customer and customer.email or lead.email_from,
|
||||
'phone': customer and customer.phone or lead.phone,
|
||||
}
|
||||
|
||||
def convert_opportunity(self, cr, uid, ids, partner_id, user_ids=False, section_id=False, context=None):
|
||||
|
@ -788,9 +794,10 @@ class crm_lead(base_stage, format_address, osv.osv):
|
|||
stage = self.pool.get('crm.case.stage').browse(cr, uid, vals['stage_id'], context=context)
|
||||
if stage.on_change:
|
||||
vals['probability'] = stage.probability
|
||||
for lead in self.browse(cr, uid, ids, context=context):
|
||||
if lead.section_id:
|
||||
vals['message_follower_ids'] = [(4, follower.id) for follower in lead.section_id.message_follower_ids]
|
||||
if vals.get('section_id'):
|
||||
section_id = self.pool.get('crm.case.section').browse(cr, uid, vals.get('section_id'), context=context)
|
||||
if section_id:
|
||||
vals['message_follower_ids'] = [(4, follower.id) for follower in section_id.message_follower_ids]
|
||||
return super(crm_lead,self).write(cr, uid, ids, vals, context)
|
||||
|
||||
# ----------------------------------------
|
||||
|
|
|
@ -450,13 +450,11 @@
|
|||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
|
||||
<menuitem id="menu_crm_payment_mode" name="Fund Raising"
|
||||
parent="base.menu_base_config" sequence="85" groups="crm.group_fund_raising"/>
|
||||
|
||||
<menuitem action="action_crm_payment_mode"
|
||||
id="menu_crm_payment_mode_act"
|
||||
groups="base.group_no_one"
|
||||
name="Payment Modes"
|
||||
parent="menu_crm_payment_mode" />
|
||||
parent="base.menu_crm_config_lead" />
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -60,5 +60,18 @@
|
|||
<field name="domain_force">['|',('user_id','=',user.id),('show_as','=','busy')]</field>
|
||||
</record>
|
||||
|
||||
<record id="crm_rule_personal_phonecall" model="ir.rule">
|
||||
<field name="name">Personal Phone Calls</field>
|
||||
<field ref="model_crm_phonecall" name="model_id"/>
|
||||
<field name="domain_force">['|',('user_id','=',user.id),('user_id','=',False)]</field>
|
||||
<field name="groups" eval="[(4, ref('base.group_sale_salesman'))]"/>
|
||||
</record>
|
||||
<record id="crm_rule_all_phones" model="ir.rule">
|
||||
<field name="name">All Phones</field>
|
||||
<field ref="model_crm_phonecall" name="model_id"/>
|
||||
<field name="domain_force">[(1,'=',1)]</field>
|
||||
<field name="groups" eval="[(4, ref('base.group_sale_salesman_all_leads'))]"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -55,6 +55,8 @@ class crm_lead2partner(osv.osv_memory):
|
|||
partner = self.pool.get('res.partner')
|
||||
lead = self.pool.get('crm.lead')
|
||||
this = lead.browse(cr, uid, context.get('active_id'), context=context)
|
||||
if this.partner_id:
|
||||
return this.partner_id.id
|
||||
partner_id = False
|
||||
if this.email_from:
|
||||
partner_ids = partner.search(cr, uid, [('email', '=', this.email_from)], context=context)
|
||||
|
|
|
@ -42,7 +42,6 @@ Caldav features in Meeting.
|
|||
'demo': [],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate' : '001088048737252670109',
|
||||
'images': ['images/caldav_browse_step1.jpeg','images/caldav_browse_step2.jpeg'],
|
||||
}
|
||||
|
||||
|
|
|
@ -48,7 +48,6 @@ automatically new claims based on incoming emails.
|
|||
],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate' : '00612027414703404749',
|
||||
'images': ['images/claim_categories.jpeg','images/claim_stages.jpeg','images/claims.jpeg'],
|
||||
}
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
<menuitem id="base.menu_aftersale" name="After-Sale Services"
|
||||
groups="base.group_sale_salesman"
|
||||
parent="base.menu_main_pm" sequence="2" />
|
||||
parent="base.menu_base_partner" sequence="2" />
|
||||
|
||||
<!-- Claims Menu -->
|
||||
<record model="ir.actions.act_window" id="crm_case_categ_claim0">
|
||||
|
|
|
@ -47,7 +47,6 @@ and categorize your interventions with a channel and a priority level.
|
|||
'test': ['test/process/help-desk.yml'],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate' : '00830691522781519309',
|
||||
'images': ['images/helpdesk_analysis.jpeg','images/helpdesk_categories.jpeg','images/helpdesk_requests.jpeg'],
|
||||
}
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
##############################################################################
|
||||
|
||||
from base_status.base_state import base_state
|
||||
from base_status.base_stage import base_stage
|
||||
from crm import crm
|
||||
from osv import fields, osv
|
||||
import tools
|
||||
|
@ -31,7 +32,7 @@ CRM_HELPDESK_STATES = (
|
|||
crm.AVAILABLE_STATES[4][0], # Pending
|
||||
)
|
||||
|
||||
class crm_helpdesk(base_state, osv.osv):
|
||||
class crm_helpdesk(base_state, base_stage, osv.osv):
|
||||
""" Helpdesk Cases """
|
||||
|
||||
_name = "crm.helpdesk"
|
||||
|
|
|
@ -3,11 +3,10 @@
|
|||
<data noupdate="1">
|
||||
|
||||
<!-- Top menu item -->
|
||||
<menuitem name="Project"
|
||||
id="base.menu_main_pm"
|
||||
sequence="90"/>
|
||||
<menuitem name="Sales"
|
||||
id="base.menu_base_partner"/>
|
||||
|
||||
<menuitem id="base.menu_aftersale" name="After-Sale Services" sequence="2" parent="base.menu_main_pm" />
|
||||
<menuitem id="base.menu_aftersale" name="After-Sale Services" sequence="2" parent="base.menu_base_partner" />
|
||||
|
||||
<!-- Help Desk (menu) -->
|
||||
|
||||
|
|
|
@ -50,7 +50,6 @@ You can also use the geolocalization without using the GPS coordinates.
|
|||
'test': ['test/partner_assign.yml'],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '00503409558942442061',
|
||||
'images': ['images/partner_geo_localization.jpeg','images/partner_grade.jpeg'],
|
||||
}
|
||||
|
||||
|
|
|
@ -47,7 +47,6 @@ were overlapping.
|
|||
],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '0033984979005',
|
||||
'images': ['images/profiling_questionnaires.jpeg','images/profiling_questions.jpeg'],
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
<field name="arch" type="xml">
|
||||
<form string="Open Questionnaire" version="7.0">
|
||||
<separator colspan="4" string="Questionnaire"/>
|
||||
<field name="question_ans_ids" colspan="4" nolabel="1" mode="tree,form" width="550" height="200"/>
|
||||
<field name="question_ans_ids" colspan="4" nolabel="1" mode="tree" width="550" height="200"/>
|
||||
<footer>
|
||||
<button name="questionnaire_compute" string="Save Data" type="object" class="oe_highlight"/>
|
||||
or
|
||||
|
|
|
@ -37,7 +37,6 @@ The decimal precision is configured per company.
|
|||
],
|
||||
'demo': [],
|
||||
'installable': True,
|
||||
'certificate' : '001307317809612974621',
|
||||
'images': ['images/1_decimal_accuracy_form.jpeg','images/1_decimal_accuracy_list.jpeg'],
|
||||
}
|
||||
|
||||
|
|
|
@ -44,7 +44,6 @@ invoices from picking, OpenERP is able to add and compute the shipping line.
|
|||
'test': ['test/delivery_cost.yml'],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '0033981912253',
|
||||
'images': ['images/1_delivery_method.jpeg','images/2_delivery_pricelist.jpeg'],
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -59,7 +59,6 @@ ATTENTION:
|
|||
'test': ['test/document_test2.yml'],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '0070515416461',
|
||||
'images': ['images/1_directories.jpeg','images/2_storage_media.jpeg','images/3_directories_structure.jpeg'],
|
||||
}
|
||||
|
||||
|
|
|
@ -48,7 +48,6 @@ FTP client.
|
|||
],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '00934787762705016005',
|
||||
'images': ['images/1_configure_ftp.jpeg','images/2_document_browse.jpeg','images/3_document_ftp.jpeg'],
|
||||
'post_load': 'post_load',
|
||||
}
|
||||
|
|
|
@ -42,7 +42,6 @@ Web pages
|
|||
'test': ['test/document_page_test00.yml'],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '0086363630317',
|
||||
'images': [],
|
||||
'css' : ['static/src/css/document_page.css'],
|
||||
}
|
||||
|
|
|
@ -70,7 +70,6 @@ which needs explicit configuration in openerp-server.conf too.
|
|||
],
|
||||
'auto_install': False,
|
||||
'installable': True,
|
||||
'certificate' : '001236490750845657973',
|
||||
'images': ['images/dav_properties.jpeg','images/directories_structure_principals.jpeg'],
|
||||
}
|
||||
|
||||
|
|
|
@ -43,7 +43,6 @@ documentation at http://doc.openerp.com.
|
|||
'qweb': ['static/src/xml/*.xml'],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '002046536359186',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -65,7 +65,6 @@ campaigns on any OpenERP document.
|
|||
'demo': ['res_partner_demo.yml'],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate' : '00817073628967384349',
|
||||
'images': ['images/1_email_account.jpeg','images/2_email_template.jpeg','images/3_emails.jpeg'],
|
||||
}
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ class event_moodle(osv.osv):
|
|||
"""
|
||||
moodle_config_wiz_ids = self.search(cr, uid, [], context=context)
|
||||
if not moodle_config_wiz_ids:
|
||||
raise osv.except_osv(('Error!'),("First configure your moodle connection."))
|
||||
raise osv.except_osv(_('Error!'),_("First configure your moodle connection."))
|
||||
return moodle_config_wiz_ids[0]
|
||||
|
||||
def make_url(self, cr, uid, ids, context=None):
|
||||
|
@ -101,6 +101,8 @@ class event_moodle(osv.osv):
|
|||
"""
|
||||
#connect to moodle
|
||||
url = self.browse(cr, uid, id, context=context).url
|
||||
if not url:
|
||||
raise osv.except_osv(_('Error!'),_("You must configure your moodle connection."))
|
||||
sock = xmlrpclib.ServerProxy(url)
|
||||
return sock.core_course_create_courses(courses)
|
||||
|
||||
|
|
|
@ -36,7 +36,6 @@ This module allows you to create retro planning for managing your events.
|
|||
'demo': [],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '0069726863885',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<field name="model">product.product</field>
|
||||
<field name="inherit_id" ref="product.product_normal_form_view" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="purchase_ok" position="after">
|
||||
<field name="purchase_ok" position="before">
|
||||
<field name="event_ok" on_change="onchange_event_ok(event_ok, context)"/>
|
||||
<label for="event_ok"/>
|
||||
</field>
|
||||
|
|
|
@ -64,7 +64,6 @@ For more specific needs, you may also assign custom-defined actions
|
|||
'demo': [],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate' : '00692978332890137453',
|
||||
'images': ['images/1_email_servers.jpeg'],
|
||||
}
|
||||
|
||||
|
|
|
@ -134,8 +134,8 @@ class config(osv.osv):
|
|||
_description = "Google Docs templates config"
|
||||
|
||||
_columns = {
|
||||
'model_id': fields.many2one('ir.model', 'Model'),
|
||||
'gdocs_resource_id': fields.char('Google resource ID', size=64,help='''
|
||||
'model_id': fields.many2one('ir.model', 'Model', required=True),
|
||||
'gdocs_resource_id': fields.char('Google Resource ID to Use as Template', size=64,help='''
|
||||
This is the id of the template document, on google side. You can find it thanks to its URL:
|
||||
*for a text document with url like `https://docs.google.com/a/openerp.com/document/d/123456789/edit`, the ID is `document:123456789`
|
||||
*for a spreadsheet document with url like `https://docs.google.com/a/openerp.com/spreadsheet/ccc?key=123456789#gid=0`, the ID is `spreadsheet:123456789`
|
||||
|
@ -143,7 +143,7 @@ This is the id of the template document, on google side. You can find it thanks
|
|||
*for a drawing document with url like `https://docs.google.com/a/openerp.com/drawings/d/123456789/edit`, the ID is `drawings:123456789`
|
||||
...
|
||||
'''),
|
||||
'name_template': fields.char('GDoc name template ', size=64, help='This is the name which appears on google side'),
|
||||
'name_template': fields.char('Google Doc Name Pattern', size=64, help='Choose how the new google docs will be named, on google side'),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
|
|
|
@ -13,7 +13,7 @@ var _t = instance.web._t;
|
|||
});
|
||||
if (! flag) {
|
||||
this.add_items('files', [
|
||||
{ label: _t('Google Doc'), callback: self.on_google_doc },
|
||||
{ label: _t('Add Google Doc...'), callback: self.on_google_doc },
|
||||
]);
|
||||
}
|
||||
},
|
||||
|
|
|
@ -33,11 +33,12 @@ Using this you can directly open Google Map from the URL widget.""",
|
|||
'website': 'http://www.openerp.com',
|
||||
'images': ['images/google_map.jpeg'],
|
||||
'depends': ['base'],
|
||||
'data': [],
|
||||
'data': [
|
||||
'google_map_view.xml'
|
||||
],
|
||||
'demo': [],
|
||||
'js': ['static/src/js/google_map.js'],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '0029498930765',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -25,8 +25,7 @@ class launch_map(osv.osv):
|
|||
_inherit = "res.partner"
|
||||
|
||||
def open_map(self, cr, uid, ids, context=None):
|
||||
address_obj= self.pool.get('res.partner')
|
||||
partner = address_obj.browse(cr, uid, ids, context=context)[0]
|
||||
partner = self.browse(cr, uid, ids, context=context)[0]
|
||||
url="http://maps.google.com/maps?oi=map&q="
|
||||
if partner.street:
|
||||
url+=partner.street.replace(' ','+')
|
||||
|
@ -39,9 +38,9 @@ class launch_map(osv.osv):
|
|||
if partner.zip:
|
||||
url+='+'+partner.zip.replace(' ','+')
|
||||
return {
|
||||
'type': 'ir.actions.act_url',
|
||||
'url':url,
|
||||
'target': 'new'
|
||||
'type': 'ir.actions.act_url',
|
||||
'url':url,
|
||||
'target': 'new'
|
||||
}
|
||||
|
||||
launch_map()
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record model="ir.ui.view" id="view_partner_google_map_inherit">
|
||||
<field name="name">res.partner.google.map.inherit</field>
|
||||
<field name="model">res.partner</field>
|
||||
<field name="inherit_id" ref="base.view_partner_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="website" position="before">
|
||||
<label for="open_map" string="Open Google Map"/>
|
||||
<div>
|
||||
<button name="open_map"
|
||||
string="Map" type="object"/>
|
||||
</div>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
@ -68,7 +68,6 @@ You can manage:
|
|||
'installable': True,
|
||||
'application': True,
|
||||
'auto_install': False,
|
||||
'certificate': '0086710558965',
|
||||
'css': [ 'static/src/css/hr.css' ],
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -22,6 +22,20 @@
|
|||
<field name="view_mode">form</field>
|
||||
<field name="usage">menu</field>
|
||||
<field name="view_id" ref="board_hr_form"/>
|
||||
<field name="help" type="html">
|
||||
<div class="oe_empty_custom_dashboard">
|
||||
<p>
|
||||
<b>Human Resources dashboard is empty.</b>
|
||||
</p><p>
|
||||
To add your first report into this dashboard, go to any
|
||||
menu, switch to list or graph view, and click <i>'Add to
|
||||
Dashboard'</i> in the extended search options.
|
||||
</p><p>
|
||||
You can filter and group data before inserting into the
|
||||
dashboard using the search options.
|
||||
</p>
|
||||
</div>
|
||||
</field>
|
||||
</record>
|
||||
<menuitem id="menu_hr_dashboard"
|
||||
parent="base.menu_reporting_dashboard"
|
||||
|
|
|
@ -51,7 +51,6 @@ actions(Sign in/Sign out) performed by them.
|
|||
],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '0063495605613',
|
||||
|
||||
#web
|
||||
"js": ["static/src/js/attendance.js"],
|
||||
|
|
|
@ -48,6 +48,5 @@ You can assign several contracts per employee.
|
|||
'test': ['test/test_hr_contract.yml'],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '0046298028637',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -62,7 +62,6 @@ Key Features
|
|||
],
|
||||
'auto_install': False,
|
||||
'installable': True,
|
||||
'certificate' : '00883207679172998429',
|
||||
'application': True,
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -266,9 +266,10 @@ class hr_evaluation(osv.osv):
|
|||
return True
|
||||
|
||||
def write(self, cr, uid, ids, vals, context=None):
|
||||
for evalutation in self.browse(cr, uid, ids, context=context):
|
||||
if evalutation.employee_id and evalutation.employee_id.parent_id and evalutation.employee_id.parent_id.user_id:
|
||||
vals['message_follower_ids'] = [(4, evalutation.employee_id.parent_id.user_id.partner_id.id)]
|
||||
if vals.get('employee_id'):
|
||||
employee_id = self.pool.get('hr.employee').browse(cr, uid, vals.get('employee_id'), context=context)
|
||||
if employee_id.parent_id and employee_id.parent_id.user_id:
|
||||
vals['message_follower_ids'] = [(4, employee_id.parent_id.user_id.partner_id.id)]
|
||||
if 'date' in vals:
|
||||
new_vals = {'date_deadline': vals.get('date')}
|
||||
obj_hr_eval_iterview = self.pool.get('hr.evaluation.interview')
|
||||
|
|
|
@ -67,7 +67,6 @@ This module also uses analytic accounting and is compatible with the invoice on
|
|||
],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '0062479841789',
|
||||
'application': True,
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -101,9 +101,10 @@ class hr_expense_expense(osv.osv):
|
|||
}
|
||||
|
||||
def write(self, cr, uid, ids, vals, context=None):
|
||||
for expense in self.browse(cr, uid, ids):
|
||||
if expense.employee_id and expense.employee_id.parent_id.user_id:
|
||||
vals['message_follower_ids'] = [(4, expense.employee_id.parent_id.user_id.partner_id.id)]
|
||||
if vals.get('employee_id'):
|
||||
employee_id = self.pool.get('hr.employee').browse(cr, uid, vals.get('employee_id'), context=context)
|
||||
if employee_id.parent_id and employee_id.parent_id.user_id:
|
||||
vals['message_follower_ids'] = [(4, employee_id.parent_id.user_id.partner_id.id)]
|
||||
return super(hr_expense_expense, self).write(cr, uid, ids, vals, context=context)
|
||||
|
||||
def onchange_currency_id(self, cr, uid, ids, currency_id=False, company_id=False, context=None):
|
||||
|
|
|
@ -195,8 +195,11 @@
|
|||
<field name="model">product.product</field>
|
||||
<field name="inherit_id" ref="product.product_normal_form_view"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="purchase_ok" position="after">
|
||||
<field name="hr_expense_ok" on_change="on_change_hr_expense_ok(hr_expense_ok)"/>
|
||||
<field name="purchase_ok" position="before">
|
||||
<div>
|
||||
<field name="hr_expense_ok" on_change="on_change_hr_expense_ok(hr_expense_ok)"/>
|
||||
<label for="hr_expense_ok"/>
|
||||
</div>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
@ -66,6 +66,5 @@ A synchronization with an internal agenda (Meetings of the CRM module) is also p
|
|||
'installable': True,
|
||||
'application': True,
|
||||
'auto_install': False,
|
||||
'certificate': '0086579209325',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -308,9 +308,10 @@ class hr_holidays(osv.osv):
|
|||
return self.write(cr, uid, ids, {'state':'confirm'})
|
||||
|
||||
def write(self, cr, uid, ids, vals, context=None):
|
||||
for holiday in self.browse(cr, uid, ids):
|
||||
if holiday.employee_id and holiday.employee_id.parent_id.user_id:
|
||||
vals['message_follower_ids'] = [(4, holiday.employee_id.parent_id.user_id.partner_id.id)]
|
||||
if vals.get('employee_id'):
|
||||
employee_id = self.pool.get('hr.employee').browse(cr, uid, vals.get('employee_id'), context=context)
|
||||
if employee_id.parent_id and employee_id.parent_id.user_id:
|
||||
vals['message_follower_ids'] = [(4, employee_id.parent_id.user_id.partner_id.id)]
|
||||
return super(hr_holidays, self).write(cr, uid, ids, vals, context=context)
|
||||
|
||||
|
||||
|
|
|
@ -67,7 +67,6 @@ Generic Payroll system.
|
|||
'demo': ['hr_payroll_demo.xml'],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate' : '001046261404562128861',
|
||||
'application': False,
|
||||
}
|
||||
|
||||
|
|
|
@ -44,7 +44,6 @@ Generic Payroll system Integrated with Accounting.
|
|||
'test': ['test/hr_payroll_account.yml'],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate' : '00923971112835220957',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -64,7 +64,6 @@ You can define the different phases of interviews and easily rate the applicant
|
|||
'test': ['test/recruitment_process.yml'],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '001073437025460275621',
|
||||
'application': True,
|
||||
}
|
||||
|
||||
|
|
|
@ -62,6 +62,5 @@ up a management by affair.
|
|||
],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '0071405533469',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -54,6 +54,5 @@ reports.""",
|
|||
],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '0056091842381',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -64,7 +64,6 @@ The validation can be configured in the company:
|
|||
'test':['test/test_hr_timesheet_sheet.yml'],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '0073297700829',
|
||||
'application': True,
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -252,9 +252,10 @@ class hr_timesheet_sheet(osv.osv):
|
|||
return super(hr_timesheet_sheet, self).create(cr, uid, vals, *args, **argv)
|
||||
|
||||
def write(self, cr, uid, ids, vals, *args, **argv):
|
||||
for timesheet in self.browse(cr, uid, ids):
|
||||
if timesheet.employee_id and timesheet.employee_id.parent_id.user_id:
|
||||
vals['message_follower_ids'] = [(4, timesheet.employee_id.parent_id.user_id.partner_id.id)]
|
||||
if vals.get('employee_id'):
|
||||
employee_id = self.pool.get('hr.employee').browse(cr, uid, vals.get('employee_id'), context=context)
|
||||
if employee_id.parent_id and employee_id.parent_id.user_id:
|
||||
vals['message_follower_ids'] = [(4, employee_id.parent_id.user_id.partner_id.id)]
|
||||
if 'employee_id' in vals:
|
||||
new_user_id = self.pool.get('hr.employee').browse(cr, uid, vals['employee_id']).user_id.id or False
|
||||
if not new_user_id:
|
||||
|
|
|
@ -43,7 +43,6 @@ document and Wiki based Hidden.
|
|||
'demo': ['knowledge_demo.xml'],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate' : '001278773815843749581',
|
||||
'images': ['images/1_config_knowledge.jpeg'],
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -76,7 +76,6 @@ Wizards provided by this module:
|
|||
],
|
||||
'demo': [],
|
||||
'installable': True,
|
||||
'certificate': '0031977724637',
|
||||
'images': ['images/1_config_chart_l10n_be.jpeg','images/2_l10n_be_chart.jpeg'],
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -105,7 +105,6 @@ If required, you can manually adjust the descriptions via the CODA configuration
|
|||
'auto_install': False,
|
||||
'installable': True,
|
||||
'license': 'AGPL-3',
|
||||
'certificate' : '001237207321716002029',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue