[MERGe] trunk
bzr revid: qdp-launchpad@openerp.com-20120706150241-ngjy36angw6lu3nj
This commit is contained in:
commit
beebdb9f4e
|
@ -8,14 +8,14 @@ msgstr ""
|
|||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-02-08 00:35+0000\n"
|
||||
"PO-Revision-Date: 2012-06-20 16:18+0000\n"
|
||||
"Last-Translator: Raphael Collet (OpenERP) <Unknown>\n"
|
||||
"PO-Revision-Date: 2012-07-06 02:41+0000\n"
|
||||
"Last-Translator: Akira Hiyama <Unknown>\n"
|
||||
"Language-Team: Japanese <ja@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-06-22 04:38+0000\n"
|
||||
"X-Generator: Launchpad (build 15461)\n"
|
||||
"X-Launchpad-Export-Date: 2012-07-06 04:58+0000\n"
|
||||
"X-Generator: Launchpad (build 15558)\n"
|
||||
|
||||
#. module: account
|
||||
#: view:account.invoice.report:0
|
||||
|
@ -4942,7 +4942,7 @@ msgstr "会計表"
|
|||
#. module: account
|
||||
#: field:account.journal.column,name:0
|
||||
msgid "Column Name"
|
||||
msgstr "カラム名"
|
||||
msgstr "列名"
|
||||
|
||||
#. module: account
|
||||
#: view:account.general.journal:0
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
{
|
||||
'name': 'Projects Management: hr_expense link',
|
||||
'version': '1.1',
|
||||
'category': 'Sales Management',
|
||||
'category': 'Hidden',
|
||||
'description': """
|
||||
This module is for modifying project view to show some data related to the hr_expense module.
|
||||
======================================================================================================
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
{
|
||||
'name': 'Contracts Management: hr_expense link',
|
||||
'version': '1.1',
|
||||
'category': 'Sales Management',
|
||||
'category': 'Hidden',
|
||||
'description': """
|
||||
This module is for modifying account analytic view to show some data related to the hr_expense module.
|
||||
======================================================================================================
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
"name" : "Contract On Project",
|
||||
"version": "1.1",
|
||||
"author" : "OpenERP SA",
|
||||
'category': 'Hidden',
|
||||
"website" : "http://www.openerp.com",
|
||||
"depends" : ["project", "account_analytic_analysis"],
|
||||
"description": """
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2010 OpenERP s.a. (<http://openerp.com>).
|
||||
# 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
|
||||
|
@ -14,9 +15,12 @@
|
|||
# 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/>.
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
import publisher_warranty
|
||||
|
||||
import base_calendar
|
||||
import crm_meeting
|
||||
import wizard
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
@ -22,7 +22,7 @@
|
|||
{
|
||||
"name": "Calendar Layer",
|
||||
"version": "1.0",
|
||||
"depends": ["base", "mail"],
|
||||
"depends": ["base", "base_status", "mail"],
|
||||
'description': """
|
||||
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/ir.model.access.csv',
|
||||
'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'],
|
||||
"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_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_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
|
||||
|
|
|
|
@ -29,6 +29,7 @@ class base_state(object):
|
|||
- ``date_closed`` (datetime field)
|
||||
- ``user_id`` (many2one to res.users)
|
||||
- ``partner_id`` (many2one to res.partner)
|
||||
- ``email_from`` (char field)
|
||||
- ``state`` (selection field)
|
||||
"""
|
||||
|
||||
|
|
|
@ -22,8 +22,8 @@
|
|||
import crm
|
||||
import crm_action_rule
|
||||
import crm_segmentation
|
||||
import crm_meeting
|
||||
import crm_lead
|
||||
import crm_meeting
|
||||
import crm_phonecall
|
||||
import report
|
||||
import wizard
|
||||
|
|
|
@ -69,10 +69,10 @@
|
|||
<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.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="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 model="ir.ui.view" id="board_crm_statistical_form">
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<field name="name">Meetings</field>
|
||||
<field name="resource">ir.ui.menu</field>
|
||||
<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 model="crm.case.section" id="section_sales_marketing_department">
|
||||
|
|
|
@ -41,6 +41,7 @@ class crm_lead(base_stage, osv.osv):
|
|||
_description = "Lead/Opportunity"
|
||||
_order = "priority,date_action,id desc"
|
||||
_inherit = ['ir.needaction_mixin', 'mail.thread']
|
||||
_mail_compose_message = True
|
||||
|
||||
def _get_default_section_id(self, cr, uid, context=None):
|
||||
""" 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):
|
||||
""" 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
|
||||
@return : Dictionary value for created Meeting view
|
||||
"""
|
||||
if context is None:
|
||||
context = {}
|
||||
value = {}
|
||||
data_obj = self.pool.get('ir.model.data')
|
||||
for opp in self.browse(cr, uid, ids, context=context):
|
||||
# Get meeting views
|
||||
tree_view = data_obj.get_object_reference(cr, uid, 'crm', 'crm_case_tree_view_meet')
|
||||
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')
|
||||
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
|
||||
|
||||
opportunity = self.browse(cr, uid, ids[0], context)
|
||||
res = self.pool.get('ir.actions.act_window').for_xml_id(cr, uid, 'base_calendar', 'action_crm_meeting', context)
|
||||
res['context'] = {
|
||||
'default_opportunity_id': opportunity.id,
|
||||
'default_partner_id': opportunity.partner_id and opportunity.partner_id.id or False,
|
||||
'default_user_id': uid,
|
||||
'default_section_id': opportunity.section_id and opportunity.section_id.id or False,
|
||||
'default_email_from': opportunity.email_from,
|
||||
'default_state': 'open',
|
||||
'default_name': opportunity.name,
|
||||
}
|
||||
return res
|
||||
|
||||
def unlink(self, cr, uid, ids, context=None):
|
||||
for lead in self.browse(cr, uid, ids, context):
|
||||
|
|
|
@ -289,7 +289,7 @@
|
|||
<t t-name="kanban-box">
|
||||
<div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_global_click">
|
||||
<div class="oe_dropdown_toggle oe_dropdown_kanban">
|
||||
<span class="oe_e">i</span>
|
||||
<span class="oe_e">í</span>
|
||||
<ul class="oe_dropdown_menu">
|
||||
<li><a type="edit" >Edit...</a></li>
|
||||
<li><a type="delete">Delete</a></li>
|
||||
|
@ -311,18 +311,14 @@
|
|||
<field name="partner_id"/>
|
||||
</div>
|
||||
<div style="padding-left: 0.5em">
|
||||
<i>
|
||||
<t t-if="record.date_deadline.raw_value and record.date_deadline.raw_value lt (new Date())" t-set="red">oe_kanban_text_red</t>
|
||||
<span t-attf-class="#{red || ''}">
|
||||
<field name="date_action"/>
|
||||
</span>
|
||||
<t t-if="record.date_action.raw_value"> : </t>
|
||||
<field name="title_action"/>
|
||||
</i>
|
||||
<t t-if="record.date_deadline.raw_value and record.date_deadline.raw_value lt (new Date())" t-set="red">oe_kanban_text_red</t>
|
||||
<span t-attf-class="#{red || ''}"><field name="date_action"/></span>
|
||||
<t t-if="record.date_action.raw_value"> : </t>
|
||||
<field name="title_action"/>
|
||||
</div>
|
||||
<div class="oe_right">
|
||||
<a t-if="record.priority.raw_value == 1" icon="star-on" type="object" name="set_normal_priority"/>
|
||||
<a t-if="record.priority.raw_value != 1" icon="star-off" type="object" name="set_high_priority" style="opacity:0.7; filter:alpha(opacity=70);"/>
|
||||
<a t-if="record.priority.raw_value == 1" type="object" name="set_normal_priority" class="oe_e oe_star_on">7</a>
|
||||
<a t-if="record.priority.raw_value != 1" type="object" name="set_high_priority" class="oe_e oe_star_off">7</a>
|
||||
<!--
|
||||
<t t-if="record.date_deadline.raw_value and record.date_deadline.raw_value lt (new Date())" t-set="red">oe_kaban_status_red</t>
|
||||
<span t-attf-class="oe_kanban_status #{red}"> </span>
|
||||
|
@ -471,7 +467,7 @@
|
|||
<label for="planned_revenue" class="oe_edit_only"/>
|
||||
<h2>
|
||||
<field name="planned_revenue" class="oe_inline"/>
|
||||
<field name="company_currency" class="oe_edit_only oe_inline"/> at
|
||||
<field name="company_currency" class="oe_inline"/> at
|
||||
<field name="probability" class="oe_inline"/> %% success rate
|
||||
</h2>
|
||||
</div>
|
||||
|
|
|
@ -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
|
||||
import tools
|
||||
from tools.translate import _
|
||||
import logging
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
class crm_lead(base_stage, osv.osv):
|
||||
""" CRM Leads """
|
||||
_name = 'crm.lead'
|
||||
|
||||
class crm_meeting(base_state, osv.Model):
|
||||
#
|
||||
# crm.meeting is defined in module base_calendar
|
||||
#
|
||||
class crm_meeting(osv.Model):
|
||||
""" Model for CRM meetings """
|
||||
_name = 'crm.meeting'
|
||||
_description = "Meeting"
|
||||
_order = "id desc"
|
||||
_inherit = ["calendar.event", 'ir.needaction_mixin', "mail.thread"]
|
||||
_inherit = 'crm.meeting'
|
||||
_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)]},
|
||||
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'),
|
||||
'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):
|
||||
|
@ -76,52 +43,28 @@ class crm_meeting(base_state, osv.Model):
|
|||
self.create_send_note(cr, uid, [obj_id], context=context)
|
||||
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):
|
||||
if context is None:
|
||||
context = {}
|
||||
# update context: if come from phonecall, default state values can make the message_append_note crash
|
||||
context.pop('default_state', False)
|
||||
for meeting in self.browse(cr, uid, ids, context=context):
|
||||
# convert datetime field to a datetime, using server format, then
|
||||
# convert it to the user TZ and re-render it with %Z to add the timezone
|
||||
meeting_datetime = fields.DT.datetime.strptime(meeting.date, tools.DEFAULT_SERVER_DATETIME_FORMAT)
|
||||
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)
|
||||
# in the message, transpose meeting.date to the timezone of the current user
|
||||
meeting_date = 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)")
|
||||
if meeting.opportunity_id: # meeting can be create from phonecalls or opportunities, therefore checking for the parent
|
||||
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)
|
||||
elif 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)
|
||||
else:
|
||||
parent_message = message
|
||||
if parent_message:
|
||||
meeting.message_append_note(body=parent_message)
|
||||
message = _("A meeting has been <b>scheduled</b> on <em>%s</em>.") % (meeting_date_tz)
|
||||
meeting.message_append_note(body=message)
|
||||
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):
|
||||
""" Calendar Attendee """
|
||||
|
||||
|
@ -155,8 +98,6 @@ class calendar_attendee(osv.osv):
|
|||
relation="crm.case.categ", multi='categ_id'),
|
||||
}
|
||||
|
||||
calendar_attendee()
|
||||
|
||||
class res_users(osv.osv):
|
||||
_name = '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'))
|
||||
return user_id
|
||||
|
||||
res_users()
|
||||
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -4,22 +4,16 @@
|
|||
|
||||
<!-- 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="section_id" ref="section_sales_department"/>
|
||||
<field name="object_id" search="[('model','=','crm.meeting')]" model="ir.model"/>
|
||||
</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="section_id" ref="section_sales_department"/>
|
||||
<field name="object_id" search="[('model','=','crm.meeting')]" model="ir.model"/>
|
||||
</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="section_id" ref="section_sales_department"/>
|
||||
<field name="object_id" search="[('model','=','crm.meeting')]" model="ir.model"/>
|
||||
</record>
|
||||
|
||||
<record model="res.request.link" id="request_link_meeting">
|
||||
|
|
|
@ -1,102 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<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"
|
||||
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>
|
||||
</openerp>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<field name="name">Meetings</field>
|
||||
<field name="resource">ir.ui.menu</field>
|
||||
<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>
|
||||
|
||||
</data>
|
||||
|
|
|
@ -2,361 +2,48 @@
|
|||
<openerp>
|
||||
<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 -->
|
||||
|
||||
<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="model">crm.meeting</field>
|
||||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="base_calendar.view_crm_meeting_form"/>
|
||||
<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>
|
||||
</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 name="organizer" position="after">
|
||||
<field name="section_id" widget="selection"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- 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="model">crm.meeting</field>
|
||||
<field name="type">calendar</field>
|
||||
<field name="inherit_id" ref="base_calendar.view_crm_meeting_calendar"/>
|
||||
<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"/>
|
||||
<field name="partner_id" position="after">
|
||||
<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>
|
||||
</record>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Calendar Attendee Form View -->
|
||||
<!-- Calendar Attendee Form View -->
|
||||
|
||||
<record id="attendee_form_view_inherit" model="ir.ui.view">
|
||||
<field name="name">calendar.attendee.form.inherit</field>
|
||||
<field name="model">calendar.attendee</field>
|
||||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="base_calendar.base_calendar_attendee_form_view"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="ref" position="after">
|
||||
<field name="categ_id" string="Event Type"/>
|
||||
</field>
|
||||
<record id="attendee_form_view_inherit" model="ir.ui.view">
|
||||
<field name="name">calendar.attendee.form.inherit</field>
|
||||
<field name="model">calendar.attendee</field>
|
||||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="base_calendar.base_calendar_attendee_form_view"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="ref" position="after">
|
||||
<field name="categ_id" string="Event Type"/>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -241,49 +241,20 @@ class crm_phonecall(base_state, osv.osv):
|
|||
return opportunity_dict
|
||||
|
||||
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
|
||||
@return : Dictionary value for created Meeting view
|
||||
"""
|
||||
value = {}
|
||||
for phonecall in self.browse(cr, uid, ids, context=context):
|
||||
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
|
||||
|
||||
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
|
||||
phonecall = self.browse(cr, uid, ids[0], context)
|
||||
res = self.pool.get('ir.actions.act_window').for_xml_id(cr, uid, 'base_calendar', 'action_crm_meeting', context)
|
||||
res['context'] = {
|
||||
'default_phonecall_id': phonecall.id,
|
||||
'default_partner_id': phonecall.partner_id and phonecall.partner_id.id or False,
|
||||
'default_user_id': uid,
|
||||
'default_email_from': phonecall.email_from,
|
||||
'default_state': 'open',
|
||||
'default_name': phonecall.name,
|
||||
}
|
||||
return res
|
||||
|
||||
# ----------------------------------------
|
||||
# OpenChatter
|
||||
|
|
|
@ -8,19 +8,19 @@ 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-06-11 07:49+0000\n"
|
||||
"Last-Translator: Tomomi Mengelberg <tomomi.mengelberg@aquasys.co.jp>\n"
|
||||
"PO-Revision-Date: 2012-07-06 04:15+0000\n"
|
||||
"Last-Translator: Akira Hiyama <Unknown>\n"
|
||||
"Language-Team: Japanese <ja@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-06-12 04:55+0000\n"
|
||||
"X-Generator: Launchpad (build 15389)\n"
|
||||
"X-Launchpad-Export-Date: 2012-07-06 04:58+0000\n"
|
||||
"X-Generator: Launchpad (build 15558)\n"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.lead.report:0
|
||||
msgid "# Leads"
|
||||
msgstr "# リード"
|
||||
msgstr "リード番号"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.lead:0 selection:crm.lead,type:0 view:crm.lead.report:0
|
||||
|
@ -36,12 +36,12 @@ msgstr "必要なサービス"
|
|||
#. module: crm
|
||||
#: selection:crm.meeting,rrule_type:0
|
||||
msgid "Monthly"
|
||||
msgstr "毎月"
|
||||
msgstr "月次"
|
||||
|
||||
#. module: crm
|
||||
#: model:ir.model,name:crm.model_crm_case_stage
|
||||
msgid "Stage of case"
|
||||
msgstr "お問い合わせ対応状況"
|
||||
msgstr "案件のステージ"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.meeting:0
|
||||
|
@ -82,7 +82,7 @@ msgstr " "
|
|||
#. module: crm
|
||||
#: view:crm.lead.report:0 field:crm.phonecall.report,delay_close:0
|
||||
msgid "Delay to close"
|
||||
msgstr ""
|
||||
msgstr "閉鎖の遅延"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.lead:0
|
||||
|
@ -114,13 +114,13 @@ msgstr "日"
|
|||
#. module: crm
|
||||
#: sql_constraint:crm.case.section:0
|
||||
msgid "The code of the sales team must be unique !"
|
||||
msgstr ""
|
||||
msgstr "営業チームのコードは固有である必要があります。"
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/crm_lead.py:553
|
||||
#, python-format
|
||||
msgid "Lead '%s' has been converted to an opportunity."
|
||||
msgstr ""
|
||||
msgstr "リード %s はオポチュニティに変換されました。"
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/crm_lead.py:294
|
||||
|
|
|
@ -127,7 +127,7 @@
|
|||
<xpath expr="//div[@name='buttons']" position="inside">
|
||||
<button type="action"
|
||||
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}"/>
|
||||
<button type="action" string="Schedule a Call"
|
||||
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_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_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_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_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_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
|
||||
|
@ -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_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_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.
|
||||
-
|
||||
!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
|
||||
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') })
|
||||
lead_obj = self.pool.get("crm.lead")
|
||||
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') })
|
||||
self._check(cr, uid)
|
||||
-
|
||||
I create new lead to check record rule.
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
import mail_compose_message
|
||||
import crm_add_note
|
||||
|
||||
import crm_lead_to_partner
|
||||
|
|
|
@ -41,58 +41,23 @@ class crm_phonecall2meeting(osv.osv_memory):
|
|||
return {'type':'ir.actions.act_window_close'}
|
||||
|
||||
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
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of Phonecall to Meeting IDs
|
||||
@param context: A standard dictionary for contextual values
|
||||
|
||||
@return : Dictionary value for created Meeting view
|
||||
"""
|
||||
value = {}
|
||||
record_id = context and context.get('active_id', False) or False
|
||||
|
||||
if record_id:
|
||||
phonecall_obj = self.pool.get('crm.phonecall')
|
||||
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
|
||||
res = {}
|
||||
phonecall_id = context and context.get('active_id', False) or False
|
||||
if phonecall_id:
|
||||
phonecall = self.pool.get('crm.phonecall').browse(cr, uid, phonecall_id, context)
|
||||
res = self.pool.get('ir.actions.act_window').for_xml_id(cr, uid, 'base_calendar', 'action_crm_meeting', context)
|
||||
res['context'] = {
|
||||
'default_phonecall_id': phonecall.id,
|
||||
'default_partner_id': phonecall.partner_id and phonecall.partner_id.id or False,
|
||||
'default_user_id': uid,
|
||||
'default_email_from': phonecall.email_from,
|
||||
'default_state': 'open',
|
||||
'default_name': phonecall.name,
|
||||
}
|
||||
return res
|
||||
|
||||
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="domain">[('user_id','=', dctx_user_id)]</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>
|
||||
|
||||
|
||||
|
@ -103,7 +103,7 @@
|
|||
<record id="basic_calendar_fields_12" model="basic.calendar.fields">
|
||||
<field name="name" ref="caldav.field_event_organizer"/>
|
||||
<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>
|
||||
</record>
|
||||
<record id="basic_calendar_fields_13" model="basic.calendar.fields">
|
||||
|
@ -127,7 +127,7 @@
|
|||
<record id="basic_calendar_fields_16" model="basic.calendar.fields">
|
||||
<field name="name" ref="caldav.field_event_attendee"/>
|
||||
<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>
|
||||
</record>
|
||||
<record id="basic_calendar_fields_17" model="basic.calendar.fields">
|
||||
|
@ -163,7 +163,7 @@
|
|||
<record id="basic_calendar_fields_22" model="basic.calendar.fields">
|
||||
<field name="name" ref="caldav.field_event_status"/>
|
||||
<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="fn">field</field>
|
||||
</record>
|
||||
|
@ -176,7 +176,7 @@
|
|||
<record id="basic_calendar_fields_24" model="basic.calendar.fields">
|
||||
<field name="name" ref="caldav.field_event_dtstamp"/>
|
||||
<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>
|
||||
</record>
|
||||
<record id="basic_calendar_fields_25" model="basic.calendar.fields">
|
||||
|
|
|
@ -22,14 +22,11 @@
|
|||
from base_status.base_stage import base_stage
|
||||
import binascii
|
||||
from crm import crm
|
||||
from crm import wizard
|
||||
from osv import fields, osv
|
||||
import time
|
||||
import tools
|
||||
from tools.translate import _
|
||||
|
||||
wizard.mail_compose_message.SUPPORTED_MODELS.append('crm.claim')
|
||||
|
||||
CRM_CLAIM_PENDING_STATES = (
|
||||
crm.AVAILABLE_STATES[2][0], # Cancelled
|
||||
crm.AVAILABLE_STATES[3][0], # Done
|
||||
|
@ -75,6 +72,7 @@ class crm_claim(base_stage, osv.osv):
|
|||
_description = "Claim"
|
||||
_order = "priority,date desc"
|
||||
_inherit = ['mail.thread']
|
||||
_mail_compose_message = True
|
||||
_columns = {
|
||||
'id': fields.integer('ID', readonly=True),
|
||||
'name': fields.char('Claim Subject', size=128, required=True),
|
||||
|
|
|
@ -8,14 +8,14 @@ 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-06-09 18:59+0000\n"
|
||||
"PO-Revision-Date: 2012-07-06 04:04+0000\n"
|
||||
"Last-Translator: Akira Hiyama <Unknown>\n"
|
||||
"Language-Team: Japanese <ja@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-06-10 04:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15376)\n"
|
||||
"X-Launchpad-Export-Date: 2012-07-06 04:58+0000\n"
|
||||
"X-Generator: Launchpad (build 15558)\n"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim.report,nbr:0
|
||||
|
@ -249,7 +249,7 @@ msgstr "次のアクション"
|
|||
#. module: crm_claim
|
||||
#: view:crm.claim.report:0
|
||||
msgid "My Sales Team(s)"
|
||||
msgstr "私の販売チーム"
|
||||
msgstr "私の営業チーム"
|
||||
|
||||
#. module: crm_claim
|
||||
#: model:crm.case.stage,name:crm_claim.stage_claim3
|
||||
|
@ -670,7 +670,7 @@ msgstr "クレームを検索する"
|
|||
#: field:crm.claim,section_id:0
|
||||
#: view:crm.claim.report:0
|
||||
msgid "Sales Team"
|
||||
msgstr "販売チーム"
|
||||
msgstr "営業チーム"
|
||||
|
||||
#. module: crm_claim
|
||||
#: selection:crm.claim.report,month:0
|
||||
|
|
|
@ -21,12 +21,9 @@
|
|||
|
||||
from base_status.base_stage import base_stage
|
||||
from crm import crm
|
||||
from crm import wizard
|
||||
from osv import fields, osv
|
||||
from tools.translate import _
|
||||
|
||||
wizard.mail_compose_message.SUPPORTED_MODELS.append('crm.fundraising')
|
||||
|
||||
class crm_fundraising(base_stage, osv.osv):
|
||||
""" Fund Raising Cases """
|
||||
|
||||
|
@ -34,6 +31,7 @@ class crm_fundraising(base_stage, osv.osv):
|
|||
_description = "Fund Raising"
|
||||
_order = "id desc"
|
||||
_inherit = ['mail.thread']
|
||||
_mail_compose_message = True
|
||||
_columns = {
|
||||
'id': fields.integer('ID', readonly=True),
|
||||
'name': fields.char('Name', size=128, required=True),
|
||||
|
|
|
@ -8,14 +8,14 @@ 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-06-09 19:04+0000\n"
|
||||
"PO-Revision-Date: 2012-07-06 04:05+0000\n"
|
||||
"Last-Translator: Akira Hiyama <Unknown>\n"
|
||||
"Language-Team: Japanese <ja@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-06-10 04:37+0000\n"
|
||||
"X-Generator: Launchpad (build 15376)\n"
|
||||
"X-Launchpad-Export-Date: 2012-07-06 04:58+0000\n"
|
||||
"X-Generator: Launchpad (build 15558)\n"
|
||||
|
||||
#. module: crm_fundraising
|
||||
#: field:crm.fundraising,planned_revenue:0
|
||||
|
@ -236,7 +236,7 @@ msgstr "最低"
|
|||
#: view:crm.fundraising:0
|
||||
#: view:crm.fundraising.report:0
|
||||
msgid "My Sales Team(s)"
|
||||
msgstr "私の販売チーム"
|
||||
msgstr "私の営業チーム"
|
||||
|
||||
#. module: crm_fundraising
|
||||
#: field:crm.fundraising,create_date:0
|
||||
|
@ -626,7 +626,7 @@ msgstr "責任者"
|
|||
msgid ""
|
||||
"Sales team to which Case belongs to. Define Responsible user and Email "
|
||||
"account for mail gateway."
|
||||
msgstr "案件が割当てられた販売チーム。担当ユーザとEメール・アカウントを指定します。"
|
||||
msgstr "案件が割当てられた営業チーム。担当ユーザとEメール・アカウントを指定します。"
|
||||
|
||||
#. module: crm_fundraising
|
||||
#: model:ir.model,name:crm_fundraising.model_crm_fundraising_report
|
||||
|
@ -763,7 +763,7 @@ msgstr "高い"
|
|||
#: field:crm.fundraising,section_id:0
|
||||
#: view:crm.fundraising.report:0
|
||||
msgid "Sales Team"
|
||||
msgstr "販売チーム"
|
||||
msgstr "営業チーム"
|
||||
|
||||
#. module: crm_fundraising
|
||||
#: field:crm.fundraising.report,create_date:0
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
|
||||
from base_status.base_state import base_state
|
||||
from crm import crm
|
||||
from crm import wizard
|
||||
from osv import fields, osv
|
||||
import tools
|
||||
from tools.translate import _
|
||||
|
@ -32,8 +31,6 @@ CRM_HELPDESK_STATES = (
|
|||
crm.AVAILABLE_STATES[4][0], # Pending
|
||||
)
|
||||
|
||||
wizard.mail_compose_message.SUPPORTED_MODELS.append('crm.helpdesk')
|
||||
|
||||
class crm_helpdesk(base_state, osv.osv):
|
||||
""" Helpdesk Cases """
|
||||
|
||||
|
@ -41,6 +38,7 @@ class crm_helpdesk(base_state, osv.osv):
|
|||
_description = "Helpdesk"
|
||||
_order = "id desc"
|
||||
_inherit = ['mail.thread']
|
||||
_mail_compose_message = True
|
||||
_columns = {
|
||||
'id': fields.integer('ID', readonly=True),
|
||||
'name': fields.char('Name', size=128, required=True),
|
||||
|
|
|
@ -8,14 +8,14 @@ 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-05-28 19:12+0000\n"
|
||||
"Last-Translator: Masaki Yamaya <Unknown>\n"
|
||||
"PO-Revision-Date: 2012-07-06 04:05+0000\n"
|
||||
"Last-Translator: Akira Hiyama <Unknown>\n"
|
||||
"Language-Team: Japanese <ja@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-05-29 04:46+0000\n"
|
||||
"X-Generator: Launchpad (build 15316)\n"
|
||||
"X-Launchpad-Export-Date: 2012-07-06 04:58+0000\n"
|
||||
"X-Generator: Launchpad (build 15558)\n"
|
||||
|
||||
#. module: crm_helpdesk
|
||||
#: field:crm.helpdesk.report,delay_close:0
|
||||
|
@ -207,7 +207,7 @@ msgstr "Eメールの数"
|
|||
#: view:crm.helpdesk:0
|
||||
#: view:crm.helpdesk.report:0
|
||||
msgid "My Sales Team(s)"
|
||||
msgstr "私の販売チーム"
|
||||
msgstr "私の営業チーム"
|
||||
|
||||
#. module: crm_helpdesk
|
||||
#: field:crm.helpdesk,create_date:0
|
||||
|
@ -533,7 +533,7 @@ msgstr "催促を送る"
|
|||
msgid ""
|
||||
"Sales team to which Case belongs to. Define "
|
||||
"Responsible user and Email account for mail gateway."
|
||||
msgstr "事象を割り当てる販売チーム。メールゲートウェイにと担当ユーザとEメールアカウントを作って下さい。"
|
||||
msgstr "事象を割り当てる営業チーム。メールゲートウェイにと担当ユーザとEメールアカウントを作って下さい。"
|
||||
|
||||
#. module: crm_helpdesk
|
||||
#: view:crm.helpdesk:0
|
||||
|
@ -708,7 +708,7 @@ msgstr "高い"
|
|||
#: field:crm.helpdesk,section_id:0
|
||||
#: view:crm.helpdesk.report:0
|
||||
msgid "Sales Team"
|
||||
msgstr "販売チーム"
|
||||
msgstr "営業チーム"
|
||||
|
||||
#. module: crm_helpdesk
|
||||
#: field:crm.helpdesk,date_action_last:0
|
||||
|
|
|
@ -8,14 +8,14 @@ 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-05-25 04:47+0000\n"
|
||||
"PO-Revision-Date: 2012-07-06 04:06+0000\n"
|
||||
"Last-Translator: Akira Hiyama <Unknown>\n"
|
||||
"Language-Team: Japanese <ja@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-06-28 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 15505)\n"
|
||||
"X-Launchpad-Export-Date: 2012-07-06 04:58+0000\n"
|
||||
"X-Generator: Launchpad (build 15558)\n"
|
||||
|
||||
#. module: crm_partner_assign
|
||||
#: field:crm.lead.forward.to.partner,send_to:0
|
||||
|
@ -858,7 +858,7 @@ msgstr "高"
|
|||
#: field:crm.lead.report.assign,section_id:0
|
||||
#: field:crm.partner.report.assign,section_id:0
|
||||
msgid "Sales Team"
|
||||
msgstr "販売チーム"
|
||||
msgstr "営業チーム"
|
||||
|
||||
#. module: crm_partner_assign
|
||||
#: field:crm.lead.report.assign,create_date:0
|
||||
|
|
|
@ -8,14 +8,14 @@ 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-05-10 18:04+0000\n"
|
||||
"Last-Translator: Raphael Collet (OpenERP) <Unknown>\n"
|
||||
"PO-Revision-Date: 2012-07-06 04:06+0000\n"
|
||||
"Last-Translator: Akira Hiyama <Unknown>\n"
|
||||
"Language-Team: Japanese <ja@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-05-11 05:04+0000\n"
|
||||
"X-Generator: Launchpad (build 15225)\n"
|
||||
"X-Launchpad-Export-Date: 2012-07-06 04:58+0000\n"
|
||||
"X-Generator: Launchpad (build 15558)\n"
|
||||
|
||||
#. module: crm_profiling
|
||||
#: view:crm_profiling.questionnaire:0
|
||||
|
@ -30,7 +30,7 @@ msgid ""
|
|||
"segmentation tool allows you to automatically assign a partner to a category "
|
||||
"according to his answers to the different questionnaires."
|
||||
msgstr ""
|
||||
"特定のトピックに関連した質問票を作成して、それを使って販売チームが適切な質問をするように指導できます。区分ツールを使って、質問に対する回答に応じて、パート"
|
||||
"特定のトピックに関連した質問票を作成して、それを使って営業チームが適切な質問をするように指導できます。区分ツールを使って、質問に対する回答に応じて、パート"
|
||||
"ナを自動的に区分することができます。"
|
||||
|
||||
#. module: crm_profiling
|
||||
|
|
|
@ -257,13 +257,15 @@
|
|||
<field name="inherit_id" ref="sale.view_order_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//group[@name='sale_total']" position="after">
|
||||
<group>
|
||||
<group width="50%%">
|
||||
<label for="carrier_id"/>
|
||||
<div>
|
||||
<field name="carrier_id" context="{'order_id':active_id or False}" class="oe_inline"/>
|
||||
<button name="delivery_set" states="draft" string="Add to Sale Order" type="object"/>
|
||||
<button name="delivery_set" states="draft" string="Charge in Sale Order" type="object"
|
||||
attrs="{'invisible':[('carrier_id','=',False)]}"/>
|
||||
</div>
|
||||
<label string="If you do not 'Add to Sale Order', the delivery charges will be added based on the delivery order."/>
|
||||
<label string="If you do not 'Add to Sale Order', the delivery charges will be added based on the delivery order(s)." colspan="2"
|
||||
attrs="{'invisible':[('carrier_id','=',False)]}"/>
|
||||
</group>
|
||||
</xpath>
|
||||
</field>
|
||||
|
|
|
@ -238,51 +238,27 @@
|
|||
<field name="model">ir.attachment</field>
|
||||
<field name="priority" eval="1"/>
|
||||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="base.view_attachment_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Documents" version="7.0">
|
||||
<sheet>
|
||||
<group col="4">
|
||||
<field name="name"/>
|
||||
<field name="parent_id"/>
|
||||
<field name="user_id"/>
|
||||
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
|
||||
</group>
|
||||
<notebook colspan="4">
|
||||
<page string="Attachment">
|
||||
<group>
|
||||
<group string="Data">
|
||||
<field name="type"/>
|
||||
<newline />
|
||||
<field name="datas" filename="datas_fname" attrs="{'invisible':[('type','=','url')]}"/>
|
||||
<field name="datas_fname" attrs="{'invisible':[('type','=','url')]}"/>
|
||||
<field name="url" widget="url" attrs="{'invisible':[('type','=','binary')]}"/>
|
||||
</group>
|
||||
<group>
|
||||
<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 name="url" position="after">
|
||||
<field name="user_id"/>
|
||||
</field>
|
||||
<field name="company_id" position="before">
|
||||
<field name="parent_id"/>
|
||||
<field name="partner_id"/>
|
||||
</field>
|
||||
<xpath expr="//div[@name='creation_div']" position='after'>
|
||||
<label for="write_uid" string="Modification"/>
|
||||
<div>
|
||||
<field name="write_uid" readonly="1" class="oe_inline"/> on
|
||||
<field name="write_date" readonly="1" class="oe_inline"/>
|
||||
</div>
|
||||
</xpath>
|
||||
<xpath expr="//group[@name='description_group']" position='after'>
|
||||
<group string="Indexed Content" colspan="4">
|
||||
<field name="index_content" nolabel="1"/>
|
||||
</group>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
or
|
||||
<button string="Cancel" class="oe_link" special="cancel" />
|
||||
</header>
|
||||
<separator string="Browse Document"/>
|
||||
<group>
|
||||
<field name="url" widget="url"/>
|
||||
</group>
|
||||
|
|
|
@ -8,19 +8,19 @@ 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-04-06 00:12+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"PO-Revision-Date: 2012-07-06 02:21+0000\n"
|
||||
"Last-Translator: Ahmad Khayyat <Unknown>\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-04-07 04:56+0000\n"
|
||||
"X-Generator: Launchpad (build 15060)\n"
|
||||
"X-Launchpad-Export-Date: 2012-07-06 04:58+0000\n"
|
||||
"X-Generator: Launchpad (build 15558)\n"
|
||||
|
||||
#. module: edi
|
||||
#: sql_constraint:res.currency:0
|
||||
msgid "The currency code must be unique per company!"
|
||||
msgstr ""
|
||||
msgstr "يجب أن يكون رمز العملة فريداً للشركة!"
|
||||
|
||||
#. module: edi
|
||||
#: model:ir.model,name:edi.model_res_partner_address
|
||||
|
@ -30,12 +30,12 @@ msgstr "عناوين الشريك"
|
|||
#. module: edi
|
||||
#: sql_constraint:res.company:0
|
||||
msgid "The company name must be unique !"
|
||||
msgstr "اسم الشركة يجب أن يكون فريداً !"
|
||||
msgstr "يجب أن يكون اسم الشركة فريداً !"
|
||||
|
||||
#. module: edi
|
||||
#: constraint:res.partner:0
|
||||
msgid "Error ! You cannot create recursive associated members."
|
||||
msgstr ""
|
||||
msgstr "خطأ ! لا يمكنك إنشاء أعضاء مرتبطين و متداخلين."
|
||||
|
||||
#. module: edi
|
||||
#: field:edi.document,name:0
|
||||
|
@ -111,12 +111,12 @@ msgstr "مستند"
|
|||
#. openerp-web
|
||||
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:23
|
||||
msgid "View/Print"
|
||||
msgstr ""
|
||||
msgstr "عرض/طباعة"
|
||||
|
||||
#. openerp-web
|
||||
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:28
|
||||
msgid "Import this document"
|
||||
msgstr ""
|
||||
msgstr "إستيراد هذه الوثيقة"
|
||||
|
||||
#. openerp-web
|
||||
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:33
|
||||
|
@ -126,7 +126,7 @@ msgstr ""
|
|||
#. openerp-web
|
||||
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:36
|
||||
msgid "OpenERP instance address:"
|
||||
msgstr "عنوان مثال أوبنيرب:"
|
||||
msgstr "عنوان نسخة أوبن إي آر بي:"
|
||||
|
||||
#. openerp-web
|
||||
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:39
|
||||
|
@ -177,7 +177,7 @@ msgstr ""
|
|||
#. openerp-web
|
||||
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:60
|
||||
msgid "OpenERP documentation"
|
||||
msgstr "وثائق أوبنيرب"
|
||||
msgstr "توثيق أوبن إي آر بي"
|
||||
|
||||
#. openerp-web
|
||||
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:61
|
||||
|
@ -202,12 +202,12 @@ msgstr "تحميل"
|
|||
#. openerp-web
|
||||
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:87
|
||||
msgid "Powered by"
|
||||
msgstr "مدعوم من kifcaliph و"
|
||||
msgstr "يتم تشغيل هذا التطبيق بواسطة"
|
||||
|
||||
#. openerp-web
|
||||
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:87
|
||||
msgid "OpenERP"
|
||||
msgstr "أوبنيرب"
|
||||
msgstr "أوبن إي آر بي"
|
||||
|
||||
#. openerp-web
|
||||
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:34
|
||||
|
|
|
@ -24,21 +24,6 @@ button.oe_edi_action_print img {
|
|||
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 **/
|
||||
.oe_edi_sidebar_title {
|
||||
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/ **/
|
||||
body {
|
||||
background: #EEE; /* contrast with paper */
|
||||
}
|
||||
.oe_edi_paperbox {
|
||||
position: relative;
|
||||
width: 700px;
|
||||
|
@ -225,4 +207,4 @@ table.oe_edi_data, .oe_edi_doc_title {
|
|||
.python .nu0 {color: #ff4500;}
|
||||
.python .me1 {color: black;}
|
||||
.python span.xtra { display:block; }
|
||||
.python ol { padding: 0px; }
|
||||
.python ol { padding: 0px; }
|
||||
|
|
|
@ -13,12 +13,14 @@
|
|||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="department" version="7.0">
|
||||
<group col="4">
|
||||
<field name="name"/>
|
||||
<field name="parent_id"/>
|
||||
<field name="manager_id"/>
|
||||
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
|
||||
</group>
|
||||
<sheet>
|
||||
<group col="4">
|
||||
<field name="name"/>
|
||||
<field name="manager_id"/>
|
||||
<field name="parent_id"/>
|
||||
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
@ -20,60 +20,64 @@
|
|||
<field name="arch" type="xml">
|
||||
<form string="Employee" version="7.0">
|
||||
<sheet>
|
||||
<div class="oe_right oe_button_box">
|
||||
<!-- Put here related buttons -->
|
||||
</div>
|
||||
<field class="oe_right" name="photo" widget='image' on_change="onchange_photo(photo)"/>
|
||||
<div class="oe_title">
|
||||
<label for="name" class="oe_edit_only"/>
|
||||
<h1><field name="name"/></h1>
|
||||
|
||||
<label for="company_id" class="oe_edit_only" groups="base.group_multi_company"/>
|
||||
<h2><field name="company_id" widget="selection" on_change="onchange_company(company_id)" groups="base.group_multi_company"/></h2>
|
||||
|
||||
<label for="department_id" class="oe_edit_only"/>
|
||||
<h2><field name="department_id" on_change="onchange_department_id(department_id)"/></h2>
|
||||
</div>
|
||||
<notebook>
|
||||
<page string="Personal Information">
|
||||
<group>
|
||||
<group string="General">
|
||||
<field name="user_id" on_change="onchange_user(user_id)"/>
|
||||
<field name="active"/>
|
||||
<field name="parent_id"/>
|
||||
<field name="photo" widget='image' class="oe_right" on_change="onchange_photo(photo)"/>
|
||||
<div class="oe_right oe_button_box" name="button_box">
|
||||
<!-- Put here related buttons -->
|
||||
</div>
|
||||
<div class="oe_title">
|
||||
<label for="name" class="oe_edit_only"/>
|
||||
<h1>
|
||||
<field name="name" class="oe_inline"/>
|
||||
<label class="oe_inline" string="," attrs="{'invisible': [('job_id', '=', False)]}"/>
|
||||
<field class="oe_inline" name="job_id" domain="[('state','!=','old')]" context="{'form_view_ref': 'hr.view_hr_job_employee_form'}"/>
|
||||
<label class="oe_inline" string="at" attrs="{'invisible': [('company_id', '=', False)]}" groups="base.group_multi_company"/>
|
||||
<field class="oe_inline" name="company_id" groups="base.group_multi_company" on_change="onchange_company(company_id)"/>
|
||||
</h1>
|
||||
<label for="department_id" class="oe_edit_only"/>
|
||||
<h2><field name="department_id" on_change="onchange_department_id(department_id)"/></h2>
|
||||
<label for="category_ids" class="oe_edit_only"/>
|
||||
<h3><field name="category_ids" widget="many2many_tags"/></h3>
|
||||
</div>
|
||||
<group colspan="4" col="4">
|
||||
<field name="work_email" widget="email" />
|
||||
<field name="work_phone"/>
|
||||
<field name="address_id" on_change="onchange_address_id(address_id)" />
|
||||
<field name="mobile_phone"/>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Information">
|
||||
<group>
|
||||
<group>
|
||||
<field name="user_id" on_change="onchange_user(user_id)"/>
|
||||
<field name="parent_id" />
|
||||
<field name="coach_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="identification_id" groups="base.group_hr_user"/>
|
||||
<field name="passport_id" groups="base.group_hr_user"/>
|
||||
<field name="otherid" groups="base.group_hr_user"/>
|
||||
</group>
|
||||
<group name="active_group">
|
||||
<field name="active"/>
|
||||
</group>
|
||||
</group>
|
||||
<group groups="base.group_hr_user" string="Social IDs">
|
||||
<field name="identification_id"/>
|
||||
<field name="passport_id"/>
|
||||
<field name="otherid"/>
|
||||
<field name="notes" placeholder="Other Information ..." colspan="4"/>
|
||||
</page>
|
||||
<page string="Personal Information" groups="base.group_hr_user">
|
||||
<group col="4">
|
||||
<group>
|
||||
<field name="country_id"/>
|
||||
<field name="bank_account_id"/>
|
||||
<field name="address_home_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="gender"/>
|
||||
<field name="marital"/>
|
||||
<field name="birthday"/>
|
||||
</group>
|
||||
</group>
|
||||
<group groups="base.group_hr_user" string="Status">
|
||||
<field name="gender"/>
|
||||
<field name="marital"/>
|
||||
<field name="country_id"/>
|
||||
<field name="birthday"/>
|
||||
</group>
|
||||
<group string="Contact Information">
|
||||
<field name="address_home_id"/>
|
||||
<field name="address_id" on_change="onchange_address_id(address_id)"/>
|
||||
<field name="work_phone"/>
|
||||
<field name="mobile_phone"/>
|
||||
<field name="work_email" widget="email"/>
|
||||
<field name="work_location"/>
|
||||
</group>
|
||||
<group string="Job Information">
|
||||
<field name="job_id" domain="[('state','!=','old')]" context="{'form_view_ref': 'hr.view_hr_job_employee_form'}"/>
|
||||
<field name="coach_id"/>
|
||||
</group>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Categories" groups="base.group_hr_user">
|
||||
<field name="category_ids" widget="many2many_tags"/>
|
||||
</page>
|
||||
<page string="Notes" groups="base.group_hr_user">
|
||||
<field name="notes"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
|
@ -359,16 +363,21 @@
|
|||
<field name="state" widget="statusbar" statusbar_visible="recruit,open"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<label for="name" class="oe_edit_only"/>
|
||||
<h1>
|
||||
<field name="name" class="oe_inline"/>
|
||||
<label class="oe_inline" string="(" attrs="{'invisible': [('department_id', '=', False)]}"/>
|
||||
<field name="department_id" class="oe_inline"/>
|
||||
<label class="oe_inline" string=")" attrs="{'invisible': [('department_id', '=', False)]}"/>
|
||||
</h1>
|
||||
<group>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="department_id"/>
|
||||
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="no_of_recruitment" on_change="on_change_expected_employee(no_of_recruitment,no_of_employee)"/>
|
||||
<field name="no_of_employee"/>
|
||||
<field name="expected_employees"/>
|
||||
<field name="no_of_recruitment" on_change="on_change_expected_employee(no_of_recruitment,no_of_employee)"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
|
@ -378,9 +387,6 @@
|
|||
<label for="requirements"/>
|
||||
<field name="requirements"/>
|
||||
</page>
|
||||
<page string="Employees" groups="base.group_user">
|
||||
<field name="employee_ids" widget="many2many" mode="tree,form"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
|
|
|
@ -133,12 +133,13 @@
|
|||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="hr.view_employee_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="coach_id" position="after">
|
||||
<group colspan="2">
|
||||
<field name="state"/>
|
||||
<button name="attendance_action_change" states="present" string="Sign Out" type="object" icon="gtk-go-forward" context="{'type':'sign_out'}" groups="base.group_hr_user"/>
|
||||
<button name="attendance_action_change" states="absent" string="Sign In" type="object" icon="gtk-go-back" context="{'type':'sign_in'}" groups="base.group_hr_user"/>
|
||||
</group>
|
||||
<field name="active" position="before">
|
||||
<label for="state"/>
|
||||
<div>
|
||||
<field name="state" class="oe_inline"/>
|
||||
<button class="oe_inline oe_right" name="attendance_action_change" states="present" string="Sign Out" type="object" icon="gtk-go-forward" context="{'type':'sign_out'}" groups="base.group_hr_user"/>
|
||||
<button class="oe_inline oe_right" name="attendance_action_change" states="absent" string="Sign In" type="object" icon="gtk-go-back" context="{'type':'sign_in'}" groups="base.group_hr_user"/>
|
||||
</div>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
@ -44,7 +44,7 @@ class hr_employee(osv.osv):
|
|||
'place_of_birth': fields.char('Place of Birth', size=30),
|
||||
'children': fields.integer('Number of Children'),
|
||||
'vehicle': fields.char('Company Vehicle', size=64),
|
||||
'vehicle_distance': fields.integer('Home-Work Distance', help="In kilometers"),
|
||||
'vehicle_distance': fields.integer('Home-Work Dist.', help="In kilometers"),
|
||||
'contract_ids': fields.one2many('hr.contract', 'employee_id', 'Contracts'),
|
||||
'contract_id':fields.function(_get_latest_contract, string='Contract', type='many2one', relation="hr.contract", help='Latest contract of the employee'),
|
||||
}
|
||||
|
|
|
@ -8,30 +8,32 @@
|
|||
<field name="model">hr.employee</field>
|
||||
<field name="inherit_id" ref="hr.view_employee_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<page string="Personal Information" position="after">
|
||||
<page string="Miscellaneous" groups="base.group_hr_user">
|
||||
<group colspan="2" col="2">
|
||||
<separator string="Personal Info" colspan="2"/>
|
||||
<field name="bank_account_id"/>
|
||||
<field name="place_of_birth"/>
|
||||
<data>
|
||||
<xpath expr="//field[@name='parent_id']" position="before">
|
||||
<field name="manager"/>
|
||||
</xpath>
|
||||
<xpath expr="//group[@name='active_group']" position="before">
|
||||
<group>
|
||||
<field name="vehicle"/>
|
||||
<field name="vehicle_distance"/>
|
||||
</group>
|
||||
</xpath>
|
||||
<field name="active" position="before">
|
||||
<field name="medic_exam" string="Medical Exam"/>
|
||||
</field>
|
||||
<field name="birthday" position="before">
|
||||
<field name="children"/>
|
||||
</group>
|
||||
<group colspan="2" col="2">
|
||||
<separator string="Job Info" colspan="2"/>
|
||||
<field name="manager" />
|
||||
<field name="vehicle" />
|
||||
<field name="vehicle_distance" />
|
||||
</group>
|
||||
<group colspan="2" col="2">
|
||||
<separator string="Others Info" colspan="2"/>
|
||||
<field name="medic_exam" />
|
||||
</group>
|
||||
</page>
|
||||
</page>
|
||||
</field>
|
||||
<field name="birthday" position="after">
|
||||
<field name="place_of_birth"/>
|
||||
</field>
|
||||
<field name="bank_account_id" position="replace">
|
||||
<field name="bank_account_id" context="{'display_partner':True, 'partner_id':partner_id}"/>
|
||||
</field>
|
||||
</data>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="hr_contract_view_search" model="ir.ui.view">
|
||||
<field name="name">hr.contract.view.search</field>
|
||||
<field name="model">hr.contract</field>
|
||||
|
@ -67,34 +69,44 @@
|
|||
<field name="arch" type="xml">
|
||||
<form string="Contract" version="7.0">
|
||||
<sheet>
|
||||
<group col="4">
|
||||
<field name="name" />
|
||||
<field name="employee_id" />
|
||||
<field name="job_id"/>
|
||||
<field name="wage"/>
|
||||
<field name="type_id"/>
|
||||
<div class="oe_title">
|
||||
<h1>
|
||||
<field name="name" placeholder="Contract Reference"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="employee_id"/>
|
||||
<field name="job_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="type_id"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Information" name="information">
|
||||
<group>
|
||||
<group name="left_column" string="Duration">
|
||||
<field name="date_start" />
|
||||
<field name="date_end" />
|
||||
<group name="salary_and_advantages" string="Salary and Advantages">
|
||||
<field name="wage"/>
|
||||
<field name="advantages" nolabel="1" placeholder="Advantages..." colspan="2"/>
|
||||
</group>
|
||||
<group name="duration_group" string="Duration">
|
||||
<label for="trial_date_start" string="Trial Period Duration"/>
|
||||
<div>
|
||||
<field name="trial_date_start" class="oe_inline"/> - <field name="trial_date_end" class="oe_inline"/>
|
||||
</div>
|
||||
<label for="date_start" string="Duration"/>
|
||||
<div>
|
||||
<field name="date_start" class="oe_inline"/> - <field name="date_end" class="oe_inline"/>
|
||||
</div>
|
||||
<field name="working_hours"/>
|
||||
</group>
|
||||
<group string="Trial Period">
|
||||
<field name="trial_date_start" />
|
||||
<field name="trial_date_end" />
|
||||
</group>
|
||||
<group name="right_column" string="Advantages">
|
||||
<field name="advantages" nolabel="1" colspan="2"/>
|
||||
</group>
|
||||
</group>
|
||||
<separator string="Notes"/>
|
||||
<field name="notes"/>
|
||||
</page>
|
||||
<page string="Work Permit">
|
||||
<group string="Valid for">
|
||||
<group col="4">
|
||||
<field name="visa_no"/>
|
||||
<field name="permit_no"/>
|
||||
<field name="visa_expire"/>
|
||||
|
|
|
@ -28,11 +28,15 @@
|
|||
<field name="arch" type="xml">
|
||||
<form string="Appraisal Plan" version="7.0">
|
||||
<group col="4">
|
||||
<field name="name"/>
|
||||
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
|
||||
<field name="month_first"/>
|
||||
<field name="month_next"/>
|
||||
<field name="active"/>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
|
||||
<field name="active"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="month_first"/>
|
||||
<field name="month_next"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Appraisal Phases">
|
||||
|
@ -133,10 +137,12 @@
|
|||
<field name="model">hr.employee</field>
|
||||
<field name="inherit_id" ref="hr.view_employee_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<page string="Notes" position="before">
|
||||
<page string="Personal Information" position="after">
|
||||
<page string="Appraisal" groups="base.group_hr_user">
|
||||
<field name="evaluation_plan_id" on_change="onchange_evaluation_plan_id(evaluation_plan_id, evaluation_date)"/>
|
||||
<field name="evaluation_date"/>
|
||||
<group col="4">
|
||||
<field name="evaluation_plan_id" on_change="onchange_evaluation_plan_id(evaluation_plan_id, evaluation_date)"/>
|
||||
<field name="evaluation_date"/>
|
||||
</group>
|
||||
</page>
|
||||
</page>
|
||||
</field>
|
||||
|
@ -157,49 +163,50 @@
|
|||
<field name="state" widget="statusbar" statusbar_visible="draft,progress,wait,done" statusbar_colors='{"progress":"blue"}'/>
|
||||
</header>
|
||||
<sheet>
|
||||
<label for="employee_id" class="oe_edit_only"/>
|
||||
<h1><field name="employee_id" on_change="onchange_employee_id(employee_id)" class="oe_inline"/>, <field name="date" class="oe_inline"/></h1>
|
||||
<label for="plan_id" class="oe_edit_only"/>
|
||||
<h2><field name="plan_id"/></h2>
|
||||
<group>
|
||||
<group string="Appraisal Data">
|
||||
<field name="employee_id" on_change="onchange_employee_id(employee_id)"/>
|
||||
<field name="plan_id"/>
|
||||
<field name="date"/>
|
||||
</group>
|
||||
<group attrs="{'invisible':['|', ('state','=','draft'), ('state', '=', 'wait')]}" string="Ending Summary">
|
||||
<group colspan="4" attrs="{'invisible':['|', ('state','=','draft'), ('state', '=', 'wait')]}">
|
||||
<field name="rating" attrs="{'readonly':[('state','<>','progress')]}"/>
|
||||
<field name="date_close" readonly="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Appraisal" attrs="{'invisible':[('state','=','draft')]}">
|
||||
<field name="survey_request_ids">
|
||||
<form string="Interview Appraisal" version="7.0">
|
||||
<group col="4">
|
||||
<group string="Appraisal Forms" attrs="{'invisible':[('state','=','draft')]}">
|
||||
<field nolabel="1" name="survey_request_ids">
|
||||
<form string="Interview Appraisal" version="7.0">
|
||||
<div class="oe_right oe_button_box">
|
||||
<button name="%(survey.action_view_survey_question_message)d" string="Answer Survey" type="action" states="waiting_answer,done,cancel" icon="gtk-execute" context="{'survey_id': survey_id, 'response_id': [response], 'response_no':0, 'active' : response,'request' : True, 'object' : 'hr.evaluation.interview', 'cur_id' : active_id}" attrs="{'readonly':[('survey_id','=',False)]}"/>
|
||||
<button name="%(survey.survey_browse_response)d" string="Print Interview" type="action" states="done" icon="gtk-print" context="{'survey_id': survey_id, 'response_id' : [response], 'response_no':0,}" attrs="{'readonly':[('response','=',False)]}" />
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="survey_id"/>
|
||||
<div colspan="2">
|
||||
<button name="%(survey.action_view_survey_question_message)d" string="Answer Survey" type="action" states="waiting_answer,done,cancel" icon="gtk-execute" context="{'survey_id': survey_id, 'response_id': [response], 'response_no':0, 'active' : response,'request' : True, 'object' : 'hr.evaluation.interview', 'cur_id' : active_id}" attrs="{'readonly':[('survey_id','=',False)]}"/>
|
||||
<button name="%(survey.survey_browse_response)d" string="Print Interview" type="action" states="done" icon="gtk-print" context="{'survey_id': survey_id, 'response_id' : [response], 'response_no':0,}" attrs="{'readonly':[('response','=',False)]}" />
|
||||
</div>
|
||||
<field name="date_deadline"/>
|
||||
<field name="response" readonly="1"/>
|
||||
<field name="user_to_review_id"/>
|
||||
<field name="user_id" string="Interviewer"/>
|
||||
</group>
|
||||
<group col="4" string="Status">
|
||||
<field name="state"/>
|
||||
<div>
|
||||
<button string="Done" name="survey_req_done" states="waiting_answer" type="object" icon="gtk-jump-to" />
|
||||
</div>
|
||||
<group>
|
||||
<field name="date_deadline"/>
|
||||
<field name="response" readonly="1"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Internal Notes" attrs="{'invisible':[('state','=','draft')]}">
|
||||
<field name="note_action"
|
||||
groups="base.group_hr_manager"/>
|
||||
</page>
|
||||
<page string="Public Notes" attrs="{'invisible':[('state','=','draft')]}">
|
||||
<field name="note_summary"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</group>
|
||||
<group col="4" string="Status" invisible="1">
|
||||
<field name="state"/>
|
||||
<div>
|
||||
<button string="Done" name="survey_req_done" states="waiting_answer" type="object" icon="gtk-jump-to" />
|
||||
</div>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</group>
|
||||
<group string="Internal Notes" attrs="{'invisible':[('state','=','draft')]}">
|
||||
<field nolabel="1" name="note_action"
|
||||
groups="base.group_hr_manager" placeholder="Appraisal Summary..."/>
|
||||
</group>
|
||||
<group string="Public Notes" attrs="{'invisible':[('state','=','draft')]}">
|
||||
<field nolabel="1" name="note_summary" placeholder="Action Plan..."/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
|
@ -279,13 +286,17 @@
|
|||
<field name="state" widget="statusbar" statusbar_visible="waiting_answer,done"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<group col="4">
|
||||
<field name="user_to_review_id"/>
|
||||
<field name="user_id" string="Interviewer"/>
|
||||
<field name="date_deadline"/>
|
||||
<field name="survey_id"/>
|
||||
<field name="evaluation_id"/>
|
||||
<field name="response" readonly="1"/>
|
||||
<group>
|
||||
<group>
|
||||
<field name="survey_id"/>
|
||||
<field name="user_to_review_id"/>
|
||||
<field name="user_id" string="Interviewer"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="date_deadline"/>
|
||||
<field name="response" readonly="1"/>
|
||||
<field name="evaluation_id" string="Appraisal Plan"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
|
|
|
@ -56,12 +56,12 @@ class hr_expense_expense(osv.osv):
|
|||
return self.pool.get('res.currency').search(cr, uid, [('rate','=',1.0)], context=context)[0]
|
||||
|
||||
_name = "hr.expense.expense"
|
||||
_inherit = ['mail.thread']
|
||||
_description = "Expense"
|
||||
_order = "id desc"
|
||||
_columns = {
|
||||
'name': fields.char('Description', size=128, required=True),
|
||||
'id': fields.integer('Sheet ID', readonly=True),
|
||||
'ref': fields.char('Reference', size=32),
|
||||
'date': fields.date('Date', select=True),
|
||||
'journal_id': fields.many2one('account.journal', 'Force Journal', help = "The journal used when the expense is invoiced"),
|
||||
'employee_id': fields.many2one('hr.employee', "Employee", required=True),
|
||||
|
|
|
@ -49,7 +49,6 @@
|
|||
<field name="employee_id"/>
|
||||
<field name="date"/>
|
||||
<field name="department_id"/>
|
||||
<field name="ref"/>
|
||||
<field name="name"/>
|
||||
<field name="amount"/>
|
||||
<field name="state"/>
|
||||
|
@ -74,38 +73,44 @@
|
|||
<field name="state" widget="statusbar" statusbar_visible="draft,confirm,accepted" statusbar_colors='{"confirm":"blue","cancelled":"red"}'/>
|
||||
</header>
|
||||
<sheet>
|
||||
<group col="4">
|
||||
<field name="employee_id" on_change="onchange_employee_id(employee_id)"/>
|
||||
<field name="name"/>
|
||||
<field name="ref"/>
|
||||
<field name="date"/>
|
||||
<field name="currency_id"/>
|
||||
<field name="department_id"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<group>
|
||||
<group>
|
||||
<field name="employee_id" on_change="onchange_employee_id(employee_id)"/>
|
||||
<field name="date"/>
|
||||
<field name="department_id"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="user_valid"/>
|
||||
<field name="currency_id"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Description">
|
||||
<field name="line_ids" context="{'currency_id': currency_id}">
|
||||
<form string="Expense Lines" version="7.0">
|
||||
<group col="6" colspan="4">
|
||||
<field name="product_id" on_change="onchange_product_id(product_id, uom_id, parent.employee_id, context)" context="{'default_hr_expense_ok':1}"/>
|
||||
<field name="name" colspan="4"/>
|
||||
<newline/>
|
||||
<field name="unit_amount"/>
|
||||
<field name="unit_quantity"/>
|
||||
<field name="uom_id" on_change="onchange_product_id(product_id, uom_id, parent.employee_id, context)"/>
|
||||
</group>
|
||||
<group colspan="2" col="2" groups="analytic.group_analytic_accounting">
|
||||
<separator string="Customer Project" colspan="2"/>
|
||||
<field domain="[('type','in',['normal','contract'])]" name="analytic_account"/>
|
||||
</group>
|
||||
<group colspan="2" col="2">
|
||||
<separator string="References" colspan="2"/>
|
||||
<field name="date_value" />
|
||||
<field name="ref"/>
|
||||
<group>
|
||||
<group>
|
||||
<field name="product_id" on_change="onchange_product_id(product_id, uom_id, parent.employee_id, context)" context="{'default_hr_expense_ok':1}"/>
|
||||
<field name="name"/>
|
||||
<field name="ref"/>
|
||||
<field domain="[('type','=','normal')]" name="analytic_account" groups="analytic.group_analytic_accounting"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="unit_amount"/>
|
||||
<label for="unit_quantity"/>
|
||||
<div>
|
||||
<field name="unit_quantity" class="oe_inline"/>
|
||||
<field name="uom_id" on_change="onchange_product_id(product_id, uom_id, parent.employee_id, context)" class="oe_inline"/>
|
||||
</div>
|
||||
<field name="date_value" />
|
||||
</group>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
<separator string="Notes"/>
|
||||
<field name="note" placeholder="Free Notes"/>
|
||||
</page>
|
||||
<page string="Other Info">
|
||||
<group>
|
||||
|
@ -113,17 +118,13 @@
|
|||
<field name="journal_id"/>
|
||||
<field name="invoice_id" context="{'type':'in_invoice', 'journal_type': 'purchase'}"/>
|
||||
</group>
|
||||
<group groups="base.group_no_one" string="Validation">
|
||||
<field name="date_confirm" readonly="1"/>
|
||||
<field name="date_valid" readonly="1"/>
|
||||
<field name="user_valid"/>
|
||||
</group>
|
||||
</group>
|
||||
<separator string="Notes"/>
|
||||
<field name="note"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<footer>
|
||||
<field name="message_ids" widget="mail_thread"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
@ -160,7 +160,7 @@
|
|||
<para style="terp_tblheader_General_Centre">Date</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_tblheader_General_Centre">Reference</para>
|
||||
<para style="terp_tblheader_General_Centre">Description</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_tblheader_General_Centre">Validated By</para>
|
||||
|
@ -176,7 +176,7 @@
|
|||
<para style="terp_default_Centre_8">[[ formatLang(o.date,date=True) ]]</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Centre_8">[[ o.ref ]]</para>
|
||||
<para style="terp_default_Centre_8">[[ o.name ]]</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Centre_8">[[ o.user_valid.name ]]</para>
|
||||
|
|
|
@ -50,7 +50,7 @@ Note that:
|
|||
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'],
|
||||
'depends': ['hr', 'crm', 'process', 'resource'],
|
||||
'depends': ['hr', 'base_calendar', 'process', 'resource'],
|
||||
'init_xml': [],
|
||||
'update_xml': [
|
||||
'security/ir.model.access.csv',
|
||||
|
|
|
@ -74,7 +74,8 @@ class hr_holidays_status(osv.osv):
|
|||
|
||||
_columns = {
|
||||
'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'),
|
||||
'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."),
|
||||
|
@ -128,7 +129,7 @@ class hr_holidays(osv.osv):
|
|||
'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': 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),
|
||||
'parent_id': fields.many2one('hr.holidays', 'Parent'),
|
||||
'linked_request_ids': fields.one2many('hr.holidays', 'parent_id', 'Linked Requests',),
|
||||
|
@ -217,19 +218,12 @@ class hr_holidays(osv.osv):
|
|||
}
|
||||
return result
|
||||
|
||||
def onchange_sec_id(self, cr, uid, ids, status, context=None):
|
||||
warning = {}
|
||||
def onchange_status_id(self, cr, uid, ids, status_id, context=None):
|
||||
double_validation = False
|
||||
obj_holiday_status = self.pool.get('hr.holidays.status')
|
||||
if status:
|
||||
holiday_status = obj_holiday_status.browse(cr, uid, status, context=context)
|
||||
if status_id:
|
||||
holiday_status = self.pool.get('hr.holidays.status').browse(cr, uid, status_id, context=context)
|
||||
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:
|
||||
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}}
|
||||
return {'value': {'double_validation': double_validation}}
|
||||
|
||||
def set_to_draft(self, cr, uid, ids, context=None):
|
||||
self.write(cr, uid, ids, {
|
||||
|
@ -271,7 +265,7 @@ class hr_holidays(osv.osv):
|
|||
holiday_ids.append(record.id)
|
||||
if record.holiday_type == 'employee' and record.type == 'remove':
|
||||
meeting_obj = self.pool.get('crm.meeting')
|
||||
vals = {
|
||||
meeting_vals = {
|
||||
'name': record.name,
|
||||
'categ_id': record.holiday_status_id.categ_id.id,
|
||||
'duration': record.number_of_days_temp * 8,
|
||||
|
@ -280,11 +274,11 @@ class hr_holidays(osv.osv):
|
|||
'date': record.date_from,
|
||||
'end_date': 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.write(cr, uid, ids, {'case_id': case_id})
|
||||
self.write(cr, uid, ids, {'meeting_id': meeting_id})
|
||||
elif record.holiday_type == 'category':
|
||||
emp_ids = obj_emp.search(cr, uid, [('category_ids', 'child_of', [record.category_id.id])])
|
||||
leave_ids = []
|
||||
|
@ -330,11 +324,11 @@ class hr_holidays(osv.osv):
|
|||
return True
|
||||
|
||||
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):
|
||||
# Delete the meeting
|
||||
if record.case_id:
|
||||
obj_crm_meeting.unlink(cr, uid, [record.case_id.id])
|
||||
if record.meeting_id:
|
||||
meeting_obj.unlink(cr, uid, [record.meeting_id.id])
|
||||
|
||||
# If a category that created several holidays, cancel all related
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
|
@ -519,10 +513,4 @@ class hr_employee(osv.osv):
|
|||
|
||||
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:
|
||||
|
|
|
@ -110,29 +110,39 @@
|
|||
<field name="state" widget="statusbar" statusbar_visible="draft,confirm,validate" statusbar_colors='{"confirm":"blue","validate1":"blue","refuse":"red"}'/>
|
||||
</header>
|
||||
<sheet string="Leave Request">
|
||||
<group col="8" colspan="4">
|
||||
<field name="name" attrs="{'readonly':[('state','!=','draft'),('state','!=','confirm')]}"/>
|
||||
<field name="holiday_type" on_change="onchange_type(holiday_type)" attrs="{'readonly':[('state','!=','draft')]}" width="130" string="Mode" groups="base.group_hr_user"/>
|
||||
<group attrs="{'invisible':[('holiday_type','=','employee')]}">
|
||||
<field name="category_id" attrs="{'required':[('holiday_type','=','category')], 'readonly':[('state','!=','draft'), ('state','!=','confirm')]}"/>
|
||||
<group>
|
||||
<group>
|
||||
<field name="name" attrs="{'readonly':[('state','!=','draft'),('state','!=','confirm')]}"/>
|
||||
<field name="holiday_type" on_change="onchange_type(holiday_type)" attrs="{'readonly':[('state','!=','draft')]}" width="130" string="Mode" groups="base.group_hr_user"/>
|
||||
<field name="employee_id" attrs="{'required':[('holiday_type','=','employee')],'invisible':[('holiday_type','=','category')]}" groups="base.group_hr_user"/>
|
||||
<field name="category_id" attrs="{'required':[('holiday_type','=','category')], 'invisible':[('holiday_type','=','employee')], 'readonly':[('state','!=','draft'), ('state','!=','confirm')]}"/>
|
||||
<field name="department_id" attrs="{'readonly':[('holiday_type','=','category')]}" groups="base.group_hr_user"/>
|
||||
</group>
|
||||
<group attrs="{'invisible':[('holiday_type','=','category')]}">
|
||||
<field name="employee_id" attrs="{'required':[('holiday_type','=','employee')]}" groups="base.group_hr_user"/>
|
||||
<group>
|
||||
<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"/>
|
||||
<div>
|
||||
<field name="date_from" on_change="onchange_date_from(date_to, date_from)" required="1" class="oe_inline"/> -
|
||||
<field name="date_to" on_change="onchange_date_from(date_to, date_from)" required="1" class="oe_inline"/>
|
||||
<div>
|
||||
<field name="number_of_days_temp" class="oe_inline"/> days
|
||||
</div>
|
||||
</div>
|
||||
</group>
|
||||
</group>
|
||||
<notebook colspan="4">
|
||||
<page string="General">
|
||||
<field name="holiday_status_id" on_change="onchange_sec_id(holiday_status_id)" context="{'employee_id':employee_id}"/>
|
||||
<field name="department_id" attrs="{'readonly':[('holiday_type','=','category')]}" groups="base.group_hr_user"/>
|
||||
<field name="date_from" on_change="onchange_date_from(date_to, date_from)" required="1"/>
|
||||
<field name="date_to" on_change="onchange_date_from(date_to, date_from)" required="1"/>
|
||||
<field name="number_of_days_temp"/>
|
||||
<field name="double_validation" invisible="1"/>
|
||||
<group>
|
||||
<group>
|
||||
<field name="manager_id" groups="base.group_no_one"/>
|
||||
<field name="double_validation" invisible="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="manager_id2" attrs="{'invisible':[('double_validation', '!=', True)]}" groups="base.group_no_one"/>
|
||||
</group>
|
||||
</group>
|
||||
<newline/>
|
||||
<field name="manager_id" groups="base.group_no_one"/>
|
||||
<field name="manager_id2" attrs="{'invisible':[('double_validation', '!=', True)]}" groups="base.group_no_one"/>
|
||||
<separator string="Reasons" colspan="4"/>
|
||||
<field name="notes" nolabel="1" colspan="4"/>
|
||||
<field name="notes" nolabel="1" colspan="4" placeholder="Add a reason..."/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
|
@ -159,26 +169,29 @@
|
|||
<field name="state" widget="statusbar" statusbar_visible="draft,confirm,validate" statusbar_colors='{"confirm":"blue","validate1":"blue","refuse":"red"}'/>
|
||||
</header>
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="holiday_type" on_change="onchange_type(holiday_type)" attrs="{'readonly':[('state','!=','draft')]}" string="Allocation Mode" groups="base.group_hr_manager"/>
|
||||
<field name="employee_id" attrs="{'required':[('holiday_type','=','employee')], 'invisible':[('holiday_type','=','category')]}"/>
|
||||
<field name="category_id" attrs="{'required':[('holiday_type','=','category')], 'readonly':[('state','!=','draft')], 'invisible':[('holiday_type','=','employee')]}"/>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="General">
|
||||
<group col="4">
|
||||
<field name="holiday_status_id" on_change="onchange_sec_id(holiday_status_id)" context="{'employee_id':employee_id}"/>
|
||||
<group>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="holiday_type" on_change="onchange_type(holiday_type)" attrs="{'readonly':[('state','!=','draft')]}" string="Allocation Mode" groups="base.group_hr_manager"/>
|
||||
<field name="employee_id" attrs="{'required':[('holiday_type','=','employee')], 'invisible':[('holiday_type','=','category')]}"/>
|
||||
<field name="category_id" attrs="{'required':[('holiday_type','=','category')], 'readonly':[('state','!=','draft')], 'invisible':[('holiday_type','=','employee')]}"/>
|
||||
<field name="department_id" attrs="{'readonly':['|', ('holiday_type','=','category'), ('state','not in' ,('draft', 'confirm'))]}"/>
|
||||
<field name="number_of_days_temp"/>
|
||||
<field name="double_validation" invisible="1"/>
|
||||
<field name="manager_id"/>
|
||||
<field name="manager_id2" attrs="{'invisible':[('double_validation', '!=', True)]}"/>
|
||||
</group>
|
||||
<separator string="Reasons"/>
|
||||
<field name="notes"/>
|
||||
</page>
|
||||
</notebook>
|
||||
<group>
|
||||
<field name="holiday_status_id" on_change="onchange_status_id(holiday_status_id)" context="{'employee_id':employee_id}"/>
|
||||
<field name="number_of_days_temp"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="General">
|
||||
<group col="4">
|
||||
<field name="double_validation" invisible="1"/>
|
||||
<field name="manager_id"/>
|
||||
<field name="manager_id2" attrs="{'invisible':[('double_validation', '!=', True)]}"/>
|
||||
</group>
|
||||
<field name="notes" placeholder="Add a reason..."/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<footer>
|
||||
<field name="message_ids" colspan="4" widget="mail_thread" nolabel="1"/>
|
||||
|
@ -342,7 +355,7 @@
|
|||
<record model="ir.actions.act_window.view" id="action_request_approve_holidays_form">
|
||||
<field name="sequence" eval="2"/>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="view_id" ref="allocation_leave_new"/>
|
||||
<field name="view_id" ref="edit_holiday_new"/>
|
||||
<field name="act_window_id" ref="request_approve_holidays"/>
|
||||
</record>
|
||||
|
||||
|
@ -409,8 +422,7 @@
|
|||
<form string="Leave Type" version="7.0">
|
||||
<group col="4">
|
||||
<field name="name"/>
|
||||
<field name="color_name"/>
|
||||
<field name="categ_id" widget="selection"/>
|
||||
<field name="categ_id"/>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Details">
|
||||
|
@ -420,6 +432,7 @@
|
|||
<field name="limit"/>
|
||||
</group>
|
||||
<group name="second" string="Misc">
|
||||
<field name="color_name"/>
|
||||
<field name="active"/>
|
||||
</group>
|
||||
</group>
|
||||
|
@ -529,8 +542,13 @@
|
|||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="hr.view_employee_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="coach_id" position="after">
|
||||
<field name="remaining_leaves"/>
|
||||
<field name="active" position="before">
|
||||
<label for="remaining_leaves"/>
|
||||
<div>
|
||||
<field name="remaining_leaves" class="oe_inline"/>
|
||||
<label/>
|
||||
<button name="%(act_hr_employee_holiday_request)d" string="Leaves" type="action" class="oe_inline oe_right"/>
|
||||
</div>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
@ -7,36 +7,6 @@
|
|||
<menuitem id="menu_hr_root_payroll" parent="hr.menu_hr_root" name="Payroll" sequence="30"/>
|
||||
<menuitem id="menu_hr_payroll_reporting" parent="hr.menu_hr_reporting" name="Payroll" groups="base.group_hr_manager"/>
|
||||
|
||||
<!-- Employee View -->
|
||||
<record id="hr_contract.hr_hr_employee_view_form2" model="ir.ui.view">
|
||||
<field name="name">hr.hr.employee.view.form2</field>
|
||||
<field name="model">hr.employee</field>
|
||||
<field name="inherit_id" ref="hr.view_employee_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<data>
|
||||
<xpath expr="//page[@string='Personal Information']" position="after">
|
||||
<page string="Miscellaneous" groups="base.group_hr_user">
|
||||
<group colspan="2" col="2">
|
||||
<separator string="Personal Info" colspan="2"/>
|
||||
<field name="bank_account_id" context="{'display_partner':True, 'partner_id':partner_id}"/>
|
||||
<field name="place_of_birth"/>
|
||||
<field name="children"/>
|
||||
<!-- <field name="basic" invisible="0"/> -->
|
||||
</group>
|
||||
<group colspan="2" col="2">
|
||||
<separator string="Job Info" colspan="2"/>
|
||||
<field name="manager" />
|
||||
<field name="vehicle" />
|
||||
<field name="vehicle_distance" />
|
||||
<field name="medic_exam" string="Medical Examination"/>
|
||||
</group>
|
||||
</page>
|
||||
</xpath>
|
||||
</data>
|
||||
</field>
|
||||
</record>
|
||||
<!-- End Employee View -->
|
||||
|
||||
<!-- Contract View -->
|
||||
<record id="hr_contract_form_inherit" model="ir.ui.view">
|
||||
<field name="name">hr.contract.view.form.inherit</field>
|
||||
|
@ -45,8 +15,7 @@
|
|||
<field name="inherit_id" ref="hr_contract.hr_contract_view_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<data>
|
||||
<xpath expr="//group[@name='right_column']" position="before">
|
||||
<separator string="Payslip Info" colspan="2"/>
|
||||
<xpath expr="//field[@name='wage']" position="after">
|
||||
<field name="struct_id" required="1"/>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='working_hours']" position="after">
|
||||
|
@ -105,7 +74,7 @@
|
|||
<field name="model">hr.payroll.structure</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Employee Function">
|
||||
<form string="Employee Function" version="7.0">
|
||||
<group col="4">
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
|
@ -249,6 +218,12 @@
|
|||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<act_window name="Payslip Computation Details"
|
||||
context="{'default_slip_id': active_id,'search_default_slip_id': active_id}"
|
||||
res_model="hr.payslip.line"
|
||||
src_model="hr.payslip"
|
||||
id="act_payslip_lines"/>
|
||||
|
||||
<record id="view_hr_payslip_form" model="ir.ui.view">
|
||||
<field name="name">hr.payslip.form</field>
|
||||
|
@ -265,13 +240,18 @@
|
|||
<field name="state" widget="statusbar" statusbar_visible="draft,confirm"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<label for="employee_id" class="oe_edit_only"/>
|
||||
<h1><field name="employee_id" on_change="onchange_employee_id(date_from, date_to, employee_id, contract_id)"/></h1>
|
||||
<label for="date_from" class="oe_edit_only" string="Period"/>
|
||||
<h2>
|
||||
from <field name="date_from" on_change="onchange_employee_id(date_from, date_to, employee_id, contract_id)"/>
|
||||
to <field name="date_to"/>
|
||||
</h2>
|
||||
<div class="oe_right oe_button_box">
|
||||
<button name="%(act_payslip_lines)d" string="Payslip Computation Details" type="action"/>
|
||||
</div>
|
||||
<div class="oe_title">
|
||||
<label for="employee_id" class="oe_edit_only"/>
|
||||
<h1><field name="employee_id" on_change="onchange_employee_id(date_from, date_to, employee_id, contract_id)"/></h1>
|
||||
<label for="date_from" class="oe_edit_only" string="Period"/>
|
||||
<h2>
|
||||
From <field name="date_from" on_change="onchange_employee_id(date_from, date_to, employee_id, contract_id)"/>
|
||||
to <field name="date_to"/>
|
||||
</h2>
|
||||
</div>
|
||||
<group col="4">
|
||||
<field name="contract_id" domain="[('employee_id','=',employee_id)]" on_change="onchange_contract_id(date_from, date_to, employee_id, contract_id)"/>
|
||||
<field name="number"/>
|
||||
|
@ -281,6 +261,7 @@
|
|||
</group>
|
||||
<notebook>
|
||||
<page string="Worked Days & Inputs">
|
||||
<separator string="Worked Days"/>
|
||||
<field name="worked_days_line_ids">
|
||||
<tree string="Worked Days" editable="bottom">
|
||||
<field name="name"/>
|
||||
|
@ -302,6 +283,7 @@
|
|||
</group>
|
||||
</form>
|
||||
</field>
|
||||
<separator string="Other Inputs"/>
|
||||
<field name="input_line_ids" colspan="4" nolabel="1">
|
||||
<tree string="Input Data" editable="bottom">
|
||||
<field name="name"/>
|
||||
|
@ -360,14 +342,18 @@
|
|||
</field>
|
||||
</page>
|
||||
<page string="Other Information">
|
||||
<group col="2" string="Other Information">
|
||||
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
|
||||
<field name="payslip_run_id" domain="[('state','=','draft')]"/>
|
||||
<field name="paid" readonly="1"/>
|
||||
</group>
|
||||
<group string="Notes">
|
||||
<field name="note"/>
|
||||
<group>
|
||||
<group string="Miscellaneous">
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="payslip_run_id" domain="[('state','=','draft')]"/>
|
||||
</group>
|
||||
<group name="accounting" string="Accounting">
|
||||
<field name="paid" readonly="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<div colspan="4">
|
||||
<field name="note" Placeholder="Add an internal note..."/>
|
||||
</div>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
|
@ -413,7 +399,27 @@
|
|||
<field name="search_view_id" ref="view_hr_payslip_filter"/>
|
||||
</record>
|
||||
<menuitem action="action_view_hr_payslip_form" id="menu_department_tree" parent="menu_hr_root_payroll"/>
|
||||
<act_window name="Payslips"
|
||||
context="{'search_default_employee_id': [active_id], 'default_employee_id': active_id}"
|
||||
res_model="hr.payslip"
|
||||
src_model="hr.employee"
|
||||
view_id ="view_hr_payslip_tree"
|
||||
id="act_hr_employee_payslip_list"
|
||||
groups="base.group_hr_manager"/>
|
||||
|
||||
<!-- Employee View -->
|
||||
<record id="payroll_hr_employee_view_form" model="ir.ui.view">
|
||||
<field name="name">payroll.hr.employee.view.form</field>
|
||||
<field name="model">hr.employee</field>
|
||||
<field name="inherit_id" ref="hr.view_employee_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<data>
|
||||
<xpath expr="//div[@name='button_box']" position="inside">
|
||||
<button name="%(act_hr_employee_payslip_list)d" string="Payslips" type="action"/>
|
||||
</xpath>
|
||||
</data>
|
||||
</field>
|
||||
</record>
|
||||
<!-- Salary Category-->
|
||||
<record id="hr_salary_rule_category_form" model="ir.ui.view">
|
||||
<field name="name">hr.salary.rule.category.form</field>
|
||||
|
@ -730,12 +736,20 @@
|
|||
<field name="state" widget="statusbar"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<group col="4">
|
||||
<label for="name" class="oe_edit_only"/>
|
||||
<h1>
|
||||
<field name="name"/>
|
||||
<field name="credit_note"/>
|
||||
<field name="date_start"/>
|
||||
</h1>
|
||||
<h2>
|
||||
Period from
|
||||
<field name="date_start"/>
|
||||
to
|
||||
<field name="date_end"/>
|
||||
</h2>
|
||||
<group col="4">
|
||||
<field name="credit_note"/>
|
||||
</group>
|
||||
<separator string="Payslips"/>
|
||||
<field name="slip_ids"/>
|
||||
</sheet>
|
||||
</form>
|
||||
|
|
|
@ -2,8 +2,6 @@
|
|||
<openerp>
|
||||
<data>
|
||||
|
||||
|
||||
|
||||
<record model="ir.ui.view" id="view_hr_payslip_inherit_form">
|
||||
<field name="name">hr.payslip.inherit.form</field>
|
||||
<field name="model">hr.payslip</field>
|
||||
|
@ -27,10 +25,12 @@
|
|||
<field name="arch" type="xml">
|
||||
<xpath expr="/form/notebook/page[@string='Child Rules']" position="after">
|
||||
<page string="Accounting">
|
||||
<field name="account_debit" />
|
||||
<field name="account_credit"/>
|
||||
<field name="analytic_account_id" groups="analytic.group_analytic_accounting"/>
|
||||
<field name="account_tax_id"/>
|
||||
<group colspan="4">
|
||||
<field name="account_debit" />
|
||||
<field name="account_credit"/>
|
||||
<field name="analytic_account_id" groups="analytic.group_analytic_accounting"/>
|
||||
<field name="account_tax_id"/>
|
||||
</group>
|
||||
</page>
|
||||
</xpath>
|
||||
</field>
|
||||
|
@ -44,14 +44,15 @@
|
|||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="hr_contract.hr_contract_view_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='advantages']" position="after">
|
||||
<separator colspan="4" string="Accounting"/>
|
||||
<field name="analytic_account_id" groups="analytic.group_analytic_accounting"/>
|
||||
<field name="journal_id"/>
|
||||
<xpath expr="//group[@name='duration_group']" position="after">
|
||||
<group string="Accounting">
|
||||
<field name="analytic_account_id" groups="analytic.group_analytic_accounting"/>
|
||||
<field name="journal_id"/>
|
||||
</group>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<!-- Payslip Run View -->
|
||||
|
||||
<record id="hr_payslip_run_search_inherit" model="ir.ui.view">
|
||||
|
@ -85,12 +86,11 @@
|
|||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="hr_payroll.hr_payslip_run_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="date_end" position="after">
|
||||
<newline/>
|
||||
<field name="credit_note" position="before">
|
||||
<field name="journal_id"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -42,11 +42,10 @@ system to store and search in your CV base.
|
|||
'decimal_precision',
|
||||
'hr',
|
||||
'survey',
|
||||
'crm',
|
||||
'base_calendar',
|
||||
'fetchmail',
|
||||
],
|
||||
'update_xml': [
|
||||
'wizard/hr_recruitment_phonecall_view.xml',
|
||||
'wizard/hr_recruitment_employee_hired.xml',
|
||||
'wizard/hr_recruitment_create_partner_job_view.xml',
|
||||
'hr_recruitment_view.xml',
|
||||
|
|
|
@ -24,15 +24,10 @@ import time
|
|||
from datetime import datetime, timedelta
|
||||
|
||||
from osv import fields, osv
|
||||
from crm import crm
|
||||
import tools
|
||||
import collections
|
||||
import binascii
|
||||
import tools
|
||||
from tools.translate import _
|
||||
from crm import wizard
|
||||
|
||||
wizard.mail_compose_message.SUPPORTED_MODELS.append('hr.applicant')
|
||||
|
||||
AVAILABLE_STATES = [
|
||||
('draft', 'New'),
|
||||
|
@ -98,6 +93,7 @@ class hr_applicant(base_stage, osv.Model):
|
|||
_description = "Applicant"
|
||||
_order = "id desc"
|
||||
_inherit = ['ir.needaction_mixin', 'mail.thread']
|
||||
_mail_compose_message = True
|
||||
|
||||
def _get_default_department_id(self, cr, uid, context=None):
|
||||
""" Gives default department by checking if present in the context """
|
||||
|
@ -181,7 +177,7 @@ class hr_applicant(base_stage, osv.Model):
|
|||
return res
|
||||
|
||||
_columns = {
|
||||
'name': fields.char('Name', size=128, required=True),
|
||||
'name': fields.char('Subject', size=128, required=True),
|
||||
'active': fields.boolean('Active', help="If the active field is set to false, it will allow you to hide the case without removing it."),
|
||||
'description': fields.text('Description'),
|
||||
'email_from': fields.char('Email', size=128, help="These people will receive email."),
|
||||
|
@ -213,7 +209,7 @@ class hr_applicant(base_stage, osv.Model):
|
|||
'salary_expected_extra': fields.char('Expected Salary Extra', size=100, help="Salary Expected by Applicant, extra advantages"),
|
||||
'salary_proposed': fields.float('Proposed Salary', help="Salary Proposed by the Organisation"),
|
||||
'salary_expected': fields.float('Expected Salary', help="Salary Expected by Applicant"),
|
||||
'availability': fields.integer('Availability (Days)'),
|
||||
'availability': fields.integer('Availability'),
|
||||
'partner_name': fields.char("Applicant's Name", size=64),
|
||||
'partner_phone': fields.char('Phone', size=32),
|
||||
'partner_mobile': fields.char('Mobile', size=32),
|
||||
|
@ -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),
|
||||
'department_id': lambda s, cr, uid, c: s._get_default_department_id(cr, uid, c),
|
||||
'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,
|
||||
}
|
||||
|
||||
|
@ -293,49 +289,22 @@ class hr_applicant(base_stage, osv.Model):
|
|||
return False
|
||||
|
||||
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
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of Opportunity to Meeting IDs
|
||||
@param context: A standard dictionary for contextual values
|
||||
|
||||
@return: Dictionary value for created Meeting view
|
||||
"""
|
||||
data_obj = self.pool.get('ir.model.data')
|
||||
if context is None:
|
||||
context = {}
|
||||
value = {}
|
||||
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
|
||||
applicant = self.browse(cr, uid, ids[0], context)
|
||||
category = self.pool.get('ir.model.data').get_object(cr, uid, 'hr_recruitment', 'categ_meet_interview', context)
|
||||
res = self.pool.get('ir.actions.act_window').for_xml_id(cr, uid, 'base_calendar', 'action_crm_meeting', context)
|
||||
res['context'] = {
|
||||
'default_applicant_id': applicant.id,
|
||||
'default_partner_id': applicant.partner_id and applicant.partner_id.id or False,
|
||||
'default_user_id': uid,
|
||||
'default_email_from': applicant.email_from,
|
||||
'default_state': 'open',
|
||||
'default_name': applicant.name,
|
||||
'default_categ_id': category.id,
|
||||
}
|
||||
return res
|
||||
|
||||
def action_print_survey(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
|
|
|
@ -5,11 +5,9 @@
|
|||
-->
|
||||
<data>
|
||||
|
||||
<!-- Case category (for interview meetings) -->
|
||||
<record model="crm.case.categ" id="categ_meet_interview">
|
||||
<!-- Meeting Types (for interview meetings) -->
|
||||
<record model="crm.meeting.type" id="categ_meet_interview">
|
||||
<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>
|
||||
|
||||
<!-- HR Recruitment Source -->
|
||||
|
|
|
@ -16,18 +16,6 @@
|
|||
view_mode="tree,form,calendar,graph"
|
||||
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
|
||||
# ------------------------------------------------------
|
||||
|
@ -150,58 +138,58 @@
|
|||
<label for="name" class="oe_edit_only"/>
|
||||
<h1><field name="name"/></h1>
|
||||
<label for="partner_name" class="oe_edit_only"/>
|
||||
<h2><field name="partner_name"/></h2>
|
||||
<field name="type_id" placeholder="Degree"/>
|
||||
<h2>
|
||||
<field name="partner_name" class="oe_inline"/>
|
||||
</h2>
|
||||
</div>
|
||||
|
||||
<group>
|
||||
<group>
|
||||
<field name="user_id"/>
|
||||
<field name="title_action"/>
|
||||
<field name="date_action"/>
|
||||
<group string="Contact Details">
|
||||
<field name="partner_id"
|
||||
on_change="onchange_partner_id(partner_id, email_from)"/>
|
||||
<field name="email_from" widget="email"/>
|
||||
<field name="partner_phone"/>
|
||||
<field name="partner_mobile"/>
|
||||
<field name="type_id" placeholder="Degree"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="job_id" on_change="onchange_job(job_id)"/>
|
||||
<field name="priority" string="Appreciation"/>
|
||||
<group string="Application Followup">
|
||||
<field name="user_id"/>
|
||||
<label for="title_action"/>
|
||||
<div>
|
||||
<field name="date_action"/> -
|
||||
<field name="title_action" class="oe_inline" placeholder="Call for proposal"/>
|
||||
</div>
|
||||
<field name="priority"/>
|
||||
<field name="state" invisible="1"/>
|
||||
</group>
|
||||
<group string="Job">
|
||||
<field name="survey" invisible="1"/>
|
||||
<field name="response" invisible="1"/>
|
||||
<field name="department_id" widget="selection" on_change="onchange_department_id(department_id)"/>
|
||||
<field name="state" groups="base.group_no_one"/>
|
||||
<field name="job_id" on_change="onchange_job(job_id)"/>
|
||||
<field name="department_id" on_change="onchange_department_id(department_id)"/>
|
||||
<label for="availability"/>
|
||||
<div>
|
||||
<field name="availability" class="oe_inline"/> <label string="Day(s)" class="oe_inline"/>
|
||||
</div>
|
||||
</group>
|
||||
<group string="Contract">
|
||||
<label for="salary_expected"/>
|
||||
<div>
|
||||
<field name="salary_expected" class="oe_inline"/>,
|
||||
<field name="salary_expected_extra" class="oe_inline" placeholder="Extra advantages..."/>
|
||||
</div>
|
||||
<label for="salary_proposed"/>
|
||||
<div>
|
||||
<field name="salary_proposed" class="oe_inline"/>,
|
||||
<field name="salary_proposed_extra" class="oe_inline" placeholder="Extra advantages..."/>
|
||||
</div>
|
||||
</group>
|
||||
<group string="Reference">
|
||||
<field name="source_id"/>
|
||||
<field name="reference"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Application">
|
||||
<group>
|
||||
<group string="Contact">
|
||||
<label for="partner_id"/>
|
||||
<div>
|
||||
<field name="partner_id" class="oe_inline"
|
||||
on_change="onchange_partner_id(partner_id, email_from)"/>
|
||||
<button class="oe_inline"
|
||||
string="Create" help="Create a new contact for this applicant" icon="gtk-index"
|
||||
name="%(action_hr_recruitment_partner_create)d" type="action"
|
||||
attrs="{'invisible':[('partner_id','!=',False)]}"/>
|
||||
</div>
|
||||
<field name="email_from" widget="email"/>
|
||||
<field name="partner_phone"/>
|
||||
<field name="partner_mobile"/>
|
||||
</group>
|
||||
<group string="Reference">
|
||||
<field name="source_id"/>
|
||||
<field name="reference"/>
|
||||
</group>
|
||||
<group string="Contract">
|
||||
<field name="salary_expected"/>
|
||||
<field name="salary_expected_extra"/>
|
||||
<field name="salary_proposed"/>
|
||||
<field name="salary_proposed_extra"/>
|
||||
<field name="availability"/>
|
||||
</group>
|
||||
</group>
|
||||
<separator string="Details"/>
|
||||
<field name="description"/>
|
||||
</page>
|
||||
</notebook>
|
||||
<separator string="Application Summary"/>
|
||||
<field name="description" placeholder="Feedback of interviews..."/>
|
||||
</sheet>
|
||||
<footer>
|
||||
<field name="message_ids" widget="mail_thread"/>
|
||||
|
@ -371,15 +359,15 @@
|
|||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="hr.view_hr_job_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="expected_employees" version="7.0" position="after">
|
||||
<label for="survey_id" />
|
||||
<div>
|
||||
<field name="survey_id" class="oe_inline"/>
|
||||
<button class="oe_inline"
|
||||
string="Interview" icon="gtk-print"
|
||||
name="action_print_survey" type="object"
|
||||
attrs="{'invisible':[('survey_id','=',False)]}"/>
|
||||
</div>
|
||||
<field name="no_of_recruitment" version="7.0" position="after">
|
||||
<label for="survey_id" />
|
||||
<div>
|
||||
<field name="survey_id" class="oe_inline"/>
|
||||
<button class="oe_inline"
|
||||
string="Interview" icon="gtk-print"
|
||||
name="action_print_survey" type="object"
|
||||
attrs="{'invisible':[('survey_id','=',False)]}"/>
|
||||
</div>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
@ -517,21 +505,15 @@
|
|||
action="hr_recruitment_source_action"
|
||||
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="model">crm.meeting</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="partner_id" position="before">
|
||||
<field name="applicant_id" attrs="{'invisible': [('categ_id','!=',%(hr_recruitment.categ_meet_interview)d)]}"/>
|
||||
</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>
|
||||
</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_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_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,crm.model_crm_meeting,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_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
|
||||
|
|
|
|
@ -50,13 +50,6 @@
|
|||
-
|
||||
!python {model: hr.applicant}: |
|
||||
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.
|
||||
-
|
||||
|
|
|
@ -20,7 +20,6 @@
|
|||
##############################################################################
|
||||
|
||||
|
||||
import hr_recruitment_phonecall
|
||||
import hr_recruitment_create_partner_job
|
||||
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,29 +26,38 @@
|
|||
<field name="model">hr.analytic.timesheet</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Timesheet Lines">
|
||||
<group col="4">
|
||||
<field name="name" colspan="4"/>
|
||||
<field name="user_id" on_change="on_change_user_id(user_id)" required="1"/>
|
||||
<field name="date" on_change="on_change_date(date)"/>
|
||||
<form string="Timesheet Lines" version="7.0">
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="user_id" on_change="on_change_user_id(user_id)" required="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="date" on_change="on_change_date(date)"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Information">
|
||||
<group>
|
||||
<group string="Product">
|
||||
<field name="product_id" on_change="on_change_unit_amount(product_id, unit_amount, False, product_uom_id,journal_id)" required="1" domain="[('type','=','service')]"/>
|
||||
<field name="product_uom_id" on_change="on_change_unit_amount(product_id, unit_amount, False, product_uom_id,journal_id)"/>
|
||||
<field name="unit_amount" on_change="on_change_unit_amount(product_id, unit_amount, False, product_uom_id,journal_id)" widget="float_time"/>
|
||||
</group>
|
||||
<group string="Accounting">
|
||||
<field domain="[('type','=','normal'),('state', '<>', 'close'),('parent_id','!=',False)]" name="account_id"/>
|
||||
<field name="amount"/>
|
||||
<field name="general_account_id"/>
|
||||
<field name="journal_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<group string="Product">
|
||||
<field name="product_id" on_change="on_change_unit_amount(product_id, unit_amount, False, product_uom_id,journal_id)" required="1" domain="[('type','=','service')]"/>
|
||||
<label string="Quantity" for="unit_amount"/>
|
||||
<div>
|
||||
<field name="unit_amount" on_change="on_change_unit_amount(product_id, unit_amount, False, product_uom_id,journal_id)" class="oe_inline"/>
|
||||
<field name="product_uom_id" on_change="on_change_unit_amount(product_id, unit_amount, False, product_uom_id,journal_id)" class="oe_inline"/>
|
||||
</div>
|
||||
</group>
|
||||
<group string="Accounting">
|
||||
<field domain="[('type','=','normal'),('state', '<>', 'close'),('parent_id','!=',False)]" name="account_id" select="1"/>
|
||||
<field name="amount"/>
|
||||
<field name="general_account_id"/>
|
||||
<field name="journal_id"/>
|
||||
</group>
|
||||
</group>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
@ -112,10 +121,14 @@
|
|||
<field name="model">hr.employee</field>
|
||||
<field name="inherit_id" ref="hr.view_employee_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<page string="Categories" position="after">
|
||||
<page string="Personal Information" position="after">
|
||||
<page string="Timesheets" groups="base.group_hr_user">
|
||||
<field name="product_id" domain="[('type','=','service')]"/>
|
||||
<field name="journal_id" widget="selection"/>
|
||||
<group>
|
||||
<group col="2">
|
||||
<field name="product_id" domain="[('type','=','service')]"/>
|
||||
<field name="journal_id"/>
|
||||
</group>
|
||||
</group>
|
||||
</page>
|
||||
</page>
|
||||
</field>
|
||||
|
|
|
@ -62,39 +62,50 @@
|
|||
<label for="employee_id" class="oe_edit_only"/>
|
||||
<h1><field name="employee_id" on_change="onchange_employee_id(employee_id)"/></h1>
|
||||
<label for="date_from" class="oe_edit_only" string="Timesheet Period"/>
|
||||
<h2>
|
||||
From <field name="date_from"/>
|
||||
to <field name="date_to"/>
|
||||
</h2>
|
||||
<group col="4">
|
||||
<field name="name"/>
|
||||
<field name="department_id"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="user_id" invisible="1"/>
|
||||
<h2>From <field name="date_from"/> to <field name="date_to"/></h2>
|
||||
<group>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="department_id"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="total_attendance" widget="float_time"/>
|
||||
<field name="total_timesheet" widget="float_time"/>
|
||||
<field name="total_difference" widget="float_time"/>
|
||||
<field name="user_id" invisible="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Daily">
|
||||
<group col="6" colspan="4">
|
||||
<button name="button_dummy" string="Go to:" type="object" icon="terp-gtk-jump-to-ltr"/>
|
||||
<field name="date_current" nolabel="1"/>
|
||||
<label string=""/>
|
||||
<button icon="terp-gtk-go-back-ltr" name="date_previous" string="" type="object"/>
|
||||
<button name="date_today" string="Today" type="object" icon="terp-go-today"/>
|
||||
<button icon="terp-gtk-go-back-rtl" name="date_next" string="" type="object"/>
|
||||
<group>
|
||||
<div>
|
||||
<button name="button_dummy" class="oe_inline" string="Go to" type="object" icon="terp-gtk-jump-to-ltr"/> :
|
||||
<field name="date_current" class="oe_inline"/>
|
||||
</div>
|
||||
<div align="right">
|
||||
<button class="oe_inline" icon="terp-gtk-go-back-ltr" name="date_previous" string="" type="object"/>
|
||||
<button class="oe_inline" name="date_today" string="Today" type="object" icon="terp-go-today"/>
|
||||
<button class="oe_inline" icon="terp-gtk-go-back-rtl" name="date_next" string="" type="object"/>
|
||||
</div>
|
||||
</group>
|
||||
|
||||
<field colspan="3" context="{'name':date_current,'user_id':user_id}" height="100" name="attendances_ids" nolabel="1">
|
||||
<tree string="Attendances" editable="bottom">
|
||||
<field name="name"/>
|
||||
<field name="action"/>
|
||||
<field invisible="1" name="employee_id"/>
|
||||
</tree>
|
||||
</field>
|
||||
<group col="4" colspan="1">
|
||||
<group colspan="4" col="3">
|
||||
<field context="{'name':date_current,'user_id':user_id}" name="attendances_ids" nolabel="1">
|
||||
<tree string="Attendances" editable="bottom">
|
||||
<field name="name"/>
|
||||
<field name="action"/>
|
||||
<field invisible="1" name="employee_id"/>
|
||||
</tree>
|
||||
</field>
|
||||
<group>
|
||||
<div align="right">
|
||||
<button name="sign_in" string="Sign In" type="object" icon="terp-gtk-jump-to-ltr"/>
|
||||
<button name="sign_out" string="Sign Out" type="object" icon="terp-gtk-jump-to-rtl"/>
|
||||
</div>
|
||||
</group>
|
||||
</group>
|
||||
<group col="4">
|
||||
<field name="state_attendance"/>
|
||||
<button name="sign_in" string="Sign In" type="object" icon="terp-gtk-jump-to-ltr"/>
|
||||
<button name="sign_out" string="Sign Out" type="object" icon="terp-gtk-jump-to-rtl"/>
|
||||
<field name="total_attendance_day" widget="float_time" colspan="4"/>
|
||||
</group>
|
||||
<field colspan="4" context="{'date':date_current,'user_id':user_id}" domain="[('name','=',date_current)]" name="timesheet_ids" nolabel="1">
|
||||
<tree editable="top" string="Timesheet Lines">
|
||||
|
@ -124,8 +135,6 @@
|
|||
<field name="user_id" required="1"/>
|
||||
</form>
|
||||
</field>
|
||||
<field name="total_difference_day" widget="float_time"/>
|
||||
<field name="total_timesheet_day" widget="float_time"/>
|
||||
</page>
|
||||
<page string="Summary">
|
||||
<field colspan="4" name="period_ids" nolabel="1">
|
||||
|
@ -136,11 +145,6 @@
|
|||
<field name="total_difference" widget="float_time"/>
|
||||
</tree>
|
||||
</field>
|
||||
<group colspan="4" col="6">
|
||||
<field name="total_attendance" widget="float_time"/>
|
||||
<field name="total_timesheet" widget="float_time"/>
|
||||
<field name="total_difference" widget="float_time"/>
|
||||
</group>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
|
@ -227,7 +231,7 @@
|
|||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="hr_timesheet.hr_timesheet_line_search"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="user_id" position="before">
|
||||
<field name="date" position="before">
|
||||
<field name="sheet_id"/>
|
||||
</field>
|
||||
</field>
|
||||
|
@ -349,6 +353,17 @@
|
|||
<act_window
|
||||
context="{'search_default_employee_id': [active_id], 'default_employee_id': active_id}"
|
||||
id="act_hr_employee_2_hr_timesheet" name="Timesheets" res_model="hr_timesheet_sheet.sheet" src_model="hr.employee"/>
|
||||
|
||||
<record id="hr_timesheet_sheet_employee_extd_form" model="ir.ui.view">
|
||||
<field name="name">hr.timesheet.sheet.employee.extd_form</field>
|
||||
<field name="model">hr.employee</field>
|
||||
<field name="inherit_id" ref="hr_timesheet.hr_timesheet_employee_extd_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//div[@name='button_box']" position="inside">
|
||||
<button name="%(act_hr_employee_2_hr_timesheet)d" string="Timesheets" type="action"/>
|
||||
</xpath>
|
||||
</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""",
|
||||
'author': 'OpenERP SA',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['base', 'import_base', 'google_base_account','crm'],
|
||||
'depends': ['base', 'import_base', 'google_base_account', 'base_calendar'],
|
||||
'init_xml': [],
|
||||
'update_xml': ['security/ir.model.access.csv',
|
||||
'sync_google_calendar_view.xml',
|
||||
|
|
|
@ -21,11 +21,11 @@
|
|||
|
||||
from osv import fields,osv
|
||||
|
||||
class crm_case_categ(osv.osv):
|
||||
""" Category of Case """
|
||||
_inherit = "crm.case.categ"
|
||||
class crm_meeting_type(osv.osv):
|
||||
""" Meeting Types """
|
||||
_inherit = "crm.meeting.type"
|
||||
_columns = {
|
||||
'user_id': fields.many2one('res.users', 'User')
|
||||
}
|
||||
crm_case_categ()
|
||||
|
||||
# vim:expandtab:smartindent:toabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -1,30 +1,14 @@
|
|||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<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="model">crm.meeting</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="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>
|
||||
</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 name="categ_id" widget="selection" domain="[('user_id', 'in', [uid, False])]"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
@ -235,10 +235,10 @@ class google_import(import_framework):
|
|||
|
||||
|
||||
def get_event_category(self, val, name):
|
||||
fields = ['name', 'object_id']
|
||||
nameid = 'event_category_'+name
|
||||
data = [name, 'crm.meeting']
|
||||
return self.import_object(fields, data, 'crm.case.categ', "crm_case_categ", nameid, [('name', 'ilike', name)])
|
||||
nameid = 'event_category_' + name
|
||||
fields = ['name']
|
||||
data = [name]
|
||||
return self.import_object(fields, data, 'crm.meeting.type', "crm_meeting_type", nameid, [('name', 'ilike', name)])
|
||||
|
||||
def get_rec(self, val):
|
||||
if val.get("recurrency"):
|
||||
|
|
|
@ -9,23 +9,17 @@
|
|||
<field name="inherit_id" ref="hr_contract.hr_contract_view_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<data>
|
||||
<xpath expr="//page[@name='information']/group/group[@name='right_column']" position="before">
|
||||
<xpath expr="//field[@name='struct_id']" position="after">
|
||||
<field name="travel_reimbursement_amount"/>
|
||||
<field name="car_company_amount"/>
|
||||
<field name="car_employee_deduction"/>
|
||||
<field name="misc_onss_deduction"/>
|
||||
<field name="meal_voucher_amount"/>
|
||||
<field name="meal_voucher_employee_deduction"/>
|
||||
<field name="misc_advantage_amount"/>
|
||||
<separator string="Miscellaneous" colspan="2"/>
|
||||
<field name="additional_net_amount"/>
|
||||
<field name="retained_net_amount"/>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='trial_date_end']" position="after">
|
||||
<group colspan="2" col="2">
|
||||
<separator string="by Worker" colspan="2"/>
|
||||
<field name="insurance_employee_deduction"/>
|
||||
<field name="meal_voucher_employee_deduction"/>
|
||||
<field name="car_employee_deduction"/>
|
||||
</group>
|
||||
<field name="insurance_employee_deduction"/>
|
||||
</xpath>
|
||||
</data>
|
||||
</field>
|
||||
|
|
|
@ -20,36 +20,41 @@
|
|||
##############################################################################
|
||||
|
||||
{
|
||||
'name': 'Emails Management',
|
||||
'name': 'Social Network',
|
||||
'version': '1.0',
|
||||
'category': 'Hidden/Dependency',
|
||||
'category':'Social Network',
|
||||
"sequence": 2,
|
||||
'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
|
||||
application, but to provide a unified email abstraction that all
|
||||
other applications can use.
|
||||
It also provides a feeds page combined to a subscription mechanism, that
|
||||
allows to follow documents, and to be constantly updated about recent
|
||||
news.
|
||||
|
||||
The main features of the module are :
|
||||
|
||||
The main features are:
|
||||
|
||||
* Relies on the global Outgoing Mail Servers configured in the
|
||||
Administration menu for delivering outgoing mail
|
||||
* Provides an API for sending messages and archiving them,
|
||||
grouped by conversation
|
||||
* Any OpenERP document can act as a conversation topic, provided
|
||||
it includes the necessary support for handling incoming emails
|
||||
(see the ``mail.thread`` class for more details).
|
||||
* Includes queuing mechanism with automated configurable
|
||||
scheduler-based processing
|
||||
* Includes a generic email composition assistant, that can turn
|
||||
* a clean and renewed communication history for any OpenERP
|
||||
document that can act as a discussion topic,
|
||||
* a discussion mean on documents,
|
||||
* a subscription mechanism to be updated about new messages on
|
||||
interesting documents,
|
||||
* an unified feeds page to see recent messages and activity
|
||||
on followed documents,
|
||||
* user communication through the feeds page,
|
||||
* a threaded discussion design,
|
||||
* relies on the global outgoing mail server, an integrated email
|
||||
management system allowing to send emails with a configurable
|
||||
scheduler-based processing engine
|
||||
* includes an extensible generic email composition assistant, that can turn
|
||||
into a mass-mailing assistant, and is capable of interpreting
|
||||
simple *placeholder expressions* that will be replaced with
|
||||
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)
|
||||
|
||||
dynamic data when each email is actually sent
|
||||
""",
|
||||
'author': 'OpenERP SA',
|
||||
'website': 'http://www.openerp.com',
|
||||
|
@ -69,6 +74,7 @@ The main features are:
|
|||
],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'application':True,
|
||||
'certificate': '001056784984222247309',
|
||||
'images': [
|
||||
'images/customer_history.jpeg',
|
||||
|
@ -94,6 +100,6 @@ The main features are:
|
|||
],
|
||||
'demo': [
|
||||
'mail_demo.xml',
|
||||
],
|
||||
],
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 5.6 KiB |
|
@ -91,7 +91,7 @@ openerp.mail = function(session) {
|
|||
this.params = params;
|
||||
this.params.parent_id = this.params.parent_id || false;
|
||||
this.params.thread_level = this.params.thread_level || 0;
|
||||
this.params.msg_more_limit = this.params.msg_more_limit || 100;
|
||||
this.params.msg_more_limit = this.params.msg_more_limit || 290;
|
||||
this.params.limit = this.params.limit || 100;
|
||||
this.params.offset = this.params.offset || 0;
|
||||
this.params.records = this.params.records || null;
|
||||
|
@ -304,7 +304,6 @@ openerp.mail = function(session) {
|
|||
|
||||
// format date according to the user timezone
|
||||
record.date = session.web.format_value(record.date, {type:"datetime"});
|
||||
|
||||
var rendered = session.web.qweb.render('mail.Thread.message', {'record': record, 'thread': this, 'params': this.params, 'display': this.display});
|
||||
$(rendered).appendTo(this.$element.children('div.oe_mail_thread_display:first'));
|
||||
// expand feature
|
||||
|
@ -635,6 +634,7 @@ openerp.mail = function(session) {
|
|||
start: function () {
|
||||
this._super.apply(this, arguments);
|
||||
var self = this;
|
||||
this.display_current_user();
|
||||
// add events
|
||||
this.add_event_handlers();
|
||||
// load mail.message search view
|
||||
|
@ -694,6 +694,14 @@ openerp.mail = function(session) {
|
|||
});
|
||||
},
|
||||
|
||||
display_current_user: function () {
|
||||
return this.$element.find('img.oe_mail_msg_image').attr('src', this.thread_get_avatar('res.users', 'avatar', this.session.uid));
|
||||
},
|
||||
|
||||
thread_get_avatar: function(model, field, id) {
|
||||
return this.session.prefix + '/web/binary/image?session_id=' + this.session.session_id + '&model=' + model + '&field=' + field + '&id=' + (id || '');
|
||||
},
|
||||
|
||||
/**
|
||||
* Initializes the wall and calls fetch_comments
|
||||
* @param {Number} limit: number of notifications to fetch
|
||||
|
|
|
@ -56,9 +56,7 @@
|
|||
<div t-name="mail.Thread" class="oe_mail oe_mail_thread">
|
||||
<div class="oe_mail_thread_action">
|
||||
<img class="oe_mail_msg_image oe_left" alt="User img"/>
|
||||
<div class="oe_mail_msg_content">
|
||||
<textarea class="oe_mail oe_mail_action_textarea" placeholder="Add your comment here..." onfocus="this.value = '';"/>
|
||||
</div>
|
||||
<textarea class="oe_mail oe_mail_action_textarea" placeholder="Add your comment here..." onfocus="this.value = '';"/>
|
||||
</div>
|
||||
<div class="oe_mail_thread_display"></div>
|
||||
<div class="oe_mail_thread_more">
|
||||
|
|
|
@ -292,4 +292,43 @@ class mail_compose_message(osv.osv_memory):
|
|||
return tools.ustr(result)
|
||||
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:
|
||||
|
|
|
@ -439,7 +439,7 @@ class marketing_campaign_activity(osv.osv):
|
|||
'revenue': fields.float('Revenue', help="Set an expected revenue if you consider that every campaign item that has reached this point has generated a certain revenue. You can get revenue statistics in the Reporting section", digits_compute=dp.get_precision('Sale Price')),
|
||||
'signal': fields.char('Signal', size=128,
|
||||
help='An activity with a signal can be called programmatically. Be careful, the workitem is always created when a signal is sent'),
|
||||
'keep_if_condition_not_met': fields.boolean("Don't delete workitems",
|
||||
'keep_if_condition_not_met': fields.boolean("Don't Delete Workitems",
|
||||
help="By activating this option, workitems that aren't executed because the condition is not met are marked as cancelled instead of being deleted.")
|
||||
}
|
||||
|
||||
|
|
|
@ -9,6 +9,22 @@
|
|||
Marketing Campaign
|
||||
======================
|
||||
-->
|
||||
<act_window name="All Segments"
|
||||
res_model="marketing.campaign.segment"
|
||||
src_model="marketing.campaign"
|
||||
view_type="form"
|
||||
view_mode="tree,form"
|
||||
id="act_marketing_campaing_segment_opened"
|
||||
context="{'search_default_campaign_id': [active_id], 'default_campaign_id': active_id}"
|
||||
/>
|
||||
|
||||
<!-- Campaign Followups -->
|
||||
<act_window
|
||||
context="{'search_default_campaign_id': [active_id], 'default_campaign_id': active_id}"
|
||||
id="act_marketing_campaing_followup"
|
||||
name="Campaign Follow-up" res_model="marketing.campaign.workitem"
|
||||
src_model="marketing.campaign" view_mode="tree,form"
|
||||
view_type="form" />
|
||||
|
||||
<record model="ir.ui.view" id="view_marketing_campaign_form">
|
||||
<field name="name">marketing.campaign.form</field>
|
||||
|
@ -24,20 +40,30 @@
|
|||
<field name="state" readonly="1" widget="statusbar" statusbar_visible="draft,running,done"/>
|
||||
</header>
|
||||
<sheet string="Campaign">
|
||||
<div class="oe_right oe_button_box" name="button_box">
|
||||
<button type="action"
|
||||
name="%(act_marketing_campaing_followup)d"
|
||||
string="Follow-Up" />
|
||||
<button type="action"
|
||||
name="%(act_marketing_campaing_segment_opened)d"
|
||||
string="Segments" />
|
||||
</div>
|
||||
<div class="oe_title">
|
||||
<label for="name" class="oe_edit_only"/>
|
||||
<h1><field name="name" class="oe_inline"/></h1>
|
||||
</div>
|
||||
<group>
|
||||
<group string="Campaign">
|
||||
<field name="name"/>
|
||||
<group>
|
||||
<field name="mode"/>
|
||||
<field name="fixed_cost"/>
|
||||
</group>
|
||||
<group string="Resource">
|
||||
<group>
|
||||
<field name="object_id"/>
|
||||
<field name="partner_field_id"/>
|
||||
<field name="unique_field_id"/>
|
||||
</group>
|
||||
<group string="Cost">
|
||||
<field name="fixed_cost"/>
|
||||
</group>
|
||||
</group>
|
||||
</group>
|
||||
<separator string="Activities"/>
|
||||
<field name="activity_ids" context="{'default_object_id': object_id, 'default_campaign_id': active_id}" />
|
||||
</sheet>
|
||||
</form>
|
||||
|
@ -143,16 +169,11 @@
|
|||
</header>
|
||||
<sheet string="Segments" >
|
||||
<group>
|
||||
<group string="Segment">
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="campaign_id" on_change="onchange_campaign_id(campaign_id)"/>
|
||||
<field name="object_id" invisible="1"/>
|
||||
</group>
|
||||
<group string="Filter">
|
||||
<field name="ir_filter_id"/>
|
||||
</group>
|
||||
<group string="Synchronization">
|
||||
<field name="sync_mode" required="True"/>
|
||||
<field name="sync_mode" required="True"/>
|
||||
<label for="sync_last_date"/>
|
||||
<div>
|
||||
<field name="sync_last_date" class="oe_inline"/>
|
||||
|
@ -160,7 +181,8 @@
|
|||
</div>
|
||||
<field name="date_next_sync"/>
|
||||
</group>
|
||||
<group string="History">
|
||||
<group>
|
||||
<field name="ir_filter_id"/>
|
||||
<field name="date_run" readonly="1"/>
|
||||
<field name="date_done" readonly="1"/>
|
||||
</group>
|
||||
|
@ -243,33 +265,34 @@
|
|||
<field name="arch" type="xml">
|
||||
<form string="Activities" version="7.0">
|
||||
<group>
|
||||
<group string="Activity">
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="signal" groups="base.group_no_one"/>
|
||||
<field name="start"/>
|
||||
<field name="object_id" invisible="1"/>
|
||||
<field name="campaign_id" invisible="1"/>
|
||||
</group>
|
||||
<group string="Cost / Revenue">
|
||||
<group>
|
||||
<field name="variable_cost"/>
|
||||
<field name="revenue"/>
|
||||
</group>
|
||||
</group>
|
||||
<group string="Condition" col="4">
|
||||
<field name="condition" widget="char" colspan="4"/>
|
||||
<field name="keep_if_condition_not_met"/>
|
||||
</group>
|
||||
<group col="4">
|
||||
<separator string="Action" colspan="4"/>
|
||||
<field name="type"/>
|
||||
<field name="email_template_id" attrs="{'required':[('type','=','email')], 'invisible':[('type','!=','email')]}"
|
||||
<group >
|
||||
<group>
|
||||
<field name="condition" widget="char"/>
|
||||
<field name="keep_if_condition_not_met"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="type"/>
|
||||
<field name="email_template_id" attrs="{'required':[('type','=','email')], 'invisible':[('type','!=','email')]}"
|
||||
context="{'default_model_id':object_id}" />
|
||||
<field name="server_action_id" attrs="{'required':[('type','=','action')],'invisible':[('type','!=','action')]}" domain="[('model_id','=',object_id)]"/>
|
||||
<field name="report_id" attrs="{'required':[('type','=','report')],'invisible':[('type','!=','report')]}" context="{'object_id':object_id}"/>
|
||||
<field name="report_directory_id" attrs="{'required':[('type','=','report')],'invisible':[('type','!=','report')]}"/>
|
||||
<field name="server_action_id" attrs="{'required':[('type','=','action')],'invisible':[('type','!=','action')]}" domain="[('model_id','=',object_id)]"/>
|
||||
<field name="report_id" attrs="{'required':[('type','=','report')],'invisible':[('type','!=','report')]}" context="{'object_id':object_id}"/>
|
||||
<field name="report_directory_id" attrs="{'required':[('type','=','report')],'invisible':[('type','!=','report')]}"/>
|
||||
</group>
|
||||
</group>
|
||||
<separator string="Transitions"/>
|
||||
<field name="from_ids" mode="tree,form" context="{'default_activity_to_id': active_id}">
|
||||
<separator string="Previous Activities"/>
|
||||
<field name="from_ids" mode="tree" context="{'default_activity_to_id': active_id}">
|
||||
<tree string="Incoming Transitions" editable="bottom">
|
||||
<field name="activity_from_id" domain="[('campaign_id', '=', parent.campaign_id)]"/>
|
||||
<field name='trigger'/>
|
||||
|
@ -285,7 +308,8 @@
|
|||
</group>
|
||||
</form>
|
||||
</field>
|
||||
<field name="to_ids" nolabel="1" mode="tree,form" context="{'default_activity_from_id': active_id}" colspan="2">
|
||||
<separator string="Next Activities"/>
|
||||
<field name="to_ids" mode="tree" context="{'default_activity_from_id': active_id}">
|
||||
<tree string="Outgoing Transitions" editable="bottom">
|
||||
<field name="activity_to_id" domain="[('campaign_id', '=', parent.campaign_id)]"/>
|
||||
<field name='trigger'/>
|
||||
|
@ -363,12 +387,13 @@
|
|||
</header>
|
||||
<sheet>
|
||||
<group>
|
||||
<group string="Campaign Step">
|
||||
<group>
|
||||
<field name="campaign_id"/>
|
||||
<field name="segment_id"/>
|
||||
<field name="activity_id" context="{'segment_id':segment_id}"/>
|
||||
<field name="date"/>
|
||||
</group><group string="Related Resource">
|
||||
</group>
|
||||
<group>
|
||||
<field name="object_id" readonly="True"/>
|
||||
<field name="res_name"/>
|
||||
<field name="res_id"/>
|
||||
|
|
|
@ -957,9 +957,8 @@
|
|||
</xpath>
|
||||
<xpath expr="//field[@name='close_move']" position="after">
|
||||
<group colspan="4" groups="product.group_mrp_properties">
|
||||
<separator colspan="4" string="Properties" />
|
||||
<field colspan="4" name="property_ids" nolabel="1"/>
|
||||
</group>
|
||||
<field colspan="4" name="property_ids" widget="many2many_tags"/>
|
||||
</group>
|
||||
</xpath>
|
||||
</data>
|
||||
</field>
|
||||
|
|
|
@ -7,14 +7,14 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
|
||||
"PO-Revision-Date: 2010-08-03 09:16+0000\n"
|
||||
"Last-Translator: Mantavya Gajjar (Open ERP) <Unknown>\n"
|
||||
"PO-Revision-Date: 2012-07-05 11:02+0000\n"
|
||||
"Last-Translator: Marko Carevic <Unknown>\n"
|
||||
"Language-Team: Vinteh\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-28 04:36+0000\n"
|
||||
"X-Generator: Launchpad (build 15505)\n"
|
||||
"X-Launchpad-Export-Date: 2012-07-06 04:58+0000\n"
|
||||
"X-Generator: Launchpad (build 15558)\n"
|
||||
"Language: hr\n"
|
||||
|
||||
#. module: project
|
||||
|
@ -108,7 +108,7 @@ msgstr "Sati za procjenu"
|
|||
#. module: project
|
||||
#: view:project.project:0
|
||||
msgid "Pending Projects"
|
||||
msgstr ""
|
||||
msgstr "Projekti na čekanju"
|
||||
|
||||
#. module: project
|
||||
#: help:project.task,remaining_hours:0
|
||||
|
@ -191,7 +191,7 @@ msgstr "Tvrtka"
|
|||
#. module: project
|
||||
#: view:report.project.task.user:0
|
||||
msgid "Pending tasks"
|
||||
msgstr ""
|
||||
msgstr "Zadaci na čekanju"
|
||||
|
||||
#. module: project
|
||||
#: field:project.task.delegate,prefix:0
|
||||
|
@ -206,7 +206,7 @@ msgstr ""
|
|||
#. module: project
|
||||
#: model:process.transition.action,name:project.process_transition_action_openpendingtask0
|
||||
msgid "Set pending"
|
||||
msgstr "Postavite u tijeku"
|
||||
msgstr "Staviti na čekanje"
|
||||
|
||||
#. module: project
|
||||
#: selection:project.task,priority:0
|
||||
|
@ -641,7 +641,7 @@ msgstr "Srednji"
|
|||
#. module: project
|
||||
#: view:project.task:0 view:project.task.history.cumulative:0
|
||||
msgid "Pending Tasks"
|
||||
msgstr ""
|
||||
msgstr "Zadaci na čekanju"
|
||||
|
||||
#. module: project
|
||||
#: view:project.task:0 field:project.task,remaining_hours:0
|
||||
|
@ -705,7 +705,7 @@ msgstr ""
|
|||
#: selection:project.vs.hours,state:0 view:report.project.task.user:0
|
||||
#: selection:report.project.task.user,state:0 selection:task.by.days,state:0
|
||||
msgid "Pending"
|
||||
msgstr "U toku"
|
||||
msgstr "Na čekanju"
|
||||
|
||||
#. module: project
|
||||
#: field:project.task.delegate,name:0
|
||||
|
|
|
@ -239,7 +239,7 @@
|
|||
<t t-name="kanban-box">
|
||||
<div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_project oe_kanban_auto_height oe_kanban_global_click">
|
||||
<div class="oe_dropdown_toggle oe_dropdown_kanban">
|
||||
<span class="oe_e">i</span>
|
||||
<span class="oe_e">í</span>
|
||||
<ul class="oe_dropdown_menu">
|
||||
<li><a type="edit">Edit...</a></li>
|
||||
<li><a type="delete">Delete</a></li>
|
||||
|
|
|
@ -27,9 +27,6 @@ from tools.translate import _
|
|||
import binascii
|
||||
import time
|
||||
import tools
|
||||
from crm import wizard
|
||||
|
||||
wizard.mail_compose_message.SUPPORTED_MODELS.append('project.issue')
|
||||
|
||||
class project_issue_version(osv.osv):
|
||||
_name = "project.issue.version"
|
||||
|
@ -50,6 +47,7 @@ class project_issue(base_stage, osv.osv):
|
|||
_description = "Project Issue"
|
||||
_order = "priority, create_date desc"
|
||||
_inherit = ['ir.needaction_mixin', 'mail.thread']
|
||||
_mail_compose_message = True
|
||||
|
||||
def _get_default_project_id(self, cr, uid, context=None):
|
||||
""" Gives default project by checking if present in the context """
|
||||
|
|
|
@ -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_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'])]"/>
|
||||
</group>
|
||||
<group>
|
||||
|
@ -235,9 +234,8 @@
|
|||
<field name="delay"/>
|
||||
<field name="th_weight"/>
|
||||
<field name="address_allotment_id"/>
|
||||
<field name="property_ids" widget="many2many_tags"/>
|
||||
</group>
|
||||
<separator string="Properties" colspan="2"/>
|
||||
<field name="property_ids" colspan="4" nolabel="1"/>
|
||||
<field name="notes" groups="base.group_sale_notes_subtotal" placeholder="Add a note on order line..."/>
|
||||
<div groups="base.group_no_one">
|
||||
<separator colspan="4" string="Invoice Lines"/>
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-07-05 04:49+0000\n"
|
||||
"X-Generator: Launchpad (build 15544)\n"
|
||||
"X-Launchpad-Export-Date: 2012-07-06 04:58+0000\n"
|
||||
"X-Generator: Launchpad (build 15558)\n"
|
||||
|
||||
#. module: stock_planning
|
||||
#: code:addons/stock_planning/wizard/stock_planning_createlines.py:73
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,15 +0,0 @@
|
|||
OpenERP, Open Source Management Solution
|
||||
Copyright © 2010-2011 OpenERP SA (<http://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 Lice
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
@ -1,50 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2010-2011 OpenERP s.a. (<http://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/>.
|
||||
#
|
||||
##############################################################################
|
||||
{
|
||||
'name': 'Live Chat Support',
|
||||
'version': '2.0',
|
||||
'category': 'Tools',
|
||||
'description': """
|
||||
Enable live chat support for those who have a maintenance contract.
|
||||
===================================================================
|
||||
|
||||
Add "Support" button in header from where you can access OpenERP Support.
|
||||
""",
|
||||
'author': 'OpenERP SA',
|
||||
'website': 'http://openerp.com',
|
||||
'depends': ['base'],
|
||||
'update_xml': [],
|
||||
'js' : [
|
||||
'static/src/js/web_livechat.js',
|
||||
],
|
||||
'css' : [
|
||||
'static/src/css/lc.css',
|
||||
],
|
||||
'qweb' : [
|
||||
"static/src/xml/*.xml",
|
||||
],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'certificate': '0013762192410413',
|
||||
'images': ['static/src/img/web_livechat_support.jpeg'],
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
@ -1,34 +0,0 @@
|
|||
# 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 01:37+0100\n"
|
||||
"PO-Revision-Date: 2012-01-07 23:53+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-02-09 07:09+0000\n"
|
||||
"X-Generator: Launchpad (build 14763)\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"
|
||||
|
||||
#~ msgid "Live Chat Support"
|
||||
#~ msgstr "التحدث مع الدعم الفني"
|
||||
|
||||
#~ msgid "Enable live chat support for whom have a maintenance contract"
|
||||
#~ msgstr "تمكين الدعم الفني المباشر للحاصلين علي عقد دعم فني"
|
|
@ -1,34 +0,0 @@
|
|||
# Bulgarian translation for openobject-addons
|
||||
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
#
|
||||
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: 2011-03-01 14:52+0000\n"
|
||||
"Last-Translator: Dimitar Markov <dimitar.markov@gmail.com>\n"
|
||||
"Language-Team: Bulgarian <bg@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-02-09 07:09+0000\n"
|
||||
"X-Generator: Launchpad (build 14763)\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"
|
||||
|
||||
#~ msgid "Live Chat Support"
|
||||
#~ msgstr "Поддръжка чат на живо"
|
||||
|
||||
#~ msgid "Enable live chat support for whom have a maintenance contract"
|
||||
#~ msgstr "Разрешете live chat поддръжка ако имате договор за поддръжка"
|
|
@ -1,35 +0,0 @@
|
|||
# Catalan translation for openobject-addons
|
||||
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
#
|
||||
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: 2011-03-05 23:39+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Catalan <ca@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-02-09 07:09+0000\n"
|
||||
"X-Generator: Launchpad (build 14763)\n"
|
||||
|
||||
#. module: web_livechat
|
||||
#: sql_constraint:publisher_warranty.contract:0
|
||||
msgid "That contract is already registered in the system."
|
||||
msgstr "Aquest contracte ja està registrat al sistema."
|
||||
|
||||
#. module: web_livechat
|
||||
#: model:ir.model,name:web_livechat.model_publisher_warranty_contract
|
||||
msgid "publisher_warranty.contract"
|
||||
msgstr "editor_garantia.contracte"
|
||||
|
||||
#~ msgid "Live Chat Support"
|
||||
#~ msgstr "Xat d'assistència"
|
||||
|
||||
#~ msgid "Enable live chat support for whom have a maintenance contract"
|
||||
#~ msgstr ""
|
||||
#~ "Permet suport per xat per a aquells que ja tenen contracte de manteniment"
|
|
@ -1,28 +0,0 @@
|
|||
# Czech 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-04-06 04:48+0000\n"
|
||||
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
|
||||
"Language-Team: Czech <cs@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-04-07 04:55+0000\n"
|
||||
"X-Generator: Launchpad (build 15060)\n"
|
||||
|
||||
#. module: web_livechat
|
||||
#: sql_constraint:publisher_warranty.contract:0
|
||||
msgid "That contract is already registered in the system."
|
||||
msgstr "Tato smlouva je již v systému registrována."
|
||||
|
||||
#. module: web_livechat
|
||||
#: model:ir.model,name:web_livechat.model_publisher_warranty_contract
|
||||
msgid "publisher_warranty.contract"
|
||||
msgstr "publisher_warranty.contract"
|
|
@ -1,28 +0,0 @@
|
|||
# Danish 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-01-27 06:45+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Danish <da@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-02-09 07:09+0000\n"
|
||||
"X-Generator: Launchpad (build 14763)\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 ""
|
|
@ -1,34 +0,0 @@
|
|||
# German translation for openobject-addons
|
||||
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
#
|
||||
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: 2011-02-21 20:28+0000\n"
|
||||
"Last-Translator: Ferdinand @ Camptocamp <Unknown>\n"
|
||||
"Language-Team: German <de@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-02-09 07:09+0000\n"
|
||||
"X-Generator: Launchpad (build 14763)\n"
|
||||
|
||||
#. module: web_livechat
|
||||
#: sql_constraint:publisher_warranty.contract:0
|
||||
msgid "That contract is already registered in the system."
|
||||
msgstr "Der Wartungsvertrag wurde bereits im System registriert."
|
||||
|
||||
#. module: web_livechat
|
||||
#: model:ir.model,name:web_livechat.model_publisher_warranty_contract
|
||||
msgid "publisher_warranty.contract"
|
||||
msgstr "publisher_warranty.contract"
|
||||
|
||||
#~ msgid "Live Chat Support"
|
||||
#~ msgstr "Live Chat Unterstützung"
|
||||
|
||||
#~ msgid "Enable live chat support for whom have a maintenance contract"
|
||||
#~ msgstr "Live Chat für Vetragsinhaber aktivieren"
|
|
@ -1,36 +0,0 @@
|
|||
# Spanish translation for openobject-addons
|
||||
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
#
|
||||
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: 2011-02-15 15:37+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Spanish <es@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-02-09 07:09+0000\n"
|
||||
"X-Generator: Launchpad (build 14763)\n"
|
||||
|
||||
#. module: web_livechat
|
||||
#: sql_constraint:publisher_warranty.contract:0
|
||||
msgid "That contract is already registered in the system."
|
||||
msgstr "Ese contrato ya está registrado en el sistema."
|
||||
|
||||
#. module: web_livechat
|
||||
#: model:ir.model,name:web_livechat.model_publisher_warranty_contract
|
||||
msgid "publisher_warranty.contract"
|
||||
msgstr "editor_garantía.contrato"
|
||||
|
||||
#~ msgid "Live Chat Support"
|
||||
#~ msgstr "Chat de asistencia"
|
||||
|
||||
#~ msgid "Enable live chat support for whom have a maintenance contract"
|
||||
#~ msgstr ""
|
||||
#~ "Permite soporte por chat para aquellos que ya tienen contrato de "
|
||||
#~ "mantenimiento"
|
|
@ -1,38 +0,0 @@
|
|||
# Spanish translation for openobject-addons
|
||||
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
|
||||
"PO-Revision-Date: 2012-02-18 23:24+0000\n"
|
||||
"Last-Translator: Carlos Vásquez (CLEARCORP) "
|
||||
"<carlos.vasquez@clearcorp.co.cr>\n"
|
||||
"Language-Team: Spanish <es@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-02-19 05:43+0000\n"
|
||||
"X-Generator: Launchpad (build 14814)\n"
|
||||
"Language: es\n"
|
||||
|
||||
#. module: web_livechat
|
||||
#: sql_constraint:publisher_warranty.contract:0
|
||||
msgid "That contract is already registered in the system."
|
||||
msgstr "Ese contrato ya está registrado en el sistema."
|
||||
|
||||
#. module: web_livechat
|
||||
#: model:ir.model,name:web_livechat.model_publisher_warranty_contract
|
||||
msgid "publisher_warranty.contract"
|
||||
msgstr "editor_garantía.contrato"
|
||||
|
||||
#~ msgid "Live Chat Support"
|
||||
#~ msgstr "Chat de asistencia"
|
||||
|
||||
#~ msgid "Enable live chat support for whom have a maintenance contract"
|
||||
#~ msgstr ""
|
||||
#~ "Permite soporte por chat para aquellos que ya tienen contrato de "
|
||||
#~ "mantenimiento"
|
|
@ -1,41 +0,0 @@
|
|||
# Spanish translation for openobject-addons
|
||||
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2011-01-11 11:16+0000\n"
|
||||
"PO-Revision-Date: 2011-02-15 15:37+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Spanish <es@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: 2011-09-05 05:58+0000\n"
|
||||
"X-Generator: Launchpad (build 13830)\n"
|
||||
|
||||
#. module: web_livechat
|
||||
#: sql_constraint:publisher_warranty.contract:0
|
||||
msgid ""
|
||||
"Your publisher warranty contract is already subscribed in the system !"
|
||||
msgstr "¡Su contrato de garantía del editor ya está inscrito en el sistema!"
|
||||
|
||||
#. module: web_livechat
|
||||
#: model:ir.module.module,shortdesc:web_livechat.module_meta_information
|
||||
msgid "Live Chat Support"
|
||||
msgstr "Chat de asistencia"
|
||||
|
||||
#. module: web_livechat
|
||||
#: model:ir.model,name:web_livechat.model_publisher_warranty_contract
|
||||
msgid "publisher_warranty.contract"
|
||||
msgstr "editor_garantía.contrato"
|
||||
|
||||
#. module: web_livechat
|
||||
#: model:ir.module.module,description:web_livechat.module_meta_information
|
||||
msgid "Enable live chat support for whom have a maintenance contract"
|
||||
msgstr ""
|
||||
"Permite soporte por chat para aquellos que ya tienen contrato de "
|
||||
"mantenimiento"
|
|
@ -1,41 +0,0 @@
|
|||
# Spanish translation for openobject-addons
|
||||
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2011-01-11 11:16+0000\n"
|
||||
"PO-Revision-Date: 2011-02-15 15:37+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Spanish <es@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: 2011-09-05 05:58+0000\n"
|
||||
"X-Generator: Launchpad (build 13830)\n"
|
||||
|
||||
#. module: web_livechat
|
||||
#: sql_constraint:publisher_warranty.contract:0
|
||||
msgid ""
|
||||
"Your publisher warranty contract is already subscribed in the system !"
|
||||
msgstr "¡Su contrato de garantía del editor ya está inscrito en el sistema!"
|
||||
|
||||
#. module: web_livechat
|
||||
#: model:ir.module.module,shortdesc:web_livechat.module_meta_information
|
||||
msgid "Live Chat Support"
|
||||
msgstr "Chat de asistencia"
|
||||
|
||||
#. module: web_livechat
|
||||
#: model:ir.model,name:web_livechat.model_publisher_warranty_contract
|
||||
msgid "publisher_warranty.contract"
|
||||
msgstr "editor_garantía.contrato"
|
||||
|
||||
#. module: web_livechat
|
||||
#: model:ir.module.module,description:web_livechat.module_meta_information
|
||||
msgid "Enable live chat support for whom have a maintenance contract"
|
||||
msgstr ""
|
||||
"Permite soporte por chat para aquellos que ya tienen contrato de "
|
||||
"mantenimiento"
|
|
@ -1,34 +0,0 @@
|
|||
# Finnish translation for openobject-addons
|
||||
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
#
|
||||
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: 2011-06-08 10:30+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Finnish <fi@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-02-09 07:09+0000\n"
|
||||
"X-Generator: Launchpad (build 14763)\n"
|
||||
|
||||
#. module: web_livechat
|
||||
#: sql_constraint:publisher_warranty.contract:0
|
||||
msgid "That contract is already registered in the system."
|
||||
msgstr "Sopimus on jo rekisteröity järjestelmään."
|
||||
|
||||
#. module: web_livechat
|
||||
#: model:ir.model,name:web_livechat.model_publisher_warranty_contract
|
||||
msgid "publisher_warranty.contract"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Live Chat Support"
|
||||
#~ msgstr "Chatin tuki"
|
||||
|
||||
#~ msgid "Enable live chat support for whom have a maintenance contract"
|
||||
#~ msgstr "Aloita chatti tuki ylläpitosopimuksen toimittajan kanssa"
|
|
@ -1,36 +0,0 @@
|
|||
# French translation for openobject-addons
|
||||
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
#
|
||||
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: 2011-02-26 09:39+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: French <fr@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-02-09 07:09+0000\n"
|
||||
"X-Generator: Launchpad (build 14763)\n"
|
||||
|
||||
#. module: web_livechat
|
||||
#: sql_constraint:publisher_warranty.contract:0
|
||||
msgid "That contract is already registered in the system."
|
||||
msgstr "Ce contrat est déjà enregistré dans le système."
|
||||
|
||||
#. module: web_livechat
|
||||
#: model:ir.model,name:web_livechat.model_publisher_warranty_contract
|
||||
msgid "publisher_warranty.contract"
|
||||
msgstr "publisher_warranty.contract"
|
||||
|
||||
#~ msgid "Live Chat Support"
|
||||
#~ msgstr "Support par messagerie instantanée"
|
||||
|
||||
#~ msgid "Enable live chat support for whom have a maintenance contract"
|
||||
#~ msgstr ""
|
||||
#~ "Valider le support par messagerie instantanée pour les détenteurs d'un "
|
||||
#~ "contrat de maintenance"
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue