[MERGE]merge with trunk addons
bzr revid: sgo@tinyerp.com-20120709052738-jygw2fin71049khd
This commit is contained in:
commit
e9aa4b0b67
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-07-06 04:58+0000\n"
|
"X-Launchpad-Export-Date: 2012-07-07 05:13+0000\n"
|
||||||
"X-Generator: Launchpad (build 15558)\n"
|
"X-Generator: Launchpad (build 15558)\n"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
|
|
|
@ -3,3 +3,5 @@ access_account_analytic_analysis_summary_user_sale,account_analytic_analysis.sum
|
||||||
access_account_analytic_analysis_summary_month_sale,account_analytic_analysis.summary.month sale,model_account_analytic_analysis_summary_month,base.group_sale_salesman,1,0,0,0
|
access_account_analytic_analysis_summary_month_sale,account_analytic_analysis.summary.month sale,model_account_analytic_analysis_summary_month,base.group_sale_salesman,1,0,0,0
|
||||||
access_account_analytic_analysis_summary_user,account_analytic_analysis.summary.user,model_account_analytic_analysis_summary_user,account.group_account_manager,1,0,0,0
|
access_account_analytic_analysis_summary_user,account_analytic_analysis.summary.user,model_account_analytic_analysis_summary_user,account.group_account_manager,1,0,0,0
|
||||||
access_account_analytic_analysis_summary_month,account_analytic_analysis.summary.month,model_account_analytic_analysis_summary_month,account.group_account_manager,1,0,0,0
|
access_account_analytic_analysis_summary_month,account_analytic_analysis.summary.month,model_account_analytic_analysis_summary_month,account.group_account_manager,1,0,0,0
|
||||||
|
access_account_analytic_analysis_summary_user_project_user,account_analytic_analysis.summary.user project,model_account_analytic_analysis_summary_user,project.group_project_user,1,0,0,0
|
||||||
|
access_account_analytic_analysis_summary_month_project_user,account_analytic_analysis.summary.month project,model_account_analytic_analysis_summary_month,project.group_project_user,1,0,0,0
|
||||||
|
|
|
|
@ -4,3 +4,4 @@ access_account_budget_post,account.budget.post,model_account_budget_post,account
|
||||||
access_account_budget_post_accountant,account.budget.post accountant,model_account_budget_post,account.group_account_user,1,1,1,1
|
access_account_budget_post_accountant,account.budget.post accountant,model_account_budget_post,account.group_account_user,1,1,1,1
|
||||||
access_crossovered_budget_accountant,crossovered.budget accountant,model_crossovered_budget,account.group_account_user,1,1,1,1
|
access_crossovered_budget_accountant,crossovered.budget accountant,model_crossovered_budget,account.group_account_user,1,1,1,1
|
||||||
access_crossovered_budget_lines_accountant,crossovered.budget.lines accountant,model_crossovered_budget_lines,account.group_account_user,1,1,1,1
|
access_crossovered_budget_lines_accountant,crossovered.budget.lines accountant,model_crossovered_budget_lines,account.group_account_user,1,1,1,1
|
||||||
|
access_budget,crossovered.budget.lines manager,model_crossovered_budget_lines,base.group_user,1,0,0,0
|
||||||
|
|
|
|
@ -4,3 +4,4 @@ access_analytic_user_funct_manager,analytic user funct manager,model_analytic_us
|
||||||
access_analytic_user_funct_account_manager,analytic user funct account manager,model_analytic_user_funct_grid,account.group_account_manager,1,1,1,1
|
access_analytic_user_funct_account_manager,analytic user funct account manager,model_analytic_user_funct_grid,account.group_account_manager,1,1,1,1
|
||||||
access_analytic_user_funct_grid_hr_user,analytic user funct grid hr user,model_analytic_user_funct_grid,base.group_hr_user,1,0,0,0
|
access_analytic_user_funct_grid_hr_user,analytic user funct grid hr user,model_analytic_user_funct_grid,base.group_hr_user,1,0,0,0
|
||||||
access_analytic_user_funct_grid_hr_manager,analytic user funct grid hr manager,model_analytic_user_funct_grid,base.group_hr_manager,1,1,1,1
|
access_analytic_user_funct_grid_hr_manager,analytic user funct grid hr manager,model_analytic_user_funct_grid,base.group_hr_manager,1,1,1,1
|
||||||
|
access_analytic_user_funct_grid_all,analytic user funct grid,model_analytic_user_funct_grid,base.group_user,1,0,0,0
|
||||||
|
|
|
|
@ -8,14 +8,14 @@ msgstr ""
|
||||||
"Project-Id-Version: openobject-addons\n"
|
"Project-Id-Version: openobject-addons\n"
|
||||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||||
"PO-Revision-Date: 2012-06-08 02:21+0000\n"
|
"PO-Revision-Date: 2012-07-07 21:07+0000\n"
|
||||||
"Last-Translator: Akira Hiyama <Unknown>\n"
|
"Last-Translator: Akira Hiyama <Unknown>\n"
|
||||||
"Language-Team: Japanese <ja@li.org>\n"
|
"Language-Team: Japanese <ja@li.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-06-28 04:39+0000\n"
|
"X-Launchpad-Export-Date: 2012-07-08 04:41+0000\n"
|
||||||
"X-Generator: Launchpad (build 15505)\n"
|
"X-Generator: Launchpad (build 15558)\n"
|
||||||
|
|
||||||
#. module: base_action_rule
|
#. module: base_action_rule
|
||||||
#: help:base.action.rule,act_mail_to_user:0
|
#: help:base.action.rule,act_mail_to_user:0
|
||||||
|
@ -31,7 +31,7 @@ msgstr "パートナを思い出させる"
|
||||||
#. module: base_action_rule
|
#. module: base_action_rule
|
||||||
#: field:base.action.rule,trg_partner_categ_id:0
|
#: field:base.action.rule,trg_partner_categ_id:0
|
||||||
msgid "Partner Category"
|
msgid "Partner Category"
|
||||||
msgstr "取引先分類"
|
msgstr "パートナ分類"
|
||||||
|
|
||||||
#. module: base_action_rule
|
#. module: base_action_rule
|
||||||
#: field:base.action.rule,act_mail_to_watchers:0
|
#: field:base.action.rule,act_mail_to_watchers:0
|
||||||
|
@ -156,7 +156,7 @@ msgid ""
|
||||||
"14 days might trigger an automatic reminder email."
|
"14 days might trigger an automatic reminder email."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"多種の画面のために自動的なアクションを自動的にトリガー実行するために使います。例えば、特定のユーザにより作成されたリードには自動的に特定の営業チームを設定"
|
"多種の画面のために自動的なアクションを自動的にトリガー実行するために使います。例えば、特定のユーザにより作成されたリードには自動的に特定の営業チームを設定"
|
||||||
"したり、オポチュニティが保留中になって14日を経過したので、自動的に通知Eメールの送信をトリガーしたりできます。"
|
"したり、商談が保留中になって14日を経過したので、自動的に通知Eメールの送信をトリガーしたりできます。"
|
||||||
|
|
||||||
#. module: base_action_rule
|
#. module: base_action_rule
|
||||||
#: help:base.action.rule,act_mail_to_email:0
|
#: help:base.action.rule,act_mail_to_email:0
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# OpenERP, Open Source Management Solution
|
||||||
|
# Copyright (C) 2004-2010 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
|
||||||
|
import crm_meeting
|
||||||
|
import wizard
|
||||||
|
|
||||||
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
@ -22,7 +22,7 @@
|
||||||
{
|
{
|
||||||
"name": "Calendar Layer",
|
"name": "Calendar Layer",
|
||||||
"version": "1.0",
|
"version": "1.0",
|
||||||
"depends": ["base", "mail"],
|
"depends": ["base", "base_status", "mail"],
|
||||||
'description': """
|
'description': """
|
||||||
This is a full-featured calendar system.
|
This is a full-featured calendar system.
|
||||||
========================================
|
========================================
|
||||||
|
@ -46,7 +46,8 @@ If you need to manage your meetings, you should install the CRM module.
|
||||||
'security/calendar_security.xml',
|
'security/calendar_security.xml',
|
||||||
'security/ir.model.access.csv',
|
'security/ir.model.access.csv',
|
||||||
'wizard/base_calendar_invite_attendee_view.xml',
|
'wizard/base_calendar_invite_attendee_view.xml',
|
||||||
'base_calendar_view.xml'
|
'base_calendar_view.xml',
|
||||||
|
'crm_meeting_view.xml',
|
||||||
],
|
],
|
||||||
"test" : ['test/base_calendar_test.yml'],
|
"test" : ['test/base_calendar_test.yml'],
|
||||||
"installable": True,
|
"installable": True,
|
||||||
|
|
|
@ -0,0 +1,82 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# OpenERP, Open Source Management Solution
|
||||||
|
# Copyright (C) 2004-today OpenERP SA (<http://www.openerp.com>)
|
||||||
|
#
|
||||||
|
# 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 osv import osv, fields
|
||||||
|
import tools
|
||||||
|
from tools.translate import _
|
||||||
|
|
||||||
|
import base_calendar
|
||||||
|
from base_status.base_state import base_state
|
||||||
|
|
||||||
|
#
|
||||||
|
# crm.meeting is defined here so that it may be used by modules other than crm,
|
||||||
|
# without forcing the installation of crm.
|
||||||
|
#
|
||||||
|
|
||||||
|
class crm_meeting_type(osv.Model):
|
||||||
|
_name = 'crm.meeting.type'
|
||||||
|
_description = 'Meeting Type'
|
||||||
|
_columns = {
|
||||||
|
'name': fields.char('Name', size=64, required=True, translate=True),
|
||||||
|
}
|
||||||
|
|
||||||
|
class crm_meeting(base_state, osv.Model):
|
||||||
|
""" Model for CRM meetings """
|
||||||
|
_name = 'crm.meeting'
|
||||||
|
_description = "Meeting"
|
||||||
|
_order = "id desc"
|
||||||
|
_inherit = ["calendar.event", 'ir.needaction_mixin', "mail.thread"]
|
||||||
|
_columns = {
|
||||||
|
# base_state required fields
|
||||||
|
'create_date': fields.datetime('Creation Date', readonly=True),
|
||||||
|
'write_date': fields.datetime('Write Date', readonly=True),
|
||||||
|
'date_open': fields.datetime('Confirmed', readonly=True),
|
||||||
|
'date_closed': fields.datetime('Closed', readonly=True),
|
||||||
|
'partner_id': fields.many2one('res.partner', 'Partner', states={'done': [('readonly', True)]}),
|
||||||
|
'email_from': fields.char('Email', size=128, states={'done': [('readonly', True)]},
|
||||||
|
help="These people will receive email."),
|
||||||
|
'state': fields.selection(
|
||||||
|
[('draft', 'Unconfirmed'), ('open', 'Confirmed'), ('cancel', 'Cancelled'), ('done', 'Done')],
|
||||||
|
string='Status', size=16, readonly=True),
|
||||||
|
# Meeting fields
|
||||||
|
'name': fields.char('Summary', size=128, required=True, states={'done': [('readonly', True)]}),
|
||||||
|
'categ_id': fields.many2one('crm.meeting.type', 'Meeting Type'),
|
||||||
|
'attendee_ids': fields.many2many('calendar.attendee', 'meeting_attendee_rel',\
|
||||||
|
'event_id', 'attendee_id', 'Attendees', states={'done': [('readonly', True)]}),
|
||||||
|
}
|
||||||
|
_defaults = {
|
||||||
|
'state': 'draft',
|
||||||
|
}
|
||||||
|
|
||||||
|
# ----------------------------------------
|
||||||
|
# OpenChatter
|
||||||
|
# ----------------------------------------
|
||||||
|
|
||||||
|
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
|
||||||
|
return 'Meeting'
|
||||||
|
|
||||||
|
def case_open_send_note(self, cr, uid, ids, context=None):
|
||||||
|
return self.message_append_note(cr, uid, ids, body=_("Meeting has been <b>confirmed</b>."), context=context)
|
||||||
|
|
||||||
|
def case_close_send_note(self, cr, uid, ids, context=None):
|
||||||
|
return self.message_append_note(cr, uid, ids, body=_("Meeting has been <b>done</b>."), context=context)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,371 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<openerp>
|
||||||
|
<data>
|
||||||
|
|
||||||
|
<!-- Read/Unread actions -->
|
||||||
|
|
||||||
|
<record id="actions_server_crm_meeting_read" model="ir.actions.server">
|
||||||
|
<field name="name">Mark read</field>
|
||||||
|
<field name="condition">True</field>
|
||||||
|
<field name="type">ir.actions.server</field>
|
||||||
|
<field name="model_id" ref="model_crm_meeting"/>
|
||||||
|
<field name="state">code</field>
|
||||||
|
<field name="code">self.message_check_and_set_read(cr, uid, context.get('active_ids'), context=context)</field>
|
||||||
|
</record>
|
||||||
|
<record id="action_crm_meeting_read" model="ir.values">
|
||||||
|
<field name="name">action_crm_meeting_read</field>
|
||||||
|
<field name="action_id" ref="actions_server_crm_meeting_read"/>
|
||||||
|
<field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_meeting_read'))" />
|
||||||
|
<field name="key">action</field>
|
||||||
|
<field name="model_id" ref="model_crm_meeting" />
|
||||||
|
<field name="model">crm.meeting</field>
|
||||||
|
<field name="key2">client_action_multi</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="actions_server_crm_meeting_unread" model="ir.actions.server">
|
||||||
|
<field name="name">Mark unread</field>
|
||||||
|
<field name="condition">True</field>
|
||||||
|
<field name="type">ir.actions.server</field>
|
||||||
|
<field name="model_id" ref="model_crm_meeting"/>
|
||||||
|
<field name="state">code</field>
|
||||||
|
<field name="code">self.message_check_and_set_unread(cr, uid, context.get('active_ids'), context=context)</field>
|
||||||
|
</record>
|
||||||
|
<record id="action_crm_meeting_unread" model="ir.values">
|
||||||
|
<field name="name">action_crm_meeting_unread</field>
|
||||||
|
<field name="action_id" ref="actions_server_crm_meeting_unread"/>
|
||||||
|
<field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_meeting_unread'))" />
|
||||||
|
<field name="key">action</field>
|
||||||
|
<field name="model_id" ref="model_crm_meeting" />
|
||||||
|
<field name="model">crm.meeting</field>
|
||||||
|
<field name="key2">client_action_multi</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- CRM Meetings Types Form View -->
|
||||||
|
|
||||||
|
<record id="view_crm_meeting_type_tree" model="ir.ui.view">
|
||||||
|
<field name="name">Meeting Types Tree</field>
|
||||||
|
<field name="model">crm.meeting.type</field>
|
||||||
|
<field name="type">tree</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<tree string="Meeting Types" editable="bottom">
|
||||||
|
<field name="name"/>
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="action_crm_meeting_type" model="ir.actions.act_window">
|
||||||
|
<field name="name">Meeting Types</field>
|
||||||
|
<field name="res_model">crm.meeting.type</field>
|
||||||
|
<field name="view_type">form</field>
|
||||||
|
<field name="view_id" ref="view_crm_meeting_type_tree"/>
|
||||||
|
<field name="help">Create different meeting categories to better organize and classify your meetings.</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<menuitem id="menu_crm_meeting_type" parent="base.menu_calendar_configuration" sequence="1"
|
||||||
|
action="action_crm_meeting_type" groups="base.group_no_one"/>
|
||||||
|
|
||||||
|
<!-- CRM Meetings Form View -->
|
||||||
|
|
||||||
|
<record model="ir.ui.view" id="view_crm_meeting_form">
|
||||||
|
<field name="name">CRM - Meetings Form</field>
|
||||||
|
<field name="model">crm.meeting</field>
|
||||||
|
<field name="type">form</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<form string="Meetings" version="7.0">
|
||||||
|
<header>
|
||||||
|
<button name="case_open" string="Confirm" type="object" class="oe_highlight"
|
||||||
|
states="draft"/>
|
||||||
|
<button name="case_close" string="Done" type="object" class="oe_highlight"
|
||||||
|
states="open"/>
|
||||||
|
<button name="case_reset" string="Reset to Unconfirmed" type="object"
|
||||||
|
states="cancel,done"/>
|
||||||
|
<button name="case_cancel" string="Cancel" type="object"
|
||||||
|
states="draft,open"/>
|
||||||
|
<field name="state" widget="statusbar" statusbar_visible="draft,open,done"/>
|
||||||
|
</header>
|
||||||
|
<sheet>
|
||||||
|
<div class="oe_title">
|
||||||
|
<div class="oe_edit_only">
|
||||||
|
<label for="name" string="Title"/>
|
||||||
|
(<field name="allday" on_change="onchange_dates(date,False,False,allday)" class="oe_inline"/>
|
||||||
|
<label for="allday" string="All Day?"/>)
|
||||||
|
</div>
|
||||||
|
<h1>
|
||||||
|
<field name="name"/>
|
||||||
|
</h1>
|
||||||
|
<h2>
|
||||||
|
<label for="date" string="Starting at"/>
|
||||||
|
<field name="date" required="1" class="oe_inline"/>
|
||||||
|
<label for="location" string="in" class="oe_inline" attrs="{'invisible': [('location', '=', False)]}"/>
|
||||||
|
<field name="location" placeholder="Specify the location here" class="oe_inline"/>
|
||||||
|
</h2>
|
||||||
|
<h2>
|
||||||
|
<label for="duration" string="Duration" />
|
||||||
|
<field name="duration" widget="float_time"
|
||||||
|
on_change="onchange_dates(date,duration,False,allday)"
|
||||||
|
class="oe_inline"/> (
|
||||||
|
<field name="date_deadline"
|
||||||
|
string="End Date" required="1"
|
||||||
|
on_change="onchange_dates(date,False,date_deadline)"
|
||||||
|
class="oe_inline"/> )
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
<group>
|
||||||
|
<group>
|
||||||
|
<field name="user_id" />
|
||||||
|
<field name="organizer"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<field name="alarm_id" string="Reminder" widget="selection" />
|
||||||
|
<field name="class" string="Privacy"/>
|
||||||
|
<field name="show_as" string="Show Time as"/>
|
||||||
|
<field name="recurrency" string="Recurrence" attrs="{'readonly': ['|', ('recurrent_uid','!=',False), ('state','=','done')]}"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<field name="partner_id" string="Partner"
|
||||||
|
on_change="onchange_partner_id(partner_id)" />
|
||||||
|
<field name="email_from"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<field name="categ_id" widget="selection"/>
|
||||||
|
<field name="rrule" invisible="1" readonly="1"/>
|
||||||
|
<field name="recurrent_id" invisible="1"/>
|
||||||
|
<field name="recurrent_uid" invisible="1"/>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
<separator string="Description"/>
|
||||||
|
<field name="description"/>
|
||||||
|
<notebook>
|
||||||
|
<page string="Invitation Detail">
|
||||||
|
<button string="Invite People"
|
||||||
|
name="%(base_calendar.action_view_calendar_invite_attendee_wizard)d"
|
||||||
|
icon="terp-partner" type="action"
|
||||||
|
attrs="{'readonly': [('state', '=', 'done')]}"
|
||||||
|
context="{'model' : 'crm.meeting', 'attendee_field':'attendee_ids'}" colspan="2"/>
|
||||||
|
<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="email" string="Mail To"/>
|
||||||
|
<field name="role" />
|
||||||
|
<field name="state" />
|
||||||
|
<button name="do_tentative"
|
||||||
|
states="needs-action,declined,accepted"
|
||||||
|
string="Uncertain" type="object"
|
||||||
|
icon="terp-crm" />
|
||||||
|
<button name="do_accept" string="Accept"
|
||||||
|
states="needs-action,tentative,declined"
|
||||||
|
type="object" icon="gtk-apply" />
|
||||||
|
<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">
|
||||||
|
<header>
|
||||||
|
<button name="do_tentative" type="object"
|
||||||
|
states="needs-action,declined,accepted"
|
||||||
|
string="Uncertain" icon="terp-crm" />
|
||||||
|
<button name="do_accept" type="object"
|
||||||
|
states="needs-action,tentative,declined"
|
||||||
|
string="Accept" icon="gtk-apply" />
|
||||||
|
<button name="do_decline" type="object"
|
||||||
|
states="needs-action,tentative,accepted"
|
||||||
|
string="Decline" icon="gtk-cancel" />
|
||||||
|
<button name="%(base_calendar.action_view_calendar_invite_attendee_wizard)d" type="action"
|
||||||
|
states="needs-action,tentative,declined,accepted"
|
||||||
|
string="Delegate" icon="gtk-sort-descending"
|
||||||
|
context="{'model' : 'calendar.attendee', 'attendee_field' : 'child_ids'}" />
|
||||||
|
<field name="state" widget="statusbar" statusbar_visible="draft,open,done"/>
|
||||||
|
</header>
|
||||||
|
<group>
|
||||||
|
<group>
|
||||||
|
<field name="email" />
|
||||||
|
<field name="rsvp" />
|
||||||
|
<field name="cutype" />
|
||||||
|
<field name="role" />
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<field name="user_id"/>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
</page>
|
||||||
|
<page string="Recurrence Options"><!-- attrs="{'invisible': [('recurrency','=',False)], 'readonly': ['|', ('recurrent_uid','!=',False), ('state','=','done')]}">-->
|
||||||
|
<group col="4" colspan="4" name="rrule">
|
||||||
|
<group col="4" colspan="4">
|
||||||
|
<field name="rrule_type" string=" Recurrence Pattern" />
|
||||||
|
<field name="interval" />
|
||||||
|
<field name="end_type" />
|
||||||
|
<label string=" " colspan="2" />
|
||||||
|
<newline />
|
||||||
|
<field name="count" attrs="{'invisible' : [('end_type', '!=', 'count')] }"/>
|
||||||
|
<label string=" " colspan="2" />
|
||||||
|
<newline />
|
||||||
|
<field name="end_date" attrs="{'invisible' : [('end_type', '!=', 'end_date')], 'required': [('end_type', '=', 'end_date')]}"/>
|
||||||
|
<newline />
|
||||||
|
</group>
|
||||||
|
<group col="8" colspan="4" name="Select weekdays" attrs="{'invisible' :[('rrule_type','not in', ['weekly'])]}">
|
||||||
|
<separator string="Choose day where repeat the meeting" colspan="8"/>
|
||||||
|
<field name="mo" colspan="1" />
|
||||||
|
<field name="tu" colspan="1" />
|
||||||
|
<field name="we" colspan="1" />
|
||||||
|
<field name="th" colspan="1" />
|
||||||
|
<newline/>
|
||||||
|
<field name="fr" colspan="1" />
|
||||||
|
<field name="sa" colspan="1" />
|
||||||
|
<field name="su" colspan="1" />
|
||||||
|
<newline />
|
||||||
|
</group>
|
||||||
|
<group col="10" colspan="4"
|
||||||
|
attrs="{'invisible' : [('rrule_type','!=','monthly')]}">
|
||||||
|
<separator string="Choose day in the month where repeat the meeting" colspan="12"/>
|
||||||
|
<group col="2" colspan="1">
|
||||||
|
<field name="select1" />
|
||||||
|
</group>
|
||||||
|
<group col="2" colspan="1">
|
||||||
|
<field name="day"
|
||||||
|
attrs="{'required' : [('select1','=','date'), ('rrule_type','=','monthly')],
|
||||||
|
'invisible' : [('select1','=','day')]}" />
|
||||||
|
</group>
|
||||||
|
<group col="3" colspan="1">
|
||||||
|
<field name="byday" string="The"
|
||||||
|
attrs="{'required' : [('select1','=','day'), ('rrule_type','=','monthly')], 'invisible' : [('select1','=','date')]}" />
|
||||||
|
<field name="week_list" nolabel="1"
|
||||||
|
attrs="{'required' : [('select1','=','day'), ('rrule_type','=','monthly')], 'invisible' : [('select1','=','date')]}" />
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
</page>
|
||||||
|
</notebook>
|
||||||
|
</sheet>
|
||||||
|
<footer>
|
||||||
|
<field name="message_ids" widget="mail_thread"/>
|
||||||
|
</footer>
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- CRM Meeting Tree View -->
|
||||||
|
|
||||||
|
<record model="ir.ui.view" id="view_crm_meeting_tree">
|
||||||
|
<field name="name">CRM - Meetings Tree</field>
|
||||||
|
<field name="model">crm.meeting</field>
|
||||||
|
<field name="type">tree</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<tree string="Meetings" fonts="bold:needaction_pending==True"
|
||||||
|
colors="red:state=='open';black:state in ('draft', 'cancel','done','pending')">
|
||||||
|
<field name="name" string="Subject" />
|
||||||
|
<field name="user_id"/>
|
||||||
|
<field name="date"/>
|
||||||
|
<field name="state"/>
|
||||||
|
<field name="duration" />
|
||||||
|
<field name="partner_id" string="Partner" />
|
||||||
|
<field name="location" />
|
||||||
|
<field name="categ_id"/>
|
||||||
|
<field name="needaction_pending" invisible="1"/>
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- CRM Meeting Calendar -->
|
||||||
|
|
||||||
|
<record model="ir.ui.view" id="view_crm_meeting_calendar">
|
||||||
|
<field name="name">CRM - Meetings Calendar</field>
|
||||||
|
<field name="model">crm.meeting</field>
|
||||||
|
<field name="type">calendar</field>
|
||||||
|
<field name="priority" eval="2"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<calendar string="Meetings" date_start="date" color="user_id" date_stop="date_deadline" date_delay="duration">
|
||||||
|
<field name="name"/>
|
||||||
|
<field name="partner_id"/>
|
||||||
|
</calendar>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- CRM Meeting Gantt -->
|
||||||
|
|
||||||
|
<record id="view_crm_meeting_gantt" model="ir.ui.view">
|
||||||
|
<field name="name">CRM - Meetings Gantt</field>
|
||||||
|
<field name="model">crm.meeting</field>
|
||||||
|
<field name="type">gantt</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<gantt date_delay="duration" date_start="date" string="Meetings"/>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- CRM Meeting Search View -->
|
||||||
|
|
||||||
|
<record id="view_crm_meeting_search" model="ir.ui.view">
|
||||||
|
<field name="name">CRM - Meetings Search</field>
|
||||||
|
<field name="model">crm.meeting</field>
|
||||||
|
<field name="type">search</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<search string="Search Meetings">
|
||||||
|
<group>
|
||||||
|
<field name="name" string="Meeting / Partner"
|
||||||
|
filter_domain="['|',('name','ilike',self),('partner_id','ilike', self)]"/>
|
||||||
|
<filter string="Inbox" help="Unread messages" icon="terp-mail-message-new"
|
||||||
|
name="needaction_pending" domain="[('needaction_pending','=',True)]"/>
|
||||||
|
<separator orientation="vertical"/>
|
||||||
|
<filter string="My Meetings" help="My Meetings" icon="terp-personal"
|
||||||
|
domain="[('user_id','=',uid)]"/>
|
||||||
|
<separator orientation="vertical"/>
|
||||||
|
<field name="user_id"/>
|
||||||
|
<field name="partner_id"/>
|
||||||
|
</group>
|
||||||
|
</search>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- CRM Meetings action and menu -->
|
||||||
|
|
||||||
|
<record id="action_crm_meeting" model="ir.actions.act_window">
|
||||||
|
<field name="name">Meetings</field>
|
||||||
|
<field name="res_model">crm.meeting</field>
|
||||||
|
<field name="view_mode">calendar,tree,form,gantt</field>
|
||||||
|
<field name="view_id" ref="view_crm_meeting_calendar"/>
|
||||||
|
<field name="search_view_id" ref="view_crm_meeting_search"/>
|
||||||
|
<field name="context">{"calendar_default_user_id": uid}</field>
|
||||||
|
<field name="help">
|
||||||
|
The meeting calendar is shared between the sales teams and fully integrated with other applications
|
||||||
|
such as the employee holidays or the business opportunities.
|
||||||
|
You can also synchronize meetings with your mobile phone using the caldav interface.
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
<record model="ir.actions.act_window.view" id="action_view_crm_meeting_calendar">
|
||||||
|
<field name="act_window_id" ref="action_crm_meeting"/>
|
||||||
|
<field name="sequence" eval="1"/>
|
||||||
|
<field name="view_mode">calendar</field>
|
||||||
|
<field name="view_id" ref="view_crm_meeting_calendar"/>
|
||||||
|
</record>
|
||||||
|
<record model="ir.actions.act_window.view" id="action_view_crm_meeting_tree">
|
||||||
|
<field name="act_window_id" ref="action_crm_meeting"/>
|
||||||
|
<field name="sequence" eval="2"/>
|
||||||
|
<field name="view_mode">tree</field>
|
||||||
|
<field name="view_id" ref="view_crm_meeting_tree"/>
|
||||||
|
</record>
|
||||||
|
<record model="ir.actions.act_window.view" id="action_view_crm_meeting_form">
|
||||||
|
<field name="act_window_id" ref="action_crm_meeting"/>
|
||||||
|
<field name="sequence" eval="3"/>
|
||||||
|
<field name="view_mode">form</field>
|
||||||
|
<field name="view_id" ref="view_crm_meeting_form"/>
|
||||||
|
</record>
|
||||||
|
<record model="ir.actions.act_window.view" id="action_view_crm_meeting_gantt">
|
||||||
|
<field name="act_window_id" ref="action_crm_meeting"/>
|
||||||
|
<field name="sequence" eval="4"/>
|
||||||
|
<field name="view_mode">gantt</field>
|
||||||
|
<field name="view_id" ref="view_crm_meeting_gantt"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<menuitem id="menu_crm_meeting" parent="base.menu_sales" sequence="8"
|
||||||
|
name="Meetings" action="action_crm_meeting"/>
|
||||||
|
|
||||||
|
</data>
|
||||||
|
</openerp>
|
|
@ -5,3 +5,9 @@ access_res_alarm,res.alarm,model_res_alarm,base.group_user,1,1,1,1
|
||||||
access_calendar_todo,calendar.todo,model_calendar_todo,base.group_user,1,1,1,1
|
access_calendar_todo,calendar.todo,model_calendar_todo,base.group_user,1,1,1,1
|
||||||
access_calendar_event,calendar.event,model_calendar_event,base.group_user,1,1,1,1
|
access_calendar_event,calendar.event,model_calendar_event,base.group_user,1,1,1,1
|
||||||
access_calendar_attendee_survey_user,calendar.attendee,model_calendar_attendee,base.group_survey_user,1,0,0,0
|
access_calendar_attendee_survey_user,calendar.attendee,model_calendar_attendee,base.group_survey_user,1,0,0,0
|
||||||
|
access_crm_meeting_manager,crm.meeting.manager,model_crm_meeting,base.group_sale_manager,1,1,1,1
|
||||||
|
access_crm_meeting,crm.meeting,model_crm_meeting,base.group_sale_salesman,1,1,1,0
|
||||||
|
access_crm_meeting_all,crm.meeting_allll,model_crm_meeting,base.group_user,1,0,0,0
|
||||||
|
access_crm_meeting_partner_manager,crm.meeting.partner.manager,model_crm_meeting,base.group_partner_manager,1,1,1,1
|
||||||
|
access_crm_meeting_type_manager,crm.meeting.type.manager,model_crm_meeting_type,base.group_sale_manager,1,1,1,0
|
||||||
|
access_crm_meeting_type_manager,crm.meeting.type.manager,model_crm_meeting_type,base.group_system,1,1,1,1
|
||||||
|
|
|
|
@ -15,6 +15,8 @@
|
||||||
<group>
|
<group>
|
||||||
<group string="Company Settings">
|
<group string="Company Settings">
|
||||||
<field name="module_multi_company"/>
|
<field name="module_multi_company"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
<div>
|
<div>
|
||||||
You will also find several configuration options on your company data:
|
You will also find several configuration options on your company data:
|
||||||
address for the header and footer, overdue payments texts, etc.
|
address for the header and footer, overdue payments texts, etc.
|
||||||
|
|
|
@ -29,6 +29,7 @@ class base_state(object):
|
||||||
- ``date_closed`` (datetime field)
|
- ``date_closed`` (datetime field)
|
||||||
- ``user_id`` (many2one to res.users)
|
- ``user_id`` (many2one to res.users)
|
||||||
- ``partner_id`` (many2one to res.partner)
|
- ``partner_id`` (many2one to res.partner)
|
||||||
|
- ``email_from`` (char field)
|
||||||
- ``state`` (selection field)
|
- ``state`` (selection field)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
# Mongolian 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: 2011-01-11 11:14+0000\n"
|
||||||
|
"PO-Revision-Date: 2012-07-08 19:30+0000\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: Mongolian <mn@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-07-09 04:51+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 15558)\n"
|
||||||
|
|
||||||
|
#. module: base_tools
|
||||||
|
#: model:ir.module.module,shortdesc:base_tools.module_meta_information
|
||||||
|
msgid "Common base for tools modules"
|
||||||
|
msgstr "Багажийн модулиудын ерөнхий суурь"
|
||||||
|
|
||||||
|
#. module: base_tools
|
||||||
|
#: model:ir.module.module,description:base_tools.module_meta_information
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" "
|
|
@ -22,8 +22,8 @@
|
||||||
import crm
|
import crm
|
||||||
import crm_action_rule
|
import crm_action_rule
|
||||||
import crm_segmentation
|
import crm_segmentation
|
||||||
import crm_meeting
|
|
||||||
import crm_lead
|
import crm_lead
|
||||||
|
import crm_meeting
|
||||||
import crm_phonecall
|
import crm_phonecall
|
||||||
import report
|
import report
|
||||||
import wizard
|
import wizard
|
||||||
|
|
|
@ -69,10 +69,10 @@
|
||||||
<field name="name">Meetings</field>
|
<field name="name">Meetings</field>
|
||||||
<field name="res_model">crm.meeting</field>
|
<field name="res_model">crm.meeting</field>
|
||||||
<field name="view_mode">calendar,tree,form,gantt</field>
|
<field name="view_mode">calendar,tree,form,gantt</field>
|
||||||
<field name="view_id" ref="crm.crm_case_tree_view_meet"/>
|
<field name="view_id" ref="base_calendar.view_crm_meeting_tree"/>
|
||||||
<field name="context">{"calendar_default_user_id":uid}</field>
|
<field name="context">{"calendar_default_user_id":uid}</field>
|
||||||
<field name="domain">[('state','=','open'),('date','>',datetime.date.today().strftime("%Y-%m-%d %H:%M:%S"))]</field>
|
<field name="domain">[('state','=','open'),('date','>',datetime.date.today().strftime("%Y-%m-%d %H:%M:%S"))]</field>
|
||||||
<field name="search_view_id" ref="view_crm_case_meetings_filter"/>
|
<field name="search_view_id" ref="base_calendar.view_crm_meeting_search"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="ir.ui.view" id="board_crm_statistical_form">
|
<record model="ir.ui.view" id="board_crm_statistical_form">
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
<field name="name">Meetings</field>
|
<field name="name">Meetings</field>
|
||||||
<field name="resource">ir.ui.menu</field>
|
<field name="resource">ir.ui.menu</field>
|
||||||
<field name="user_id" ref="base.user_demo"/>
|
<field name="user_id" ref="base.user_demo"/>
|
||||||
<field name="res_id" ref="crm.menu_crm_case_categ_meet"/>
|
<field name="res_id" ref="base_calendar.menu_crm_meeting"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="crm.case.section" id="section_sales_marketing_department">
|
<record model="crm.case.section" id="section_sales_marketing_department">
|
||||||
|
|
|
@ -41,6 +41,7 @@ class crm_lead(base_stage, osv.osv):
|
||||||
_description = "Lead/Opportunity"
|
_description = "Lead/Opportunity"
|
||||||
_order = "priority,date_action,id desc"
|
_order = "priority,date_action,id desc"
|
||||||
_inherit = ['ir.needaction_mixin', 'mail.thread']
|
_inherit = ['ir.needaction_mixin', 'mail.thread']
|
||||||
|
_mail_compose_message = True
|
||||||
|
|
||||||
def _get_default_section_id(self, cr, uid, context=None):
|
def _get_default_section_id(self, cr, uid, context=None):
|
||||||
""" Gives default section by checking if present in the context """
|
""" Gives default section by checking if present in the context """
|
||||||
|
@ -763,43 +764,21 @@ class crm_lead(base_stage, osv.osv):
|
||||||
}
|
}
|
||||||
|
|
||||||
def action_makeMeeting(self, cr, uid, ids, context=None):
|
def action_makeMeeting(self, cr, uid, ids, context=None):
|
||||||
|
""" This opens Meeting's calendar view to schedule meeting on current Opportunity
|
||||||
|
@return : Dictionary value for created Meeting view
|
||||||
"""
|
"""
|
||||||
This opens Meeting's calendar view to schedule meeting on current Opportunity
|
opportunity = self.browse(cr, uid, ids[0], context)
|
||||||
@return : Dictionary value for created Meeting view
|
res = self.pool.get('ir.actions.act_window').for_xml_id(cr, uid, 'base_calendar', 'action_crm_meeting', context)
|
||||||
"""
|
res['context'] = {
|
||||||
if context is None:
|
'default_opportunity_id': opportunity.id,
|
||||||
context = {}
|
'default_partner_id': opportunity.partner_id and opportunity.partner_id.id or False,
|
||||||
value = {}
|
'default_user_id': uid,
|
||||||
data_obj = self.pool.get('ir.model.data')
|
'default_section_id': opportunity.section_id and opportunity.section_id.id or False,
|
||||||
for opp in self.browse(cr, uid, ids, context=context):
|
'default_email_from': opportunity.email_from,
|
||||||
# Get meeting views
|
'default_state': 'open',
|
||||||
tree_view = data_obj.get_object_reference(cr, uid, 'crm', 'crm_case_tree_view_meet')
|
'default_name': opportunity.name,
|
||||||
form_view = data_obj.get_object_reference(cr, uid, 'crm', 'crm_case_form_view_meet')
|
}
|
||||||
calander_view = data_obj.get_object_reference(cr, uid, 'crm', 'crm_case_calendar_view_meet')
|
return res
|
||||||
search_view = data_obj.get_object_reference(cr, uid, 'crm', 'view_crm_case_meetings_filter')
|
|
||||||
context.update({
|
|
||||||
'default_opportunity_id': opp.id,
|
|
||||||
'default_partner_id': opp.partner_id and opp.partner_id.id or False,
|
|
||||||
'default_user_id': uid,
|
|
||||||
'default_section_id': opp.section_id and opp.section_id.id or False,
|
|
||||||
'default_email_from': opp.email_from,
|
|
||||||
'default_state': 'open',
|
|
||||||
'default_name': opp.name
|
|
||||||
})
|
|
||||||
value = {
|
|
||||||
'name': _('Meetings'),
|
|
||||||
'context': context,
|
|
||||||
'view_type': 'form',
|
|
||||||
'view_mode': 'calendar,form,tree',
|
|
||||||
'res_model': 'crm.meeting',
|
|
||||||
'view_id': False,
|
|
||||||
'views': [(calander_view and calander_view[1] or False, 'calendar'), (form_view and form_view[1] or False, 'form'), (tree_view and tree_view[1] or False, 'tree')],
|
|
||||||
'type': 'ir.actions.act_window',
|
|
||||||
'search_view_id': search_view and search_view[1] or False,
|
|
||||||
'nodestroy': True
|
|
||||||
}
|
|
||||||
return value
|
|
||||||
|
|
||||||
|
|
||||||
def unlink(self, cr, uid, ids, context=None):
|
def unlink(self, cr, uid, ids, context=None):
|
||||||
for lead in self.browse(cr, uid, ids, context):
|
for lead in self.browse(cr, uid, ids, context):
|
||||||
|
|
|
@ -19,56 +19,23 @@
|
||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
from base_calendar import base_calendar
|
|
||||||
from base_status.base_state import base_state
|
|
||||||
from base_status.base_stage import base_stage
|
|
||||||
import logging
|
|
||||||
from osv import fields, osv
|
from osv import fields, osv
|
||||||
import tools
|
import tools
|
||||||
from tools.translate import _
|
from tools.translate import _
|
||||||
|
import logging
|
||||||
_logger = logging.getLogger(__name__)
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
class crm_lead(base_stage, osv.osv):
|
#
|
||||||
""" CRM Leads """
|
# crm.meeting is defined in module base_calendar
|
||||||
_name = 'crm.lead'
|
#
|
||||||
|
class crm_meeting(osv.Model):
|
||||||
class crm_meeting(base_state, osv.Model):
|
|
||||||
""" Model for CRM meetings """
|
""" Model for CRM meetings """
|
||||||
_name = 'crm.meeting'
|
_inherit = 'crm.meeting'
|
||||||
_description = "Meeting"
|
|
||||||
_order = "id desc"
|
|
||||||
_inherit = ["calendar.event", 'ir.needaction_mixin', "mail.thread"]
|
|
||||||
_columns = {
|
_columns = {
|
||||||
# base_state required fields
|
|
||||||
'partner_id': fields.many2one('res.partner', 'Partner', states={'done': [('readonly', True)]}),
|
|
||||||
'section_id': fields.many2one('crm.case.section', 'Sales Team', states={'done': [('readonly', True)]},
|
'section_id': fields.many2one('crm.case.section', 'Sales Team', states={'done': [('readonly', True)]},
|
||||||
select=True, groups='base.group_sale_salesman', help='Sales team to which Case belongs to.'),
|
select=True, groups='base.group_sale_salesman', help='Sales team to which Case belongs to.'),
|
||||||
'email_from': fields.char('Email', size=128, states={'done': [('readonly', True)]}, help="These people will receive email."),
|
|
||||||
'create_date': fields.datetime('Creation Date' , readonly=True),
|
|
||||||
'write_date': fields.datetime('Write Date' , readonly=True),
|
|
||||||
'date_action_last': fields.datetime('Last Action', readonly=1),
|
|
||||||
'date_action_next': fields.datetime('Next Action', readonly=1),
|
|
||||||
# Meeting fields
|
|
||||||
'name': fields.char('Summary', size=124, required=True, states={'done': [('readonly', True)]}),
|
|
||||||
'categ_id': fields.many2one('crm.case.categ', 'Meeting Type', \
|
|
||||||
domain="[('object_id.model', '=', 'crm.meeting')]", \
|
|
||||||
),
|
|
||||||
'phonecall_id': fields.many2one ('crm.phonecall', 'Phonecall'),
|
'phonecall_id': fields.many2one ('crm.phonecall', 'Phonecall'),
|
||||||
'opportunity_id': fields.many2one ('crm.lead', 'Opportunity', domain="[('type', '=', 'opportunity')]"),
|
'opportunity_id': fields.many2one ('crm.lead', 'Opportunity', domain="[('type', '=', 'opportunity')]"),
|
||||||
'attendee_ids': fields.many2many('calendar.attendee', 'meeting_attendee_rel',\
|
|
||||||
'event_id', 'attendee_id', 'Attendees', states={'done': [('readonly', True)]}),
|
|
||||||
'date_closed': fields.datetime('Closed', readonly=True),
|
|
||||||
'date_deadline': fields.datetime('Deadline', states={'done': [('readonly', True)]}),
|
|
||||||
'state': fields.selection([ ('draft', 'Unconfirmed'),
|
|
||||||
('open', 'Confirmed'),
|
|
||||||
('cancel', 'Cancelled'),
|
|
||||||
('done', 'Done')],
|
|
||||||
string='Status', size=16, readonly=True),
|
|
||||||
}
|
|
||||||
_defaults = {
|
|
||||||
'state': 'draft',
|
|
||||||
'active': 1,
|
|
||||||
'user_id': lambda self, cr, uid, ctx: uid,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
def create(self, cr, uid, vals, context=None):
|
def create(self, cr, uid, vals, context=None):
|
||||||
|
@ -76,52 +43,28 @@ class crm_meeting(base_state, osv.Model):
|
||||||
self.create_send_note(cr, uid, [obj_id], context=context)
|
self.create_send_note(cr, uid, [obj_id], context=context)
|
||||||
return obj_id
|
return obj_id
|
||||||
|
|
||||||
def case_open(self, cr, uid, ids, context=None):
|
|
||||||
""" Confirms meeting """
|
|
||||||
res = super(crm_meeting, self).case_open(cr, uid, ids, context)
|
|
||||||
for (id, name) in self.name_get(cr, uid, ids):
|
|
||||||
id=base_calendar.base_calendar_id2real_id(id)
|
|
||||||
return res
|
|
||||||
|
|
||||||
# ----------------------------------------
|
|
||||||
# OpenChatter
|
|
||||||
# ----------------------------------------
|
|
||||||
|
|
||||||
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
|
|
||||||
return 'Meeting'
|
|
||||||
|
|
||||||
def create_send_note(self, cr, uid, ids, context=None):
|
def create_send_note(self, cr, uid, ids, context=None):
|
||||||
if context is None:
|
if context is None:
|
||||||
context = {}
|
context = {}
|
||||||
# update context: if come from phonecall, default state values can make the message_append_note crash
|
# update context: if come from phonecall, default state values can make the message_append_note crash
|
||||||
context.pop('default_state', False)
|
context.pop('default_state', False)
|
||||||
for meeting in self.browse(cr, uid, ids, context=context):
|
for meeting in self.browse(cr, uid, ids, context=context):
|
||||||
# convert datetime field to a datetime, using server format, then
|
# in the message, transpose meeting.date to the timezone of the current user
|
||||||
# convert it to the user TZ and re-render it with %Z to add the timezone
|
meeting_date = fields.DT.datetime.strptime(meeting.date, tools.DEFAULT_SERVER_DATETIME_FORMAT)
|
||||||
meeting_datetime = fields.DT.datetime.strptime(meeting.date, tools.DEFAULT_SERVER_DATETIME_FORMAT)
|
meeting_date_tz = fields.datetime.context_timestamp(cr, uid, meeting_date, context=context).strftime(tools.DATETIME_FORMATS_MAP['%+'] + " (%Z)")
|
||||||
meeting_date_str = fields.datetime.context_timestamp(cr, uid, meeting_datetime, context=context).strftime(tools.DATETIME_FORMATS_MAP['%+'] + " (%Z)")
|
|
||||||
message = _("A meeting has been <b>scheduled</b> on <em>%s</em>.") % (meeting_date_str)
|
|
||||||
if meeting.opportunity_id: # meeting can be create from phonecalls or opportunities, therefore checking for the parent
|
if meeting.opportunity_id: # meeting can be create from phonecalls or opportunities, therefore checking for the parent
|
||||||
lead = meeting.opportunity_id
|
lead = meeting.opportunity_id
|
||||||
parent_message = _("Meeting linked to the opportunity <em>%s</em> has been <b>created</b> and <b>cscheduled</b> on <em>%s</em>.") % (lead.name, meeting.date)
|
message = _("Meeting linked to the opportunity <em>%s</em> has been <b>created</b> and <b>scheduled</b> on <em>%s</em>.") % (lead.name, meeting_date_tz)
|
||||||
lead.message_append_note(_('System Notification'), message)
|
lead.message_append_note(_('System Notification'), message)
|
||||||
elif meeting.phonecall_id:
|
elif meeting.phonecall_id:
|
||||||
phonecall = meeting.phonecall_id
|
phonecall = meeting.phonecall_id
|
||||||
parent_message = _("Meeting linked to the phonecall <em>%s</em> has been <b>created</b> and <b>cscheduled</b> on <em>%s</em>.") % (phonecall.name, meeting.date)
|
message = _("Meeting linked to the phonecall <em>%s</em> has been <b>created</b> and <b>scheduled</b> on <em>%s</em>.") % (phonecall.name, meeting_date_tz)
|
||||||
phonecall.message_append_note(body=message)
|
phonecall.message_append_note(body=message)
|
||||||
else:
|
else:
|
||||||
parent_message = message
|
message = _("A meeting has been <b>scheduled</b> on <em>%s</em>.") % (meeting_date_tz)
|
||||||
if parent_message:
|
meeting.message_append_note(body=message)
|
||||||
meeting.message_append_note(body=parent_message)
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def case_open_send_note(self, cr, uid, ids, context=None):
|
|
||||||
return self.message_append_note(cr, uid, ids, body=_("Meeting has been <b>confirmed</b>."), context=context)
|
|
||||||
|
|
||||||
def case_close_send_note(self, cr, uid, ids, context=None):
|
|
||||||
return self.message_append_note(cr, uid, ids, body=_("Meeting has been <b>done</b>."), context=context)
|
|
||||||
|
|
||||||
|
|
||||||
class calendar_attendee(osv.osv):
|
class calendar_attendee(osv.osv):
|
||||||
""" Calendar Attendee """
|
""" Calendar Attendee """
|
||||||
|
|
||||||
|
@ -155,8 +98,6 @@ class calendar_attendee(osv.osv):
|
||||||
relation="crm.case.categ", multi='categ_id'),
|
relation="crm.case.categ", multi='categ_id'),
|
||||||
}
|
}
|
||||||
|
|
||||||
calendar_attendee()
|
|
||||||
|
|
||||||
class res_users(osv.osv):
|
class res_users(osv.osv):
|
||||||
_name = 'res.users'
|
_name = 'res.users'
|
||||||
_inherit = 'res.users'
|
_inherit = 'res.users'
|
||||||
|
@ -177,7 +118,4 @@ class res_users(osv.osv):
|
||||||
_logger.debug('Skipped meetings shortcut for user "%s"', data.get('name','<new'))
|
_logger.debug('Skipped meetings shortcut for user "%s"', data.get('name','<new'))
|
||||||
return user_id
|
return user_id
|
||||||
|
|
||||||
res_users()
|
|
||||||
|
|
||||||
|
|
||||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||||
|
|
|
@ -4,22 +4,16 @@
|
||||||
|
|
||||||
<!-- CASE CATEGORY(categ_id) -->
|
<!-- CASE CATEGORY(categ_id) -->
|
||||||
|
|
||||||
<record model="crm.case.categ" id="categ_meet1">
|
<record model="crm.meeting.type" id="categ_meet1">
|
||||||
<field name="name">Customer Meeting</field>
|
<field name="name">Customer Meeting</field>
|
||||||
<field name="section_id" ref="section_sales_department"/>
|
|
||||||
<field name="object_id" search="[('model','=','crm.meeting')]" model="ir.model"/>
|
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="crm.case.categ" id="categ_meet2">
|
<record model="crm.meeting.type" id="categ_meet2">
|
||||||
<field name="name">Internal Meeting</field>
|
<field name="name">Internal Meeting</field>
|
||||||
<field name="section_id" ref="section_sales_department"/>
|
|
||||||
<field name="object_id" search="[('model','=','crm.meeting')]" model="ir.model"/>
|
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="crm.case.categ" id="categ_meet3">
|
<record model="crm.meeting.type" id="categ_meet3">
|
||||||
<field name="name">Phone Call</field>
|
<field name="name">Phone Call</field>
|
||||||
<field name="section_id" ref="section_sales_department"/>
|
|
||||||
<field name="object_id" search="[('model','=','crm.meeting')]" model="ir.model"/>
|
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="res.request.link" id="request_link_meeting">
|
<record model="res.request.link" id="request_link_meeting">
|
||||||
|
|
|
@ -1,102 +1,9 @@
|
||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<openerp>
|
<openerp>
|
||||||
<data>
|
<data>
|
||||||
<act_window
|
|
||||||
id="crm_case_categ_meet_create_partner"
|
|
||||||
name="Schedule a Meeting"
|
|
||||||
res_model="crm.meeting"
|
|
||||||
view_mode="calendar,tree,form,gantt"
|
|
||||||
context="{'default_partner_id': active_id, 'default_duration': 4.0}"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<record model="ir.actions.act_window.view" id="action_crm_tag_calendar_meet_partner">
|
|
||||||
<field name="sequence" eval="1"/>
|
|
||||||
<field name="view_mode">calendar</field>
|
|
||||||
<field name="view_id" ref="crm_case_calendar_view_meet"/>
|
|
||||||
<field name="act_window_id" ref="crm_case_categ_meet_create_partner"/>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_meet_partner">
|
|
||||||
<field name="sequence" eval="2"/>
|
|
||||||
<field name="view_mode">tree</field>
|
|
||||||
<field name="view_id" ref="crm_case_tree_view_meet"/>
|
|
||||||
<field name="act_window_id" ref="crm_case_categ_meet_create_partner"/>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="ir.actions.act_window.view" id="action_crm_tag_form_meet_partner">
|
|
||||||
<field name="sequence" eval="3"/>
|
|
||||||
<field name="view_mode">form</field>
|
|
||||||
<field name="view_id" ref="crm_case_form_view_meet"/>
|
|
||||||
<field name="act_window_id" ref="crm_case_categ_meet_create_partner"/>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="ir.actions.act_window.view" id="action_crm_tag_gantt_meet_partner">
|
|
||||||
<field name="sequence" eval="3"/>
|
|
||||||
<field name="view_mode">gantt</field>
|
|
||||||
<field name="view_id" ref="crm_case_gantt_view_meet"/>
|
|
||||||
<field name="act_window_id" ref="crm_case_categ_meet_create_partner"/>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="ir.actions.act_window" id="crm_case_categ_meet">
|
|
||||||
<field name="name">Meetings</field>
|
|
||||||
<field name="res_model">crm.meeting</field>
|
|
||||||
<field name="view_mode">calendar,tree,form,gantt</field>
|
|
||||||
<field name="view_id" ref="crm_case_calendar_view_meet"/>
|
|
||||||
<field name="context">{"calendar_default_user_id":uid}</field>
|
|
||||||
<field name="search_view_id" ref="view_crm_case_meetings_filter"/>
|
|
||||||
<field name="help">The meeting calendar is shared between the sales teams and fully integrated with other applications such as the employee holidays or the business opportunities. You can also synchronize meetings with your mobile phone using the caldav interface.
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="ir.actions.act_window.view" id="action_crm_tag_calendar_meet">
|
|
||||||
<field name="sequence" eval="1"/>
|
|
||||||
<field name="view_mode">calendar</field>
|
|
||||||
<field name="view_id" ref="crm_case_calendar_view_meet"/>
|
|
||||||
<field name="act_window_id" ref="crm_case_categ_meet"/>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_meet">
|
|
||||||
<field name="sequence" eval="2"/>
|
|
||||||
<field name="view_mode">tree</field>
|
|
||||||
<field name="view_id" ref="crm_case_tree_view_meet"/>
|
|
||||||
<field name="act_window_id" ref="crm_case_categ_meet"/>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="ir.actions.act_window.view" id="action_crm_tag_form__meet">
|
|
||||||
<field name="sequence" eval="3"/>
|
|
||||||
<field name="view_mode">form</field>
|
|
||||||
<field name="view_id" ref="crm_case_form_view_meet"/>
|
|
||||||
<field name="act_window_id" ref="crm_case_categ_meet"/>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="ir.actions.act_window.view" id="action_crm_tag_gantt_meet">
|
|
||||||
<field name="sequence" eval="1"/>
|
|
||||||
<field name="view_mode">gantt</field>
|
|
||||||
<field name="view_id" ref="crm_case_gantt_view_meet"/>
|
|
||||||
<field name="act_window_id" ref="crm_case_categ_meet"/>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<!-- ALL MEETINGS -->
|
|
||||||
|
|
||||||
<menuitem name="Import & Synchronize" id="base.menu_import_crm"
|
<menuitem name="Import & Synchronize" id="base.menu_import_crm"
|
||||||
parent="base.menu_base_partner"/>
|
parent="base.menu_base_partner"/>
|
||||||
|
|
||||||
<menuitem name="Meetings" id="menu_crm_case_categ_meet"
|
|
||||||
action="crm_case_categ_meet" parent="base.menu_sales"
|
|
||||||
sequence="8" />
|
|
||||||
|
|
||||||
<record id="action_view_attendee_form" model="ir.actions.act_window">
|
|
||||||
<field name="name">Meeting Invitations</field>
|
|
||||||
<field name="type">ir.actions.act_window</field>
|
|
||||||
<field name="res_model">calendar.attendee</field>
|
|
||||||
<field name="view_type">form</field>
|
|
||||||
<field name="view_mode">tree,form</field>
|
|
||||||
<field name="view_id" ref="base_calendar.base_calendar_attendee_tree_view" />
|
|
||||||
<field name="domain">[('ref','like','crm.meeting,')]</field>
|
|
||||||
<field name="context">{"search_default_toreview":1, "search_default_user_id":uid}</field>
|
|
||||||
<field name="help">With Meeting Invitations you can create and manage the meeting invitations sent/to be sent to your colleagues/partners. You can not only invite OpenERP users, but also external parties, such as a customer.</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
|
|
||||||
</data>
|
</data>
|
||||||
</openerp>
|
</openerp>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<field name="name">Meetings</field>
|
<field name="name">Meetings</field>
|
||||||
<field name="resource">ir.ui.menu</field>
|
<field name="resource">ir.ui.menu</field>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field name="res_id" ref="crm.menu_crm_case_categ_meet"/>
|
<field name="res_id" ref="base_calendar.menu_crm_meeting"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
</data>
|
</data>
|
||||||
|
|
|
@ -2,361 +2,48 @@
|
||||||
<openerp>
|
<openerp>
|
||||||
<data>
|
<data>
|
||||||
|
|
||||||
<!-- Read/Unread actions -->
|
|
||||||
<record id="actions_server_crm_meeting_unread" model="ir.actions.server">
|
|
||||||
<field name="name">Mark unread</field>
|
|
||||||
<field name="condition">True</field>
|
|
||||||
<field name="type">ir.actions.server</field>
|
|
||||||
<field name="model_id" ref="model_crm_meeting"/>
|
|
||||||
<field name="state">code</field>
|
|
||||||
<field name="code">self.message_check_and_set_unread(cr, uid, context.get('active_ids'), context=context)</field>
|
|
||||||
</record>
|
|
||||||
<record id="action_crm_meeting_unread" model="ir.values">
|
|
||||||
<field name="name">action_crm_meeting_unread</field>
|
|
||||||
<field name="action_id" ref="actions_server_crm_meeting_unread"/>
|
|
||||||
<field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_meeting_unread'))" />
|
|
||||||
<field name="key">action</field>
|
|
||||||
<field name="model_id" ref="model_crm_meeting" />
|
|
||||||
<field name="model">crm.meeting</field>
|
|
||||||
<field name="key2">client_action_multi</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="actions_server_crm_meeting_read" model="ir.actions.server">
|
|
||||||
<field name="name">Mark read</field>
|
|
||||||
<field name="condition">True</field>
|
|
||||||
<field name="type">ir.actions.server</field>
|
|
||||||
<field name="model_id" ref="model_crm_meeting"/>
|
|
||||||
<field name="state">code</field>
|
|
||||||
<field name="code">self.message_check_and_set_read(cr, uid, context.get('active_ids'), context=context)</field>
|
|
||||||
</record>
|
|
||||||
<record id="action_crm_meeting_read" model="ir.values">
|
|
||||||
<field name="name">action_crm_meeting_read</field>
|
|
||||||
<field name="action_id" ref="actions_server_crm_meeting_read"/>
|
|
||||||
<field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_meeting_read'))" />
|
|
||||||
<field name="key">action</field>
|
|
||||||
<field name="model_id" ref="model_crm_meeting" />
|
|
||||||
<field name="model">crm.meeting</field>
|
|
||||||
<field name="key2">client_action_multi</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<!-- CRM Meetings Categories Form View -->
|
|
||||||
|
|
||||||
<record id="crm_meeting_categ_action" model="ir.actions.act_window">
|
|
||||||
<field name="name">Meeting Categories</field>
|
|
||||||
<field name="res_model">crm.case.categ</field>
|
|
||||||
<field name="view_type">form</field>
|
|
||||||
<field name="view_id" ref="crm.crm_case_categ_tree-view"/>
|
|
||||||
<field name="domain">[('object_id.model', '=', 'crm.meeting')]</field>
|
|
||||||
<field name="context" eval="{'object_id': ref('model_crm_meeting')}"/>
|
|
||||||
<field name="help">Create different meeting categories to better organize and classify your meetings.</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<menuitem action="crm_meeting_categ_action"
|
|
||||||
groups="base.group_no_one"
|
|
||||||
id="menu_crm_case_meeting-act" parent="base.menu_calendar_configuration" sequence="1"/>
|
|
||||||
|
|
||||||
<!-- CRM Meetings Form View -->
|
<!-- CRM Meetings Form View -->
|
||||||
|
|
||||||
<record model="ir.ui.view" id="crm_case_form_view_meet">
|
<record model="ir.ui.view" id="view_crm_meeting_form">
|
||||||
<field name="name">CRM - Meetings Form</field>
|
<field name="name">CRM - Meetings Form</field>
|
||||||
<field name="model">crm.meeting</field>
|
<field name="model">crm.meeting</field>
|
||||||
<field name="type">form</field>
|
<field name="type">form</field>
|
||||||
|
<field name="inherit_id" ref="base_calendar.view_crm_meeting_form"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<form string="Meetings" version="7.0">
|
<field name="organizer" position="after">
|
||||||
<header>
|
<field name="section_id" widget="selection"/>
|
||||||
<button name="case_open" string="Confirm" type="object" class="oe_highlight"
|
</field>
|
||||||
states="draft"/>
|
|
||||||
<button name="case_close" string="Done" type="object" class="oe_highlight"
|
|
||||||
states="open"/>
|
|
||||||
<button name="case_reset" string="Reset to Unconfirmed" type="object"
|
|
||||||
states="cancel,done"/>
|
|
||||||
<button name="case_cancel" string="Cancel" type="object"
|
|
||||||
states="draft,open"/>
|
|
||||||
<field name="state" widget="statusbar" statusbar_visible="draft,open,done"/>
|
|
||||||
</header>
|
|
||||||
<sheet>
|
|
||||||
<div class="oe_title">
|
|
||||||
<div class="oe_edit_only">
|
|
||||||
<label for="name" string="Title"/>
|
|
||||||
(<field name="allday" on_change="onchange_dates(date,False,False,allday)" class="oe_inline"/>
|
|
||||||
<label for="allday" string="All Day?"/>)
|
|
||||||
</div>
|
|
||||||
<h1>
|
|
||||||
<field name="name"/>
|
|
||||||
</h1>
|
|
||||||
</div>
|
|
||||||
<group>
|
|
||||||
<h2>
|
|
||||||
<label for="date" string="Starting at"/>
|
|
||||||
<field name="date" required="1" class="oe_inline"/>
|
|
||||||
<label string="in" class="oe_inline" attrs="{'invisible': [('location', '=', False)]}"/> <field name="location" placeholder="Specify the location here" class="oe_inline"/>
|
|
||||||
</h2>
|
|
||||||
</group>
|
|
||||||
<group>
|
|
||||||
<h2>
|
|
||||||
<label for="duration" string="Duration" />
|
|
||||||
<field name="duration" widget="float_time"
|
|
||||||
on_change="onchange_dates(date,duration,False,allday)"
|
|
||||||
class="oe_inline"/> (
|
|
||||||
<field name="date_deadline"
|
|
||||||
string="End Date" required="1"
|
|
||||||
on_change="onchange_dates(date,False,date_deadline)"
|
|
||||||
class="oe_inline"/> )
|
|
||||||
</h2>
|
|
||||||
</group>
|
|
||||||
<group colspan="4" col="4">
|
|
||||||
<group colspan="2">
|
|
||||||
<field name="user_id" />
|
|
||||||
<field name="organizer"/>
|
|
||||||
<field name="section_id" widget="selection"/>
|
|
||||||
</group>
|
|
||||||
<group colspan="2">
|
|
||||||
<field name="alarm_id" string="Reminder" widget="selection" />
|
|
||||||
<field name="class" string="Privacy"/>
|
|
||||||
<field name="show_as" string="Show Time as"/>
|
|
||||||
<field name="recurrency" string="Recurrence" attrs="{'readonly': ['|', ('recurrent_uid','!=',False), ('state','=','done')]}"/>
|
|
||||||
</group>
|
|
||||||
<group colspan="2">
|
|
||||||
<field name="partner_id" string="Partner"
|
|
||||||
on_change="onchange_partner_id(partner_id)" />
|
|
||||||
<field name="email_from"/>
|
|
||||||
</group>
|
|
||||||
<group colspan="2">
|
|
||||||
<field name="categ_id" widget="selection"
|
|
||||||
string="Meeting Type"
|
|
||||||
domain="[('object_id.model', '=', 'crm.meeting')]" />
|
|
||||||
<field name="rrule" invisible="1" readonly="1"/>
|
|
||||||
<field name="recurrent_id" invisible="1"/>
|
|
||||||
<field name="recurrent_uid" invisible="1"/>
|
|
||||||
</group>
|
|
||||||
</group>
|
|
||||||
<separator string="Description" colspan="4" />
|
|
||||||
<field name="description" nolabel="1" colspan="4" />
|
|
||||||
<notebook>
|
|
||||||
<page string="Invitation Detail">
|
|
||||||
<button string="Invite People"
|
|
||||||
name="%(base_calendar.action_view_calendar_invite_attendee_wizard)d"
|
|
||||||
icon="terp-partner" type="action"
|
|
||||||
attrs="{'readonly': [('state', '=', 'done')]}"
|
|
||||||
context="{'model' : 'crm.meeting', 'attendee_field':'attendee_ids'}" colspan="2"/>
|
|
||||||
<field name="attendee_ids" colspan="4"
|
|
||||||
nolabel="1" 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="email" string="Mail To"/>
|
|
||||||
<field name="role" />
|
|
||||||
<field name="state" />
|
|
||||||
<button name="do_tentative"
|
|
||||||
states="needs-action,declined,accepted"
|
|
||||||
string="Uncertain" type="object"
|
|
||||||
icon="terp-crm" />
|
|
||||||
<button name="do_accept" string="Accept"
|
|
||||||
states="needs-action,tentative,declined"
|
|
||||||
type="object" icon="gtk-apply" />
|
|
||||||
<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">
|
|
||||||
<page string="Details">
|
|
||||||
<field name="email" />
|
|
||||||
<field name="rsvp" />
|
|
||||||
<field name="cutype" />
|
|
||||||
<field name="role" />
|
|
||||||
<separator colspan="4" string="" />
|
|
||||||
<group col="6" colspan="4">
|
|
||||||
<field name="state" />
|
|
||||||
<button name="do_tentative"
|
|
||||||
states="needs-action,declined,accepted"
|
|
||||||
string="Uncertain"
|
|
||||||
type="object"
|
|
||||||
icon="terp-crm" />
|
|
||||||
<button name="do_accept"
|
|
||||||
string="Accept"
|
|
||||||
states="needs-action,tentative,declined"
|
|
||||||
type="object"
|
|
||||||
icon="gtk-apply" />
|
|
||||||
<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'}" />
|
|
||||||
</group>
|
|
||||||
</page>
|
|
||||||
<page string="Other">
|
|
||||||
<field name="user_id"/>
|
|
||||||
<newline />
|
|
||||||
</page>
|
|
||||||
</notebook>
|
|
||||||
</form>
|
|
||||||
</field>
|
|
||||||
</page>
|
|
||||||
<page string="Recurrence Options"><!-- attrs="{'invisible': [('recurrency','=',False)], 'readonly': ['|', ('recurrent_uid','!=',False), ('state','=','done')]}">-->
|
|
||||||
<group col="4" colspan="4" name="rrule">
|
|
||||||
<group col="4" colspan="4">
|
|
||||||
<field name="rrule_type" string=" Recurrence Pattern" />
|
|
||||||
<field name="interval" />
|
|
||||||
<field name="end_type" />
|
|
||||||
<label string=" " colspan="2" />
|
|
||||||
<newline />
|
|
||||||
<field name="count" attrs="{'invisible' : [('end_type', '!=', 'count')] }"/>
|
|
||||||
<label string=" " colspan="2" />
|
|
||||||
<newline />
|
|
||||||
<field name="end_date" attrs="{'invisible' : [('end_type', '!=', 'end_date')], 'required': [('end_type', '=', 'end_date')]}"/>
|
|
||||||
<newline />
|
|
||||||
|
|
||||||
|
|
||||||
</group>
|
|
||||||
<group col="8" colspan="4" name="Select weekdays" attrs="{'invisible' :[('rrule_type','not in', ['weekly'])]}">
|
|
||||||
<separator string="Choose day where repeat the meeting" colspan="8"/>
|
|
||||||
<field name="mo" colspan="1" />
|
|
||||||
<field name="tu" colspan="1" />
|
|
||||||
<field name="we" colspan="1" />
|
|
||||||
<field name="th" colspan="1" />
|
|
||||||
<newline/>
|
|
||||||
<field name="fr" colspan="1" />
|
|
||||||
<field name="sa" colspan="1" />
|
|
||||||
<field name="su" colspan="1" />
|
|
||||||
<newline />
|
|
||||||
</group>
|
|
||||||
<group col="10" colspan="4"
|
|
||||||
attrs="{'invisible' : [('rrule_type','!=','monthly')]}">
|
|
||||||
<separator string="Choose day in the month where repeat the meeting" colspan="12"/>
|
|
||||||
<group col="2" colspan="1">
|
|
||||||
<field name="select1" />
|
|
||||||
</group>
|
|
||||||
<group col="2" colspan="1">
|
|
||||||
<field name="day"
|
|
||||||
attrs="{'required' : [('select1','=','date'), ('rrule_type','=','monthly')],
|
|
||||||
'invisible' : [('select1','=','day')]}" />
|
|
||||||
</group>
|
|
||||||
<group col="3" colspan="1">
|
|
||||||
<field name="byday" string="The"
|
|
||||||
attrs="{'required' : [('select1','=','day'), ('rrule_type','=','monthly')], 'invisible' : [('select1','=','date')]}" />
|
|
||||||
<field name="week_list" nolabel="1"
|
|
||||||
attrs="{'required' : [('select1','=','day'), ('rrule_type','=','monthly')], 'invisible' : [('select1','=','date')]}" />
|
|
||||||
</group>
|
|
||||||
</group>
|
|
||||||
</group>
|
|
||||||
|
|
||||||
</page>
|
|
||||||
</notebook>
|
|
||||||
</sheet>
|
|
||||||
<footer>
|
|
||||||
<field name="message_ids" widget="mail_thread"/>
|
|
||||||
</footer>
|
|
||||||
</form>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<!-- CRM Meeting Tree View -->
|
|
||||||
|
|
||||||
<record model="ir.ui.view" id="crm_case_tree_view_meet">
|
|
||||||
<field name="name">CRM - Meetings Tree</field>
|
|
||||||
<field name="model">crm.meeting</field>
|
|
||||||
<field name="type">tree</field>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<tree string="Meetings" fonts="bold:needaction_pending==True"
|
|
||||||
colors="red:state=='open';black:state in ('draft', 'cancel','done','pending')">
|
|
||||||
<field name="name" string="Subject" />
|
|
||||||
<field name="user_id"/>
|
|
||||||
<field name="date"/>
|
|
||||||
<field name="state"/>
|
|
||||||
<field name="duration" />
|
|
||||||
<field name="partner_id" string="Partner" />
|
|
||||||
<field name="location" />
|
|
||||||
<field name="categ_id"/>
|
|
||||||
<field name="needaction_pending" invisible="1"/>
|
|
||||||
</tree>
|
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<!-- CRM Meeting Calendar -->
|
<!-- CRM Meeting Calendar -->
|
||||||
|
|
||||||
<record model="ir.ui.view" id="crm_case_calendar_view_meet">
|
<record model="ir.ui.view" id="view_crm_meeting_calendar">
|
||||||
<field name="name">CRM - Meetings Calendar</field>
|
<field name="name">CRM - Meetings Calendar</field>
|
||||||
<field name="model">crm.meeting</field>
|
<field name="model">crm.meeting</field>
|
||||||
<field name="type">calendar</field>
|
<field name="type">calendar</field>
|
||||||
|
<field name="inherit_id" ref="base_calendar.view_crm_meeting_calendar"/>
|
||||||
<field name="priority" eval="2"/>
|
<field name="priority" eval="2"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<calendar string="Meetings" date_start="date" color="user_id" date_stop="date_deadline" date_delay="duration">
|
<field name="partner_id" position="after">
|
||||||
<field name="name"/>
|
|
||||||
<field name="partner_id"/>
|
|
||||||
<field name="section_id" widget="selection"/>
|
<field name="section_id" widget="selection"/>
|
||||||
</calendar>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<!-- CRM Meeting Gantt -->
|
|
||||||
|
|
||||||
<record id="crm_case_gantt_view_meet" model="ir.ui.view">
|
|
||||||
<field name="name">CRM - Meetings Gantt</field>
|
|
||||||
<field name="model">crm.meeting</field>
|
|
||||||
<field name="type">gantt</field>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<gantt date_delay="duration" date_start="date" string="Meetings">
|
|
||||||
</gantt>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<!-- CRM Meeting Search View -->
|
|
||||||
|
|
||||||
<record id="view_crm_case_meetings_filter" model="ir.ui.view">
|
|
||||||
<field name="name">CRM - Meetings Search</field>
|
|
||||||
<field name="model">crm.meeting</field>
|
|
||||||
<field name="type">search</field>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<search string="Search Meetings">
|
|
||||||
<group>
|
|
||||||
<filter icon="terp-mail-message-new"
|
|
||||||
string="Inbox" help="Unread messages"
|
|
||||||
name="needaction_pending"
|
|
||||||
domain="[('needaction_pending','=',True)]"/>
|
|
||||||
<separator orientation="vertical"/>
|
|
||||||
<field name="name" string="Meeting / Partner"
|
|
||||||
filter_domain="['|',('name','ilike',self),('partner_id','ilike', self)]"/>
|
|
||||||
<separator orientation="vertical"/>
|
|
||||||
<filter string="My Meetings"
|
|
||||||
icon="terp-personal"
|
|
||||||
domain="[('user_id','=',uid)]"
|
|
||||||
help="My Meetings" />
|
|
||||||
<separator orientation="vertical"/>
|
|
||||||
<field name="user_id"/>
|
|
||||||
<field name="partner_id"/>
|
|
||||||
</group>
|
|
||||||
</search>
|
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
<!-- Calendar Attendee Form View -->
|
<!-- Calendar Attendee Form View -->
|
||||||
|
|
||||||
<record id="attendee_form_view_inherit" model="ir.ui.view">
|
<record id="attendee_form_view_inherit" model="ir.ui.view">
|
||||||
<field name="name">calendar.attendee.form.inherit</field>
|
<field name="name">calendar.attendee.form.inherit</field>
|
||||||
<field name="model">calendar.attendee</field>
|
<field name="model">calendar.attendee</field>
|
||||||
<field name="type">form</field>
|
<field name="type">form</field>
|
||||||
<field name="inherit_id" ref="base_calendar.base_calendar_attendee_form_view"/>
|
<field name="inherit_id" ref="base_calendar.base_calendar_attendee_form_view"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<field name="ref" position="after">
|
<field name="ref" position="after">
|
||||||
<field name="categ_id" string="Event Type"/>
|
<field name="categ_id" string="Event Type"/>
|
||||||
</field>
|
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
</data>
|
</data>
|
||||||
</openerp>
|
</openerp>
|
||||||
|
|
|
@ -241,49 +241,20 @@ class crm_phonecall(base_state, osv.osv):
|
||||||
return opportunity_dict
|
return opportunity_dict
|
||||||
|
|
||||||
def action_make_meeting(self, cr, uid, ids, context=None):
|
def action_make_meeting(self, cr, uid, ids, context=None):
|
||||||
|
""" This opens Meeting's calendar view to schedule meeting on current Phonecall
|
||||||
|
@return : Dictionary value for created Meeting view
|
||||||
"""
|
"""
|
||||||
This opens Meeting's calendar view to schedule meeting on current Phonecall
|
phonecall = self.browse(cr, uid, ids[0], context)
|
||||||
@return : Dictionary value for created Meeting view
|
res = self.pool.get('ir.actions.act_window').for_xml_id(cr, uid, 'base_calendar', 'action_crm_meeting', context)
|
||||||
"""
|
res['context'] = {
|
||||||
value = {}
|
'default_phonecall_id': phonecall.id,
|
||||||
for phonecall in self.browse(cr, uid, ids, context=context):
|
'default_partner_id': phonecall.partner_id and phonecall.partner_id.id or False,
|
||||||
data_obj = self.pool.get('ir.model.data')
|
'default_user_id': uid,
|
||||||
|
'default_email_from': phonecall.email_from,
|
||||||
# Get meeting views
|
'default_state': 'open',
|
||||||
result = data_obj._get_id(cr, uid, 'crm', 'view_crm_case_meetings_filter')
|
'default_name': phonecall.name,
|
||||||
res = data_obj.read(cr, uid, result, ['res_id'])
|
}
|
||||||
id1 = data_obj._get_id(cr, uid, 'crm', 'crm_case_calendar_view_meet')
|
return res
|
||||||
id2 = data_obj._get_id(cr, uid, 'crm', 'crm_case_form_view_meet')
|
|
||||||
id3 = data_obj._get_id(cr, uid, 'crm', 'crm_case_tree_view_meet')
|
|
||||||
if id1:
|
|
||||||
id1 = data_obj.browse(cr, uid, id1, context=context).res_id
|
|
||||||
if id2:
|
|
||||||
id2 = data_obj.browse(cr, uid, id2, context=context).res_id
|
|
||||||
if id3:
|
|
||||||
id3 = data_obj.browse(cr, uid, id3, context=context).res_id
|
|
||||||
|
|
||||||
context = {
|
|
||||||
'default_phonecall_id': phonecall.id,
|
|
||||||
'default_partner_id': phonecall.partner_id and phonecall.partner_id.id or False,
|
|
||||||
'default_email': phonecall.email_from ,
|
|
||||||
'default_name': phonecall.name
|
|
||||||
}
|
|
||||||
|
|
||||||
value = {
|
|
||||||
'name': _('Meetings'),
|
|
||||||
'domain' : "[('user_id','=',%s)]" % (uid),
|
|
||||||
'context': context,
|
|
||||||
'view_type': 'form',
|
|
||||||
'view_mode': 'calendar,form,tree',
|
|
||||||
'res_model': 'crm.meeting',
|
|
||||||
'view_id': False,
|
|
||||||
'views': [(id1, 'calendar'), (id2, 'form'), (id3, 'tree')],
|
|
||||||
'type': 'ir.actions.act_window',
|
|
||||||
'search_view_id': res['res_id'],
|
|
||||||
'nodestroy': True
|
|
||||||
}
|
|
||||||
|
|
||||||
return value
|
|
||||||
|
|
||||||
# ----------------------------------------
|
# ----------------------------------------
|
||||||
# OpenChatter
|
# OpenChatter
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -127,7 +127,7 @@
|
||||||
<xpath expr="//div[@name='buttons']" position="inside">
|
<xpath expr="//div[@name='buttons']" position="inside">
|
||||||
<button type="action"
|
<button type="action"
|
||||||
string="Schedule a Meeting"
|
string="Schedule a Meeting"
|
||||||
name="%(crm.crm_case_categ_meet_create_partner)d"
|
name="%(base_calendar.action_crm_meeting)d"
|
||||||
context="{'search_default_partner_id': active_id, 'default_duration': 4.0}"/>
|
context="{'search_default_partner_id': active_id, 'default_duration': 4.0}"/>
|
||||||
<button type="action" string="Schedule a Call"
|
<button type="action" string="Schedule a Call"
|
||||||
name="%(crm.crm_case_categ_phone_create_partner)d"
|
name="%(crm.crm_case_categ_phone_create_partner)d"
|
||||||
|
|
|
@ -7,12 +7,9 @@ access_crm_case_channel_user,crm.case.channel user,model_crm_case_channel,base.g
|
||||||
access_crm_case_channel_manager,crm.case.channel manager,model_crm_case_channel,base.group_sale_manager,1,1,1,1
|
access_crm_case_channel_manager,crm.case.channel manager,model_crm_case_channel,base.group_sale_manager,1,1,1,1
|
||||||
access_crm_case_section,crm.case.section,model_crm_case_section,base.group_user,1,0,0,0
|
access_crm_case_section,crm.case.section,model_crm_case_section,base.group_user,1,0,0,0
|
||||||
access_crm_case_categ,crm.case.categ,model_crm_case_categ,base.group_sale_salesman,1,1,1,0
|
access_crm_case_categ,crm.case.categ,model_crm_case_categ,base.group_sale_salesman,1,1,1,0
|
||||||
access_crm_meeting_manager,crm.meeting.manager,model_crm_meeting,base.group_sale_manager,1,1,1,1
|
|
||||||
access_crm_lead_manager,crm.lead.manager,model_crm_lead,base.group_sale_manager,1,1,1,1
|
access_crm_lead_manager,crm.lead.manager,model_crm_lead,base.group_sale_manager,1,1,1,1
|
||||||
access_crm_phonecall_manager,crm.phonecall.manager,model_crm_phonecall,base.group_sale_manager,1,1,1,1
|
access_crm_phonecall_manager,crm.phonecall.manager,model_crm_phonecall,base.group_sale_manager,1,1,1,1
|
||||||
access_crm_case_categ,crm.case.categ,model_crm_case_categ,base.group_user,1,0,0,0
|
access_crm_case_categ,crm.case.categ,model_crm_case_categ,base.group_user,1,0,0,0
|
||||||
access_crm_meeting,crm.meeting,model_crm_meeting,base.group_sale_salesman,1,1,1,0
|
|
||||||
access_crm_meeting_all,crm.meeting_allll,model_crm_meeting,base.group_user,1,0,0,0
|
|
||||||
access_crm_lead,crm.lead,model_crm_lead,base.group_sale_salesman,1,1,1,0
|
access_crm_lead,crm.lead,model_crm_lead,base.group_sale_salesman,1,1,1,0
|
||||||
access_crm_lead_all,crm.lead.all,model_crm_lead,base.group_user,1,0,0,0
|
access_crm_lead_all,crm.lead.all,model_crm_lead,base.group_user,1,0,0,0
|
||||||
access_crm_phonecall,crm.phonecall,model_crm_phonecall,base.group_sale_salesman,1,1,1,0
|
access_crm_phonecall,crm.phonecall,model_crm_phonecall,base.group_sale_salesman,1,1,1,0
|
||||||
|
@ -40,4 +37,3 @@ access_crm_lead_report_user,crm.lead.report user,model_crm_lead_report,base.grou
|
||||||
access_res_partner_bank_type_crm_user,res.partner.bank.type.crm.user,base.model_res_partner_bank_type,base.group_sale_salesman,1,0,0,0
|
access_res_partner_bank_type_crm_user,res.partner.bank.type.crm.user,base.model_res_partner_bank_type,base.group_sale_salesman,1,0,0,0
|
||||||
access_crm_lead_partner_manager,crm.lead.partner.manager,model_crm_lead,base.group_partner_manager,1,0,0,0
|
access_crm_lead_partner_manager,crm.lead.partner.manager,model_crm_lead,base.group_partner_manager,1,0,0,0
|
||||||
access_crm_phonecall_partner_manager,crm.phonecall.partner.manager,model_crm_phonecall,base.group_partner_manager,1,1,1,1
|
access_crm_phonecall_partner_manager,crm.phonecall.partner.manager,model_crm_phonecall,base.group_partner_manager,1,1,1,1
|
||||||
access_crm_meeting_partner_manager,crm.meeting.partner.manager,model_crm_meeting,base.group_partner_manager,1,1,1,1
|
|
||||||
|
|
|
|
@ -2,10 +2,9 @@
|
||||||
I create a record rule.
|
I create a record rule.
|
||||||
-
|
-
|
||||||
!python {model: base.action.rule}: |
|
!python {model: base.action.rule}: |
|
||||||
modle_id = self.pool.get("ir.model").search(cr, uid, [('name', '=', 'crm.lead')])
|
model_ids = self.pool.get("ir.model").search(cr, uid, [('model', '=', 'crm.lead')])
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
new_id = self.create(cr, uid, {'name': 'New Rule', 'model_id': modle_id[0], 'trg_user_id': ref('base.user_root'), 'trg_partner_id': ref('base.res_partner_asus'), 'act_user_id': ref('base.user_demo') })
|
new_id = self.create(cr, uid, {'name': 'New Rule', 'model_id': model_ids[0], 'trg_user_id': ref('base.user_root'), 'trg_partner_id': ref('base.res_partner_asus'), 'act_user_id': ref('base.user_demo') })
|
||||||
lead_obj = self.pool.get("crm.lead")
|
|
||||||
self._check(cr, uid)
|
self._check(cr, uid)
|
||||||
-
|
-
|
||||||
I create new lead to check record rule.
|
I create new lead to check record rule.
|
||||||
|
|
|
@ -19,7 +19,6 @@
|
||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
import mail_compose_message
|
|
||||||
import crm_add_note
|
import crm_add_note
|
||||||
|
|
||||||
import crm_lead_to_partner
|
import crm_lead_to_partner
|
||||||
|
|
|
@ -41,58 +41,23 @@ class crm_phonecall2meeting(osv.osv_memory):
|
||||||
return {'type':'ir.actions.act_window_close'}
|
return {'type':'ir.actions.act_window_close'}
|
||||||
|
|
||||||
def action_make_meeting(self, cr, uid, ids, context=None):
|
def action_make_meeting(self, cr, uid, ids, context=None):
|
||||||
|
""" This opens Meeting's calendar view to schedule meeting on current Phonecall
|
||||||
|
@return : Dictionary value for created Meeting view
|
||||||
"""
|
"""
|
||||||
This opens Meeting's calendar view to schedule meeting on current Phonecall
|
res = {}
|
||||||
@param self: The object pointer
|
phonecall_id = context and context.get('active_id', False) or False
|
||||||
@param cr: the current row, from the database cursor,
|
if phonecall_id:
|
||||||
@param uid: the current user’s ID for security checks,
|
phonecall = self.pool.get('crm.phonecall').browse(cr, uid, phonecall_id, context)
|
||||||
@param ids: List of Phonecall to Meeting IDs
|
res = self.pool.get('ir.actions.act_window').for_xml_id(cr, uid, 'base_calendar', 'action_crm_meeting', context)
|
||||||
@param context: A standard dictionary for contextual values
|
res['context'] = {
|
||||||
|
'default_phonecall_id': phonecall.id,
|
||||||
@return : Dictionary value for created Meeting view
|
'default_partner_id': phonecall.partner_id and phonecall.partner_id.id or False,
|
||||||
"""
|
'default_user_id': uid,
|
||||||
value = {}
|
'default_email_from': phonecall.email_from,
|
||||||
record_id = context and context.get('active_id', False) or False
|
'default_state': 'open',
|
||||||
|
'default_name': phonecall.name,
|
||||||
if record_id:
|
}
|
||||||
phonecall_obj = self.pool.get('crm.phonecall')
|
return res
|
||||||
data_obj = self.pool.get('ir.model.data')
|
|
||||||
|
|
||||||
# Get meeting views
|
|
||||||
result = data_obj._get_id(cr, uid, 'crm', 'view_crm_case_meetings_filter')
|
|
||||||
res = data_obj.read(cr, uid, result, ['res_id'])
|
|
||||||
id1 = data_obj._get_id(cr, uid, 'crm', 'crm_case_calendar_view_meet')
|
|
||||||
id2 = data_obj._get_id(cr, uid, 'crm', 'crm_case_form_view_meet')
|
|
||||||
id3 = data_obj._get_id(cr, uid, 'crm', 'crm_case_tree_view_meet')
|
|
||||||
if id1:
|
|
||||||
id1 = data_obj.browse(cr, uid, id1, context=context).res_id
|
|
||||||
if id2:
|
|
||||||
id2 = data_obj.browse(cr, uid, id2, context=context).res_id
|
|
||||||
if id3:
|
|
||||||
id3 = data_obj.browse(cr, uid, id3, context=context).res_id
|
|
||||||
|
|
||||||
phonecall = phonecall_obj.browse(cr, uid, record_id, context=context)
|
|
||||||
context = {
|
|
||||||
'default_phonecall_id': phonecall.id,
|
|
||||||
'default_partner_id': phonecall.partner_id and phonecall.partner_id.id or False,
|
|
||||||
'default_email': phonecall.email_from ,
|
|
||||||
'default_name': phonecall.name
|
|
||||||
}
|
|
||||||
|
|
||||||
value = {
|
|
||||||
'name': _('Meetings'),
|
|
||||||
'domain' : "[('user_id','=',%s)]" % (uid),
|
|
||||||
'context': context,
|
|
||||||
'view_type': 'form',
|
|
||||||
'view_mode': 'calendar,form,tree',
|
|
||||||
'res_model': 'crm.meeting',
|
|
||||||
'view_id': False,
|
|
||||||
'views': [(id1, 'calendar'), (id2, 'form'), (id3, 'tree')],
|
|
||||||
'type': 'ir.actions.act_window',
|
|
||||||
'search_view_id': res['res_id']
|
|
||||||
}
|
|
||||||
|
|
||||||
return value
|
|
||||||
|
|
||||||
crm_phonecall2meeting()
|
crm_phonecall2meeting()
|
||||||
|
|
||||||
|
|
|
@ -1,63 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
##############################################################################
|
|
||||||
#
|
|
||||||
# OpenERP, Open Source Management Solution
|
|
||||||
# Copyright (C) 2010-Today OpenERP SA (<http://www.openerp.com>)
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU 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 General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>
|
|
||||||
#
|
|
||||||
##############################################################################
|
|
||||||
|
|
||||||
from osv import osv
|
|
||||||
from osv import fields
|
|
||||||
import tools
|
|
||||||
|
|
||||||
SUPPORTED_MODELS = ['crm.lead',]
|
|
||||||
|
|
||||||
class mail_compose_message(osv.osv_memory):
|
|
||||||
_inherit = 'mail.compose.message'
|
|
||||||
|
|
||||||
def get_value(self, cr, uid, model, res_id, context=None):
|
|
||||||
"""Returns a defaults-like dict with initial values for the composition
|
|
||||||
wizard when sending an email related to the document record identified
|
|
||||||
by ``model`` and ``res_id``.
|
|
||||||
|
|
||||||
Overrides the default implementation to provide more default field values
|
|
||||||
related to the corresponding CRM case.
|
|
||||||
|
|
||||||
:param str model: model name of the document record this mail is related to.
|
|
||||||
:param int res_id: id of the document record this mail is related to.
|
|
||||||
:param dict context: several context values will modify the behavior
|
|
||||||
of the wizard, cfr. the class description.
|
|
||||||
"""
|
|
||||||
result = super(mail_compose_message, self).get_value(cr, uid, model, res_id, context=context)
|
|
||||||
if model in SUPPORTED_MODELS and res_id:
|
|
||||||
model_obj = self.pool.get(model)
|
|
||||||
data = model_obj.browse(cr, uid , res_id, context)
|
|
||||||
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
|
|
||||||
result.update({
|
|
||||||
'subject' : data.name or False,
|
|
||||||
'email_to' : data.email_from or False,
|
|
||||||
'email_from' : user.user_email or tools.config.get('email_from', False),
|
|
||||||
'body_text' : '\n' + tools.ustr(user.signature or ''),
|
|
||||||
'email_cc' : tools.ustr(data.email_cc or ''),
|
|
||||||
'model': model,
|
|
||||||
'res_id': res_id,
|
|
||||||
'subtype': 'plain',
|
|
||||||
})
|
|
||||||
if hasattr(data, 'section_id'):
|
|
||||||
result.update({'reply_to' : data.section_id and data.section_id.reply_to or False})
|
|
||||||
return result
|
|
||||||
|
|
||||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
|
@ -29,7 +29,7 @@
|
||||||
<field name="calendar_id" ref="basic_calendar_meetings0"/>
|
<field name="calendar_id" ref="basic_calendar_meetings0"/>
|
||||||
<field name="domain">[('user_id','=', dctx_user_id)]</field>
|
<field name="domain">[('user_id','=', dctx_user_id)]</field>
|
||||||
<field name="name">vevent</field>
|
<field name="name">vevent</field>
|
||||||
<field name="object_id" ref="crm.model_crm_meeting"/>
|
<field name="object_id" ref="base_calendar.model_crm_meeting"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
|
||||||
|
@ -103,7 +103,7 @@
|
||||||
<record id="basic_calendar_fields_12" model="basic.calendar.fields">
|
<record id="basic_calendar_fields_12" model="basic.calendar.fields">
|
||||||
<field name="name" ref="caldav.field_event_organizer"/>
|
<field name="name" ref="caldav.field_event_organizer"/>
|
||||||
<field name="type_id" ref="basic_calendar_lines_vevent0"/>
|
<field name="type_id" ref="basic_calendar_lines_vevent0"/>
|
||||||
<field name="field_id" ref="crm.field_crm_meeting_organizer"/>
|
<field name="field_id" ref="base_calendar.field_crm_meeting_organizer"/>
|
||||||
<field name="fn">field</field>
|
<field name="fn">field</field>
|
||||||
</record>
|
</record>
|
||||||
<record id="basic_calendar_fields_13" model="basic.calendar.fields">
|
<record id="basic_calendar_fields_13" model="basic.calendar.fields">
|
||||||
|
@ -127,7 +127,7 @@
|
||||||
<record id="basic_calendar_fields_16" model="basic.calendar.fields">
|
<record id="basic_calendar_fields_16" model="basic.calendar.fields">
|
||||||
<field name="name" ref="caldav.field_event_attendee"/>
|
<field name="name" ref="caldav.field_event_attendee"/>
|
||||||
<field name="type_id" ref="basic_calendar_lines_vevent0"/>
|
<field name="type_id" ref="basic_calendar_lines_vevent0"/>
|
||||||
<field name="field_id" ref="crm.field_crm_meeting_attendee_ids"/>
|
<field name="field_id" ref="base_calendar.field_crm_meeting_attendee_ids"/>
|
||||||
<field name="fn">field</field>
|
<field name="fn">field</field>
|
||||||
</record>
|
</record>
|
||||||
<record id="basic_calendar_fields_17" model="basic.calendar.fields">
|
<record id="basic_calendar_fields_17" model="basic.calendar.fields">
|
||||||
|
@ -163,7 +163,7 @@
|
||||||
<record id="basic_calendar_fields_22" model="basic.calendar.fields">
|
<record id="basic_calendar_fields_22" model="basic.calendar.fields">
|
||||||
<field name="name" ref="caldav.field_event_status"/>
|
<field name="name" ref="caldav.field_event_status"/>
|
||||||
<field name="type_id" ref="basic_calendar_lines_vevent0"/>
|
<field name="type_id" ref="basic_calendar_lines_vevent0"/>
|
||||||
<field name="field_id" ref="crm.field_crm_meeting_state"/>
|
<field name="field_id" ref="base_calendar.field_crm_meeting_state"/>
|
||||||
<field name="mapping">{'tentative': 'draft', 'confirmed': 'open', 'cancelled': 'cancel'}</field>
|
<field name="mapping">{'tentative': 'draft', 'confirmed': 'open', 'cancelled': 'cancel'}</field>
|
||||||
<field name="fn">field</field>
|
<field name="fn">field</field>
|
||||||
</record>
|
</record>
|
||||||
|
@ -176,7 +176,7 @@
|
||||||
<record id="basic_calendar_fields_24" model="basic.calendar.fields">
|
<record id="basic_calendar_fields_24" model="basic.calendar.fields">
|
||||||
<field name="name" ref="caldav.field_event_dtstamp"/>
|
<field name="name" ref="caldav.field_event_dtstamp"/>
|
||||||
<field name="type_id" ref="basic_calendar_lines_vevent0"/>
|
<field name="type_id" ref="basic_calendar_lines_vevent0"/>
|
||||||
<field name="field_id" ref="crm.field_crm_meeting_write_date"/>
|
<field name="field_id" ref="base_calendar.field_crm_meeting_write_date"/>
|
||||||
<field name="fn">datetime_utc</field>
|
<field name="fn">datetime_utc</field>
|
||||||
</record>
|
</record>
|
||||||
<record id="basic_calendar_fields_25" model="basic.calendar.fields">
|
<record id="basic_calendar_fields_25" model="basic.calendar.fields">
|
||||||
|
|
|
@ -22,14 +22,11 @@
|
||||||
from base_status.base_stage import base_stage
|
from base_status.base_stage import base_stage
|
||||||
import binascii
|
import binascii
|
||||||
from crm import crm
|
from crm import crm
|
||||||
from crm import wizard
|
|
||||||
from osv import fields, osv
|
from osv import fields, osv
|
||||||
import time
|
import time
|
||||||
import tools
|
import tools
|
||||||
from tools.translate import _
|
from tools.translate import _
|
||||||
|
|
||||||
wizard.mail_compose_message.SUPPORTED_MODELS.append('crm.claim')
|
|
||||||
|
|
||||||
CRM_CLAIM_PENDING_STATES = (
|
CRM_CLAIM_PENDING_STATES = (
|
||||||
crm.AVAILABLE_STATES[2][0], # Cancelled
|
crm.AVAILABLE_STATES[2][0], # Cancelled
|
||||||
crm.AVAILABLE_STATES[3][0], # Done
|
crm.AVAILABLE_STATES[3][0], # Done
|
||||||
|
@ -75,6 +72,7 @@ class crm_claim(base_stage, osv.osv):
|
||||||
_description = "Claim"
|
_description = "Claim"
|
||||||
_order = "priority,date desc"
|
_order = "priority,date desc"
|
||||||
_inherit = ['mail.thread']
|
_inherit = ['mail.thread']
|
||||||
|
_mail_compose_message = True
|
||||||
_columns = {
|
_columns = {
|
||||||
'id': fields.integer('ID', readonly=True),
|
'id': fields.integer('ID', readonly=True),
|
||||||
'name': fields.char('Claim Subject', size=128, required=True),
|
'name': fields.char('Claim Subject', size=128, required=True),
|
||||||
|
|
|
@ -8,19 +8,19 @@ msgstr ""
|
||||||
"Project-Id-Version: openobject-addons\n"
|
"Project-Id-Version: openobject-addons\n"
|
||||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||||
"PO-Revision-Date: 2012-07-06 04:04+0000\n"
|
"PO-Revision-Date: 2012-07-07 21:23+0000\n"
|
||||||
"Last-Translator: Akira Hiyama <Unknown>\n"
|
"Last-Translator: Akira Hiyama <Unknown>\n"
|
||||||
"Language-Team: Japanese <ja@li.org>\n"
|
"Language-Team: Japanese <ja@li.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-07-06 04:58+0000\n"
|
"X-Launchpad-Export-Date: 2012-07-08 04:41+0000\n"
|
||||||
"X-Generator: Launchpad (build 15558)\n"
|
"X-Generator: Launchpad (build 15558)\n"
|
||||||
|
|
||||||
#. module: crm_claim
|
#. module: crm_claim
|
||||||
#: field:crm.claim.report,nbr:0
|
#: field:crm.claim.report,nbr:0
|
||||||
msgid "# of Cases"
|
msgid "# of Cases"
|
||||||
msgstr "件数"
|
msgstr "案件の数"
|
||||||
|
|
||||||
#. module: crm_claim
|
#. module: crm_claim
|
||||||
#: view:crm.claim:0
|
#: view:crm.claim:0
|
||||||
|
|
|
@ -21,12 +21,9 @@
|
||||||
|
|
||||||
from base_status.base_stage import base_stage
|
from base_status.base_stage import base_stage
|
||||||
from crm import crm
|
from crm import crm
|
||||||
from crm import wizard
|
|
||||||
from osv import fields, osv
|
from osv import fields, osv
|
||||||
from tools.translate import _
|
from tools.translate import _
|
||||||
|
|
||||||
wizard.mail_compose_message.SUPPORTED_MODELS.append('crm.fundraising')
|
|
||||||
|
|
||||||
class crm_fundraising(base_stage, osv.osv):
|
class crm_fundraising(base_stage, osv.osv):
|
||||||
""" Fund Raising Cases """
|
""" Fund Raising Cases """
|
||||||
|
|
||||||
|
@ -34,6 +31,7 @@ class crm_fundraising(base_stage, osv.osv):
|
||||||
_description = "Fund Raising"
|
_description = "Fund Raising"
|
||||||
_order = "id desc"
|
_order = "id desc"
|
||||||
_inherit = ['mail.thread']
|
_inherit = ['mail.thread']
|
||||||
|
_mail_compose_message = True
|
||||||
_columns = {
|
_columns = {
|
||||||
'id': fields.integer('ID', readonly=True),
|
'id': fields.integer('ID', readonly=True),
|
||||||
'name': fields.char('Name', size=128, required=True),
|
'name': fields.char('Name', size=128, required=True),
|
||||||
|
|
|
@ -8,13 +8,13 @@ msgstr ""
|
||||||
"Project-Id-Version: openobject-addons\n"
|
"Project-Id-Version: openobject-addons\n"
|
||||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||||
"PO-Revision-Date: 2012-07-06 04:05+0000\n"
|
"PO-Revision-Date: 2012-07-08 22:15+0000\n"
|
||||||
"Last-Translator: Akira Hiyama <Unknown>\n"
|
"Last-Translator: Akira Hiyama <Unknown>\n"
|
||||||
"Language-Team: Japanese <ja@li.org>\n"
|
"Language-Team: Japanese <ja@li.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-07-06 04:58+0000\n"
|
"X-Launchpad-Export-Date: 2012-07-09 04:51+0000\n"
|
||||||
"X-Generator: Launchpad (build 15558)\n"
|
"X-Generator: Launchpad (build 15558)\n"
|
||||||
|
|
||||||
#. module: crm_fundraising
|
#. module: crm_fundraising
|
||||||
|
@ -324,7 +324,7 @@ msgid ""
|
||||||
"Have a general overview of all fund raising activities by sorting them with "
|
"Have a general overview of all fund raising activities by sorting them with "
|
||||||
"specific criteria such as the estimated revenue, average success probability "
|
"specific criteria such as the estimated revenue, average success probability "
|
||||||
"and delay to close."
|
"and delay to close."
|
||||||
msgstr "予測金額、平均成功確率、締切の延期などの基準で分類して全ての資金調達の一覧を表示する。"
|
msgstr "予測売上、平均成功確率、締切の延期などの特定の基準で分類することで、全ての資金調達活動の一般的な概要を持ちます。"
|
||||||
|
|
||||||
#. module: crm_fundraising
|
#. module: crm_fundraising
|
||||||
#: selection:crm.fundraising.report,month:0
|
#: selection:crm.fundraising.report,month:0
|
||||||
|
|
|
@ -21,7 +21,6 @@
|
||||||
|
|
||||||
from base_status.base_state import base_state
|
from base_status.base_state import base_state
|
||||||
from crm import crm
|
from crm import crm
|
||||||
from crm import wizard
|
|
||||||
from osv import fields, osv
|
from osv import fields, osv
|
||||||
import tools
|
import tools
|
||||||
from tools.translate import _
|
from tools.translate import _
|
||||||
|
@ -32,8 +31,6 @@ CRM_HELPDESK_STATES = (
|
||||||
crm.AVAILABLE_STATES[4][0], # Pending
|
crm.AVAILABLE_STATES[4][0], # Pending
|
||||||
)
|
)
|
||||||
|
|
||||||
wizard.mail_compose_message.SUPPORTED_MODELS.append('crm.helpdesk')
|
|
||||||
|
|
||||||
class crm_helpdesk(base_state, osv.osv):
|
class crm_helpdesk(base_state, osv.osv):
|
||||||
""" Helpdesk Cases """
|
""" Helpdesk Cases """
|
||||||
|
|
||||||
|
@ -41,6 +38,7 @@ class crm_helpdesk(base_state, osv.osv):
|
||||||
_description = "Helpdesk"
|
_description = "Helpdesk"
|
||||||
_order = "id desc"
|
_order = "id desc"
|
||||||
_inherit = ['mail.thread']
|
_inherit = ['mail.thread']
|
||||||
|
_mail_compose_message = True
|
||||||
_columns = {
|
_columns = {
|
||||||
'id': fields.integer('ID', readonly=True),
|
'id': fields.integer('ID', readonly=True),
|
||||||
'name': fields.char('Name', size=128, required=True),
|
'name': fields.char('Name', size=128, required=True),
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-07-06 04:58+0000\n"
|
"X-Launchpad-Export-Date: 2012-07-07 05:13+0000\n"
|
||||||
"X-Generator: Launchpad (build 15558)\n"
|
"X-Generator: Launchpad (build 15558)\n"
|
||||||
|
|
||||||
#. module: crm_helpdesk
|
#. module: crm_helpdesk
|
||||||
|
|
|
@ -8,13 +8,13 @@ msgstr ""
|
||||||
"Project-Id-Version: openobject-addons\n"
|
"Project-Id-Version: openobject-addons\n"
|
||||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||||
"PO-Revision-Date: 2012-07-06 04:06+0000\n"
|
"PO-Revision-Date: 2012-07-08 19:19+0000\n"
|
||||||
"Last-Translator: Akira Hiyama <Unknown>\n"
|
"Last-Translator: Akira Hiyama <Unknown>\n"
|
||||||
"Language-Team: Japanese <ja@li.org>\n"
|
"Language-Team: Japanese <ja@li.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-07-06 04:58+0000\n"
|
"X-Launchpad-Export-Date: 2012-07-09 04:51+0000\n"
|
||||||
"X-Generator: Launchpad (build 15558)\n"
|
"X-Generator: Launchpad (build 15558)\n"
|
||||||
|
|
||||||
#. module: crm_partner_assign
|
#. module: crm_partner_assign
|
||||||
|
@ -329,7 +329,7 @@ msgstr "パートナの割当て"
|
||||||
#. module: crm_partner_assign
|
#. module: crm_partner_assign
|
||||||
#: help:crm.lead.report.assign,type:0
|
#: help:crm.lead.report.assign,type:0
|
||||||
msgid "Type is used to separate Leads and Opportunities"
|
msgid "Type is used to separate Leads and Opportunities"
|
||||||
msgstr "リードと機会を区別するためにタイプを使います。"
|
msgstr "リードと商談を区別するためにタイプを使います。"
|
||||||
|
|
||||||
#. module: crm_partner_assign
|
#. module: crm_partner_assign
|
||||||
#: selection:crm.lead.report.assign,month:0
|
#: selection:crm.lead.report.assign,month:0
|
||||||
|
@ -362,7 +362,7 @@ msgstr "ジオロケーション"
|
||||||
#: view:crm.lead.report.assign:0
|
#: view:crm.lead.report.assign:0
|
||||||
#: view:crm.partner.report.assign:0
|
#: view:crm.partner.report.assign:0
|
||||||
msgid "Opportunities Assignment Analysis"
|
msgid "Opportunities Assignment Analysis"
|
||||||
msgstr "好機割当て分析"
|
msgstr "商談割当分析"
|
||||||
|
|
||||||
#. module: crm_partner_assign
|
#. module: crm_partner_assign
|
||||||
#: view:res.partner:0
|
#: view:res.partner:0
|
||||||
|
@ -409,7 +409,7 @@ msgstr "重量"
|
||||||
#. module: crm_partner_assign
|
#. module: crm_partner_assign
|
||||||
#: view:crm.lead.report.assign:0
|
#: view:crm.lead.report.assign:0
|
||||||
msgid "Delay to open"
|
msgid "Delay to open"
|
||||||
msgstr "開始をを延期する"
|
msgstr "開始を延期する"
|
||||||
|
|
||||||
#. module: crm_partner_assign
|
#. module: crm_partner_assign
|
||||||
#: view:crm.lead.report.assign:0
|
#: view:crm.lead.report.assign:0
|
||||||
|
@ -455,7 +455,7 @@ msgstr "分類"
|
||||||
#. module: crm_partner_assign
|
#. module: crm_partner_assign
|
||||||
#: view:crm.lead.report.assign:0
|
#: view:crm.lead.report.assign:0
|
||||||
msgid "#Opportunities"
|
msgid "#Opportunities"
|
||||||
msgstr "好機の数"
|
msgstr "商談の数"
|
||||||
|
|
||||||
#. module: crm_partner_assign
|
#. module: crm_partner_assign
|
||||||
#: view:crm.lead:0
|
#: view:crm.lead:0
|
||||||
|
@ -492,7 +492,7 @@ msgstr "パートナに大量に転送"
|
||||||
#: view:res.partner:0
|
#: view:res.partner:0
|
||||||
#: field:res.partner,opportunity_assigned_ids:0
|
#: field:res.partner,opportunity_assigned_ids:0
|
||||||
msgid "Assigned Opportunities"
|
msgid "Assigned Opportunities"
|
||||||
msgstr "割り当てられた好機"
|
msgstr "割当済商談"
|
||||||
|
|
||||||
#. module: crm_partner_assign
|
#. module: crm_partner_assign
|
||||||
#: field:crm.lead,date_assign:0
|
#: field:crm.lead,date_assign:0
|
||||||
|
@ -527,12 +527,12 @@ msgstr "6月"
|
||||||
#. module: crm_partner_assign
|
#. module: crm_partner_assign
|
||||||
#: help:crm.lead.report.assign,delay_open:0
|
#: help:crm.lead.report.assign,delay_open:0
|
||||||
msgid "Number of Days to open the case"
|
msgid "Number of Days to open the case"
|
||||||
msgstr "当件を開くまでの日数"
|
msgstr "案件を開くまでの日数"
|
||||||
|
|
||||||
#. module: crm_partner_assign
|
#. module: crm_partner_assign
|
||||||
#: field:crm.lead.report.assign,delay_open:0
|
#: field:crm.lead.report.assign,delay_open:0
|
||||||
msgid "Delay to Open"
|
msgid "Delay to Open"
|
||||||
msgstr "開始をを延期する"
|
msgstr "開始を延期する"
|
||||||
|
|
||||||
#. module: crm_partner_assign
|
#. module: crm_partner_assign
|
||||||
#: selection:crm.lead.forward.to.partner,send_to:0
|
#: selection:crm.lead.forward.to.partner,send_to:0
|
||||||
|
@ -566,7 +566,7 @@ msgstr "ジオ緯度"
|
||||||
#. module: crm_partner_assign
|
#. module: crm_partner_assign
|
||||||
#: field:crm.partner.report.assign,opp:0
|
#: field:crm.partner.report.assign,opp:0
|
||||||
msgid "# of Opportunity"
|
msgid "# of Opportunity"
|
||||||
msgstr "好機の数"
|
msgstr "商談の数"
|
||||||
|
|
||||||
#. module: crm_partner_assign
|
#. module: crm_partner_assign
|
||||||
#: view:crm.lead.report.assign:0
|
#: view:crm.lead.report.assign:0
|
||||||
|
@ -738,7 +738,7 @@ msgstr "住所"
|
||||||
#. module: crm_partner_assign
|
#. module: crm_partner_assign
|
||||||
#: selection:crm.lead.report.assign,type:0
|
#: selection:crm.lead.report.assign,type:0
|
||||||
msgid "Opportunity"
|
msgid "Opportunity"
|
||||||
msgstr "好機"
|
msgstr "商談"
|
||||||
|
|
||||||
#. module: crm_partner_assign
|
#. module: crm_partner_assign
|
||||||
#: view:crm.lead.forward.to.partner:0
|
#: view:crm.lead.forward.to.partner:0
|
||||||
|
@ -776,7 +776,7 @@ msgstr "メッセージの見出し"
|
||||||
#. module: crm_partner_assign
|
#. module: crm_partner_assign
|
||||||
#: view:res.partner:0
|
#: view:res.partner:0
|
||||||
msgid "Convert to Opportunity"
|
msgid "Convert to Opportunity"
|
||||||
msgstr "好機に転換する"
|
msgstr "商談に変換"
|
||||||
|
|
||||||
#. module: crm_partner_assign
|
#. module: crm_partner_assign
|
||||||
#: field:crm.lead.forward.to.partner,email_bcc:0
|
#: field:crm.lead.forward.to.partner,email_bcc:0
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-07-06 04:58+0000\n"
|
"X-Launchpad-Export-Date: 2012-07-07 05:13+0000\n"
|
||||||
"X-Generator: Launchpad (build 15558)\n"
|
"X-Generator: Launchpad (build 15558)\n"
|
||||||
|
|
||||||
#. module: crm_profiling
|
#. module: crm_profiling
|
||||||
|
|
|
@ -8,14 +8,14 @@ msgstr ""
|
||||||
"Project-Id-Version: openobject-addons\n"
|
"Project-Id-Version: openobject-addons\n"
|
||||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||||
"PO-Revision-Date: 2012-04-20 03:47+0000\n"
|
"PO-Revision-Date: 2012-07-07 21:25+0000\n"
|
||||||
"Last-Translator: Tomomi Mengelberg <tomomi.mengelberg@aquasys.co.jp>\n"
|
"Last-Translator: Akira Hiyama <Unknown>\n"
|
||||||
"Language-Team: Japanese <ja@li.org>\n"
|
"Language-Team: Japanese <ja@li.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-04-21 05:01+0000\n"
|
"X-Launchpad-Export-Date: 2012-07-08 04:41+0000\n"
|
||||||
"X-Generator: Launchpad (build 15120)\n"
|
"X-Generator: Launchpad (build 15558)\n"
|
||||||
|
|
||||||
#. module: crm_todo
|
#. module: crm_todo
|
||||||
#: model:ir.model,name:crm_todo.model_project_task
|
#: model:ir.model,name:crm_todo.model_project_task
|
||||||
|
@ -82,7 +82,7 @@ msgstr "その他の情報"
|
||||||
#. module: crm_todo
|
#. module: crm_todo
|
||||||
#: field:project.task,lead_id:0
|
#: field:project.task,lead_id:0
|
||||||
msgid "Lead / Opportunity"
|
msgid "Lead / Opportunity"
|
||||||
msgstr "見込み客 / 商談"
|
msgstr "リード / 商談"
|
||||||
|
|
||||||
#. module: crm_todo
|
#. module: crm_todo
|
||||||
#: view:crm.lead:0
|
#: view:crm.lead:0
|
||||||
|
|
|
@ -238,51 +238,27 @@
|
||||||
<field name="model">ir.attachment</field>
|
<field name="model">ir.attachment</field>
|
||||||
<field name="priority" eval="1"/>
|
<field name="priority" eval="1"/>
|
||||||
<field name="type">form</field>
|
<field name="type">form</field>
|
||||||
|
<field name="inherit_id" ref="base.view_attachment_form"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<form string="Documents" version="7.0">
|
<field name="url" position="after">
|
||||||
<sheet>
|
<field name="user_id"/>
|
||||||
<group col="4">
|
</field>
|
||||||
<field name="name"/>
|
<field name="company_id" position="before">
|
||||||
<field name="parent_id"/>
|
<field name="parent_id"/>
|
||||||
<field name="user_id"/>
|
<field name="partner_id"/>
|
||||||
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
|
</field>
|
||||||
</group>
|
<xpath expr="//div[@name='creation_div']" position='after'>
|
||||||
<notebook colspan="4">
|
<label for="write_uid" string="Modification"/>
|
||||||
<page string="Attachment">
|
<div>
|
||||||
<group>
|
<field name="write_uid" readonly="1" class="oe_inline"/> on
|
||||||
<group string="Data">
|
<field name="write_date" readonly="1" class="oe_inline"/>
|
||||||
<field name="type"/>
|
</div>
|
||||||
<newline />
|
</xpath>
|
||||||
<field name="datas" filename="datas_fname" attrs="{'invisible':[('type','=','url')]}"/>
|
<xpath expr="//group[@name='description_group']" position='after'>
|
||||||
<field name="datas_fname" attrs="{'invisible':[('type','=','url')]}"/>
|
<group string="Indexed Content" colspan="4">
|
||||||
<field name="url" widget="url" attrs="{'invisible':[('type','=','binary')]}"/>
|
<field name="index_content" nolabel="1"/>
|
||||||
</group>
|
</group>
|
||||||
<group>
|
</xpath>
|
||||||
<field name="res_id" invisible="True"/>
|
|
||||||
<field name="res_model" readonly="True" invisible="True" attrs="{'invisible': [('res_id','=',0)]}"/>
|
|
||||||
<field name="res_name" readonly="1" attrs="{'invisible': [('res_id','=',0)]}"/>
|
|
||||||
<separator string="Related to" colspan="2"/>
|
|
||||||
<field name="partner_id"/>
|
|
||||||
</group>
|
|
||||||
<group groups="base.group_no_one" string="Created">
|
|
||||||
<field name="create_uid" readonly="1"/>
|
|
||||||
<field name="create_date" readonly="1"/>
|
|
||||||
</group>
|
|
||||||
<group groups="base.group_no_one" string="Modified">
|
|
||||||
<field name="write_uid" readonly="1"/>
|
|
||||||
<field name="write_date" readonly="1"/>
|
|
||||||
</group>
|
|
||||||
</group>
|
|
||||||
</page>
|
|
||||||
<page string="Indexed Content - experimental" groups="base.group_no_one">
|
|
||||||
<field name="index_content"/>
|
|
||||||
</page>
|
|
||||||
<page string="Notes">
|
|
||||||
<field name="description"/>
|
|
||||||
</page>
|
|
||||||
</notebook>
|
|
||||||
</sheet>
|
|
||||||
</form>
|
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,6 @@
|
||||||
or
|
or
|
||||||
<button string="Cancel" class="oe_link" special="cancel" />
|
<button string="Cancel" class="oe_link" special="cancel" />
|
||||||
</header>
|
</header>
|
||||||
<separator string="Browse Document"/>
|
|
||||||
<group>
|
<group>
|
||||||
<field name="url" widget="url"/>
|
<field name="url" widget="url"/>
|
||||||
</group>
|
</group>
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-07-06 04:58+0000\n"
|
"X-Launchpad-Export-Date: 2012-07-07 05:13+0000\n"
|
||||||
"X-Generator: Launchpad (build 15558)\n"
|
"X-Generator: Launchpad (build 15558)\n"
|
||||||
|
|
||||||
#. module: edi
|
#. module: edi
|
||||||
|
|
|
@ -24,21 +24,6 @@ button.oe_edi_action_print img {
|
||||||
height: 32px;
|
height: 32px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.openerp input.invalid {
|
|
||||||
background-color: #F66 !important;
|
|
||||||
border: 1px solid #D00 !important;
|
|
||||||
color: #000;
|
|
||||||
}
|
|
||||||
/* following browse-specific hacks need to be separate rules, as browsers are
|
|
||||||
required to ignore rules with unknown selectors. At time of writing, there
|
|
||||||
is no standard way to style HTML5 placeholders */
|
|
||||||
.openerp input.invalid:-moz-placeholder {
|
|
||||||
color: #FFF;
|
|
||||||
}
|
|
||||||
.openerp input.invalid::-webkit-input-placeholder {
|
|
||||||
color: #FFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** EDI Sidebar **/
|
/** EDI Sidebar **/
|
||||||
.oe_edi_sidebar_title {
|
.oe_edi_sidebar_title {
|
||||||
border-bottom: 1px solid #D2CFCF;
|
border-bottom: 1px solid #D2CFCF;
|
||||||
|
@ -81,9 +66,6 @@ button.oe_edi_action_print img {
|
||||||
|
|
||||||
|
|
||||||
/** Paperbox, from http://www.sitepoint.com/pure-css3-paper-curl/ **/
|
/** Paperbox, from http://www.sitepoint.com/pure-css3-paper-curl/ **/
|
||||||
body {
|
|
||||||
background: #EEE; /* contrast with paper */
|
|
||||||
}
|
|
||||||
.oe_edi_paperbox {
|
.oe_edi_paperbox {
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 700px;
|
width: 700px;
|
||||||
|
@ -225,4 +207,4 @@ table.oe_edi_data, .oe_edi_doc_title {
|
||||||
.python .nu0 {color: #ff4500;}
|
.python .nu0 {color: #ff4500;}
|
||||||
.python .me1 {color: black;}
|
.python .me1 {color: black;}
|
||||||
.python span.xtra { display:block; }
|
.python span.xtra { display:block; }
|
||||||
.python ol { padding: 0px; }
|
.python ol { padding: 0px; }
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||||
access_event_type,event.type,model_event_type,event.group_event_user,1,0,0,0
|
access_event_type,event.type,model_event_type,event.group_event_user,1,0,0,0
|
||||||
access_event_type_manager,event.type manager,model_event_type,event.group_event_manager,1,1,1,1
|
access_event_type_manager,event.type manager,model_event_type,event.group_event_manager,1,1,1,1
|
||||||
access_event_event,event.event,model_event_event,event.group_event_user,1,1,1,0
|
access_event_event,event.event,model_event_event,event.group_event_user,1,1,1,1
|
||||||
access_event_registration,event.registration,model_event_registration,event.group_event_user,1,1,1,0
|
access_event_registration,event.registration,model_event_registration,event.group_event_user,1,1,1,1
|
||||||
access_report_event_registration,report.event.registration,model_report_event_registration,event.group_event_user,1,1,1,1
|
access_report_event_registration,report.event.registration,model_report_event_registration,event.group_event_user,1,1,1,1
|
||||||
access_event_event_manager,event.event manager,model_event_event,event.group_event_manager,1,0,0,0
|
access_event_event_portal,event.event,model_event_event,,1,0,0,0
|
||||||
access_event_registration_manager,event.registration manager,model_event_registration,event.group_event_manager,1,0,0,0
|
access_event_registration_portal,event.registration,model_event_registration,,1,0,0,0
|
||||||
|
|
|
|
@ -370,10 +370,6 @@
|
||||||
<field name="department_id" class="oe_inline"/>
|
<field name="department_id" class="oe_inline"/>
|
||||||
<label class="oe_inline" string=")" attrs="{'invisible': [('department_id', '=', False)]}"/>
|
<label class="oe_inline" string=")" attrs="{'invisible': [('department_id', '=', False)]}"/>
|
||||||
</h1>
|
</h1>
|
||||||
<label for="employee_ids" class="oe_edit_only"/>
|
|
||||||
<h2>
|
|
||||||
<field name="employee_ids" widget="many2many_tags" mode="tree,form"/>
|
|
||||||
</h2>
|
|
||||||
<group>
|
<group>
|
||||||
<group>
|
<group>
|
||||||
<field name="no_of_employee"/>
|
<field name="no_of_employee"/>
|
||||||
|
|
|
@ -25,6 +25,8 @@
|
||||||
<field name="module_hr_expense"/>
|
<field name="module_hr_expense"/>
|
||||||
<field name="module_hr_evaluation"/>
|
<field name="module_hr_evaluation"/>
|
||||||
<field name="module_hr_holidays"/>
|
<field name="module_hr_holidays"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
<field name="module_hr_recruitment"/>
|
<field name="module_hr_recruitment"/>
|
||||||
<field name="module_hr_contract"/>
|
<field name="module_hr_contract"/>
|
||||||
<label for="module_hr_payroll"/>
|
<label for="module_hr_payroll"/>
|
||||||
|
@ -35,12 +37,14 @@
|
||||||
attrs="{'invisible': [('module_hr_payroll','=',False)]}"/>
|
attrs="{'invisible': [('module_hr_payroll','=',False)]}"/>
|
||||||
</div>
|
</div>
|
||||||
</group>
|
</group>
|
||||||
<group name="right_column">
|
</group>
|
||||||
<separator string="Timesheets" colspan="2"/>
|
<group>
|
||||||
|
<group string="Timesheets">
|
||||||
<field name="module_hr_attendance" on_change="onchange_hr_attendance(module_hr_attendance)"/>
|
<field name="module_hr_attendance" on_change="onchange_hr_attendance(module_hr_attendance)"/>
|
||||||
<field name="module_hr_timesheet" on_change="onchange_hr_timesheet(module_hr_timesheet)"/>
|
<field name="module_hr_timesheet" on_change="onchange_hr_timesheet(module_hr_timesheet)"/>
|
||||||
<field name="module_hr_timesheet_sheet"/>
|
<field name="module_hr_timesheet_sheet"/>
|
||||||
</group>
|
</group>
|
||||||
|
<group name="config_recruitment"/>
|
||||||
</group>
|
</group>
|
||||||
</form>
|
</form>
|
||||||
</field>
|
</field>
|
||||||
|
|
|
@ -71,19 +71,18 @@
|
||||||
<sheet>
|
<sheet>
|
||||||
<div class="oe_title">
|
<div class="oe_title">
|
||||||
<h1>
|
<h1>
|
||||||
<field name="name" class="oe_inline"/>, <field name="employee_id" class="oe_inline"/>
|
<field name="name" placeholder="Contract Reference"/>
|
||||||
</h1>
|
</h1>
|
||||||
<h2>
|
|
||||||
<div>
|
|
||||||
<label for="job_id" class="oe_edit_only"/>
|
|
||||||
<field name="job_id"/>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<label for="type_id" class="oe_edit_only"/>
|
|
||||||
<field name="type_id"/>
|
|
||||||
</div>
|
|
||||||
</h2>
|
|
||||||
</div>
|
</div>
|
||||||
|
<group>
|
||||||
|
<group>
|
||||||
|
<field name="employee_id"/>
|
||||||
|
<field name="job_id"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<field name="type_id"/>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
<notebook>
|
<notebook>
|
||||||
<page string="Information" name="information">
|
<page string="Information" name="information">
|
||||||
<group>
|
<group>
|
||||||
|
|
|
@ -50,7 +50,7 @@ Note that:
|
||||||
for example, you maybe will do it for the user 'admin'.
|
for example, you maybe will do it for the user 'admin'.
|
||||||
""",
|
""",
|
||||||
'images': ['images/hr_allocation_requests.jpeg', 'images/hr_leave_requests.jpeg', 'images/leaves_analysis.jpeg'],
|
'images': ['images/hr_allocation_requests.jpeg', 'images/hr_leave_requests.jpeg', 'images/leaves_analysis.jpeg'],
|
||||||
'depends': ['hr', 'crm', 'process', 'resource'],
|
'depends': ['hr', 'base_calendar', 'process', 'resource'],
|
||||||
'init_xml': [],
|
'init_xml': [],
|
||||||
'update_xml': [
|
'update_xml': [
|
||||||
'security/ir.model.access.csv',
|
'security/ir.model.access.csv',
|
||||||
|
|
|
@ -74,7 +74,8 @@ class hr_holidays_status(osv.osv):
|
||||||
|
|
||||||
_columns = {
|
_columns = {
|
||||||
'name': fields.char('Leave Type', size=64, required=True, translate=True),
|
'name': fields.char('Leave Type', size=64, required=True, translate=True),
|
||||||
'categ_id': fields.many2one('crm.case.categ', 'Meeting', domain="[('object_id.model', '=', 'crm.meeting')]", help='If you set a meeting type, OpenERP will create a meeting in the calendar once a leave is validated.'),
|
'categ_id': fields.many2one('crm.meeting.type', 'Meeting Type',
|
||||||
|
help='Once a leave is validated, OpenERP will create a corresponding meeting of this type in the calendar.'),
|
||||||
'color_name': fields.selection([('red', 'Red'),('blue','Blue'), ('lightgreen', 'Light Green'), ('lightblue','Light Blue'), ('lightyellow', 'Light Yellow'), ('magenta', 'Magenta'),('lightcyan', 'Light Cyan'),('black', 'Black'),('lightpink', 'Light Pink'),('brown', 'Brown'),('violet', 'Violet'),('lightcoral', 'Light Coral'),('lightsalmon', 'Light Salmon'),('lavender', 'Lavender'),('wheat', 'Wheat'),('ivory', 'Ivory')],'Color in Report', required=True, help='This color will be used in the leaves summary located in Reporting\Leaves by Departement'),
|
'color_name': fields.selection([('red', 'Red'),('blue','Blue'), ('lightgreen', 'Light Green'), ('lightblue','Light Blue'), ('lightyellow', 'Light Yellow'), ('magenta', 'Magenta'),('lightcyan', 'Light Cyan'),('black', 'Black'),('lightpink', 'Light Pink'),('brown', 'Brown'),('violet', 'Violet'),('lightcoral', 'Light Coral'),('lightsalmon', 'Light Salmon'),('lavender', 'Lavender'),('wheat', 'Wheat'),('ivory', 'Ivory')],'Color in Report', required=True, help='This color will be used in the leaves summary located in Reporting\Leaves by Departement'),
|
||||||
'limit': fields.boolean('Allow to Override Limit', help='If you select this checkbox, the system allows the employees to take more leaves than the available ones for this type.'),
|
'limit': fields.boolean('Allow to Override Limit', help='If you select this checkbox, the system allows the employees to take more leaves than the available ones for this type.'),
|
||||||
'active': fields.boolean('Active', help="If the active field is set to false, it will allow you to hide the leave type without removing it."),
|
'active': fields.boolean('Active', help="If the active field is set to false, it will allow you to hide the leave type without removing it."),
|
||||||
|
@ -128,7 +129,7 @@ class hr_holidays(osv.osv):
|
||||||
'notes': fields.text('Reasons',readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
|
'notes': fields.text('Reasons',readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
|
||||||
'number_of_days_temp': fields.float('Number of Days', readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
|
'number_of_days_temp': fields.float('Number of Days', readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
|
||||||
'number_of_days': fields.function(_compute_number_of_days, string='Number of Days', store=True),
|
'number_of_days': fields.function(_compute_number_of_days, string='Number of Days', store=True),
|
||||||
'case_id': fields.many2one('crm.meeting', 'Meeting'),
|
'meeting_id': fields.many2one('crm.meeting', 'Meeting'),
|
||||||
'type': fields.selection([('remove','Leave Request'),('add','Allocation Request')], 'Request Type', required=True, readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}, help="Choose 'Leave Request' if someone wants to take an off-day. \nChoose 'Allocation Request' if you want to increase the number of leaves available for someone", select=True),
|
'type': fields.selection([('remove','Leave Request'),('add','Allocation Request')], 'Request Type', required=True, readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}, help="Choose 'Leave Request' if someone wants to take an off-day. \nChoose 'Allocation Request' if you want to increase the number of leaves available for someone", select=True),
|
||||||
'parent_id': fields.many2one('hr.holidays', 'Parent'),
|
'parent_id': fields.many2one('hr.holidays', 'Parent'),
|
||||||
'linked_request_ids': fields.one2many('hr.holidays', 'parent_id', 'Linked Requests',),
|
'linked_request_ids': fields.one2many('hr.holidays', 'parent_id', 'Linked Requests',),
|
||||||
|
@ -217,19 +218,12 @@ class hr_holidays(osv.osv):
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def onchange_sec_id(self, cr, uid, ids, status, context=None):
|
def onchange_status_id(self, cr, uid, ids, status_id, context=None):
|
||||||
warning = {}
|
|
||||||
double_validation = False
|
double_validation = False
|
||||||
obj_holiday_status = self.pool.get('hr.holidays.status')
|
if status_id:
|
||||||
if status:
|
holiday_status = self.pool.get('hr.holidays.status').browse(cr, uid, status_id, context=context)
|
||||||
holiday_status = obj_holiday_status.browse(cr, uid, status, context=context)
|
|
||||||
double_validation = holiday_status.double_validation
|
double_validation = holiday_status.double_validation
|
||||||
if holiday_status.categ_id and holiday_status.categ_id.section_id and not holiday_status.categ_id.section_id.allow_unlink:
|
return {'value': {'double_validation': double_validation}}
|
||||||
warning = {
|
|
||||||
'title': "Warning for ",
|
|
||||||
'message': "You won\'t be able to cancel this leave request because the CRM Sales Team of the leave type disallows."
|
|
||||||
}
|
|
||||||
return {'warning': warning, 'value': {'double_validation': double_validation}}
|
|
||||||
|
|
||||||
def set_to_draft(self, cr, uid, ids, context=None):
|
def set_to_draft(self, cr, uid, ids, context=None):
|
||||||
self.write(cr, uid, ids, {
|
self.write(cr, uid, ids, {
|
||||||
|
@ -271,7 +265,7 @@ class hr_holidays(osv.osv):
|
||||||
holiday_ids.append(record.id)
|
holiday_ids.append(record.id)
|
||||||
if record.holiday_type == 'employee' and record.type == 'remove':
|
if record.holiday_type == 'employee' and record.type == 'remove':
|
||||||
meeting_obj = self.pool.get('crm.meeting')
|
meeting_obj = self.pool.get('crm.meeting')
|
||||||
vals = {
|
meeting_vals = {
|
||||||
'name': record.name,
|
'name': record.name,
|
||||||
'categ_id': record.holiday_status_id.categ_id.id,
|
'categ_id': record.holiday_status_id.categ_id.id,
|
||||||
'duration': record.number_of_days_temp * 8,
|
'duration': record.number_of_days_temp * 8,
|
||||||
|
@ -280,11 +274,11 @@ class hr_holidays(osv.osv):
|
||||||
'date': record.date_from,
|
'date': record.date_from,
|
||||||
'end_date': record.date_to,
|
'end_date': record.date_to,
|
||||||
'date_deadline': record.date_to,
|
'date_deadline': record.date_to,
|
||||||
'leave_id': record.id,
|
'state': 'done', # to block that meeting date in the calendar
|
||||||
}
|
}
|
||||||
case_id = meeting_obj.create(cr, uid, vals)
|
meeting_id = meeting_obj.create(cr, uid, meeting_vals)
|
||||||
self._create_resource_leave(cr, uid, [record], context=context)
|
self._create_resource_leave(cr, uid, [record], context=context)
|
||||||
self.write(cr, uid, ids, {'case_id': case_id})
|
self.write(cr, uid, ids, {'meeting_id': meeting_id})
|
||||||
elif record.holiday_type == 'category':
|
elif record.holiday_type == 'category':
|
||||||
emp_ids = obj_emp.search(cr, uid, [('category_ids', 'child_of', [record.category_id.id])])
|
emp_ids = obj_emp.search(cr, uid, [('category_ids', 'child_of', [record.category_id.id])])
|
||||||
leave_ids = []
|
leave_ids = []
|
||||||
|
@ -330,11 +324,11 @@ class hr_holidays(osv.osv):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def holidays_cancel(self, cr, uid, ids, context=None):
|
def holidays_cancel(self, cr, uid, ids, context=None):
|
||||||
obj_crm_meeting = self.pool.get('crm.meeting')
|
meeting_obj = self.pool.get('crm.meeting')
|
||||||
for record in self.browse(cr, uid, ids):
|
for record in self.browse(cr, uid, ids):
|
||||||
# Delete the meeting
|
# Delete the meeting
|
||||||
if record.case_id:
|
if record.meeting_id:
|
||||||
obj_crm_meeting.unlink(cr, uid, [record.case_id.id])
|
meeting_obj.unlink(cr, uid, [record.meeting_id.id])
|
||||||
|
|
||||||
# If a category that created several holidays, cancel all related
|
# If a category that created several holidays, cancel all related
|
||||||
wf_service = netsvc.LocalService("workflow")
|
wf_service = netsvc.LocalService("workflow")
|
||||||
|
@ -519,10 +513,4 @@ class hr_employee(osv.osv):
|
||||||
|
|
||||||
hr_employee()
|
hr_employee()
|
||||||
|
|
||||||
class crm_meeting(osv.osv):
|
|
||||||
_inherit = 'crm.meeting'
|
|
||||||
_columns = {
|
|
||||||
'leave_id': fields.many2one('hr.holidays','Leave'),
|
|
||||||
}
|
|
||||||
|
|
||||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||||
|
|
|
@ -119,7 +119,7 @@
|
||||||
<field name="department_id" attrs="{'readonly':[('holiday_type','=','category')]}" groups="base.group_hr_user"/>
|
<field name="department_id" attrs="{'readonly':[('holiday_type','=','category')]}" groups="base.group_hr_user"/>
|
||||||
</group>
|
</group>
|
||||||
<group>
|
<group>
|
||||||
<field name="holiday_status_id" on_change="onchange_sec_id(holiday_status_id)" context="{'employee_id':employee_id}"/>
|
<field name="holiday_status_id" on_change="onchange_status_id(holiday_status_id)" context="{'employee_id':employee_id}"/>
|
||||||
<label for="number_of_days_temp" string="Duration"/>
|
<label for="number_of_days_temp" string="Duration"/>
|
||||||
<div>
|
<div>
|
||||||
<field name="date_from" on_change="onchange_date_from(date_to, date_from)" required="1" class="oe_inline"/> -
|
<field name="date_from" on_change="onchange_date_from(date_to, date_from)" required="1" class="oe_inline"/> -
|
||||||
|
@ -178,7 +178,7 @@
|
||||||
<field name="department_id" attrs="{'readonly':['|', ('holiday_type','=','category'), ('state','not in' ,('draft', 'confirm'))]}"/>
|
<field name="department_id" attrs="{'readonly':['|', ('holiday_type','=','category'), ('state','not in' ,('draft', 'confirm'))]}"/>
|
||||||
</group>
|
</group>
|
||||||
<group>
|
<group>
|
||||||
<field name="holiday_status_id" on_change="onchange_sec_id(holiday_status_id)" context="{'employee_id':employee_id}"/>
|
<field name="holiday_status_id" on_change="onchange_status_id(holiday_status_id)" context="{'employee_id':employee_id}"/>
|
||||||
<field name="number_of_days_temp"/>
|
<field name="number_of_days_temp"/>
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
|
|
|
@ -42,11 +42,10 @@ system to store and search in your CV base.
|
||||||
'decimal_precision',
|
'decimal_precision',
|
||||||
'hr',
|
'hr',
|
||||||
'survey',
|
'survey',
|
||||||
'crm',
|
'base_calendar',
|
||||||
'fetchmail',
|
'fetchmail',
|
||||||
],
|
],
|
||||||
'update_xml': [
|
'update_xml': [
|
||||||
'wizard/hr_recruitment_phonecall_view.xml',
|
|
||||||
'wizard/hr_recruitment_employee_hired.xml',
|
'wizard/hr_recruitment_employee_hired.xml',
|
||||||
'wizard/hr_recruitment_create_partner_job_view.xml',
|
'wizard/hr_recruitment_create_partner_job_view.xml',
|
||||||
'hr_recruitment_view.xml',
|
'hr_recruitment_view.xml',
|
||||||
|
|
|
@ -24,15 +24,10 @@ import time
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
from osv import fields, osv
|
from osv import fields, osv
|
||||||
from crm import crm
|
|
||||||
import tools
|
import tools
|
||||||
import collections
|
import collections
|
||||||
import binascii
|
import binascii
|
||||||
import tools
|
|
||||||
from tools.translate import _
|
from tools.translate import _
|
||||||
from crm import wizard
|
|
||||||
|
|
||||||
wizard.mail_compose_message.SUPPORTED_MODELS.append('hr.applicant')
|
|
||||||
|
|
||||||
AVAILABLE_STATES = [
|
AVAILABLE_STATES = [
|
||||||
('draft', 'New'),
|
('draft', 'New'),
|
||||||
|
@ -98,6 +93,7 @@ class hr_applicant(base_stage, osv.Model):
|
||||||
_description = "Applicant"
|
_description = "Applicant"
|
||||||
_order = "id desc"
|
_order = "id desc"
|
||||||
_inherit = ['ir.needaction_mixin', 'mail.thread']
|
_inherit = ['ir.needaction_mixin', 'mail.thread']
|
||||||
|
_mail_compose_message = True
|
||||||
|
|
||||||
def _get_default_department_id(self, cr, uid, context=None):
|
def _get_default_department_id(self, cr, uid, context=None):
|
||||||
""" Gives default department by checking if present in the context """
|
""" Gives default department by checking if present in the context """
|
||||||
|
@ -239,7 +235,7 @@ class hr_applicant(base_stage, osv.Model):
|
||||||
'stage_id': lambda s, cr, uid, c: s._get_default_stage_id(cr, uid, c),
|
'stage_id': lambda s, cr, uid, c: s._get_default_stage_id(cr, uid, c),
|
||||||
'department_id': lambda s, cr, uid, c: s._get_default_department_id(cr, uid, c),
|
'department_id': lambda s, cr, uid, c: s._get_default_department_id(cr, uid, c),
|
||||||
'priority': lambda *a: '',
|
'priority': lambda *a: '',
|
||||||
'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.helpdesk', context=c),
|
'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'hr.applicant', context=c),
|
||||||
'color': 0,
|
'color': 0,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -293,49 +289,22 @@ class hr_applicant(base_stage, osv.Model):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def action_makeMeeting(self, cr, uid, ids, context=None):
|
def action_makeMeeting(self, cr, uid, ids, context=None):
|
||||||
|
""" This opens Meeting's calendar view to schedule meeting on current applicant
|
||||||
|
@return: Dictionary value for created Meeting view
|
||||||
"""
|
"""
|
||||||
This opens Meeting's calendar view to schedule meeting on current Opportunity
|
applicant = self.browse(cr, uid, ids[0], context)
|
||||||
@param self: The object pointer
|
category = self.pool.get('ir.model.data').get_object(cr, uid, 'hr_recruitment', 'categ_meet_interview', context)
|
||||||
@param cr: the current row, from the database cursor,
|
res = self.pool.get('ir.actions.act_window').for_xml_id(cr, uid, 'base_calendar', 'action_crm_meeting', context)
|
||||||
@param uid: the current user’s ID for security checks,
|
res['context'] = {
|
||||||
@param ids: List of Opportunity to Meeting IDs
|
'default_applicant_id': applicant.id,
|
||||||
@param context: A standard dictionary for contextual values
|
'default_partner_id': applicant.partner_id and applicant.partner_id.id or False,
|
||||||
|
'default_user_id': uid,
|
||||||
@return: Dictionary value for created Meeting view
|
'default_email_from': applicant.email_from,
|
||||||
"""
|
'default_state': 'open',
|
||||||
data_obj = self.pool.get('ir.model.data')
|
'default_name': applicant.name,
|
||||||
if context is None:
|
'default_categ_id': category.id,
|
||||||
context = {}
|
}
|
||||||
value = {}
|
return res
|
||||||
for opp in self.browse(cr, uid, ids, context=context):
|
|
||||||
# Get meeting views
|
|
||||||
search_view = data_obj.get_object(cr, uid, 'crm', 'view_crm_case_meetings_filter', context)
|
|
||||||
calendar_view = data_obj.get_object(cr, uid, 'crm', 'crm_case_calendar_view_meet', context)
|
|
||||||
form_view = data_obj.get_object(cr, uid, 'crm', 'crm_case_form_view_meet', context)
|
|
||||||
tree_view = data_obj.get_object(cr, uid, 'crm', 'crm_case_tree_view_meet', context)
|
|
||||||
category = data_obj.get_object(cr, uid, 'hr_recruitment', 'categ_meet_interview', context)
|
|
||||||
context.update({
|
|
||||||
'default_applicant_id': opp.id,
|
|
||||||
'default_partner_id': opp.partner_id and opp.partner_id.id or False,
|
|
||||||
'default_email_from': opp.email_from,
|
|
||||||
'default_state': 'open',
|
|
||||||
'default_categ_id': category.id,
|
|
||||||
'default_name': opp.name,
|
|
||||||
})
|
|
||||||
value = {
|
|
||||||
'name': ('Meetings'),
|
|
||||||
'domain': "[('user_id','=',%s)]" % (uid),
|
|
||||||
'context': context,
|
|
||||||
'view_type': 'form',
|
|
||||||
'view_mode': 'calendar,form,tree',
|
|
||||||
'res_model': 'crm.meeting',
|
|
||||||
'view_id': False,
|
|
||||||
'views': [(calendar_view.id, 'calendar'), (form_view.id, 'form'), (tree_view.id, 'tree')],
|
|
||||||
'type': 'ir.actions.act_window',
|
|
||||||
'search_view_id': search_view.id,
|
|
||||||
'nodestroy': True,
|
|
||||||
}
|
|
||||||
return value
|
|
||||||
|
|
||||||
def action_print_survey(self, cr, uid, ids, context=None):
|
def action_print_survey(self, cr, uid, ids, context=None):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -5,11 +5,9 @@
|
||||||
-->
|
-->
|
||||||
<data>
|
<data>
|
||||||
|
|
||||||
<!-- Case category (for interview meetings) -->
|
<!-- Meeting Types (for interview meetings) -->
|
||||||
<record model="crm.case.categ" id="categ_meet_interview">
|
<record model="crm.meeting.type" id="categ_meet_interview">
|
||||||
<field name="name">Interview</field>
|
<field name="name">Interview</field>
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
|
||||||
<field name="object_id" search="[('model','=','crm.meeting')]" model="ir.model"/>
|
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<!-- HR Recruitment Source -->
|
<!-- HR Recruitment Source -->
|
||||||
|
|
|
@ -16,18 +16,6 @@
|
||||||
view_mode="tree,form,calendar,graph"
|
view_mode="tree,form,calendar,graph"
|
||||||
view_type="form"/>
|
view_type="form"/>
|
||||||
|
|
||||||
# ------------------------------------------------------
|
|
||||||
# Job Categories
|
|
||||||
# ------------------------------------------------------
|
|
||||||
|
|
||||||
<record id="hr_job_categ_action" model="ir.actions.act_window">
|
|
||||||
<field name="name">Applicant Categories</field>
|
|
||||||
<field name="res_model">crm.case.categ</field>
|
|
||||||
<field name="view_type">form</field>
|
|
||||||
<field name="view_id" ref="crm.crm_case_categ_tree-view"/>
|
|
||||||
<field name="domain">[('object_id.model', '=', 'hr.applicant')]</field>
|
|
||||||
<field name="context" eval="{'object_id': ref('model_hr_applicant')}"/>
|
|
||||||
</record>
|
|
||||||
# ------------------------------------------------------
|
# ------------------------------------------------------
|
||||||
# Stage
|
# Stage
|
||||||
# ------------------------------------------------------
|
# ------------------------------------------------------
|
||||||
|
@ -517,21 +505,15 @@
|
||||||
action="hr_recruitment_source_action"
|
action="hr_recruitment_source_action"
|
||||||
sequence="10" groups="base.group_no_one"/>
|
sequence="10" groups="base.group_no_one"/>
|
||||||
|
|
||||||
<record model="ir.ui.view" id="crm_meeting_form_view">
|
<record model="ir.ui.view" id="view_crm_meeting_form">
|
||||||
<field name="name">CRM - Meetings Form</field>
|
<field name="name">CRM - Meetings Form</field>
|
||||||
<field name="model">crm.meeting</field>
|
<field name="model">crm.meeting</field>
|
||||||
<field name="type">form</field>
|
<field name="type">form</field>
|
||||||
<field name="inherit_id" ref="crm.crm_case_form_view_meet"/>
|
<field name="inherit_id" ref="base_calendar.view_crm_meeting_form"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<field name="partner_id" position="before">
|
<field name="partner_id" position="before">
|
||||||
<field name="applicant_id" attrs="{'invisible': [('categ_id','!=',%(hr_recruitment.categ_meet_interview)d)]}"/>
|
<field name="applicant_id" attrs="{'invisible': [('categ_id','!=',%(hr_recruitment.categ_meet_interview)d)]}"/>
|
||||||
</field>
|
</field>
|
||||||
<field name="partner_id" position="attributes">
|
|
||||||
<attribute name="attrs">{'invisible': [('categ_id','=',%(hr_recruitment.categ_meet_interview)d)]}</attribute>
|
|
||||||
</field>
|
|
||||||
<field name="section_id" position="attributes">
|
|
||||||
<attribute name="attrs">{'invisible': [('categ_id','=',%(hr_recruitment.categ_meet_interview)d)]}</attribute>
|
|
||||||
</field>
|
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,6 @@ access_hr_recruitment_degree,hr.recruitment.degree,model_hr_recruitment_degree,b
|
||||||
access_mail_message_user,mail.message.user,mail.model_mail_message,base.group_hr_user,1,1,1,1
|
access_mail_message_user,mail.message.user,mail.model_mail_message,base.group_hr_user,1,1,1,1
|
||||||
access_res_partner_hr_user,res.partner.user,base.model_res_partner,base.group_hr_user,1,1,1,1
|
access_res_partner_hr_user,res.partner.user,base.model_res_partner,base.group_hr_user,1,1,1,1
|
||||||
access_survey_hr_user,survey.hr.user,survey.model_survey,base.group_hr_user,1,1,1,0
|
access_survey_hr_user,survey.hr.user,survey.model_survey,base.group_hr_user,1,1,1,0
|
||||||
access_crm_phonecall_hruser,crm.phonecall hruser,crm.model_crm_phonecall,base.group_hr_user,1,1,1,1
|
access_crm_meeting_hruser,crm.meeting.hruser,base_calendar.model_crm_meeting,base.group_hr_user,1,1,1,1
|
||||||
access_crm_meeting_hruser,crm.meeting.hruser,crm.model_crm_meeting,base.group_hr_user,1,1,1,1
|
|
||||||
access_hr_recruitment_source_hr_officer,hr.recruitment.source,model_hr_recruitment_source,base.group_hr_user,1,1,1,1
|
access_hr_recruitment_source_hr_officer,hr.recruitment.source,model_hr_recruitment_source,base.group_hr_user,1,1,1,1
|
||||||
access_hr_recruitment_source_all,hr.recruitment.source,model_hr_recruitment_source,,1,0,0,0
|
access_hr_recruitment_source_all,hr.recruitment.source,model_hr_recruitment_source,,1,0,0,0
|
||||||
|
|
|
|
@ -50,13 +50,6 @@
|
||||||
-
|
-
|
||||||
!python {model: hr.applicant}: |
|
!python {model: hr.applicant}: |
|
||||||
self.write(cr, uid, [ref('hr_case_programmer')], {'job_id':ref('hr.job_developer')})
|
self.write(cr, uid, [ref('hr_case_programmer')], {'job_id':ref('hr.job_developer')})
|
||||||
-
|
|
||||||
I start communication with applicant, first schedule phonecall.
|
|
||||||
-
|
|
||||||
!python {model: hr.recruitment.job2phonecall}: |
|
|
||||||
context.update({'active_model': 'hr.applicant', 'active_id': ref("hr_case_programmer"), 'active_ids': [ref("hr_case_programmer")], 'survey_id': ref("survey_job_0")})
|
|
||||||
id = self.create(cr, uid, {}, context=context)
|
|
||||||
self.make_phonecall(cr, uid, [id], context=context)
|
|
||||||
-
|
-
|
||||||
I schedule meeting with applicant for interview.
|
I schedule meeting with applicant for interview.
|
||||||
-
|
-
|
||||||
|
|
|
@ -20,7 +20,6 @@
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
|
|
||||||
import hr_recruitment_phonecall
|
|
||||||
import hr_recruitment_create_partner_job
|
import hr_recruitment_create_partner_job
|
||||||
import hr_recruitment_employee_hired
|
import hr_recruitment_employee_hired
|
||||||
|
|
||||||
|
|
|
@ -1,126 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
##############################################################################
|
|
||||||
#
|
|
||||||
# OpenERP, Open Source Management Solution
|
|
||||||
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
|
|
||||||
# $Id$
|
|
||||||
#
|
|
||||||
# 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 time
|
|
||||||
|
|
||||||
from osv import osv, fields
|
|
||||||
from tools.translate import _
|
|
||||||
|
|
||||||
class job2phonecall(osv.osv_memory):
|
|
||||||
_name = 'hr.recruitment.job2phonecall'
|
|
||||||
_description = 'Schedule Phone Call'
|
|
||||||
_columns = {
|
|
||||||
'user_id': fields.many2one('res.users', 'Assign To'),
|
|
||||||
'deadline': fields.datetime('Planned Date'),
|
|
||||||
'note': fields.text('Goals'),
|
|
||||||
'category_id': fields.many2one('crm.case.categ', 'Category', required=True),
|
|
||||||
}
|
|
||||||
|
|
||||||
def _date_user(self, cr, uid, context=None):
|
|
||||||
case_obj = self.pool.get('hr.applicant')
|
|
||||||
if context is None:
|
|
||||||
context = {}
|
|
||||||
case = case_obj.browse(cr, uid, context.get('active_id', False), context=context)
|
|
||||||
return case.user_id and case.user_id.id or False
|
|
||||||
|
|
||||||
def _date_category(self, cr, uid, context=None):
|
|
||||||
case_obj = self.pool.get('hr.applicant')
|
|
||||||
if context is None:
|
|
||||||
context = {}
|
|
||||||
case = case_obj.browse(cr, uid, context.get('active_id', False), context=context)
|
|
||||||
categ_id = self.pool.get('crm.case.categ').search(cr, uid, [('name','=','Outbound')], context=context)
|
|
||||||
return categ_id and categ_id[0] or case.categ_id and case.categ_id.id or False
|
|
||||||
|
|
||||||
def _get_note(self, cr, uid, context=None):
|
|
||||||
mail_message = self.pool.get('mail.message')
|
|
||||||
if context is None:
|
|
||||||
context = {}
|
|
||||||
if context.get('active_id'):
|
|
||||||
case = self.pool.get('hr.applicant').browse(cr, uid, context['active_id'], context=context)
|
|
||||||
if case.description:
|
|
||||||
return case.description
|
|
||||||
else:
|
|
||||||
msg_ids = mail_message.search(cr, uid, [('model', '=', 'hr.applicant'), ('res_id', '=', case.id), ('email_from', '!=', ''), ('email_to', '!=', '')], limit=1)
|
|
||||||
if msg_ids:
|
|
||||||
return mail_message.browse(cr, uid, msg_ids[0], context=context).body_text
|
|
||||||
return False
|
|
||||||
|
|
||||||
|
|
||||||
_defaults = {
|
|
||||||
'user_id': _date_user,
|
|
||||||
'category_id': _date_category,
|
|
||||||
'note': _get_note
|
|
||||||
}
|
|
||||||
|
|
||||||
def make_phonecall(self, cr, uid, ids, context=None):
|
|
||||||
mod_obj = self.pool.get('ir.model.data')
|
|
||||||
job_case_obj = self.pool.get('hr.applicant')
|
|
||||||
data_obj = self.pool.get('ir.model.data')
|
|
||||||
phonecall_case_obj = self.pool.get('crm.phonecall')
|
|
||||||
if context is None:
|
|
||||||
context = {}
|
|
||||||
form = self.browse(cr, uid, ids, context=context)[0]
|
|
||||||
result = mod_obj._get_id(cr, uid, 'crm', 'view_crm_case_phonecalls_filter')
|
|
||||||
res = mod_obj.read(cr, uid, result, ['res_id'], context=context)
|
|
||||||
# Select the view
|
|
||||||
|
|
||||||
id2 = data_obj._get_id(cr, uid, 'crm', 'crm_case_phone_tree_view')
|
|
||||||
id3 = data_obj._get_id(cr, uid, 'crm', 'crm_case_phone_form_view')
|
|
||||||
if id2:
|
|
||||||
id2 = data_obj.browse(cr, uid, id2, context=context).res_id
|
|
||||||
if id3:
|
|
||||||
id3 = data_obj.browse(cr, uid, id3, context=context).res_id
|
|
||||||
new_phonecall_id = []
|
|
||||||
for job in job_case_obj.browse(cr, uid, context.get('active_ids', []), context=context):
|
|
||||||
#TODO: Take other info from job
|
|
||||||
new_phonecall_id = phonecall_case_obj.create(cr, uid, {
|
|
||||||
'name': job.name,
|
|
||||||
'user_id': form.user_id.id,
|
|
||||||
'categ_id': form.category_id.id,
|
|
||||||
'description': form.note,
|
|
||||||
'date': form.deadline,
|
|
||||||
'description': job.description,
|
|
||||||
'partner_id': job.partner_id.id,
|
|
||||||
'partner_phone': job.partner_phone,
|
|
||||||
'partner_mobile': job.partner_mobile,
|
|
||||||
'description': job.description,
|
|
||||||
'date':job.date,
|
|
||||||
}, context=context)
|
|
||||||
new_phonecall = phonecall_case_obj.browse(cr, uid, new_phonecall_id, context=context)
|
|
||||||
vals = {}
|
|
||||||
job_case_obj.write(cr, uid, [job.id], vals, context=context)
|
|
||||||
# job_case_obj.case_cancel(cr, uid, [job.id])
|
|
||||||
phonecall_case_obj.case_open(cr, uid, [new_phonecall_id])
|
|
||||||
|
|
||||||
return {
|
|
||||||
'name': _('Phone Call'),
|
|
||||||
'view_type': 'form',
|
|
||||||
'view_mode': 'tree,form',
|
|
||||||
'res_model': 'crm.phonecall',
|
|
||||||
'res_id': new_phonecall_id,
|
|
||||||
'views': [(id3,'form'), (id2,'tree'), (False,'calendar'), (False,'graph')],
|
|
||||||
'type': 'ir.actions.act_window',
|
|
||||||
'search_view_id': res['res_id']
|
|
||||||
}
|
|
||||||
|
|
||||||
job2phonecall()
|
|
||||||
|
|
||||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
|
@ -1,40 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<openerp>
|
|
||||||
<data>
|
|
||||||
|
|
||||||
<record id="view_hr_recruitment_phonecall" model="ir.ui.view">
|
|
||||||
<field name="name">hr.recruitment.job2phonecall.form</field>
|
|
||||||
<field name="model">hr.recruitment.job2phonecall</field>
|
|
||||||
<field name="type">form</field>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<form string="Schedule Phone Call" version="7.0">
|
|
||||||
<header>
|
|
||||||
<button name="make_phonecall" string="Schedule Phone Call" type="object" class="oe_highlight"/>
|
|
||||||
or
|
|
||||||
<button string="Cancel" class="oe_link" special="cancel" />
|
|
||||||
</header>
|
|
||||||
<group col="4" colspan="6">
|
|
||||||
<separator string="Phone Call Description" colspan="4" />
|
|
||||||
<newline />
|
|
||||||
<field name='user_id' />
|
|
||||||
<field name='deadline' />
|
|
||||||
<newline />
|
|
||||||
<field name='note' colspan="4"/>
|
|
||||||
<newline />
|
|
||||||
<field name='category_id' domain="[('object_id.model', '=', 'crm.phonecall')]"/>
|
|
||||||
</group>
|
|
||||||
</form>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="action_hr_recruitment_phonecall" model="ir.actions.act_window">
|
|
||||||
<field name="name">Schedule Phone Call</field>
|
|
||||||
<field name="type">ir.actions.act_window</field>
|
|
||||||
<field name="res_model">hr.recruitment.job2phonecall</field>
|
|
||||||
<field name="view_type">form</field>
|
|
||||||
<field name="view_mode">form</field>
|
|
||||||
<field name="target">new</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
</data>
|
|
||||||
</openerp>
|
|
|
@ -26,7 +26,7 @@
|
||||||
'description': """The module adds google contact in partner address and add google calendar events details in Meeting""",
|
'description': """The module adds google contact in partner address and add google calendar events details in Meeting""",
|
||||||
'author': 'OpenERP SA',
|
'author': 'OpenERP SA',
|
||||||
'website': 'http://www.openerp.com',
|
'website': 'http://www.openerp.com',
|
||||||
'depends': ['base', 'import_base', 'google_base_account','crm'],
|
'depends': ['base', 'import_base', 'google_base_account', 'base_calendar'],
|
||||||
'init_xml': [],
|
'init_xml': [],
|
||||||
'update_xml': ['security/ir.model.access.csv',
|
'update_xml': ['security/ir.model.access.csv',
|
||||||
'sync_google_calendar_view.xml',
|
'sync_google_calendar_view.xml',
|
||||||
|
|
|
@ -0,0 +1,217 @@
|
||||||
|
# Arabic 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-07-07 15:59+0000\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: Arabic <ar@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-07-08 04:41+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 15558)\n"
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: help:synchronize.google.import,group_name:0
|
||||||
|
msgid "Choose which group to import, By default it takes all."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: view:synchronize.google.import:0
|
||||||
|
msgid "Import Google Calendar Events"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: view:synchronize.google.import:0
|
||||||
|
msgid "_Import Events"
|
||||||
|
msgstr "_جلب الأحداث"
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: code:addons/import_google/wizard/import_google_data.py:71
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"No Google Username or password Defined for user.\n"
|
||||||
|
"Please define in user view"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: code:addons/import_google/wizard/import_google_data.py:127
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Invalid login detail !\n"
|
||||||
|
" Specify Username/Password."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: field:synchronize.google.import,supplier:0
|
||||||
|
msgid "Supplier"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: view:synchronize.google.import:0
|
||||||
|
msgid "Import Options"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: field:synchronize.google.import,group_name:0
|
||||||
|
msgid "Group Name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: model:ir.model,name:import_google.model_crm_case_categ
|
||||||
|
msgid "Category of Case"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: model:ir.actions.act_window,name:import_google.act_google_login_contact_form
|
||||||
|
#: model:ir.ui.menu,name:import_google.menu_sync_contact
|
||||||
|
msgid "Import Google Contacts"
|
||||||
|
msgstr "جلب اتصالات قوقل"
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: view:google.import.message:0
|
||||||
|
msgid "Import Google Data"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: view:crm.meeting:0
|
||||||
|
msgid "Meeting Type"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: code:addons/import_google/wizard/import_google.py:38
|
||||||
|
#: code:addons/import_google/wizard/import_google_data.py:28
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Please install gdata-python-client from http://code.google.com/p/gdata-"
|
||||||
|
"python-client/downloads/list"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: model:ir.model,name:import_google.model_google_login
|
||||||
|
msgid "Google Contact"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: view:synchronize.google.import:0
|
||||||
|
msgid "Import contacts from a google account"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: code:addons/import_google/wizard/import_google_data.py:133
|
||||||
|
#, python-format
|
||||||
|
msgid "Please specify correct user and password !"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: field:synchronize.google.import,customer:0
|
||||||
|
msgid "Customer"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: view:synchronize.google.import:0
|
||||||
|
msgid "_Cancel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: model:ir.model,name:import_google.model_synchronize_google_import
|
||||||
|
msgid "synchronize.google.import"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: view:synchronize.google.import:0
|
||||||
|
msgid "_Import Contacts"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: model:ir.actions.act_window,name:import_google.act_google_login_form
|
||||||
|
#: model:ir.ui.menu,name:import_google.menu_sync_calendar
|
||||||
|
msgid "Import Google Calendar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: code:addons/import_google/wizard/import_google_data.py:50
|
||||||
|
#, python-format
|
||||||
|
msgid "Import google"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: code:addons/import_google/wizard/import_google_data.py:127
|
||||||
|
#: code:addons/import_google/wizard/import_google_data.py:133
|
||||||
|
#, python-format
|
||||||
|
msgid "Error"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: code:addons/import_google/wizard/import_google_data.py:71
|
||||||
|
#, python-format
|
||||||
|
msgid "Warning !"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: field:synchronize.google.import,create_partner:0
|
||||||
|
msgid "Options"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: view:google.import.message:0
|
||||||
|
msgid "_Ok"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: code:addons/import_google/wizard/import_google.py:38
|
||||||
|
#: code:addons/import_google/wizard/import_google_data.py:28
|
||||||
|
#, python-format
|
||||||
|
msgid "Google Contacts Import Error!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: model:ir.model,name:import_google.model_google_import_message
|
||||||
|
msgid "Import Message"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: field:synchronize.google.import,calendar_name:0
|
||||||
|
msgid "Calendar Name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: help:synchronize.google.import,supplier:0
|
||||||
|
msgid "Check this box to set newly created partner as Supplier."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: selection:synchronize.google.import,create_partner:0
|
||||||
|
msgid "Import only address"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: field:crm.case.categ,user_id:0
|
||||||
|
msgid "User"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: view:synchronize.google.import:0
|
||||||
|
msgid "Partner Status for this Group:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: field:google.import.message,name:0
|
||||||
|
msgid "Message"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: selection:synchronize.google.import,create_partner:0
|
||||||
|
msgid "Create partner for each contact"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: help:synchronize.google.import,customer:0
|
||||||
|
msgid "Check this box to set newly created partner as Customer."
|
||||||
|
msgstr ""
|
|
@ -8,14 +8,14 @@ msgstr ""
|
||||||
"Project-Id-Version: openobject-addons\n"
|
"Project-Id-Version: openobject-addons\n"
|
||||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||||
"PO-Revision-Date: 2012-05-24 18:56+0000\n"
|
"PO-Revision-Date: 2012-07-09 04:44+0000\n"
|
||||||
"Last-Translator: Akira Hiyama <Unknown>\n"
|
"Last-Translator: Akira Hiyama <Unknown>\n"
|
||||||
"Language-Team: Japanese <ja@li.org>\n"
|
"Language-Team: Japanese <ja@li.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-05-25 04:40+0000\n"
|
"X-Launchpad-Export-Date: 2012-07-09 04:51+0000\n"
|
||||||
"X-Generator: Launchpad (build 15288)\n"
|
"X-Generator: Launchpad (build 15558)\n"
|
||||||
|
|
||||||
#. module: import_google
|
#. module: import_google
|
||||||
#: help:synchronize.google.import,group_name:0
|
#: help:synchronize.google.import,group_name:0
|
||||||
|
@ -70,7 +70,7 @@ msgstr "グループ名"
|
||||||
#. module: import_google
|
#. module: import_google
|
||||||
#: model:ir.model,name:import_google.model_crm_case_categ
|
#: model:ir.model,name:import_google.model_crm_case_categ
|
||||||
msgid "Category of Case"
|
msgid "Category of Case"
|
||||||
msgstr "ケースの分類"
|
msgstr "案件の分類"
|
||||||
|
|
||||||
#. module: import_google
|
#. module: import_google
|
||||||
#: model:ir.actions.act_window,name:import_google.act_google_login_contact_form
|
#: model:ir.actions.act_window,name:import_google.act_google_login_contact_form
|
||||||
|
|
|
@ -21,11 +21,11 @@
|
||||||
|
|
||||||
from osv import fields,osv
|
from osv import fields,osv
|
||||||
|
|
||||||
class crm_case_categ(osv.osv):
|
class crm_meeting_type(osv.osv):
|
||||||
""" Category of Case """
|
""" Meeting Types """
|
||||||
_inherit = "crm.case.categ"
|
_inherit = "crm.meeting.type"
|
||||||
_columns = {
|
_columns = {
|
||||||
'user_id': fields.many2one('res.users', 'User')
|
'user_id': fields.many2one('res.users', 'User')
|
||||||
}
|
}
|
||||||
crm_case_categ()
|
|
||||||
# vim:expandtab:smartindent:toabstop=4:softtabstop=4:shiftwidth=4:
|
# vim:expandtab:smartindent:toabstop=4:softtabstop=4:shiftwidth=4:
|
||||||
|
|
|
@ -1,30 +1,14 @@
|
||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<openerp>
|
<openerp>
|
||||||
<data>
|
<data>
|
||||||
<record model="ir.ui.view" id="crm_case_form_view_meet_inherit">
|
<record model="ir.ui.view" id="view_crm_meeting_form">
|
||||||
<field name="name">CRM - Meetings Form (Inherited)</field>
|
<field name="name">CRM - Meetings Form (Inherited)</field>
|
||||||
<field name="model">crm.meeting</field>
|
<field name="model">crm.meeting</field>
|
||||||
<field name="type">form</field>
|
<field name="type">form</field>
|
||||||
<field name="inherit_id" ref="crm.crm_case_form_view_meet"/>
|
<field name="inherit_id" ref="base_calendar.view_crm_meeting_form"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<field name="categ_id" position="replace">
|
<field name="categ_id" position="replace">
|
||||||
<field name="categ_id" widget="selection"
|
<field name="categ_id" widget="selection" domain="[('user_id', 'in', [uid, False])]"/>
|
||||||
string="Meeting Type"
|
|
||||||
domain="[('object_id.model', '=', 'crm.meeting'),('user_id','in',[uid, False])]" />
|
|
||||||
</field>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="ir.ui.view" id="crm_case_tree_view_meet_inherit">
|
|
||||||
<field name="name">CRM - Meetings Tree (Inherited)</field>
|
|
||||||
<field name="model">crm.meeting</field>
|
|
||||||
<field name="type">tree</field>
|
|
||||||
<field name="inherit_id" ref="crm.crm_case_tree_view_meet"/>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<field name="categ_id" position="replace">
|
|
||||||
<field name="categ_id" widget="selection"
|
|
||||||
string="Meeting Type"
|
|
||||||
domain="[('object_id.model', '=', 'crm.meeting'),('user_id','in',[uid, False])]" />
|
|
||||||
</field>
|
</field>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
|
@ -235,10 +235,10 @@ class google_import(import_framework):
|
||||||
|
|
||||||
|
|
||||||
def get_event_category(self, val, name):
|
def get_event_category(self, val, name):
|
||||||
fields = ['name', 'object_id']
|
nameid = 'event_category_' + name
|
||||||
nameid = 'event_category_'+name
|
fields = ['name']
|
||||||
data = [name, 'crm.meeting']
|
data = [name]
|
||||||
return self.import_object(fields, data, 'crm.case.categ', "crm_case_categ", nameid, [('name', 'ilike', name)])
|
return self.import_object(fields, data, 'crm.meeting.type', "crm_meeting_type", nameid, [('name', 'ilike', name)])
|
||||||
|
|
||||||
def get_rec(self, val):
|
def get_rec(self, val):
|
||||||
if val.get("recurrency"):
|
if val.get("recurrency"):
|
||||||
|
|
|
@ -20,36 +20,41 @@
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
{
|
{
|
||||||
'name': 'Emails Management',
|
'name': 'Social Network',
|
||||||
'version': '1.0',
|
'version': '1.0',
|
||||||
'category': 'Hidden/Dependency',
|
'category':'Social Network',
|
||||||
|
"sequence": 2,
|
||||||
'description': """
|
'description': """
|
||||||
A generic email subsystem with message storage and queuing
|
A bussiness oriented Social Networking with a fully-integrated email
|
||||||
==========================================================
|
and message management.
|
||||||
|
=====================================================================
|
||||||
|
The Social Networking module provides an unified social network
|
||||||
|
abstraction layer allowing applications to display a complete
|
||||||
|
communication history on documents.It gives the users the possibility
|
||||||
|
to read and send messages and emails in an unified way.
|
||||||
|
|
||||||
This email subsystem is not intended to be used as as standalone
|
It also provides a feeds page combined to a subscription mechanism, that
|
||||||
application, but to provide a unified email abstraction that all
|
allows to follow documents, and to be constantly updated about recent
|
||||||
other applications can use.
|
news.
|
||||||
|
|
||||||
|
The main features of the module are :
|
||||||
|
|
||||||
The main features are:
|
* a clean and renewed communication history for any OpenERP
|
||||||
|
document that can act as a discussion topic,
|
||||||
* Relies on the global Outgoing Mail Servers configured in the
|
* a discussion mean on documents,
|
||||||
Administration menu for delivering outgoing mail
|
* a subscription mechanism to be updated about new messages on
|
||||||
* Provides an API for sending messages and archiving them,
|
interesting documents,
|
||||||
grouped by conversation
|
* an unified feeds page to see recent messages and activity
|
||||||
* Any OpenERP document can act as a conversation topic, provided
|
on followed documents,
|
||||||
it includes the necessary support for handling incoming emails
|
* user communication through the feeds page,
|
||||||
(see the ``mail.thread`` class for more details).
|
* a threaded discussion design,
|
||||||
* Includes queuing mechanism with automated configurable
|
* relies on the global outgoing mail server, an integrated email
|
||||||
scheduler-based processing
|
management system allowing to send emails with a configurable
|
||||||
* Includes a generic email composition assistant, that can turn
|
scheduler-based processing engine
|
||||||
|
* includes an extensible generic email composition assistant, that can turn
|
||||||
into a mass-mailing assistant, and is capable of interpreting
|
into a mass-mailing assistant, and is capable of interpreting
|
||||||
simple *placeholder expressions* that will be replaced with
|
simple *placeholder expressions* that will be replaced with
|
||||||
dynamic data when each email is actually sent.
|
dynamic data when each email is actually sent
|
||||||
This generic assistant is easily extensible to provide advanced
|
|
||||||
features (see ``email_template`` for example, which adds email
|
|
||||||
templating features to this assistant)
|
|
||||||
|
|
||||||
""",
|
""",
|
||||||
'author': 'OpenERP SA',
|
'author': 'OpenERP SA',
|
||||||
'website': 'http://www.openerp.com',
|
'website': 'http://www.openerp.com',
|
||||||
|
@ -69,6 +74,7 @@ The main features are:
|
||||||
],
|
],
|
||||||
'installable': True,
|
'installable': True,
|
||||||
'auto_install': False,
|
'auto_install': False,
|
||||||
|
'application':True,
|
||||||
'certificate': '001056784984222247309',
|
'certificate': '001056784984222247309',
|
||||||
'images': [
|
'images': [
|
||||||
'images/customer_history.jpeg',
|
'images/customer_history.jpeg',
|
||||||
|
@ -94,6 +100,6 @@ The main features are:
|
||||||
],
|
],
|
||||||
'demo': [
|
'demo': [
|
||||||
'mail_demo.xml',
|
'mail_demo.xml',
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 5.6 KiB |
|
@ -292,4 +292,43 @@ class mail_compose_message(osv.osv_memory):
|
||||||
return tools.ustr(result)
|
return tools.ustr(result)
|
||||||
return template and EXPRESSION_PATTERN.sub(merge, template)
|
return template and EXPRESSION_PATTERN.sub(merge, template)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class mail_compose_message_extended(osv.osv_memory):
|
||||||
|
""" Extension of 'mail.compose.message' to support default field values related
|
||||||
|
to CRM-like models that follow the following conventions:
|
||||||
|
|
||||||
|
1. The model object must have an attribute '_mail_compose_message' equal to True.
|
||||||
|
|
||||||
|
2. The model should define the following fields:
|
||||||
|
- 'name' as subject of the message (required);
|
||||||
|
- 'email_from' as destination email address (required);
|
||||||
|
- 'email_cc' as cc email addresses (required);
|
||||||
|
- 'section_id.reply_to' as reply-to address (optional).
|
||||||
|
"""
|
||||||
|
_inherit = 'mail.compose.message'
|
||||||
|
|
||||||
|
def get_value(self, cr, uid, model, res_id, context=None):
|
||||||
|
"""Overrides the default implementation to provide more default field values
|
||||||
|
related to the corresponding CRM case.
|
||||||
|
"""
|
||||||
|
result = super(mail_compose_message_extended, self).get_value(cr, uid, model, res_id, context=context)
|
||||||
|
model_obj = self.pool.get(model)
|
||||||
|
if getattr(model_obj, '_mail_compose_message', False) and res_id:
|
||||||
|
data = model_obj.browse(cr, uid , res_id, context)
|
||||||
|
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
|
||||||
|
result.update({
|
||||||
|
'model': model,
|
||||||
|
'res_id': res_id,
|
||||||
|
'email_from': user.user_email or tools.config.get('email_from', False),
|
||||||
|
'email_to': data.email_from or False,
|
||||||
|
'email_cc': tools.ustr(data.email_cc or ''),
|
||||||
|
'subject': data.name or False,
|
||||||
|
'body_text': '\n' + tools.ustr(user.signature or ''),
|
||||||
|
'subtype': 'plain',
|
||||||
|
})
|
||||||
|
if hasattr(data, 'section_id'):
|
||||||
|
result['reply_to'] = data.section_id and data.section_id.reply_to or False
|
||||||
|
return result
|
||||||
|
|
||||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||||
|
|
|
@ -80,3 +80,4 @@ access_product_pricelist_item_mrp_manager,product.pricelist.item mrp_manager,pro
|
||||||
access_resource_calendar_manufacturinguser,resource.calendar manufacturing.user,resource.model_resource_calendar,mrp.group_mrp_user,1,0,0,0
|
access_resource_calendar_manufacturinguser,resource.calendar manufacturing.user,resource.model_resource_calendar,mrp.group_mrp_user,1,0,0,0
|
||||||
access_account_journal_mrp_manager,account.journal mrp manager,account.model_account_journal,mrp.group_mrp_manager,1,0,0,0
|
access_account_journal_mrp_manager,account.journal mrp manager,account.model_account_journal,mrp.group_mrp_manager,1,0,0,0
|
||||||
access_purchase_order_stock_user,purchase.order stock user,purchase.model_purchase_order,stock.group_stock_user,1,1,1,0
|
access_purchase_order_stock_user,purchase.order stock user,purchase.model_purchase_order,stock.group_stock_user,1,1,1,0
|
||||||
|
access_mrp_bom_purchase_manager,mrp.bom,model_mrp_bom,purchase.group_purchase_manager,1,0,0,0
|
||||||
|
|
|
|
@ -1,3 +1,4 @@
|
||||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||||
access_mrp_subproduct_user,mrp.subproduct,model_mrp_subproduct,mrp.group_mrp_user,1,1,1,1
|
access_mrp_subproduct_user,mrp.subproduct,model_mrp_subproduct,mrp.group_mrp_user,1,0,0,0
|
||||||
access_mrp_subproduct_manager,mrp.subproduct manager,model_mrp_subproduct,mrp.group_mrp_manager,1,0,0,0
|
access_mrp_subproduct_manager,mrp.subproduct manager,model_mrp_subproduct,mrp.group_mrp_manager,1,1,1,1
|
||||||
|
access_mrp_subproduct_all,mrp.subproduct,model_mrp_subproduct,base.group_user,1,0,0,0
|
||||||
|
|
|
|
@ -7,13 +7,13 @@ msgstr ""
|
||||||
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
||||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||||
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
|
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
|
||||||
"PO-Revision-Date: 2012-07-05 11:02+0000\n"
|
"PO-Revision-Date: 2012-07-06 12:24+0000\n"
|
||||||
"Last-Translator: Marko Carevic <Unknown>\n"
|
"Last-Translator: Marko Carevic <Unknown>\n"
|
||||||
"Language-Team: Vinteh\n"
|
"Language-Team: Vinteh\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-07-06 04:58+0000\n"
|
"X-Launchpad-Export-Date: 2012-07-07 05:12+0000\n"
|
||||||
"X-Generator: Launchpad (build 15558)\n"
|
"X-Generator: Launchpad (build 15558)\n"
|
||||||
"Language: hr\n"
|
"Language: hr\n"
|
||||||
|
|
||||||
|
@ -281,7 +281,7 @@ msgstr "Zadatak"
|
||||||
#. module: project
|
#. module: project
|
||||||
#: view:project.project:0
|
#: view:project.project:0
|
||||||
msgid "Members"
|
msgid "Members"
|
||||||
msgstr ""
|
msgstr "Članovi"
|
||||||
|
|
||||||
#. module: project
|
#. module: project
|
||||||
#: view:board.board:0
|
#: view:board.board:0
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||||
access_project_project,project.project,model_project_project,project.group_project_user,1,1,1,1
|
access_project_project,project.project,model_project_project,project.group_project_user,1,0,0,0
|
||||||
access_account_analytic_account,account.analytic.account,analytic.model_account_analytic_account,project.group_project_user,1,1,1,1
|
access_project_project_manager,project.project,model_project_project,project.group_project_manager,1,1,1,1
|
||||||
|
access_account_analytic_account_user,account.analytic.account,analytic.model_account_analytic_account,project.group_project_user,1,0,0,0
|
||||||
|
access_account_analytic_account,account.analytic.account,analytic.model_account_analytic_account,project.group_project_manager,1,1,1,1
|
||||||
access_project_task_type_user,project.task.type user,model_project_task_type,project.group_project_user,1,1,1,1
|
access_project_task_type_user,project.task.type user,model_project_task_type,project.group_project_user,1,1,1,1
|
||||||
access_project_task,project.task,model_project_task,project.group_project_user,1,1,1,1
|
access_project_task,project.task,model_project_task,project.group_project_user,1,1,1,1
|
||||||
access_project_task_work,project.task.work,model_project_task_work,project.group_project_user,1,1,1,1
|
access_project_task_work,project.task.work,model_project_task_work,project.group_project_user,1,1,1,1
|
||||||
|
@ -8,7 +10,9 @@ access_report_project_task_user,report.project.task.user,model_report_project_ta
|
||||||
access_partner_task user,base.res.partner user,base.model_res_partner,project.group_project_user,1,0,0,0
|
access_partner_task user,base.res.partner user,base.model_res_partner,project.group_project_user,1,0,0,0
|
||||||
access_task_on_partner,project.task on partners,model_project_task,base.group_user,1,0,0,0
|
access_task_on_partner,project.task on partners,model_project_task,base.group_user,1,0,0,0
|
||||||
access_project_on_partner,project.project on partners,model_project_project,base.group_user,1,0,0,0
|
access_project_on_partner,project.project on partners,model_project_project,base.group_user,1,0,0,0
|
||||||
access_project_task_sale_user,project.task salesman,model_project_task,base.group_sale_salesman,1,0,0,0
|
access_project_task_sale_user,project.task salesman,model_project_task,base.group_sale_salesman,1,1,1,1
|
||||||
|
access_project_task_type_sale_user,project.task.type salesman,project.model_project_task_type,base.group_sale_salesman,1,1,1,1
|
||||||
|
access_project_task_history_sale_user,project.task.history salesman,project.model_project_task_history,base.group_sale_salesman,1,1,1,1
|
||||||
access_project_project_sale_user,project.project salesman,model_project_project,base.group_sale_salesman,1,0,0,0
|
access_project_project_sale_user,project.project salesman,model_project_project,base.group_sale_salesman,1,0,0,0
|
||||||
access_account_analytic_line_project,account.analytic.line project,analytic.model_account_analytic_line,project.group_project_manager,1,1,1,1
|
access_account_analytic_line_project,account.analytic.line project,analytic.model_account_analytic_line,project.group_project_manager,1,1,1,1
|
||||||
access_project_task_history,project.task.history project,project.model_project_task_history,project.group_project_user,1,1,1,0
|
access_project_task_history,project.task.history project,project.model_project_task_history,project.group_project_user,1,1,1,0
|
||||||
|
|
|
|
@ -27,9 +27,6 @@ from tools.translate import _
|
||||||
import binascii
|
import binascii
|
||||||
import time
|
import time
|
||||||
import tools
|
import tools
|
||||||
from crm import wizard
|
|
||||||
|
|
||||||
wizard.mail_compose_message.SUPPORTED_MODELS.append('project.issue')
|
|
||||||
|
|
||||||
class project_issue_version(osv.osv):
|
class project_issue_version(osv.osv):
|
||||||
_name = "project.issue.version"
|
_name = "project.issue.version"
|
||||||
|
@ -50,6 +47,7 @@ class project_issue(base_stage, osv.osv):
|
||||||
_description = "Project Issue"
|
_description = "Project Issue"
|
||||||
_order = "priority, create_date desc"
|
_order = "priority, create_date desc"
|
||||||
_inherit = ['ir.needaction_mixin', 'mail.thread']
|
_inherit = ['ir.needaction_mixin', 'mail.thread']
|
||||||
|
_mail_compose_message = True
|
||||||
|
|
||||||
def _get_default_project_id(self, cr, uid, context=None):
|
def _get_default_project_id(self, cr, uid, context=None):
|
||||||
""" Gives default project by checking if present in the context """
|
""" Gives default project by checking if present in the context """
|
||||||
|
|
|
@ -9,3 +9,5 @@ access_resource_calendar_project_manager,resource.calendar.project.manager,resou
|
||||||
access_project_issue_report_user,project.issue.report user,model_project_issue_report,project.group_project_user,1,0,0,0
|
access_project_issue_report_user,project.issue.report user,model_project_issue_report,project.group_project_user,1,0,0,0
|
||||||
access_mail_message_issue_project_user,mail.message.user,mail.model_mail_message,project.group_project_user,1,1,1,0
|
access_mail_message_issue_project_user,mail.message.user,mail.model_mail_message,project.group_project_user,1,1,1,0
|
||||||
access_crm_case_section,crm.case.section,crm.model_crm_case_section,project.group_project_user,1,0,0,0
|
access_crm_case_section,crm.case.section,crm.model_crm_case_section,project.group_project_user,1,0,0,0
|
||||||
|
access_project_issue_salesman,project.issue,model_project_issue,base.group_sale_salesman,1,0,0,0
|
||||||
|
access_project_issue_manager,project.issue,model_project_issue,base.group_sale_manager,1,0,0,0
|
||||||
|
|
|
|
@ -7,3 +7,6 @@ access_resource_resource_user,user.user user,resource.model_resource_resource,pr
|
||||||
access_resource_calendar_leaves_user,user.calendar.leaves user,resource.model_resource_calendar_leaves,project.group_project_user,1,1,1,1
|
access_resource_calendar_leaves_user,user.calendar.leaves user,resource.model_resource_calendar_leaves,project.group_project_user,1,1,1,1
|
||||||
access_resource_resource_manager,user.user manager,resource.model_resource_resource,project.group_project_manager,1,1,1,1
|
access_resource_resource_manager,user.user manager,resource.model_resource_resource,project.group_project_manager,1,1,1,1
|
||||||
access_project_user_allocation_manager,project.user.allocation.manager,model_project_user_allocation,project.group_project_manager,1,1,1,1
|
access_project_user_allocation_manager,project.user.allocation.manager,model_project_user_allocation,project.group_project_manager,1,1,1,1
|
||||||
|
access_project_resource_calendar_attendance,resource.calendar.attendance,resource.model_resource_calendar_attendance,project.group_project_manager,1,0,0,0
|
||||||
|
|
||||||
|
|
||||||
|
|
|
|
@ -2,3 +2,5 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||||
access_report_timesheet_task_user_manager,report.timesheet.task.user.manager,model_report_timesheet_task_user,project.group_project_manager,1,1,1,1
|
access_report_timesheet_task_user_manager,report.timesheet.task.user.manager,model_report_timesheet_task_user,project.group_project_manager,1,1,1,1
|
||||||
access_hr_analytic_timesheet_user,hr.analytic.timesheet.user,hr_timesheet_sheet.model_hr_analytic_timesheet,project.group_project_user,1,1,1,0
|
access_hr_analytic_timesheet_user,hr.analytic.timesheet.user,hr_timesheet_sheet.model_hr_analytic_timesheet,project.group_project_user,1,1,1,0
|
||||||
access_hr_timesheet_sheet_sheet_user,hr.timesheet.sheet.sheet.user,hr_timesheet_sheet.model_hr_timesheet_sheet_sheet,project.group_project_user,1,1,1,0
|
access_hr_timesheet_sheet_sheet_user,hr.timesheet.sheet.sheet.user,hr_timesheet_sheet.model_hr_timesheet_sheet_sheet,project.group_project_user,1,1,1,0
|
||||||
|
access_sale_order_manager,sale.order,sale.model_sale_order,project.group_project_manager,1,0,0,0
|
||||||
|
access_sale_order_user,sale.order,sale.model_sale_order,project.group_project_user,1,0,0,0
|
||||||
|
|
|
|
@ -13,11 +13,6 @@
|
||||||
<button string="Cancel" type="object" name="cancel" class="oe_link"/>
|
<button string="Cancel" type="object" name="cancel" class="oe_link"/>
|
||||||
</header>
|
</header>
|
||||||
<group>
|
<group>
|
||||||
<group>
|
|
||||||
<separator string="Invoicing" colspan="2"/>
|
|
||||||
<field name="default_invoice_method" class="oe_inline"/>
|
|
||||||
<field name="decimal_precision" class="oe_inline"/>
|
|
||||||
</group>
|
|
||||||
<group>
|
<group>
|
||||||
<separator string="Purchase Order" colspan="2"/>
|
<separator string="Purchase Order" colspan="2"/>
|
||||||
<field name="group_purchase_pricelist"/>
|
<field name="group_purchase_pricelist"/>
|
||||||
|
@ -28,6 +23,11 @@
|
||||||
<field name="module_warning"/>
|
<field name="module_warning"/>
|
||||||
<field name="module_purchase_analytic_plans"/>
|
<field name="module_purchase_analytic_plans"/>
|
||||||
</group>
|
</group>
|
||||||
|
<group>
|
||||||
|
<separator string="Invoicing" colspan="2"/>
|
||||||
|
<field name="default_invoice_method" class="oe_inline"/>
|
||||||
|
<field name="decimal_precision" class="oe_inline"/>
|
||||||
|
</group>
|
||||||
</group>
|
</group>
|
||||||
</form>
|
</form>
|
||||||
</field>
|
</field>
|
||||||
|
|
|
@ -64,3 +64,4 @@ access_account_account_purchase_manager,account.account purchase manager,account
|
||||||
access_account_journal_purchase_manager,account.journal purchase manager,account.model_account_journal,purchase.group_purchase_manager,1,0,0,0
|
access_account_journal_purchase_manager,account.journal purchase manager,account.model_account_journal,purchase.group_purchase_manager,1,0,0,0
|
||||||
access_stock_tracking_purchase_user,stock.tracking purchase.user,stock.model_stock_tracking,purchase.group_purchase_user,1,1,1,0
|
access_stock_tracking_purchase_user,stock.tracking purchase.user,stock.model_stock_tracking,purchase.group_purchase_user,1,1,1,0
|
||||||
access_stock_location_purchase_manager,stock.location purchase manager,stock.model_stock_location,purchase.group_purchase_manager,1,0,0,0
|
access_stock_location_purchase_manager,stock.location purchase manager,stock.model_stock_location,purchase.group_purchase_manager,1,0,0,0
|
||||||
|
access_stock_warehouse_orderpoint_manager,stock.warehouse.orderpoint,procurement.model_stock_warehouse_orderpoint,purchase.group_purchase_manager,1,0,0,0
|
||||||
|
|
|
|
@ -175,7 +175,6 @@
|
||||||
<field domain="[('parent_id','=',partner_id)]" name="partner_invoice_id" groups="sale.group_delivery_invoice_address"/>
|
<field domain="[('parent_id','=',partner_id)]" name="partner_invoice_id" groups="sale.group_delivery_invoice_address"/>
|
||||||
<field domain="[('parent_id','=',partner_id)]" name="partner_shipping_id" groups="sale.group_delivery_invoice_address"/>
|
<field domain="[('parent_id','=',partner_id)]" name="partner_shipping_id" groups="sale.group_delivery_invoice_address"/>
|
||||||
|
|
||||||
<field domain="[('type','=','sale')]" name="pricelist_id" groups="product.group_sale_pricelist" on_change="onchange_pricelist_id(pricelist_id,order_line)"/>
|
|
||||||
<field name="project_id" context="{'partner_id':partner_id, 'pricelist_id':pricelist_id, 'default_name':name}" groups="sale.group_analytic_accounting" domain="[('type','in',['view','normal','contract'])]"/>
|
<field name="project_id" context="{'partner_id':partner_id, 'pricelist_id':pricelist_id, 'default_name':name}" groups="sale.group_analytic_accounting" domain="[('type','in',['view','normal','contract'])]"/>
|
||||||
</group>
|
</group>
|
||||||
<group>
|
<group>
|
||||||
|
|
|
@ -57,4 +57,6 @@ access_product_pricelist_type_sale_manager,product.pricelist.type salemanager,pr
|
||||||
access_product_pricelist_sale_manager,product.pricelist salemanager,product.model_product_pricelist,base.group_sale_manager,1,1,1,1
|
access_product_pricelist_sale_manager,product.pricelist salemanager,product.model_product_pricelist,base.group_sale_manager,1,1,1,1
|
||||||
access_product_group_res_partner_sale_manager,res_partner group_sale_manager,base.model_res_partner,base.group_sale_manager,1,1,1,0
|
access_product_group_res_partner_sale_manager,res_partner group_sale_manager,base.model_res_partner,base.group_sale_manager,1,1,1,0
|
||||||
access_product_pricelist_version_sale_manager,product.pricelist.version sale_manager,product.model_product_pricelist_version,base.group_sale_manager,1,1,1,1
|
access_product_pricelist_version_sale_manager,product.pricelist.version sale_manager,product.model_product_pricelist_version,base.group_sale_manager,1,1,1,1
|
||||||
access_account_invoice_report_salesman,account.invoice.report salesman,account.model_account_invoice_report,base.group_sale_salesman,1,0,0,0
|
access_account_invoice_report_salesman,account.invoice.report salesman,account.model_account_invoice_report,base.group_sale_salesman,1,0,0,0
|
||||||
|
access_stock_warehouse_orderpoint_sale_salesman,stock.warehouse.orderpoint,procurement.model_stock_warehouse_orderpoint,base.group_sale_salesman,1,0,0,0
|
||||||
|
access_account_move_line_salesman,account.move.line invoice,account.model_account_move_line,base.group_sale_salesman,1,0,0,0
|
||||||
|
|
|
|
@ -8,14 +8,14 @@ msgstr ""
|
||||||
"Project-Id-Version: openobject-addons\n"
|
"Project-Id-Version: openobject-addons\n"
|
||||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
|
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
|
||||||
"PO-Revision-Date: 2012-06-08 09:02+0000\n"
|
"PO-Revision-Date: 2012-07-06 21:31+0000\n"
|
||||||
"Last-Translator: Tomomi Mengelberg <tomomi.mengelberg@aquasys.co.jp>\n"
|
"Last-Translator: Akira Hiyama <Unknown>\n"
|
||||||
"Language-Team: Japanese <ja@li.org>\n"
|
"Language-Team: Japanese <ja@li.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-06-09 05:39+0000\n"
|
"X-Launchpad-Export-Date: 2012-07-07 05:13+0000\n"
|
||||||
"X-Generator: Launchpad (build 15376)\n"
|
"X-Generator: Launchpad (build 15558)\n"
|
||||||
|
|
||||||
#. module: sale_crm
|
#. module: sale_crm
|
||||||
#: field:sale.order,categ_id:0
|
#: field:sale.order,categ_id:0
|
||||||
|
@ -105,13 +105,13 @@ msgstr "オポチュニティ成立"
|
||||||
#. module: sale_crm
|
#. module: sale_crm
|
||||||
#: view:board.board:0
|
#: view:board.board:0
|
||||||
msgid "My Planned Revenues by Stage"
|
msgid "My Planned Revenues by Stage"
|
||||||
msgstr "状況による私の計画売上高"
|
msgstr "段階別私の計画売上高"
|
||||||
|
|
||||||
#. module: sale_crm
|
#. module: sale_crm
|
||||||
#: code:addons/sale_crm/wizard/crm_make_sale.py:110
|
#: code:addons/sale_crm/wizard/crm_make_sale.py:110
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Opportunity '%s' is converted to Quotation."
|
msgid "Opportunity '%s' is converted to Quotation."
|
||||||
msgstr "オポチュニティの'%s' は、見積りへ変わりました。"
|
msgstr "オポチュニティの'%s' は、見積に変換されました。"
|
||||||
|
|
||||||
#. module: sale_crm
|
#. module: sale_crm
|
||||||
#: view:sale.order:0
|
#: view:sale.order:0
|
||||||
|
|
|
@ -2,3 +2,4 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||||
access_mrp_bom_user,mrp.bom,mrp.model_mrp_bom,base.group_sale_salesman,1,0,0,0
|
access_mrp_bom_user,mrp.bom,mrp.model_mrp_bom,base.group_sale_salesman,1,0,0,0
|
||||||
access_sale_order_manufacturing_user,sale.order manufacturing.user,sale.model_sale_order,mrp.group_mrp_user,1,1,0,0
|
access_sale_order_manufacturing_user,sale.order manufacturing.user,sale.model_sale_order,mrp.group_mrp_user,1,1,0,0
|
||||||
access_sale_order_line_manufacturing_user,sale.order.line manufacturing.user,sale.model_sale_order_line,mrp.group_mrp_user,1,1,0,0
|
access_sale_order_line_manufacturing_user,sale.order.line manufacturing.user,sale.model_sale_order_line,mrp.group_mrp_user,1,1,0,0
|
||||||
|
access_mrp_bom_revision_salesman,mrp.bom.revision,mrp.model_mrp_bom_revision,base.group_sale_salesman,1,0,0,0
|
||||||
|
|
|
|
@ -22,10 +22,10 @@ access_stock_production_lot_user,stock.production.lot user,model_stock_productio
|
||||||
access_stock_production_lot_revision,stock.production.lot.revision,model_stock_production_lot_revision,stock.group_stock_user,1,1,1,1
|
access_stock_production_lot_revision,stock.production.lot.revision,model_stock_production_lot_revision,stock.group_stock_user,1,1,1,1
|
||||||
access_stock_move_manager,stock.move manager,model_stock_move,stock.group_stock_manager,1,1,0,0
|
access_stock_move_manager,stock.move manager,model_stock_move,stock.group_stock_manager,1,1,0,0
|
||||||
access_stock_move_user,stock.move user,model_stock_move,stock.group_stock_user,1,0,0,0
|
access_stock_move_user,stock.move user,model_stock_move,stock.group_stock_user,1,0,0,0
|
||||||
access_stock_inventory_user,stock.inventory user,model_stock_inventory,stock.group_stock_user,1,1,1,1
|
access_stock_inventory_user,stock.inventory user,model_stock_inventory,stock.group_stock_user,1,0,0,0
|
||||||
access_stock_inventory_manager,stock.inventory manager,model_stock_inventory,stock.group_stock_manager,1,0,0,0
|
access_stock_inventory_manager,stock.inventory manager,model_stock_inventory,stock.group_stock_manager,1,1,1,1
|
||||||
access_stock_inventory_line_user,stock.inventory.line user,model_stock_inventory_line,stock.group_stock_user,1,1,1,1
|
access_stock_inventory_line_user,stock.inventory.line user,model_stock_inventory_line,stock.group_stock_user,1,0,0,0
|
||||||
access_stock_inventory_line_manager,stock.inventory.line manager,model_stock_inventory_line,stock.group_stock_manager,1,0,0,0
|
access_stock_inventory_line_manager,stock.inventory.line manager,model_stock_inventory_line,stock.group_stock_manager,1,1,1,1
|
||||||
access_stock_report_prodlots,stock.report.prodlots,model_stock_report_prodlots,stock.group_stock_manager,1,0,0,0
|
access_stock_report_prodlots,stock.report.prodlots,model_stock_report_prodlots,stock.group_stock_manager,1,0,0,0
|
||||||
access_stock_location_sale_manager,stock.location sale manager,model_stock_location,base.group_sale_manager,1,0,0,0
|
access_stock_location_sale_manager,stock.location sale manager,model_stock_location,base.group_sale_manager,1,0,0,0
|
||||||
access_stock_location_stock_manager,stock.location stock manager,model_stock_location,stock.group_stock_manager,1,0,0,0
|
access_stock_location_stock_manager,stock.location stock manager,model_stock_location,stock.group_stock_manager,1,0,0,0
|
||||||
|
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-07-06 04:58+0000\n"
|
"X-Launchpad-Export-Date: 2012-07-07 05:13+0000\n"
|
||||||
"X-Generator: Launchpad (build 15558)\n"
|
"X-Generator: Launchpad (build 15558)\n"
|
||||||
|
|
||||||
#. module: survey
|
#. module: survey
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
# Mongolian 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 01:37+0100\n"
|
||||||
|
"PO-Revision-Date: 2012-07-08 18:51+0000\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: Mongolian <mn@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-07-09 04:51+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 15558)\n"
|
||||||
|
|
||||||
|
#. module: web_livechat
|
||||||
|
#: sql_constraint:publisher_warranty.contract:0
|
||||||
|
msgid "That contract is already registered in the system."
|
||||||
|
msgstr "Энэ гэрээг системд өмнө нь бүртгэгдсэн байна."
|
||||||
|
|
||||||
|
#. module: web_livechat
|
||||||
|
#: model:ir.model,name:web_livechat.model_publisher_warranty_contract
|
||||||
|
msgid "publisher_warranty.contract"
|
||||||
|
msgstr "publisher_warranty.contract"
|
Loading…
Reference in New Issue