[MERGE] Sync with trunk
bzr revid: odo@openerp.com-20121120113600-4oyx9sziigbxn8w8 bzr revid: odo@openerp.com-20121120163429-l4cf6r75vwqfvxty
This commit is contained in:
commit
b770240247
|
@ -224,7 +224,6 @@
|
|||
<record id="view_crossovered_budget_line_search" model="ir.ui.view">
|
||||
<field name="name">account.budget.line.search</field>
|
||||
<field name="model">crossovered.budget.lines</field>
|
||||
<field name="type">search</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Budget Lines">
|
||||
<field name="analytic_account_id"/>
|
||||
|
|
|
@ -0,0 +1,199 @@
|
|||
# Lithuanian translation for openobject-addons
|
||||
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-02-08 00:35+0000\n"
|
||||
"PO-Revision-Date: 2012-11-16 06:33+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Lithuanian <lt@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-11-17 04:37+0000\n"
|
||||
"X-Generator: Launchpad (build 16278)\n"
|
||||
|
||||
#. module: account_check_writing
|
||||
#: selection:res.company,check_layout:0
|
||||
msgid "Check on Top"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_check_writing
|
||||
#: model:ir.actions.act_window,help:account_check_writing.action_write_check
|
||||
msgid ""
|
||||
"The check payment form allows you to track the payment you do to your "
|
||||
"suppliers specially by check. When you select a supplier, the payment method "
|
||||
"and an amount for the payment, OpenERP will propose to reconcile your "
|
||||
"payment with the open supplier invoices or bills.You can print the check"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_check_writing
|
||||
#: view:account.voucher:0
|
||||
#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_bottom
|
||||
#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_middle
|
||||
#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_top
|
||||
msgid "Print Check"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_check_writing
|
||||
#: selection:res.company,check_layout:0
|
||||
msgid "Check in middle"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_check_writing
|
||||
#: help:res.company,check_layout:0
|
||||
msgid ""
|
||||
"Check on top is compatible with Quicken, QuickBooks and Microsoft Money. "
|
||||
"Check in middle is compatible with Peachtree, ACCPAC and DacEasy. Check on "
|
||||
"bottom is compatible with Peachtree, ACCPAC and DacEasy only"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_check_writing
|
||||
#: selection:res.company,check_layout:0
|
||||
msgid "Check on bottom"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_check_writing
|
||||
#: constraint:res.company:0
|
||||
msgid "Error! You can not create recursive companies."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_check_writing
|
||||
#: help:account.journal,allow_check_writing:0
|
||||
msgid "Check this if the journal is to be used for writing checks."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_check_writing
|
||||
#: field:account.journal,allow_check_writing:0
|
||||
msgid "Allow Check writing"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_check_writing
|
||||
#: report:account.print.check.bottom:0
|
||||
#: report:account.print.check.middle:0
|
||||
#: report:account.print.check.top:0
|
||||
msgid "Description"
|
||||
msgstr "Aprašas"
|
||||
|
||||
#. module: account_check_writing
|
||||
#: model:ir.model,name:account_check_writing.model_account_journal
|
||||
msgid "Journal"
|
||||
msgstr "Žurnalas"
|
||||
|
||||
#. module: account_check_writing
|
||||
#: model:ir.actions.act_window,name:account_check_writing.action_write_check
|
||||
#: model:ir.ui.menu,name:account_check_writing.menu_action_write_check
|
||||
msgid "Write Checks"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_check_writing
|
||||
#: report:account.print.check.bottom:0
|
||||
#: report:account.print.check.middle:0
|
||||
#: report:account.print.check.top:0
|
||||
msgid "Discount"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_check_writing
|
||||
#: report:account.print.check.bottom:0
|
||||
#: report:account.print.check.middle:0
|
||||
#: report:account.print.check.top:0
|
||||
msgid "Original Amount"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_check_writing
|
||||
#: view:res.company:0
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_check_writing
|
||||
#: field:account.voucher,allow_check:0
|
||||
msgid "Allow Check Writing"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_check_writing
|
||||
#: report:account.print.check.bottom:0
|
||||
#: report:account.print.check.middle:0
|
||||
#: report:account.print.check.top:0
|
||||
msgid "Payment"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_check_writing
|
||||
#: field:account.journal,use_preprint_check:0
|
||||
msgid "Use Preprinted Check"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_check_writing
|
||||
#: sql_constraint:res.company:0
|
||||
msgid "The company name must be unique !"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_check_writing
|
||||
#: report:account.print.check.bottom:0
|
||||
#: report:account.print.check.middle:0
|
||||
#: report:account.print.check.top:0
|
||||
msgid "Due Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_check_writing
|
||||
#: model:ir.model,name:account_check_writing.model_res_company
|
||||
msgid "Companies"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_check_writing
|
||||
#: view:res.company:0
|
||||
msgid "Default Check Layout"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_check_writing
|
||||
#: constraint:account.journal:0
|
||||
msgid ""
|
||||
"Configuration error! The currency chosen should be shared by the default "
|
||||
"accounts too."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_check_writing
|
||||
#: report:account.print.check.bottom:0
|
||||
#: report:account.print.check.middle:0
|
||||
msgid "Balance Due"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_check_writing
|
||||
#: report:account.print.check.bottom:0
|
||||
#: report:account.print.check.middle:0
|
||||
#: report:account.print.check.top:0
|
||||
msgid "Check Amount"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_check_writing
|
||||
#: model:ir.model,name:account_check_writing.model_account_voucher
|
||||
msgid "Accounting Voucher"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_check_writing
|
||||
#: sql_constraint:account.journal:0
|
||||
msgid "The name of the journal must be unique per company !"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_check_writing
|
||||
#: sql_constraint:account.journal:0
|
||||
msgid "The code of the journal must be unique per company !"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_check_writing
|
||||
#: field:account.voucher,amount_in_word:0
|
||||
msgid "Amount in Word"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_check_writing
|
||||
#: report:account.print.check.top:0
|
||||
msgid "Open Balance"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_check_writing
|
||||
#: field:res.company,check_layout:0
|
||||
msgid "Choose Check layout"
|
||||
msgstr ""
|
|
@ -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: 2012-05-10 18:01+0000\n"
|
||||
"Last-Translator: Raphael Collet (OpenERP) <Unknown>\n"
|
||||
"PO-Revision-Date: 2012-11-17 09:57+0000\n"
|
||||
"Last-Translator: Stefan Rijnhart (Therp) <Unknown>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-10-30 05:19+0000\n"
|
||||
"X-Generator: Launchpad (build 16206)\n"
|
||||
"X-Launchpad-Export-Date: 2012-11-18 04:37+0000\n"
|
||||
"X-Generator: Launchpad (build 16278)\n"
|
||||
|
||||
#. module: account_voucher
|
||||
#: view:sale.receipt.report:0
|
||||
|
@ -846,7 +846,7 @@ msgstr ""
|
|||
#: view:account.voucher:0
|
||||
#: model:ir.model,name:account_voucher.model_account_voucher
|
||||
msgid "Accounting Voucher"
|
||||
msgstr "Betalingsintentie"
|
||||
msgstr "Journaalbon"
|
||||
|
||||
#. module: account_voucher
|
||||
#: field:account.voucher,number:0
|
||||
|
|
|
@ -3,3 +3,4 @@ access_ir_model_fields_anonymization_group_system,ir_model_fields_anonymization
|
|||
access_ir_model_fields_anonymization_user,ir_model_fields_anonymization user,model_ir_model_fields_anonymization,,1,0,0,0
|
||||
access_ir_model_fields_anonymization_history_group_system,ir_model_fields_anonymization_history group_user,model_ir_model_fields_anonymization_history,base.group_system,1,1,1,1
|
||||
access_ir_model_fields_anonymization_history_user,ir_model_fields_anonymization_history user,model_ir_model_fields_anonymization_history,,1,0,0,0
|
||||
access_ir_model_fields_anonymization_migration_fix,access_ir_model_fields_anonymization_migration_fix,model_ir_model_fields_anonymization_migration_fix,,1,1,1,1
|
||||
|
|
|
|
@ -25,10 +25,10 @@
|
|||
'version': '1.0',
|
||||
'category': 'Tools',
|
||||
'description': """
|
||||
Allow users to login through Google OAuth2.
|
||||
===========================================
|
||||
Allow users to login through OAuth2 Provider.
|
||||
=============================================
|
||||
""",
|
||||
'author': 'Victor Tabuenca',
|
||||
'author': 'OpenERP s.a.',
|
||||
'maintainer': 'OpenERP s.a.',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': ['base', 'web', 'base_setup'],
|
||||
|
|
|
@ -39,6 +39,8 @@
|
|||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
<menuitem id="menu_oauth_providers" parent="base.menu_users" name="OAuth Providers" action="action_oauth_provider" sequence="30"/>
|
||||
<menuitem id="menu_oauth_providers" name="OAuth Providers"
|
||||
parent="base.menu_users" sequence="30"
|
||||
action="action_oauth_provider" groups="base.group_no_one"/>
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -1,48 +1,101 @@
|
|||
import functools
|
||||
import logging
|
||||
|
||||
import simplejson
|
||||
import werkzeug.urls
|
||||
import werkzeug.utils
|
||||
from werkzeug.exceptions import BadRequest
|
||||
|
||||
import openerp
|
||||
from openerp import SUPERUSER_ID
|
||||
import openerp.addons.web.http as oeweb
|
||||
from openerp.addons.web.controllers.main import db_monodb, set_cookie_and_redirect, login_and_redirect
|
||||
from openerp.modules.registry import RegistryManager
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
class OAuthController(openerp.addons.web.http.Controller):
|
||||
#----------------------------------------------------------
|
||||
# helpers
|
||||
#----------------------------------------------------------
|
||||
def fragment_to_query_string(func):
|
||||
@functools.wraps(func)
|
||||
def wrapper(self, req, **kw):
|
||||
if not kw:
|
||||
return """<html><head><script>
|
||||
var l = window.location;
|
||||
var q = l.hash.substring(1);
|
||||
var r = '/' + l.search;
|
||||
if(q.length !== 0) {
|
||||
var s = l.search ? (l.search === '?' ? '' : '&') : '?';
|
||||
r = l.pathname + l.search + s + q;
|
||||
}
|
||||
window.location = r;
|
||||
</script></head><body></body></html>"""
|
||||
return func(self, req, **kw)
|
||||
return wrapper
|
||||
|
||||
|
||||
#----------------------------------------------------------
|
||||
# Controller
|
||||
#----------------------------------------------------------
|
||||
class OAuthController(oeweb.Controller):
|
||||
_cp_path = '/auth_oauth'
|
||||
|
||||
@openerp.addons.web.http.jsonrequest
|
||||
@oeweb.jsonrequest
|
||||
def list_providers(self, req, dbname):
|
||||
try:
|
||||
registry = openerp.modules.registry.RegistryManager.get(dbname)
|
||||
registry = RegistryManager.get(dbname)
|
||||
with registry.cursor() as cr:
|
||||
providers = registry.get('auth.oauth.provider')
|
||||
l = providers.read(cr, openerp.SUPERUSER_ID, providers.search(cr, openerp.SUPERUSER_ID, [('enabled','=',True)]))
|
||||
l = providers.read(cr, SUPERUSER_ID, providers.search(cr, SUPERUSER_ID, [('enabled', '=', True)]))
|
||||
except Exception:
|
||||
l = []
|
||||
return l
|
||||
|
||||
@openerp.addons.web.http.httprequest
|
||||
@oeweb.httprequest
|
||||
@fragment_to_query_string
|
||||
def signin(self, req, **kw):
|
||||
state = simplejson.loads(kw['state'])
|
||||
dbname = state['d']
|
||||
provider = state['p']
|
||||
registry = openerp.modules.registry.RegistryManager.get(dbname)
|
||||
context = state.get('c', {})
|
||||
registry = RegistryManager.get(dbname)
|
||||
with registry.cursor() as cr:
|
||||
try:
|
||||
u = registry.get('res.users')
|
||||
credentials = u.auth_oauth(cr, openerp.SUPERUSER_ID, provider, kw)
|
||||
credentials = u.auth_oauth(cr, SUPERUSER_ID, provider, kw, context=context)
|
||||
cr.commit()
|
||||
return openerp.addons.web.controllers.main.login_and_redirect(req, *credentials)
|
||||
return login_and_redirect(req, *credentials)
|
||||
except AttributeError:
|
||||
# auth_signup is not installed
|
||||
_logger.error("auth_signup not installed on database %s: oauth sign up cancelled."%dbname)
|
||||
_logger.error("auth_signup not installed on database %s: oauth sign up cancelled." % (dbname,))
|
||||
url = "/#action=login&oauth_error=1"
|
||||
except Exception,e:
|
||||
except Exception, e:
|
||||
# signup error
|
||||
_logger.exception("OAuth2: %s" % str(e))
|
||||
url = "/#action=login&oauth_error=2"
|
||||
return openerp.addons.web.controllers.main.set_cookie_and_redirect(req, url)
|
||||
|
||||
return set_cookie_and_redirect(req, url)
|
||||
|
||||
@oeweb.httprequest
|
||||
def oea(self, req, **kw):
|
||||
"""login user via OpenERP Account provider"""
|
||||
dbname = kw.pop('db', None)
|
||||
if not dbname:
|
||||
dbname = db_monodb(req)
|
||||
if not dbname:
|
||||
return BadRequest()
|
||||
|
||||
registry = RegistryManager.get(dbname)
|
||||
with registry.cursor() as cr:
|
||||
IMD = registry['ir.model.data']
|
||||
model, provider_id = IMD.get_object_reference(cr, SUPERUSER_ID, 'auth_oauth', 'provider_openerp')
|
||||
assert model == 'auth.oauth.provider'
|
||||
|
||||
state = {
|
||||
'd': dbname,
|
||||
'p': provider_id,
|
||||
'c': {'no_user_creation': True},
|
||||
}
|
||||
|
||||
kw['state'] = simplejson.dumps(state)
|
||||
return self.signin(req, **kw)
|
||||
|
||||
# vim:expandtab:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -24,7 +24,7 @@ class res_users(osv.Model):
|
|||
('uniq_users_oauth_provider_oauth_uid', 'unique(oauth_provider_id, oauth_uid)', 'OAuth UID must be unique per provider'),
|
||||
]
|
||||
|
||||
def auth_oauth_rpc(self, cr, uid, endpoint, access_token, context=None):
|
||||
def _auth_oauth_rpc(self, cr, uid, endpoint, access_token, context=None):
|
||||
params = urllib.urlencode({'access_token': access_token})
|
||||
if urlparse.urlparse(endpoint)[4]:
|
||||
url = endpoint + '&' + params
|
||||
|
@ -34,6 +34,17 @@ class res_users(osv.Model):
|
|||
response = f.read()
|
||||
return simplejson.loads(response)
|
||||
|
||||
def _auth_oauth_validate(self, cr, uid, provider, access_token, context=None):
|
||||
""" return the validation data corresponding to the access token """
|
||||
p = self.pool.get('auth.oauth.provider').browse(cr, uid, provider, context=context)
|
||||
validation = self._auth_oauth_rpc(cr, uid, p.validation_endpoint, access_token)
|
||||
if validation.get("error"):
|
||||
raise Exception(validation['error'])
|
||||
if p.data_endpoint:
|
||||
data = self._auth_oauth_rpc(cr, uid, p.data_endpoint, access_token)
|
||||
validation.update(data)
|
||||
return validation
|
||||
|
||||
def auth_oauth(self, cr, uid, provider, params, context=None):
|
||||
# Advice by Google (to avoid Confused Deputy Problem)
|
||||
# if validation.audience != OUR_CLIENT_ID:
|
||||
|
@ -41,25 +52,21 @@ class res_users(osv.Model):
|
|||
# else:
|
||||
# continue with the process
|
||||
access_token = params.get('access_token')
|
||||
p = self.pool.get('auth.oauth.provider').browse(cr, uid, provider, context=context)
|
||||
|
||||
validation = self.auth_oauth_rpc(cr, uid, p.validation_endpoint, access_token)
|
||||
if validation.get("error"):
|
||||
raise Exception(validation['error'])
|
||||
if p.data_endpoint:
|
||||
data = self.auth_oauth_rpc(cr, uid, p.data_endpoint, access_token)
|
||||
validation.update(data)
|
||||
validation = self._auth_oauth_validate(cr, uid, provider, access_token)
|
||||
# required
|
||||
oauth_uid = validation['user_id']
|
||||
if not oauth_uid:
|
||||
raise openerp.exceptions.AccessDenied()
|
||||
email = validation.get('email', 'provider_%d_user_%d' % (p.id, oauth_uid))
|
||||
email = validation.get('email', 'provider_%d_user_%d' % (provider, oauth_uid))
|
||||
login = email
|
||||
# optional
|
||||
name = validation.get('name', email)
|
||||
res = self.search(cr, uid, [("oauth_uid", "=", oauth_uid), ('oauth_provider_id', '=', provider)])
|
||||
if res:
|
||||
assert len(res) == 1
|
||||
self.write(cr, uid, res[0], {'oauth_access_token': access_token})
|
||||
user = self.browse(cr, uid, res[0], context=context)
|
||||
login = user.login
|
||||
user.write({'oauth_access_token': access_token})
|
||||
else:
|
||||
# New user if signup module available
|
||||
if not hasattr(self, '_signup_create_user'):
|
||||
|
@ -67,9 +74,9 @@ class res_users(osv.Model):
|
|||
|
||||
new_user = {
|
||||
'name': name,
|
||||
'login': email,
|
||||
'login': login,
|
||||
'user_email': email,
|
||||
'oauth_provider_id': p.id,
|
||||
'oauth_provider_id': provider,
|
||||
'oauth_uid': oauth_uid,
|
||||
'oauth_access_token': access_token,
|
||||
'active': True,
|
||||
|
@ -77,7 +84,7 @@ class res_users(osv.Model):
|
|||
# TODO pass signup token to allow attach new user to right partner
|
||||
self._signup_create_user(cr, uid, new_user)
|
||||
|
||||
credentials = (cr.dbname, email, access_token)
|
||||
credentials = (cr.dbname, login, access_token)
|
||||
return credentials
|
||||
|
||||
def check_credentials(self, cr, uid, password):
|
||||
|
|
|
@ -36,7 +36,10 @@ openerp.auth_oauth = function(instance) {
|
|||
ev.preventDefault();
|
||||
var index = $(ev.target).data('index');
|
||||
var p = this.oauth_providers[index];
|
||||
var ret = location.protocol+"//"+location.host+"/";
|
||||
var ret = _.str.sprintf('%s//%s/auth_oauth/signin', location.protocol, location.host);
|
||||
if (instance.session.debug) {
|
||||
ret += '?debug';
|
||||
}
|
||||
var dbname = self.$("form [name=db]").val();
|
||||
var state_object = {
|
||||
d: dbname,
|
||||
|
@ -55,16 +58,4 @@ openerp.auth_oauth = function(instance) {
|
|||
},
|
||||
});
|
||||
|
||||
instance.web.WebClient = instance.web.WebClient.extend({
|
||||
start: function() {
|
||||
this._super.apply(this, arguments);
|
||||
var params = $.deparam(window.location.hash.substring(1));
|
||||
// alert(JSON.stringify(params));
|
||||
if (params.hasOwnProperty('access_token')) {
|
||||
var url = "/auth_oauth/signin" + '?' + $.param(params);
|
||||
window.location = url;
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
};
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
<group col="4">
|
||||
<field name="name"/>
|
||||
<field name="model_id"/>
|
||||
<field name="filter_id" domain="[('model_id','=',model)]" context="{'default_model_id': model}"/>
|
||||
<field name="filter_id" domain="[('model_id','=',model), ('user_id', '=', False)]" context="{'default_model_id': model}"/>
|
||||
<field name="sequence"/>
|
||||
<field name="active"/>
|
||||
<field name="model" invisible="1"/>
|
||||
|
|
|
@ -19,19 +19,24 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
from osv import osv, fields
|
||||
from tools.translate import _
|
||||
import logging
|
||||
import re
|
||||
import time
|
||||
|
||||
from openerp.osv import osv, fields
|
||||
from openerp import tools
|
||||
from openerp.tools.translate import _
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
try:
|
||||
from mygengo import MyGengo
|
||||
except ImportError:
|
||||
raise osv.except_osv(_('Gengo ImportError'), _('Please install mygengo lib from http://pypi.python.org/pypi/mygengo'))
|
||||
|
||||
import logging
|
||||
import tools
|
||||
import time
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
_logger.warning('Gengo library not found, Gengo features disabled. If you plan to use it, please install the mygengo library from http://pypi.python.org/pypi/mygengo')
|
||||
class MyGengo(object):
|
||||
def __init__(self, *args, **kwargs):
|
||||
# no context for translations - so don't bother
|
||||
raise ImportError('Gengo library not found, please install mygengo from http://pypi.python.org/pypi/mygengo')
|
||||
|
||||
GENGO_DEFAULT_LIMIT = 20
|
||||
|
||||
|
@ -48,7 +53,7 @@ class base_gengo_translations(osv.osv_memory):
|
|||
_name = 'base.gengo.translations'
|
||||
_columns = {
|
||||
'restart_send_job': fields.boolean("Restart Sending Job"),
|
||||
'lang_id': fields.many2one('res.lang', 'Language', help="Leave empty if you don't want to restrict the request to a single language"),
|
||||
'lang_id': fields.many2one('res.lang', 'Language', required=True),
|
||||
}
|
||||
|
||||
def gengo_authentication(self, cr, uid, context=None):
|
||||
|
@ -62,21 +67,19 @@ class base_gengo_translations(osv.osv_memory):
|
|||
by the cron) or in a dialog box (if requested by the user), thus it's important to return it
|
||||
translated.
|
||||
'''
|
||||
|
||||
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
|
||||
if not user.company_id.gengo_public_key or not user.company_id.gengo_private_key:
|
||||
return (False, _("Invalid Gengo configuration. Gengo authentication `Public Key` or `Private Key` is missing. Complete Gengo authentication parameters under `Settings > Companies > Gengo Parameters`."))
|
||||
return (False, _("Gengo `Public Key` or `Private Key` are missing. Enter your Gengo authentication parameters under `Settings > Companies > Gengo Parameters`."))
|
||||
try:
|
||||
gengo = MyGengo(
|
||||
public_key=user.company_id.gengo_public_key.encode('ascii'),
|
||||
private_key=user.company_id.gengo_private_key.encode('ascii'),
|
||||
sandbox=True,
|
||||
)
|
||||
gengo.getAccountStats()
|
||||
|
||||
return (True, gengo)
|
||||
except Exception, e:
|
||||
return (False, _("Gengo Connection Error\n%s") %e)
|
||||
_logger.exception('Gengo connection failed')
|
||||
return (False, _("Gengo connection failed with this message:\n``%s``") % e)
|
||||
|
||||
def do_check_schedular(self, cr, uid, xml_id, name, fn, context=None):
|
||||
"""
|
||||
|
@ -87,7 +90,7 @@ class base_gengo_translations(osv.osv_memory):
|
|||
cron_vals.update({'name': name, "function": fn})
|
||||
try:
|
||||
res = []
|
||||
model, res = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'base_gengo', xml_id)
|
||||
_, res = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'base_gengo', xml_id)
|
||||
cron_pool.write(cr, uid, [res], cron_vals, context=context)
|
||||
except:
|
||||
#the cron job was not found, probably deleted previously, so we create it again using default values
|
||||
|
@ -108,7 +111,7 @@ class base_gengo_translations(osv.osv_memory):
|
|||
supported_langs = self.pool.get('ir.translation')._get_all_supported_languages(cr, uid, context=context)
|
||||
language = self.pool.get('ir.translation')._get_gengo_corresponding_language(wizard.lang_id.code)
|
||||
if language not in supported_langs:
|
||||
raise osv.except_osv(_("Warning"), _('This language is not supported by the Gengo translation services.'))
|
||||
raise osv.except_osv(_("Warning"), _('This language is not supported by the Gengo translation services.'))
|
||||
|
||||
#send immediately a new request for the selected language (if any)
|
||||
ctx = context.copy()
|
||||
|
@ -207,8 +210,6 @@ class base_gengo_translations(osv.osv_memory):
|
|||
Send a request to Gengo with all the term_ids in a different job, get the response and update the terms in
|
||||
database accordingly.
|
||||
"""
|
||||
|
||||
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
|
||||
flag, gengo = self.gengo_authentication(cr, uid, context=context)
|
||||
if flag:
|
||||
request = self.pack_jobs_request(cr, uid, term_ids, context=context)
|
||||
|
|
|
@ -6,14 +6,9 @@
|
|||
<field name="model">base.gengo.translations</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Gengo Request Form" version="7.0">
|
||||
<group col="4">
|
||||
<group>
|
||||
<field name="lang_id" required="1"/>
|
||||
<field name="restart_send_job"/>
|
||||
</group>
|
||||
<group>
|
||||
<label colspan="2" string="Leave empty for requesting all the terms to Gengo that needs it, regardless of their language"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="lang_id"/>
|
||||
<field name="restart_send_job"/>
|
||||
</group>
|
||||
<footer>
|
||||
<button name="act_update" string="Send" type="object" class="oe_highlight"/>
|
||||
|
|
|
@ -27,6 +27,9 @@ Re-implement openerp's file import system:
|
|||
'depends': ['web'],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'data': [
|
||||
'security/ir.model.access.csv',
|
||||
],
|
||||
'css': [
|
||||
'static/lib/select2/select2.css',
|
||||
'static/src/css/import.css',
|
||||
|
|
|
@ -224,8 +224,6 @@ class base_stage(object):
|
|||
cases = self.browse(cr, uid, ids, context=context)
|
||||
for case in cases:
|
||||
data = {'active': True}
|
||||
if case.stage_id and case.stage_id.state == 'draft':
|
||||
data['date_open'] = fields.datetime.now()
|
||||
if not case.user_id:
|
||||
data['user_id'] = uid
|
||||
self.case_set(cr, uid, [case.id], 'open', data, context=context)
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
# Lithuanian translation for openobject-addons
|
||||
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||
"PO-Revision-Date: 2012-11-15 13:45+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Lithuanian <lt@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-11-16 04:36+0000\n"
|
||||
"X-Generator: Launchpad (build 16272)\n"
|
||||
|
||||
#. module: claim_from_delivery
|
||||
#: model:ir.actions.act_window,name:claim_from_delivery.action_claim_from_delivery
|
||||
msgid "Claim"
|
||||
msgstr ""
|
|
@ -99,7 +99,6 @@ Dashboard for CRM will include:
|
|||
'board_crm_view.xml',
|
||||
|
||||
'res_config_view.xml',
|
||||
|
||||
],
|
||||
'demo': [
|
||||
'crm_demo.xml',
|
||||
|
|
|
@ -46,6 +46,7 @@ Thanks,
|
|||
<field name="name">Filter on leads which are draft.</field>
|
||||
<field name="model_id">crm.lead</field>
|
||||
<field name="domain">[('state','=','draft')]</field>
|
||||
<field name="user_id" eval="False"/>
|
||||
</record>
|
||||
|
||||
<!-- automated actions -->
|
||||
|
@ -64,6 +65,7 @@ Thanks,
|
|||
<field name="name">Filter on leads which come from USA.</field>
|
||||
<field name="model_id">crm.lead</field>
|
||||
<field name="domain">[('country_id','=','United States')]</field>
|
||||
<field name="user_id" eval="False"/>
|
||||
</record>
|
||||
|
||||
<record id="rule_set_followers_lead" model="base.action.rule">
|
||||
|
|
|
@ -50,7 +50,7 @@ class crm_lead(base_stage, format_address, osv.osv):
|
|||
def _get_default_stage_id(self, cr, uid, context=None):
|
||||
""" Gives default stage_id """
|
||||
section_id = self._get_default_section_id(cr, uid, context=context)
|
||||
return self.stage_find(cr, uid, [], section_id, [('state', '=', 'draft'), ('type', '=', 'both')], context=context)
|
||||
return self.stage_find(cr, uid, [], section_id, [('state', '=', 'draft')], context=context)
|
||||
|
||||
def _resolve_section_id_from_context(self, cr, uid, context=None):
|
||||
""" Returns ID of section based on the value of 'section_id'
|
||||
|
@ -224,11 +224,7 @@ class crm_lead(base_stage, format_address, osv.osv):
|
|||
multi='day_close', type="float", store=True),
|
||||
'state': fields.related('stage_id', 'state', type="selection", store=True,
|
||||
selection=crm.AVAILABLE_STATES, string="Status", readonly=True,
|
||||
help='The Status is set to \'Draft\', when a case is created.\
|
||||
If the case is in progress the Status is set to \'Open\'.\
|
||||
When the case is over, the Status is set to \'Done\'.\
|
||||
If the case needs to be reviewed then the Status is \
|
||||
set to \'Pending\'.'),
|
||||
help='The Status is set to \'Draft\', when a case is created. If the case is in progress the Status is set to \'Open\'. When the case is over, the Status is set to \'Done\'. If the case needs to be reviewed then the Status is set to \'Pending\'.'),
|
||||
|
||||
# Only used for type opportunity
|
||||
'probability': fields.float('Success Rate (%)',group_operator="avg"),
|
||||
|
@ -328,7 +324,7 @@ class crm_lead(base_stage, format_address, osv.osv):
|
|||
cases = self.browse(cr, uid, ids2, context=context)
|
||||
return self._action(cr, uid, cases, False, context=context)
|
||||
|
||||
def stage_find(self, cr, uid, cases, section_id, domain=[], order='sequence', context=None):
|
||||
def stage_find(self, cr, uid, cases, section_id, domain=None, order='sequence', context=None):
|
||||
""" Override of the base.stage method
|
||||
Parameter of the stage search taken from the lead:
|
||||
- type: stage type must be the same or 'both'
|
||||
|
@ -341,6 +337,9 @@ class crm_lead(base_stage, format_address, osv.osv):
|
|||
# collect all section_ids
|
||||
section_ids = []
|
||||
types = ['both']
|
||||
if not cases :
|
||||
type = context.get('default_type')
|
||||
types += [type]
|
||||
if section_id:
|
||||
section_ids.append(section_id)
|
||||
for lead in cases:
|
||||
|
@ -833,7 +832,7 @@ class crm_lead(base_stage, format_address, osv.osv):
|
|||
}
|
||||
for line in msg.get('body', '').split('\n'):
|
||||
line = line.strip()
|
||||
res = tools.misc.command_re.match(line)
|
||||
res = tools.command_re.match(line)
|
||||
if res and maps.get(res.group(1).lower()):
|
||||
key = maps.get(res.group(1).lower())
|
||||
update_vals[key] = res.group(2).lower()
|
||||
|
@ -847,7 +846,7 @@ class crm_lead(base_stage, format_address, osv.osv):
|
|||
def stage_set_send_note(self, cr, uid, ids, stage_id, context=None):
|
||||
""" Override of the (void) default notification method. """
|
||||
stage_name = self.pool.get('crm.case.stage').name_get(cr, uid, [stage_id], context=context)[0][1]
|
||||
return self.message_post(cr, uid, ids, body= _("Stage changed to <b>%s</b>.") % (stage_name), context=context)
|
||||
return self.message_post(cr, uid, ids, body=_("Stage changed to <b>%s</b>.") % (stage_name), subtype="mt_crm_stage", context=context)
|
||||
|
||||
def case_get_note_msg_prefix(self, cr, uid, lead, context=None):
|
||||
if isinstance(lead, (int, long)):
|
||||
|
@ -856,17 +855,17 @@ class crm_lead(base_stage, format_address, osv.osv):
|
|||
|
||||
def create_send_note(self, cr, uid, ids, context=None):
|
||||
for id in ids:
|
||||
message = _("%s has been <b>created</b>.")% (self.case_get_note_msg_prefix(cr, uid, id, context=context))
|
||||
message = _("%s has been <b>created</b>.") % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
|
||||
self.message_post(cr, uid, [id], body=message, context=context)
|
||||
return True
|
||||
|
||||
def case_mark_lost_send_note(self, cr, uid, ids, context=None):
|
||||
message = _("Opportunity has been <b>lost</b>.")
|
||||
return self.message_post(cr, uid, ids, body=message, context=context)
|
||||
return self.message_post(cr, uid, ids, body=message, subtype="mt_crm_lost", context=context)
|
||||
|
||||
def case_mark_won_send_note(self, cr, uid, ids, context=None):
|
||||
message = _("Opportunity has been <b>won</b>.")
|
||||
return self.message_post(cr, uid, ids, body=message, context=context)
|
||||
return self.message_post(cr, uid, ids, body=message, subtype="mt_crm_won", context=context)
|
||||
|
||||
def schedule_phonecall_send_note(self, cr, uid, ids, phonecall_id, action, context=None):
|
||||
phonecall = self.pool.get('crm.phonecall').browse(cr, uid, [phonecall_id], context=context)[0]
|
||||
|
|
|
@ -154,5 +154,21 @@
|
|||
<field name="object_id" search="[('model','=','crm.lead')]" model="ir.model"/>
|
||||
</record>
|
||||
|
||||
<!-- mail subtype -->
|
||||
<record id="mail.mt_crm_won" model="mail.message.subtype">
|
||||
<field name="name">Won</field>
|
||||
<field name="res_model">crm.lead</field>
|
||||
</record>
|
||||
<record id="mail.mt_crm_lost" model="mail.message.subtype">
|
||||
<field name="name">Lost</field>
|
||||
<field name="res_model">crm.lead</field>
|
||||
<field name="default" eval="False"/>
|
||||
</record>
|
||||
<record id="mail.mt_crm_stage" model="mail.message.subtype">
|
||||
<field name="name">Stage Changed</field>
|
||||
<field name="res_model">crm.lead</field>
|
||||
<field name="default" eval="False"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -324,12 +324,14 @@ Andrew</field>
|
|||
|
||||
<record id="crm_case_15" model="crm.lead">
|
||||
<field name="type">opportunity</field>
|
||||
<field name="name">Plan to buy a Laptop</field>
|
||||
<field eval="2570" name="planned_revenue"/>
|
||||
<field name="name">Plan to buy RedHat servers</field>
|
||||
<field eval="35000" name="planned_revenue"/>
|
||||
<field eval="30.0" name="probability"/>
|
||||
<field name="street">12 rue Albert Einstein</field>
|
||||
<field name="country_id" ref="base.tr"/>
|
||||
<field name="city">Istanbul</field>
|
||||
<field name="street">69 rue de Chimay</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
<field name="city">Wavre</field>
|
||||
<field name="email_from">virginie@agrolait.com</field>
|
||||
<field name="partner_id" ref="base.res_partner_2"/>
|
||||
<field name="type_id" ref="type_lead8"/>
|
||||
<field name="categ_ids" eval="[(6, 0, [categ_oppor1])]"/>
|
||||
<field name="priority">1</field>
|
||||
|
@ -337,7 +339,7 @@ Andrew</field>
|
|||
<field eval="time.strftime('%Y-%m-10')" name="date_action"/>
|
||||
<field name="title_action">Call to ask system requirement</field>
|
||||
<field name="section_id" ref="crm_case_section_3"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="user_id" ref="base.user_demo"/>
|
||||
<field name="stage_id" ref="crm.stage_lead4"/>
|
||||
<field eval="1" name="active"/>
|
||||
</record>
|
||||
|
@ -372,6 +374,8 @@ Andrew</field>
|
|||
<field eval="100" name="planned_revenue"/>
|
||||
<field eval="35.0" name="probability"/>
|
||||
<field name="contact_name">Oliver Passot</field>
|
||||
<field name="email_from">olivier.passo@balmer.inc.sa</field>
|
||||
<field name="phone">+32 469 12 45 78</field>
|
||||
<field name="partner_name">BalmerInc S.A.</field>
|
||||
<field name="street">Rue des Palais 51, bte 33</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
|
@ -391,14 +395,16 @@ Andrew</field>
|
|||
|
||||
<record id="crm_case_18" model="crm.lead">
|
||||
<field name="type">opportunity</field>
|
||||
<field name="name">Student's training plan in your Organization</field>
|
||||
<field name="name">Trainee's training plan in your Organization</field>
|
||||
<field eval="35000" name="planned_revenue"/>
|
||||
<field eval="25.0" name="probability"/>
|
||||
<field name="contact_name">Leland Martinez</field>
|
||||
<field name="partner_name">Toronto University</field>
|
||||
<field name="street">2488 Queens Bay</field>
|
||||
<field name="country_id" ref="base.ca"/>
|
||||
<field name="city">Toronto</field>
|
||||
<field name="email_from">info@deltapc.com</field>
|
||||
<field name="partner_name">Delta PC</field>
|
||||
<field name="city">Fremont</field>
|
||||
<field name="street">3661 Station Street</field>
|
||||
<field name="country_id" ref="base.us"/>
|
||||
<field name="partner_id" ref="base.res_partner_4"/>
|
||||
<field name="type_id" ref="type_lead8"/>
|
||||
<field name="categ_ids" eval="[(6, 0, [categ_oppor4,categ_oppor6])]"/>
|
||||
<field name="priority">4</field>
|
||||
|
@ -406,7 +412,7 @@ Andrew</field>
|
|||
<field eval="time.strftime('%Y-%m-4')" name="date_action"/>
|
||||
<field name="title_action">Call to define real needs about training</field>
|
||||
<field name="section_id" ref="crm_case_section_2"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="user_id" ref="base.user_demo"/>
|
||||
<field name="stage_id" ref="crm.stage_lead3"/>
|
||||
<field eval="1" name="active"/>
|
||||
</record>
|
||||
|
@ -542,77 +548,127 @@ Andrew</field>
|
|||
<field eval="1" name="active"/>
|
||||
</record>
|
||||
|
||||
<!-- Some messages linked to the previous opportunity -->
|
||||
<record id="message_email0" model="mail.message">
|
||||
<field name="subject">Plan to buy a Laptop</field>
|
||||
<!-- Unsubscribe Admin from case15, subscribe Demo -->
|
||||
<record id="crm_case_15" model="crm.lead">
|
||||
<field name="message_follower_ids" eval="[(3, ref('base.partner_root')), (4, ref('base.partner_demo'))]"/>
|
||||
</record>
|
||||
<record id="crm_case_17" model="crm.lead">
|
||||
<field name="message_follower_ids" eval="[(3, ref('base.partner_root')), (4, ref('base.partner_demo'))]"/>
|
||||
</record>
|
||||
<record id="crm_case_18" model="crm.lead">
|
||||
<field name="message_follower_ids" eval="[(4, ref('base.partner_demo'))]"/>
|
||||
</record>
|
||||
<!-- Some messages linked to the previous opportunities -->
|
||||
<record id="msg_case15_attach1" model="ir.attachment">
|
||||
<field name="datas">bWlncmF0aW9uIHRlc3Q=</field>
|
||||
<field name="datas_fname">YourCompany2012.doc</field>
|
||||
<field name="name">YourCompany2012.doc</field>
|
||||
</record>
|
||||
<record id="msg_case15_1" model="mail.message">
|
||||
<field name="subject">Plan to buy RedHat servers</field>
|
||||
<field name="model">crm.lead</field>
|
||||
<field name="res_id" ref="crm_case_15"/>
|
||||
<field name="body"><![CDATA[Email0 inquiry]]><div><font size="2">Hello,</font></div><div><font size="2"><br></font></div><div><font size="2">I am interested in your company's product and I plan to buy a new laptop having latest technologies and affordable price.</font></div><div><font size="2">Can you please send me product catalogue?</font></div></field>
|
||||
<field name="body"><![CDATA[<div>
|
||||
<p>Hello,</p>
|
||||
<p>I am interested in your company's products and I plan to buy a new laptop having latest technologies as well as an affordable price.</p>
|
||||
<p>Could you please send me the product catalog?</p>]]></field>
|
||||
<field name="type">email</field>
|
||||
<field name="subtype_id" ref="mail.mt_comment"/>
|
||||
<field name="email_from">virginie@agrolait.fr</field>
|
||||
<field name="author_id" eval="False"/>
|
||||
</record>
|
||||
<record id="message_note0" model="mail.message">
|
||||
<field name="subject">Re: Plan to buy a Laptop</field>
|
||||
<record id="msg_case15_1_1" model="mail.message">
|
||||
<field name="subject">Re: Plan to buy RedHat servers</field>
|
||||
<field name="model">crm.lead</field>
|
||||
<field name="res_id" ref="crm_case_15"/>
|
||||
<field name="type">comment</field>
|
||||
<field name="body">Dear Customer,
|
||||
Thanks for showing interest in our products.
|
||||
We have attached the catalogue,
|
||||
We would like to know your interests, so let us know when we can call you for more details.
|
||||
|
||||
Regards</field>
|
||||
<field name="parent_id" ref="message_email0"/>
|
||||
<field name="author_id" ref="base.partner_root"/>
|
||||
<field name="subtype_id" ref="mail.mt_comment"/>
|
||||
<field name="body"><![CDATA[<p>Dear customer,<br/>
|
||||
Thanks for showing interest in our products! As requested, I send to you our products catalog.<br />
|
||||
To be able to finely tune the solution, we would like to know precise needs. This way we wil be able to help you choosing the right infrastructure according to your requirements.<br/>
|
||||
Best regards,</p>]]></field>
|
||||
<field name="parent_id" ref="msg_case15_1"/>
|
||||
<field name="author_id" ref="base.partner_demo"/>
|
||||
<field name="attachment_ids" eval="[(6, 0, [ref('msg_case15_attach1')])]"/>
|
||||
</record>
|
||||
<record id="message_note0_comment0" model="mail.message">
|
||||
<field name="subject">Re: Plan to buy a Laptop</field>
|
||||
<record id="msg_case15_1_2" model="mail.message">
|
||||
<field name="subject">Re: Plan to buy RedHat servers</field>
|
||||
<field name="model">crm.lead</field>
|
||||
<field name="res_id" ref="crm_case_15"/>
|
||||
<field name="type">comment</field>
|
||||
<field name="body"><div>Thanks for the information,</div><div>I will visit the store soon.</div></field>
|
||||
<field name="parent_id" ref="message_note0"/>
|
||||
<field name="body"><![CDATA[<p>Thanks for the information!<br />I asked a precise specification to our technical expert. Here is what we precisely need:</p>
|
||||
<ul>
|
||||
<li>weekly backups, every Monday</li>
|
||||
<li>backup time is not a blocking point for us, as we are closed all Monday, leaving time enough to perform the backup</li>
|
||||
<li>reliability is very important; we need redundant servers and rollback capacity</li>
|
||||
<li>a total capacity of about 2 TB</li>
|
||||
</ul>
|
||||
<p>Best regards,</p>]]></field>
|
||||
<field name="type">email</field>
|
||||
<field name="subtype_id" ref="mail.mt_comment"/>
|
||||
<field name="parent_id" ref="msg_case15_1"/>
|
||||
<field name="email_from">virginie@agrolait.fr</field>
|
||||
<field name="author_id" eval="False"/>
|
||||
</record>
|
||||
<record id="msg_case15_1_3" model="mail.message">
|
||||
<field name="subject">Re: Plan to buy RedHat servers</field>
|
||||
<field name="model">crm.lead</field>
|
||||
<field name="res_id" ref="crm_case_15"/>
|
||||
<field name="body"><![CDATA[<p>Hello</p>
|
||||
<p>After our phonecall and discussion with our technical experts, here is the offer of YourCompany. We believe it will meet every requirement you had in mind. Please feel free to contact me for any detail or technical detail that is not clear enough for you.</p>
|
||||
<p>Notice that as agreed on phone, we offer you a <b>10% discount on the hardware</b>!</p>
|
||||
<p>Best regards,</p>]]></field>
|
||||
<field name="type">email</field>
|
||||
<field name="parent_id" ref="msg_case15_1"/>
|
||||
<field name="author_id" ref="base.partner_demo"/>
|
||||
</record>
|
||||
<record id="message_note0_comment1" model="mail.message">
|
||||
<field name="subject">Re: Plan to buy a Laptop</field>
|
||||
<record id="msg_case17_1" model="mail.message">
|
||||
<field name="subject">Catalog to send</field>
|
||||
<field name="model">crm.lead</field>
|
||||
<field name="res_id" ref="crm_case_15"/>
|
||||
<field name="res_id" ref="crm_case_17"/>
|
||||
<field name="body"><![CDATA[<p>They just want pricing information about our services. I think sending our catalog should be sufficient.</p>]]></field>
|
||||
<field name="type">comment</field>
|
||||
<field name="body"><font color="#1f1f1f">Can you tell me if the store is open at 9:00 PM?</b></font></field>
|
||||
<field name="parent_id" ref="message_note0"/>
|
||||
<field name="subtype_id" ref="mail.mt_comment"/>
|
||||
<field name="author_id" ref="base.partner_demo"/>
|
||||
</record>
|
||||
<record id="message_email1" model="mail.message">
|
||||
<field name="subject">Re: Plan to buy a Laptop</field>
|
||||
<record id="msg_case18_1" model="mail.message">
|
||||
<field name="subject">Inquiry</field>
|
||||
<field name="model">crm.lead</field>
|
||||
<field name="res_id" ref="crm_case_15"/>
|
||||
<field name="body">Yes, its open till 10:00 PM, you are welcome!</field>
|
||||
<field name="type">email</field>
|
||||
<field name="author_id" ref="base.partner_root"/>
|
||||
<field name="res_id" ref="crm_case_18"/>
|
||||
<field name="body"><![CDATA[<p>Hello!<br />
|
||||
I am Leland Martinez, from the Delta PC. Maybe you remember, we talked a bit last month at this international conference.<br />
|
||||
We would like to attend a training, but we are not quite sure about what we can ask. Maybe we should meet and talk about that?<br />
|
||||
Best regards,</p>]]></field>
|
||||
<field name="type">comment</field>
|
||||
<field name="subtype_id" ref="mail.mt_comment"/>
|
||||
<field name="author_id" ref="base.res_partner_4"/>
|
||||
<field name="favorite_user_ids" eval="[(6, 0, [ref('base.user_root')])]"/>
|
||||
</record>
|
||||
<record id="message_email_12" model="mail.message">
|
||||
<record id="msg_case18_2" model="mail.message">
|
||||
<field name="model">crm.lead</field>
|
||||
<field name="res_id" ref="crm_case_18"/>
|
||||
<field name="body"><![CDATA[<p>It seems very interesting. As you say, first of all we will have to define precisely what the training will be about, and your precise needs.</p>]]></field>
|
||||
<field name="type">comment</field>
|
||||
<field name="subtype_id" ref="mail.mt_comment"/>
|
||||
<field name="parent_id" ref="msg_case18_1"/>
|
||||
<field name="author_id" ref="base.partner_demo"/>
|
||||
<field name="favorite_user_ids" eval="[(6, 0, [ref('base.user_root')])]"/>
|
||||
</record>
|
||||
<record id="msg_case1_1" model="mail.message">
|
||||
<field name="subject">Inquiry</field>
|
||||
<field name="model">crm.lead</field>
|
||||
<field name="res_id" ref="crm_case_1"/>
|
||||
<field name="body">Hello,
|
||||
I am Jason from Le Club SARL.
|
||||
I am intertested to attend a training organized in your company.
|
||||
Can you send me the details ?</field>
|
||||
<field name="body"><![CDATA[<p>Hello,<br />
|
||||
I am Jason from Le Club SARL. I am interested to attend a training organized in your company.<br />
|
||||
Can you send me the details ?</p>]]></field>
|
||||
<field name="type">email</field>
|
||||
</record>
|
||||
<record id="message_email_13" model="mail.message">
|
||||
<record id="msg_case2_1" model="mail.message">
|
||||
<field name="subject">Need Details</field>
|
||||
<field name="model">crm.lead</field>
|
||||
<field name="res_id" ref="crm_case_2"/>
|
||||
<field name="body">Want to know features and benifits to use the new software.</field>
|
||||
<field name="body">Want to know features and benefits to use the new software.</field>
|
||||
<field name="type">comment</field>
|
||||
</record>
|
||||
|
||||
<!-- Call Function to set the opportunities as Unread -->
|
||||
<function model="crm.lead" name="message_mark_as_unread"
|
||||
eval="[ ref('crm_case_15'), ref('crm_case_16'),
|
||||
ref('crm_case_23'), ref('crm_case_19')], {}"
|
||||
/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -14,9 +14,9 @@
|
|||
<record id="action_crm_lead_unread" model="ir.values">
|
||||
<field name="name">action_crm_lead_unread</field>
|
||||
<field name="action_id" ref="actions_server_crm_lead_unread"/>
|
||||
<field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_lead_unread'))" />
|
||||
<field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_lead_unread'))"/>
|
||||
<field name="key">action</field>
|
||||
<field name="model_id" ref="model_crm_lead" />
|
||||
<field name="model_id" ref="model_crm_lead"/>
|
||||
<field name="model">crm.lead</field>
|
||||
<field name="key2">client_action_multi</field>
|
||||
</record>
|
||||
|
@ -32,9 +32,9 @@
|
|||
<record id="action_crm_lead_read" model="ir.values">
|
||||
<field name="name">action_crm_lead_read</field>
|
||||
<field name="action_id" ref="actions_server_crm_lead_read"/>
|
||||
<field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_lead_read'))" />
|
||||
<field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_lead_read'))"/>
|
||||
<field name="key">action</field>
|
||||
<field name="model_id" ref="model_crm_lead" />
|
||||
<field name="model_id" ref="model_crm_lead"/>
|
||||
<field name="model">crm.lead</field>
|
||||
<field name="key2">client_action_multi</field>
|
||||
</record>
|
||||
|
@ -143,7 +143,7 @@
|
|||
<div class="oe_right oe_button_box" name="buttons">
|
||||
<button type="action"
|
||||
name="%(act_crm_opportunity_crm_phonecall_new)d"
|
||||
string="Phone Calls" />
|
||||
string="Phone Calls"/>
|
||||
</div>
|
||||
<div class="oe_title">
|
||||
<label for="name" class="oe_edit_only" string="Lead Description"/>
|
||||
|
@ -167,13 +167,13 @@
|
|||
</div>
|
||||
</group>
|
||||
<group>
|
||||
<label for="contact_name" />
|
||||
<label for="contact_name"/>
|
||||
<div>
|
||||
<field name="contact_name" class="oe_inline"/>,
|
||||
<field name="title" placeholder="Title" domain="[('domain', '=', 'contact')]" class="oe_inline" options='{"no_open": True}'/>
|
||||
</div>
|
||||
<field name="email_from" widget="email"/>
|
||||
<field name="function" />
|
||||
<field name="function"/>
|
||||
<field name="phone"/>
|
||||
<field name="mobile"/>
|
||||
<field name="fax"/>
|
||||
|
@ -209,14 +209,14 @@
|
|||
<group string="Categorization">
|
||||
<field name="company_id"
|
||||
groups="base.group_multi_company"
|
||||
widget="selection" colspan="2" />
|
||||
widget="selection" colspan="2"/>
|
||||
<field name="type_id" widget="selection"/>
|
||||
<field name="channel_id" widget="selection"/>
|
||||
<field name="referred"/>
|
||||
<field name="state" groups="base.group_no_one"/>
|
||||
</group>
|
||||
<group string="Mailings">
|
||||
<field name="opt_out" />
|
||||
<field name="opt_out"/>
|
||||
</group>
|
||||
</group>
|
||||
</page>
|
||||
|
@ -253,12 +253,12 @@
|
|||
<field name="create_date" groups="base.group_no_one"/>
|
||||
<field name="name"/>
|
||||
<field name="contact_name"/>
|
||||
<field name="country_id" invisible="context.get('invisible_country', True)" />
|
||||
<field name="country_id" invisible="context.get('invisible_country', True)"/>
|
||||
<field name="email_from"/>
|
||||
<field name="phone"/>
|
||||
<field name="stage_id"/>
|
||||
<field name="user_id" invisible="1"/>
|
||||
<field name="section_id" invisible="context.get('invisible_section', True)" />
|
||||
<field name="section_id" invisible="context.get('invisible_section', True)"/>
|
||||
<field name="state" invisible="1"/>
|
||||
<field name="type_id" invisible="1"/>
|
||||
<field name="referred" invisible="1"/>
|
||||
|
@ -276,8 +276,8 @@
|
|||
<field name="arch" type="xml">
|
||||
<calendar string="Leads Generation"
|
||||
date_start="date_action" color="user_id">
|
||||
<field name="name" />
|
||||
<field name="partner_name" />
|
||||
<field name="name"/>
|
||||
<field name="partner_name"/>
|
||||
</calendar>
|
||||
</field>
|
||||
</record>
|
||||
|
@ -354,14 +354,14 @@
|
|||
<field name="arch" type="xml">
|
||||
<search string="Search Leads">
|
||||
<field name="name" string="Lead / Customer" filter_domain="['|','|',('partner_name','ilike',self),('email_from','ilike',self),('name','ilike',self)]"/>
|
||||
<field name="categ_ids" string="Category" filter_domain="[('categ_ids','ilike',self)]" />
|
||||
<field name="categ_ids" string="Category" filter_domain="[('categ_ids','ilike',self)]"/>
|
||||
<field name="create_date"/>
|
||||
<filter icon="terp-mail-message-new" string="Unread Messages" help="Unread messages" name="message_unread" domain="[('message_unread','=',True)]"/>
|
||||
<separator/>
|
||||
<filter icon="terp-check" string="New" name="new" help="New Leads" domain="[('state','=','draft')]"/>
|
||||
<filter icon="terp-camera_test" string="In Progress" name="open" domain="[('state','=','open')]"/>
|
||||
<separator/>
|
||||
<filter string="Unassigned Leads" icon="terp-personal-" domain="[('user_id','=', False)]" help="Unassigned Leads" />
|
||||
<filter string="Unassigned Leads" icon="terp-personal-" domain="[('user_id','=', False)]" help="Unassigned Leads"/>
|
||||
<separator/>
|
||||
<filter string="Leads Assigned to Me or My Team(s)" icon="terp-personal+" context="{'invisible_section': False}"
|
||||
domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]"
|
||||
|
@ -373,8 +373,8 @@
|
|||
<filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
|
||||
<filter string="Team" icon="terp-personal+" domain="[]" context="{'group_by':'section_id'}"/>
|
||||
<filter string="Referrer" icon="terp-personal" domain="[]" context="{'group_by':'referred'}"/>
|
||||
<filter string="Campaign" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'type_id'}" />
|
||||
<filter string="Channel" icon="terp-call-start" domain="[]" context="{'group_by':'channel_id'}" />
|
||||
<filter string="Campaign" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'type_id'}"/>
|
||||
<filter string="Channel" icon="terp-call-start" domain="[]" context="{'group_by':'channel_id'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}"/>
|
||||
<filter string="Creation" help="Create date" icon="terp-go-month" domain="[]" context="{'group_by':'create_date'}" groups="base.group_no_one"/>
|
||||
|
@ -415,7 +415,7 @@
|
|||
name="action_makeMeeting"
|
||||
type="object"
|
||||
context="{'search_default_attendee_id': active_id, 'default_attendee_id' : active_id}"
|
||||
/>
|
||||
/>
|
||||
</div>
|
||||
<div class="oe_title">
|
||||
<label for="name" class="oe_edit_only"/>
|
||||
|
@ -452,7 +452,7 @@
|
|||
<label for="section_id"/>
|
||||
<div>
|
||||
<field name="section_id" widget="selection"/>
|
||||
<button name="case_escalate" string="Escalate" type="object" states="draft,open,pending" />
|
||||
<button name="case_escalate" string="Escalate" type="object" states="draft,open,pending"/>
|
||||
</div>
|
||||
</group>
|
||||
<group>
|
||||
|
@ -485,12 +485,12 @@
|
|||
</group>
|
||||
|
||||
<group>
|
||||
<label for="contact_name" />
|
||||
<label for="contact_name"/>
|
||||
<div>
|
||||
<field name="contact_name" class="oe_inline"/>
|
||||
<field name="title" placeholder="Title" domain="[('domain', '=', 'contact')]" options='{"no_open": True}' class="oe_inline"/>
|
||||
</div>
|
||||
<field name="function" />
|
||||
<field name="function"/>
|
||||
<field name="mobile"/>
|
||||
<field name="fax"/>
|
||||
</group>
|
||||
|
@ -500,7 +500,7 @@
|
|||
<field name="channel_id" widget="selection"/>
|
||||
</group>
|
||||
<group string="Mailings">
|
||||
<field name="opt_out" />
|
||||
<field name="opt_out"/>
|
||||
</group>
|
||||
<group string="Misc">
|
||||
<field name="active"/>
|
||||
|
@ -542,15 +542,15 @@
|
|||
<field name="create_date" groups="base.group_no_one"/>
|
||||
<field name="name" string="Opportunity"/>
|
||||
<field name="partner_id" string="Customer"/>
|
||||
<field name="country_id" invisible="context.get('invisible_country', True)" />
|
||||
<field name="country_id" invisible="context.get('invisible_country', True)"/>
|
||||
<field name="date_action"/>
|
||||
<field name="title_action" />
|
||||
<field name="title_action"/>
|
||||
<field name="channel_id" invisible="1"/>
|
||||
<field name="type_id" invisible="1"/>
|
||||
<field name="stage_id"/>
|
||||
<field name="planned_revenue" sum="Expected Revenues"/>
|
||||
<field name="probability" widget="progressbar" avg="Avg. of Probability"/>
|
||||
<field name="section_id" invisible="context.get('invisible_section', True)" />
|
||||
<field name="section_id" invisible="context.get('invisible_section', True)"/>
|
||||
<field name="user_id"/>
|
||||
<field name="priority" invisible="1"/>
|
||||
<field name="state" groups="base.group_no_one"/>
|
||||
|
@ -568,30 +568,30 @@
|
|||
<search string="Search Opportunities">
|
||||
<field name="name" string="Opportunity / Customer"
|
||||
filter_domain="['|','|','|',('partner_id','ilike',self),('partner_name','ilike',self),('email_from','ilike',self),('name', 'ilike', self)]"/>
|
||||
<field name="categ_ids" string="Category" filter_domain="[('categ_ids','ilike', self)]" />
|
||||
<field name="categ_ids" string="Category" filter_domain="[('categ_ids','ilike', self)]"/>
|
||||
<filter icon="terp-mail-message-new" string="Unread Messages" help="Unread messages" name="message_unread" domain="[('message_unread','=',True)]"/>
|
||||
<separator/>
|
||||
<filter icon="terp-check" string="New" help="New Opportunities" name="new" domain="[('state','=','draft')]"/>
|
||||
<filter icon="terp-camera_test" string="In Progress" help="Open Opportunities" name="open" domain="[('state','=','open')]"/>
|
||||
<separator/>
|
||||
<filter string="Unassigned Opportunities" icon="terp-personal-" domain="[('user_id','=', False)]" help="Unassigned Opportunities" />
|
||||
<filter string="Unassigned Opportunities" icon="terp-personal-" domain="[('user_id','=', False)]" help="Unassigned Opportunities"/>
|
||||
<separator/>
|
||||
<filter string="Opportunities Assigned to Me or My Team(s)" icon="terp-personal+"
|
||||
domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]" context="{'invisible_section': False}"
|
||||
help="Opportunities that are assigned to either me or one of the sale teams I manage" />
|
||||
help="Opportunities that are assigned to either me or one of the sale teams I manage"/>
|
||||
<field name="user_id"/>
|
||||
<field name="section_id" context="{'invisible_section': False, 'default_section_id': self}"/>
|
||||
<field name="partner_id"/>
|
||||
<group expand="0" string="Group By..." colspan="16">
|
||||
<filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}" />
|
||||
<filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
|
||||
<filter string="Team" help="Sales Team" icon="terp-personal+" domain="[]" context="{'group_by':'section_id'}"/>
|
||||
<filter string="Customer" help="Partner" icon="terp-personal+" domain="[]" context="{'group_by':'partner_id'}"/>
|
||||
<filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}" />
|
||||
<filter string="Priority" icon="terp-rating-rated" domain="[]" context="{'group_by':'priority'}" />
|
||||
<filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}"/>
|
||||
<filter string="Priority" icon="terp-rating-rated" domain="[]" context="{'group_by':'priority'}"/>
|
||||
<filter string="Campaign" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'type_id'}"/>
|
||||
<filter string="Channel" icon="terp-call-start" domain="[]" context="{'group_by':'channel_id'}" />
|
||||
<filter string="Channel" icon="terp-call-start" domain="[]" context="{'group_by':'channel_id'}"/>
|
||||
<filter string="Creation" icon="terp-go-month" domain="[]" context="{'group_by':'create_date'}" groups="base.group_no_one"/>
|
||||
<filter string="Exp.Closing" icon="terp-go-month" help="Expected Closing" domain="[]" context="{'group_by':'date_deadline'}" />
|
||||
<filter string="Exp.Closing" icon="terp-go-month" help="Expected Closing" domain="[]" context="{'group_by':'date_deadline'}"/>
|
||||
</group>
|
||||
<group string="Display">
|
||||
<filter string="Show Sales Team" icon="terp-personal+" context="{'invisible_section': False}" domain="[]" help="Show Sales Team"/>
|
||||
|
|
|
@ -224,7 +224,7 @@ class crm_claim(base_stage, osv.osv):
|
|||
}
|
||||
for line in msg['body'].split('\n'):
|
||||
line = line.strip()
|
||||
res = tools.misc.command_re.match(line)
|
||||
res = tools.command_re.match(line)
|
||||
if res and maps.get(res.group(1).lower()):
|
||||
key = maps.get(res.group(1).lower())
|
||||
update_vals[key] = res.group(2).lower()
|
||||
|
|
|
@ -133,7 +133,7 @@ class crm_helpdesk(base_state, base_stage, osv.osv):
|
|||
}
|
||||
for line in msg['body'].split('\n'):
|
||||
line = line.strip()
|
||||
res = tools.misc.command_re.match(line)
|
||||
res = tools.command_re.match(line)
|
||||
if res and maps.get(res.group(1).lower()):
|
||||
key = maps.get(res.group(1).lower())
|
||||
update_vals[key] = res.group(2).lower()
|
||||
|
|
|
@ -23,9 +23,10 @@ class EDI(openerpweb.Controller):
|
|||
|
||||
@openerpweb.jsonrequest
|
||||
def import_edi_url(self, req, url):
|
||||
context = req.session.eval_context(req.context)
|
||||
result = req.session.proxy('edi').import_edi_url(req.session._db, req.session._uid, req.session._password, url)
|
||||
if len(result) == 1:
|
||||
return {"action": webmain.clean_action(req, result[0][2])}
|
||||
return {"action": webmain.clean_action(req, result[0][2], context)}
|
||||
return True
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -345,6 +345,7 @@ class email_template(osv.osv):
|
|||
values = self.generate_email(cr, uid, template_id, res_id, context=context)
|
||||
assert 'email_from' in values, 'email_from is missing or empty after template rendering, send_mail() cannot proceed'
|
||||
attachments = values.pop('attachments') or {}
|
||||
del values['email_recipients'] # TODO Properly use them.
|
||||
msg_id = mail_mail.create(cr, uid, values, context=context)
|
||||
# link attachments
|
||||
attachment_ids = []
|
||||
|
|
|
@ -227,7 +227,6 @@
|
|||
<record model='ir.ui.view' id='fleet_vehicle_tree'>
|
||||
<field name="name">fleet.vehicle.tree</field>
|
||||
<field name="model">fleet.vehicle</field>
|
||||
<field name="sequence">1</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Vehicle" version="7.0" colors="orange:contract_renewal_due_soon and not contract_renewal_overdue;red:contract_renewal_overdue">
|
||||
<field name="license_plate" />
|
||||
|
|
|
@ -8,4 +8,6 @@ fleet_vehicle_access_right,fleet_vehicle_access_right,model_fleet_vehicle,,1,1,1
|
|||
fleet_vehicle_log_fuel_access_right,fleet_vehicle_log_fuel_access_right,model_fleet_vehicle_log_fuel,,1,1,1,1
|
||||
fleet_vehicle_log_services_access_right,fleet_vehicle_log_services_access_right,model_fleet_vehicle_log_services,,1,1,1,1
|
||||
fleet_vehicle_log_contract_access_right,fleet_vehicle_log_contract_access_right,model_fleet_vehicle_log_contract,,1,1,1,1
|
||||
fleet_service_type_access_right,fleet_service_type_access_right,model_fleet_service_type,,1,1,1,1
|
||||
fleet_service_type_access_right,fleet_service_type_access_right,model_fleet_service_type,,1,1,1,1
|
||||
access_fleet_vehicle_cost,access_fleet_vehicle_cost,model_fleet_vehicle_cost,,1,1,1,1
|
||||
access_fleet_contract_state,access_fleet_contract_state,model_fleet_contract_state,,1,1,1,1
|
||||
|
|
|
|
@ -356,7 +356,8 @@ class hr_applicant(base_stage, osv.Model):
|
|||
"""
|
||||
if isinstance(ids, (str, int, long)):
|
||||
ids = [ids]
|
||||
if update_vals is None: vals = {}
|
||||
if update_vals is None:
|
||||
update_vals = {}
|
||||
|
||||
update_vals.update({
|
||||
'description': msg.get('body'),
|
||||
|
@ -373,12 +374,12 @@ class hr_applicant(base_stage, osv.Model):
|
|||
}
|
||||
for line in msg.get('body', '').split('\n'):
|
||||
line = line.strip()
|
||||
res = tools.misc.command_re.match(line)
|
||||
res = tools.command_re.match(line)
|
||||
if res and maps.get(res.group(1).lower(), False):
|
||||
key = maps.get(res.group(1).lower())
|
||||
update_vals[key] = res.group(2).lower()
|
||||
|
||||
return super(hr_applicant, self).message_update(cr, uids, ids, update_vals=update_vals, context=context)
|
||||
return super(hr_applicant, self).message_update(cr, uid, ids, msg, update_vals=update_vals, context=context)
|
||||
|
||||
def create(self, cr, uid, vals, context=None):
|
||||
obj_id = super(hr_applicant, self).create(cr, uid, vals, context=context)
|
||||
|
@ -420,7 +421,7 @@ class hr_applicant(base_stage, osv.Model):
|
|||
self.write(cr, uid, [applicant.id], {'emp_id': emp_id}, context=context)
|
||||
self.case_close(cr, uid, [applicant.id], context)
|
||||
else:
|
||||
raise osv.except_osv(_('Warning!'),_('You must define Applied Job for this applicant.'))
|
||||
raise osv.except_osv(_('Warning!'), _('You must define Applied Job for this applicant.'))
|
||||
|
||||
action_model, action_id = model_data.get_object_reference(cr, uid, 'hr', 'open_view_employee_list')
|
||||
dict_act_window = act_window.read(cr, uid, action_id, [])
|
||||
|
@ -433,13 +434,13 @@ class hr_applicant(base_stage, osv.Model):
|
|||
"""Overrides cancel for crm_case for setting probability
|
||||
"""
|
||||
res = super(hr_applicant, self).case_cancel(cr, uid, ids, context)
|
||||
self.write(cr, uid, ids, {'probability' : 0.0})
|
||||
self.write(cr, uid, ids, {'probability': 0.0})
|
||||
return res
|
||||
|
||||
def case_pending(self, cr, uid, ids, context=None):
|
||||
"""Marks case as pending"""
|
||||
res = super(hr_applicant, self).case_pending(cr, uid, ids, context)
|
||||
self.write(cr, uid, ids, {'probability' : 0.0})
|
||||
self.write(cr, uid, ids, {'probability': 0.0})
|
||||
return res
|
||||
|
||||
def case_reset(self, cr, uid, ids, context=None):
|
||||
|
@ -452,7 +453,7 @@ class hr_applicant(base_stage, osv.Model):
|
|||
def set_priority(self, cr, uid, ids, priority, *args):
|
||||
"""Set applicant priority
|
||||
"""
|
||||
return self.write(cr, uid, ids, {'priority' : priority})
|
||||
return self.write(cr, uid, ids, {'priority': priority})
|
||||
|
||||
def set_high_priority(self, cr, uid, ids, *args):
|
||||
"""Set applicant priority to high
|
||||
|
@ -475,7 +476,7 @@ class hr_applicant(base_stage, osv.Model):
|
|||
return self.message_post(cr, uid, ids, body=_("Stage changed to <b>%s</b>.") % (stage_name), context=context)
|
||||
|
||||
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
|
||||
return 'Applicant'
|
||||
return 'Applicant'
|
||||
|
||||
def case_open_send_note(self, cr, uid, ids, context=None):
|
||||
message = _("Applicant has been set <b>in progress</b>.")
|
||||
|
|
|
@ -7,14 +7,14 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 6.0dev_rc3\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||
"PO-Revision-Date: 2012-05-10 17:22+0000\n"
|
||||
"Last-Translator: Ferdinand-camptocamp <Unknown>\n"
|
||||
"PO-Revision-Date: 2012-11-18 00:40+0000\n"
|
||||
"Last-Translator: Felix Schubert <Unknown>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-10-30 05:11+0000\n"
|
||||
"X-Generator: Launchpad (build 16206)\n"
|
||||
"X-Launchpad-Export-Date: 2012-11-19 04:37+0000\n"
|
||||
"X-Generator: Launchpad (build 16278)\n"
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: code:addons/hr_timesheet/report/user_timesheet.py:43
|
||||
|
@ -37,7 +37,7 @@ msgstr "Kein Mitarbeiter für diesen Benutzer definiert!"
|
|||
#. module: hr_timesheet
|
||||
#: view:hr.analytic.timesheet:0
|
||||
msgid "Group By..."
|
||||
msgstr "Gruppierung..."
|
||||
msgstr "Gruppieren nach"
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: model:ir.actions.act_window,help:hr_timesheet.action_hr_timesheet_sign_in
|
||||
|
@ -66,7 +66,7 @@ msgstr "Analytisches Journal"
|
|||
#. module: hr_timesheet
|
||||
#: view:hr.sign.out.project:0
|
||||
msgid "Stop Working"
|
||||
msgstr "Beende Arbeit"
|
||||
msgstr "Arbeitsende"
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: model:ir.actions.act_window,name:hr_timesheet.action_hr_timesheet_employee
|
||||
|
@ -172,13 +172,13 @@ msgstr "Warnung !"
|
|||
#: code:addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py:132
|
||||
#, python-format
|
||||
msgid "UserError"
|
||||
msgstr "BenutzerFehler"
|
||||
msgstr "Benutzer Fehler"
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: code:addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py:77
|
||||
#, python-format
|
||||
msgid "No cost unit defined for this employee !"
|
||||
msgstr "Keine Kosten Einheit für diesen Mitarbeiter definiert!"
|
||||
msgstr "Kein Stundensatz für diesen Mitarbeiter definiert!"
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: code:addons/hr_timesheet/report/user_timesheet.py:43
|
||||
|
@ -254,7 +254,7 @@ msgstr "Juli"
|
|||
#: field:hr.sign.in.project,date:0
|
||||
#: field:hr.sign.out.project,date_start:0
|
||||
msgid "Starting Date"
|
||||
msgstr "Anfangsdatum"
|
||||
msgstr "Start Datum"
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: view:hr.employee:0
|
||||
|
@ -271,8 +271,8 @@ msgstr ""
|
|||
#: help:hr.employee,product_id:0
|
||||
msgid "Specifies employee's designation as a product with type 'service'."
|
||||
msgstr ""
|
||||
"Spezifiziere ein Produkt mit dem Typ 'Dienstleistungen' bei den "
|
||||
"Mitarbeitereinstellungen auf dem Aktenreiter 'Zeiterfassung'."
|
||||
"Definiert ein Produkt mit dem Typ \"Dienstleistung\" in den Einstellungen "
|
||||
"für den Mitarbeiter"
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: view:hr.analytic.timesheet:0
|
||||
|
@ -318,7 +318,7 @@ msgstr "Aufgabenbeschreibung"
|
|||
#. module: hr_timesheet
|
||||
#: view:account.analytic.account:0
|
||||
msgid "Invoice Analysis"
|
||||
msgstr "Statistik Rechnungen"
|
||||
msgstr "Rechnungsanalyse"
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: model:ir.actions.report.xml,name:hr_timesheet.report_user_timesheet
|
||||
|
@ -334,7 +334,7 @@ msgstr "Anmelden / Abmelden bei Projekt"
|
|||
#. module: hr_timesheet
|
||||
#: model:ir.actions.act_window,name:hr_timesheet.action_define_analytic_structure
|
||||
msgid "Define your Analytic Structure"
|
||||
msgstr "Definieren Sie die Strukture der Analysekonten"
|
||||
msgstr "Definiere die Struktur der Analytischen Konten"
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: view:hr.sign.in.project:0
|
||||
|
@ -348,14 +348,14 @@ msgid ""
|
|||
"Analytic journal is not defined for employee %s \n"
|
||||
"Define an employee for the selected user and assign an analytic journal!"
|
||||
msgstr ""
|
||||
"Analytisches Journal ist für diesen Mitarbeiter nicht definiert: %s\n"
|
||||
"Definiere einen Mitarbeiter für den ausgewählten Benutzer und weise dann "
|
||||
"noch ein analytisches Konto zu!"
|
||||
"Es wurde kein Analytisches Journal für diesen Mitarbeiter definiert: %s\n"
|
||||
"Weise einen Mitarbeiter dem ausgewählten Benutzer und ein analytisches Konto "
|
||||
"zu!"
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: view:hr.sign.in.project:0
|
||||
msgid "(Keep empty for current time)"
|
||||
msgstr "(Leer lassen für aktuelle Zeit)"
|
||||
msgstr "(Frei lassen für den aktuellen Zeitpunkt)"
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: view:hr.employee:0
|
||||
|
@ -369,9 +369,9 @@ msgid ""
|
|||
"analyse costs and revenues. In OpenERP, analytic accounts are also used to "
|
||||
"track customer contracts."
|
||||
msgstr ""
|
||||
"Um Erlöse und Kosten zu analysiren, benötigen Sie einen strukturierte "
|
||||
"Analyse Kontenplan. In OpenERP wird damit auch die Entwicklung der "
|
||||
"Kundenkontrakte verfolgt."
|
||||
"Um Erlöse und Kosten zu analysieren, sollten Sie einen strukturierte "
|
||||
"analytischen Kontenplan erstellen. In OpenERP können damit auch "
|
||||
"Kundenverträge verfolgt werden."
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: field:hr.analytic.timesheet,line_id:0
|
||||
|
@ -424,7 +424,7 @@ msgstr ""
|
|||
#. module: hr_timesheet
|
||||
#: field:hr.sign.out.project,date:0
|
||||
msgid "Closing Date"
|
||||
msgstr "Ende Datum"
|
||||
msgstr "Enddatum"
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: code:addons/hr_timesheet/report/user_timesheet.py:40
|
||||
|
@ -475,12 +475,12 @@ msgstr "Mitarbeiter Nr."
|
|||
#. module: hr_timesheet
|
||||
#: view:hr.sign.out.project:0
|
||||
msgid "General Information"
|
||||
msgstr "Grundinformation"
|
||||
msgstr "Allgemeine Informationen"
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: model:ir.actions.act_window,name:hr_timesheet.action_hr_timesheet_my
|
||||
msgid "My Current Timesheet"
|
||||
msgstr ""
|
||||
msgstr "Meine Zeiterfassung"
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: code:addons/hr_timesheet/report/user_timesheet.py:40
|
||||
|
@ -524,8 +524,8 @@ msgid ""
|
|||
"Through this menu you can register and follow your workings hours by project "
|
||||
"every day."
|
||||
msgstr ""
|
||||
"Mit diesem Menüpunkt können Sie sich registrieren und die Arbeitsstunden je "
|
||||
"Projekt und Tage verfoglen."
|
||||
"Mit diesem Menüpunkt können Sie die Arbeitsstunden pro Projekt und Tage "
|
||||
"verfolgen."
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: field:hr.sign.in.project,server_date:0
|
||||
|
@ -561,12 +561,12 @@ msgstr "Mai"
|
|||
#. module: hr_timesheet
|
||||
#: view:hr.analytic.timesheet:0
|
||||
msgid "Total time"
|
||||
msgstr "Gesamtzeit"
|
||||
msgstr "Gesamtdauer"
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: view:hr.sign.in.project:0
|
||||
msgid "(local time on the server side)"
|
||||
msgstr "(Ortszeit auf dem Server)"
|
||||
msgstr "(Ortszeit auf Serverseite)"
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: model:ir.model,name:hr_timesheet.model_hr_sign_in_project
|
||||
|
@ -585,7 +585,7 @@ msgstr "Februar"
|
|||
#. module: hr_timesheet
|
||||
#: model:ir.model,name:hr_timesheet.model_hr_sign_out_project
|
||||
msgid "Sign Out By Project"
|
||||
msgstr "Anmelden / Abmelden Projekte"
|
||||
msgstr "Anmelden / Abmelden Projekt"
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: view:hr.analytical.timesheet.users:0
|
||||
|
@ -617,7 +617,7 @@ msgid ""
|
|||
"No analytic account defined on the project.\n"
|
||||
"Please set one or we can not automatically fill the timesheet."
|
||||
msgstr ""
|
||||
"Kein Analytisches Konto für Projekt definiert.\n"
|
||||
"Kein Analytisches Konto für das Projekt definiert.\n"
|
||||
"Bitte definieren Sie ein Konto, damit wir automatisch die Zeiterfassung "
|
||||
"buchen können."
|
||||
|
||||
|
@ -630,12 +630,12 @@ msgstr "Benutzer"
|
|||
#. module: hr_timesheet
|
||||
#: view:hr.sign.in.project:0
|
||||
msgid "Start Working"
|
||||
msgstr "Beginne Arbeit"
|
||||
msgstr "Arbeitsbeginn"
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: view:account.analytic.account:0
|
||||
msgid "Stats by user"
|
||||
msgstr "Arbeitszeiten nach Mitarbeitern"
|
||||
msgstr "Auswertung nach Mitarbeiter"
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: code:addons/hr_timesheet/wizard/hr_timesheet_print_employee.py:42
|
||||
|
|
|
@ -0,0 +1,163 @@
|
|||
# German translation for openobject-addons
|
||||
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||
"PO-Revision-Date: 2012-11-18 21:44+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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-11-19 04:37+0000\n"
|
||||
"X-Generator: Launchpad (build 16278)\n"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: help:hr.employee,disabled_spouse_bool:0
|
||||
msgid "if recipient spouse is declared disabled by law"
|
||||
msgstr ""
|
||||
"Wenn Ehepartner des Empfängers gesetzlich als Behindert anerkannt wurde"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: help:hr.employee,disabled_children_bool:0
|
||||
msgid "if recipient children is/are declared disabled by law"
|
||||
msgstr ""
|
||||
"Wenn Kind(er) des Empfängers gesetzlich als behindert anerkannt ist (sind)"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: field:hr.contract,misc_onss_deduction:0
|
||||
msgid "Miscellaneous exempt ONSS "
|
||||
msgstr "Diverse Ausnahmen (ONSS) "
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: model:ir.model,name:l10n_be_hr_payroll.model_hr_employee
|
||||
msgid "Employee"
|
||||
msgstr "Angestellte/r"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: field:hr.employee,disabled_spouse_bool:0
|
||||
msgid "Disabled Spouse"
|
||||
msgstr "Als Behindert anerkannter Ehepartner"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: field:hr.contract,retained_net_amount:0
|
||||
msgid "Net retained "
|
||||
msgstr "Einbehalten Netto "
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: field:hr.employee,resident_bool:0
|
||||
msgid "Nonresident"
|
||||
msgstr "Im Ausland wohnhaft"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: help:hr.employee,resident_bool:0
|
||||
msgid "if recipient lives in a foreign country"
|
||||
msgstr "Wenn Empfänger in anderem Land wohnhaft ist"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: view:hr.employee:0
|
||||
msgid "if spouse has professionnel income or not"
|
||||
msgstr "Ob Ehepartner berufliches Einkommen hat oder nicht"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: view:hr.contract:0
|
||||
msgid "Miscellaneous"
|
||||
msgstr "Verschiedenes"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: field:hr.contract,insurance_employee_deduction:0
|
||||
msgid "Insurance Group - by worker "
|
||||
msgstr "Vericherungsgruppe nach Mitarbeiter "
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: selection:hr.employee,spouse_fiscal_status:0
|
||||
msgid "With Income"
|
||||
msgstr "Mit Einkommen"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: selection:hr.employee,spouse_fiscal_status:0
|
||||
msgid "Without Income"
|
||||
msgstr "Ohne Einkommen"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: field:hr.employee,disabled_children_number:0
|
||||
msgid "Number of disabled children"
|
||||
msgstr "Anzahl behinderter Kinder"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: field:hr.contract,additional_net_amount:0
|
||||
msgid "Net supplements"
|
||||
msgstr "Netto-Zulagen"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: constraint:hr.employee:0
|
||||
msgid "Error ! You cannot create recursive Hierarchy of Employees."
|
||||
msgstr ""
|
||||
"Fehler ! Sie können keine rekursive Hierachie bei Mitarbeitern definieren."
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: field:hr.contract,car_company_amount:0
|
||||
msgid "Company car employer"
|
||||
msgstr "Firmenfahrzeug des Arbeitgebers"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: field:hr.contract,misc_advantage_amount:0
|
||||
msgid "Benefits of various nature "
|
||||
msgstr "Geldwerte Vorteile verschiedener Art "
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: field:hr.contract,car_employee_deduction:0
|
||||
msgid "Company Car Deduction for Worker"
|
||||
msgstr "Abzüge beim Mitarbeiter für Firmenfahrzeug"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: field:hr.employee,disabled_children_bool:0
|
||||
msgid "Disabled Children"
|
||||
msgstr "Behinderte Kinder"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: model:ir.model,name:l10n_be_hr_payroll.model_hr_contract
|
||||
msgid "Contract"
|
||||
msgstr "Vertrag"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: field:hr.contract,meal_voucher_amount:0
|
||||
msgid "Check Value Meal "
|
||||
msgstr "Verköstigungswert prüfen "
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: field:hr.contract,travel_reimbursement_amount:0
|
||||
msgid "Reimbursement of travel expenses"
|
||||
msgstr "Erstattung von Reisespesen"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: constraint:hr.contract:0
|
||||
msgid "Error! contract start-date must be lower then contract end-date."
|
||||
msgstr ""
|
||||
"Fehler! Datum des Vertragsbeginns muss zeitlich vor dem Datum des "
|
||||
"Vertragsendes sein."
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: field:hr.employee,spouse_fiscal_status:0
|
||||
msgid "Tax status for spouse"
|
||||
msgstr "Steuerklasse des Ehepartners"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: view:hr.contract:0
|
||||
msgid "by Worker"
|
||||
msgstr "nach Mitarbeiter"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: view:hr.employee:0
|
||||
msgid "number of dependent children declared as disabled"
|
||||
msgstr "Anzahl anhängiger, als behindert anerkannter Kinder"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: field:hr.contract,meal_voucher_employee_deduction:0
|
||||
msgid "Check Value Meal - by worker "
|
||||
msgstr "Verköstigungswerte - nach Mitarbeitern "
|
|
@ -0,0 +1,172 @@
|
|||
# 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:06+0000\n"
|
||||
"PO-Revision-Date: 2012-11-16 19:54+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-11-17 04:37+0000\n"
|
||||
"X-Generator: Launchpad (build 16278)\n"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: model:ir.model,name:l10n_multilang.model_account_fiscal_position_template
|
||||
msgid "Template for Fiscal Position"
|
||||
msgstr "قوالب للمركز المالي"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: sql_constraint:account.account:0
|
||||
msgid "The code of the account must be unique per company !"
|
||||
msgstr "يجب ان يكون كود الحساب فريداً لكل شركة !"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: constraint:account.account.template:0
|
||||
msgid ""
|
||||
"Configuration Error!\n"
|
||||
"You can not define children to an account with internal type different of "
|
||||
"\"View\"! "
|
||||
msgstr ""
|
||||
"خطأ في الإعدادات!\n"
|
||||
" لاتستطيع تعريف أطفال لحساب من نوع داخلي مختلف ل\"العرض\"! "
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: model:ir.model,name:l10n_multilang.model_account_analytic_journal
|
||||
msgid "Analytic Journal"
|
||||
msgstr "يومية تحليلية"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: constraint:account.account.template:0
|
||||
msgid "Error ! You can not create recursive account templates."
|
||||
msgstr "خطأ ! لا يمكنك انشاء قوالب الحاسب العودية."
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: model:ir.model,name:l10n_multilang.model_account_journal
|
||||
msgid "Journal"
|
||||
msgstr "يومية"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: model:ir.model,name:l10n_multilang.model_account_chart_template
|
||||
msgid "Templates for Account Chart"
|
||||
msgstr "القوالب لجدول الحساب"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: sql_constraint:account.tax:0
|
||||
msgid "The description must be unique per company!"
|
||||
msgstr "وصف لكل شركة يجب ان تكون فريد!"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: constraint:account.tax.code.template:0
|
||||
msgid "Error ! You can not create recursive Tax Codes."
|
||||
msgstr "خطأ ! لايمكنك إنشاء اكواد ضريبية متداخلة."
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: model:ir.model,name:l10n_multilang.model_account_tax_template
|
||||
msgid "account.tax.template"
|
||||
msgstr "account.tax.template"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: model:ir.model,name:l10n_multilang.model_account_tax
|
||||
msgid "account.tax"
|
||||
msgstr "account.tax"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: model:ir.model,name:l10n_multilang.model_account_account
|
||||
msgid "Account"
|
||||
msgstr "حساب"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: model:ir.model,name:l10n_multilang.model_wizard_multi_charts_accounts
|
||||
msgid "wizard.multi.charts.accounts"
|
||||
msgstr "wizard.multi.charts.accounts"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: constraint:account.journal:0
|
||||
msgid ""
|
||||
"Configuration error! The currency chosen should be shared by the default "
|
||||
"accounts too."
|
||||
msgstr ""
|
||||
"خطأ في الإعدادات! يجب أن تكون العملة المختارة مشتركة للحسابات الإفتراضية "
|
||||
"أيضأً."
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: model:ir.model,name:l10n_multilang.model_account_account_template
|
||||
msgid "Templates for Accounts"
|
||||
msgstr "قوالب للحسابات"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: help:account.chart.template,spoken_languages:0
|
||||
msgid ""
|
||||
"State here the languages for which the translations of templates could be "
|
||||
"loaded at the time of installation of this localization module and copied in "
|
||||
"the final object when generating them from templates. You must provide the "
|
||||
"language codes separated by ';'"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: constraint:account.account:0
|
||||
msgid "Error ! You can not create recursive accounts."
|
||||
msgstr "خطأ ! لا يمكن إنشاء حسابات تكرارية."
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: constraint:account.account:0
|
||||
msgid ""
|
||||
"Configuration Error! \n"
|
||||
"You can not select an account type with a deferral method different of "
|
||||
"\"Unreconciled\" for accounts with internal type \"Payable/Receivable\"! "
|
||||
msgstr ""
|
||||
"التكوين الخطأ!\n"
|
||||
"لا يمكنك اختيار نوع الحساب باستخدام طريقة التأجيل المختلفه \"عدم "
|
||||
"المساواه\" للحسابات من النوع الداخلي \"الدفع / القبض\" "
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: sql_constraint:account.journal:0
|
||||
msgid "The name of the journal must be unique per company !"
|
||||
msgstr "يجب ان يكون الاسم لليومية فريد لكل شركة!"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: model:ir.model,name:l10n_multilang.model_account_analytic_account
|
||||
msgid "Analytic Account"
|
||||
msgstr "حسابات تحليلية"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: sql_constraint:account.journal:0
|
||||
msgid "The code of the journal must be unique per company !"
|
||||
msgstr "يجب ان يكون الكود لليومية فريد لكل شركة !"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: model:ir.model,name:l10n_multilang.model_account_fiscal_position
|
||||
msgid "Fiscal Position"
|
||||
msgstr "الوضع المالي"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: constraint:account.account:0
|
||||
msgid ""
|
||||
"Configuration Error! \n"
|
||||
"You can not define children to an account with internal type different of "
|
||||
"\"View\"! "
|
||||
msgstr ""
|
||||
"خطأ في الإعدادات!\n"
|
||||
"لا يمكنك تحديد فرع لحساب مع نوع داخلي مختلف من \"عرض\"! "
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: constraint:account.analytic.account:0
|
||||
msgid "Error! You can not create recursive analytic accounts."
|
||||
msgstr "خطأ! لا يمكنك إنشاء حسابات تحليلية متكررة."
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: model:ir.model,name:l10n_multilang.model_account_tax_code_template
|
||||
msgid "Tax Code Template"
|
||||
msgstr "قالب رمز الضريبة"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: field:account.chart.template,spoken_languages:0
|
||||
msgid "Spoken Languages"
|
||||
msgstr "اللغات المنطوقة"
|
|
@ -0,0 +1,47 @@
|
|||
# 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: 2011-01-11 11:15+0000\n"
|
||||
"PO-Revision-Date: 2012-11-16 18:58+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-11-17 04:37+0000\n"
|
||||
"X-Generator: Launchpad (build 16278)\n"
|
||||
|
||||
#. module: l10n_pe
|
||||
#: model:ir.module.module,description:l10n_pe.module_meta_information
|
||||
msgid ""
|
||||
"\n"
|
||||
" Peruvian Accounting : chart of Account\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_pe
|
||||
#: model:ir.module.module,shortdesc:l10n_pe.module_meta_information
|
||||
msgid "Peruvian Chart of Account"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_pe
|
||||
#: model:ir.actions.todo,note:l10n_pe.config_call_account_template_in_minimal
|
||||
msgid ""
|
||||
"Generate Chart of Accounts from a Chart Template. You will be asked to pass "
|
||||
"the name of the company, the chart template to follow, the no. of digits to "
|
||||
"generate the code for your accounts and Bank account, currency to create "
|
||||
"Journals. Thus,the pure copy of chart Template is generated.\n"
|
||||
"\tThis is the same wizard that runs from Financial "
|
||||
"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
|
||||
"Chart of Accounts from a Chart Template."
|
||||
msgstr ""
|
||||
"إعداد شجرة الحسابات من قالب. ستم سؤالك عن اسم المنشأة، القالب المتبع، و "
|
||||
"إعداد أكواد الحسابات و البنوك، بالإضافة إلي يوميات العملة. و لذلك سيكون هناك "
|
||||
"قالب جديد. \n"
|
||||
"\tهذه لإعداد الحسابات."
|
|
@ -21,12 +21,10 @@
|
|||
|
||||
<record model="res.partner" id="partner_coin_gourmand">
|
||||
<field name="name">Coin gourmand</field>
|
||||
<field name="supplier_lunch">True</field>
|
||||
</record>
|
||||
|
||||
<record model="res.partner" id="partner_pizza_inn">
|
||||
<field name="name">Pizza Inn</field>
|
||||
<field name="supplier_lunch">True</field>
|
||||
</record>
|
||||
|
||||
<record model="lunch.product" id="product_cheese_ham">
|
||||
|
@ -102,31 +100,28 @@
|
|||
</record>
|
||||
|
||||
<record model="lunch.order" id="order_1">
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="user_id" ref="base.user_demo"/>
|
||||
<field name="date" eval="time.strftime('2012-10-23')"/>
|
||||
<field name="order_line_ids" eval="[]"/>
|
||||
<field name="state">new</field>
|
||||
<field name='company_id'>1</field>
|
||||
</record>
|
||||
|
||||
<record model="lunch.order" id="order_2">
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="user_id" ref="base.user_demo"/>
|
||||
<field name="date" eval="time.strftime('2012-10-22')"/>
|
||||
<field name="order_line_ids" eval="[]"/>
|
||||
<field name="state">confirmed</field>
|
||||
<field name='company_id'>1</field>
|
||||
</record>
|
||||
|
||||
<record model="lunch.order" id="order_3">
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="user_id" ref="base.user_demo"/>
|
||||
<field name="date" eval="time.strftime('2012-10-24')"/>
|
||||
<field name="order_line_ids" eval="[]"/>
|
||||
<field name="state">cancelled</field>
|
||||
<field name='company_id'>1</field>
|
||||
<field name="state">partially</field>
|
||||
</record>
|
||||
|
||||
<record model="lunch.order.line" id="order_line_1">
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="user_id" ref="base.user_demo"/>
|
||||
<field name="product_id" ref="product_Bolognese"/>
|
||||
<field name="date" eval="time.strftime('2012-10-23')"/>
|
||||
<field name="state">new</field>
|
||||
|
@ -136,7 +131,7 @@
|
|||
</record>
|
||||
|
||||
<record model="lunch.order.line" id="order_line_2">
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="user_id" ref="base.user_demo"/>
|
||||
<field name="product_id" ref="product_italiana"/>
|
||||
<field name="date" eval="time.strftime('2012-10-22')"/>
|
||||
<field name="state">confirmed</field>
|
||||
|
@ -146,7 +141,7 @@
|
|||
</record>
|
||||
|
||||
<record model="lunch.order.line" id="order_line_3">
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="user_id" ref="base.user_demo"/>
|
||||
<field name="product_id" ref="product_gouda"/>
|
||||
<field name="date" eval="time.strftime('2012-10-24')"/>
|
||||
<field name="state">cancelled</field>
|
||||
|
@ -155,9 +150,18 @@
|
|||
<field name="order_id" ref="order_3"/>
|
||||
</record>
|
||||
|
||||
<record model="lunch.order.line" id="order_line_4">
|
||||
<field name="user_id" ref="base.user_demo"/>
|
||||
<field name="product_id" ref="product_chicken_curry"/>
|
||||
<field name="date" eval="time.strftime('2012-10-24')"/>
|
||||
<field name="state">confirmed</field>
|
||||
<field name="supplier" ref="partner_coin_gourmand"/>
|
||||
<field name="note">+Salad +Tomatoes +Eggs</field>
|
||||
<field name="order_id" ref="order_3"/>
|
||||
</record>
|
||||
|
||||
<record model="lunch.cashmove" id="cashmove_1">
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="user_id" ref="base.user_demo"/>
|
||||
<field name="date" eval="time.strftime('2012-10-23')"/>
|
||||
<field name="description">Pizza Italiana</field>
|
||||
<field name="amount">-7.40</field>
|
||||
|
@ -166,7 +170,16 @@
|
|||
</record>
|
||||
|
||||
<record model="lunch.cashmove" id="cashmove_2">
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="user_id" ref="base.user_demo"/>
|
||||
<field name="date" eval="time.strftime('2012-10-24')"/>
|
||||
<field name="description">Chicken curry</field>
|
||||
<field name="amount">-2.60</field>
|
||||
<field name="order_id" ref="order_3"/>
|
||||
<field name="state">order</field>
|
||||
</record>
|
||||
|
||||
<record model="lunch.cashmove" id="cashmove_3">
|
||||
<field name="user_id" ref="base.user_demo"/>
|
||||
<field name="date" eval="time.strftime('2012-10-24')"/>
|
||||
<field name="description">Payment: 5 lunch tickets (6€)</field>
|
||||
<field name="amount">30</field>
|
||||
|
@ -175,7 +188,6 @@
|
|||
|
||||
<record model="lunch.alert" id="alert_1">
|
||||
<field name="message">Lunch must be ordered before 10h30 am</field>
|
||||
<field name="day">days</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
<record model="ir.ui.view" id="lunch_order_line_search_view">
|
||||
<field name="name">Search</field>
|
||||
<field name="model">lunch.order.line</field>
|
||||
<field name="type">search</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search">
|
||||
<field name="name" filter_domain="['|', ('name', 'ilike', self), ('note', 'ilike', self)]"/>
|
||||
|
@ -34,7 +33,6 @@
|
|||
<record id="view_lunch_employee_payment_filter" model="ir.ui.view">
|
||||
<field name='name'>lunch employee payment</field>
|
||||
<field name='model'>lunch.cashmove</field>
|
||||
<field name='type'>search</field>
|
||||
<field name='arch' type='xml'>
|
||||
<search string="lunch employee payment">
|
||||
<field name="description"/>
|
||||
|
@ -49,7 +47,6 @@
|
|||
<record id="view_lunch_cashmove_filter" model="ir.ui.view">
|
||||
<field name='name'>lunch cashmove</field>
|
||||
<field name='model'>lunch.cashmove</field>
|
||||
<field name='type'>search</field>
|
||||
<field name='arch' type='xml'>
|
||||
<search string="lunch cashmove">
|
||||
<field name="description"/>
|
||||
|
@ -65,7 +62,6 @@
|
|||
<record id="view_search_my_order" model="ir.ui.view">
|
||||
<field name='name'>lunch orders</field>
|
||||
<field name='model'>lunch.order</field>
|
||||
<field name='type'>search</field>
|
||||
<field name='arch' type='xml'>
|
||||
<search string="lunch orders">
|
||||
<field name="date"/>
|
||||
|
@ -79,7 +75,6 @@
|
|||
<record model="ir.ui.view" id="alert_search_view">
|
||||
<field name="name">Search</field>
|
||||
<field name="model">lunch.alert</field>
|
||||
<field name="type">search</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search">
|
||||
<field name="message"/>
|
||||
|
@ -243,7 +238,6 @@
|
|||
<record model="ir.ui.view" id="product_category_form_view">
|
||||
<field name="name">Product category Form</field>
|
||||
<field name="model">lunch.product.category</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Products Form" version="7.0">
|
||||
<sheet>
|
||||
|
@ -285,7 +279,6 @@
|
|||
<record model="ir.ui.view" id="orders_order_lines_tree_view">
|
||||
<field name="name">Order lines Tree</field>
|
||||
<field name="model">lunch.order.line</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Order lines Tree">
|
||||
<field name='date'/>
|
||||
|
@ -306,7 +299,6 @@
|
|||
<record model="ir.ui.view" id="orders_tree_view">
|
||||
<field name="name">Orders Tree View</field>
|
||||
<field name="model">lunch.order</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Orders Tree">
|
||||
<field name="date"/>
|
||||
|
@ -360,7 +352,6 @@
|
|||
<record model="ir.ui.view" id="products_tree_view">
|
||||
<field name="name">Products Tree</field>
|
||||
<field name="model">lunch.product</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Products Tree">
|
||||
<field name="name"/>
|
||||
|
@ -375,7 +366,6 @@
|
|||
<record model="ir.ui.view" id="products_form_view">
|
||||
<field name="name">Products Form</field>
|
||||
<field name="model">lunch.product</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Products Form" version="7.0">
|
||||
<header>
|
||||
|
@ -398,7 +388,6 @@
|
|||
<record model="ir.ui.view" id="casmove_tree_view">
|
||||
<field name="name">cashmove tree</field>
|
||||
<field name="model">lunch.cashmove</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="cashmove tree">
|
||||
<field name="date"/>
|
||||
|
@ -412,7 +401,6 @@
|
|||
<record model="ir.ui.view" id="casmove_form_view">
|
||||
<field name="name">cashmove form</field>
|
||||
<field name="model">lunch.cashmove</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="cashmove form" version="7.0">
|
||||
<sheet>
|
||||
|
@ -432,7 +420,6 @@
|
|||
<record model="ir.ui.view" id="alert_tree_view">
|
||||
<field name="name">alert tree</field>
|
||||
<field name="model">lunch.alert</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="alert tree">
|
||||
<field name="message"/>
|
||||
|
@ -446,7 +433,6 @@
|
|||
<record model="ir.ui.view" id="alert_form_view">
|
||||
<field name="name">alert form</field>
|
||||
<field name="model">lunch.alert</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="alert tree" version="7.0">
|
||||
<sheet>
|
||||
|
|
|
@ -10,4 +10,7 @@ order_line_user,"Order Line user",model_lunch_order_line,group_lunch_user,1,1,1,
|
|||
cashmove_user,"Cashmove user",model_lunch_cashmove,group_lunch_user,1,0,0,0
|
||||
product_user,"Product user",model_lunch_product,group_lunch_user,1,0,0,0
|
||||
product_category_user,"Product category user",model_lunch_product_category,group_lunch_user,1,0,0,0
|
||||
alert_user,"Alert user",model_lunch_alert,group_lunch_user,1,0,0,0
|
||||
alert_user,"Alert user",model_lunch_alert,group_lunch_user,1,0,0,0
|
||||
access_report_order_line,access_report_order_line,model_report_lunch_order_line,,1,1,1,1
|
||||
access_lunch_validation,access_lunch_validation,model_lunch_validation,,1,1,1,1
|
||||
access_lunch_cancel,access_lunch_cancel,model_lunch_cancel,,1,1,1,1
|
||||
|
|
|
|
@ -1,11 +1,19 @@
|
|||
<?xml version="1.0" ?>
|
||||
<openerp>
|
||||
<data>
|
||||
<record id="group_lunch_manager" model="res.groups">
|
||||
<field name="name">Lunch / Manager</field>
|
||||
<record model="ir.module.category" id="module_lunch_category">
|
||||
<field name="name">Lunch</field>
|
||||
<field name="description">Helps you handle your lunch needs, if you are a manager you will be able to create new products, cashmoves and to confirm or cancel orders.</field>
|
||||
<field name="sequence">16</field>
|
||||
</record>
|
||||
<record id="group_lunch_user" model="res.groups">
|
||||
<field name="name">Lunch / User</field>
|
||||
<field name="name">User</field>
|
||||
<field name="category_id" ref="module_lunch_category"/>
|
||||
</record>
|
||||
<record id="group_lunch_manager" model="res.groups">
|
||||
<field name="name">Manager</field>
|
||||
<field name="implied_ids" eval="[(4, ref('group_lunch_user'))]"/>
|
||||
<field name="category_id" ref="module_lunch_category"/>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
<record model="ir.ui.view" id="cancel_order_lines_view">
|
||||
<field name="name">cancel order lines</field>
|
||||
<field name="model">lunch.cancel</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="cancel order lines" version="7.0">
|
||||
<separator string="Are you sure you want to cancel these meals?"/>
|
||||
|
@ -29,4 +28,4 @@
|
|||
view_mode="form" target="new" view_type="form" view_id="cancel_order_lines_view"/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
</openerp>
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
##############################################################################
|
||||
from osv import osv, fields
|
||||
|
||||
class lunch_order_order(osv.Model):
|
||||
class lunch_order_order(osv.TransientModel):
|
||||
""" lunch order meal """
|
||||
_name = 'lunch.order.order'
|
||||
_description = 'Wizard to order a meal'
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
<record model="ir.ui.view" id="order_order_lines_view">
|
||||
<field name="name">Order meal</field>
|
||||
<field name="model">lunch.order.order</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Order meal" version="7.0">
|
||||
<separator string="Are you sure you want to order these meals?"/>
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
<record model="ir.ui.view" id="validate_order_lines_view">
|
||||
<field name="name">validate order lines</field>
|
||||
<field name="model">lunch.validation</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="validate order lines" version="7.0">
|
||||
<separator string="Did your received these meals?"/>
|
||||
|
|
|
@ -65,7 +65,10 @@ Main Features
|
|||
'mail_alias_view.xml',
|
||||
'res_users_view.xml',
|
||||
],
|
||||
'demo': ['data/mail_demo.xml'],
|
||||
'demo': [
|
||||
'data/mail_demo.xml',
|
||||
'data/mail_group_demo_data.xml',
|
||||
],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'application': True,
|
||||
|
|
|
@ -2,90 +2,354 @@
|
|||
<openerp>
|
||||
<data noupdate="1">
|
||||
|
||||
<!-- Update demo user to avoid mail bombing -->
|
||||
<!-- Update 'Demo user' and partners email preferences to avoid mail bombing -->
|
||||
<record id="base.partner_demo" model="res.partner">
|
||||
<field name="notification_email_send">none</field>
|
||||
</record>
|
||||
|
||||
<!-- Pushed to all employees -->
|
||||
<record id="message_blogpost0" model="mail.message">
|
||||
<field name="model">mail.group</field>
|
||||
<field name="res_id" ref="mail.group_all_employees"/>
|
||||
<field name="body"><![CDATA[<p>Your monthly meal vouchers arrived. You can get them at Christine's office.</p>]]></field>
|
||||
<field name="type">comment</field>
|
||||
<field name="subtype_id" ref="mt_comment"/>
|
||||
<field name="author_id" ref="base.partner_root"/>
|
||||
<record id="base.res_partner_1" model="res.partner">
|
||||
<field name="notification_email_send">none</field>
|
||||
</record>
|
||||
<record id="message_blogpost0_comment0" model="mail.message">
|
||||
<field name="model">mail.group</field>
|
||||
<field name="res_id" ref="group_all_employees"/>
|
||||
<field name="body"><![CDATA[<p>Oh, I had forgotten. This month you also get 250 EUR of eco-vouchers if you have been in the company for more than a year.</p>]]></field>
|
||||
<field name="parent_id" ref="message_blogpost0"/>
|
||||
<field name="type">comment</field>
|
||||
<field name="subtype_id" ref="mt_comment"/>
|
||||
<field name="author_id" ref="base.partner_root"/>
|
||||
<record id="base.res_partner_2" model="res.partner">
|
||||
<field name="notification_email_send">none</field>
|
||||
</record>
|
||||
<record id="message_blogpost0_comment1" model="mail.message">
|
||||
<field name="model">mail.group</field>
|
||||
<field name="res_id" ref="group_all_employees"/>
|
||||
<field name="body"><![CDATA[<p>Thanks! Could you please remind me where is Christine's office, if I may ask? I'm new here!</p>]]></field>
|
||||
<field name="parent_id" ref="message_blogpost0"/>
|
||||
<field name="type">comment</field>
|
||||
<field name="subtype_id" ref="mt_comment"/>
|
||||
<field name="author_id" ref="base.partner_demo"/>
|
||||
<record id="base.res_partner_3" model="res.partner">
|
||||
<field name="notification_email_send">none</field>
|
||||
</record>
|
||||
<!-- This one is starred for having mailboxes with demo data -->
|
||||
<record id="message_blogpost0_comment2" model="mail.message">
|
||||
<field name="model">mail.group</field>
|
||||
<field name="res_id" ref="group_all_employees"/>
|
||||
<field name="body"><![CDATA[<p>Building B3, second floor on the right :-).</p>]]></field>
|
||||
<field name="parent_id" ref="message_blogpost0"/>
|
||||
<field name="type">comment</field>
|
||||
<field name="subtype_id" ref="mt_comment"/>
|
||||
<field name="author_id" ref="base.partner_root"/>
|
||||
<field name="favorite_user_ids" eval="[(6, 0, [ref('base.user_root'), ref('base.user_demo')])]"/>
|
||||
<record id="base.res_partner_4" model="res.partner">
|
||||
<field name="notification_email_send">none</field>
|
||||
</record>
|
||||
<record id="message_blogpost0_comment3" model="mail.message">
|
||||
<field name="model">mail.group</field>
|
||||
<field name="res_id" ref="group_all_employees"/>
|
||||
<field name="body"><![CDATA[<p>Many thanks. Actually that's good news, next year I'll have to buy a new fridge, I think I will pay it with the eco-vouchers!</p>]]></field>
|
||||
<field name="parent_id" ref="message_blogpost0"/>
|
||||
<field name="type">comment</field>
|
||||
<field name="subtype_id" ref="mt_comment"/>
|
||||
<field name="author_id" ref="base.partner_demo"/>
|
||||
<record id="base.res_partner_5" model="res.partner">
|
||||
<field name="notification_email_send">none</field>
|
||||
</record>
|
||||
<record id="base.res_partner_6" model="res.partner">
|
||||
<field name="notification_email_send">none</field>
|
||||
</record>
|
||||
<record id="base.res_partner_7" model="res.partner">
|
||||
<field name="notification_email_send">none</field>
|
||||
</record>
|
||||
<record id="base.res_partner_8" model="res.partner">
|
||||
<field name="notification_email_send">none</field>
|
||||
</record>
|
||||
<record id="base.res_partner_9" model="res.partner">
|
||||
<field name="notification_email_send">none</field>
|
||||
</record>
|
||||
<record id="base.res_partner_10" model="res.partner">
|
||||
<field name="notification_email_send">none</field>
|
||||
</record>
|
||||
<record id="base.res_partner_11" model="res.partner">
|
||||
<field name="notification_email_send">none</field>
|
||||
</record>
|
||||
<record id="base.res_partner_12" model="res.partner">
|
||||
<field name="notification_email_send">none</field>
|
||||
</record>
|
||||
<record id="base.res_partner_13" model="res.partner">
|
||||
<field name="notification_email_send">none</field>
|
||||
</record>
|
||||
<record id="base.res_partner_14" model="res.partner">
|
||||
<field name="notification_email_send">none</field>
|
||||
</record>
|
||||
<record id="base.res_partner_15" model="res.partner">
|
||||
<field name="notification_email_send">none</field>
|
||||
</record>
|
||||
<record id="base.res_partner_16" model="res.partner">
|
||||
<field name="notification_email_send">none</field>
|
||||
</record>
|
||||
<record id="base.res_partner_17" model="res.partner">
|
||||
<field name="notification_email_send">none</field>
|
||||
</record>
|
||||
<record id="base.res_partner_18" model="res.partner">
|
||||
<field name="notification_email_send">none</field>
|
||||
</record>
|
||||
<record id="base.res_partner_19" model="res.partner">
|
||||
<field name="notification_email_send">none</field>
|
||||
</record>
|
||||
<record id="base.res_partner_20" model="res.partner">
|
||||
<field name="notification_email_send">none</field>
|
||||
</record>
|
||||
<record id="base.res_partner_21" model="res.partner">
|
||||
<field name="notification_email_send">none</field>
|
||||
</record>
|
||||
<record id="base.res_partner_22" model="res.partner">
|
||||
<field name="notification_email_send">none</field>
|
||||
</record>
|
||||
<record id="base.res_partner_23" model="res.partner">
|
||||
<field name="notification_email_send">none</field>
|
||||
</record>
|
||||
|
||||
<!-- Demo user and admin conversation -->
|
||||
<record id="message_discussion" model="mail.message">
|
||||
<field name="body">Hello Demo User! I was wondering whether you had some issues with our secret task about putting cats everywhere in OpenERP.</field>
|
||||
<!-- Discussion: attachments and spec [DEMO: search on has_attachments -->
|
||||
<record id="msg_discus6_attach1" model="ir.attachment">
|
||||
<field name="datas">bWlncmF0aW9uIHRlc3Q=</field>
|
||||
<field name="datas_fname">RedHat_spec.doc</field>
|
||||
<field name="name">RedHat_spec.doc</field>
|
||||
</record>
|
||||
<record id="msg_discus6_attach2" model="ir.attachment">
|
||||
<field name="datas">bWlncmF0aW9uIHRlc3Q=</field>
|
||||
<field name="datas_fname">RedHat_spec_draft_v3.doc</field>
|
||||
<field name="name">RedHat_spec_draft_v3.doc</field>
|
||||
</record>
|
||||
<record id="msg_discus6" model="mail.message">
|
||||
<field name="subject">RedHat server updated spec</field>
|
||||
<field name="body"><![CDATA[<p>Hello Demo,</p>
|
||||
<p>We have a lot of inquiries about our now solution based on RedHat servers. However I do not have the updated specification ready at hand.</p>
|
||||
<p>Could you please send me the last version of the file asap?</p>
|
||||
<p>Thanks,</p>]]></field>
|
||||
<field name="type">comment</field>
|
||||
<field name="subtype_id" ref="mt_comment"/>
|
||||
<field name="author_id" ref="base.partner_root"/>
|
||||
<field name="partner_ids" eval="[(6, 0, [ref('base.partner_demo')])]"/>
|
||||
<field name="date" eval="(DateTime.today() - timedelta(days=1)).strftime('%Y-%m-%d %H:%M')"/>
|
||||
</record>
|
||||
<record id="message_discussion_answer1" model="mail.message">
|
||||
<field name="body">No specific issues, I think everything is clear.</field>
|
||||
<field name="parent_id" ref="message_discussion"/>
|
||||
<record id="msg_discus6_1" model="mail.message">
|
||||
<field name="body"><![CDATA[<p>Sure, here it is. Have a nice day!</p>]]></field>
|
||||
<field name="type">comment</field>
|
||||
<field name="subtype_id" ref="mt_comment"/>
|
||||
<field name="parent_id" ref="msg_discus6"/>
|
||||
<field name="author_id" ref="base.partner_demo"/>
|
||||
<field name="partner_ids" eval="[(6, 0, [ref('base.partner_root')])]"/>
|
||||
<field name="attachment_ids" eval="[(6, 0, [ref('msg_discus6_attach1')])]"/>
|
||||
<field name="date" eval="(DateTime.today() - timedelta(hours=3)).strftime('%Y-%m-%d %H:%M')"/>
|
||||
</record>
|
||||
<record id="message_discussion_answer2" model="mail.message">
|
||||
<field name="body">Ow, just to be sure... we were talking about lolcats, right ?</field>
|
||||
<field name="parent_id" ref="message_discussion"/>
|
||||
<record id="msg_discus6_2" model="mail.message">
|
||||
<field name="body"><![CDATA[<p>I just found a more recent draft of the spec. Jon did some cleaning in the specifications. Could you merge the two documents to have an updated one?</p><p>When it's done, put it on the internal document management system.</p><p>Thanks,</p>]]></field>
|
||||
<field name="type">comment</field>
|
||||
<field name="subtype_id" ref="mt_comment"/>
|
||||
<field name="parent_id" ref="msg_discus6"/>
|
||||
<field name="author_id" ref="base.partner_demo"/>
|
||||
<field name="partner_ids" eval="[(6, 0, [ref('base.partner_root')])]"/>
|
||||
<field name="attachment_ids" eval="[(6, 0, [ref('msg_discus6_attach2')])]"/>
|
||||
<field name="date" eval="(DateTime.today() - timedelta(hours=3)).strftime('%Y-%m-%d %H:%M')"/>
|
||||
</record>
|
||||
<record id="message_discussion_answer3" model="mail.message">
|
||||
<field name="body">Absolutely!</field>
|
||||
<field name="parent_id" ref="message_discussion"/>
|
||||
|
||||
<!-- Thread: 1 incoming email -->
|
||||
<record id="msg_discus5" model="mail.message">
|
||||
<field name="subject">Plan to install backup servers</field>
|
||||
<field name="body"><![CDATA[<p>Hello,</p>
|
||||
<p>We need to deploy new backup servers, with the following requirements:</p>
|
||||
<ul>
|
||||
<li>daily incremental backups, with an history of 15 days,</li>
|
||||
<li>45 servers should be backuped between 1am and 3am when our offices are closed,</li>
|
||||
<li>two redundant servers,</li>
|
||||
<li>total capacity of 200Gb.</li>
|
||||
</ul>
|
||||
<p>
|
||||
Do you have a simple solution with servers running on Redhat Linux?
|
||||
</p>
|
||||
<p>Best regards,</p>
|
||||
]]></field>
|
||||
<field name="type">email</field>
|
||||
<field name="subtype_id" ref="mt_comment"/>
|
||||
<field name="email_from">virginie@agrolait.fr</field>
|
||||
<field name="author_id" eval="False"/>
|
||||
<field name="partner_ids" eval="[(6, 0, [ref('base.partner_demo'), ref('base.partner_root')])]"/>
|
||||
<field name="date" eval="(DateTime.today() - timedelta(days=2)).strftime('%Y-%m-%d %H:%M')"/>
|
||||
</record>
|
||||
|
||||
<!-- Admin and Demo with attachments -->
|
||||
<record id="msg_discus4_attach1" model="ir.attachment">
|
||||
<field name="datas">bWlncmF0aW9uIHRlc3Q=</field>
|
||||
<field name="datas_fname">catalog.doc</field>
|
||||
<field name="name">catalog.doc</field>
|
||||
</record>
|
||||
<record id="msg_discus4_attach2" model="ir.attachment">
|
||||
<field name="datas_fname">activity_graph_2012.jpg</field>
|
||||
<field name="name">activity_graph_2012</field>
|
||||
<field name="datas">
|
||||
/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8SEhEP
|
||||
ERETFhwXExQaFRERGCEYGh0dHx8fExciJCIeJBweHx7/2wBDAQUFBQcGBw4ICA4eFBEUHh4eHh4e
|
||||
Hh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh7/wAARCABQAGQDAREA
|
||||
AhEBAxEB/8QAHAABAAIDAQEBAAAAAAAAAAAABgUHAAMEAgEI/8QATBAAAQIEAQYHCA8GBwAAAAAA
|
||||
AgMEAAEFBhIHERMis7QUMjQ2QnN0IzE3UnJ1ssIVFhchNVRiY3GCkpOxw9IkJiczQVFDVWGDosHi
|
||||
/8QAGwEAAgMBAQEAAAAAAAAAAAAABQYABAcCAwH/xABAEQABAgMDCAgDBQcFAAAAAAAAAgMEBQYB
|
||||
EjUHFDIzNEJy8BMiMVJxssLSESE2QXORksEVIySBgqKzobHD0eL/2gAMAwEAAhEDEQA/AP1mLpMl
|
||||
VgTTWM0VNGeAOlgx/gcLyIVa9A9jdwhT4q7+7jvMXjjpLDOET+Kr/dxMxePvSWHFUlHq1McpU8VE
|
||||
HhoqC3WJHGAKYNQ/ojtEE8fL4YUbZRUJKptXtCSQkOFGRiusefSZwmZ4NfUwDHvmJL5uFvfKmAVn
|
||||
9NMBXxzworAZBp0D8TxAXl9cImauEv2HK3bZTBNA3VUoa2jRQkp+zLBjXkYabocTR6bB8vBEzQl8
|
||||
8IoZTQQMlajQl19CpLOLVbMS+OeDocQA/wCYS8f3pmJL50PE8oarkJN6hRUGoKOcaajZYzMNJ3Do
|
||||
eJx/LiZoS+eE0MoxOFDXqNGkhN2iphSbLYxRDBpA4nTzH9uJmhL424RP4qv93FXMXj70lhnCJ/FV
|
||||
/u4mYvE6SwxiuDpElUJywyUNOf0gUxn6MeDram1XbToMySBzcFfTV0EiDQ8G0xamkNH/AMB9iLyF
|
||||
rQwi4ch26nziiSeBNtSFDBuayEhTWPH4nT8uJna2+us83+o2taCxLYWNa2qY4U45tUzP7EE0aBCU
|
||||
xR6EMxRCGYohDMUQhmKIQzFEIZiiEMxRCA6/brcW1JnJCmpPFHMjmUzc6GQCGHP0Dz8eAU4niJYt
|
||||
pC0X74Slsrz2+qxegTFu8iX7a625xIvW2lBHYRk6DTay9q0n6BGPDUZywnh4iAYPTOLkKhDjHXJa
|
||||
bDsm31GugNqsYaPQz7uesH+se+aMrJY4tBPsGyTFkiyaBIEUAAA8mLRwdUQh814hDNeIQ+xCEa+q
|
||||
1OYOWzR48RQWclgQAz1jnHaELVYea30IVcUSOvHB6AyqXgjp6tT2TdQH7FssumawZkVME5B3/LOK
|
||||
81WuXwK4s5l7jMbG5qebdrtUqOT064vwOVQGTmUpAmWhxJrGAauLP0P7x4yCJXMYZl1fas950hEv
|
||||
UtKNwF3dUnlVt2jvn+h4SZVBM9EMxDua4B6kKtet9DHQqEd/2ByjXlvQL6186ZaFu8iX7a625wcj
|
||||
dbaAUdh6ofLqz24NghF6B1ZFkxF44IR3X6a2rTajrrkLxzLuI6IsJTzHPjZs3eAo7QytaL5XXFNp
|
||||
c6HfJuOCwBLEq9WqFx1xnUHvCkEQQWQDQCGgxmvqZ+n7wBF+Oh0MJRcBEtilvrXfJq+iVC2nJorK
|
||||
InIk8xongOWuEeECi+/ZYsszJa0Qq7UH2xjWVtGmKLrKLmSGczWPEZxzFWWWPLssO4K2+wi0OZRO
|
||||
dFM6+n76EXYXZVg2O25s92pXKs6ygVmmPH2lZoAoaCOgEcGZXBx5d+EKSzSIjY+IZXoIHiYwbDEE
|
||||
y4jTWQDrnTcPm57t04ZqswJfAK1O42TNleCRTy328rQNonD4YN1brnvD0BGs8yqN19U3qAeUPEoX
|
||||
j9heobDn+e+W1bvIl+2utucFo3W2gdHYGbrJYGFV0DpdqZ1YO6IngPkqcHJGhC7euC5y4tDHUEln
|
||||
qLOLSo66ypGsqwQMz8YppynOcdv6ay0xqUBq7/CZb/Xh6C8EWNhWCn8RQP8AB8soFhwrfJnLFd9x
|
||||
dkZbR1BeZaLYvSfWPc98UX4H7sONc/5iG2CKMFr7AhNdkWV0b1+2O00WzxdFGfBcQAeopI3UgPP9
|
||||
TPCVUcwimKgZh23OosapBCsLkq1qR8/h6BJlC51Uvr2W+pw/wuyrEiO25s5bK8KVe6lXbxl9NYtG
|
||||
8a/MaLOcMY53COec8bh81vdsEPNXYEvgEmnMcs53yYs7wRq+W+3laBlE4dDBurdc94egI1nmVRuv
|
||||
qm9QEyh4lC8fsL9DYc/z3y2rd5Ev211tzgtG620Do7A3dnIal53DdU4PU/2gie7OILIEfabQsX+X
|
||||
IegMR/TWXIXUoDl3+Ey3+vD0F4JMbCsFv4igfYAgWHCuMnUxTuy4jVLCINWWv/uOoKTLRQAJPrnO
|
||||
e+Jr30J2quYHiAlENfH88EVJdr0F6a7Ksrd1yq0Pop+/SjPao+q4fn7VjhTuBK8LfIKcoQ/vVS5/
|
||||
Pst9TjTIXZViFHbc2ctleFKvdSrt4y+msWjeNfmNFnOGMc7hHPOdtxebHu2CHmrsCXwCTTmOWc75
|
||||
LWWP8I1ZfLfbytA2isPhg5Vuue8PQE6zzKo3X1TeoB5Q8SheP2F6hsOf575bVu8iX7a625wWjdba
|
||||
B0dgbu/kNS87huqcH6f7QRPdQc+R6tu6lSVWDtBqAU5FFFEwH3z1MGt9iF2Rzdc4vvLQBKSnr03Y
|
||||
X0iNA1325bsb6ojp0uCLcFkiMz94A1F4a1RbENL1reXcLkyfZhI1Djy7iBhR6zRqvpfY162c6HDj
|
||||
0c5TwQIhI5iKs/crvjQ5DuIQha0aZVwgCyN3gYAYGhT9Q+1Lx8ygW9HJF89wpUPii+e+JmogOSGn
|
||||
ag/ykNsESltmY4P0LFV6x/jDDrlVofRT9+lClVH1XD8/asP07gSvC3yCbKDh9tVKwcXTst9TjTIX
|
||||
ZViFHbc2aLKw+6jXM2DDoD20ZdTOLRvGvzmjTnDWOdwjXmf213F4nsW926cPVW4GvgEinsbJa0cP
|
||||
uRnxcWke7yrAyidghg5Vuuf8PQFKzzKo3X1TeoCZQ8SheP2F6hsOf575bVu8iX7a625wWjdbaB0d
|
||||
gbuvkVS87huqcH6f7QRPdQFsitXY0528YOlCTWfqIg2zjx8wnGbUbGsotXDL01i1k4l0SqWPRNiO
|
||||
pfOjLXrPx8hL8yGassET956FgvKFqPyf8hIZHfhSudS1/FaFnJ9oP/0G71T2sA2rvXLetuWyRSBF
|
||||
8CILBg42AzMPTgplHmr7dyAs0Ll78V/+DK6WmrzNWMwSdWu/5Fj9v4Iaf1SG1GGildmh+D9BqqvW
|
||||
P8YLk+bO3FuJomZm0WZILTwf4nDU4Rp/GsxNTsKZV8k/L8L4To+OYipG90O5fR/YM8oXOql9ey31
|
||||
ONWhdlWJ0dtzZzWT4Uq51J7eMvpnFo3jX5zSJzhrHO4RjznXcXmx7t04eauwJfAI1PY2S9ol/CM5
|
||||
/OPd5VgZROwQwcqzXP8Ah6AnWeZVG6+qb1ATKHiULx+wvUNhz/PfLbt/ka/bXW3OC8ZrbQOjsDV2
|
||||
chqXncN1Tg7T/aCJ7s5XOT7nXQ/OP5KkYrTOLtnWS/6Qf41/7NibLX8Ip+QHrxpNZYIn7z0LEPKH
|
||||
qPyes7sjvwtXOqa/itCzk+1b/ij9TeKp7WP5gi4ecqH0fmHHGUzEEcHrWY3Tf1xBcC/8bhY7XwPs
|
||||
eqQ2wQ/UlqoXg/Qeqn03+P1lb0L4ca+eWW9BGRMfUTfGUMl2Axn3i/8AGgZ5XpqA5FwkaiSwJIqJ
|
||||
GHRMFsca9OYl2DkrrzOnZ70CzVby4ZpbzNvXSizz2HNkfNVS7HSqpmqopTsahl0j00Z/Q7jj8U+t
|
||||
Zp6nlvSCCWvuI8hw3FUAp111XSAZ8LQdNk8HjmsH6Icq3mjENLLIZemtAhyeaswNQssL31iayvBI
|
||||
p5b7eVo+0Th8MN9W657w9ARrPMqjdfVN6gHlDxKF4/YXqGw5/nvlt2/yNftrrbnBWL1toIsD1zUy
|
||||
puAepMmILiu9ByB6cA7yIB6kE5VHIhdMoTKFXFN3EA+2bPuOm1ynPV6egYtnM1jwOg72Aw9eEKTS
|
||||
B2BjERC1/I4o+DVJZI5AP6a13/J/0S9+0S4Lhcpm1paaWEA47oP6aT9cNM9SmZS3NW+/fAVVSB6b
|
||||
JsQyvnrnbYVKrtvun7h1SgPhKaIJiDoOhj/XAemZZ+yEL6demaLOZi3G2otQG6paFzOquLkacgCY
|
||||
5s4E6Cf949KrlypzEodh17l3n8RDlUnegqiZmji+oi//AKoX7xSDGtJ2M3oPsR3YQAJnwoOgeP8A
|
||||
6hgkkS3L22W3NwYpz/GrXc3wpS7Oudu+RXUpyE003qLif7SHQXA/UhLRIHUTRuMv9S/f/H4njR6H
|
||||
JNK4mGf01rWv8yPgTl90ivV6eFrSQDuIJ67kP6HjhymzqI2WOwbemv3oAdRSZ+YQ622973/E1WDQ
|
||||
6/blTXeuaYBaRsCAADoO/jzwu05KrZWta316Y3JdsslUNB76EIR+RBw3LatyVSrk9QpaAJzWUPWd
|
||||
B0zi1VkNbObGbGF6HyE6yRv2TuGj7/UQu+IaBTq7TrIOhHSBNY9PPGLoOmsZ+vBKQOIl8My05uDb
|
||||
O1WR63FN74OlZFz8JXMmTfQLGZAPDeJjOFmZyeKi5hnC3upfvguj2XpIuNcinL/TXLn9/vLUpDNw
|
||||
kxzLdwM111ZhJXPm0ixn3/rQxvK6Vd4vn//Z
|
||||
</field>
|
||||
</record>
|
||||
<record id="msg_discus4" model="mail.message">
|
||||
<field name="body"><![CDATA[<p>Hi Demo,</p>
|
||||
<p>The next version of our products catalog is scheduled for next month. Our product team send me their updated document holding the prices and costs, and I updated our catalog.</p>
|
||||
<p>You will find it in attachment, as well as a comparative benchmark of the different solutions currently existing on the market.<br />Have a nice reading!<br />
|
||||
Sincerely,</p>]]></field>
|
||||
<field name="type">comment</field>
|
||||
<field name="subtype_id" ref="mt_comment"/>
|
||||
<field name="author_id" ref="base.partner_root"/>
|
||||
<field name="partner_ids" eval="[(6, 0, [ref('base.partner_demo')])]"/>
|
||||
<field name="attachment_ids" eval="[(6, 0, [ref('msg_discus4_attach1'), ref('msg_discus4_attach2')])]"/>
|
||||
<field name="date" eval="(DateTime.today() - timedelta(days=1)).strftime('%Y-%m-%d %H:%M')"/>
|
||||
</record>
|
||||
<record id="msg_discuss4_1" model="mail.message">
|
||||
<field name="body"><![CDATA[<p>Thank you!<br/>Could you send me the updated pricelists as negotiated at the beginning of this year?</p>
|
||||
<p>Sincerely,</p>]]></field>
|
||||
<field name="type">comment</field>
|
||||
<field name="subtype_id" ref="mt_comment"/>
|
||||
<field name="parent_id" ref="msg_discus4"/>
|
||||
<field name="author_id" ref="base.partner_demo"/>
|
||||
<field name="partner_ids" eval="[(6, 0, [ref('base.partner_root'), ref('base.partner_demo')])]"/>
|
||||
<field name="date" eval="(DateTime.today() - timedelta(hours=1, minutes=30)).strftime('%Y-%m-%d %H:%M')"/>
|
||||
</record>
|
||||
|
||||
<!-- Thread: Demo (network admin) and Admin -->
|
||||
<record id="msg_discus3" model="mail.message">
|
||||
<field name="body"><![CDATA[<p>Hello,</p><p>I have a friend working at Epic Technologies. He told me they plan to upgrade their backup servers within the next 3 months.</p><p>I think that someone should contact them and check if there is an opportunity.</p>]]></field>
|
||||
<field name="type">comment</field>
|
||||
<field name="subtype_id" ref="mt_comment"/>
|
||||
<field name="author_id" ref="base.partner_demo"/>
|
||||
<field name="partner_ids" eval="[(6, 0, [ref('base.partner_root')])]"/>
|
||||
<field name="date" eval="(DateTime.today() - timedelta(hours=3)).strftime('%Y-%m-%d %H:%M')"/>
|
||||
</record>
|
||||
<record id="msg_discus3_1" model="mail.message">
|
||||
<field name="body"><![CDATA[Contact Chris: +1 (650) 307-6736.]]></field>
|
||||
<field name="parent_id" ref="msg_discus3"/>
|
||||
<field name="type">comment</field>
|
||||
<field name="subtype_id" ref="mt_comment"/>
|
||||
<field name="author_id" ref="base.partner_demo"/>
|
||||
<field name="notified_partner_ids" eval="[(6, 0, [ref('base.partner_root')])]"/>
|
||||
<field name="date" eval="(DateTime.today() - timedelta(hours=1)).strftime('%Y-%m-%d %H:%M')"/>
|
||||
</record>
|
||||
|
||||
<!-- Thread: Epic Technologies and Admin as salesman discuss about a meeting [DEMO: see context, mark thread as done] -->
|
||||
<record id="msg_discus2" model="mail.message">
|
||||
<field name="subject">Information meeting</field>
|
||||
<field name="body"><![CDATA[<p>Hello,</p><p>Epic Technologies is a small company specialized in software managing huge volume of data. Having an efficient and reliable backup system is very important for us, and critical for our customers. I eared you have some interesting solutions to manage our backups. Could we meet each other as soon as possible to discuss our need? Here is a first list of requirements:</p>
|
||||
<ul>
|
||||
<li>about 25 backup servers, running on Redhat Linux</li>
|
||||
<li>minimum 200Gb of storage per server</li>
|
||||
<li>setup a VPN between all our servers in New York and Chicago</li>
|
||||
</ul>
|
||||
<p>Thanks,</p>
|
||||
]]></field>
|
||||
<field name="type">comment</field>
|
||||
<field name="subtype_id" ref="mt_comment"/>
|
||||
<field name="author_id" ref="base.res_partner_5"/>
|
||||
<field name="partner_ids" eval="[(6, 0, [ref('base.partner_root')])]"/>
|
||||
<field name="date" eval="(DateTime.today() - timedelta(days=1)).strftime('%Y-%m-%d %H:%M')"/>
|
||||
</record>
|
||||
<record id="msg_discus2_1" model="mail.message">
|
||||
<field name="subject">RE: Information meeting</field>
|
||||
<field name="body"><![CDATA[<p>Hello Epic!</p>
|
||||
<p>I am glad you are interested in our products. Indeed, we are have several backup solutions that should meet your requirements. In order to prepare a detailed offer, we will have to discuss several technical points about your needs and the context of your data management.</p>
|
||||
<p>I propose to have a meeting tomorrow at 2 PM. Does it seem suitable for you ?<br />Best regards,</p>]]></field>
|
||||
<field name="parent_id" ref="msg_discus2"/>
|
||||
<field name="type">comment</field>
|
||||
<field name="subtype_id" ref="mt_comment"/>
|
||||
<field name="author_id" ref="base.partner_root"/>
|
||||
<field name="partner_ids" eval="[(6, 0, [ref('base.res_partner_5')])]"/>
|
||||
<field name="date" eval="(DateTime.today() - timedelta(hours=1)).strftime('%Y-%m-%d %H:%M')"/>
|
||||
</record>
|
||||
<record id="msg_discus2_2" model="mail.message">
|
||||
<field name="subject">RE: Information meeting</field>
|
||||
<field name="body"><![CDATA[<p>It is not possible for me to come tomorrow at 2 PM. Maybe at 4 PM?</p>]]></field>
|
||||
<field name="parent_id" ref="msg_discus2"/>
|
||||
<field name="type">comment</field>
|
||||
<field name="subtype_id" ref="mt_comment"/>
|
||||
<field name="author_id" ref="base.res_partner_5"/>
|
||||
<field name="date" eval="(DateTime.today() - timedelta(minutes=35)).strftime('%Y-%m-%d %H:%M')"/>
|
||||
</record>
|
||||
<record id="msg_discus2_3" model="mail.message">
|
||||
<field name="subject">RE: Information meeting</field>
|
||||
<field name="body"><![CDATA[<p>4 PM is fine! See you tomorrow!<br />Best regards,</p>]]></field>
|
||||
<field name="parent_id" ref="msg_discus2"/>
|
||||
<field name="type">comment</field>
|
||||
<field name="subtype_id" ref="mt_comment"/>
|
||||
<field name="author_id" ref="base.partner_root"/>
|
||||
<field name="partner_ids" eval="[(6, 0, [ref('base.res_partner_5')])]"/>
|
||||
<field name="date" eval="(DateTime.today() - timedelta(minutes=30)).strftime('%Y-%m-%d %H:%M')"/>
|
||||
</record>
|
||||
<record id="msg_discus2_4" model="mail.message">
|
||||
<field name="subject">RE: Information meeting</field>
|
||||
<field name="body"><![CDATA[<p>Ok! See you tomorrow.</p>]]></field>
|
||||
<field name="parent_id" ref="msg_discus2"/>
|
||||
<field name="type">comment</field>
|
||||
<field name="subtype_id" ref="mt_comment"/>
|
||||
<field name="author_id" ref="base.res_partner_5"/>
|
||||
<field name="partner_ids" eval="[(6, 0, [ref('base.partner_root')])]"/>
|
||||
<field name="date" eval="(DateTime.today() - timedelta(minutes=10)).strftime('%Y-%m-%d %H:%M')"/>
|
||||
</record>
|
||||
|
||||
<!-- Short thread: Admin ask, Agrolait answer [DEMO: mark thread as done] -->
|
||||
<record id="msg_discus1" model="mail.message">
|
||||
<field name="subject">Feedback about our On Site Assistance</field>
|
||||
<field name="body"><![CDATA[<p>Hi Virginie,</p><p>I writing to you about our <i>On Site Assistance Service</i> that we delivered to Agrolait last week. Do you have any feedback or remark about our service? I noticed you requested new IP phones. Will it be used for new employees, or did you have any issue with the ones we provided?<br />Best regards,</p>]]></field>
|
||||
<field name="type">comment</field>
|
||||
<field name="subtype_id" ref="mt_comment"/>
|
||||
<field name="author_id" ref="base.partner_root"/>
|
||||
<field name="partner_ids" eval="[(6, 0, [ref('base.res_partner_2')])]"/>
|
||||
<field name="date" eval="(DateTime.today() - timedelta(days=2)).strftime('%Y-%m-%d %H:%M')"/>
|
||||
</record>
|
||||
<record id="msg_discus1_1" model="mail.message">
|
||||
<field name="subject">RE: Feedback about our On Site Assistance</field>
|
||||
<field name="body"><![CDATA[<p>Hello Administrator,</p><p>Glad to hearing from you! Everything is perfect, thanks for asking. Concerning the order of 2 IP phones, I ordered them for new employees. We are satisfied with the products of <i>YourCompany</i>, and we plan to fit out each new employee with one of your phone this year.<br />Regards,</p>]]></field>
|
||||
<field name="parent_id" ref="msg_discus1"/>
|
||||
<field name="type">comment</field>
|
||||
<field name="subtype_id" ref="mt_comment"/>
|
||||
<field name="author_id" ref="base.res_partner_2"/>
|
||||
<field name="partner_ids" eval="[(6, 0, [ref('base.partner_root')])]"/>
|
||||
<field name="date" eval="(DateTime.today() - timedelta(minutes=5)).strftime('%Y-%m-%d %H:%M')"/>
|
||||
</record>
|
||||
|
||||
<!-- Header only: message from res_partner_1 [DEMO: mark as done] -->
|
||||
<record id="msg_discus0" model="mail.message">
|
||||
<field name="subject">FWD: Meeting with Demo </field>
|
||||
<field name="body"><![CDATA[<p>Hello Administrator,</p><p>A small email to inform you that we will have a meeting with Mr Demo next Tuesday. Everything is under control!<br />Regards,</p>]]></field>
|
||||
<field name="type">comment</field>
|
||||
<field name="subtype_id" ref="mt_comment"/>
|
||||
<field name="author_id" ref="base.res_partner_1"/>
|
||||
<field name="partner_ids" eval="[(6, 0, [ref('base.partner_root')])]"/>
|
||||
<field name="date" eval="(DateTime.today() - timedelta(minutes=1)).strftime('%Y-%m-%d %H:%M')"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
|
|
|
@ -2,10 +2,6 @@
|
|||
<openerp>
|
||||
<data noupdate="1">
|
||||
|
||||
<record model="mail.group" id="group_sales">
|
||||
<field name="name">Sales</field>
|
||||
<field name="description">Discussion about best sales practices and deals.</field>
|
||||
</record>
|
||||
<record model="mail.group" id="group_all_employees">
|
||||
<field name="name">Whole Company</field>
|
||||
<field name="group_ids" eval="[(4, ref('base.group_user'))]"/>
|
||||
|
@ -19,9 +15,9 @@
|
|||
<field name="type">notification</field>
|
||||
<field name="subtype_id" ref="mail.mt_comment"/>
|
||||
<field name="subject">Welcome to OpenERP!</field>
|
||||
<field name="body"><![CDATA[<p>Your homepage is a summary of messages you received and key information about documents you follow.</p><p>
|
||||
The top menu bar contains all applications you installed. You can use the <i>Settings</i> menu to install more applications, activate others features or give access to new users.</p><p>
|
||||
To setup your preferences (name, email signature, avatar), click on the top right corner.</p>]]></field>
|
||||
<field name="body"><![CDATA[<p>Your homepage is a summary of messages you received and key information about documents you follow.</p>
|
||||
<p>The top menu bar contains all applications you installed. You can use the <i>Settings</i> menu to install more applications, activate others features or give access to new users.</p>
|
||||
<p>To setup your preferences (name, email signature, avatar), click on the top right corner.</p>]]></field>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -0,0 +1,197 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data noupdate="1">
|
||||
|
||||
<!-- Discussion groups, done in 2 steps to remove creator from followers -->
|
||||
<record model="mail.group" id="group_best_sales_practices">
|
||||
<field name="name">Best Sales Practices</field>
|
||||
<field name="description">Discussion about best sales practices and deals.</field>
|
||||
</record>
|
||||
<record model="mail.group" id="group_best_sales_practices">
|
||||
<field name="message_follower_ids" eval="[(6, 0, [ref('base.partner_demo')])]"/>
|
||||
</record>
|
||||
<record model="mail.group" id="group_board">
|
||||
<field name="name">Board meetings</field>
|
||||
<field name="description">Board meetings, budgets, strategic plans</field>
|
||||
</record>
|
||||
<record model="mail.group" id="group_board">
|
||||
<field name="message_follower_ids" eval="[(6, 0, [])]"/>
|
||||
</record>
|
||||
<record model="mail.group" id="group_rd">
|
||||
<field name="name">R&D</field>
|
||||
<field name="description">Research and development discussion group</field>
|
||||
</record>
|
||||
<record model="mail.group" id="group_hr_policies">
|
||||
<field name="name">HR Policies</field>
|
||||
<field name="description">Company cars, holidays and other advantages</field>
|
||||
</record>
|
||||
<record model="mail.group" id="group_rd">
|
||||
<field name="message_follower_ids" eval="[(6, 0, [])]"/>
|
||||
</record>
|
||||
<record model="mail.group" id="group_support">
|
||||
<field name="name">Support</field>
|
||||
<field name="description">Support team</field>
|
||||
</record>
|
||||
|
||||
<!-- Best sales practices messages -->
|
||||
<record id="msg_group_1_1" model="mail.message">
|
||||
<field name="model">mail.group</field>
|
||||
<field name="res_id" ref="mail.group_best_sales_practices"/>
|
||||
<field name="body"><![CDATA[<p>Selling a training session and selling the products after the training session is more efficient than directly selling a pack with the training session and the products.</p>]]></field>
|
||||
<field name="type">comment</field>
|
||||
<field name="subtype_id" ref="mt_comment"/>
|
||||
<field name="author_id" ref="base.partner_demo"/>
|
||||
<field name="date" eval="(DateTime.today() - timedelta(days=5)).strftime('%Y-%m-%d %H:%M')"/>
|
||||
</record>
|
||||
<record id="msg_group_1_2" model="mail.message">
|
||||
<field name="model">mail.group</field>
|
||||
<field name="res_id" ref="mail.group_best_sales_practices"/>
|
||||
<field name="body"><![CDATA[<p>I noted I can not manage efficiently my pipeline when I have more than 50 opportunities in the qualification stage.</p><p>Any advice on this? How do you organize your activities with more than 50 opportunities?</p>]]></field>
|
||||
<field name="type">comment</field>
|
||||
<field name="subtype_id" ref="mt_comment"/>
|
||||
<field name="author_id" ref="base.partner_root"/>
|
||||
<field name="date" eval="(DateTime.today() - timedelta(days=4)).strftime('%Y-%m-%d %H:%M')"/>
|
||||
</record>
|
||||
<record id="msg_group_1_3" model="mail.message">
|
||||
<field name="model">mail.group</field>
|
||||
<field name="res_id" ref="mail.group_best_sales_practices"/>
|
||||
<field name="body"><![CDATA[<p>When I have too much opportunities in the pipe, I start communicating with prospects more by email than phonecalls.</p><p>I send an email to create a sense of emergency, like <i>"can I call you this week about our quote?"</i> and I call only those that answer this email.</p><p>You can use the email template feature of OpenERP to automate email composition.</p>]]></field>
|
||||
<field name="type">comment</field>
|
||||
<field name="parent_id" ref="msg_group_1_2"/>
|
||||
<field name="subtype_id" ref="mt_comment"/>
|
||||
<field name="author_id" ref="base.partner_demo"/>
|
||||
<field name="vote_user_ids" eval="[(6, 0, [ref('base.user_demo')])]"/>
|
||||
<field name="date" eval="(DateTime.today() - timedelta(days=3)).strftime('%Y-%m-%d %H:%M')"/>
|
||||
</record>
|
||||
<record id="msg_group_1_4" model="mail.message">
|
||||
<field name="model">mail.group</field>
|
||||
<field name="res_id" ref="mail.group_best_sales_practices"/>
|
||||
<field name="body"><![CDATA[<p>When you sell a tablet PC, don't forget to propose a docking station with it. I offer 20% on the docking stating (not the tablet) and I have a 70% success rate with this combo.</p>]]></field>
|
||||
<field name="type">comment</field>
|
||||
<field name="subtype_id" ref="mt_comment"/>
|
||||
<field name="author_id" ref="base.partner_demo"/>
|
||||
<field name="vote_user_ids" eval="[(6, 0, [ref('base.user_demo'), ref('base.user_root')])]"/>
|
||||
<field name="date" eval="(DateTime.today() - timedelta(days=2)).strftime('%Y-%m-%d %H:%M')"/>
|
||||
</record>
|
||||
|
||||
<!-- Pushed to all employees -->
|
||||
<record id="msg_empl_1" model="mail.message">
|
||||
<field name="model">mail.group</field>
|
||||
<field name="res_id" ref="mail.group_hr_policies"/>
|
||||
<field name="body"><![CDATA[<p>Your monthly meal vouchers arrived. You can get them at the HR's office.</p>]]></field>
|
||||
<field name="type">comment</field>
|
||||
<field name="author_id" ref="base.partner_demo"/>
|
||||
<field name="date" eval="(DateTime.today() - timedelta(hours=1)).strftime('%Y-%m-%d %H:%M')"/>
|
||||
</record>
|
||||
<record id="msg_empl_1_1" model="mail.message">
|
||||
<field name="model">mail.group</field>
|
||||
<field name="res_id" ref="group_hr_policies"/>
|
||||
<field name="body"><![CDATA[<p>Oh, I had forgotten. This month you also get 250 EUR of eco-vouchers if you have been in the company for more than a year.</p>]]></field>
|
||||
<field name="parent_id" ref="msg_empl_1"/>
|
||||
<field name="type">comment</field>
|
||||
<field name="author_id" ref="base.partner_demo"/>
|
||||
<field name="date" eval="(DateTime.today() - timedelta(minutes=57)).strftime('%Y-%m-%d %H:%M')"/>
|
||||
</record>
|
||||
<record id="msg_empl_1_2" model="mail.message">
|
||||
<field name="model">mail.group</field>
|
||||
<field name="res_id" ref="group_hr_policies"/>
|
||||
<field name="body"><![CDATA[<p>Thanks! Could you please remind me where is Christine's office, if I may ask? I'm new here!</p>]]></field>
|
||||
<field name="parent_id" ref="msg_empl_1"/>
|
||||
<field name="type">comment</field>
|
||||
<field name="author_id" ref="base.partner_root"/>
|
||||
<field name="date" eval="(DateTime.today() - timedelta(minutes=34)).strftime('%Y-%m-%d %H:%M')"/>
|
||||
</record>
|
||||
<record id="msg_empl_1_3" model="mail.message">
|
||||
<field name="model">mail.group</field>
|
||||
<field name="res_id" ref="group_hr_policies"/>
|
||||
<field name="body"><![CDATA[<p>Building B3, second floor on the right :-).</p>]]></field>
|
||||
<field name="parent_id" ref="msg_empl_1"/>
|
||||
<field name="type">comment</field>
|
||||
<field name="author_id" ref="base.partner_demo"/>
|
||||
<field name="date" eval="(DateTime.today() - timedelta(minutes=22)).strftime('%Y-%m-%d %H:%M')"/>
|
||||
</record>
|
||||
|
||||
<!-- Board messages -->
|
||||
<record id="msg_board_1" model="mail.message">
|
||||
<field name="model">mail.group</field>
|
||||
<field name="res_id" ref="mail.group_board"/>
|
||||
<field name="body"><![CDATA[
|
||||
<p>
|
||||
Dear Board Members,
|
||||
</p>
|
||||
<p>
|
||||
The main events of the month of October are:
|
||||
</p>
|
||||
<p>
|
||||
<b>Sales:</b>
|
||||
</p>
|
||||
<ul>
|
||||
<li>Invoicing is respectively of 442k€ for our European company (66% of the budget) and $404k for the U.S. office (75% of the budget). Despite these numbers that are far bellow our initial expectations, the growth of the month of October is 51% compared to last year.</li>
|
||||
<li>The month of September having been better than our initial forecasts, the consolidated yearly revenue is only of $20k bellow our forecast made during the board of September.</li>
|
||||
<li>The consolidated forecast for the end of the year is $6.749k, which is a growth of 76% compared to last year and an achievement of 87% of the budget.</li>
|
||||
<li>The recruitment of new resellers has been very good, especially in Europe, where we signed 30 new resellers this month.</li>
|
||||
</ul>
|
||||
<p>
|
||||
<b>Finance :</b>
|
||||
</p>
|
||||
<ul>
|
||||
<li>The profit and loss has been negatively impacted this month by revenues that are far beyond the budget and charges that are 15% above the budget. The main extra we had in our charges this month is due to the provisioning of the salaries for the holidays period, $50k.</li>
|
||||
<li>We also got the payment of our long awaited subsidies, the cash level has increased of 300K€ which gives a current balance of 963 K€ without including the straight loan of 350 K€.</li>
|
||||
<li>The aged customer balance has been similar to the one of the last month with a small decrease of the DSO. We have recruited a new accountant assistant for the credit collection. She is mostly doing phone calls for all invoices that are due since 30 days, so we should get improvements of the DSO in November. The sum of the invoicing on which we have a risk in the aged customer balance is 100K€.</li>
|
||||
</ul>
|
||||
<p>
|
||||
<b>Resellers and Customers:</b>
|
||||
</p>
|
||||
<ul>
|
||||
<li>The total number of resellers is 429, across 87 countries.</li>
|
||||
<li>The total number of installations of our software increased to 37K, against 33K for the month of September but we still did not reached the highest level we reached during this year (44K in march and may)</li>
|
||||
<li>We have passed the 10000th customer in production with 10271 customers at the end of October. The paying customer ratio is 6,6%.</li>
|
||||
</ul>
|
||||
<p>
|
||||
<b>Launch of the new release:</b>
|
||||
</p>
|
||||
<p>
|
||||
We are working actively on the new release which is scheduled for the end of November.
|
||||
</p>
|
||||
<ul>
|
||||
<li>We will publish the release note this week</li>
|
||||
<li>The whole sales team will be trained on the new version this Friday</li>
|
||||
<li>We will do a public announce to our resellers the 21th of November. We plan to show them: a description of the new features, the new distribution strategy, the new pricing and the communication plan.</li>
|
||||
</ul>
|
||||
<br/>
|
||||
<p>
|
||||
Nicolas, can you book a meeting room for our meeting of Friday 2pm?
|
||||
</p>
|
||||
<p>
|
||||
Regards.
|
||||
</p>
|
||||
]]></field>
|
||||
<field name="type">comment</field>
|
||||
<field name="parent_id" ref="msg_group_1_2"/>
|
||||
<field name="subtype_id" ref="mt_comment"/>
|
||||
<field name="author_id" ref="base.partner_demo"/>
|
||||
<field name="vote_user_ids" eval="[(6, 0, [ref('base.user_demo')])]"/>
|
||||
<field name="date" eval="(DateTime.today() - timedelta(days=3)).strftime('%Y-%m-%d %H:%M')"/>
|
||||
</record>
|
||||
|
||||
<!-- Whole Company messages -->
|
||||
<record id="msg_whole_1_1" model="mail.message">
|
||||
<field name="model">mail.group</field>
|
||||
<field name="res_id" ref="mail.group_all_employees"/>
|
||||
<field name="body"><![CDATA[
|
||||
<p>
|
||||
Great news!<br/>
|
||||
Our company has received the Deloitte Fast 50 award. We are the fastest
|
||||
growing company of the country, with a growth of 1549% over the past 5
|
||||
years. You can get more information <a href="http://www.openerp.com/node/1244/2012/10">on our blog</a>.
|
||||
</p>
|
||||
]]></field>
|
||||
<field name="type">comment</field>
|
||||
<field name="author_id" ref="base.partner_demo"/>
|
||||
<field name="date" eval="(DateTime.today() - timedelta(minutes=22)).strftime('%Y-%m-%d %H:%M')"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
|
|
@ -114,7 +114,7 @@ class mail_group(osv.Model):
|
|||
alias_id = mail_alias.create_unique_alias(cr, uid,
|
||||
# Using '+' allows using subaddressing for those who don't
|
||||
# have a catchall domain setup.
|
||||
{'alias_name': "group+"+vals['name']},
|
||||
{'alias_name': "group+" + vals['name']},
|
||||
model_name=self._name, context=context)
|
||||
vals['alias_id'] = alias_id
|
||||
|
||||
|
@ -133,6 +133,7 @@ class mail_group(osv.Model):
|
|||
'context': {'default_model': 'mail.group', 'default_res_id': mail_group_id, 'search_default_message_unread': True},
|
||||
'res_model': 'mail.message',
|
||||
'thread_level': 1,
|
||||
'header_description': vals.get('description'),
|
||||
}
|
||||
cobj = self.pool.get('ir.actions.client')
|
||||
newref = cobj.copy(cr, SUPERUSER_ID, ref[1], default={'params': str(params), 'name': vals['name']}, context=context)
|
||||
|
@ -160,6 +161,13 @@ class mail_group(osv.Model):
|
|||
result = super(mail_group, self).write(cr, uid, ids, vals, context=context)
|
||||
if vals.get('group_ids'):
|
||||
self._subscribe_users(cr, uid, ids, context=context)
|
||||
# if description is changed: update client action
|
||||
if vals.get('description'):
|
||||
cobj = self.pool.get('ir.actions.client')
|
||||
for action in [group.action for group in self.browse(cr, SUPERUSER_ID, ids, context=context) if group.action]:
|
||||
new_params = action.params
|
||||
new_params['header_description'] = vals.get('description')
|
||||
cobj.write(cr, SUPERUSER_ID, [action.id], {'params': str(new_params)}, context=context)
|
||||
return result
|
||||
|
||||
def action_follow(self, cr, uid, ids, context=None):
|
||||
|
|
|
@ -6,6 +6,17 @@
|
|||
<field name="name">Discussion Group</field>
|
||||
<field name="tag">mail.wall</field>
|
||||
<field name="res_model">mail.message</field>
|
||||
<field name="context">{
|
||||
'search_default_message_unread': True
|
||||
}</field>
|
||||
<field name="params">{
|
||||
'read_action': 'read'
|
||||
}</field>
|
||||
<field name="help" type="html">
|
||||
<p>
|
||||
No message in this group.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Group Kanban View !-->
|
||||
|
|
|
@ -377,7 +377,9 @@ class mail_message(osv.Model):
|
|||
id_max = child_id
|
||||
elif nb > 0:
|
||||
exp_domain = [('id', '>=', id_min), ('id', '<=', id_max), ('id', 'child_of', message_id)]
|
||||
messages.append(_get_expandable(exp_domain, nb, message_id, False))
|
||||
idx = [msg.get('id') for msg in messages].index(child_id) + 1
|
||||
# messages.append(_get_expandable(exp_domain, nb, message_id, False))
|
||||
messages.insert(idx, _get_expandable(exp_domain, nb, message_id, False))
|
||||
id_min, id_max, nb = max(child_ids), 0, 0
|
||||
else:
|
||||
id_min, id_max, nb = max(child_ids), 0, 0
|
||||
|
|
|
@ -79,7 +79,7 @@ class mail_thread(osv.AbstractModel):
|
|||
# search for unread messages, directly in SQL to improve performances
|
||||
cr.execute(""" SELECT m.res_id FROM mail_message m
|
||||
RIGHT JOIN mail_notification n
|
||||
ON (n.message_id = m.id AND n.partner_id = %s AND n.read = False)
|
||||
ON (n.message_id = m.id AND n.partner_id = %s AND (n.read = False or n.read IS NULL))
|
||||
WHERE m.model = %s AND m.res_id in %s""",
|
||||
(user_pid, self._name, tuple(ids),))
|
||||
msg_ids = [result[0] for result in cr.fetchall()]
|
||||
|
@ -341,7 +341,7 @@ class mail_thread(osv.AbstractModel):
|
|||
message = self.pool.get('mail.message').browse(cr, uid, message_ids[0], context=context)
|
||||
_logger.debug('Routing mail with Message-Id %s: direct reply to a private message: %s, custom_values: %s, uid: %s',
|
||||
message_id, message.id, custom_values, uid)
|
||||
return [(False, 0, custom_values, uid)]
|
||||
return [(message.model, message.res_id, custom_values, uid)]
|
||||
|
||||
# 2. Look for a matching mail.alias entry
|
||||
# Delivered-To is a safe bet in most modern MTAs, but we have to fallback on To + Cc values
|
||||
|
@ -767,13 +767,19 @@ class mail_thread(osv.AbstractModel):
|
|||
# 3. Post-processing
|
||||
# HACK TDE FIXME: Chatter: attachments linked to the document (not done JS-side), load the message
|
||||
if attachment_ids:
|
||||
# TDE FIXME (?): when posting a private message, we use mail.thread as a model
|
||||
# However, attaching doc to mail.thread is not possible, mail.thread does not have any table
|
||||
model = self._name
|
||||
if model == 'mail.thread':
|
||||
model = False
|
||||
filtered_attachment_ids = ir_attachment.search(cr, SUPERUSER_ID, [
|
||||
('res_model', '=', 'mail.compose.message'),
|
||||
('res_id', '=', 0),
|
||||
('create_uid', '=', uid),
|
||||
('id', 'in', attachment_ids)], context=context)
|
||||
if filtered_attachment_ids:
|
||||
ir_attachment.write(cr, SUPERUSER_ID, attachment_ids, {'res_model': self._name, 'res_id': thread_id}, context=context)
|
||||
if thread_id and model:
|
||||
ir_attachment.write(cr, SUPERUSER_ID, attachment_ids, {'res_model': model, 'res_id': thread_id}, context=context)
|
||||
mail_message.write(cr, SUPERUSER_ID, [new_message_id], {'attachment_ids': [(6, 0, [pid for pid in attachment_ids])]}, context=context)
|
||||
|
||||
return new_message_id
|
||||
|
|
|
@ -84,29 +84,11 @@
|
|||
'search_default_message_read': True
|
||||
}</field>
|
||||
<field name="params" eval=""{
|
||||
'domain': [('notification_ids.partner_id.user_ids', 'in', [uid])],
|
||||
'view_mailbox': True,
|
||||
'read_action': 'unread', }""/>
|
||||
<field name="help" type="html">
|
||||
<p>
|
||||
No message found.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_mail_sent_feeds" model="ir.actions.client">
|
||||
<field name="name">Sent</field>
|
||||
<field name="tag">mail.wall</field>
|
||||
<field name="context">{
|
||||
'default_model': 'res.users',
|
||||
'default_res_id': uid
|
||||
}</field>
|
||||
<field name="params" eval=""{
|
||||
'domain': [('author_id.user_ids', 'in', [uid])],
|
||||
'domain': ['|', ('notification_ids.partner_id.user_ids', 'in', [uid]), ('author_id.user_ids', 'in', [uid])],
|
||||
'view_mailbox': True, }""/>
|
||||
<field name="help" type="html">
|
||||
<p>
|
||||
<b>No message sent yet.</b>
|
||||
No message found and no message sent yet.
|
||||
</p><p>
|
||||
Click on the top-right icon to compose a message. This
|
||||
message will be sent by email if it's an internal contact.
|
||||
|
@ -150,11 +132,5 @@
|
|||
<field name="action" ref="action_mail_archives_feeds"/>
|
||||
<field name="parent_id" ref="mail.mail_feeds"/>
|
||||
</record>
|
||||
<record id="mail_sentfeeds" model="ir.ui.menu">
|
||||
<field name="name">Sent</field>
|
||||
<field name="sequence" eval="18"/>
|
||||
<field name="action" ref="action_mail_sent_feeds"/>
|
||||
<field name="parent_id" ref="mail.mail_feeds"/>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -55,7 +55,7 @@ class res_partner_mail(osv.Model):
|
|||
if type == 'email':
|
||||
partner_ids = kwargs.get('partner_ids', [])
|
||||
if thread_id not in partner_ids:
|
||||
partner_ids.append(thread_id)
|
||||
partner_ids.append((4, thread_id))
|
||||
kwargs['partner_ids'] = partner_ids
|
||||
thread_id = False
|
||||
return super(res_partner_mail, self).message_post(cr, uid, thread_id, body=body, subject=subject,
|
||||
|
|
|
@ -141,6 +141,11 @@ class res_users(osv.Model):
|
|||
partner_id = self.pool.get('res.users').read(cr, uid, thread_id, ['partner_id'], context=context)['partner_id'][0]
|
||||
return self.pool.get('res.partner').message_post(cr, uid, partner_id, context=context, **kwargs)
|
||||
|
||||
def message_update(self, cr, uid, ids, msg_dict, update_vals=None, context=None):
|
||||
partner_id = self.pool.get('res.users').browse(cr, uid, ids)[0].partner_id.id
|
||||
return self.pool.get('res.partner').message_update(cr, uid, [partner_id], msg_dict,
|
||||
update_vals=update_vals, context=context)
|
||||
|
||||
|
||||
class res_users_mail_group(osv.Model):
|
||||
""" Update of res.users class
|
||||
|
|
|
@ -17,3 +17,5 @@ access_mail_alias_system,mail.alias.system,model_mail_alias,base.group_system,1,
|
|||
access_mail_message_subtype_all,mail.message.subtype.all,model_mail_message_subtype,,1,0,0,0
|
||||
access_mail_vote_all,mail.vote.all,model_mail_vote,,1,1,1,1
|
||||
access_mail_favorite_all,mail.favorite.all,model_mail_favorite,,1,1,1,1
|
||||
access_mail_thread_all,mail.thread.all,model_mail_thread,,1,1,1,1
|
||||
access_publisher_warranty_contract_all,publisher.warranty.contract.all,model_publisher_warranty_contract,,1,1,1,1
|
||||
|
|
|
|
@ -220,9 +220,8 @@
|
|||
/* --------------------- ATTACHMENTS --------------------- */
|
||||
|
||||
.openerp .oe_mail .oe_msg_attachment_list{
|
||||
display: none;
|
||||
margin-top: 12px;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 4px;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
.openerp .oe_mail .oe_msg_composer .oe_msg_attachment_list{
|
||||
display: block;
|
||||
|
@ -230,7 +229,7 @@
|
|||
.openerp .oe_mail .oe_attachment{
|
||||
display: inline-block;
|
||||
width: 100px;
|
||||
margin: 2px;
|
||||
margin: 4px 2px;
|
||||
min-height: 80px;
|
||||
position: relative;
|
||||
border-radius: 3px;
|
||||
|
@ -243,7 +242,7 @@
|
|||
padding: 1px 3px;
|
||||
margin-top: 50px;
|
||||
margin-bottom: 5px;
|
||||
background: rgba(124, 123, 173, 0.13);
|
||||
background: #F4F5FA;
|
||||
overflow: hidden;
|
||||
color: #4c4c4c;
|
||||
text-shadow: none;
|
||||
|
@ -299,12 +298,13 @@
|
|||
.openerp .oe_mail .oe_attachment.oe_preview .oe_name{
|
||||
position: absolute;
|
||||
bottom: 0px;
|
||||
margin: 0px;
|
||||
margin: 3px;
|
||||
left: 0px;
|
||||
right: 0px;
|
||||
max-height: 64px;
|
||||
background: rgba(0,0,0,0.8);
|
||||
color: white;
|
||||
border-radius: 1px;
|
||||
border-top-left-radius: 0px;
|
||||
border-top-right-radius: 0px;
|
||||
opacity: 0;
|
||||
|
@ -333,9 +333,11 @@
|
|||
position: relative;
|
||||
margin:0px;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
border-radius: 3px;
|
||||
height: 80px;
|
||||
border-radius: 1px;
|
||||
border: solid 3px #FFF;
|
||||
margin-left: -50px;
|
||||
box-shadow: 0px 3px 10px rgba(0, 0, 0, 0.19);
|
||||
}
|
||||
.openerp .oe_mail .oe_attachment .oe_delete{
|
||||
display: none;
|
||||
|
|
|
@ -251,7 +251,7 @@ openerp.mail = function (session) {
|
|||
this.format_data();
|
||||
|
||||
// record options and data
|
||||
this.show_record_name = this.record_name && !this.thread_level && this.model != 'res.partner';
|
||||
this.show_record_name = this.options.show_record_name && this.record_name && !this.thread_level && this.model != 'res.partner';
|
||||
this.options.show_read = false;
|
||||
this.options.show_unread = false;
|
||||
if (this.options.show_read_unread_button) {
|
||||
|
@ -591,17 +591,17 @@ openerp.mail = function (session) {
|
|||
//session.web.blockUI();
|
||||
this.parent_thread.ds_thread.call('message_post_user_api', [
|
||||
this.context.default_res_id,
|
||||
mail.ChatterUtils.get_text2html(body),
|
||||
body,
|
||||
false,
|
||||
this.context.default_parent_id,
|
||||
attachments,
|
||||
this.parent_thread.context
|
||||
]).done(function (record) {
|
||||
var thread = self.parent_thread;
|
||||
var root = thread == self.options.root_thread;
|
||||
if (self.options.display_indented_thread < self.thread_level && thread.parent_message) {
|
||||
var thread = thread.parent_message.parent_thread;
|
||||
}
|
||||
var root = thread == self.options.root_thread;
|
||||
// create object and attach to the thread object
|
||||
thread.message_fetch([['id', 'child_of', [self.id]]], false, [record], function (arg, data) {
|
||||
var message = thread.create_message_object( data[0] );
|
||||
|
@ -734,7 +734,7 @@ openerp.mail = function (session) {
|
|||
if(this.thread_level < this.options.display_indented_thread) {
|
||||
this.create_thread();
|
||||
}
|
||||
this.$('.oe_msg_attachments, .oe_msg_images').addClass("oe_hidden");
|
||||
this.display_attachments();
|
||||
|
||||
this.ds_notification = new session.web.DataSetSearch(this, 'mail.notification');
|
||||
this.ds_message = new session.web.DataSetSearch(this, 'mail.message');
|
||||
|
@ -752,8 +752,6 @@ openerp.mail = function (session) {
|
|||
this.$('.oe_reply').on('click', this.on_message_reply);
|
||||
this.$('.oe_star').on('click', this.on_star);
|
||||
this.$('.oe_msg_vote').on('click', this.on_vote);
|
||||
this.$('.oe_view_attachments').on('click', this.on_view_attachments);
|
||||
|
||||
},
|
||||
|
||||
/* Call the on_compose_message on the thread of this message. */
|
||||
|
@ -812,17 +810,6 @@ openerp.mail = function (session) {
|
|||
}
|
||||
},
|
||||
|
||||
/* Call the on_compose_message on the thread of this message. */
|
||||
on_view_attachments:function (event) {
|
||||
event.stopPropagation();
|
||||
var self = this;
|
||||
if (!this.toggle_attachment) {
|
||||
self.display_attachments();
|
||||
this.toggle_attachment = true;
|
||||
}
|
||||
this.$('.oe_msg_attachment_list').toggle(200);
|
||||
},
|
||||
|
||||
/**
|
||||
* Wait a confirmation for delete the message on the DB.
|
||||
* Make an animate destroy
|
||||
|
@ -857,7 +844,10 @@ openerp.mail = function (session) {
|
|||
msg.animated_destroy(150);
|
||||
} else {
|
||||
msg.renderElement();
|
||||
msg.start()
|
||||
msg.start();
|
||||
}
|
||||
if( self.options.root_thread.__parentedParent.__parentedParent.do_reload_menu_emails ) {
|
||||
self.options.root_thread.__parentedParent.__parentedParent.do_reload_menu_emails();
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -997,10 +987,7 @@ openerp.mail = function (session) {
|
|||
init: function (parent, datasets, options) {
|
||||
this._super(parent, options);
|
||||
this.domain = options.domain || [];
|
||||
this.context = _.extend({
|
||||
default_model: 'mail.thread',
|
||||
default_res_id: 0,
|
||||
default_parent_id: false }, options.context || {});
|
||||
this.context = _.extend(options.context || {});
|
||||
|
||||
this.options = options.options;
|
||||
this.options.root_thread = (options.options.root_thread != undefined ? options.options.root_thread : this);
|
||||
|
@ -1243,6 +1230,7 @@ openerp.mail = function (session) {
|
|||
'default_parent_id': self.id,
|
||||
}});
|
||||
} else {
|
||||
data.record_name= (data.record_name != '' && data.record_name) || (self.parent_message && self.parent_message.record_name);
|
||||
var message = new mail.ThreadMessage(self, data, {'context':{
|
||||
'default_model': data.model,
|
||||
'default_res_id': data.res_id,
|
||||
|
@ -1252,8 +1240,7 @@ openerp.mail = function (session) {
|
|||
|
||||
// check if the message is already create
|
||||
for (var i in self.messages) {
|
||||
if (self.messages[i] && self.messages[i].id == message.id) {
|
||||
console.log('Reload message', message.id);
|
||||
if (message.id && self.messages[i] && self.messages[i].id == message.id) {
|
||||
self.messages[i].destroy();
|
||||
}
|
||||
}
|
||||
|
@ -1280,10 +1267,9 @@ openerp.mail = function (session) {
|
|||
|
||||
this.$('.oe_view_nocontent').remove();
|
||||
|
||||
|
||||
if (dom_insert_after) {
|
||||
message.insertAfter(dom_insert_after);
|
||||
}if (prepend) {
|
||||
} else if (prepend) {
|
||||
message.prependTo(self.$el);
|
||||
} else {
|
||||
message.appendTo(self.$el);
|
||||
|
@ -1460,6 +1446,7 @@ openerp.mail = function (session) {
|
|||
'show_record_name' : false,
|
||||
'show_compose_message' : false,
|
||||
'show_compact_message' : false,
|
||||
'compose_placeholder': false,
|
||||
'view_inbox': false,
|
||||
'message_ids': undefined,
|
||||
}, this.action.params);
|
||||
|
@ -1524,14 +1511,18 @@ openerp.mail = function (session) {
|
|||
init: function (parent, node) {
|
||||
this._super.apply(this, arguments);
|
||||
this.node = _.clone(node);
|
||||
|
||||
this.node.params = _.extend({
|
||||
'display_indented_thread': -1,
|
||||
'show_reply_button': false,
|
||||
'show_read_unread_button': false,
|
||||
'show_record_name': false,
|
||||
'show_compact_message': 1,
|
||||
}, this.node.params);
|
||||
|
||||
if (this.node.attrs.placeholder) {
|
||||
this.node.params.compose_placeholder = this.node.attrs.placeholder;
|
||||
}
|
||||
|
||||
this.domain = this.node.params && this.node.params.domain || [];
|
||||
},
|
||||
|
||||
|
@ -1603,7 +1594,7 @@ openerp.mail = function (session) {
|
|||
|
||||
this.action = _.clone(action);
|
||||
this.domain = this.action.params.domain || this.action.domain || [];
|
||||
this.context = this.action.params.context || this.action.context || {};
|
||||
this.context = _.extend(this.action.params.context || {}, this.action.context || {});
|
||||
|
||||
this.defaults = {};
|
||||
for (var key in this.context) {
|
||||
|
@ -1617,6 +1608,7 @@ openerp.mail = function (session) {
|
|||
'show_reply_button': true,
|
||||
'show_read_unread_button': true,
|
||||
'show_compose_message': true,
|
||||
'show_record_name': true,
|
||||
'show_compact_message': this.action.params.view_mailbox ? false : 1,
|
||||
'view_inbox': false,
|
||||
}, this.action.params);
|
||||
|
@ -1629,7 +1621,23 @@ openerp.mail = function (session) {
|
|||
if (! this.searchview.has_defaults) {
|
||||
this.message_render();
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* crete an object "related_menu"
|
||||
* contain the menu widget and the the sub menu related of this wall
|
||||
*/
|
||||
do_reload_menu_emails: function () {
|
||||
var menu = this.__parentedParent.__parentedParent.menu;
|
||||
// return this.rpc("/web/menu/load", {'menu_id': 100}).done(function(r) {
|
||||
// _.each(menu.data.data.children, function (val) {
|
||||
// if (val.id == 100) {
|
||||
// val.children = _.find(r.data.children, function (r_val) {return r_val.id == 100;}).children;
|
||||
// }
|
||||
// });
|
||||
// var r = menu.data;
|
||||
// window.setTimeout(function(){menu.do_reload();}, 0);
|
||||
// });
|
||||
},
|
||||
|
||||
/**
|
||||
|
|
|
@ -194,6 +194,7 @@ openerp_mail_followers = function(session, mail) {
|
|||
display_subtypes:function (data) {
|
||||
var self = this;
|
||||
var subtype_list_ul = this.$('.oe_subtype_list');
|
||||
subtype_list_ul.empty();
|
||||
var records = data[this.view.datarecord.id || this.view.dataset.ids[0]].message_subtype_data;
|
||||
_(records).each(function (record, record_name) {
|
||||
record.name = record_name;
|
||||
|
|
|
@ -39,8 +39,9 @@
|
|||
</div>
|
||||
</div>
|
||||
<div t-if="widget.show_compact_message and !widget.show_composer" t-attf-class="oe_msg oe_msg_composer_compact #{widget.thread_level and widget.options.display_indented_thread > -1 ? 'oe_msg_indented' : ''}">
|
||||
<textarea t-if="!widget.options.view_mailbox" class="field_text oe_compact" placeholder="Write to the followers of this docmuent..."/>
|
||||
<textarea t-if="widget.options.view_mailbox" class="field_text oe_compact" placeholder="Write to my followers..."/>
|
||||
<textarea t-if="widget.options.compose_placeholder" class="field_text oe_compact" t-att-placeholder="widget.options.compose_placeholder"/>
|
||||
<textarea t-if="!widget.options.compose_placeholder and !widget.options.view_mailbox" class="field_text oe_compact" placeholder="Write an internal note..."/>
|
||||
<textarea t-if="!widget.options.compose_placeholder and widget.options.view_mailbox" class="field_text oe_compact" placeholder="Share to my followers..."/>
|
||||
</div>
|
||||
<span t-if="!(widget.show_compact_message and !widget.show_composer) and !widget.show_composer" class="oe_placeholder_compose"></span>
|
||||
</t>
|
||||
|
@ -84,7 +85,7 @@
|
|||
</t>
|
||||
<t t-if="attachment.filetype === 'webimage'">
|
||||
<div t-attf-class="oe_attachment oe_preview #{attachment.upload ? 'oe_uploading' : ''}">
|
||||
<a t-att-href='attachment.url'><img t-att-src="widget.attachments_resize_image(attachment.id, [100,100])"></img></a>
|
||||
<a t-att-href='attachment.url'><img t-att-src="widget.attachments_resize_image(attachment.id, [100,80])"></img></a>
|
||||
<div class='oe_delete oe_e'>[</div>
|
||||
<div class='oe_name'><t t-raw='attachment.name' /></div>
|
||||
<div class='oe_progress_bar'>
|
||||
|
@ -101,7 +102,13 @@
|
|||
<t t-name="mail.thread.list_recipients">
|
||||
<div class="oe_mail_list_recipients">
|
||||
To:
|
||||
<span t-if="!widget.is_private" class="oe_all_follower">Followers <t t-raw="' of ' + (widget.parent_thread.parent_message.record_name ? '"' + widget.parent_thread.parent_message.record_name + '"' : 'this document')"/></span>
|
||||
<t t-if="!widget.is_private">
|
||||
<span class="oe_all_follower">
|
||||
Followers of
|
||||
<t t-if="widget.parent_thread.parent_message.record_name" t-raw="'"' + widget.parent_thread.parent_message.record_name + '"'"/>
|
||||
<t t-if="!widget.parent_thread.parent_message.record_name">this document</t>
|
||||
</span>
|
||||
</t>
|
||||
<t t-if="!widget.is_private and widget.partner_ids.length"> and </t>
|
||||
<t t-set="inc" t-value="0"/>
|
||||
<t t-if="widget.partner_ids.length" t-foreach="widget.partner_ids" t-as="partner"><span t-attf-class="oe_partner_follower #{inc>=3?'oe_hidden':''}"><t t-if="inc" t-raw="', '"/><a t-attf-href="#model=res.partner&id=#{partner[0]}"><t t-raw="partner[1]"/></a></span><t t-set="inc" t-value="inc+1"/>
|
||||
|
@ -129,9 +136,15 @@
|
|||
<td colspan="2">
|
||||
<h2 class="oe_view_title">
|
||||
<span class="oe_view_title_text">
|
||||
Email box
|
||||
<t t-raw="widget.action.name"/>
|
||||
</span>
|
||||
</h2>
|
||||
<t t-if="widget.action.params.header_description">
|
||||
<br/>
|
||||
<span class="oe_view_subtitle_text">
|
||||
<t t-raw="widget.action.params.header_description"/>
|
||||
</span>
|
||||
</t>
|
||||
</td>
|
||||
<td><div class="oe_view_manager_view_search" t-opentag="true"/></td>
|
||||
</tr>
|
||||
|
@ -192,13 +205,11 @@
|
|||
</div>
|
||||
<!-- message itself -->
|
||||
<div class="oe_msg_content">
|
||||
<h1 t-if="widget.subject and !widget.thread_level" class="oe_msg_title">
|
||||
<t t-raw="widget.subject"/>
|
||||
<h1 t-if="(widget.show_record_name or widget.subject) and !widget.thread_level" class="oe_msg_title">
|
||||
<a t-if="widget.show_record_name" class="oe_mail_action_model" t-attf-href="#model=#{widget.model}&id=#{widget.res_id}"><t t-raw="widget.record_name"/></a>
|
||||
<t t-if="widget.subject" t-raw="widget.subject"/>
|
||||
</h1>
|
||||
<div class="oe_msg_body">
|
||||
<t t-if="widget.show_record_name">
|
||||
<a class="oe_mail_action_model" t-attf-href="#model=#{widget.model}&id=#{widget.res_id}"><t t-raw="widget.record_name"/></a>
|
||||
</t>
|
||||
<t t-raw="widget.body"/>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -209,13 +220,6 @@
|
|||
<a t-if="widget.author_id" t-attf-href="#model=res.partner&id=#{widget.author_id[0]}"><t t-raw="widget.author_id[1]"/></a>
|
||||
<span class='oe_subtle'>•</span>
|
||||
<span t-att-title="widget.date"><t t-raw="widget.timerelative"/></span>
|
||||
<t t-if='widget.attachment_ids.length > 0'>
|
||||
<span class='oe_subtle'>•</span>
|
||||
<a class="oe_view_attachments">
|
||||
<t t-if="widget.attachment_ids.length == 1">1 Attachment</t>
|
||||
<t t-if="widget.attachment_ids.length > 1"><t t-raw="widget.attachment_ids.length"/> Attachments</t>
|
||||
</a>
|
||||
</t>
|
||||
<span class='oe_subtle'>•</span>
|
||||
<t t-call="mail.thread.message.vote"/>
|
||||
</div>
|
||||
|
|
|
@ -505,7 +505,7 @@ class test_mail(test_mail_mockup.TestMailMockups):
|
|||
# Test: mail.message: attachments
|
||||
for attach in compose.attachment_ids:
|
||||
self.assertIn((attach.datas_fname, attach.datas.decode('base64')), _attachments_test, 'mail.message attachment name / data incorrect')
|
||||
|
||||
|
||||
# ----------------------------------------
|
||||
# CASE3: mass_mail on Pigs and Bird
|
||||
# ----------------------------------------
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
##############################################################################
|
||||
|
||||
from openerp.addons.mail.tests import test_mail_mockup
|
||||
from osv.orm import except_orm
|
||||
from openerp.osv.orm import except_orm
|
||||
from openerp.tools import mute_logger
|
||||
|
||||
|
||||
|
|
|
@ -102,8 +102,9 @@ class mail_compose_message(osv.TransientModel):
|
|||
'partner_ids': fields.many2many('res.partner',
|
||||
'mail_compose_message_res_partner_rel',
|
||||
'wizard_id', 'partner_id', 'Additional contacts'),
|
||||
'attachment_ids': fields.many2many('ir.attachment', 'mail_compose_message_ir_attachments_rel',
|
||||
'wizard_id', 'attachment_id', string='Attachments'),
|
||||
'attachment_ids': fields.many2many('ir.attachment',
|
||||
'mail_compose_message_ir_attachments_rel',
|
||||
'wizard_id', 'attachment_id', 'Attachments'),
|
||||
'filter_id': fields.many2one('ir.filters', 'Filters'),
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
# Lithuanian translation for openobject-addons
|
||||
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||
"PO-Revision-Date: 2012-11-15 13:26+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Lithuanian <lt@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-11-16 04:36+0000\n"
|
||||
"X-Generator: Launchpad (build 16272)\n"
|
||||
|
||||
#. module: marketing
|
||||
#: model:res.groups,name:marketing.group_marketing_manager
|
||||
msgid "Manager"
|
||||
msgstr ""
|
||||
|
||||
#. module: marketing
|
||||
#: model:res.groups,name:marketing.group_marketing_user
|
||||
msgid "User"
|
||||
msgstr ""
|
|
@ -471,6 +471,7 @@ class Product(osv.osv):
|
|||
'membership_date_to': fields.date('Date to', help='Date until which membership remains active.'),
|
||||
}
|
||||
|
||||
_sql_constraints = [('membership_date_greater','check(membership_date_to >= membership_date_from)','Error ! Ending Date cannot be set before Beginning Date.')]
|
||||
_defaults = {
|
||||
'membership': False,
|
||||
}
|
||||
|
|
|
@ -7,14 +7,14 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
|
||||
"PO-Revision-Date: 2010-11-27 05:28+0000\n"
|
||||
"Last-Translator: OpenERP Administrators <Unknown>\n"
|
||||
"PO-Revision-Date: 2012-11-18 21:54+0000\n"
|
||||
"Last-Translator: Dusan Laznik <laznik@mentis.si>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-10-30 05:22+0000\n"
|
||||
"X-Generator: Launchpad (build 16206)\n"
|
||||
"X-Launchpad-Export-Date: 2012-11-19 04:37+0000\n"
|
||||
"X-Generator: Launchpad (build 16278)\n"
|
||||
|
||||
#. module: mrp_jit
|
||||
#: model:ir.module.module,shortdesc:mrp_jit.module_meta_information
|
||||
|
@ -46,3 +46,24 @@ msgid ""
|
|||
" \n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
" This module allows Just In Time computation of procurement orders.\n"
|
||||
"\n"
|
||||
" If you install this module, you will not have to run the regular "
|
||||
"procurement \n"
|
||||
" scheduler anymore (but you still need to run the minimum order point "
|
||||
"rule \n"
|
||||
" scheduler, or for example let it run daily.)\n"
|
||||
" All procurement orders will be processed immediately, which could in "
|
||||
"some\n"
|
||||
" cases entail a small performance impact.\n"
|
||||
"\n"
|
||||
" It may also increase your stock size because products are reserved as "
|
||||
"soon\n"
|
||||
" as possible and the scheduler time range is not taken into account "
|
||||
"anymore. \n"
|
||||
" In that case, you can not use priorities any more on the different "
|
||||
"picking.\n"
|
||||
" \n"
|
||||
" \n"
|
||||
" "
|
||||
|
|
|
@ -37,7 +37,10 @@ openerp.pad = function(instance) {
|
|||
}else{
|
||||
this.content = '<div class="oe_pad_loading">... Loading pad ...</div>';
|
||||
$.get(value+'/export/html').success(function(data){
|
||||
self.$('.oe_pad_content').html('<div class="oe_pad_readonly">'+data+'<div>');
|
||||
groups = /\<\s*body\s*\>(.*?)\<\s*\/body\s*\>/.exec(data);
|
||||
data = (groups || []).length >= 2 ? groups[1] : '';
|
||||
self.$('.oe_pad_content').html('<div class="oe_pad_readonly"><div>');
|
||||
self.$('.oe_pad_readonly').html(data);
|
||||
}).error(function(){
|
||||
self.$('.oe_pad_content').text('Unable to load pad');
|
||||
});
|
||||
|
|
|
@ -60,7 +60,7 @@ Mr Demo Portal</field>
|
|||
<record id="message_company_news0_comment2" model="mail.message">
|
||||
<field name="model">mail.group</field>
|
||||
<field name="res_id" ref="company_news_feed"/>
|
||||
<field name="body"><![CDATA[<p>This feature is realy great! We will be able to communicate directly to our partners!</p>]]></field>
|
||||
<field name="body"><![CDATA[<p>This feature is really great! We will be able to communicate directly to our partners!</p>]]></field>
|
||||
<field name="parent_id" ref="message_company_news0"/>
|
||||
<field name="type">comment</field>
|
||||
<field name="subtype_id" ref="mail.mt_comment"/>
|
||||
|
|
|
@ -20,7 +20,8 @@
|
|||
##############################################################################
|
||||
|
||||
from openerp.addons.mail.tests import test_mail_mockup
|
||||
from osv.orm import except_orm
|
||||
from openerp.osv.orm import except_orm
|
||||
from openerp.tools.misc import mute_logger
|
||||
|
||||
|
||||
class test_portal(test_mail_mockup.TestMailMockups):
|
||||
|
@ -52,6 +53,7 @@ class test_portal(test_mail_mockup.TestMailMockups):
|
|||
# Set an email address for the user running the tests, used as Sender for outgoing mails
|
||||
self.res_users.write(cr, uid, uid, {'email': 'test@localhost'})
|
||||
|
||||
@mute_logger('openerp.addons.base.ir.ir_model')
|
||||
def test_00_access_rights(self):
|
||||
""" Test basic mail_message and mail_group access rights for portal users. """
|
||||
cr, uid = self.cr, self.uid
|
||||
|
|
|
@ -0,0 +1,62 @@
|
|||
# Lithuanian translation for openobject-addons
|
||||
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
|
||||
"PO-Revision-Date: 2012-11-15 13:54+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Lithuanian <lt@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-11-16 04:36+0000\n"
|
||||
"X-Generator: Launchpad (build 16272)\n"
|
||||
|
||||
#. module: product_visible_discount
|
||||
#: code:addons/product_visible_discount/product_visible_discount.py:153
|
||||
#, python-format
|
||||
msgid "No Sale Pricelist Found!"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_visible_discount
|
||||
#: field:product.pricelist,visible_discount:0
|
||||
msgid "Visible Discount"
|
||||
msgstr "Matoma Nuolaida"
|
||||
|
||||
#. module: product_visible_discount
|
||||
#: code:addons/product_visible_discount/product_visible_discount.py:145
|
||||
#, python-format
|
||||
msgid "No Purchase Pricelist Found!"
|
||||
msgstr "Nerastas pirkimo kainoraštis !"
|
||||
|
||||
#. module: product_visible_discount
|
||||
#: model:ir.model,name:product_visible_discount.model_account_invoice_line
|
||||
msgid "Invoice Line"
|
||||
msgstr "Sąskaitos eilutė"
|
||||
|
||||
#. module: product_visible_discount
|
||||
#: model:ir.model,name:product_visible_discount.model_product_pricelist
|
||||
msgid "Pricelist"
|
||||
msgstr "Kainoraštis"
|
||||
|
||||
#. module: product_visible_discount
|
||||
#: code:addons/product_visible_discount/product_visible_discount.py:145
|
||||
#, python-format
|
||||
msgid "You must first define a pricelist on the supplier form!"
|
||||
msgstr "Pirma turite aprašyti kainoraštį tiekėjo formoje !"
|
||||
|
||||
#. module: product_visible_discount
|
||||
#: model:ir.model,name:product_visible_discount.model_sale_order_line
|
||||
msgid "Sales Order Line"
|
||||
msgstr "Pardavimo užsakymo eilutė"
|
||||
|
||||
#. module: product_visible_discount
|
||||
#: code:addons/product_visible_discount/product_visible_discount.py:153
|
||||
#, python-format
|
||||
msgid "You must first define a pricelist on the customer form!"
|
||||
msgstr "Pirma turite aprašyti kainoraštį pirkėjo formoje !"
|
|
@ -1247,7 +1247,7 @@ class task(base_stage, osv.osv):
|
|||
}
|
||||
for line in msg['body'].split('\n'):
|
||||
line = line.strip()
|
||||
res = tools.misc.command_re.match(line)
|
||||
res = tools.command_re.match(line)
|
||||
if res:
|
||||
match = res.group(1).lower()
|
||||
field = maps.get(match)
|
||||
|
|
|
@ -8,14 +8,14 @@ msgstr ""
|
|||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-09-20 07:29+0000\n"
|
||||
"PO-Revision-Date: 2009-09-08 12:39+0000\n"
|
||||
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
|
||||
"PO-Revision-Date: 2012-11-16 12:35+0000\n"
|
||||
"Last-Translator: Normunds (Alistek) <Unknown>\n"
|
||||
"Language-Team: Latvian <lv@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-10-30 05:08+0000\n"
|
||||
"X-Generator: Launchpad (build 16206)\n"
|
||||
"X-Launchpad-Export-Date: 2012-11-17 04:36+0000\n"
|
||||
"X-Generator: Launchpad (build 16278)\n"
|
||||
|
||||
#. module: sale
|
||||
#: code:addons/sale/wizard/sale_make_invoice_advance.py:215
|
||||
|
@ -161,14 +161,14 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: field:sale.order,date_confirm:0
|
||||
msgid "Confirmation Date"
|
||||
msgstr ""
|
||||
msgstr "Apstiprināšanas Datums"
|
||||
|
||||
#. module: sale
|
||||
#: view:sale.order:0
|
||||
#: view:sale.order.line:0
|
||||
#: view:sale.report:0
|
||||
msgid "Group By..."
|
||||
msgstr ""
|
||||
msgstr "Grupēt Pēc..."
|
||||
|
||||
#. module: sale
|
||||
#: view:sale.order.line:0
|
||||
|
@ -209,7 +209,7 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: field:sale.report,state:0
|
||||
msgid "Order State"
|
||||
msgstr "Pasūtījuma statuss"
|
||||
msgstr "Pasūtījuma Statuss"
|
||||
|
||||
#. module: sale
|
||||
#: help:sale.config.settings,module_account_analytic_analysis:0
|
||||
|
@ -228,7 +228,7 @@ msgstr ""
|
|||
#: view:sale.order:0
|
||||
#: view:sale.order.line:0
|
||||
msgid "To Invoice"
|
||||
msgstr ""
|
||||
msgstr "Piestādīt Rēķinu"
|
||||
|
||||
#. module: sale
|
||||
#: view:sale.order.line:0
|
||||
|
@ -239,7 +239,7 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: help:sale.order,date_confirm:0
|
||||
msgid "Date on which sales order is confirmed."
|
||||
msgstr ""
|
||||
msgstr "Datums, kurā pasūtījums tika apstiprināts."
|
||||
|
||||
#. module: sale
|
||||
#: model:ir.actions.act_window,name:sale.action_order_tree5
|
||||
|
@ -247,12 +247,12 @@ msgstr ""
|
|||
#: view:sale.order:0
|
||||
#: view:sale.report:0
|
||||
msgid "Quotations"
|
||||
msgstr ""
|
||||
msgstr "Tāmējumi"
|
||||
|
||||
#. module: sale
|
||||
#: selection:sale.report,month:0
|
||||
msgid "March"
|
||||
msgstr ""
|
||||
msgstr "Marts"
|
||||
|
||||
#. module: sale
|
||||
#: code:addons/sale/sale.py:558
|
||||
|
@ -277,12 +277,12 @@ msgstr ""
|
|||
#: field:sale.report,company_id:0
|
||||
#: field:sale.shop,company_id:0
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
msgstr "Uzņēmums"
|
||||
|
||||
#. module: sale
|
||||
#: field:sale.make.invoice,invoice_date:0
|
||||
msgid "Invoice Date"
|
||||
msgstr ""
|
||||
msgstr "Rēķina Datums"
|
||||
|
||||
#. module: sale
|
||||
#: model:ir.actions.act_window,name:sale.action_order_line_tree3
|
||||
|
@ -292,7 +292,7 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: help:sale.advance.payment.inv,amount:0
|
||||
msgid "The amount to be invoiced in advance."
|
||||
msgstr ""
|
||||
msgstr "Priekšapmaksas rēķina summa."
|
||||
|
||||
#. module: sale
|
||||
#: selection:sale.order,state:0
|
||||
|
@ -321,7 +321,7 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: help:sale.order,amount_total:0
|
||||
msgid "The total amount."
|
||||
msgstr ""
|
||||
msgstr "Summa"
|
||||
|
||||
#. module: sale
|
||||
#: view:sale.report:0
|
||||
|
@ -405,7 +405,7 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: selection:sale.report,month:0
|
||||
msgid "September"
|
||||
msgstr ""
|
||||
msgstr "Septembris"
|
||||
|
||||
#. module: sale
|
||||
#: field:sale.order,amount_tax:0
|
||||
|
@ -437,7 +437,7 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: report:sale.order:0
|
||||
msgid "Net Total :"
|
||||
msgstr "Tīrais kopā:"
|
||||
msgstr "Neto Summa:"
|
||||
|
||||
#. module: sale
|
||||
#: help:sale.config.settings,module_analytic_user_function:0
|
||||
|
@ -456,7 +456,7 @@ msgstr ""
|
|||
#: selection:sale.order.line,state:0
|
||||
#: selection:sale.report,state:0
|
||||
msgid "Cancelled"
|
||||
msgstr ""
|
||||
msgstr "Atcelts"
|
||||
|
||||
#. module: sale
|
||||
#: view:sale.order.line:0
|
||||
|
@ -490,7 +490,7 @@ msgstr "Veikals"
|
|||
#. module: sale
|
||||
#: model:ir.actions.act_window,name:sale.action_order_tree2
|
||||
msgid "Sales in Exception"
|
||||
msgstr ""
|
||||
msgstr "Veiktas Izmaiņas"
|
||||
|
||||
#. module: sale
|
||||
#: field:sale.order,partner_invoice_id:0
|
||||
|
@ -500,7 +500,7 @@ msgstr "Rēķina Adrese"
|
|||
#. module: sale
|
||||
#: help:sale.order,create_date:0
|
||||
msgid "Date on which sales order is created."
|
||||
msgstr ""
|
||||
msgstr "Datums, kurā izveidots pasūtījums."
|
||||
|
||||
#. module: sale
|
||||
#: view:res.partner:0
|
||||
|
@ -516,7 +516,7 @@ msgstr "Veidot Rēķinu"
|
|||
#: view:sale.make.invoice:0
|
||||
#: view:sale.order.line.make.invoice:0
|
||||
msgid "Create Invoices"
|
||||
msgstr ""
|
||||
msgstr "Veidot Rēķinus"
|
||||
|
||||
#. module: sale
|
||||
#: report:sale.order:0
|
||||
|
@ -537,13 +537,13 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: field:sale.report,date_confirm:0
|
||||
msgid "Date Confirm"
|
||||
msgstr ""
|
||||
msgstr "Apstiprināšanas Datums"
|
||||
|
||||
#. module: sale
|
||||
#: view:sale.report:0
|
||||
#: field:sale.report,nbr:0
|
||||
msgid "# of Lines"
|
||||
msgstr ""
|
||||
msgstr "Rindu skaits"
|
||||
|
||||
#. module: sale
|
||||
#: help:sale.order,message_summary:0
|
||||
|
@ -561,7 +561,7 @@ msgstr ""
|
|||
#: view:sale.report:0
|
||||
#: field:sale.report,product_uom_qty:0
|
||||
msgid "# of Qty"
|
||||
msgstr ""
|
||||
msgstr "Daudz."
|
||||
|
||||
#. module: sale
|
||||
#: report:sale.order:0
|
||||
|
@ -588,12 +588,12 @@ msgstr ""
|
|||
#: view:sale.order:0
|
||||
#, python-format
|
||||
msgid "Sales Order"
|
||||
msgstr ""
|
||||
msgstr "Pasūtījums"
|
||||
|
||||
#. module: sale
|
||||
#: field:sale.order.line,product_uos_qty:0
|
||||
msgid "Quantity (UoS)"
|
||||
msgstr ""
|
||||
msgstr "Daudzums (Pārdošanas mērvienība)"
|
||||
|
||||
#. module: sale
|
||||
#: view:sale.order.line:0
|
||||
|
@ -603,7 +603,7 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: field:sale.advance.payment.inv,amount:0
|
||||
msgid "Advance Amount"
|
||||
msgstr ""
|
||||
msgstr "Priekšapmaksas Summa"
|
||||
|
||||
#. module: sale
|
||||
#: selection:sale.order.line,state:0
|
||||
|
@ -657,7 +657,7 @@ msgstr ""
|
|||
#: view:sale.report:0
|
||||
#: field:sale.report,year:0
|
||||
msgid "Year"
|
||||
msgstr ""
|
||||
msgstr "Gads"
|
||||
|
||||
#. module: sale
|
||||
#: field:sale.config.settings,group_uom:0
|
||||
|
@ -710,12 +710,12 @@ msgstr "Rēķina pozīcijas"
|
|||
#: view:sale.report:0
|
||||
#: field:sale.report,price_total:0
|
||||
msgid "Total Price"
|
||||
msgstr ""
|
||||
msgstr "Cena Kopā"
|
||||
|
||||
#. module: sale
|
||||
#: model:ir.actions.act_window,name:sale.action_order_tree
|
||||
msgid "Old Quotations"
|
||||
msgstr ""
|
||||
msgstr "Vecie Tāmējumi"
|
||||
|
||||
#. module: sale
|
||||
#: help:sale.config.settings,module_sale_journal:0
|
||||
|
@ -735,7 +735,7 @@ msgstr ""
|
|||
#: model:ir.actions.act_window,name:sale.action_sale_order_make_invoice
|
||||
#: model:ir.actions.act_window,name:sale.action_view_sale_order_line_make_invoice
|
||||
msgid "Make Invoices"
|
||||
msgstr ""
|
||||
msgstr "Veidot Rēķinus"
|
||||
|
||||
#. module: sale
|
||||
#: model:ir.actions.server,name:sale.actions_server_sale_order_read
|
||||
|
@ -766,7 +766,7 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: field:sale.order,create_date:0
|
||||
msgid "Creation Date"
|
||||
msgstr ""
|
||||
msgstr "Izveides Datums"
|
||||
|
||||
#. module: sale
|
||||
#: selection:sale.order,state:0
|
||||
|
@ -777,7 +777,7 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: help:sale.order,partner_invoice_id:0
|
||||
msgid "Invoice address for current sales order."
|
||||
msgstr ""
|
||||
msgstr "Pasūtījuma rēķina adrese"
|
||||
|
||||
#. module: sale
|
||||
#: selection:sale.order,invoice_quantity:0
|
||||
|
@ -814,24 +814,24 @@ msgstr "Kopā:"
|
|||
#. module: sale
|
||||
#: view:sale.report:0
|
||||
msgid "My Sales"
|
||||
msgstr ""
|
||||
msgstr "Mana Pārdošana"
|
||||
|
||||
#. module: sale
|
||||
#: code:addons/sale/sale.py:253
|
||||
#: code:addons/sale/sale.py:822
|
||||
#, python-format
|
||||
msgid "Invalid action !"
|
||||
msgstr "Nepareiza darbība!"
|
||||
msgstr "Nederīga darbība!"
|
||||
|
||||
#. module: sale
|
||||
#: field:sale.order,fiscal_position:0
|
||||
msgid "Fiscal Position"
|
||||
msgstr "Fiskālā Pozīcija"
|
||||
msgstr "Nodokļu Profils"
|
||||
|
||||
#. module: sale
|
||||
#: selection:sale.report,month:0
|
||||
msgid "July"
|
||||
msgstr ""
|
||||
msgstr "Jūlijs"
|
||||
|
||||
#. module: sale
|
||||
#: field:account.config.settings,module_sale_analytic_plans:0
|
||||
|
@ -903,12 +903,12 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: report:sale.order:0
|
||||
msgid "Quotation Date"
|
||||
msgstr ""
|
||||
msgstr "Tāmējuma Datums"
|
||||
|
||||
#. module: sale
|
||||
#: view:sale.order:0
|
||||
msgid "Order Date"
|
||||
msgstr ""
|
||||
msgstr "Pasūtījuma datums"
|
||||
|
||||
#. module: sale
|
||||
#: help:sale.order,order_policy:0
|
||||
|
@ -946,7 +946,7 @@ msgstr ""
|
|||
#: view:sale.report:0
|
||||
#: field:sale.report,partner_id:0
|
||||
msgid "Partner"
|
||||
msgstr ""
|
||||
msgstr "Partneris"
|
||||
|
||||
#. module: sale
|
||||
#: view:sale.advance.payment.inv:0
|
||||
|
@ -976,7 +976,7 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: model:ir.model,name:sale.model_sale_make_invoice
|
||||
msgid "Sales Make Invoice"
|
||||
msgstr ""
|
||||
msgstr "Izrakstīt Rēķinu"
|
||||
|
||||
#. module: sale
|
||||
#: model:ir.actions.act_window,help:sale.action_order_tree5
|
||||
|
@ -1040,7 +1040,7 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: selection:sale.report,month:0
|
||||
msgid "December"
|
||||
msgstr ""
|
||||
msgstr "Decembris"
|
||||
|
||||
#. module: sale
|
||||
#: view:sale.config.settings:0
|
||||
|
@ -1050,13 +1050,13 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: view:sale.order.line:0
|
||||
msgid "Shipped"
|
||||
msgstr ""
|
||||
msgstr "Piegādāts"
|
||||
|
||||
#. module: sale
|
||||
#: view:sale.report:0
|
||||
#: field:sale.report,month:0
|
||||
msgid "Month"
|
||||
msgstr ""
|
||||
msgstr "Mēnesis"
|
||||
|
||||
#. module: sale
|
||||
#: model:email.template,subject:sale.email_template_edi_sale
|
||||
|
@ -1077,13 +1077,13 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: view:sale.order.line:0
|
||||
msgid "Uninvoiced"
|
||||
msgstr ""
|
||||
msgstr "Nav piestādīts rēķins"
|
||||
|
||||
#. module: sale
|
||||
#: view:sale.report:0
|
||||
#: field:sale.report,categ_id:0
|
||||
msgid "Category of Product"
|
||||
msgstr ""
|
||||
msgstr "Produkta Kategorija"
|
||||
|
||||
#. module: sale
|
||||
#: code:addons/sale/sale.py:557
|
||||
|
@ -1109,7 +1109,7 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: field:sale.shop,name:0
|
||||
msgid "Shop Name"
|
||||
msgstr ""
|
||||
msgstr "Tirdzniecības Punkta Nosaukums"
|
||||
|
||||
#. module: sale
|
||||
#: code:addons/sale/sale.py:253
|
||||
|
@ -1121,7 +1121,7 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: report:sale.order:0
|
||||
msgid "Taxes :"
|
||||
msgstr "Nodokļi"
|
||||
msgstr "Nodokļi:"
|
||||
|
||||
#. module: sale
|
||||
#: code:addons/sale/sale.py:658
|
||||
|
@ -1137,7 +1137,7 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: model:ir.model,name:sale.model_sale_advance_payment_inv
|
||||
msgid "Sales Advance Payment Invoice"
|
||||
msgstr ""
|
||||
msgstr "Priekšapmaksas Rēķins"
|
||||
|
||||
#. module: sale
|
||||
#: model:ir.actions.client,name:sale.action_client_sale_menu
|
||||
|
@ -1147,13 +1147,13 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: selection:sale.report,state:0
|
||||
msgid "In Progress"
|
||||
msgstr ""
|
||||
msgstr "Apstrādē"
|
||||
|
||||
#. module: sale
|
||||
#: code:addons/sale/sale.py:867
|
||||
#, python-format
|
||||
msgid "No Customer Defined !"
|
||||
msgstr ""
|
||||
msgstr "Klients nav Definēts!"
|
||||
|
||||
#. module: sale
|
||||
#: view:sale.make.invoice:0
|
||||
|
@ -1226,7 +1226,7 @@ msgstr "Grupēt rēķinus"
|
|||
#. module: sale
|
||||
#: help:sale.order,amount_tax:0
|
||||
msgid "The tax amount."
|
||||
msgstr ""
|
||||
msgstr "Nodokļa summa."
|
||||
|
||||
#. module: sale
|
||||
#: view:sale.order:0
|
||||
|
@ -1245,7 +1245,7 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: selection:sale.report,month:0
|
||||
msgid "August"
|
||||
msgstr ""
|
||||
msgstr "Augusts"
|
||||
|
||||
#. module: sale
|
||||
#: view:sale.order:0
|
||||
|
@ -1255,7 +1255,7 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: model:process.node,note:sale.process_node_saleorder0
|
||||
msgid "Drives procurement and invoicing"
|
||||
msgstr ""
|
||||
msgstr "Nodrošina iepirkumu un rēķinu piestādīšanas procesu"
|
||||
|
||||
#. module: sale
|
||||
#: model:ir.actions.act_window,help:sale.action_order_form
|
||||
|
@ -1275,7 +1275,7 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: selection:sale.report,month:0
|
||||
msgid "June"
|
||||
msgstr ""
|
||||
msgstr "Jūnijs"
|
||||
|
||||
#. module: sale
|
||||
#: model:ir.actions.act_window,name:sale.action_email_templates
|
||||
|
@ -1313,12 +1313,12 @@ msgstr ""
|
|||
#: model:ir.model,name:sale.model_sale_shop
|
||||
#: view:sale.shop:0
|
||||
msgid "Sales Shop"
|
||||
msgstr ""
|
||||
msgstr "Tirdzniecības Kanāls"
|
||||
|
||||
#. module: sale
|
||||
#: model:ir.model,name:sale.model_sale_report
|
||||
msgid "Sales Orders Statistics"
|
||||
msgstr ""
|
||||
msgstr "Pasūtījumu Statistika"
|
||||
|
||||
#. module: sale
|
||||
#: field:sale.order,date_order:0
|
||||
|
@ -1328,17 +1328,17 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: model:ir.model,name:sale.model_sale_order_line
|
||||
msgid "Sales Order Line"
|
||||
msgstr ""
|
||||
msgstr "Pasūtījuma Rinda"
|
||||
|
||||
#. module: sale
|
||||
#: selection:sale.report,month:0
|
||||
msgid "November"
|
||||
msgstr ""
|
||||
msgstr "Novembris"
|
||||
|
||||
#. module: sale
|
||||
#: view:sale.report:0
|
||||
msgid "Extended Filters..."
|
||||
msgstr ""
|
||||
msgstr "Paplašinātie filtri..."
|
||||
|
||||
#. module: sale
|
||||
#: code:addons/sale/wizard/sale_line_invoice.py:111
|
||||
|
@ -1356,7 +1356,7 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: field:sale.advance.payment.inv,product_id:0
|
||||
msgid "Advance Product"
|
||||
msgstr ""
|
||||
msgstr "Priekšapmaksas Prece"
|
||||
|
||||
#. module: sale
|
||||
#: selection:sale.order.line,state:0
|
||||
|
@ -1366,7 +1366,7 @@ msgstr "Kļūda"
|
|||
#. module: sale
|
||||
#: selection:sale.report,month:0
|
||||
msgid "October"
|
||||
msgstr ""
|
||||
msgstr "Oktobris"
|
||||
|
||||
#. module: sale
|
||||
#: model:process.transition,note:sale.process_transition_invoice0
|
||||
|
@ -1395,7 +1395,7 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: selection:sale.report,month:0
|
||||
msgid "January"
|
||||
msgstr ""
|
||||
msgstr "Janvāris"
|
||||
|
||||
#. module: sale
|
||||
#: model:ir.actions.act_window,name:sale.action_order_tree4
|
||||
|
@ -1521,7 +1521,7 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: model:process.node,note:sale.process_node_order0
|
||||
msgid "Confirmed sales order to invoice."
|
||||
msgstr ""
|
||||
msgstr "Apstiprinātie pasūtījumi rēķina piestādīšanai."
|
||||
|
||||
#. module: sale
|
||||
#: model:ir.actions.act_window,name:sale.action_order_line_product_tree
|
||||
|
@ -1552,7 +1552,7 @@ msgstr ""
|
|||
#: view:sale.report:0
|
||||
#: field:sale.report,day:0
|
||||
msgid "Day"
|
||||
msgstr ""
|
||||
msgstr "Diena"
|
||||
|
||||
#. module: sale
|
||||
#: view:sale.order:0
|
||||
|
@ -1616,12 +1616,12 @@ msgstr ""
|
|||
#: model:process.node,name:sale.process_node_quotation0
|
||||
#: selection:sale.report,state:0
|
||||
msgid "Quotation"
|
||||
msgstr ""
|
||||
msgstr "Tāme"
|
||||
|
||||
#. module: sale
|
||||
#: view:sale.order.line:0
|
||||
msgid "Search Uninvoiced Lines"
|
||||
msgstr ""
|
||||
msgstr "Meklēt Rindas, par kurām nav piestādīti Rēķini"
|
||||
|
||||
#. module: sale
|
||||
#: model:ir.model,name:sale.model_account_config_settings
|
||||
|
@ -1656,7 +1656,7 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: view:sale.order.line:0
|
||||
msgid "To Do"
|
||||
msgstr ""
|
||||
msgstr "Veicamais"
|
||||
|
||||
#. module: sale
|
||||
#: report:sale.order:0
|
||||
|
@ -1694,7 +1694,7 @@ msgstr ""
|
|||
#: model:ir.ui.menu,name:sale.menu_report_product_all
|
||||
#: view:sale.report:0
|
||||
msgid "Sales Analysis"
|
||||
msgstr ""
|
||||
msgstr "Pārdošanu Analīze"
|
||||
|
||||
#. module: sale
|
||||
#: help:sale.order,pricelist_id:0
|
||||
|
@ -1714,7 +1714,7 @@ msgstr "Izveidot Rēķinu"
|
|||
#. module: sale
|
||||
#: help:sale.order,amount_untaxed:0
|
||||
msgid "The amount without tax."
|
||||
msgstr ""
|
||||
msgstr "Summa bez nodokļiem."
|
||||
|
||||
#. module: sale
|
||||
#: view:sale.order.line:0
|
||||
|
@ -1724,7 +1724,7 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: help:sale.order,invoiced:0
|
||||
msgid "It indicates that an invoice has been paid."
|
||||
msgstr ""
|
||||
msgstr "Norāda, ka rēķins ir apmaksāts."
|
||||
|
||||
#. module: sale
|
||||
#: code:addons/sale/sale.py:822
|
||||
|
@ -1776,7 +1776,7 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: selection:sale.report,month:0
|
||||
msgid "May"
|
||||
msgstr ""
|
||||
msgstr "Maijs"
|
||||
|
||||
#. module: sale
|
||||
#: code:addons/sale/sale.py:766
|
||||
|
@ -1823,7 +1823,7 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: view:sale.order:0
|
||||
msgid "Other Information"
|
||||
msgstr ""
|
||||
msgstr "Cita Informācija"
|
||||
|
||||
#. module: sale
|
||||
#: view:res.partner:0
|
||||
|
@ -1838,7 +1838,7 @@ msgstr "Sk."
|
|||
#. module: sale
|
||||
#: model:process.node,note:sale.process_node_invoice0
|
||||
msgid "To be reviewed by the accountant."
|
||||
msgstr ""
|
||||
msgstr "Pārbaudīt Grāmatvedim."
|
||||
|
||||
#. module: sale
|
||||
#: view:sale.order:0
|
||||
|
@ -1853,7 +1853,7 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: help:sale.order,partner_shipping_id:0
|
||||
msgid "Shipping address for current sales order."
|
||||
msgstr ""
|
||||
msgstr "Piegādes adrese pasūtījumam."
|
||||
|
||||
#. module: sale
|
||||
#: selection:sale.order,state:0
|
||||
|
@ -1880,17 +1880,17 @@ msgstr "Klients"
|
|||
#. module: sale
|
||||
#: model:product.template,name:sale.advance_product_0_product_template
|
||||
msgid "Advance"
|
||||
msgstr ""
|
||||
msgstr "Priekšapmaksa"
|
||||
|
||||
#. module: sale
|
||||
#: selection:sale.report,month:0
|
||||
msgid "February"
|
||||
msgstr ""
|
||||
msgstr "Februāris"
|
||||
|
||||
#. module: sale
|
||||
#: field:sale.order,invoice_quantity:0
|
||||
msgid "Invoice on"
|
||||
msgstr ""
|
||||
msgstr "Rēķins pēc"
|
||||
|
||||
#. module: sale
|
||||
#: selection:sale.advance.payment.inv,advance_payment_method:0
|
||||
|
@ -1911,7 +1911,7 @@ msgstr "Datums, kad tika pasūtīts"
|
|||
#. module: sale
|
||||
#: field:sale.order.line,product_uos:0
|
||||
msgid "Product UoS"
|
||||
msgstr ""
|
||||
msgstr "Produkta pārdošanas mērvienība"
|
||||
|
||||
#. module: sale
|
||||
#: help:account.config.settings,group_analytic_account_for_sales:0
|
||||
|
@ -1921,22 +1921,22 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: model:process.node,note:sale.process_node_quotation0
|
||||
msgid "Draft state of sales order"
|
||||
msgstr ""
|
||||
msgstr "Pasūtījuma melnraksta statuss"
|
||||
|
||||
#. module: sale
|
||||
#: field:sale.order,origin:0
|
||||
msgid "Source Document"
|
||||
msgstr ""
|
||||
msgstr "Pamatojuma Dokuments"
|
||||
|
||||
#. module: sale
|
||||
#: selection:sale.report,month:0
|
||||
msgid "April"
|
||||
msgstr ""
|
||||
msgstr "Aprīlis"
|
||||
|
||||
#. module: sale
|
||||
#: selection:sale.report,state:0
|
||||
msgid "Manual In Progress"
|
||||
msgstr ""
|
||||
msgstr "Manuāls Progresā"
|
||||
|
||||
#. module: sale
|
||||
#: model:ir.actions.server,name:sale.actions_server_sale_order_unread
|
||||
|
@ -1978,7 +1978,7 @@ msgstr ""
|
|||
#: view:sale.order:0
|
||||
#: view:sale.order.line:0
|
||||
msgid "Search Sales Order"
|
||||
msgstr ""
|
||||
msgstr "Meklēt Pasūtījumu"
|
||||
|
||||
#. module: sale
|
||||
#: view:sale.config.settings:0
|
||||
|
@ -2005,12 +2005,12 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: model:process.transition,name:sale.process_transition_saleinvoice0
|
||||
msgid "From a sales order"
|
||||
msgstr ""
|
||||
msgstr "No pasūtījuma"
|
||||
|
||||
#. module: sale
|
||||
#: view:sale.order:0
|
||||
msgid "Ignore Exception"
|
||||
msgstr ""
|
||||
msgstr "Ignorēt Brīdinājumu"
|
||||
|
||||
#. module: sale
|
||||
#: model:process.transition,note:sale.process_transition_saleinvoice0
|
||||
|
@ -2035,7 +2035,7 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: help:sale.order,project_id:0
|
||||
msgid "The analytic account related to a sales order."
|
||||
msgstr ""
|
||||
msgstr "Ar pasūtījumu saistītais analītiskais konts."
|
||||
|
||||
#. module: sale
|
||||
#: report:sale.order:0
|
||||
|
@ -2086,7 +2086,7 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: field:sale.order,client_order_ref:0
|
||||
msgid "Customer Reference"
|
||||
msgstr ""
|
||||
msgstr "Klienta Kods"
|
||||
|
||||
#. module: sale
|
||||
#: view:sale.report:0
|
||||
|
@ -2113,7 +2113,7 @@ msgstr ""
|
|||
#. module: sale
|
||||
#: view:sale.order:0
|
||||
msgid "Total Tax Included"
|
||||
msgstr ""
|
||||
msgstr "Iekļauto Nodokļu Summa"
|
||||
|
||||
#. module: sale
|
||||
#: field:sale.order,invoice_exists:0
|
||||
|
@ -2360,9 +2360,6 @@ msgstr ""
|
|||
#~ msgid "Assign"
|
||||
#~ msgstr "Piešķirt"
|
||||
|
||||
#~ msgid "Delivery Order Only"
|
||||
#~ msgstr "Piegādes Pasūtījums Tikai"
|
||||
|
||||
#~ msgid "Sales order lines"
|
||||
#~ msgstr "Tirdzniecības pasūtījuma pozīcijas"
|
||||
|
||||
|
@ -2381,9 +2378,6 @@ msgstr ""
|
|||
#~ msgid "Shipping & Manual Invoice"
|
||||
#~ msgstr "Piegāde un Manuāls Rēķins"
|
||||
|
||||
#~ msgid "UoM"
|
||||
#~ msgstr "mērv."
|
||||
|
||||
#~ msgid "Sale Invoice"
|
||||
#~ msgstr "Rēķins"
|
||||
|
||||
|
@ -2484,3 +2478,279 @@ msgstr ""
|
|||
|
||||
#~ msgid "Invoice Based on Deliveries"
|
||||
#~ msgstr "Rēķins pēc Piegādes"
|
||||
|
||||
#~ msgid "Sales by Salesman in last 90 days"
|
||||
#~ msgstr "Pārdošana pa Pārdevējiem pēdējās 90 dienās"
|
||||
|
||||
#~ msgid "Configure Sales Order Logistics"
|
||||
#~ msgstr "Konfigurēt Pasūtījuma Loģistiku"
|
||||
|
||||
#~ msgid "Allows you to compute delivery costs on your quotations."
|
||||
#~ msgstr "Ļauj aprēķināt piegādes izmaksas."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "If you don't have enough stock available to deliver all at once, do you "
|
||||
#~ "accept partial shipments or not?"
|
||||
#~ msgstr ""
|
||||
#~ "Vai piegādāt pasūtījumu pa daļām, ja noliktavā nav iespējams piegādāt visu "
|
||||
#~ "pasūtījumu vienlaicīgi?"
|
||||
|
||||
#, python-format
|
||||
#~ msgid "The quotation '%s' has been converted to a sales order."
|
||||
#~ msgstr "Tāmējums \"%s\" tika pārveidots par pasūtījumu."
|
||||
|
||||
#~ msgid "Dates"
|
||||
#~ msgstr "Datumi"
|
||||
|
||||
#~ msgid "Sales by Salesman"
|
||||
#~ msgstr "Pārdošana pēc Pārdevējiem"
|
||||
|
||||
#~ msgid "Conditions"
|
||||
#~ msgstr "Nosacījumi"
|
||||
|
||||
#~ msgid "Sales Manager Dashboard"
|
||||
#~ msgstr "Pārdevēja Instrumentu Panelis"
|
||||
|
||||
#~ msgid "Configure"
|
||||
#~ msgstr "Konfigurēt"
|
||||
|
||||
#, python-format
|
||||
#~ msgid "Could not cancel this sales order !"
|
||||
#~ msgstr "Nevar atcelt pasūtījumu!"
|
||||
|
||||
#~ msgid "Number Packages"
|
||||
#~ msgstr "Iepakojumu Skaits"
|
||||
|
||||
#, python-format
|
||||
#~ msgid "(n/a)"
|
||||
#~ msgstr "(nav pieejams)"
|
||||
|
||||
#~ msgid "Order Reference must be unique !"
|
||||
#~ msgstr "Pasūtījuma kodam ir jābūt unikālam!"
|
||||
|
||||
#~ msgid "Lines to Invoice"
|
||||
#~ msgstr "Rindas, par kurām piestādīt Rēķinu."
|
||||
|
||||
#~ msgid "Do you really want to create the invoice(s) ?"
|
||||
#~ msgstr "Vai tiešām vēlaties piestādīt rēķinu(-s)?"
|
||||
|
||||
#~ msgid "All Quotations"
|
||||
#~ msgstr "Visi Tāmējumi"
|
||||
|
||||
#, python-format
|
||||
#~ msgid "Could not cancel sales order line!"
|
||||
#~ msgstr "Nevar atcelt pasūtījuma rindu!"
|
||||
|
||||
#~ msgid "Sales By Month"
|
||||
#~ msgstr "Pārdošana Pa Mēnešiem"
|
||||
|
||||
#~ msgid "Procurement of sold material"
|
||||
#~ msgstr "Pārdoto preču piegāde"
|
||||
|
||||
#~ msgid " Year "
|
||||
#~ msgstr " Gads "
|
||||
|
||||
#~ msgid "Companies"
|
||||
#~ msgstr "Uzņēmumi"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "The name and address of the contact who requested the order or quotation."
|
||||
#~ msgstr "Pasūtītāja vārds un adrese."
|
||||
|
||||
#~ msgid "Create Final Invoice"
|
||||
#~ msgstr "Veidot Gala Rēķinu"
|
||||
|
||||
#~ msgid "Sales by Partner"
|
||||
#~ msgstr "Pārdošana pa Partneriem"
|
||||
|
||||
#~ msgid "Sales Order Dates"
|
||||
#~ msgstr "Pasūtījumu Datumi"
|
||||
|
||||
#~ msgid "Open Invoice"
|
||||
#~ msgstr "Atvērt Rēķinu"
|
||||
|
||||
#~ msgid "on order"
|
||||
#~ msgstr "pie pasūtījuma"
|
||||
|
||||
#~ msgid "Delivery Costs"
|
||||
#~ msgstr "Piegādes Izmaksas"
|
||||
|
||||
#~ msgid "Deliveries to Invoice"
|
||||
#~ msgstr "Piegādes, par kurām piestādīt rēķinus"
|
||||
|
||||
#~ msgid "Order date"
|
||||
#~ msgstr "Pasūtījuma datums"
|
||||
|
||||
#~ msgid "Invoicing"
|
||||
#~ msgstr "Rēķinu izrakstīšana"
|
||||
|
||||
#, python-format
|
||||
#~ msgid "The sales order '%s' has been cancelled."
|
||||
#~ msgstr "Pasūtījums \"%s\" ir atcelts."
|
||||
|
||||
#~ msgid "Configuration Progress"
|
||||
#~ msgstr "Konfigurācijas Progress"
|
||||
|
||||
#~ msgid "You invoice has been successfully created!"
|
||||
#~ msgstr "Rēķins ir veiksmīgi izveidots!"
|
||||
|
||||
#~ msgid "Shipped Qty"
|
||||
#~ msgstr "Piegādātais Daudz."
|
||||
|
||||
#~ msgid "Delivered"
|
||||
#~ msgstr "Piegādāts"
|
||||
|
||||
#, python-format
|
||||
#~ msgid "The sales order '%s' has been set in draft state."
|
||||
#~ msgstr "Pasūtījums \"%s\" ir atzīmēts kā melnraksts."
|
||||
|
||||
#, python-format
|
||||
#~ msgid "Warning !"
|
||||
#~ msgstr "Uzmanību!"
|
||||
|
||||
#~ msgid "Procurement Order"
|
||||
#~ msgstr "Iepirkuma Pasūtījums"
|
||||
|
||||
#~ msgid "UoM"
|
||||
#~ msgstr "Mērv."
|
||||
|
||||
#, python-format
|
||||
#~ msgid "You must first cancel stock moves attached to this sales order line."
|
||||
#~ msgstr "Vispirms jāatceļ saistītie noliktavas grāmatojumi."
|
||||
|
||||
#~ msgid "Sales Open Invoice"
|
||||
#~ msgstr "Atvērt Rēķinu"
|
||||
|
||||
#~ msgid "Security Days"
|
||||
#~ msgstr "Rezerves Dienas"
|
||||
|
||||
#, python-format
|
||||
#~ msgid "You cannot cancel a sales order line that has already been invoiced !"
|
||||
#~ msgstr "Nevar atcelt pasūtījuma rindu, par kuru jau ir piestādīts rēķins!"
|
||||
|
||||
#~ msgid "Margins in Sales Orders"
|
||||
#~ msgstr "Uzcenojumi Pasūtījumiem"
|
||||
|
||||
#~ msgid "Total Tax Excluded"
|
||||
#~ msgstr "Nodokļa Summa, kas nav Iekļauta"
|
||||
|
||||
#~ msgid "Sales by Product Category"
|
||||
#~ msgstr "Pārdošana pa Produktu Kategorijām"
|
||||
|
||||
#~ msgid "Procurement Method"
|
||||
#~ msgstr "Sagādes Veids"
|
||||
|
||||
#~ msgid "Pick List"
|
||||
#~ msgstr "Komplektācijas Saraksts"
|
||||
|
||||
#~ msgid "Sales per Customer in last 90 days"
|
||||
#~ msgstr "Pārdošana pa Klientiem pēdējās 90 dienās"
|
||||
|
||||
#~ msgid "Invoice From The Picking"
|
||||
#~ msgstr "Veidot Rēķinu Pēc Komplektācijas"
|
||||
|
||||
#, python-format
|
||||
#~ msgid "Picking Information !"
|
||||
#~ msgstr "Informācija par Komplektāciju"
|
||||
|
||||
#, python-format
|
||||
#~ msgid "Could not cancel sales order !"
|
||||
#~ msgstr "Nevar atcelt pasūtījumu!"
|
||||
|
||||
#~ msgid "Properties"
|
||||
#~ msgstr "Parametri"
|
||||
|
||||
#~ msgid "Logistic"
|
||||
#~ msgstr "Loģistika"
|
||||
|
||||
#~ msgid " Month "
|
||||
#~ msgstr " Mēnesis "
|
||||
|
||||
#, python-format
|
||||
#~ msgid "Warning"
|
||||
#~ msgstr "Brīdinājums"
|
||||
|
||||
#~ msgid "Sales by Month"
|
||||
#~ msgstr "Pārdošana pa Mēnešiem"
|
||||
|
||||
#~ msgid "Delivery Lead Time"
|
||||
#~ msgstr "Piegādes laiks"
|
||||
|
||||
#~ msgid "Image"
|
||||
#~ msgstr "Attēls"
|
||||
|
||||
#~ msgid "Error! You can not create recursive companies."
|
||||
#~ msgstr "Kļūda! Jums nav tiesību veidot rekursīvus uzņēmumus."
|
||||
|
||||
#~ msgid "Invoicing journals"
|
||||
#~ msgstr "Rēķinu žurnāli"
|
||||
|
||||
#~ msgid "Ordered Date"
|
||||
#~ msgstr "Pasūtījuma Veikšanas Datums"
|
||||
|
||||
#~ msgid "Configure Your Sales Management Application"
|
||||
#~ msgstr "Konfigurēt Tirdzniecības Vadības Moduli"
|
||||
|
||||
#~ msgid "Sales Order Layout Improvement"
|
||||
#~ msgstr "Pasūtījuma Izkārtojuma Uzlabojums"
|
||||
|
||||
#, python-format
|
||||
#~ msgid "You must first cancel all invoices attached to this sales order."
|
||||
#~ msgstr "Vispirms jāatceļ visi rēķini, kas saistīti ar pasūtījumu."
|
||||
|
||||
#, python-format
|
||||
#~ msgid "Not enough stock !"
|
||||
#~ msgstr "Nav pietiekošs skaits noliktavā!"
|
||||
|
||||
#~ msgid "Layout Sequence"
|
||||
#~ msgstr "Izkārtojuma Secība"
|
||||
|
||||
#, python-format
|
||||
#~ msgid "Cannot delete Sales Order(s) which are already confirmed !"
|
||||
#~ msgstr "Nevar izdzēst jau apstiprināto(-s) Pasūtījumu(-s)!"
|
||||
|
||||
#~ msgid "Accounting"
|
||||
#~ msgstr "Grāmatvedība"
|
||||
|
||||
#~ msgid "You must assign a production lot for this product"
|
||||
#~ msgstr "Šim produktam ir jāpiesaista produkcijas lots"
|
||||
|
||||
#~ msgid "State"
|
||||
#~ msgstr "Statuss"
|
||||
|
||||
#~ msgid "Delivery Order Only"
|
||||
#~ msgstr "Veikt Tikai Piegādi"
|
||||
|
||||
#~ msgid "Picking Default Policy"
|
||||
#~ msgstr "Komplektācijas Noteikumi"
|
||||
|
||||
#~ msgid "References"
|
||||
#~ msgstr "Kodi"
|
||||
|
||||
#~ msgid "Based on the shipped or on the ordered quantities."
|
||||
#~ msgstr "Balstīts uz piegādāto vai pasūtīto skaitu."
|
||||
|
||||
#~ msgid "Related Picking"
|
||||
#~ msgstr "Saistītā Komplektēšana Noliktavā"
|
||||
|
||||
#~ msgid "Create Pick List"
|
||||
#~ msgstr "Veidot Komplektēšanas Sarakstu"
|
||||
|
||||
#~ msgid "Create Delivery Order"
|
||||
#~ msgstr "Veidot Piegādes Rīkojumu"
|
||||
|
||||
#~ msgid "Create Procurement Order"
|
||||
#~ msgstr "Veidot Piegādes Pasūtījumu"
|
||||
|
||||
#~ msgid "Picking List"
|
||||
#~ msgstr "Komplektēšanas Saraksts"
|
||||
|
||||
#, python-format
|
||||
#~ msgid "You must first cancel all picking attached to this sales order."
|
||||
#~ msgstr "Vispirms jāatceļ visa komplektācija, kas saistīta ar pasūtījumu."
|
||||
|
||||
#~ msgid "Picking Policy"
|
||||
#~ msgstr "Komplektācijas Noteikumi"
|
||||
|
||||
#~ msgid "Picking List & Delivery Order"
|
||||
#~ msgstr "Komplektācijas Saraksts un Piegādes Pasūtījums"
|
||||
|
|
|
@ -329,7 +329,7 @@ Thanks!</field>
|
|||
<field name="type">service</field>
|
||||
<field name="list_price">150.0</field>
|
||||
<field name="standard_price">100.0</field>
|
||||
<field name="supply_method">produce</field>
|
||||
<field name="supply_method">produce</field> <!-- TODO this is a procurement field, which is not a sale dependency -->
|
||||
<field name="uom_id" ref="product.product_uom_day"/>
|
||||
<field name="uom_po_id" ref="product.product_uom_day"/>
|
||||
<field name="company_id" eval="[]"/>
|
||||
|
|
|
@ -54,12 +54,8 @@ instance.web_shortcuts.Shortcuts = instance.web.Widget.extend({
|
|||
},
|
||||
add: function (sc) {
|
||||
var self = this;
|
||||
this.dataset.create(sc, function (out) {
|
||||
self.trigger('display', {
|
||||
name : sc.name,
|
||||
id : out.result,
|
||||
res_id : sc.res_id
|
||||
});
|
||||
this.dataset.create(sc).then(function(out){
|
||||
self.trigger('load');
|
||||
});
|
||||
},
|
||||
display: function(sc) {
|
||||
|
|
Loading…
Reference in New Issue