From 07881a0c50b00635f5becbb7c0c3b416f34e1263 Mon Sep 17 00:00:00 2001
From: "Naresh (OpenERP)"
Date: Fri, 2 Sep 2011 17:18:53 +0530
Subject: [PATCH 001/106] [REF]:execute method in audittrail_objects_proxy
bzr revid: nch@tinyerp.com-20110902114853-z7f1uofjgh8poq0z
---
addons/audittrail/audittrail.py | 39 +++++++++++++--------------------
1 file changed, 15 insertions(+), 24 deletions(-)
diff --git a/addons/audittrail/audittrail.py b/addons/audittrail/audittrail.py
index bfa6bca8f34..ffb44502ba4 100644
--- a/addons/audittrail/audittrail.py
+++ b/addons/audittrail/audittrail.py
@@ -292,7 +292,7 @@ class audittrail_objects_proxy(object_proxy):
def log_fct(self, db, uid, model, method, fct_src, *args):
"""
- Logging function: This function is performs logging oprations according to method
+ Logging function: This function is performs logging operations according to method
@param db: the current database
@param uid: the current user’s ID for security checks,
@param object: Object who's values are being changed
@@ -482,41 +482,32 @@ class audittrail_objects_proxy(object_proxy):
cr = pooler.get_db(db).cursor()
cr.autocommit(True)
logged_uids = []
+ rule = False
+ ignore_methods = ['default_get','read','fields_view_get','fields_get','search',
+ 'search_count','name_search','name_get','get','request_get',
+ 'get_sc', 'unlink', 'write', 'create']
fct_src = super(audittrail_objects_proxy, self).execute
-
- def my_fct(db, uid, model, method, *args):
- rule = False
+ try:
model_ids = model_pool.search(cr, uid, [('model', '=', model)])
model_id = model_ids and model_ids[0] or False
-
- for model_name in pool.obj_list():
- if model_name == 'audittrail.rule':
- rule = True
- if not rule:
- return fct_src(db, uid_orig, model, method, *args)
- if not model_id:
- return fct_src(db, uid_orig, model, method, *args)
-
+ if 'audittrail.rule' in pool.obj_list():
+ rule = True
+ if not rule or not model_id:
+ return fct_src(db, uid_orig, model, method, *args)
rule_ids = rule_pool.search(cr, uid, [('object_id', '=', model_id), ('state', '=', 'subscribed')])
if not rule_ids:
return fct_src(db, uid_orig, model, method, *args)
- for thisrule in rule_pool.browse(cr, uid, rule_ids):
- for user in thisrule.user_id:
- logged_uids.append(user.id)
+ for model_rule in rule_pool.browse(cr, uid, rule_ids):
+ logged_uids += map(lambda x:x.id, model_rule.user_id)
if not logged_uids or uid in logged_uids:
if method in ('read', 'write', 'create', 'unlink'):
- if getattr(thisrule, 'log_' + method):
+ if getattr(model_rule, 'log_' + method):
return self.log_fct(db, uid_orig, model, method, fct_src, *args)
-
- elif method not in ('default_get','read','fields_view_get','fields_get','search','search_count','name_search','name_get','get','request_get', 'get_sc', 'unlink', 'write', 'create'):
- if thisrule.log_action:
+ elif method not in ignore_methods:
+ if model_rule.log_action:
return self.log_fct(db, uid_orig, model, method, fct_src, *args)
-
return fct_src(db, uid_orig, model, method, *args)
- try:
- res = my_fct(db, uid, model, method, *args)
- return res
finally:
cr.close()
From 2fef7cd890150c20b4cb9835d601263de1ba5632 Mon Sep 17 00:00:00 2001
From: "Naresh (OpenERP)"
Date: Mon, 5 Sep 2011 14:39:26 +0530
Subject: [PATCH 002/106] [IMP]:refactored with speed
improvement:get_value_text method
bzr revid: nch@tinyerp.com-20110905090926-jjklwr3p12sbjzl2
---
addons/audittrail/audittrail.py | 50 +++++++++++----------------------
1 file changed, 16 insertions(+), 34 deletions(-)
diff --git a/addons/audittrail/audittrail.py b/addons/audittrail/audittrail.py
index ffb44502ba4..0780679f49c 100644
--- a/addons/audittrail/audittrail.py
+++ b/addons/audittrail/audittrail.py
@@ -203,37 +203,22 @@ class audittrail_objects_proxy(object_proxy):
if field_name in('__last_update','id'):
return values
pool = pooler.get_pool(cr.dbname)
- field_pool = pool.get('ir.model.fields')
- model_pool = pool.get('ir.model')
obj_pool = pool.get(model.model)
- if obj_pool._inherits:
- inherits_ids = model_pool.search(cr, uid, [('model', '=', obj_pool._inherits.keys()[0])])
- field_ids = field_pool.search(cr, uid, [('name', '=', field_name), ('model_id', 'in', (model.id, inherits_ids[0]))])
- else:
- field_ids = field_pool.search(cr, uid, [('name', '=', field_name), ('model_id', '=', model.id)])
- field_id = field_ids and field_ids[0] or False
- assert field_id, _("'%s' field does not exist in '%s' model" %(field_name, model.model))
-
- field = field_pool.read(cr, uid, field_id)
- relation_model = field['relation']
- relation_model_pool = relation_model and pool.get(relation_model) or False
-
- if field['ttype'] == 'many2one':
- res = False
- relation_id = False
- if values and type(values) == tuple:
- relation_id = values[0]
- if relation_id and relation_model_pool:
- relation_model_object = relation_model_pool.read(cr, uid, relation_id, [relation_model_pool._rec_name])
- res = relation_model_object[relation_model_pool._rec_name]
- return res
-
- elif field['ttype'] in ('many2many','one2many'):
- res = []
- for relation_model_object in relation_model_pool.read(cr, uid, values, [relation_model_pool._rec_name]):
- res.append(relation_model_object[relation_model_pool._rec_name])
- return res
-
+ field_obj = obj_pool._all_columns.get(field_name, False)
+ assert field_obj, _("'%s' field does not exist in '%s' model" %(field_name, model.model))
+ field_obj = field_obj.column
+ if field_obj._obj:
+ relation_model_pool = pool.get(field_obj._obj)
+ relational_rec_name = relation_model_pool._rec_name
+ if field_obj._type == 'many2one':
+ if values and isinstance(values, tuple):
+ if values[0]:
+ relation_model_object = relation_model_pool.read(cr, uid, values[0], [relational_rec_name])
+ return relation_model_object.get(relational_rec_name)
+ return False
+ elif field_obj._type in ('many2many','one2many'):
+ data = relation_model_pool.read(cr, uid, values, [relational_rec_name])
+ return map(lambda x:x.get(relational_rec_name, False), data)
return values
def create_log_line(self, cr, uid, log_id, model, lines=[]):
@@ -482,7 +467,6 @@ class audittrail_objects_proxy(object_proxy):
cr = pooler.get_db(db).cursor()
cr.autocommit(True)
logged_uids = []
- rule = False
ignore_methods = ['default_get','read','fields_view_get','fields_get','search',
'search_count','name_search','name_get','get','request_get',
'get_sc', 'unlink', 'write', 'create']
@@ -490,9 +474,7 @@ class audittrail_objects_proxy(object_proxy):
try:
model_ids = model_pool.search(cr, uid, [('model', '=', model)])
model_id = model_ids and model_ids[0] or False
- if 'audittrail.rule' in pool.obj_list():
- rule = True
- if not rule or not model_id:
+ if not ('audittrail.rule' in pool.obj_list()) or not model_id:
return fct_src(db, uid_orig, model, method, *args)
rule_ids = rule_pool.search(cr, uid, [('object_id', '=', model_id), ('state', '=', 'subscribed')])
if not rule_ids:
From 9ebdf040f574d1da0697435fdc4acae864085aec Mon Sep 17 00:00:00 2001
From: "Naresh (OpenERP)"
Date: Mon, 5 Sep 2011 15:08:41 +0530
Subject: [PATCH 003/106] [IMP]:refactored create_log_line method
bzr revid: nch@tinyerp.com-20110905093841-uk7nke7e36gsf4ig
---
addons/audittrail/audittrail.py | 39 ++++++++++++++-------------------
1 file changed, 16 insertions(+), 23 deletions(-)
diff --git a/addons/audittrail/audittrail.py b/addons/audittrail/audittrail.py
index 0780679f49c..99382797d72 100644
--- a/addons/audittrail/audittrail.py
+++ b/addons/audittrail/audittrail.py
@@ -235,43 +235,36 @@ class audittrail_objects_proxy(object_proxy):
model_pool = pool.get('ir.model')
field_pool = pool.get('ir.model.fields')
log_line_pool = pool.get('audittrail.log.line')
- #start Loop
for line in lines:
- if line['name'] in('__last_update','id'):
+ if line['name'] in ('__last_update','id'):
continue
+ field_obj = obj_pool._all_columns.get(line['name'], False)
+ assert field_obj, _("'%s' field does not exist in '%s' model" %(line['name'], model.model))
+ field_obj = field_obj.column
+ old_value = line.get('old_value', '')
+ new_value = line.get('new_value', '')
+ old_value_text = line.get('old_value_text', '')
+ new_value_text = line.get('new_value_text', '')
+ search_models = [ model.id ]
if obj_pool._inherits:
- inherits_ids = model_pool.search(cr, uid, [('model', '=', obj_pool._inherits.keys()[0])])
- field_ids = field_pool.search(cr, uid, [('name', '=', line['name']), ('model_id', 'in', (model.id, inherits_ids[0]))])
- else:
- field_ids = field_pool.search(cr, uid, [('name', '=', line['name']), ('model_id', '=', model.id)])
- field_id = field_ids and field_ids[0] or False
- assert field_id, _("'%s' field does not exist in '%s' model" %(line['name'], model.model))
-
- field = field_pool.read(cr, uid, field_id)
- old_value = 'old_value' in line and line['old_value'] or ''
- new_value = 'new_value' in line and line['new_value'] or ''
- old_value_text = 'old_value_text' in line and line['old_value_text'] or ''
- new_value_text = 'new_value_text' in line and line['new_value_text'] or ''
-
+ search_models += model_pool.search(cr, uid, [('model', 'in', obj_pool._inherits.keys())])
+ field_id = field_pool.search(cr, uid, [('name', '=', line['name']), ('model_id', 'in', search_models)])
if old_value_text == new_value_text:
continue
- if field['ttype'] == 'many2one':
- if type(old_value) == tuple:
- old_value = old_value[0]
- if type(new_value) == tuple:
- new_value = new_value[0]
+ if field_obj._type == 'many2one':
+ old_value = isinstance(old_value, tuple) and old_value[0] or old_value
+ new_value = isinstance(new_value, tuple) and new_value[0] or new_value
vals = {
"log_id": log_id,
- "field_id": field_id,
+ "field_id": field_id and field_id[0] or False,
"old_value": old_value,
"new_value": new_value,
"old_value_text": old_value_text,
"new_value_text": new_value_text,
- "field_description": field['field_description']
+ "field_description": field_obj.string
}
line_id = log_line_pool.create(cr, uid, vals)
cr.commit()
- #End Loop
return True
From 2a828b8f5e86ce16bce6a114a34a8f893bed7c6e Mon Sep 17 00:00:00 2001
From: "Naresh (OpenERP)"
Date: Mon, 5 Sep 2011 17:38:46 +0530
Subject: [PATCH 004/106] [IMP]:refactored log_fct to include create for o2m,
m2m method
bzr revid: nch@tinyerp.com-20110905120846-sletd1fvcfloqdxy
---
addons/audittrail/audittrail.py | 55 +++++++++++++++++++--------------
1 file changed, 31 insertions(+), 24 deletions(-)
diff --git a/addons/audittrail/audittrail.py b/addons/audittrail/audittrail.py
index 99382797d72..841eda00d29 100644
--- a/addons/audittrail/audittrail.py
+++ b/addons/audittrail/audittrail.py
@@ -292,31 +292,38 @@ class audittrail_objects_proxy(object_proxy):
model_id = model_ids and model_ids[0] or False
assert model_id, _("'%s' Model does not exist..." %(model))
model = model_pool.browse(cr, uid, model_id)
-
+ relational_table_log = args and args[-1] == 'child_relation_log' or False
if method in ('create'):
- res_id = fct_src(db, uid_orig, model.model, method, *args)
- cr.commit()
- resource = resource_pool.read(cr, uid, res_id, args[0].keys())
- vals = {
- "method": method,
- "object_id": model.id,
- "user_id": uid_orig,
- "res_id": resource['id'],
- }
- if 'id' in resource:
- del resource['id']
- log_id = log_pool.create(cr, uid, vals)
- lines = []
- for field in resource:
- line = {
- 'name': field,
- 'new_value': resource[field],
- 'new_value_text': self.get_value_text(cr, uid, field, resource[field], model)
- }
- lines.append(line)
- self.create_log_line(cr, uid, log_id, model, lines)
-
- cr.commit()
+ fields_to_read = []
+ if relational_table_log:
+ res_id = args[0]
+ else:
+ res_id = fct_src(db, uid_orig, model.model, method, *args)
+ cr.commit()
+ fields_to_read = args[0].keys()
+ resource = resource_pool.read(cr, uid, res_id, fields_to_read)
+ if not isinstance(resource, list):
+ resource = [resource]
+ vals = { 'method': method, 'object_id': model.id,'user_id': uid_orig}
+ for resource_data in resource:
+ vals.update({'res_id': resource_data['id']})
+ if 'id' in resource_data:
+ del resource_data['id']
+ log_id = log_pool.create(cr, uid, vals)
+ lines = []
+ for field in resource_data:
+ field_obj = resource_pool._all_columns.get(field, False)
+ field_obj = field_obj.column
+ if field_obj._type in ('one2many','many2many'):
+ self.log_fct(db, uid, field_obj._obj, method, None, resource_data[field], 'child_relation_log')
+ line = {
+ 'name': field,
+ 'new_value': resource_data[field],
+ 'new_value_text': self.get_value_text(cr, uid, field, resource_data[field], model)
+ }
+ lines.append(line)
+ self.create_log_line(cr, uid, log_id, model, lines)
+ cr.commit()
cr.close()
return res_id
From 43ff15c84d7f6f674e0201a2674b2a5a4e3c7082 Mon Sep 17 00:00:00 2001
From: "Naresh (OpenERP)"
Date: Tue, 6 Sep 2011 11:01:24 +0530
Subject: [PATCH 005/106] [IMP]:get_value_text to use name_get for x2m and
simply return [1] arg for m2o tuple
bzr revid: nch@tinyerp.com-20110906053124-a3kw3j2g3weln60q
---
addons/audittrail/audittrail.py | 16 +++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)
diff --git a/addons/audittrail/audittrail.py b/addons/audittrail/audittrail.py
index 841eda00d29..1d42000488d 100644
--- a/addons/audittrail/audittrail.py
+++ b/addons/audittrail/audittrail.py
@@ -204,21 +204,19 @@ class audittrail_objects_proxy(object_proxy):
return values
pool = pooler.get_pool(cr.dbname)
obj_pool = pool.get(model.model)
- field_obj = obj_pool._all_columns.get(field_name, False)
+ field_obj = obj_pool._all_columns.get(field_name)
assert field_obj, _("'%s' field does not exist in '%s' model" %(field_name, model.model))
field_obj = field_obj.column
if field_obj._obj:
relation_model_pool = pool.get(field_obj._obj)
relational_rec_name = relation_model_pool._rec_name
if field_obj._type == 'many2one':
- if values and isinstance(values, tuple):
- if values[0]:
- relation_model_object = relation_model_pool.read(cr, uid, values[0], [relational_rec_name])
- return relation_model_object.get(relational_rec_name)
- return False
+ if values:
+ return values[1]
+ return values
elif field_obj._type in ('many2many','one2many'):
- data = relation_model_pool.read(cr, uid, values, [relational_rec_name])
- return map(lambda x:x.get(relational_rec_name, False), data)
+ data = relation_model_pool.name_get(cr, uid, values)
+ return map(lambda x:x[1], data)
return values
def create_log_line(self, cr, uid, log_id, model, lines=[]):
@@ -312,7 +310,7 @@ class audittrail_objects_proxy(object_proxy):
log_id = log_pool.create(cr, uid, vals)
lines = []
for field in resource_data:
- field_obj = resource_pool._all_columns.get(field, False)
+ field_obj = resource_pool._all_columns.get(field)
field_obj = field_obj.column
if field_obj._type in ('one2many','many2many'):
self.log_fct(db, uid, field_obj._obj, method, None, resource_data[field], 'child_relation_log')
From 1947eed2df667bfd59b7c42306e19ab390170e96 Mon Sep 17 00:00:00 2001
From: "Naresh (OpenERP)"
Date: Tue, 6 Sep 2011 11:24:31 +0530
Subject: [PATCH 006/106] [IMP]:support for x2m log unlink
bzr revid: nch@tinyerp.com-20110906055431-a87bvbm0o7p1hts5
---
addons/audittrail/audittrail.py | 24 +++++++++++-------------
1 file changed, 11 insertions(+), 13 deletions(-)
diff --git a/addons/audittrail/audittrail.py b/addons/audittrail/audittrail.py
index 1d42000488d..3f4417a15bb 100644
--- a/addons/audittrail/audittrail.py
+++ b/addons/audittrail/audittrail.py
@@ -359,33 +359,31 @@ class audittrail_objects_proxy(object_proxy):
elif method in ('unlink'):
res_ids = args[0]
+ res = False
old_values = {}
for res_id in res_ids:
old_values[res_id] = resource_pool.read(cr, uid, res_id)
-
+ vals = {'method': method,'object_id': model.id,'user_id': uid_orig}
for res_id in res_ids:
- vals = {
- "method": method,
- "object_id": model.id,
- "user_id": uid_orig,
- "res_id": res_id,
-
- }
+ vals.update({'res_id': res_id})
log_id = log_pool.create(cr, uid, vals)
lines = []
for field in old_values[res_id]:
- if field in ('id'):
- continue
+ if field == 'id': continue
+ field_obj = resource_pool._all_columns.get(field)
+ field_obj = field_obj.column
+ if field_obj._type in ('one2many','many2many'):
+ self.log_fct(db, uid, field_obj._obj, method, None, old_values[res_id][field], 'child_relation_log')
line = {
'name': field,
'old_value': old_values[res_id][field],
'old_value_text': self.get_value_text(cr, uid, field, old_values[res_id][field], model)
}
lines.append(line)
-
self.create_log_line(cr, uid, log_id, model, lines)
- res = fct_src(db, uid_orig, model.model, method, *args)
- cr.commit()
+ if not relational_table_log:
+ res = fct_src(db, uid_orig, model.model, method, *args)
+ cr.commit()
cr.close()
return res
else:
From d213821ea0dc2b000f95df025be8f45cefa63330 Mon Sep 17 00:00:00 2001
From: "Naresh (OpenERP)"
Date: Tue, 6 Sep 2011 11:52:41 +0530
Subject: [PATCH 007/106] [IMP]:x2m logging when there is any action execute
like on_change,copy etc
bzr revid: nch@tinyerp.com-20110906062241-373t8wqelc9jsyk9
---
addons/audittrail/audittrail.py | 46 +++++++++++++++------------------
1 file changed, 21 insertions(+), 25 deletions(-)
diff --git a/addons/audittrail/audittrail.py b/addons/audittrail/audittrail.py
index 3f4417a15bb..ed4fc5a551d 100644
--- a/addons/audittrail/audittrail.py
+++ b/addons/audittrail/audittrail.py
@@ -236,7 +236,7 @@ class audittrail_objects_proxy(object_proxy):
for line in lines:
if line['name'] in ('__last_update','id'):
continue
- field_obj = obj_pool._all_columns.get(line['name'], False)
+ field_obj = obj_pool._all_columns.get(line['name'])
assert field_obj, _("'%s' field does not exist in '%s' model" %(line['name'], model.model))
field_obj = field_obj.column
old_value = line.get('old_value', '')
@@ -250,8 +250,8 @@ class audittrail_objects_proxy(object_proxy):
if old_value_text == new_value_text:
continue
if field_obj._type == 'many2one':
- old_value = isinstance(old_value, tuple) and old_value[0] or old_value
- new_value = isinstance(new_value, tuple) and new_value[0] or new_value
+ old_value = old_value[0]
+ new_value = new_value[0]
vals = {
"log_id": log_id,
"field_id": field_id and field_id[0] or False,
@@ -305,8 +305,7 @@ class audittrail_objects_proxy(object_proxy):
vals = { 'method': method, 'object_id': model.id,'user_id': uid_orig}
for resource_data in resource:
vals.update({'res_id': resource_data['id']})
- if 'id' in resource_data:
- del resource_data['id']
+ del resource_data['id']
log_id = log_pool.create(cr, uid, vals)
lines = []
for field in resource_data:
@@ -393,38 +392,36 @@ class audittrail_objects_proxy(object_proxy):
res_ids = args[0]
old_values = {}
fields = []
- if len(args)>1 and type(args[1]) == dict:
+ if len(args) > 1 and isinstance(args[1], dict):
fields = args[1].keys()
- if type(res_ids) in (long, int):
+ if isinstance(res_ids, (long, int)):
res_ids = [res_ids]
if res_ids:
- for resource in resource_pool.read(cr, uid, res_ids):
+ resource_data = resource_pool.read(cr, uid, res_ids)
+ for resource in resource_data:
resource_id = resource['id']
- if 'id' in resource:
- del resource['id']
+ del resource['id']
old_values_text = {}
old_value = {}
for field in resource.keys():
+ field_obj = resource_pool._all_columns.get(field)
+ field_obj = field_obj.column
+ if field_obj._type in ('one2many','many2many'):
+ self.log_fct(db, uid, field_obj._obj, method, None, resource[field], 'child_relation_log')
old_value[field] = resource[field]
old_values_text[field] = self.get_value_text(cr, uid, field, resource[field], model)
old_values[resource_id] = {'text':old_values_text, 'value': old_value}
-
- res = fct_src(db, uid_orig, model.model, method, *args)
- cr.commit()
+ if not relational_table_log:
+ res = fct_src(db, uid_orig, model.model, method, *args)
+ cr.commit()
if res_ids:
- for resource in resource_pool.read(cr, uid, res_ids):
+ resource_data = resource_pool.read(cr, uid, res_ids)
+ vals = {'method': method,'object_id': model.id,'user_id': uid_orig }
+ for resource in resource_data:
resource_id = resource['id']
- if 'id' in resource:
- del resource['id']
- vals = {
- "method": method,
- "object_id": model.id,
- "user_id": uid_orig,
- "res_id": resource_id,
- }
-
-
+ del resource['id']
+ vals.update({'res_id': resource_id})
log_id = log_pool.create(cr, uid, vals)
lines = []
for field in resource.keys():
@@ -436,7 +433,6 @@ class audittrail_objects_proxy(object_proxy):
'old_value_text': old_values[resource_id]['text'][field]
}
lines.append(line)
-
self.create_log_line(cr, uid, log_id, model, lines)
cr.commit()
cr.close()
From c70d21b6227dac93a0765e80f80a80a3718c532e Mon Sep 17 00:00:00 2001
From: "Naresh (OpenERP)"
Date: Tue, 6 Sep 2011 12:24:16 +0530
Subject: [PATCH 008/106] [IMP]:refactored: removed code duplication
bzr revid: nch@tinyerp.com-20110906065416-33abo0zg1e6n55v5
---
addons/audittrail/audittrail.py | 85 +++++++++++----------------------
1 file changed, 28 insertions(+), 57 deletions(-)
diff --git a/addons/audittrail/audittrail.py b/addons/audittrail/audittrail.py
index ed4fc5a551d..4fd99d7bba3 100644
--- a/addons/audittrail/audittrail.py
+++ b/addons/audittrail/audittrail.py
@@ -250,8 +250,8 @@ class audittrail_objects_proxy(object_proxy):
if old_value_text == new_value_text:
continue
if field_obj._type == 'many2one':
- old_value = old_value[0]
- new_value = new_value[0]
+ old_value = old_value and old_value[0] or old_value
+ new_value = new_value and new_value[0] or new_value
vals = {
"log_id": log_id,
"field_id": field_id and field_id[0] or False,
@@ -439,90 +439,61 @@ class audittrail_objects_proxy(object_proxy):
return res
return True
-
-
- def execute(self, db, uid, model, method, *args, **kw):
+ def audit_log_call(self, db, uid, model, method, action_type, *args, **argv):
"""
Overrides Object Proxy execute method
@param db: the current database
@param uid: the current user's ID for security checks,
@param object: Object who's values are being changed
@param method: get any method and create log
-
+ @param action_type: either 'execute' or 'workflow'
@return: Returns result as per method of Object proxy
"""
uid_orig = uid
uid = 1
pool = pooler.get_pool(db)
+ logged_uids = []
model_pool = pool.get('ir.model')
rule_pool = pool.get('audittrail.rule')
cr = pooler.get_db(db).cursor()
cr.autocommit(True)
- logged_uids = []
- ignore_methods = ['default_get','read','fields_view_get','fields_get','search',
- 'search_count','name_search','name_get','get','request_get',
- 'get_sc', 'unlink', 'write', 'create']
- fct_src = super(audittrail_objects_proxy, self).execute
+ if action_type == 'execute':
+ ignore_methods = ['default_get','read','fields_view_get','fields_get','search',
+ 'search_count','name_search','name_get','get','request_get',
+ 'get_sc', 'unlink', 'write', 'create']
+ fct_src = super(audittrail_objects_proxy, self).execute
+ else:
+ fct_src = super(audittrail_objects_proxy, self).exec_workflow
try:
model_ids = model_pool.search(cr, uid, [('model', '=', model)])
model_id = model_ids and model_ids[0] or False
if not ('audittrail.rule' in pool.obj_list()) or not model_id:
- return fct_src(db, uid_orig, model, method, *args)
+ return fct_src(db, uid_orig, model, method, *args, **argv)
rule_ids = rule_pool.search(cr, uid, [('object_id', '=', model_id), ('state', '=', 'subscribed')])
if not rule_ids:
- return fct_src(db, uid_orig, model, method, *args)
-
+ return fct_src(db, uid_orig, model, method, *args, **argv)
for model_rule in rule_pool.browse(cr, uid, rule_ids):
logged_uids += map(lambda x:x.id, model_rule.user_id)
if not logged_uids or uid in logged_uids:
- if method in ('read', 'write', 'create', 'unlink'):
- if getattr(model_rule, 'log_' + method):
+ if action_type == 'execute':
+ if method in ('read', 'write', 'create', 'unlink'):
+ if getattr(model_rule, 'log_' + method):
+ return self.log_fct(db, uid_orig, model, method, fct_src, *args)
+ elif method not in ignore_methods:
+ if model_rule.log_action:
+ return self.log_fct(db, uid_orig, model, method, fct_src, *args)
+ else:
+ if model_rule.log_workflow:
return self.log_fct(db, uid_orig, model, method, fct_src, *args)
- elif method not in ignore_methods:
- if model_rule.log_action:
- return self.log_fct(db, uid_orig, model, method, fct_src, *args)
- return fct_src(db, uid_orig, model, method, *args)
+ return fct_src(db, uid_orig, model, method, *args, **argv)
finally:
cr.close()
+ def execute(self, db, uid, model, method, *args, **argv):
+ return self.audit_log_call(db, uid, model, method, 'execute', *args, **argv)
+
def exec_workflow(self, db, uid, model, method, *args, **argv):
- uid_orig = uid
- uid = 1
-
- pool = pooler.get_pool(db)
- logged_uids = []
- fct_src = super(audittrail_objects_proxy, self).exec_workflow
- field = method
- rule = False
- model_pool = pool.get('ir.model')
- rule_pool = pool.get('audittrail.rule')
- cr = pooler.get_db(db).cursor()
- cr.autocommit(True)
- try:
- model_ids = model_pool.search(cr, uid, [('model', '=', model)])
- for obj_name in pool.obj_list():
- if obj_name == 'audittrail.rule':
- rule = True
- if not rule:
- return super(audittrail_objects_proxy, self).exec_workflow(db, uid_orig, model, method, *args, **argv)
- if not model_ids:
- return super(audittrail_objects_proxy, self).exec_workflow(db, uid_orig, model, method, *args, **argv)
-
- rule_ids = rule_pool.search(cr, uid, [('object_id', 'in', model_ids), ('state', '=', 'subscribed')])
- if not rule_ids:
- return super(audittrail_objects_proxy, self).exec_workflow(db, uid_orig, model, method, *args, **argv)
-
- for thisrule in rule_pool.browse(cr, uid, rule_ids):
- for user in thisrule.user_id:
- logged_uids.append(user.id)
- if not logged_uids or uid in logged_uids:
- if thisrule.log_workflow:
- return self.log_fct(db, uid_orig, model, method, fct_src, *args)
- return super(audittrail_objects_proxy, self).exec_workflow(db, uid_orig, model, method, *args, **argv)
-
- return True
- finally:
- cr.close()
+ return self.audit_log_call(db, uid, model, method, 'workflow', *args, **argv)
audittrail_objects_proxy()
From b8596288a8c793c7e1b176d570f291668ab22a1a Mon Sep 17 00:00:00 2001
From: "Naresh (OpenERP)"
Date: Tue, 6 Sep 2011 15:04:53 +0530
Subject: [PATCH 009/106] [IMP]:removedget_value_text to refactore the
code..more improvements coming
bzr revid: nch@tinyerp.com-20110906093453-c6z7wj8178w6o75g
---
addons/audittrail/audittrail.py | 112 +++++++++++++++-----------------
1 file changed, 53 insertions(+), 59 deletions(-)
diff --git a/addons/audittrail/audittrail.py b/addons/audittrail/audittrail.py
index 4fd99d7bba3..41205982101 100644
--- a/addons/audittrail/audittrail.py
+++ b/addons/audittrail/audittrail.py
@@ -187,38 +187,6 @@ audittrail_log_line()
class audittrail_objects_proxy(object_proxy):
""" Uses Object proxy for auditing changes on object of subscribed Rules"""
- def get_value_text(self, cr, uid, field_name, values, model, context=None):
- """
- Gets textual values for the fields
- e.g.: For field of type many2one it gives its name value instead of id
-
- @param cr: the current row, from the database cursor,
- @param uid: the current user’s ID for security checks,
- @param field_name: List of fields for text values
- @param values: Values for field to be converted into textual values
- @return: values: List of textual values for given fields
- """
- if not context:
- context = {}
- if field_name in('__last_update','id'):
- return values
- pool = pooler.get_pool(cr.dbname)
- obj_pool = pool.get(model.model)
- field_obj = obj_pool._all_columns.get(field_name)
- assert field_obj, _("'%s' field does not exist in '%s' model" %(field_name, model.model))
- field_obj = field_obj.column
- if field_obj._obj:
- relation_model_pool = pool.get(field_obj._obj)
- relational_rec_name = relation_model_pool._rec_name
- if field_obj._type == 'many2one':
- if values:
- return values[1]
- return values
- elif field_obj._type in ('many2many','one2many'):
- data = relation_model_pool.name_get(cr, uid, values)
- return map(lambda x:x[1], data)
- return values
-
def create_log_line(self, cr, uid, log_id, model, lines=[]):
"""
Creates lines for changed fields with its old and new values
@@ -234,8 +202,6 @@ class audittrail_objects_proxy(object_proxy):
field_pool = pool.get('ir.model.fields')
log_line_pool = pool.get('audittrail.log.line')
for line in lines:
- if line['name'] in ('__last_update','id'):
- continue
field_obj = obj_pool._all_columns.get(line['name'])
assert field_obj, _("'%s' field does not exist in '%s' model" %(line['name'], model.model))
field_obj = field_obj.column
@@ -279,7 +245,6 @@ class audittrail_objects_proxy(object_proxy):
"""
uid_orig = uid
uid = 1
- res2 = args
pool = pooler.get_pool(db)
cr = pooler.get_db(db).cursor()
resource_pool = pool.get(model)
@@ -303,6 +268,7 @@ class audittrail_objects_proxy(object_proxy):
if not isinstance(resource, list):
resource = [resource]
vals = { 'method': method, 'object_id': model.id,'user_id': uid_orig}
+ new_value_text = ''
for resource_data in resource:
vals.update({'res_id': resource_data['id']})
del resource_data['id']
@@ -311,12 +277,18 @@ class audittrail_objects_proxy(object_proxy):
for field in resource_data:
field_obj = resource_pool._all_columns.get(field)
field_obj = field_obj.column
+ new_value_text = resource_data[field]
+ if field in ('__last_update', 'id'):continue
if field_obj._type in ('one2many','many2many'):
self.log_fct(db, uid, field_obj._obj, method, None, resource_data[field], 'child_relation_log')
+ data = pool.get(field_obj._obj).name_get(cr, uid, resource_data[field])
+ new_value_text = map(lambda x:x[1], data)
+ elif field_obj._type == 'many2one':
+ new_value_text = resource_data[field] and resource_data[field][1] or resource_data[field]
line = {
'name': field,
'new_value': resource_data[field],
- 'new_value_text': self.get_value_text(cr, uid, field, resource_data[field], model)
+ 'new_value_text': new_value_text
}
lines.append(line)
self.create_log_line(cr, uid, log_id, model, lines)
@@ -328,29 +300,29 @@ class audittrail_objects_proxy(object_proxy):
res_ids = args[0]
old_values = {}
res = fct_src(db, uid_orig, model.model, method, *args)
- if type(res) == list:
- for v in res:
- old_values[v['id']] = v
- else:
- old_values[res['id']] = res
+ map(lambda x:old_values.setdefault(x['id'], x), res)
+ vals = {'method': method,'object_id': model.id,'user_id': uid_orig}
+ old_value_text = ''
for res_id in old_values:
- vals = {
- "method": method,
- "object_id": model.id,
- "user_id": uid_orig,
- "res_id": res_id,
-
- }
+ vals.update({'res_id': res_id})
log_id = log_pool.create(cr, uid, vals)
lines = []
for field in old_values[res_id]:
+ if field in ('__last_update', 'id'):continue
+ field_obj = resource_pool._all_columns.get(field)
+ field_obj = field_obj.column
+ old_value_text = old_values[res_id][field]
+ if field_obj._type in ('one2many','many2many'):
+ data = pool.get(field_obj._obj).name_get(cr, uid, old_values[res_id][field])
+ old_value_text = map(lambda x:x[1], data)
+ elif field_obj._type == 'many2one':
+ old_value_text = old_values[res_id][field] and old_values[res_id][field][1] or old_values[res_id][field]
line = {
- 'name': field,
- 'old_value': old_values[res_id][field],
- 'old_value_text': self.get_value_text(cr, uid, field, old_values[res_id][field], model)
- }
+ 'name': field,
+ 'old_value': old_values[res_id][field],
+ 'old_value_text': old_value_text
+ }
lines.append(line)
-
self.create_log_line(cr, uid, log_id, model, lines)
cr.commit()
cr.close()
@@ -363,20 +335,26 @@ class audittrail_objects_proxy(object_proxy):
for res_id in res_ids:
old_values[res_id] = resource_pool.read(cr, uid, res_id)
vals = {'method': method,'object_id': model.id,'user_id': uid_orig}
+ old_value_text = ''
for res_id in res_ids:
vals.update({'res_id': res_id})
log_id = log_pool.create(cr, uid, vals)
lines = []
for field in old_values[res_id]:
- if field == 'id': continue
+ if field in ('__last_update', 'id'):continue
field_obj = resource_pool._all_columns.get(field)
field_obj = field_obj.column
+ old_value_text = old_values[res_id][field]
if field_obj._type in ('one2many','many2many'):
self.log_fct(db, uid, field_obj._obj, method, None, old_values[res_id][field], 'child_relation_log')
+ data = pool.get(field_obj._obj).name_get(cr, uid, old_values[res_id][field])
+ old_value_text = map(lambda x:x[1], data)
+ elif field_obj._type == 'many2one':
+ old_value_text = old_values[res_id][field] and old_values[res_id][field][1] or old_values[res_id][field]
line = {
'name': field,
'old_value': old_values[res_id][field],
- 'old_value_text': self.get_value_text(cr, uid, field, old_values[res_id][field], model)
+ 'old_value_text': old_value_text
}
lines.append(line)
self.create_log_line(cr, uid, log_id, model, lines)
@@ -398,26 +376,33 @@ class audittrail_objects_proxy(object_proxy):
res_ids = [res_ids]
if res_ids:
resource_data = resource_pool.read(cr, uid, res_ids)
+ old_text = ''
for resource in resource_data:
resource_id = resource['id']
del resource['id']
old_values_text = {}
old_value = {}
for field in resource.keys():
+ if field in ('__last_update', 'id'):continue
field_obj = resource_pool._all_columns.get(field)
field_obj = field_obj.column
+ old_text = resource[field]
if field_obj._type in ('one2many','many2many'):
- self.log_fct(db, uid, field_obj._obj, method, None, resource[field], 'child_relation_log')
+ self.log_fct(db, uid, field_obj._obj, method, None, resource[field], 'child_relation_log')
+ data = pool.get(field_obj._obj).name_get(cr, uid, resource[field])
+ old_text = map(lambda x:x[1], data)
+ elif field_obj._type == 'many2one':
+ old_text = resource[field] and resource[field][1] or resource[field]
old_value[field] = resource[field]
- old_values_text[field] = self.get_value_text(cr, uid, field, resource[field], model)
+ old_values_text[field] = old_text
old_values[resource_id] = {'text':old_values_text, 'value': old_value}
if not relational_table_log:
res = fct_src(db, uid_orig, model.model, method, *args)
cr.commit()
-
if res_ids:
resource_data = resource_pool.read(cr, uid, res_ids)
vals = {'method': method,'object_id': model.id,'user_id': uid_orig }
+ old_value_text = ''
for resource in resource_data:
resource_id = resource['id']
del resource['id']
@@ -425,11 +410,20 @@ class audittrail_objects_proxy(object_proxy):
log_id = log_pool.create(cr, uid, vals)
lines = []
for field in resource.keys():
+ if field in ('__last_update', 'id'):continue
+ field_obj = resource_pool._all_columns.get(field)
+ field_obj = field_obj.column
+ old_value_text = resource[field]
+ if field_obj._type in ('one2many','many2many'):
+ data = pool.get(field_obj._obj).name_get(cr, uid, resource[field])
+ old_value_text = map(lambda x:x[1], data)
+ elif field_obj._type == 'many2one':
+ old_value_text = resource[field] and resource[field][1] or resource[field]
line = {
'name': field,
'new_value': resource[field],
'old_value': old_values[resource_id]['value'][field],
- 'new_value_text': self.get_value_text(cr, uid, field, resource[field], model),
+ 'new_value_text': old_value_text,
'old_value_text': old_values[resource_id]['text'][field]
}
lines.append(line)
From dbd40832d51837844fbf0a94e842c41defbc56dc Mon Sep 17 00:00:00 2001
From: "Naresh (OpenERP)"
Date: Tue, 6 Sep 2011 16:19:49 +0530
Subject: [PATCH 010/106] [REF]:more refactoring
bzr revid: nch@tinyerp.com-20110906104949-i6uxzcdden0pq71a
---
addons/audittrail/audittrail.py | 75 +++++++++------------------------
1 file changed, 21 insertions(+), 54 deletions(-)
diff --git a/addons/audittrail/audittrail.py b/addons/audittrail/audittrail.py
index 41205982101..625d4d46072 100644
--- a/addons/audittrail/audittrail.py
+++ b/addons/audittrail/audittrail.py
@@ -231,7 +231,17 @@ class audittrail_objects_proxy(object_proxy):
cr.commit()
return True
-
+ def get_x2m_m2o_values(self, cr, db, uid, pool, resource_pool, method, field, value, recursive=True):
+ field_obj = (resource_pool._all_columns.get(field)).column
+ if field_obj._type in ('one2many','many2many'):
+ if recursive:
+ self.log_fct(db, uid, field_obj._obj, method, None, value, 'child_relation_log')
+ data = pool.get(field_obj._obj).name_get(cr, uid, value)
+ return map(lambda x:x[1], data)
+ elif field_obj._type == 'many2one':
+ return value and value[1] or value
+ return False
+
def log_fct(self, db, uid, model, method, fct_src, *args):
"""
Logging function: This function is performs logging operations according to method
@@ -268,27 +278,18 @@ class audittrail_objects_proxy(object_proxy):
if not isinstance(resource, list):
resource = [resource]
vals = { 'method': method, 'object_id': model.id,'user_id': uid_orig}
- new_value_text = ''
for resource_data in resource:
vals.update({'res_id': resource_data['id']})
del resource_data['id']
log_id = log_pool.create(cr, uid, vals)
lines = []
for field in resource_data:
- field_obj = resource_pool._all_columns.get(field)
- field_obj = field_obj.column
- new_value_text = resource_data[field]
if field in ('__last_update', 'id'):continue
- if field_obj._type in ('one2many','many2many'):
- self.log_fct(db, uid, field_obj._obj, method, None, resource_data[field], 'child_relation_log')
- data = pool.get(field_obj._obj).name_get(cr, uid, resource_data[field])
- new_value_text = map(lambda x:x[1], data)
- elif field_obj._type == 'many2one':
- new_value_text = resource_data[field] and resource_data[field][1] or resource_data[field]
+ ret_val = self.get_x2m_m2o_values(cr, db, uid, pool, resource_pool, method, field, resource_data[field])
line = {
'name': field,
'new_value': resource_data[field],
- 'new_value_text': new_value_text
+ 'new_value_text': ret_val and ret_val or resource_data[field]
}
lines.append(line)
self.create_log_line(cr, uid, log_id, model, lines)
@@ -302,25 +303,17 @@ class audittrail_objects_proxy(object_proxy):
res = fct_src(db, uid_orig, model.model, method, *args)
map(lambda x:old_values.setdefault(x['id'], x), res)
vals = {'method': method,'object_id': model.id,'user_id': uid_orig}
- old_value_text = ''
for res_id in old_values:
vals.update({'res_id': res_id})
log_id = log_pool.create(cr, uid, vals)
lines = []
for field in old_values[res_id]:
if field in ('__last_update', 'id'):continue
- field_obj = resource_pool._all_columns.get(field)
- field_obj = field_obj.column
- old_value_text = old_values[res_id][field]
- if field_obj._type in ('one2many','many2many'):
- data = pool.get(field_obj._obj).name_get(cr, uid, old_values[res_id][field])
- old_value_text = map(lambda x:x[1], data)
- elif field_obj._type == 'many2one':
- old_value_text = old_values[res_id][field] and old_values[res_id][field][1] or old_values[res_id][field]
+ ret_val = self.get_x2m_m2o_values(cr, db, uid, pool, resource_pool, method, field, old_values[res_id][field], False)
line = {
'name': field,
'old_value': old_values[res_id][field],
- 'old_value_text': old_value_text
+ 'old_value_text': ret_val and ret_val or old_values[res_id][field]
}
lines.append(line)
self.create_log_line(cr, uid, log_id, model, lines)
@@ -335,26 +328,17 @@ class audittrail_objects_proxy(object_proxy):
for res_id in res_ids:
old_values[res_id] = resource_pool.read(cr, uid, res_id)
vals = {'method': method,'object_id': model.id,'user_id': uid_orig}
- old_value_text = ''
for res_id in res_ids:
vals.update({'res_id': res_id})
log_id = log_pool.create(cr, uid, vals)
lines = []
for field in old_values[res_id]:
if field in ('__last_update', 'id'):continue
- field_obj = resource_pool._all_columns.get(field)
- field_obj = field_obj.column
- old_value_text = old_values[res_id][field]
- if field_obj._type in ('one2many','many2many'):
- self.log_fct(db, uid, field_obj._obj, method, None, old_values[res_id][field], 'child_relation_log')
- data = pool.get(field_obj._obj).name_get(cr, uid, old_values[res_id][field])
- old_value_text = map(lambda x:x[1], data)
- elif field_obj._type == 'many2one':
- old_value_text = old_values[res_id][field] and old_values[res_id][field][1] or old_values[res_id][field]
+ ret_val = self.get_x2m_m2o_values(cr, db, uid, pool, resource_pool, method, field, old_values[res_id][field])
line = {
'name': field,
'old_value': old_values[res_id][field],
- 'old_value_text': old_value_text
+ 'old_value_text': ret_val and ret_val or old_values[res_id][field]
}
lines.append(line)
self.create_log_line(cr, uid, log_id, model, lines)
@@ -376,7 +360,6 @@ class audittrail_objects_proxy(object_proxy):
res_ids = [res_ids]
if res_ids:
resource_data = resource_pool.read(cr, uid, res_ids)
- old_text = ''
for resource in resource_data:
resource_id = resource['id']
del resource['id']
@@ -384,17 +367,9 @@ class audittrail_objects_proxy(object_proxy):
old_value = {}
for field in resource.keys():
if field in ('__last_update', 'id'):continue
- field_obj = resource_pool._all_columns.get(field)
- field_obj = field_obj.column
- old_text = resource[field]
- if field_obj._type in ('one2many','many2many'):
- self.log_fct(db, uid, field_obj._obj, method, None, resource[field], 'child_relation_log')
- data = pool.get(field_obj._obj).name_get(cr, uid, resource[field])
- old_text = map(lambda x:x[1], data)
- elif field_obj._type == 'many2one':
- old_text = resource[field] and resource[field][1] or resource[field]
+ ret_val = self.get_x2m_m2o_values(cr, db, uid, pool, resource_pool, method, field, resource[field])
old_value[field] = resource[field]
- old_values_text[field] = old_text
+ old_values_text[field] = ret_val and ret_val or resource[field]
old_values[resource_id] = {'text':old_values_text, 'value': old_value}
if not relational_table_log:
res = fct_src(db, uid_orig, model.model, method, *args)
@@ -402,7 +377,6 @@ class audittrail_objects_proxy(object_proxy):
if res_ids:
resource_data = resource_pool.read(cr, uid, res_ids)
vals = {'method': method,'object_id': model.id,'user_id': uid_orig }
- old_value_text = ''
for resource in resource_data:
resource_id = resource['id']
del resource['id']
@@ -411,19 +385,12 @@ class audittrail_objects_proxy(object_proxy):
lines = []
for field in resource.keys():
if field in ('__last_update', 'id'):continue
- field_obj = resource_pool._all_columns.get(field)
- field_obj = field_obj.column
- old_value_text = resource[field]
- if field_obj._type in ('one2many','many2many'):
- data = pool.get(field_obj._obj).name_get(cr, uid, resource[field])
- old_value_text = map(lambda x:x[1], data)
- elif field_obj._type == 'many2one':
- old_value_text = resource[field] and resource[field][1] or resource[field]
+ ret_val = self.get_x2m_m2o_values(cr, db, uid, pool, resource_pool, method, field, resource[field], False)
line = {
'name': field,
'new_value': resource[field],
'old_value': old_values[resource_id]['value'][field],
- 'new_value_text': old_value_text,
+ 'new_value_text': ret_val and ret_val or resource[field],
'old_value_text': old_values[resource_id]['text'][field]
}
lines.append(line)
From 1dce682a32d0d20092553933921056df42a8d145 Mon Sep 17 00:00:00 2001
From: "Naresh (OpenERP)"
Date: Tue, 6 Sep 2011 17:57:35 +0530
Subject: [PATCH 011/106] [REF]
bzr revid: nch@tinyerp.com-20110906122735-4ikr703mpzbiav5b
---
addons/audittrail/audittrail.py | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/addons/audittrail/audittrail.py b/addons/audittrail/audittrail.py
index 625d4d46072..244f26fba3f 100644
--- a/addons/audittrail/audittrail.py
+++ b/addons/audittrail/audittrail.py
@@ -266,7 +266,7 @@ class audittrail_objects_proxy(object_proxy):
assert model_id, _("'%s' Model does not exist..." %(model))
model = model_pool.browse(cr, uid, model_id)
relational_table_log = args and args[-1] == 'child_relation_log' or False
- if method in ('create'):
+ if method == 'create':
fields_to_read = []
if relational_table_log:
res_id = args[0]
@@ -297,7 +297,7 @@ class audittrail_objects_proxy(object_proxy):
cr.close()
return res_id
- elif method in ('read'):
+ elif method == 'read':
res_ids = args[0]
old_values = {}
res = fct_src(db, uid_orig, model.model, method, *args)
@@ -321,7 +321,7 @@ class audittrail_objects_proxy(object_proxy):
cr.close()
return res
- elif method in ('unlink'):
+ elif method == 'unlink':
res_ids = args[0]
res = False
old_values = {}
From 044e4f4c1a6c3be56d8efc581bb4520f6fedf251 Mon Sep 17 00:00:00 2001
From: "Naresh (OpenERP)"
Date: Wed, 7 Sep 2011 18:08:13 +0530
Subject: [PATCH 012/106] [IMP/REF]:allowed entires to be logged when doing
different actions/workflow/on_change/write etc...and removed and refactored
the code
bzr revid: nch@tinyerp.com-20110907123813-4thzx4y3e9vic7uq
---
addons/audittrail/audittrail.py | 231 ++++++++++++++++----------------
1 file changed, 114 insertions(+), 117 deletions(-)
diff --git a/addons/audittrail/audittrail.py b/addons/audittrail/audittrail.py
index 244f26fba3f..579ba005ba3 100644
--- a/addons/audittrail/audittrail.py
+++ b/addons/audittrail/audittrail.py
@@ -231,7 +231,7 @@ class audittrail_objects_proxy(object_proxy):
cr.commit()
return True
- def get_x2m_m2o_values(self, cr, db, uid, pool, resource_pool, method, field, value, recursive=True):
+ def get_value_text(self, cr, db, uid, pool, resource_pool, method, field, value, recursive=True):
field_obj = (resource_pool._all_columns.get(field)).column
if field_obj._type in ('one2many','many2many'):
if recursive:
@@ -242,6 +242,27 @@ class audittrail_objects_proxy(object_proxy):
return value and value[1] or value
return False
+ def start_log_process(self, cr, db, user_id, model, method, resource_data, pool, resource_pool):
+ key1 = '%s_value'%(method == 'create' and 'new' or 'old')
+ key2 = '%s_value_text'%(method == 'create' and 'new' or 'old')
+ uid = 1
+ vals = { 'method': method, 'object_id': model.id,'user_id': user_id}
+ for resource, fields in resource_data.iteritems():
+ vals.update({'res_id': resource})
+ log_id = pool.get('audittrail.log').create(cr, uid, vals)
+ lines = []
+ for field_key, value in fields.iteritems():
+ if field_key in ('__last_update', 'id'):continue
+ ret_val = self.get_value_text(cr, db, uid, pool, resource_pool, method, field_key, value, method != 'read')
+ line = {
+ 'name': field_key,
+ key1: value,
+ key2: ret_val and ret_val or value
+ }
+ lines.append(line)
+ self.create_log_line(cr, uid, log_id, model, lines)
+ return True
+
def log_fct(self, db, uid, model, method, fct_src, *args):
"""
Logging function: This function is performs logging operations according to method
@@ -259,14 +280,12 @@ class audittrail_objects_proxy(object_proxy):
cr = pooler.get_db(db).cursor()
resource_pool = pool.get(model)
log_pool = pool.get('audittrail.log')
- model_pool = pool.get('ir.model')
-
- model_ids = model_pool.search(cr, uid, [('model', '=', model)])
- model_id = model_ids and model_ids[0] or False
- assert model_id, _("'%s' Model does not exist..." %(model))
- model = model_pool.browse(cr, uid, model_id)
+ model = self.check_rule_subscription(cr, uid, pool, model, False)
+ assert model, _("'%s' Model does not exist..." %(model))
+
relational_table_log = args and args[-1] == 'child_relation_log' or False
if method == 'create':
+ resource_data = {}
fields_to_read = []
if relational_table_log:
res_id = args[0]
@@ -274,77 +293,29 @@ class audittrail_objects_proxy(object_proxy):
res_id = fct_src(db, uid_orig, model.model, method, *args)
cr.commit()
fields_to_read = args[0].keys()
- resource = resource_pool.read(cr, uid, res_id, fields_to_read)
- if not isinstance(resource, list):
- resource = [resource]
- vals = { 'method': method, 'object_id': model.id,'user_id': uid_orig}
- for resource_data in resource:
- vals.update({'res_id': resource_data['id']})
- del resource_data['id']
- log_id = log_pool.create(cr, uid, vals)
- lines = []
- for field in resource_data:
- if field in ('__last_update', 'id'):continue
- ret_val = self.get_x2m_m2o_values(cr, db, uid, pool, resource_pool, method, field, resource_data[field])
- line = {
- 'name': field,
- 'new_value': resource_data[field],
- 'new_value_text': ret_val and ret_val or resource_data[field]
- }
- lines.append(line)
- self.create_log_line(cr, uid, log_id, model, lines)
- cr.commit()
+ if res_id:
+ resource = resource_pool.read(cr, uid, res_id, fields_to_read)
+ if not isinstance(resource,list):
+ resource = [resource]
+ map(lambda x: resource_data.setdefault(x['id'], x), resource)
+ self.start_log_process(cr, db, uid_orig, model, method, resource_data, pool, resource_pool)
+ cr.commit()
cr.close()
return res_id
- elif method == 'read':
+ elif method in('read', 'unlink'):
res_ids = args[0]
old_values = {}
- res = fct_src(db, uid_orig, model.model, method, *args)
- map(lambda x:old_values.setdefault(x['id'], x), res)
- vals = {'method': method,'object_id': model.id,'user_id': uid_orig}
- for res_id in old_values:
- vals.update({'res_id': res_id})
- log_id = log_pool.create(cr, uid, vals)
- lines = []
- for field in old_values[res_id]:
- if field in ('__last_update', 'id'):continue
- ret_val = self.get_x2m_m2o_values(cr, db, uid, pool, resource_pool, method, field, old_values[res_id][field], False)
- line = {
- 'name': field,
- 'old_value': old_values[res_id][field],
- 'old_value_text': ret_val and ret_val or old_values[res_id][field]
- }
- lines.append(line)
- self.create_log_line(cr, uid, log_id, model, lines)
- cr.commit()
- cr.close()
- return res
-
- elif method == 'unlink':
- res_ids = args[0]
- res = False
- old_values = {}
- for res_id in res_ids:
- old_values[res_id] = resource_pool.read(cr, uid, res_id)
- vals = {'method': method,'object_id': model.id,'user_id': uid_orig}
- for res_id in res_ids:
- vals.update({'res_id': res_id})
- log_id = log_pool.create(cr, uid, vals)
- lines = []
- for field in old_values[res_id]:
- if field in ('__last_update', 'id'):continue
- ret_val = self.get_x2m_m2o_values(cr, db, uid, pool, resource_pool, method, field, old_values[res_id][field])
- line = {
- 'name': field,
- 'old_value': old_values[res_id][field],
- 'old_value_text': ret_val and ret_val or old_values[res_id][field]
- }
- lines.append(line)
- self.create_log_line(cr, uid, log_id, model, lines)
- if not relational_table_log:
+ if method == 'read':
res = fct_src(db, uid_orig, model.model, method, *args)
- cr.commit()
+ map(lambda x: old_values.setdefault(x['id'], x), res)
+ else:
+ res = resource_pool.read(cr, uid, res_ids)
+ map(lambda x:old_values.setdefault(x['id'], x), res)
+ self.start_log_process(cr, db, uid_orig, model, method, old_values, pool, resource_pool)
+ if not relational_table_log and method == 'unlink':
+ res = fct_src(db, uid_orig, model.model, method, *args)
+ cr.commit()
cr.close()
return res
else:
@@ -359,47 +330,79 @@ class audittrail_objects_proxy(object_proxy):
if isinstance(res_ids, (long, int)):
res_ids = [res_ids]
if res_ids:
- resource_data = resource_pool.read(cr, uid, res_ids)
- for resource in resource_data:
- resource_id = resource['id']
- del resource['id']
- old_values_text = {}
- old_value = {}
- for field in resource.keys():
- if field in ('__last_update', 'id'):continue
- ret_val = self.get_x2m_m2o_values(cr, db, uid, pool, resource_pool, method, field, resource[field])
- old_value[field] = resource[field]
- old_values_text[field] = ret_val and ret_val or resource[field]
- old_values[resource_id] = {'text':old_values_text, 'value': old_value}
- if not relational_table_log:
- res = fct_src(db, uid_orig, model.model, method, *args)
- cr.commit()
+ x2m_old_values = {}
+ old_values = {}
+ def inline_process_old_data(res_ids, model, model_id=False):
+ resource_pool = pool.get(model)
+ resource_data = resource_pool.read(cr, uid, res_ids)
+ _old_values = {}
+ for resource in resource_data:
+ _old_values_text = {}
+ _old_value = {}
+ resource_id = resource['id']
+ for field in resource.keys():
+ if field in ('__last_update', 'id'):continue
+ field_obj = (resource_pool._all_columns.get(field)).column
+ if field_obj._type in ('one2many','many2many'):
+ x2m_rule_ids, x2m_model = self.check_rule_subscription(cr, uid, pool, field_obj._obj)
+ if x2m_rule_ids:
+ x2m_old_values.update(inline_process_old_data(resource[field], field_obj._obj, x2m_model))
+ ret_val = self.get_value_text(cr, db, uid, pool, resource_pool, method, field, resource[field], False)
+ _old_value[field] = resource[field]
+ _old_values_text[field] = ret_val and ret_val or resource[field]
+ _old_values[resource_id] = {'text':_old_values_text, 'value': _old_value}
+ if model_id:
+ _old_values[resource_id].update({'model_id':model_id})
+ return _old_values
+ old_values.update(inline_process_old_data(res_ids, model.model))
+ res = fct_src(db, uid_orig, model.model, method, *args)
+ cr.commit()
if res_ids:
- resource_data = resource_pool.read(cr, uid, res_ids)
- vals = {'method': method,'object_id': model.id,'user_id': uid_orig }
- for resource in resource_data:
- resource_id = resource['id']
- del resource['id']
- vals.update({'res_id': resource_id})
- log_id = log_pool.create(cr, uid, vals)
- lines = []
- for field in resource.keys():
- if field in ('__last_update', 'id'):continue
- ret_val = self.get_x2m_m2o_values(cr, db, uid, pool, resource_pool, method, field, resource[field], False)
- line = {
- 'name': field,
- 'new_value': resource[field],
- 'old_value': old_values[resource_id]['value'][field],
- 'new_value_text': ret_val and ret_val or resource[field],
- 'old_value_text': old_values[resource_id]['text'][field]
- }
- lines.append(line)
- self.create_log_line(cr, uid, log_id, model, lines)
+ def inline_process_new_data(res_ids, model, dict_to_use={}):
+ resource_pool = pool.get(model.model)
+ resource_data = resource_pool.read(cr, uid, res_ids)
+ vals = {'method': method,'object_id': model.id,'user_id': uid_orig }
+ for resource in resource_data:
+ resource_id = resource['id']
+ vals.update({'res_id': resource_id})
+ log_id = log_pool.create(cr, uid, vals)
+ lines = []
+ for field in resource.keys():
+ if field in ('__last_update', 'id'):continue
+ field_obj = (resource_pool._all_columns.get(field)).column
+ if field_obj._type in ('one2many','many2many'):
+ x2m_rule_ids, x2m_model = self.check_rule_subscription(cr, uid, pool, field_obj._obj)
+ if x2m_rule_ids:
+ inline_process_new_data(resource[field], x2m_model, x2m_old_values)
+ ret_val = self.get_value_text(cr, db, uid, pool, resource_pool, method, field, resource[field], False)
+ line = {
+ 'name': field,
+ 'new_value': resource[field],
+ 'old_value': resource_id in dict_to_use and dict_to_use[resource_id]['value'].get(field),
+ 'new_value_text': ret_val and ret_val or resource[field],
+ 'old_value_text': resource_id in dict_to_use and dict_to_use[resource_id]['text'].get(field)
+ }
+ lines.append(line)
+ self.create_log_line(cr, uid, log_id, model, lines)
+ return True
+ inline_process_new_data(res_ids, model, old_values)
cr.commit()
cr.close()
return res
return True
-
+
+ def check_rule_subscription(self, cr, uid, pool, model, rule_check=True):
+ '''
+ Test if the model has been subscribed to the audit rule
+ if yes then return the rule_ids also return the model browse_record object.
+ '''
+ model_ids = pool.get('ir.model').search(cr, uid, [('model', '=', model)])
+ model_obj = model_ids and model_ids[0] and pool.get('ir.model').browse(cr, uid, model_ids[0]) or False
+ if rule_check:
+ rule_ids = pool.get('audittrail.rule').search(cr, uid, [('object_id', '=', model_obj.id), ('state', '=', 'subscribed')])
+ return rule_ids, model_obj
+ return model_obj
+
def audit_log_call(self, db, uid, model, method, action_type, *args, **argv):
"""
Overrides Object Proxy execute method
@@ -414,8 +417,6 @@ class audittrail_objects_proxy(object_proxy):
uid = 1
pool = pooler.get_pool(db)
logged_uids = []
- model_pool = pool.get('ir.model')
- rule_pool = pool.get('audittrail.rule')
cr = pooler.get_db(db).cursor()
cr.autocommit(True)
if action_type == 'execute':
@@ -426,14 +427,10 @@ class audittrail_objects_proxy(object_proxy):
else:
fct_src = super(audittrail_objects_proxy, self).exec_workflow
try:
- model_ids = model_pool.search(cr, uid, [('model', '=', model)])
- model_id = model_ids and model_ids[0] or False
- if not ('audittrail.rule' in pool.obj_list()) or not model_id:
+ rule_ids, model_obj = self.check_rule_subscription(cr, uid, pool, model)
+ if not ('audittrail.rule' in pool.obj_list() and model_obj and rule_ids):
return fct_src(db, uid_orig, model, method, *args, **argv)
- rule_ids = rule_pool.search(cr, uid, [('object_id', '=', model_id), ('state', '=', 'subscribed')])
- if not rule_ids:
- return fct_src(db, uid_orig, model, method, *args, **argv)
- for model_rule in rule_pool.browse(cr, uid, rule_ids):
+ for model_rule in pool.get('audittrail.rule').browse(cr, uid, rule_ids):
logged_uids += map(lambda x:x.id, model_rule.user_id)
if not logged_uids or uid in logged_uids:
if action_type == 'execute':
From ad61a880bf166d953d38774c437ec8b69bde7b3e Mon Sep 17 00:00:00 2001
From: "ARA (OpenERP)"
Date: Wed, 28 Sep 2011 17:43:31 +0530
Subject: [PATCH 013/106] [FIX] hr-expense : incmplete handling of canceld and
reopened invoices
lp bug: https://launchpad.net/bugs/808704 fixed
bzr revid: ara@tinyerp.com-20110928121331-p3x76mmel6ity9fs
---
addons/hr_expense/hr_expense.py | 5 +++++
addons/hr_expense/hr_expense_view.xml | 1 +
addons/hr_expense/hr_expense_workflow.xml | 20 ++++++++++++++++++++
3 files changed, 26 insertions(+)
diff --git a/addons/hr_expense/hr_expense.py b/addons/hr_expense/hr_expense.py
index 2dc6ad090ac..b671705d769 100644
--- a/addons/hr_expense/hr_expense.py
+++ b/addons/hr_expense/hr_expense.py
@@ -82,6 +82,7 @@ class hr_expense_expense(osv.osv):
('accepted', 'Approved'),
('invoiced', 'Invoiced'),
('paid', 'Reimbursed'),
+ ('invoice_except', 'Invoice Exception'),
('cancelled', 'Refused')],
'State', readonly=True, help='When the expense request is created the state is \'Draft\'.\n It is confirmed by the user and request is sent to admin, the state is \'Waiting Confirmation\'.\
\nIf the admin accepts it, the state is \'Accepted\'.\n If an invoice is made for the expense request, the state is \'Invoiced\'.\n If the expense is paid to user, the state is \'Reimbursed\'.'),
@@ -224,6 +225,10 @@ class hr_expense_expense(osv.osv):
res = inv_id
return res
+ def action_invoice_cancel(self, cr, uid, ids, context=None):
+ self.write(cr, uid, ids, {'state': 'invoice_except'}, context=context)
+ return True
+
hr_expense_expense()
class product_product(osv.osv):
diff --git a/addons/hr_expense/hr_expense_view.xml b/addons/hr_expense/hr_expense_view.xml
index 786dc6beee2..a832191bb90 100644
--- a/addons/hr_expense/hr_expense_view.xml
+++ b/addons/hr_expense/hr_expense_view.xml
@@ -106,6 +106,7 @@
+
diff --git a/addons/hr_expense/hr_expense_workflow.xml b/addons/hr_expense/hr_expense_workflow.xml
index 7946bef3b6b..457b0a10b38 100644
--- a/addons/hr_expense/hr_expense_workflow.xml
+++ b/addons/hr_expense/hr_expense_workflow.xml
@@ -55,6 +55,13 @@
action_invoice_create()
+
+
+ invoice_except
+ function
+ action_invoice_cancel()
+
+
@@ -117,5 +124,18 @@
+
+
+
+ subflow.cancel
+
+
+
+
+
+
+ invoice_recreate_hr_expense
+
+
From 211e143c6368e7cbf02bd70ee577b6c825b09336 Mon Sep 17 00:00:00 2001
From: "ARA (OpenERP)"
Date: Thu, 29 Sep 2011 10:51:03 +0530
Subject: [PATCH 014/106] [FIX] hr-expense : incmplete handling of canceld and
reopened invoices
bzr revid: ara@tinyerp.com-20110929052103-r2sli46n67ahv4ej
---
addons/hr_expense/hr_expense.py | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/addons/hr_expense/hr_expense.py b/addons/hr_expense/hr_expense.py
index b671705d769..b37cab45a94 100644
--- a/addons/hr_expense/hr_expense.py
+++ b/addons/hr_expense/hr_expense.py
@@ -226,8 +226,7 @@ class hr_expense_expense(osv.osv):
return res
def action_invoice_cancel(self, cr, uid, ids, context=None):
- self.write(cr, uid, ids, {'state': 'invoice_except'}, context=context)
- return True
+ return self.write(cr, uid, ids, {'state': 'invoice_except'}, context=context)
hr_expense_expense()
From 29c44c429210c10c8a40007d5d83c5de9a066523 Mon Sep 17 00:00:00 2001
From: "Naresh (OpenERP)"
Date: Mon, 3 Oct 2011 11:17:33 +0530
Subject: [PATCH 015/106] [IMP]:make compatible to new signatures
bzr revid: nch@tinyerp.com-20111003054733-7q2au9vhy01ct5ga
---
addons/audittrail/audittrail.py | 160 +++++++++++---------------------
1 file changed, 56 insertions(+), 104 deletions(-)
diff --git a/addons/audittrail/audittrail.py b/addons/audittrail/audittrail.py
index 579ba005ba3..cac3ef9b87e 100644
--- a/addons/audittrail/audittrail.py
+++ b/addons/audittrail/audittrail.py
@@ -43,20 +43,15 @@ class audittrail_rule(osv.osv):
"log_create": fields.boolean("Log Creates",help="Select this if you want to keep track of creation on any record of the object of this rule"),
"log_action": fields.boolean("Log Action",help="Select this if you want to keep track of actions on the object of this rule"),
"log_workflow": fields.boolean("Log Workflow",help="Select this if you want to keep track of workflow on any record of the object of this rule"),
- "state": fields.selection((("draft", "Draft"),
- ("subscribed", "Subscribed")),
- "State", required=True),
+ "state": fields.selection((("draft", "Draft"), ("subscribed", "Subscribed")), "State", required=True),
"action_id": fields.many2one('ir.actions.act_window', "Action ID"),
-
}
-
_defaults = {
'state': lambda *a: 'draft',
'log_create': lambda *a: 1,
'log_unlink': lambda *a: 1,
'log_write': lambda *a: 1,
}
-
_sql_constraints = [
('model_uniq', 'unique (object_id)', """There is a rule defined on this object\n You can not define other on the same!""")
]
@@ -123,9 +118,6 @@ class audittrail_rule(osv.osv):
#End Loop
return True
-audittrail_rule()
-
-
class audittrail_log(osv.osv):
"""
For Audittrail Log
@@ -161,9 +153,6 @@ class audittrail_log(osv.osv):
}
_order = "timestamp desc"
-audittrail_log()
-
-
class audittrail_log_line(osv.osv):
"""
Audittrail Log Line.
@@ -181,8 +170,6 @@ class audittrail_log_line(osv.osv):
'field_description': fields.char('Field Description', size=64),
}
-audittrail_log_line()
-
class audittrail_objects_proxy(object_proxy):
""" Uses Object proxy for auditing changes on object of subscribed Rules"""
@@ -228,21 +215,20 @@ class audittrail_objects_proxy(object_proxy):
"field_description": field_obj.string
}
line_id = log_line_pool.create(cr, uid, vals)
- cr.commit()
return True
- def get_value_text(self, cr, db, uid, pool, resource_pool, method, field, value, recursive=True):
+ def get_value_text(self, cr, uid, pool, resource_pool, method, field, value, recursive=True):
field_obj = (resource_pool._all_columns.get(field)).column
if field_obj._type in ('one2many','many2many'):
if recursive:
- self.log_fct(db, uid, field_obj._obj, method, None, value, 'child_relation_log')
+ self.log_fct(cr, uid, field_obj._obj, method, None, value, 'child_relation_log')
data = pool.get(field_obj._obj).name_get(cr, uid, value)
return map(lambda x:x[1], data)
elif field_obj._type == 'many2one':
return value and value[1] or value
return False
- def start_log_process(self, cr, db, user_id, model, method, resource_data, pool, resource_pool):
+ def start_log_process(self, cr, user_id, model, method, resource_data, pool, resource_pool):
key1 = '%s_value'%(method == 'create' and 'new' or 'old')
key2 = '%s_value_text'%(method == 'create' and 'new' or 'old')
uid = 1
@@ -253,7 +239,7 @@ class audittrail_objects_proxy(object_proxy):
lines = []
for field_key, value in fields.iteritems():
if field_key in ('__last_update', 'id'):continue
- ret_val = self.get_value_text(cr, db, uid, pool, resource_pool, method, field_key, value, method != 'read')
+ ret_val = self.get_value_text(cr, uid, pool, resource_pool, method, field_key, value, method != 'read')
line = {
'name': field_key,
key1: value,
@@ -263,7 +249,7 @@ class audittrail_objects_proxy(object_proxy):
self.create_log_line(cr, uid, log_id, model, lines)
return True
- def log_fct(self, db, uid, model, method, fct_src, *args):
+ def log_fct(self, cr, uid, model, method, fct_src, *args):
"""
Logging function: This function is performs logging operations according to method
@param db: the current database
@@ -276,13 +262,14 @@ class audittrail_objects_proxy(object_proxy):
"""
uid_orig = uid
uid = 1
- pool = pooler.get_pool(db)
- cr = pooler.get_db(db).cursor()
+ pool = pooler.get_pool(cr.dbname)
resource_pool = pool.get(model)
+ model_pool = pool.get('ir.model')
log_pool = pool.get('audittrail.log')
- model = self.check_rule_subscription(cr, uid, pool, model, False)
- assert model, _("'%s' Model does not exist..." %(model))
-
+ model_ids = model_pool.search(cr, 1, [('model', '=', model)])
+ model_id = model_ids and model_ids[0] or False
+ assert model_id, _("'%s' Model does not exist..." %(model))
+ model = model_pool.browse(cr, uid, model_id)
relational_table_log = args and args[-1] == 'child_relation_log' or False
if method == 'create':
resource_data = {}
@@ -290,33 +277,28 @@ class audittrail_objects_proxy(object_proxy):
if relational_table_log:
res_id = args[0]
else:
- res_id = fct_src(db, uid_orig, model.model, method, *args)
- cr.commit()
+ res_id = fct_src(cr, uid_orig, model.model, method, *args)
fields_to_read = args[0].keys()
if res_id:
resource = resource_pool.read(cr, uid, res_id, fields_to_read)
if not isinstance(resource,list):
resource = [resource]
map(lambda x: resource_data.setdefault(x['id'], x), resource)
- self.start_log_process(cr, db, uid_orig, model, method, resource_data, pool, resource_pool)
- cr.commit()
- cr.close()
+ self.start_log_process(cr, uid_orig, model, method, resource_data, pool, resource_pool)
return res_id
elif method in('read', 'unlink'):
res_ids = args[0]
old_values = {}
if method == 'read':
- res = fct_src(db, uid_orig, model.model, method, *args)
+ res = fct_src(cr, uid_orig, model.model, method, *args)
map(lambda x: old_values.setdefault(x['id'], x), res)
else:
res = resource_pool.read(cr, uid, res_ids)
map(lambda x:old_values.setdefault(x['id'], x), res)
- self.start_log_process(cr, db, uid_orig, model, method, old_values, pool, resource_pool)
+ self.start_log_process(cr, uid_orig, model, method, old_values, pool, resource_pool)
if not relational_table_log and method == 'unlink':
- res = fct_src(db, uid_orig, model.model, method, *args)
- cr.commit()
- cr.close()
+ res = fct_src(cr, uid_orig, model.model, method, *args)
return res
else:
res_ids = []
@@ -344,10 +326,13 @@ class audittrail_objects_proxy(object_proxy):
if field in ('__last_update', 'id'):continue
field_obj = (resource_pool._all_columns.get(field)).column
if field_obj._type in ('one2many','many2many'):
- x2m_rule_ids, x2m_model = self.check_rule_subscription(cr, uid, pool, field_obj._obj)
- if x2m_rule_ids:
+ if self.check_rules(cr, uid, field_obj._obj, method):
+ x2m_model_ids = model_pool.search(cr, 1, [('model', '=', field_obj._obj)])
+ x2m_model_id = x2m_model_ids and x2m_model_ids[0] or False
+ assert x2m_model_id, _("'%s' Model does not exist..." %(field_obj._obj))
+ x2m_model = model_pool.browse(cr, uid, x2m_model_id)
x2m_old_values.update(inline_process_old_data(resource[field], field_obj._obj, x2m_model))
- ret_val = self.get_value_text(cr, db, uid, pool, resource_pool, method, field, resource[field], False)
+ ret_val = self.get_value_text(cr, uid, pool, resource_pool, method, field, resource[field], False)
_old_value[field] = resource[field]
_old_values_text[field] = ret_val and ret_val or resource[field]
_old_values[resource_id] = {'text':_old_values_text, 'value': _old_value}
@@ -355,8 +340,7 @@ class audittrail_objects_proxy(object_proxy):
_old_values[resource_id].update({'model_id':model_id})
return _old_values
old_values.update(inline_process_old_data(res_ids, model.model))
- res = fct_src(db, uid_orig, model.model, method, *args)
- cr.commit()
+ res = fct_src(cr, uid_orig, model.model, method, *args)
if res_ids:
def inline_process_new_data(res_ids, model, dict_to_use={}):
resource_pool = pool.get(model.model)
@@ -371,10 +355,14 @@ class audittrail_objects_proxy(object_proxy):
if field in ('__last_update', 'id'):continue
field_obj = (resource_pool._all_columns.get(field)).column
if field_obj._type in ('one2many','many2many'):
- x2m_rule_ids, x2m_model = self.check_rule_subscription(cr, uid, pool, field_obj._obj)
- if x2m_rule_ids:
+ if self.check_rules(cr, uid, field_obj._obj, method):
+ x2m_model_ids = model_pool.search(cr, 1, [('model', '=', field_obj._obj)])
+ x2m_model_id = x2m_model_ids and x2m_model_ids[0] or False
+ assert x2m_model_id, _("'%s' Model does not exist..." %(field_obj._obj))
+ x2m_model = model_pool.browse(cr, uid, x2m_model_id)
+ x2m_old_values.update(inline_process_old_data(resource[field], field_obj._obj, x2m_model))
inline_process_new_data(resource[field], x2m_model, x2m_old_values)
- ret_val = self.get_value_text(cr, db, uid, pool, resource_pool, method, field, resource[field], False)
+ ret_val = self.get_value_text(cr, uid, pool, resource_pool, method, field, resource[field], False)
line = {
'name': field,
'new_value': resource[field],
@@ -386,72 +374,36 @@ class audittrail_objects_proxy(object_proxy):
self.create_log_line(cr, uid, log_id, model, lines)
return True
inline_process_new_data(res_ids, model, old_values)
- cr.commit()
- cr.close()
return res
return True
- def check_rule_subscription(self, cr, uid, pool, model, rule_check=True):
- '''
- Test if the model has been subscribed to the audit rule
- if yes then return the rule_ids also return the model browse_record object.
- '''
- model_ids = pool.get('ir.model').search(cr, uid, [('model', '=', model)])
- model_obj = model_ids and model_ids[0] and pool.get('ir.model').browse(cr, uid, model_ids[0]) or False
- if rule_check:
- rule_ids = pool.get('audittrail.rule').search(cr, uid, [('object_id', '=', model_obj.id), ('state', '=', 'subscribed')])
- return rule_ids, model_obj
- return model_obj
-
- def audit_log_call(self, db, uid, model, method, action_type, *args, **argv):
- """
- Overrides Object Proxy execute method
- @param db: the current database
- @param uid: the current user's ID for security checks,
- @param object: Object who's values are being changed
- @param method: get any method and create log
- @param action_type: either 'execute' or 'workflow'
- @return: Returns result as per method of Object proxy
- """
- uid_orig = uid
- uid = 1
- pool = pooler.get_pool(db)
- logged_uids = []
- cr = pooler.get_db(db).cursor()
- cr.autocommit(True)
- if action_type == 'execute':
- ignore_methods = ['default_get','read','fields_view_get','fields_get','search',
- 'search_count','name_search','name_get','get','request_get',
- 'get_sc', 'unlink', 'write', 'create']
- fct_src = super(audittrail_objects_proxy, self).execute
- else:
- fct_src = super(audittrail_objects_proxy, self).exec_workflow
- try:
- rule_ids, model_obj = self.check_rule_subscription(cr, uid, pool, model)
- if not ('audittrail.rule' in pool.obj_list() and model_obj and rule_ids):
- return fct_src(db, uid_orig, model, method, *args, **argv)
- for model_rule in pool.get('audittrail.rule').browse(cr, uid, rule_ids):
- logged_uids += map(lambda x:x.id, model_rule.user_id)
- if not logged_uids or uid in logged_uids:
- if action_type == 'execute':
- if method in ('read', 'write', 'create', 'unlink'):
- if getattr(model_rule, 'log_' + method):
- return self.log_fct(db, uid_orig, model, method, fct_src, *args)
- elif method not in ignore_methods:
- if model_rule.log_action:
- return self.log_fct(db, uid_orig, model, method, fct_src, *args)
- else:
- if model_rule.log_workflow:
- return self.log_fct(db, uid_orig, model, method, fct_src, *args)
- return fct_src(db, uid_orig, model, method, *args, **argv)
- finally:
- cr.close()
+ def check_rules(self, cr, uid, model, method):
+ pool = pooler.get_pool(cr.dbname)
+ # Check if auditrails is installed for that db and then if one rule match
+ if 'audittrail.rule' in pool.models:
+ model_ids = pool.get('ir.model').search(cr, 1, [('model', '=', model)])
+ model_id = model_ids and model_ids[0] or False
+ if model_id:
+ rule_ids = pool.get('audittrail.rule').search(cr, 1, [('object_id', '=', model_id), ('state', '=', 'subscribed')])
+ for rule in pool.get('audittrail.rule').read(cr, 1, rule_ids, ['user_id','log_read','log_write','log_create','log_unlink','log_action','log_workflow']):
+ if len(rule['user_id'])==0 or uid in rule['user_id']:
+ if rule.get('log_'+method,0):
+ return True
+ elif method not in ('default_get','read','fields_view_get','fields_get','search','search_count','name_search','name_get','get','request_get', 'get_sc', 'unlink', 'write', 'create'):
+ if rule['log_action']:
+ return True
- def execute(self, db, uid, model, method, *args, **argv):
- return self.audit_log_call(db, uid, model, method, 'execute', *args, **argv)
+ def execute_cr(self, cr, uid, model, method, *args, **kw):
+ fct_src = super(audittrail_objects_proxy, self).execute_cr
+ if self.check_rules(cr,uid,model,method):
+ return self.log_fct(cr, uid, model, method, fct_src, *args)
+ return fct_src(cr, uid, model, method, *args)
- def exec_workflow(self, db, uid, model, method, *args, **argv):
- return self.audit_log_call(db, uid, model, method, 'workflow', *args, **argv)
+ def exec_workflow_cr(self, cr, uid, model, method, *args, **argv):
+ fct_src = super(audittrail_objects_proxy, self).exec_workflow_cr
+ if self.check_rules(cr,uid,model,'workflow'):
+ return self.log_fct(cr, uid, model, method, fct_src, *args)
+ return fct_src(cr, uid, model, method, *args)
audittrail_objects_proxy()
From 080e3bfe0ce7fe8127a7d7883e59595acaec78a9 Mon Sep 17 00:00:00 2001
From: "Naresh (OpenERP)"
Date: Mon, 3 Oct 2011 11:40:22 +0530
Subject: [PATCH 016/106] [FIX]:O2M log bug
bzr revid: nch@tinyerp.com-20111003061022-nknshc6j591qozmp
---
addons/audittrail/audittrail.py | 1 -
1 file changed, 1 deletion(-)
diff --git a/addons/audittrail/audittrail.py b/addons/audittrail/audittrail.py
index cac3ef9b87e..a4fedd206e4 100644
--- a/addons/audittrail/audittrail.py
+++ b/addons/audittrail/audittrail.py
@@ -360,7 +360,6 @@ class audittrail_objects_proxy(object_proxy):
x2m_model_id = x2m_model_ids and x2m_model_ids[0] or False
assert x2m_model_id, _("'%s' Model does not exist..." %(field_obj._obj))
x2m_model = model_pool.browse(cr, uid, x2m_model_id)
- x2m_old_values.update(inline_process_old_data(resource[field], field_obj._obj, x2m_model))
inline_process_new_data(resource[field], x2m_model, x2m_old_values)
ret_val = self.get_value_text(cr, uid, pool, resource_pool, method, field, resource[field], False)
line = {
From f6411aaf96867da883172c7cb83e7489da12fdc6 Mon Sep 17 00:00:00 2001
From: Antoine Huvelle
Date: Thu, 27 Oct 2011 11:16:35 +0200
Subject: [PATCH 017/106] [ADD] Added style for web_calendar
bzr revid: ahu@openerp.com-20111027091635-tu23j73zm03a7rkk
---
addons/web_calendar/__openerp__.py | 3 ++-
addons/web_calendar/static/src/css/web_calendar.css | 0
2 files changed, 2 insertions(+), 1 deletion(-)
create mode 100644 addons/web_calendar/static/src/css/web_calendar.css
diff --git a/addons/web_calendar/__openerp__.py b/addons/web_calendar/__openerp__.py
index 1eba26065f5..39e2557de75 100644
--- a/addons/web_calendar/__openerp__.py
+++ b/addons/web_calendar/__openerp__.py
@@ -9,7 +9,8 @@
'static/src/js/calendar.js'
],
"css": ['static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.css',
- 'static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_ext.css'
+ 'static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_ext.css',
+ 'static/src/css/web_calendar.css'
],
'active': True
}
diff --git a/addons/web_calendar/static/src/css/web_calendar.css b/addons/web_calendar/static/src/css/web_calendar.css
new file mode 100644
index 00000000000..e69de29bb2d
From 42417d16f77cdf7d7532bb9b2c70a118a274f89b Mon Sep 17 00:00:00 2001
From: Antoine Huvelle
Date: Thu, 27 Oct 2011 13:12:00 +0200
Subject: [PATCH 018/106] [IMP] Modifications on minical and month calendar
model
bzr revid: ahu@openerp.com-20111027111200-s9goagu6i0kihrub
---
.../static/src/css/web_calendar.css | 952 ++++++++++++++++++
addons/web_calendar/static/src/js/calendar.js | 3 +
2 files changed, 955 insertions(+)
diff --git a/addons/web_calendar/static/src/css/web_calendar.css b/addons/web_calendar/static/src/css/web_calendar.css
index e69de29bb2d..656f6c92946 100644
--- a/addons/web_calendar/static/src/css/web_calendar.css
+++ b/addons/web_calendar/static/src/css/web_calendar.css
@@ -0,0 +1,952 @@
+#openerp_scheduler {
+ background-color:white;
+}
+.openerp .dhx_mini_calendar {
+ -moz-box-shadow: none;
+ -khtml-box-shadow: none;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.dhx_cal_container{
+ background-position:0 24px;
+ background-repeat:repeat-x;
+ background-color:white;
+ font-family: Ubuntu, Helvetica, sans-serif;
+ position:relative;
+ overflow:hidden;
+}
+
+.dhx_cal_container div{
+ -moz-user-select:none;
+ -moz-user-select:-moz-none;
+}
+
+.dhx_cal_navline{
+ height:20px; position:absolute;z-index:3;width:750px;color:#2F3A48;
+}
+.dhx_cal_navline div{
+ top:2px;
+ white-space:nowrap;
+}
+
+.dhx_cal_navline * {
+ vertical-align:middle;
+}
+.dhx_cal_navline .dhx_cal_date{
+ font-weight:bold;
+ float:left;
+ font-size:1em;
+ margin:2px 0px 0px 10px;
+}
+
+.dhx_cal_button .dhx_left_bg{width:1px;overflow:hidden;height:17px;z-index:20;top:0;}
+
+.dhx_cal_today_button, .dhx_cal_prev_button, .dhx_cal_next_button {
+ color:white;
+ height:17px;
+ font-weight:bold;
+ cursor:pointer;
+ font-size:90%;
+ text-decoration:none;
+ float:left;
+
+ margin:0px 3px;
+ padding:2px 2px;
+ border:1px solid black;
+ border-radius: 3px;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+}
+
+.dhx_cal_today_button {
+ background: #ccc; /* Old browsers */
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#c9c9c9', endColorstr='#999999'); /* IE6-9 */
+ background: -webkit-gradient(linear, left top, left bottom, from(#c9c9c9), to(#999999)); /* Chrome,Safari4+ */
+ background: -moz-linear-gradient(top, #c9c9c9, #999999); /* FF3.6+ */
+ background: -webkit-linear-gradient(top, #c9c9c9 0%,#999999 60%); /* Chrome10+,Safari5.1+ */
+ background: -o-linear-gradient(top, #c9c9c9 0%,#999999 60%); /* Opera11.10+ */
+ background: -ms-linear-gradient(top, #c9c9c9 0%,#999999 60%); /* IE10+ */
+ background: linear-gradient(top, #c9c9c9 0%,#999999 60%); /* W3C */
+ padding-left:5px;
+ padding-right:5px;
+}
+
+.dhx_cal_prev_button{
+ background: #bbb;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#c9c9c9', endColorstr='#999999');
+ background: url("/web_calendar/static/src/img/cal_left.png") 5px 3px, -webkit-gradient(linear, left top, left bottom, from(#c9c9c9), to(#999999));
+ background: url("/web_calendar/static/src/img/cal_left.png") 5px 3px, -moz-linear-gradient(top, #c9c9c9, #999999);
+ background: url("/web_calendar/static/src/img/cal_left.png") 5px 3px, -webkit-linear-gradient(top, #c9c9c9 0%,#999999 60%);
+ background: url("/web_calendar/static/src/img/cal_left.png") 5px 3px, -o-linear-gradient(top, #c9c9c9 0%,#999999 60%);
+ background: url("/web_calendar/static/src/img/cal_left.png") 5px 3px, -ms-linear-gradient(top, #c9c9c9 0%,#999999 60%);
+ background: url("/web_calendar/static/src/img/cal_left.png") 5px 3px, linear-gradient(top, #c9c9c9 0%,#999999 60%);
+ background-repeat:no-repeat;
+ width:20px;
+}
+
+.dhx_cal_next_button {
+ background: #ccc; /* Old browsers */
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#888', endColorstr='#888'); /* IE6-9 */
+ background: url("/web_calendar/src/img/cal_right.png") 5px 3px, -webkit-gradient(linear, left top, left bottom, from(#c9c9c9), to(#999999)); /* Chrome,Safari4+ */
+ background: url("/web_calendar/static/src/img/cal_right.png") 5px 3px, -moz-linear-gradient(top, #c9c9c9, #999999); /* FF3.6+ */
+ background: url("/web_calendar/static/src/img/cal_right.png") 5px 3px, -webkit-linear-gradient(top, #c9c9c9 0%,#999999 60%); /* Chrome10+,Safari5.1+ */
+ background: url("/web_calendar/static/src/img/cal_right.png") 5px 3px, -o-linear-gradient(top, #c9c9c9 0%,#999999 60%); /* Opera11.10+ */
+ background: url("/web_calendar/static/src/img/cal_right.png") 5px 3px, -ms-linear-gradient(top, #c9c9c9 0%,#999999 60%); /* IE10+ */
+ background: url("/web_calendar/static/src/img/cal_right.png") 5px 3px, linear-gradient(top, #c9c9c9 0%,#999999 60%); /* W3C */
+ background-repeat:no-repeat;
+ width:20px;
+}
+
+.dhx_cal_prev_button:hover, .dhx_cal_prev_button:active {
+ background: #bbb;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#888', endColorstr='#888');
+ background: url("/web_calendar/static/src/img/cal_left.png") 5px 3px, -webkit-gradient(linear, left top, left bottom, from(#888), to(#888));
+ background: url("/web_calendar/static/src/img/cal_left.png") 5px 3px, -moz-linear-gradient(top, #888, #888);
+ background: url("/web_calendar/static/src/img/cal_left.png") 5px 3px, -webkit-linear-gradient(top, #888 0%,#888 60%);
+ background: url("/web_calendar/static/src/img/cal_left.png") 5px 3px, -o-linear-gradient(top, #888 0%,#888 60%);
+ background: url("/web_calendar/static/src/img/cal_left.png") 5px 3px, -ms-linear-gradient(top, #888 0%,#888 60%);
+ background: url("/web_calendar/static/src/img/cal_left.png") 5px 3px, linear-gradient(top, #888 0%,#888 60%);
+ background-repeat:no-repeat;
+}
+
+.dhx_cal_next_button:hover, .dhx_cal_next_button:active {
+ background: #bbb;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#888', endColorstr='#888');
+ background:-webkit-gradient(linear, left top, left bottom, from(#888), to(#888));
+ background: url("/web_calendar/static/src/img/cal_right.png") 5px 3px, -moz-linear-gradient(top, #888, #888);
+ background: url("/web_calendar/static/src/img/cal_right.png") 5px 3px, -webkit-linear-gradient(top, #888 0%,#888 60%);
+ background: url("/web_calendar/static/src/img/cal_right.png") 5px 3px, -o-linear-gradient(top, #888 0%,#888 60%);
+ background: url("/web_calendar/static/src/img/cal_right.png") 5px 3px, -ms-linear-gradient(top, #888 0%,#888 60%);
+ background: url("/web_calendar/static/src/img/cal_right.png") 5px 3px, linear-gradient(top, #888 0%,#888 60%);
+ background-repeat:no-repeat;
+}
+
+.dhx_cal_today_button:hover, .dhx_cal_today_button:active {
+ background: #bbb;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bbb', endColorstr='#bbb');
+ background: -webkit-gradient(linear, left top, left bottom, from(#888), to(#888));
+ background: -moz-linear-gradient(top, #888, #888);
+ background: -webkit-linear-gradient(top, #888 0%,#888 60%);
+ background: -o-linear-gradient(top, #888 0%,#888 60%);
+ background: -ms-linear-gradient(top, #888 0%,#888 60%);
+ background: linear-gradient(top, #888 0%,#888 60%);
+ background-repeat:no-repeat;
+}
+
+.dhx_mini_calendar .dhx_cal_prev_button, .dhx_mini_calendar .dhx_cal_next_button, .dhx_mini_calendar .dhx_cal_today_button {
+ background:none;
+ border:0px;
+}
+
+
+.dhx_mini_calendar .dhx_cal_prev_button, .dhx_mini_calendar .dhx_cal_next_button {
+ width:16px;
+ height:18px;
+}
+.dhx_mini_calendar .dhx_cal_prev_button {
+ background :url("/web_calendar/static/src/img/minical_left.png") no-repeat 5px 6px;
+}
+
+.dhx_mini_calendar .dhx_cal_next_button {
+ background:url("/web_calendar/static/src/img/minical_right.png") no-repeat 8px 6px;
+}
+
+.dhx_mini_calendar .dhx_month_head {
+ font-size:0.9em;
+ color:#888
+}
+.dhx_mini_calendar .dhx_month_head:hover {
+ background-color:#bbb;
+ color:white;
+ text-shadow:none;
+}
+.dhx_mini_calendar .dhx_scale_bar {
+ border-width:0px;
+ padding:2px 0px;
+}
+
+.dhx_cal_tab {
+ width:59px;
+ height:18px;
+ text-align:center;
+ text-transform:uppercase;
+ text-decoration:none;
+ font-weight:bold;
+ font-size:0.8em;
+ color:#555;
+ margin:2px 1px 0px 1px;
+ cursor:pointer;
+ float:right;
+ background-color:#bbb;
+ -webkit-border-top-left-radius:4px;
+ -webkit-border-top-right-radius:4px;
+ -moz-border-radius-topleft:4px;
+ -moz-border-radius-topright:4px;
+ border-top-left-radius:4px;
+ border-top-right-radius:4px;
+ vertical-align:50% !important;
+}
+.dhx_cal_tab[name="month_tab"] { right:0px; }
+.dhx_cal_tab[name="week_tab"] { right:62px; }
+.dhx_cal_tab[name="day_tab"] { right:107px; }
+
+.dhx_cal_tab:hover {
+ background-color:#ddd;
+}
+
+.dhx_cal_tab.active{
+ text-decoration:none;
+ cursor:default;
+ border-bottom:0;
+ background-color:white /*#F4F4F4;*/
+}
+
+.dhx_cal_tab[name="day_tab"] {
+ margin-right:18px;
+}
+
+.dhx_cal_header{
+ position:absolute;
+ left:10px;
+ top:23px;
+ width:750px;
+ text-transform:uppercase;
+ font-size:0.8em;
+ font-weight:bold;
+ color:#1F1F1F;
+ border-bottom:1px dotted #8894A3;
+ /*border-right:1px dotted #8894A3;z-index:2;*/
+ overflow:hidden;
+ background-color: white; /*#F4F4F4;*/
+ text-shadow: 0 1px 0 white;
+}
+
+.dhx_cal_data{
+ position:absolute;
+ top:44px;
+ width:600px;
+ overflow-y:auto;overflow-x:hidden;
+}
+
+.dhx_cal_data tr td {
+ border-width:0px;
+}
+
+.dhx_scale_bar{
+ position:absolute;
+ text-align:center;
+ text-shadow: 0 1px 0 white;
+ background-color:#C2D5FC;
+ padding-top:3px;
+ border-left:1px dotted #586A7E;
+}
+
+.dhx_scale_holder{position:absolute;border-right:1px dotted #586A7E;background-image:url(imgs/databg.png);}.dhx_scale_holder_now{position:absolute;border-right:1px dotted #586A7E;background-image:url(imgs/databg_now.png);}.dhx_scale_hour{height:41px;width:50px;border-bottom:1px dotted #8894A3;background-color:#C2D5FC;text-align:center;line-height:40px;color:#586A7E;overflow:hidden;}
+
+.dhx_month_head{
+ background-color:#F4F4F4;
+ color:#2F3A48;
+ text-shadow: 0 1px 0 white;
+ font-weight:bold;
+ text-align:center;
+ border-right:1px dotted #586A7E;
+ height:18px;padding-right:5px;
+ padding-top:3px;text-align:right;
+ font-size:0.9em;
+}
+
+.dhx_month_body{
+ border-right:1px dotted #586A7E;
+ border-bottom:1px dotted #586A7E;
+ background-color:#FFF;
+}
+
+.dhx_now .dhx_month_body{
+ background-color:#cccccc;
+}
+
+.dhx_after .dhx_month_body,.dhx_before .dhx_month_body{background-color:#ECECEC;}
+
+.dhx_after .dhx_month_head,.dhx_before .dhx_month_head{background-color:#F4F4F4;color:#94A6BB;}
+
+.dhx_now .dhx_month_head{
+ background-color:#ddd;
+}
+
+.dhx_cal_drag{position:absolute;z-index:9999;background-color:#FFE763;border:1px solid #B7A543;opacity:.5;filter:alpha(opacity=50);}
+
+.dhx_loading{position:absolute;width:128px;height:15px;background-image:url(imgs/loading.gif);z-index:9999;}
+
+.dhx_multi_day_icon,.dhx_multi_day{background-color:#E1E6FF;background-repeat:no-repeat;border-right:1px dotted #8894A3;}.dhx_multi_day{position:absolute;border-top:1px dotted #8894A3;}.
+
+dhx_multi_day_icon{background-image:url(imgs/clock_big.gif);}.dhx_multi_day_icon_small{background-image:url(imgs/clock_small.gif);}
+
+.dhx_multi_day_icon,.dhx_multi_day_icon_small{background-position:center center;background-color:#E1E6FF;background-repeat:no-repeat;border-bottom:1px dotted #8894A3;border-right:1px dotted #8894A3;}
+
+.dhtmlxLayoutPolyContainer_dhx_skyblue .dhx_cal_container{background-color:none;}
+
+.dhx_cal_event div{
+ background-color:#FFE763;border:1px solid #B7A543;color:#887A2E;overflow:hidden;width:100%;font-size:8pt;
+}
+
+.dhx_move_denied .dhx_cal_event .dhx_header,.dhx_move_denied .dhx_cal_event .dhx_title{cursor:default;}
+
+.dhx_cal_event .dhx_header{
+ height:0px;
+ margin-left:1px;
+ /*border-width:1px 1px 0 1px;*/
+ cursor:pointer;
+}
+
+.dhx_cal_event .dhx_title{
+ height:16px;
+ border-bottom-style:dotted;font-size:7pt;
+ font-weight:bold;
+ text-align:center;
+ background-position:right;
+ background-repeat:no-repeat;
+ cursor:pointer;
+ font-size: 0.8em;
+ -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px;
+}
+
+.dhx_cal_event .dhx_body{
+ border-width:0 1px 1px 1px;
+ padding:5px;
+ -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px
+}
+
+.dhx_resize_denied .dhx_cal_event .dhx_footer{cursor:default;}
+
+.dhx_cal_event .dhx_footer{height:1px;margin-left:2px;border-width:0 1px 1px 1px;cursor:s-resize;}.dhx_cal_event_line{background-color:#FFE763;border:1px solid #B7A543;border-radius:3px;
+ font-size:8pt;height:13px;padding-left:10px;color:#887A2E;cursor:pointer;overflow:hidden;}
+
+.dhx_cal_event_clear{
+ font-size:8pt;
+ height:15px;
+ padding-left:2px;
+ color:#887A2E;
+ white-space:nowrap;
+ overflow:hidden;
+ cursor:pointer;
+ vertical-align:middle;
+}
+
+.dhx_in_move{background-color:#FFFF80;}div.dhx_cal_editor{background-color:#FFE763;border:1px solid #B7A543;border-top-style:dotted;z-index:999;position:absolute;overflow:hidden;}textarea.dhx_cal_editor{width:100%;height:100%;border:0 solid black;margin:none;padding:none;overflow:auto;}div.dhx_menu_head{background-image:url(imgs/controls.gif);background-position:0 -43px;width:10px;height:10px;margin-left:5px;margin-top:1px;border:none;cursor:default;}div.dhx_menu_icon{background-image:url(imgs/controls.gif);width:20px;height:20px;margin-left:-5px;margin-top:0;border:none;cursor:pointer;}div.icon_details{background-position:0 0;}div.icon_edit{background-position:-22px 0;}div.icon_save{background-position:-84px -1px;}div.icon_cancel{background-position:-62px 0;}div.icon_delete{background-position:-42px 0;}div.dhx_now_time{position:absolute;width:100%;border-bottom:2px dotted red;z-index:1;}div.dhx_time_block{position:absolute;width:100%;background:silver;opacity:.4;filter:alpha(opacity=40);z-index:1;}
+
+.dhx_unselectable,.dhx_unselectable div{-webkit-user-select:none;-moz-user-select:none;-moz-user-select:-moz-none;}
+
+.dhx_cal_light{background-color:#FFE763;border-radius:5px;
+ font-size:8pt;border:1px solid #B7A64B;color:#887A2E;position:absolute;z-index:10001;width:580px;height:300px;box-shadow:5px 5px 5px #888;}
+
+.dhx_cal_light_wide{width:650px;}.dhx_mark{position:relative;top:3px;background-image:url('./imgs/controls.gif');background-position:0 -43px;padding-left:10px;}
+
+.dhx_ie6 .dhx_mark{background-position:6px -41px;}
+
+.dhx_cal_light select{font-size:8pt;color:#887A2E;padding:2px;margin:0;}.dhx_cal_ltitle{padding:2px 0 2px 5px;overflow:hidden;white-space:nowrap;}
+
+.dhx_cal_ltitle span{white-space:nowrap;}
+
+.dhx_cal_lsection{background-color:#DBCF8C;color:#FFF4B5;font-weight:bold;padding:5px 0 3px 10px;}.dhx_section_time{background-color:#DBCF8C;}
+
+.dhx_cal_lsection .dhx_fullday{float:right;margin-right:5px;color:#887A2E;font-size:12px;font-weight:normal;line-height:20px;vertical-align:top;cursor:pointer;}
+
+.dhx_cal_lsection{font-size:18px;}
+
+.dhx_cal_ltext{padding:2px 0 2px 10px;overflow:hidden;}.dhx_cal_ltext textarea{background-color:#FFF4B5;overflow:auto;border:none;color:#887A2E;height:100%;width:100%;outline:none!important;}.dhx_time{font-weight:bold;}
+
+.dhx_cal_light .dhx_title{padding-left:10px;}
+
+.dhx_cal_larea{border:1px solid #DCC43E;background-color:#FFF4B5;overflow:hidden;margin-left:3px;width:572px;height:1px;}.dhx_btn_set{padding:5px 10px 0 10px;float:left;}.dhx_btn_set div{float:left;height:21px;line-height:21px;vertical-align:middle;cursor:pointer;}.dhx_save_btn{background-image:url('./imgs/controls.gif');background-position:-84px 0;width:21px;}.dhx_cancel_btn{background-image:url('./imgs/controls.gif');background-position:-63px 0;width:20px;}.dhx_delete_btn{background-image:url('./imgs/controls.gif');background-position:-42px 0;width:20px;}.dhx_cal_cover{width:100%;height:100%;position:absolute;z-index:10000;top:0;left:0;background-color:black;opacity:.1;filter:alpha(opacity=10);}.dhx_custom_button{padding:0 3px 0 3px;color:#887A2E;font-size:8pt;background-color:#FFE763;font-weight:normal;margin-right:5px;margin-top:0;cursor:pointer;}.dhx_custom_button div{cursor:pointer;float:left;height:21px;line-height:21px;vertical-align:middle;}
+
+.dhx_cal_light_wide .dhx_cal_larea{border-top-width:0;}.dhx_cal_light_wide .dhx_cal_lsection{border:0;float:left;text-align:right;width:100px;height:20px;font-size:16px;padding:5px 0 0 10px;}.dhx_cal_light_wide .dhx_wrap_section{border-top:1px solid #DBCF8C;position:relative;background-color:#DBCF8C;overflow:hidden;}.dhx_cal_light_wide .dhx_section_time{padding-top:2px!important;height:20px!important;}.dhx_section_time{text-align:center;}.dhx_cal_light_wide .dhx_cal_larea{width:730px;}.dhx_cal_light_wide{width:738px;}.dhx_cal_light_wide .dhx_section_time{background:transparent;}.dhx_cal_light_wide .dhx_cal_checkbox label{padding-left:0;}.dhx_cal_wide_checkbox input{margin-top:8px;margin-left:14px;}.dhx_cal_light input{;font-size:8pt;color:#887A2E;}
+
+.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday{float:none;margin-right:0;color:#FFF4B5;font-weight:bold;font-size:16px;cursor:pointer;}
+
+.dhx_custom_button{float:right;height:21px;width:90px;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;}.dhx_cal_light_wide .dhx_custom_button{position:absolute;top:0;right:0;margin-top:2px;}.dhx_cal_light_wide .dhx_repeat_right{margin-right:55px;}.dhx_cal_light_wide .dhx_repeat_divider{border-color:#FFE763;}
+
+.dhx_scale_bar_header{position:absolute;border-bottom:1px dotted #8894A3;width:100%;}
+
+.dhx_expand_icon{position:absolute;top:0;right:0;background-image:url(./imgs/colapce-expand-icon.gif);width:18px;height:18px;cursor:pointer;background-position:0 18px;z-index:16;}.dhx_agenda_area{width:100%;height:100%;overflow-y:auto;background-image:url(./imgs/databg.png);}.dhx_agenda_line{height:21px;clear:both;overflow:hidden;}.dhx_agenda_line div{float:left;width:188px;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}.dhx_agenda_area .dhx_agenda_line div{border-right:0 dotted #8894A3;}.dhx_v_border{position:absolute;left:186px;top:0;border-right:1px dotted #8894A3;width:1px;height:100%;}.dhx_agenda_line .dhx_event_icon{width:20px;border-width:0;background:url(./imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;}.dhx_agenda_line span{padding-left:5px;line-height:21px;}
+
+
+.dhx_year_week{
+ position:relative;
+ font-weight:bold;
+ font-size:1em;
+ color:#aaa;
+ vertical-align:middle;
+ border-top:1px solid #ccc;
+ border-bottom:1px solid #ccc;
+}
+
+.dhx_scale_bar_last{border-right:1px dotted #586A7E;}
+
+.dhx_year_month{
+ height:18px;
+ padding-top:3px;
+ text-align:center;
+ vertical-align:middle;
+ text-transform:uppercase;
+ font-weight:bold;
+ font-size:0.9em;
+ text-shadow: 0 1px 0 white;
+ border:0px;
+}
+/*.dhx_mini_calendar .dhx_year_month{
+ padding-top:0px;
+} */
+
+.dhx_mini_calendar .dhx_year_body {
+ border:0px;
+}
+
+.dhx_year_body .dhx_before .dhx_month_head,.dhx_year_body .dhx_after .dhx_month_head,.dhx_year_body .dhx_before .dhx_month_head a,.dhx_year_body .dhx_after .dhx_month_head a {color:#bbb;}
+
+.dhx_year_body .dhx_month_body{height:0;overflow:hidden;}
+
+.dhx_year_body .dhx_before .dhx_month_head, .dhx_year_body .dhx_after .dhx_month_head{cursor:default;}
+
+.dhx_tooltip{border:1px solid #BBB;background-image:url(./imgs/databg.png);position:absolute;z-index:9998;width:300px;height:auto;
+font-size:8pt;overflow:hidden;}.dhx_tooltip_line{line-height:20px;height:20px;overflow:hidden;}.dhx_tooltip_line .dhx_event_icon{width:20px;height:20px;padding-right:10px;float:left;border-width:0;position:relative;background:url(./imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;}.dhx_tooltip_date{float:left;width:auto;padding-left:5px;text-align:center;}
+
+.dhx_text_disabled{color:#887A2E;font-size:8pt;}.dhx_mini_calendar{-moz-box-shadow:5px 5px 5px #888;-khtml-box-shadow:5px 5px 5px #888;}
+
+.dhx_mini_calendar .dhx_month_head{cursor:pointer;}
+
+.dhx_mini_calendar .dhx_calendar_click{background-color:#C2D5FC;}
+
+.dhx_cal_navline div.dhx_minical_icon{width:18px;height:18px;left:190px;top:1px;cursor:pointer;background-image:url(./imgs/calendar.gif);}
+
+.dhx_matrix_scell{height:100%;}.dhx_matrix_cell,.dhx_matrix_scell{overflow:hidden;text-align:center;vertical-align:middle;border-bottom:1px dotted #8894A3;border-right:1px dotted #8894A3;}.dhx_matrix_cell{background-color:white;}.dhx_matrix_line{overflow:hidden;}.dhx_matrix_cell div,.dhx_matrix_scell div{overflow:hidden;text-align:center;height:auto;}.dhx_cal_lsection .dhx_readonly{font-size:9pt;font-size:8pt;padding:2px;color:#887A2E;}
+
+.dhx_matrix_scell.folder,.dhx_data_table.folder .dhx_matrix_cell{background-color:#969394;cursor:pointer;}.dhx_matrix_scell .dhx_scell_level0{padding-left:5px;}.dhx_matrix_scell .dhx_scell_level1{padding-left:20px;}.dhx_matrix_scell .dhx_scell_level2{padding-left:35px;}.dhx_matrix_scell .dhx_scell_level3{padding-left:50px;}.dhx_matrix_scell .dhx_scell_level4{padding-left:65px;}.dhx_matrix_scell.folder{font-weight:bold;text-align:left;}.dhx_matrix_scell.folder .dhx_scell_expand{float:left;width:10px;padding-right:3px;}.dhx_matrix_scell.folder .dhx_scell_name{float:left;width:auto;}.dhx_matrix_scell.item .dhx_scell_name{padding-left:15px;text-align:left;}
+
+.dhx_data_table.folder .dhx_matrix_cell{border-right:0;}.dhx_section_timeline{overflow:hidden;padding:4px 0 2px 10px;}.dhx_section_timeline select{width:552px;}.dhx_map_area{width:100%;height:100%;overflow-y:auto;overflow-x:hidden;background-image:url(./imgs/databg.png);}.dhx_map_line .dhx_event_icon{width:20px;border-width:0;background:url(./imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;}.dhx_map_line{height:21px;clear:both;overflow:hidden;}.dhx_map{position:absolute;}.dhx_map_line div{float:left;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}.dhx_map_line .headline_description{float:left;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}.dhx_map_line .dhx_map_description{float:left;border-right:0 dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}
+
+.dhx_map_line .line_description{float:left;border-right:1px dotted #8894A3;text-align:left;padding-left:5px;line-height:21px;overflow:hidden;}.dhx_map_line.highlight{background-color:#C4C5CC;}.dhx_map_area .dhx_map_line div{border-right:0 dotted #8894A3;}.dhtmlXTooltip.tooltip{-moz-box-shadow:3px 3px 3px #888;-webkit-box-shadow:3px 3px 3px #888;-o-box-shadow:3px 3px 3px #888;box-shadow:3px 3px 3px #888;filter:progid:DXImageTransform.Microsoft.Shadow(color='#888888',Direction=135,Strength=5);background-color:white;border-left:1px dotted #887A2E;border-top:1px dotted #887A2E;color:#887A2E;cursor:default;padding:10px;position:absolute;z-index:500;}.dhx_cal_checkbox label{padding-left:5px;}.dhx_cal_light .radio{padding:2px 0 2px 10px;}.dhx_cal_light .radio input,.dhx_cal_light .radio label{line-height:15px;}.dhx_cal_light .radio input{vertical-align:middle;margin:0;padding:0;}.dhx_cal_light .radio label{vertical-align:middle;padding-right:10px;}.dhx_cal_light .combo{padding:4px;}.dhx_wa_column{float:left;}.dhx_wa_column_last .dhx_wa_day_cont{border-left:1px dotted #8894A3;}
+
+.dhx_wa_scale_bar{padding-left:10px;font-size:11px;border-top:1px dotted #8894A3;border-bottom:1px dotted #8894A3;}.dhx_wa_day_data{background-color:#FCFEFC;overflow-y:auto;}.dhx_wa_ev_body{border-bottom:1px dotted #789;font-size:12px;padding:5px 0 5px 7px;}
+
+.dhx_wa_dnd{position:absolute;padding-right:7px;color:#887AE2!important;background-color:#FFE763!important;border:1px solid #B7A543;}.dhx_cal_event_selected{background-color:#9cc1db;color:white;}.dhx_second_scale_bar{border-bottom:1px dotted #586A7E;padding-top:2px;}div.dhx_form_repeat input.radio{margin:-4px 0 0 -4px!ie;}div.dhx_form_repeat input.checkbox{margin:0 0 0 -4px!ie;}
+
+.dhx_form_repeat,.dhx_form_repeat input{padding:0;margin:0;padding-left:5px;
+font-size:11px;line-height:24px;}.dhx_form_repeat{overflow:hidden;height:0;background-color:#FFF4B5;}.dhx_cal_light_wide .dhx_form_repeat{background-color:transparent;}.dhx_repeat_center,.dhx_repeat_left{height:115px;padding:10px 0 10px 10px;float:left;}.dhx_repeat_left{width:95px;}.dhx_repeat_center{width:335px;margin-top:12px;}.dhx_repeat_divider{float:left;height:115px;border-left:1px dotted #DCC43E;width:1px;}.dhx_repeat_right{float:right;height:115px;width:160px;padding:10px 3px 10px 10px;margin-top:7px;}input.dhx_repeat_text{height:16px;width:27px;margin:0 4px 0 4px;line-height:18px;padding:0 0 0 2px;}.dhx_form_repeat select{height:20px;width:87px;padding:0 0 0 2px;margin:0 4px 0 4px;}input.dhx_repeat_date{height:18px;width:80px;padding:0 0 0 2px;margin:0 4px 0 4px;background-repeat:no-repeat;background-position:64px 0;border:1px #7f9db9 solid;line-height:18px;}input.dhx_repeat_radio{margin-right:4px;}input.dhx_repeat_checkbox{margin:4px 4px 0 0;}.dhx_repeat_days td{padding-right:5px;}.dhx_repeat_days label{font-size:10px;}.dhx_custom_button{width:90px;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;}.dhx_custom_button_recurring{background-image:url(./imgs/but_repeat.gif);background-position:-5px 20px;width:20px;margin-right:10px;}.dhx_cal_light_rec{width:640px;}.dhx_cal_light_rec .dhx_cal_larea{width:632px;}.dhx_cal_light_rec.dhx_cal_light_wide{width:816px;}.dhx_cal_light_rec.dhx_cal_light_wide .dhx_cal_larea{width:808px;}
+
+.dhx_multi_day{border:none;border-top:1px solid #A4BED4;}
+
+.dhx_multi_day_icon,.dhx_multi_day_icon_small{border-right:none;}
+
+
+
+.dhx_cal_navline{background-color:none;height:23px!important;}
+
+
+
+
+.dhx_scale_bar{/*background-image:url(imgs/top-separator.gif);background-position:0 0;background-repeat:no-repeat; */background-color:transparent;padding-top:3px;border-left:0;}
+
+.dhx_scale_holder{border-right:1px solid #A4BED4;}
+
+.dhx_scale_holder_now{border-right:1px solid #A4BED4;}.dhx_scale_hour{background-image:url(imgs/left-time-bg.png);border-bottom:1px solid #A4BED4;color:#2F3A48;}
+
+.dhx_multi_day{background-image:url(imgs/multi-days-bg.png);background-repeat:repeat;border-bottom:1px solid #A4BED4;border-left:0;}
+
+.dhx_multi_day_icon,.dhx_multi_day_icon_small{background-image:url(imgs/multi-days-bg.png);border-bottom:1px solid #A4BED4;border-left:1px solid #fff;background-position:0 0;background-repeat:repeat;}
+
+.dhx_month_head{background-color:#F4F4F4;}
+
+.dhx_after .dhx_month_head,.dhx_before .dhx_month_head{background-color:#F4F4F4;}
+
+.dhx_after .dhx_month_body,.dhx_before .dhx_month_body{background-color:#EFEDE2;}
+
+.dhx_cal_event div{border:1px solid #FFBD51;background-color:#FFE4AB;color:#000;}.dhx_cal_event_clear{color:#000;}.dhx_cal_event_line{background-image:url(imgs/event-bg.png);border:1px solid #FFBD51;color:#000;}.dhx_in_move{background-image:url(imgs/move.png);}.dhx_cal_event .dhx_body{background-color:#FFE4AB;}
+
+.dhx_cal_event .dhx_title{background-color:#FFE4AB;}
+
+.dhx_cal_light{-moz-box-shadow:5px 5px 5px #888;-khtml-box-shadow:5px 5px 5px #888;background-color:#EBEBEB;border:2px solid #A4BED4;color:#000;}.dhx_cal_larea{border:1px solid #A4BED4;border-width:0 1px 1px;background-color:#FFF;}.dhx_cal_lsection{background-image:url(imgs/lightbox.png);font-size:14px;padding:5px 0 5px 10px;color:#000;}.dhx_cal_light_wide .dhx_cal_lsection{background-image:url(imgs/multi-days-bg.png);}.dhx_cal_ltext textarea{background-color:#fff;color:#000;}.dhx_cal_light select,.dhx_cal_light input{color:#000;}.dhx_save_btn{background-image:url(imgs/controlls5.png);}.dhx_cancel_btn{background-image:url(imgs/controlls5.png);}.dhx_delete_btn{background-image:url(imgs/controlls5.png);}div.dhx_menu_head{background-image:url(imgs/controlls5.png);border:1px solid #FFE4AB;}div.dhx_menu_icon{background-image:url(imgs/controlls5.png);border:medium none;}.dhx_section_time{height:20px!important;padding:7px 0!important;text-align:center;background:white;}div.dhx_cal_editor{background-color:#FFE4AB;}
+
+.dhx_month_head{border-right:1px solid #E9E9E9;}
+
+.dhx_month_body{
+ border-right:1px solid #E9E9E9;
+ border-bottom:1px solid #E9E9E9;
+}
+
+ .dhx_scale_bar_last{border-right:none;}
+
+.dhx_month_head.dhx_year_event{background-color:#ddd;}
+
+.dhx_year_body .dhx_before .dhx_month_head,.dhx_year_body .dhx_after .dhx_month_head,.dhx_year_body .dhx_before .dhx_month_head a,.dhx_year_body .dhx_after .dhx_month_head a{color:#EFEDE2 ;}
+
+.dhx_cal_lsection .dhx_readonly{color:#000;}.dhx_tooltip{-moz-box-shadow:2px 2px 2px #888;-khtml-box-shadow:2px 2px 2px #888;}.dhx_custom_button{margin-top:-2px;}.dhx_cal_lsection .dhx_fullday{color:#000;}.dhx_cal_lsection.dhx_cal_checkbox{height:16px;line-height:18px;}.dhx_cal_light_wide .dhx_cal_lsection.dhx_cal_checkbox{height:20px;}.dhx_cal_checkbox label{vertical-align:top;}.dhx_cal_light_wide .dhx_cal_lsection{color:black;}.dhx_cal_light_wide .dhx_wrap_section{border-top:1px solid #A4BED4;background-image:url(imgs/multi-days-bg.png);}.dhx_cal_light_wide .dhx_cal_ltext{border-left:1px solid #A4BED4;}.dhx_cal_light_wide .dhx_cal_ltext{background-color:white;}.dhx_custom_button{background:white;color:black;}.dhx_form_repeat{background:white;}.dhx_repeat_divider{border-left:1px solid #A4BED4;}
+
+.dhx_cal_header.dhx_second_cal_header{background-image:url("imgs/second-top-days-bg.png");padding-right:20px;}
+
+.dhx_scale_bar{padding-top:4px;}
+
+.dhx_second_scale_bar{border-bottom:0;padding-top:4px;}.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday,.dhx_cal_lsection .dhx_fullday{color:#000;font-size:14px;}
+
+.dhx_cal_light_wide .dhx_cal_lsection{font-size:14px;padding-right:10px;}
+
+
+.dhx_scale_bar {
+/* background-color:#bac6cf;
+ border-left:1px dotted #7e7e7e; */
+ }
+
+.dhx_scale_hour {
+ background-color:#bac6cf;
+ border-bottom:1px dotted #7e7e7e;
+ color: #020202;
+}
+
+.dhx_cal_drag {
+ background-color:#ff8d8d;
+ border:1px solid #a73636;
+}
+
+.dhx_cal_event div {
+ background-color:#ff8d8d;
+ color: #000102;
+ border:1px solid #a73636;
+}
+
+.dhx_cal_event_line {
+ background-color:#ff8d8d;
+ color: #000102;
+ border:1px solid #a73636;
+}
+
+.dhx_in_move{
+ background-color:#f7ffb1;
+}
+
+
+.dhx_scale_holder {
+ background-image:url("./imgs/databg.png");
+ border-right:1px dotted #7e7e7e;
+}
+
+.dhx_scale_holder_now {
+ background-image:url("./imgs/databg_now.png");
+ border-right:1px dotted #7e7e7e;
+}
+
+.dhx_cal_event div.dhx_menu_icon {
+ border: medium none;
+}
+
+.dhx_after .dhx_month_body, .dhx_before .dhx_month_body {
+ background-color:#e9e9e9;
+}
+
+
+.dhx_cal_light {
+ background-color:#ff8d8d;
+ color: #000102;
+ border:1px solid #b7a543;
+}
+
+.dhx_cal_light select {
+ color: #000102;
+}
+
+.dhx_cal_lsection {
+ background-color:#dbcf8c;
+ color: #fff4b5;
+}
+
+.dhx_cal_larea {
+ background-color:#fff4b5;
+ border:1px solid #b7a543;
+}
+
+
+.dhx_agenda_area{
+ background-image:url("./imgs/databg.png");
+}
+
+.dhx_agenda_line div {
+ border-right:1px dotted #7e7e7e;
+}
+
+.dhx_agenda_area .dhx_agenda_line div {
+ border-right:0px dotted #7e7e7e;
+}
+
+
+.dhx_scale_bar_last {
+ border-right: none;
+}
+
+.dhx_year_body .dhx_before .dhx_month_head, .dhx_year_body .dhx_after .dhx_month_head, .dhx_year_body .dhx_before .dhx_month_head a, .dhx_year_body .dhx_after .dhx_month_head a {
+ color:#bbb;
+}
+.dhx_year_body .dhx_before .dhx_month_head:hover, .dhx_year_body .dhx_after .dhx_month_head:hover, .dhx_year_body .dhx_before .dhx_month_head a:hover, .dhx_year_body .dhx_after .dhx_month_head a:hover {
+ color:white;
+ text-shadow:none;
+}
+
+.dhx_tooltip {
+ background-image:url("./imgs/databg.png");
+}
+
+.dhx_cal_event div.dhx_menu_head {
+ border:none;
+}
+
+div.dhx_menu_head{
+ border:1px solid #ff8d8d;
+}
+
+.dhx_after .dhx_month_head, .dhx_before .dhx_month_head {
+ color:#8c9299;
+}
+
+.dhx_cal_data .dhx_agenda_line {
+ color:#000102;
+}
+
+.dhx_cal_header .dhx_agenda_line {
+ color: #020202;
+}
+
+.dhx_tooltip_line {
+ color:#000102;
+}
+
+.dhx_cal_light select {
+ background-color: #ffffff;
+}
+
+.dhx_custom_button {
+ color: #000102;
+ background-color: #bac6cf;
+}
+
+div.dhx_form_repeat {
+ background-color: #ffffff;
+}
+
+div.dhx_repeat_divider {
+ border-left:1px dotted #dbcf8c;
+}
+
+
+.dhx_v_border {
+ border-right:1px dotted #8c9299;
+}
+
+
+.dhx_scale_bar_last {
+ border-right: none;
+}
+
+.dhx_tooltip {
+ background-image:url("./imgs/databg.png");
+}
+
+.dhx_text_disabled {
+ color:#000102;
+}
+
+.dhx_mini_calendar .dhx_calendar_click {
+ background-color:#bac6cf;
+}
+
+.dhx_matrix_cell,.dhx_matrix_scell {
+ border-bottom:1px dotted #757575;
+ border-right:1px dotted #757575;
+}
+
+.dhx_matrix_cell {
+ background-color: #ffffff;
+}
+
+
+/*=================================================================*/
+/* pro */
+/*=================================================================*/
+
+
+.dhx_cal_navline{
+ background-color:none;
+}
+
+
+.dhx_scale_holder {
+ border-right:1px solid #757575;
+}
+
+.dhx_scale_holder_now{
+ border-right:1px solid #757575;
+}
+
+.dhx_scale_hour{
+ background-image:url("./imgs/left-time-bg.png");
+ border-bottom:1px solid #757575;
+ color: #020202;
+}
+
+.dhx_multi_day{
+ background-image:url("./imgs/multi-days-bg.png");
+ border-bottom:1px solid #757575;
+}
+
+.dhx_multi_day_icon,.dhx_multi_day_icon_small{
+ background-image:url("./imgs/multi-days-bg.png");
+ border-bottom:1px solid #757575;
+ border-left:1px solid #FFFFFF;
+}
+
+.dhx_cal_event div{
+ border:1px solid #a73636;
+ background-color:#ff8d8d;
+ color:#000102;
+}
+
+.dhx_cal_event_clear{
+ color:#000102;
+}
+
+.dhx_cal_event_line{
+ background-image:url("./imgs/event-bg.png");
+ border:1px solid #a73636;
+ color:#000102;
+}
+
+.dhx_in_move{
+ background-image:url("./imgs/move.png");
+}
+
+.dhx_cal_event .dhx_body{
+ background-color:#ff8d8d;
+}
+
+.dhx_cal_light{
+ background-color:#bac6cf;
+ border:2px solid #757575;
+ color:#000102;
+}
+
+.dhx_cal_larea{
+ border:1px solid #757575;
+ background-color:#FFFFFF;
+}
+
+.dhx_cal_lsection{
+ background-image:url("./imgs/lightbox.png");
+ color:#000102;
+}
+
+.dhx_cal_ltext{
+ background-color:#ffffff;
+}
+
+.dhx_cal_ltext textarea{
+ color:#000102;
+ background-color:#ffffff;
+}
+
+.dhx_form_repeat input, .dhx_form_repeat select{
+ background-color:white;
+ color:black;
+}
+
+.dhx_cal_light select{
+ color:#000102;
+ background-color:#ffffff;
+}
+
+.dhx_section_time{
+ background-image:none;
+ background-color:#ffffff;
+}
+
+div.dhx_cal_editor{
+ background-color:#ff8d8d;
+}
+
+div.dhx_cal_editor textarea {
+ color: #000102;
+}
+
+
+/* .dhx_year_week{
+ background-image:url("./imgs/top-days-bg.png");
+}
+
+.dhx_month_head.dhx_year_event{
+ background-color:#ff8d8d;
+} */
+
+.dhx_cal_lsection .dhx_readonly{
+ color:#000102;
+}
+
+.dhx_after .dhx_month_head, .dhx_before .dhx_month_head {
+ background-color:#F4F4F4;
+}
+
+.dhx_cal_event div{
+ font-size: 11px;
+}
+.dhx_cal_event_line {
+ font-size: 11px;
+}
+.dhx_cal_event_clear{
+ font-size: 11px;
+}
+.dhx_cal_light{
+ font-size: 11px;
+}
+.dhx_cal_light select{
+ font-size: 11px;
+}
+.dhx_custom_button{
+ font-size: 11px;
+}
+
+.dhx_cal_lsection{
+ font-size: 14px;
+}
+
+.dhx_cal_ltext textarea {
+ font-size: 11px;
+}
+
+
+/*Added in 2.3*/
+
+
+/* Tree view */
+.dhx_matrix_scell.folder, .dhx_data_table.folder .dhx_matrix_cell{
+ background-color: #7e7e7e;
+}
+.dhtmlXTooltip.tooltip{
+ border-left:1px dotted #7e7e7e;
+ border-top:1px dotted #7e7e7e;
+}
+.dhx_map_area{
+ background-image:url("./imgs/databg_now.png");
+}
+.dhx_map_line div{
+ border-right:1px dotted #7e7e7e;
+}
+.dhx_map_line .headline_description{
+ border-right:1px dotted #7e7e7e;
+}
+.dhx_map_line .dhx_map_description{
+ border-right: 0px dotted #7e7e7e;
+}
+.dhx_map_line .line_description{
+ border-right:1px dotted #7e7e7e;
+}
+.dhx_map_line.highlight{
+ background-color: #bac6cf;
+}
+.dhx_map_area .dhx_map_line div{
+ border-right:0px dotted #7e7e7e;
+}
+
+
+
+/* Map view */
+.dhx_map_area{
+ background-image:url("./imgs/databg.png");
+}
+/* Map view end */
+
+
+/* Agenda week start */
+.dhx_wa_column_last .dhx_wa_day_cont{
+ border-left: 1px dotted #757575;
+}
+.dhx_wa_scale_bar {
+ border-top: 1px dotted #757575;
+ border-bottom: 1px dotted #757575;
+ color: #020202;
+}
+.dhx_wa_day_data {
+ background-color: #ffffff;
+}
+.dhx_wa_ev_body {
+ border-bottom: 1px dotted #757575;
+ color: #000102;
+}
+.dhx_wa_dnd {
+ color: #525253 !important;
+ background-color: #f7ffb1 !important;
+ border: 1px solid #757575;
+}
+.dhx_cal_event_selected{
+ background-color: #757575;
+ color: ffffff;
+}
+/* Agenda week end */
+
+
+
+
+.dhx_scale_bar_header {
+ border-bottom: 1px dotted #8894A3;
+}
+
+/*All*/
+/* increase width of lightbox */
+.dhx_cal_light_wide .dhx_cal_lsection{
+ background-image:url(./imgs/multi-days-bg.png);
+}
+/*2.3*/
+.dhx_cal_lsection .dhx_fullday{
+ color:#000000;
+}
+.dhx_cal_light_wide .dhx_cal_lsection{
+ color:#000000;
+}
+.dhx_cal_light_wide .dhx_wrap_section{
+ border-top:1px solid #757575;
+ background-image:url(./imgs/multi-days-bg.png);
+}
+.dhx_cal_light_wide .dhx_cal_ltext{
+ border-left:1px solid #757575;
+}
+.dhx_cal_light_wide .dhx_cal_ltext {
+ background-color:#ffffff;
+}
+.dhx_custom_button{
+ background:#ffffff;
+ color:#000000;
+}
+/* timeline second scale start */
+.dhx_cal_header.dhx_second_cal_header {
+ background-image: url("./imgs/second-top-days-bg.png");
+}
+/* timeline second scale end */
+.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday, .dhx_cal_lsection .dhx_fullday{
+ color:#000000;
+ font-size: 14px;
+}
+.dhx_cal_light_wide .dhx_cal_lsection {
+ font-size: 14px;
+}
+
+.dhtmlxLayoutPolyContainer_dhx_skyblue .dhx_cal_container {
+ background-color: #d0e5ff;
+}
+
+div.dhx_cal_editor{
+ border:1px solid #B7A543;
+}
+
+.dhx_cal_light_wide .dhx_repeat_divider {
+ border-color: #757575;
+}
+
+.dhx_cal_event .dhx_header, .dhx_cal_event .dhx_header {
+ display:none;
+}
+.dhx_scale_holder .dhx_cal_event .dhx_footer, .dhx_scale_holder_now .dhx_cal_event .dhx_footer {
+ display:none;
+}
diff --git a/addons/web_calendar/static/src/js/calendar.js b/addons/web_calendar/static/src/js/calendar.js
index a5fd8bcac9c..d2e8828b1dc 100644
--- a/addons/web_calendar/static/src/js/calendar.js
+++ b/addons/web_calendar/static/src/js/calendar.js
@@ -113,6 +113,9 @@ openerp.web_calendar.CalendarView = openerp.web.View.extend({
scheduler.init('openerp_scheduler', null, this.mode || 'month');
+ // Remove hard coded style attributes from dhtmlx scheduler
+ this.$element.find(".dhx_cal_navline div").removeAttr('style');
+
scheduler.detachAllEvents();
scheduler.attachEvent('onEventAdded', this.do_create_event);
scheduler.attachEvent('onEventDeleted', this.do_delete_event);
From 7bfe9c55c97f30ade77459104bc198d87d2e9099 Mon Sep 17 00:00:00 2001
From: Antoine Huvelle
Date: Thu, 27 Oct 2011 13:48:33 +0200
Subject: [PATCH 019/106] [IMP] Last changes in the web_calendar css
bzr revid: ahu@openerp.com-20111027114833-hu2g70zlicypenuq
---
.../static/src/css/web_calendar.css | 135 +++++++++---------
1 file changed, 69 insertions(+), 66 deletions(-)
diff --git a/addons/web_calendar/static/src/css/web_calendar.css b/addons/web_calendar/static/src/css/web_calendar.css
index 656f6c92946..ae3f944006c 100644
--- a/addons/web_calendar/static/src/css/web_calendar.css
+++ b/addons/web_calendar/static/src/css/web_calendar.css
@@ -7,7 +7,7 @@
-webkit-box-shadow: none;
box-shadow: none;
}
-.dhx_cal_container{
+.dhx_cal_container, .dhx_cal_event {
background-position:0 24px;
background-repeat:repeat-x;
background-color:white;
@@ -144,7 +144,7 @@
height:18px;
}
.dhx_mini_calendar .dhx_cal_prev_button {
- background :url("/web_calendar/static/src/img/minical_left.png") no-repeat 5px 6px;
+ background:url("/web_calendar/static/src/img/minical_left.png") no-repeat 5px 6px;
}
.dhx_mini_calendar .dhx_cal_next_button {
@@ -241,7 +241,7 @@
border-left:1px dotted #586A7E;
}
-.dhx_scale_holder{position:absolute;border-right:1px dotted #586A7E;background-image:url(imgs/databg.png);}.dhx_scale_holder_now{position:absolute;border-right:1px dotted #586A7E;background-image:url(imgs/databg_now.png);}.dhx_scale_hour{height:41px;width:50px;border-bottom:1px dotted #8894A3;background-color:#C2D5FC;text-align:center;line-height:40px;color:#586A7E;overflow:hidden;}
+.dhx_scale_holder{position:absolute;border-right:1px dotted #586A7E;background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png");}.dhx_scale_holder_now{position:absolute;border-right:1px dotted #586A7E;background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg_now.png");}.dhx_scale_hour{height:41px;width:50px;border-bottom:1px dotted #8894A3;background-color:#C2D5FC;text-align:center;line-height:40px;color:#586A7E;overflow:hidden;}
.dhx_month_head{
background-color:#F4F4F4;
@@ -275,18 +275,23 @@
.dhx_cal_drag{position:absolute;z-index:9999;background-color:#FFE763;border:1px solid #B7A543;opacity:.5;filter:alpha(opacity=50);}
-.dhx_loading{position:absolute;width:128px;height:15px;background-image:url(imgs/loading.gif);z-index:9999;}
+.dhx_loading{position:absolute;width:128px;height:15px;background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/loading.gif);z-index:9999;}
.dhx_multi_day_icon,.dhx_multi_day{background-color:#E1E6FF;background-repeat:no-repeat;border-right:1px dotted #8894A3;}.dhx_multi_day{position:absolute;border-top:1px dotted #8894A3;}.
-dhx_multi_day_icon{background-image:url(imgs/clock_big.gif);}.dhx_multi_day_icon_small{background-image:url(imgs/clock_small.gif);}
+dhx_multi_day_icon{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/clock_big.gif);}.dhx_multi_day_icon_small{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/clock_small.gif);}
.dhx_multi_day_icon,.dhx_multi_day_icon_small{background-position:center center;background-color:#E1E6FF;background-repeat:no-repeat;border-bottom:1px dotted #8894A3;border-right:1px dotted #8894A3;}
.dhtmlxLayoutPolyContainer_dhx_skyblue .dhx_cal_container{background-color:none;}
.dhx_cal_event div{
- background-color:#FFE763;border:1px solid #B7A543;color:#887A2E;overflow:hidden;width:100%;font-size:8pt;
+ background-color:#FFE763;
+ border:1px solid #a73636;
+ color:#887A2E;
+ overflow:hidden;
+ width:100%;
+ font-size:100%;
}
.dhx_move_denied .dhx_cal_event .dhx_header,.dhx_move_denied .dhx_cal_event .dhx_title{cursor:default;}
@@ -299,21 +304,25 @@ dhx_multi_day_icon{background-image:url(imgs/clock_big.gif);}.dhx_multi_day_icon
}
.dhx_cal_event .dhx_title{
- height:16px;
- border-bottom-style:dotted;font-size:7pt;
+ height:18px;
+ border-bottom-style:solid;
+ border-top-style:solid;
font-weight:bold;
text-align:center;
background-position:right;
background-repeat:no-repeat;
cursor:pointer;
- font-size: 0.8em;
+ vertical-align:middle;
+ padding-top:2px;
+ font-size: 120%;
-moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px;
}
.dhx_cal_event .dhx_body{
border-width:0 1px 1px 1px;
padding:5px;
- -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px
+ -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px;
+ font-size:120%;
}
.dhx_resize_denied .dhx_cal_event .dhx_footer{cursor:default;}
@@ -322,24 +331,24 @@ dhx_multi_day_icon{background-image:url(imgs/clock_big.gif);}.dhx_multi_day_icon
font-size:8pt;height:13px;padding-left:10px;color:#887A2E;cursor:pointer;overflow:hidden;}
.dhx_cal_event_clear{
- font-size:8pt;
+ font-size:130%;
height:15px;
padding-left:2px;
- color:#887A2E;
+ color:white;
white-space:nowrap;
overflow:hidden;
cursor:pointer;
vertical-align:middle;
}
-.dhx_in_move{background-color:#FFFF80;}div.dhx_cal_editor{background-color:#FFE763;border:1px solid #B7A543;border-top-style:dotted;z-index:999;position:absolute;overflow:hidden;}textarea.dhx_cal_editor{width:100%;height:100%;border:0 solid black;margin:none;padding:none;overflow:auto;}div.dhx_menu_head{background-image:url(imgs/controls.gif);background-position:0 -43px;width:10px;height:10px;margin-left:5px;margin-top:1px;border:none;cursor:default;}div.dhx_menu_icon{background-image:url(imgs/controls.gif);width:20px;height:20px;margin-left:-5px;margin-top:0;border:none;cursor:pointer;}div.icon_details{background-position:0 0;}div.icon_edit{background-position:-22px 0;}div.icon_save{background-position:-84px -1px;}div.icon_cancel{background-position:-62px 0;}div.icon_delete{background-position:-42px 0;}div.dhx_now_time{position:absolute;width:100%;border-bottom:2px dotted red;z-index:1;}div.dhx_time_block{position:absolute;width:100%;background:silver;opacity:.4;filter:alpha(opacity=40);z-index:1;}
+.dhx_in_move{background-color:#FFFF80;}div.dhx_cal_editor{background-color:#FFE763;border:1px solid #B7A543;border-top-style:dotted;z-index:999;position:absolute;overflow:hidden;}textarea.dhx_cal_editor{width:100%;height:100%;border:0 solid black;margin:none;padding:none;overflow:auto;}div.dhx_menu_head{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif);background-position:0 -43px;width:10px;height:10px;margin-left:5px;margin-top:1px;border:none;cursor:default;}div.dhx_menu_icon{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif);width:20px;height:20px;margin-left:-5px;margin-top:0;border:none;cursor:pointer;}div.icon_details{background-position:0 0;}div.icon_edit{background-position:-22px 0;}div.icon_save{background-position:-84px -1px;}div.icon_cancel{background-position:-62px 0;}div.icon_delete{background-position:-42px 0;}div.dhx_now_time{position:absolute;width:100%;border-bottom:2px dotted red;z-index:1;}div.dhx_time_block{position:absolute;width:100%;background:silver;opacity:.4;filter:alpha(opacity=40);z-index:1;}
.dhx_unselectable,.dhx_unselectable div{-webkit-user-select:none;-moz-user-select:none;-moz-user-select:-moz-none;}
.dhx_cal_light{background-color:#FFE763;border-radius:5px;
font-size:8pt;border:1px solid #B7A64B;color:#887A2E;position:absolute;z-index:10001;width:580px;height:300px;box-shadow:5px 5px 5px #888;}
-.dhx_cal_light_wide{width:650px;}.dhx_mark{position:relative;top:3px;background-image:url('./imgs/controls.gif');background-position:0 -43px;padding-left:10px;}
+.dhx_cal_light_wide{width:650px;}.dhx_mark{position:relative;top:3px;background-image:url('/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif');background-position:0 -43px;padding-left:10px;}
.dhx_ie6 .dhx_mark{background-position:6px -41px;}
@@ -357,7 +366,7 @@ dhx_multi_day_icon{background-image:url(imgs/clock_big.gif);}.dhx_multi_day_icon
.dhx_cal_light .dhx_title{padding-left:10px;}
-.dhx_cal_larea{border:1px solid #DCC43E;background-color:#FFF4B5;overflow:hidden;margin-left:3px;width:572px;height:1px;}.dhx_btn_set{padding:5px 10px 0 10px;float:left;}.dhx_btn_set div{float:left;height:21px;line-height:21px;vertical-align:middle;cursor:pointer;}.dhx_save_btn{background-image:url('./imgs/controls.gif');background-position:-84px 0;width:21px;}.dhx_cancel_btn{background-image:url('./imgs/controls.gif');background-position:-63px 0;width:20px;}.dhx_delete_btn{background-image:url('./imgs/controls.gif');background-position:-42px 0;width:20px;}.dhx_cal_cover{width:100%;height:100%;position:absolute;z-index:10000;top:0;left:0;background-color:black;opacity:.1;filter:alpha(opacity=10);}.dhx_custom_button{padding:0 3px 0 3px;color:#887A2E;font-size:8pt;background-color:#FFE763;font-weight:normal;margin-right:5px;margin-top:0;cursor:pointer;}.dhx_custom_button div{cursor:pointer;float:left;height:21px;line-height:21px;vertical-align:middle;}
+.dhx_cal_larea{border:1px solid #DCC43E;background-color:#FFF4B5;overflow:hidden;margin-left:3px;width:572px;height:1px;}.dhx_btn_set{padding:5px 10px 0 10px;float:left;}.dhx_btn_set div{float:left;height:21px;line-height:21px;vertical-align:middle;cursor:pointer;}.dhx_save_btn{background-image:url('/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif');background-position:-84px 0;width:21px;}.dhx_cancel_btn{background-image:url('/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif');background-position:-63px 0;width:20px;}.dhx_delete_btn{background-image:url('/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif');background-position:-42px 0;width:20px;}.dhx_cal_cover{width:100%;height:100%;position:absolute;z-index:10000;top:0;left:0;background-color:black;opacity:.1;filter:alpha(opacity=10);}.dhx_custom_button{padding:0 3px 0 3px;color:#887A2E;font-size:8pt;background-color:#FFE763;font-weight:normal;margin-right:5px;margin-top:0;cursor:pointer;}.dhx_custom_button div{cursor:pointer;float:left;height:21px;line-height:21px;vertical-align:middle;}
.dhx_cal_light_wide .dhx_cal_larea{border-top-width:0;}.dhx_cal_light_wide .dhx_cal_lsection{border:0;float:left;text-align:right;width:100px;height:20px;font-size:16px;padding:5px 0 0 10px;}.dhx_cal_light_wide .dhx_wrap_section{border-top:1px solid #DBCF8C;position:relative;background-color:#DBCF8C;overflow:hidden;}.dhx_cal_light_wide .dhx_section_time{padding-top:2px!important;height:20px!important;}.dhx_section_time{text-align:center;}.dhx_cal_light_wide .dhx_cal_larea{width:730px;}.dhx_cal_light_wide{width:738px;}.dhx_cal_light_wide .dhx_section_time{background:transparent;}.dhx_cal_light_wide .dhx_cal_checkbox label{padding-left:0;}.dhx_cal_wide_checkbox input{margin-top:8px;margin-left:14px;}.dhx_cal_light input{;font-size:8pt;color:#887A2E;}
@@ -367,7 +376,7 @@ dhx_multi_day_icon{background-image:url(imgs/clock_big.gif);}.dhx_multi_day_icon
.dhx_scale_bar_header{position:absolute;border-bottom:1px dotted #8894A3;width:100%;}
-.dhx_expand_icon{position:absolute;top:0;right:0;background-image:url(./imgs/colapce-expand-icon.gif);width:18px;height:18px;cursor:pointer;background-position:0 18px;z-index:16;}.dhx_agenda_area{width:100%;height:100%;overflow-y:auto;background-image:url(./imgs/databg.png);}.dhx_agenda_line{height:21px;clear:both;overflow:hidden;}.dhx_agenda_line div{float:left;width:188px;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}.dhx_agenda_area .dhx_agenda_line div{border-right:0 dotted #8894A3;}.dhx_v_border{position:absolute;left:186px;top:0;border-right:1px dotted #8894A3;width:1px;height:100%;}.dhx_agenda_line .dhx_event_icon{width:20px;border-width:0;background:url(./imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;}.dhx_agenda_line span{padding-left:5px;line-height:21px;}
+.dhx_expand_icon{position:absolute;top:0;right:0;background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/colapce-expand-icon.gif);width:18px;height:18px;cursor:pointer;background-position:0 18px;z-index:16;}.dhx_agenda_area{width:100%;height:100%;overflow-y:auto;background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png);}.dhx_agenda_line{height:21px;clear:both;overflow:hidden;}.dhx_agenda_line div{float:left;width:188px;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}.dhx_agenda_area .dhx_agenda_line div{border-right:0 dotted #8894A3;}.dhx_v_border{position:absolute;left:186px;top:0;border-right:1px dotted #8894A3;width:1px;height:100%;}.dhx_agenda_line .dhx_event_icon{width:20px;border-width:0;background:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;}.dhx_agenda_line span{padding-left:5px;line-height:21px;}
.dhx_year_week{
@@ -407,8 +416,8 @@ dhx_multi_day_icon{background-image:url(imgs/clock_big.gif);}.dhx_multi_day_icon
.dhx_year_body .dhx_before .dhx_month_head, .dhx_year_body .dhx_after .dhx_month_head{cursor:default;}
-.dhx_tooltip{border:1px solid #BBB;background-image:url(./imgs/databg.png);position:absolute;z-index:9998;width:300px;height:auto;
-font-size:8pt;overflow:hidden;}.dhx_tooltip_line{line-height:20px;height:20px;overflow:hidden;}.dhx_tooltip_line .dhx_event_icon{width:20px;height:20px;padding-right:10px;float:left;border-width:0;position:relative;background:url(./imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;}.dhx_tooltip_date{float:left;width:auto;padding-left:5px;text-align:center;}
+.dhx_tooltip{border:1px solid #BBB;background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png);position:absolute;z-index:9998;width:300px;height:auto;
+font-size:8pt;overflow:hidden;}.dhx_tooltip_line{line-height:20px;height:20px;overflow:hidden;}.dhx_tooltip_line .dhx_event_icon{width:20px;height:20px;padding-right:10px;float:left;border-width:0;position:relative;background:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;}.dhx_tooltip_date{float:left;width:auto;padding-left:5px;text-align:center;}
.dhx_text_disabled{color:#887A2E;font-size:8pt;}.dhx_mini_calendar{-moz-box-shadow:5px 5px 5px #888;-khtml-box-shadow:5px 5px 5px #888;}
@@ -416,13 +425,13 @@ font-size:8pt;overflow:hidden;}.dhx_tooltip_line{line-height:20px;height:20px;ov
.dhx_mini_calendar .dhx_calendar_click{background-color:#C2D5FC;}
-.dhx_cal_navline div.dhx_minical_icon{width:18px;height:18px;left:190px;top:1px;cursor:pointer;background-image:url(./imgs/calendar.gif);}
+.dhx_cal_navline div.dhx_minical_icon{width:18px;height:18px;left:190px;top:1px;cursor:pointer;background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/calendar.gif);}
.dhx_matrix_scell{height:100%;}.dhx_matrix_cell,.dhx_matrix_scell{overflow:hidden;text-align:center;vertical-align:middle;border-bottom:1px dotted #8894A3;border-right:1px dotted #8894A3;}.dhx_matrix_cell{background-color:white;}.dhx_matrix_line{overflow:hidden;}.dhx_matrix_cell div,.dhx_matrix_scell div{overflow:hidden;text-align:center;height:auto;}.dhx_cal_lsection .dhx_readonly{font-size:9pt;font-size:8pt;padding:2px;color:#887A2E;}
.dhx_matrix_scell.folder,.dhx_data_table.folder .dhx_matrix_cell{background-color:#969394;cursor:pointer;}.dhx_matrix_scell .dhx_scell_level0{padding-left:5px;}.dhx_matrix_scell .dhx_scell_level1{padding-left:20px;}.dhx_matrix_scell .dhx_scell_level2{padding-left:35px;}.dhx_matrix_scell .dhx_scell_level3{padding-left:50px;}.dhx_matrix_scell .dhx_scell_level4{padding-left:65px;}.dhx_matrix_scell.folder{font-weight:bold;text-align:left;}.dhx_matrix_scell.folder .dhx_scell_expand{float:left;width:10px;padding-right:3px;}.dhx_matrix_scell.folder .dhx_scell_name{float:left;width:auto;}.dhx_matrix_scell.item .dhx_scell_name{padding-left:15px;text-align:left;}
-.dhx_data_table.folder .dhx_matrix_cell{border-right:0;}.dhx_section_timeline{overflow:hidden;padding:4px 0 2px 10px;}.dhx_section_timeline select{width:552px;}.dhx_map_area{width:100%;height:100%;overflow-y:auto;overflow-x:hidden;background-image:url(./imgs/databg.png);}.dhx_map_line .dhx_event_icon{width:20px;border-width:0;background:url(./imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;}.dhx_map_line{height:21px;clear:both;overflow:hidden;}.dhx_map{position:absolute;}.dhx_map_line div{float:left;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}.dhx_map_line .headline_description{float:left;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}.dhx_map_line .dhx_map_description{float:left;border-right:0 dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}
+.dhx_data_table.folder .dhx_matrix_cell{border-right:0;}.dhx_section_timeline{overflow:hidden;padding:4px 0 2px 10px;}.dhx_section_timeline select{width:552px;}.dhx_map_area{width:100%;height:100%;overflow-y:auto;overflow-x:hidden;background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png);}.dhx_map_line .dhx_event_icon{width:20px;border-width:0;background:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;}.dhx_map_line{height:21px;clear:both;overflow:hidden;}.dhx_map{position:absolute;}.dhx_map_line div{float:left;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}.dhx_map_line .headline_description{float:left;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}.dhx_map_line .dhx_map_description{float:left;border-right:0 dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}
.dhx_map_line .line_description{float:left;border-right:1px dotted #8894A3;text-align:left;padding-left:5px;line-height:21px;overflow:hidden;}.dhx_map_line.highlight{background-color:#C4C5CC;}.dhx_map_area .dhx_map_line div{border-right:0 dotted #8894A3;}.dhtmlXTooltip.tooltip{-moz-box-shadow:3px 3px 3px #888;-webkit-box-shadow:3px 3px 3px #888;-o-box-shadow:3px 3px 3px #888;box-shadow:3px 3px 3px #888;filter:progid:DXImageTransform.Microsoft.Shadow(color='#888888',Direction=135,Strength=5);background-color:white;border-left:1px dotted #887A2E;border-top:1px dotted #887A2E;color:#887A2E;cursor:default;padding:10px;position:absolute;z-index:500;}.dhx_cal_checkbox label{padding-left:5px;}.dhx_cal_light .radio{padding:2px 0 2px 10px;}.dhx_cal_light .radio input,.dhx_cal_light .radio label{line-height:15px;}.dhx_cal_light .radio input{vertical-align:middle;margin:0;padding:0;}.dhx_cal_light .radio label{vertical-align:middle;padding-right:10px;}.dhx_cal_light .combo{padding:4px;}.dhx_wa_column{float:left;}.dhx_wa_column_last .dhx_wa_day_cont{border-left:1px dotted #8894A3;}
@@ -431,7 +440,7 @@ font-size:8pt;overflow:hidden;}.dhx_tooltip_line{line-height:20px;height:20px;ov
.dhx_wa_dnd{position:absolute;padding-right:7px;color:#887AE2!important;background-color:#FFE763!important;border:1px solid #B7A543;}.dhx_cal_event_selected{background-color:#9cc1db;color:white;}.dhx_second_scale_bar{border-bottom:1px dotted #586A7E;padding-top:2px;}div.dhx_form_repeat input.radio{margin:-4px 0 0 -4px!ie;}div.dhx_form_repeat input.checkbox{margin:0 0 0 -4px!ie;}
.dhx_form_repeat,.dhx_form_repeat input{padding:0;margin:0;padding-left:5px;
-font-size:11px;line-height:24px;}.dhx_form_repeat{overflow:hidden;height:0;background-color:#FFF4B5;}.dhx_cal_light_wide .dhx_form_repeat{background-color:transparent;}.dhx_repeat_center,.dhx_repeat_left{height:115px;padding:10px 0 10px 10px;float:left;}.dhx_repeat_left{width:95px;}.dhx_repeat_center{width:335px;margin-top:12px;}.dhx_repeat_divider{float:left;height:115px;border-left:1px dotted #DCC43E;width:1px;}.dhx_repeat_right{float:right;height:115px;width:160px;padding:10px 3px 10px 10px;margin-top:7px;}input.dhx_repeat_text{height:16px;width:27px;margin:0 4px 0 4px;line-height:18px;padding:0 0 0 2px;}.dhx_form_repeat select{height:20px;width:87px;padding:0 0 0 2px;margin:0 4px 0 4px;}input.dhx_repeat_date{height:18px;width:80px;padding:0 0 0 2px;margin:0 4px 0 4px;background-repeat:no-repeat;background-position:64px 0;border:1px #7f9db9 solid;line-height:18px;}input.dhx_repeat_radio{margin-right:4px;}input.dhx_repeat_checkbox{margin:4px 4px 0 0;}.dhx_repeat_days td{padding-right:5px;}.dhx_repeat_days label{font-size:10px;}.dhx_custom_button{width:90px;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;}.dhx_custom_button_recurring{background-image:url(./imgs/but_repeat.gif);background-position:-5px 20px;width:20px;margin-right:10px;}.dhx_cal_light_rec{width:640px;}.dhx_cal_light_rec .dhx_cal_larea{width:632px;}.dhx_cal_light_rec.dhx_cal_light_wide{width:816px;}.dhx_cal_light_rec.dhx_cal_light_wide .dhx_cal_larea{width:808px;}
+font-size:11px;line-height:24px;}.dhx_form_repeat{overflow:hidden;height:0;background-color:#FFF4B5;}.dhx_cal_light_wide .dhx_form_repeat{background-color:transparent;}.dhx_repeat_center,.dhx_repeat_left{height:115px;padding:10px 0 10px 10px;float:left;}.dhx_repeat_left{width:95px;}.dhx_repeat_center{width:335px;margin-top:12px;}.dhx_repeat_divider{float:left;height:115px;border-left:1px dotted #DCC43E;width:1px;}.dhx_repeat_right{float:right;height:115px;width:160px;padding:10px 3px 10px 10px;margin-top:7px;}input.dhx_repeat_text{height:16px;width:27px;margin:0 4px 0 4px;line-height:18px;padding:0 0 0 2px;}.dhx_form_repeat select{height:20px;width:87px;padding:0 0 0 2px;margin:0 4px 0 4px;}input.dhx_repeat_date{height:18px;width:80px;padding:0 0 0 2px;margin:0 4px 0 4px;background-repeat:no-repeat;background-position:64px 0;border:1px #7f9db9 solid;line-height:18px;}input.dhx_repeat_radio{margin-right:4px;}input.dhx_repeat_checkbox{margin:4px 4px 0 0;}.dhx_repeat_days td{padding-right:5px;}.dhx_repeat_days label{font-size:10px;}.dhx_custom_button{width:90px;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;}.dhx_custom_button_recurring{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/but_repeat.gif);background-position:-5px 20px;width:20px;margin-right:10px;}.dhx_cal_light_rec{width:640px;}.dhx_cal_light_rec .dhx_cal_larea{width:632px;}.dhx_cal_light_rec.dhx_cal_light_wide{width:816px;}.dhx_cal_light_rec.dhx_cal_light_wide .dhx_cal_larea{width:808px;}
.dhx_multi_day{border:none;border-top:1px solid #A4BED4;}
@@ -448,11 +457,11 @@ font-size:11px;line-height:24px;}.dhx_form_repeat{overflow:hidden;height:0;backg
.dhx_scale_holder{border-right:1px solid #A4BED4;}
-.dhx_scale_holder_now{border-right:1px solid #A4BED4;}.dhx_scale_hour{background-image:url(imgs/left-time-bg.png);border-bottom:1px solid #A4BED4;color:#2F3A48;}
+.dhx_scale_holder_now{border-right:1px solid #A4BED4;}.dhx_scale_hour{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/left-time-bg.png);border-bottom:1px solid #A4BED4;color:#2F3A48;}
-.dhx_multi_day{background-image:url(imgs/multi-days-bg.png);background-repeat:repeat;border-bottom:1px solid #A4BED4;border-left:0;}
+.dhx_multi_day{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/multi-days-bg.png);background-repeat:repeat;border-bottom:1px solid #A4BED4;border-left:0;}
-.dhx_multi_day_icon,.dhx_multi_day_icon_small{background-image:url(imgs/multi-days-bg.png);border-bottom:1px solid #A4BED4;border-left:1px solid #fff;background-position:0 0;background-repeat:repeat;}
+.dhx_multi_day_icon,.dhx_multi_day_icon_small{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/multi-days-bg.png);border-bottom:1px solid #A4BED4;border-left:1px solid #fff;background-position:0 0;background-repeat:repeat;}
.dhx_month_head{background-color:#F4F4F4;}
@@ -460,11 +469,27 @@ font-size:11px;line-height:24px;}.dhx_form_repeat{overflow:hidden;height:0;backg
.dhx_after .dhx_month_body,.dhx_before .dhx_month_body{background-color:#EFEDE2;}
-.dhx_cal_event div{border:1px solid #FFBD51;background-color:#FFE4AB;color:#000;}.dhx_cal_event_clear{color:#000;}.dhx_cal_event_line{background-image:url(imgs/event-bg.png);border:1px solid #FFBD51;color:#000;}.dhx_in_move{background-image:url(imgs/move.png);}.dhx_cal_event .dhx_body{background-color:#FFE4AB;}
+.dhx_cal_event div{border:1px solid #FFBD51;background-color:#FFE4AB;color:#000;}.dhx_cal_event_line{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/event-bg.png);border:1px solid #FFBD51;color:#000;}.dhx_in_move{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/move.png);}
.dhx_cal_event .dhx_title{background-color:#FFE4AB;}
-.dhx_cal_light{-moz-box-shadow:5px 5px 5px #888;-khtml-box-shadow:5px 5px 5px #888;background-color:#EBEBEB;border:2px solid #A4BED4;color:#000;}.dhx_cal_larea{border:1px solid #A4BED4;border-width:0 1px 1px;background-color:#FFF;}.dhx_cal_lsection{background-image:url(imgs/lightbox.png);font-size:14px;padding:5px 0 5px 10px;color:#000;}.dhx_cal_light_wide .dhx_cal_lsection{background-image:url(imgs/multi-days-bg.png);}.dhx_cal_ltext textarea{background-color:#fff;color:#000;}.dhx_cal_light select,.dhx_cal_light input{color:#000;}.dhx_save_btn{background-image:url(imgs/controlls5.png);}.dhx_cancel_btn{background-image:url(imgs/controlls5.png);}.dhx_delete_btn{background-image:url(imgs/controlls5.png);}div.dhx_menu_head{background-image:url(imgs/controlls5.png);border:1px solid #FFE4AB;}div.dhx_menu_icon{background-image:url(imgs/controlls5.png);border:medium none;}.dhx_section_time{height:20px!important;padding:7px 0!important;text-align:center;background:white;}div.dhx_cal_editor{background-color:#FFE4AB;}
+.dhx_cal_light{-moz-box-shadow:5px 5px 5px #888;-khtml-box-shadow:5px 5px 5px #888;background-color:#EBEBEB;border:2px solid #A4BED4;color:#000;}.dhx_cal_larea{border:1px solid #A4BED4;border-width:0 1px 1px;background-color:#FFF;}
+
+.dhx_cal_lsection{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/lightbox.png);font-size:14px;padding:5px 0 5px 10px;color:#000;}
+
+.dhx_cal_light_wide .dhx_cal_lsection{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/multi-days-bg.png);}.dhx_cal_ltext textarea{background-color:#fff;color:#000;}
+
+.dhx_cal_light select,.dhx_cal_light input{color:#000;}.dhx_save_btn{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controlls5.png);}
+
+.dhx_cancel_btn{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controlls5.png);}.dhx_delete_btn{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controlls5.png);}
+
+.div.dhx_menu_head{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controlls5.png);border:1px solid #FFE4AB;}
+
+.div.dhx_menu_icon{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controlls5.png);border:medium none;}
+
+.dhx_section_time{height:20px!important;padding:7px 0!important;text-align:center;background:white;}
+
+.div.dhx_cal_editor{background-color:#FFE4AB;}
.dhx_month_head{border-right:1px solid #E9E9E9;}
@@ -479,9 +504,9 @@ font-size:11px;line-height:24px;}.dhx_form_repeat{overflow:hidden;height:0;backg
.dhx_year_body .dhx_before .dhx_month_head,.dhx_year_body .dhx_after .dhx_month_head,.dhx_year_body .dhx_before .dhx_month_head a,.dhx_year_body .dhx_after .dhx_month_head a{color:#EFEDE2 ;}
-.dhx_cal_lsection .dhx_readonly{color:#000;}.dhx_tooltip{-moz-box-shadow:2px 2px 2px #888;-khtml-box-shadow:2px 2px 2px #888;}.dhx_custom_button{margin-top:-2px;}.dhx_cal_lsection .dhx_fullday{color:#000;}.dhx_cal_lsection.dhx_cal_checkbox{height:16px;line-height:18px;}.dhx_cal_light_wide .dhx_cal_lsection.dhx_cal_checkbox{height:20px;}.dhx_cal_checkbox label{vertical-align:top;}.dhx_cal_light_wide .dhx_cal_lsection{color:black;}.dhx_cal_light_wide .dhx_wrap_section{border-top:1px solid #A4BED4;background-image:url(imgs/multi-days-bg.png);}.dhx_cal_light_wide .dhx_cal_ltext{border-left:1px solid #A4BED4;}.dhx_cal_light_wide .dhx_cal_ltext{background-color:white;}.dhx_custom_button{background:white;color:black;}.dhx_form_repeat{background:white;}.dhx_repeat_divider{border-left:1px solid #A4BED4;}
+.dhx_cal_lsection .dhx_readonly{color:#000;}.dhx_tooltip{-moz-box-shadow:2px 2px 2px #888;-khtml-box-shadow:2px 2px 2px #888;}.dhx_custom_button{margin-top:-2px;}.dhx_cal_lsection .dhx_fullday{color:#000;}.dhx_cal_lsection.dhx_cal_checkbox{height:16px;line-height:18px;}.dhx_cal_light_wide .dhx_cal_lsection.dhx_cal_checkbox{height:20px;}.dhx_cal_checkbox label{vertical-align:top;}.dhx_cal_light_wide .dhx_cal_lsection{color:black;}.dhx_cal_light_wide .dhx_wrap_section{border-top:1px solid #A4BED4;background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/multi-days-bg.png);}.dhx_cal_light_wide .dhx_cal_ltext{border-left:1px solid #A4BED4;}.dhx_cal_light_wide .dhx_cal_ltext{background-color:white;}.dhx_custom_button{background:white;color:black;}.dhx_form_repeat{background:white;}.dhx_repeat_divider{border-left:1px solid #A4BED4;}
-.dhx_cal_header.dhx_second_cal_header{background-image:url("imgs/second-top-days-bg.png");padding-right:20px;}
+.dhx_cal_header.dhx_second_cal_header{background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/second-top-days-bg.png");padding-right:20px;}
.dhx_scale_bar{padding-top:4px;}
@@ -506,11 +531,6 @@ font-size:11px;line-height:24px;}.dhx_form_repeat{overflow:hidden;height:0;backg
border:1px solid #a73636;
}
-.dhx_cal_event div {
- background-color:#ff8d8d;
- color: #000102;
- border:1px solid #a73636;
-}
.dhx_cal_event_line {
background-color:#ff8d8d;
@@ -524,12 +544,12 @@ font-size:11px;line-height:24px;}.dhx_form_repeat{overflow:hidden;height:0;backg
.dhx_scale_holder {
- background-image:url("./imgs/databg.png");
+ background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png");
border-right:1px dotted #7e7e7e;
}
.dhx_scale_holder_now {
- background-image:url("./imgs/databg_now.png");
+ background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg_now.png");
border-right:1px dotted #7e7e7e;
}
@@ -564,7 +584,7 @@ font-size:11px;line-height:24px;}.dhx_form_repeat{overflow:hidden;height:0;backg
.dhx_agenda_area{
- background-image:url("./imgs/databg.png");
+ background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png");
}
.dhx_agenda_line div {
@@ -589,7 +609,7 @@ font-size:11px;line-height:24px;}.dhx_form_repeat{overflow:hidden;height:0;backg
}
.dhx_tooltip {
- background-image:url("./imgs/databg.png");
+ background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png");
}
.dhx_cal_event div.dhx_menu_head {
@@ -644,7 +664,7 @@ div.dhx_repeat_divider {
}
.dhx_tooltip {
- background-image:url("./imgs/databg.png");
+ background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png");
}
.dhx_text_disabled {
@@ -684,46 +704,32 @@ div.dhx_repeat_divider {
}
.dhx_scale_hour{
- background-image:url("./imgs/left-time-bg.png");
+ background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/left-time-bg.png");
border-bottom:1px solid #757575;
color: #020202;
}
.dhx_multi_day{
- background-image:url("./imgs/multi-days-bg.png");
+ background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/multi-days-bg.png");
border-bottom:1px solid #757575;
}
.dhx_multi_day_icon,.dhx_multi_day_icon_small{
- background-image:url("./imgs/multi-days-bg.png");
+ background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/multi-days-bg.png");
border-bottom:1px solid #757575;
border-left:1px solid #FFFFFF;
}
-.dhx_cal_event div{
- border:1px solid #a73636;
- background-color:#ff8d8d;
- color:#000102;
-}
-
-.dhx_cal_event_clear{
- color:#000102;
-}
.dhx_cal_event_line{
- background-image:url("./imgs/event-bg.png");
+ background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/event-bg.png");
border:1px solid #a73636;
color:#000102;
}
.dhx_in_move{
- background-image:url("./imgs/move.png");
+ background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/move.png");
}
-
-.dhx_cal_event .dhx_body{
- background-color:#ff8d8d;
-}
-
.dhx_cal_light{
background-color:#bac6cf;
border:2px solid #757575;
@@ -736,7 +742,7 @@ div.dhx_repeat_divider {
}
.dhx_cal_lsection{
- background-image:url("./imgs/lightbox.png");
+ background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/lightbox.png");
color:#000102;
}
@@ -795,9 +801,6 @@ div.dhx_cal_editor textarea {
.dhx_cal_event_line {
font-size: 11px;
}
-.dhx_cal_event_clear{
- font-size: 11px;
-}
.dhx_cal_light{
font-size: 11px;
}
@@ -829,7 +832,7 @@ div.dhx_cal_editor textarea {
border-top:1px dotted #7e7e7e;
}
.dhx_map_area{
- background-image:url("./imgs/databg_now.png");
+ background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg_now.png");
}
.dhx_map_line div{
border-right:1px dotted #7e7e7e;
@@ -854,7 +857,7 @@ div.dhx_cal_editor textarea {
/* Map view */
.dhx_map_area{
- background-image:url("./imgs/databg.png");
+ background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png");
}
/* Map view end */
@@ -896,7 +899,7 @@ div.dhx_cal_editor textarea {
/*All*/
/* increase width of lightbox */
.dhx_cal_light_wide .dhx_cal_lsection{
- background-image:url(./imgs/multi-days-bg.png);
+ background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/multi-days-bg.png);
}
/*2.3*/
.dhx_cal_lsection .dhx_fullday{
@@ -907,7 +910,7 @@ div.dhx_cal_editor textarea {
}
.dhx_cal_light_wide .dhx_wrap_section{
border-top:1px solid #757575;
- background-image:url(./imgs/multi-days-bg.png);
+ background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/multi-days-bg.png);
}
.dhx_cal_light_wide .dhx_cal_ltext{
border-left:1px solid #757575;
@@ -921,7 +924,7 @@ div.dhx_cal_editor textarea {
}
/* timeline second scale start */
.dhx_cal_header.dhx_second_cal_header {
- background-image: url("./imgs/second-top-days-bg.png");
+ background-image: url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/second-top-days-bg.png");
}
/* timeline second scale end */
.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday, .dhx_cal_lsection .dhx_fullday{
From 8ef20b08812691e632d8ef50662f9b821e77df2c Mon Sep 17 00:00:00 2001
From: Antoine Huvelle
Date: Thu, 27 Oct 2011 14:52:57 +0200
Subject: [PATCH 020/106] [IMP] .openerp before each class
bzr revid: ahu@openerp.com-20111027125257-gifygo815jy1xbi0
---
.../static/src/css/web_calendar.css | 586 +++++++++++-------
1 file changed, 345 insertions(+), 241 deletions(-)
diff --git a/addons/web_calendar/static/src/css/web_calendar.css b/addons/web_calendar/static/src/css/web_calendar.css
index ae3f944006c..05a5b0df4c1 100644
--- a/addons/web_calendar/static/src/css/web_calendar.css
+++ b/addons/web_calendar/static/src/css/web_calendar.css
@@ -7,7 +7,7 @@
-webkit-box-shadow: none;
box-shadow: none;
}
-.dhx_cal_container, .dhx_cal_event {
+.openerp .dhx_cal_container, .openerp .dhx_cal_event {
background-position:0 24px;
background-repeat:repeat-x;
background-color:white;
@@ -16,32 +16,32 @@
overflow:hidden;
}
-.dhx_cal_container div{
+.openerp .dhx_cal_container div{
-moz-user-select:none;
-moz-user-select:-moz-none;
}
-.dhx_cal_navline{
+.openerp .dhx_cal_navline{
height:20px; position:absolute;z-index:3;width:750px;color:#2F3A48;
}
-.dhx_cal_navline div{
+.openerp .dhx_cal_navline div{
top:2px;
white-space:nowrap;
}
-.dhx_cal_navline * {
+.openerp .dhx_cal_navline * {
vertical-align:middle;
}
-.dhx_cal_navline .dhx_cal_date{
+.openerp .dhx_cal_navline .dhx_cal_date{
font-weight:bold;
float:left;
font-size:1em;
margin:2px 0px 0px 10px;
}
-.dhx_cal_button .dhx_left_bg{width:1px;overflow:hidden;height:17px;z-index:20;top:0;}
+.openerp .dhx_cal_button .dhx_left_bg{width:1px;overflow:hidden;height:17px;z-index:20;top:0;}
-.dhx_cal_today_button, .dhx_cal_prev_button, .dhx_cal_next_button {
+.openerp .dhx_cal_today_button, .openerp .dhx_cal_prev_button, .openerp .dhx_cal_next_button {
color:white;
height:17px;
font-weight:bold;
@@ -58,7 +58,7 @@
-webkit-border-radius: 3px;
}
-.dhx_cal_today_button {
+.openerp .dhx_cal_today_button {
background: #ccc; /* Old browsers */
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#c9c9c9', endColorstr='#999999'); /* IE6-9 */
background: -webkit-gradient(linear, left top, left bottom, from(#c9c9c9), to(#999999)); /* Chrome,Safari4+ */
@@ -71,7 +71,7 @@
padding-right:5px;
}
-.dhx_cal_prev_button{
+.openerp .dhx_cal_prev_button{
background: #bbb;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#c9c9c9', endColorstr='#999999');
background: url("/web_calendar/static/src/img/cal_left.png") 5px 3px, -webkit-gradient(linear, left top, left bottom, from(#c9c9c9), to(#999999));
@@ -84,7 +84,7 @@
width:20px;
}
-.dhx_cal_next_button {
+.openerp .dhx_cal_next_button {
background: #ccc; /* Old browsers */
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#888', endColorstr='#888'); /* IE6-9 */
background: url("/web_calendar/src/img/cal_right.png") 5px 3px, -webkit-gradient(linear, left top, left bottom, from(#c9c9c9), to(#999999)); /* Chrome,Safari4+ */
@@ -97,7 +97,7 @@
width:20px;
}
-.dhx_cal_prev_button:hover, .dhx_cal_prev_button:active {
+.openerp .dhx_cal_prev_button:hover, .openerp .dhx_cal_prev_button:active {
background: #bbb;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#888', endColorstr='#888');
background: url("/web_calendar/static/src/img/cal_left.png") 5px 3px, -webkit-gradient(linear, left top, left bottom, from(#888), to(#888));
@@ -109,7 +109,7 @@
background-repeat:no-repeat;
}
-.dhx_cal_next_button:hover, .dhx_cal_next_button:active {
+.openerp .dhx_cal_next_button:hover, .openerp .dhx_cal_next_button:active {
background: #bbb;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#888', endColorstr='#888');
background:-webkit-gradient(linear, left top, left bottom, from(#888), to(#888));
@@ -121,7 +121,7 @@
background-repeat:no-repeat;
}
-.dhx_cal_today_button:hover, .dhx_cal_today_button:active {
+.openerp .dhx_cal_today_button:hover, .openerp .dhx_cal_today_button:active {
background: #bbb;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bbb', endColorstr='#bbb');
background: -webkit-gradient(linear, left top, left bottom, from(#888), to(#888));
@@ -133,39 +133,37 @@
background-repeat:no-repeat;
}
-.dhx_mini_calendar .dhx_cal_prev_button, .dhx_mini_calendar .dhx_cal_next_button, .dhx_mini_calendar .dhx_cal_today_button {
+.openerp .dhx_mini_calendar .dhx_cal_prev_button, .openerp .dhx_mini_calendar .dhx_cal_next_button, .openerp .dhx_mini_calendar .dhx_cal_today_button {
background:none;
border:0px;
}
-
-
-.dhx_mini_calendar .dhx_cal_prev_button, .dhx_mini_calendar .dhx_cal_next_button {
+.openerp .dhx_mini_calendar .dhx_cal_prev_button, .openerp .dhx_mini_calendar .dhx_cal_next_button {
width:16px;
height:18px;
}
-.dhx_mini_calendar .dhx_cal_prev_button {
+.openerp .dhx_mini_calendar .dhx_cal_prev_button {
background:url("/web_calendar/static/src/img/minical_left.png") no-repeat 5px 6px;
}
-.dhx_mini_calendar .dhx_cal_next_button {
+.openerp .dhx_mini_calendar .dhx_cal_next_button {
background:url("/web_calendar/static/src/img/minical_right.png") no-repeat 8px 6px;
}
-.dhx_mini_calendar .dhx_month_head {
+.openerp .dhx_mini_calendar .dhx_month_head {
font-size:0.9em;
color:#888
}
-.dhx_mini_calendar .dhx_month_head:hover {
+.openerp .dhx_mini_calendar .dhx_month_head:hover {
background-color:#bbb;
color:white;
text-shadow:none;
}
-.dhx_mini_calendar .dhx_scale_bar {
+.openerp .dhx_mini_calendar .dhx_scale_bar {
border-width:0px;
padding:2px 0px;
}
-.dhx_cal_tab {
+.openerp .dhx_cal_tab {
width:59px;
height:18px;
text-align:center;
@@ -186,26 +184,26 @@
border-top-right-radius:4px;
vertical-align:50% !important;
}
-.dhx_cal_tab[name="month_tab"] { right:0px; }
-.dhx_cal_tab[name="week_tab"] { right:62px; }
-.dhx_cal_tab[name="day_tab"] { right:107px; }
+.openerp .dhx_cal_tab[name="month_tab"] { right:0px; }
+.openerp .dhx_cal_tab[name="week_tab"] { right:62px; }
+.openerp .dhx_cal_tab[name="day_tab"] { right:107px; }
-.dhx_cal_tab:hover {
+.openerp .dhx_cal_tab:hover {
background-color:#ddd;
}
-.dhx_cal_tab.active{
+.openerp .dhx_cal_tab.active{
text-decoration:none;
cursor:default;
border-bottom:0;
background-color:white /*#F4F4F4;*/
}
-.dhx_cal_tab[name="day_tab"] {
+.openerp .dhx_cal_tab[name="day_tab"] {
margin-right:18px;
}
-.dhx_cal_header{
+.openerp .dhx_cal_header{
position:absolute;
left:10px;
top:23px;
@@ -221,18 +219,18 @@
text-shadow: 0 1px 0 white;
}
-.dhx_cal_data{
+.openerp .dhx_cal_data{
position:absolute;
top:44px;
width:600px;
overflow-y:auto;overflow-x:hidden;
}
-.dhx_cal_data tr td {
+.openerp .dhx_cal_data tr td {
border-width:0px;
}
-.dhx_scale_bar{
+.openerp .dhx_scale_bar{
position:absolute;
text-align:center;
text-shadow: 0 1px 0 white;
@@ -241,9 +239,11 @@
border-left:1px dotted #586A7E;
}
-.dhx_scale_holder{position:absolute;border-right:1px dotted #586A7E;background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png");}.dhx_scale_holder_now{position:absolute;border-right:1px dotted #586A7E;background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg_now.png");}.dhx_scale_hour{height:41px;width:50px;border-bottom:1px dotted #8894A3;background-color:#C2D5FC;text-align:center;line-height:40px;color:#586A7E;overflow:hidden;}
+.openerp .dhx_scale_holder{position:absolute;border-right:1px dotted #586A7E;background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png");}
+.openerp .dhx_scale_holder_now{position:absolute;border-right:1px dotted #586A7E;background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg_now.png");}.
+openerp .dhx_scale_hour{height:41px;width:50px;border-bottom:1px dotted #8894A3;background-color:#C2D5FC;text-align:center;line-height:40px;color:#586A7E;overflow:hidden;}
-.dhx_month_head{
+.openerp .dhx_month_head{
background-color:#F4F4F4;
color:#2F3A48;
text-shadow: 0 1px 0 white;
@@ -255,55 +255,54 @@
font-size:0.9em;
}
-.dhx_month_body{
+.openerp .dhx_month_body{
border-right:1px dotted #586A7E;
border-bottom:1px dotted #586A7E;
background-color:#FFF;
}
-.dhx_now .dhx_month_body{
+.openerp .dhx_now .openerp .dhx_month_body{
background-color:#cccccc;
}
-.dhx_after .dhx_month_body,.dhx_before .dhx_month_body{background-color:#ECECEC;}
+.openerp .dhx_after .dhx_month_body,.openerp .dhx_before .dhx_month_body{background-color:#ECECEC;}
-.dhx_after .dhx_month_head,.dhx_before .dhx_month_head{background-color:#F4F4F4;color:#94A6BB;}
+.openerp .dhx_after .dhx_month_head,.openerp .dhx_before .dhx_month_head{background-color:#F4F4F4;color:#94A6BB;}
-.dhx_now .dhx_month_head{
+.openerp .dhx_now .dhx_month_head{
background-color:#ddd;
}
-.dhx_cal_drag{position:absolute;z-index:9999;background-color:#FFE763;border:1px solid #B7A543;opacity:.5;filter:alpha(opacity=50);}
+.openerp .dhx_cal_drag{position:absolute;z-index:9999;background-color:#FFE763;border:1px solid #B7A543;opacity:.5;filter:alpha(opacity=50);}
-.dhx_loading{position:absolute;width:128px;height:15px;background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/loading.gif);z-index:9999;}
+.openerp .dhx_loading{position:absolute;width:128px;height:15px;background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/loading.gif);z-index:9999;}
-.dhx_multi_day_icon,.dhx_multi_day{background-color:#E1E6FF;background-repeat:no-repeat;border-right:1px dotted #8894A3;}.dhx_multi_day{position:absolute;border-top:1px dotted #8894A3;}.
+.openerp .dhx_multi_day_icon,.openerp .dhx_multi_day{background-color:#E1E6FF;background-repeat:no-repeat;border-right:1px dotted #8894A3;}.openerp .dhx_multi_day{position:absolute;border-top:1px dotted #8894A3;}.
-dhx_multi_day_icon{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/clock_big.gif);}.dhx_multi_day_icon_small{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/clock_small.gif);}
+dhx_multi_day_icon{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/clock_big.gif);}.openerp .dhx_multi_day_icon_small{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/clock_small.gif);}
-.dhx_multi_day_icon,.dhx_multi_day_icon_small{background-position:center center;background-color:#E1E6FF;background-repeat:no-repeat;border-bottom:1px dotted #8894A3;border-right:1px dotted #8894A3;}
+.openerp .dhx_multi_day_icon, .openerp .dhx_multi_day_icon_small{background-position:center center;background-color:#E1E6FF;background-repeat:no-repeat;border-bottom:1px dotted #8894A3;border-right:1px dotted #8894A3;}
-.dhtmlxLayoutPolyContainer_dhx_skyblue .dhx_cal_container{background-color:none;}
+.openerp .dhtmlxLayoutPolyContainer_dhx_skyblue .dhx_cal_container{background-color:none;}
-.dhx_cal_event div{
+.openerp .dhx_cal_event div{
background-color:#FFE763;
border:1px solid #a73636;
color:#887A2E;
overflow:hidden;
- width:100%;
font-size:100%;
}
-.dhx_move_denied .dhx_cal_event .dhx_header,.dhx_move_denied .dhx_cal_event .dhx_title{cursor:default;}
+.openerp .dhx_move_denied .dhx_cal_event .dhx_header, .openerp .dhx_move_denied .dhx_cal_event .dhx_title{cursor:default;}
-.dhx_cal_event .dhx_header{
+.openerp .dhx_cal_event .dhx_header{
height:0px;
margin-left:1px;
/*border-width:1px 1px 0 1px;*/
cursor:pointer;
}
-.dhx_cal_event .dhx_title{
+.openerp .dhx_cal_event .dhx_title{
height:18px;
border-bottom-style:solid;
border-top-style:solid;
@@ -318,19 +317,21 @@ dhx_multi_day_icon{background-image:url(/web_calendar/static/lib/dhtmlxScheduler
-moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px;
}
-.dhx_cal_event .dhx_body{
+.openerp .dhx_cal_event .dhx_body{
border-width:0 1px 1px 1px;
padding:5px;
-moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px;
font-size:120%;
}
-.dhx_resize_denied .dhx_cal_event .dhx_footer{cursor:default;}
+.openerp .dhx_resize_denied .dhx_cal_event .dhx_footer{cursor:default;}
-.dhx_cal_event .dhx_footer{height:1px;margin-left:2px;border-width:0 1px 1px 1px;cursor:s-resize;}.dhx_cal_event_line{background-color:#FFE763;border:1px solid #B7A543;border-radius:3px;
+.openerp .dhx_cal_event .dhx_footer{height:1px;margin-left:2px;border-width:0 1px 1px 1px;cursor:s-resize;}
+
+.openerp .dhx_cal_event_line{background-color:#FFE763;border:1px solid #B7A543;border-radius:3px;
font-size:8pt;height:13px;padding-left:10px;color:#887A2E;cursor:pointer;overflow:hidden;}
-.dhx_cal_event_clear{
+.openerp .dhx_cal_event_clear{
font-size:130%;
height:15px;
padding-left:2px;
@@ -341,45 +342,82 @@ dhx_multi_day_icon{background-image:url(/web_calendar/static/lib/dhtmlxScheduler
vertical-align:middle;
}
-.dhx_in_move{background-color:#FFFF80;}div.dhx_cal_editor{background-color:#FFE763;border:1px solid #B7A543;border-top-style:dotted;z-index:999;position:absolute;overflow:hidden;}textarea.dhx_cal_editor{width:100%;height:100%;border:0 solid black;margin:none;padding:none;overflow:auto;}div.dhx_menu_head{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif);background-position:0 -43px;width:10px;height:10px;margin-left:5px;margin-top:1px;border:none;cursor:default;}div.dhx_menu_icon{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif);width:20px;height:20px;margin-left:-5px;margin-top:0;border:none;cursor:pointer;}div.icon_details{background-position:0 0;}div.icon_edit{background-position:-22px 0;}div.icon_save{background-position:-84px -1px;}div.icon_cancel{background-position:-62px 0;}div.icon_delete{background-position:-42px 0;}div.dhx_now_time{position:absolute;width:100%;border-bottom:2px dotted red;z-index:1;}div.dhx_time_block{position:absolute;width:100%;background:silver;opacity:.4;filter:alpha(opacity=40);z-index:1;}
+.openerp .dhx_in_move{background-color:#FFFF80;}div.openerp .dhx_cal_editor{background-color:#FFE763;border:1px solid #B7A543;border-top-style:dotted;z-index:999;position:absolute;overflow:hidden;}textarea.openerp .dhx_cal_editor{width:100%;height:100%;border:0 solid black;margin:none;padding:none;overflow:auto;}div.openerp .dhx_menu_head{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif);background-position:0 -43px;width:10px;height:10px;margin-left:5px;margin-top:1px;border:none;cursor:default;}
-.dhx_unselectable,.dhx_unselectable div{-webkit-user-select:none;-moz-user-select:none;-moz-user-select:-moz-none;}
+div.openerp .dhx_menu_icon{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif);width:20px;height:20px;margin-left:-5px;margin-top:0;border:none;cursor:pointer;}div.icon_details{background-position:0 0;}
-.dhx_cal_light{background-color:#FFE763;border-radius:5px;
+.openerp div .icon_edit{background-position:-22px 0;}div.icon_save{background-position:-84px -1px;}
+.openerp div .icon_cancel{background-position:-62px 0;}div.icon_delete{background-position:-42px 0;}
+.openerp div .dhx_now_time{position:absolute;width:100%;border-bottom:2px dotted red;z-index:1;}
+.openerp div .dhx_time_block{position:absolute;width:100%;background:silver;opacity:.4;filter:alpha(opacity=40);z-index:1;}
+
+.openerp .dhx_unselectable, .dhx_unselectable div{-webkit-user-select:none;-moz-user-select:none;-moz-user-select:-moz-none;}
+
+.openerp .dhx_cal_light{background-color:#FFE763;border-radius:5px;
font-size:8pt;border:1px solid #B7A64B;color:#887A2E;position:absolute;z-index:10001;width:580px;height:300px;box-shadow:5px 5px 5px #888;}
-.dhx_cal_light_wide{width:650px;}.dhx_mark{position:relative;top:3px;background-image:url('/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif');background-position:0 -43px;padding-left:10px;}
+.openerp .dhx_cal_light_wide{width:650px;}
+.openerp .dhx_mark{position:relative;top:3px;background-image:url('/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif');background-position:0 -43px;padding-left:10px;}
-.dhx_ie6 .dhx_mark{background-position:6px -41px;}
+.openerp .dhx_ie6 .dhx_mark{background-position:6px -41px;}
-.dhx_cal_light select{font-size:8pt;color:#887A2E;padding:2px;margin:0;}.dhx_cal_ltitle{padding:2px 0 2px 5px;overflow:hidden;white-space:nowrap;}
+.openerp .dhx_cal_light select{font-size:8pt;color:#887A2E;padding:2px;margin:0;}.openerp .dhx_cal_ltitle{padding:2px 0 2px 5px;overflow:hidden;white-space:nowrap;}
-.dhx_cal_ltitle span{white-space:nowrap;}
+.openerp .dhx_cal_ltitle span{white-space:nowrap;}
-.dhx_cal_lsection{background-color:#DBCF8C;color:#FFF4B5;font-weight:bold;padding:5px 0 3px 10px;}.dhx_section_time{background-color:#DBCF8C;}
+.openerp .dhx_cal_lsection{background-color:#DBCF8C;color:#FFF4B5;font-weight:bold;padding:5px 0 3px 10px;}.openerp .dhx_section_time{background-color:#DBCF8C;}
-.dhx_cal_lsection .dhx_fullday{float:right;margin-right:5px;color:#887A2E;font-size:12px;font-weight:normal;line-height:20px;vertical-align:top;cursor:pointer;}
+.openerp .dhx_cal_lsection .dhx_fullday{float:right;margin-right:5px;color:#887A2E;font-size:12px;font-weight:normal;line-height:20px;vertical-align:top;cursor:pointer;}
-.dhx_cal_lsection{font-size:18px;}
+.openerp .dhx_cal_lsection{font-size:18px;}
-.dhx_cal_ltext{padding:2px 0 2px 10px;overflow:hidden;}.dhx_cal_ltext textarea{background-color:#FFF4B5;overflow:auto;border:none;color:#887A2E;height:100%;width:100%;outline:none!important;}.dhx_time{font-weight:bold;}
+.openerp .dhx_cal_ltext{padding:2px 0 2px 10px;overflow:hidden;}
+.openerp .dhx_cal_ltext textarea{background-color:#FFF4B5;overflow:auto;border:none;color:#887A2E;height:100%;width:100%;outline:none!important;}
+.openerp .dhx_time{font-weight:bold;}
-.dhx_cal_light .dhx_title{padding-left:10px;}
+.openerp .dhx_cal_light .openerp .dhx_title{padding-left:10px;}
-.dhx_cal_larea{border:1px solid #DCC43E;background-color:#FFF4B5;overflow:hidden;margin-left:3px;width:572px;height:1px;}.dhx_btn_set{padding:5px 10px 0 10px;float:left;}.dhx_btn_set div{float:left;height:21px;line-height:21px;vertical-align:middle;cursor:pointer;}.dhx_save_btn{background-image:url('/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif');background-position:-84px 0;width:21px;}.dhx_cancel_btn{background-image:url('/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif');background-position:-63px 0;width:20px;}.dhx_delete_btn{background-image:url('/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif');background-position:-42px 0;width:20px;}.dhx_cal_cover{width:100%;height:100%;position:absolute;z-index:10000;top:0;left:0;background-color:black;opacity:.1;filter:alpha(opacity=10);}.dhx_custom_button{padding:0 3px 0 3px;color:#887A2E;font-size:8pt;background-color:#FFE763;font-weight:normal;margin-right:5px;margin-top:0;cursor:pointer;}.dhx_custom_button div{cursor:pointer;float:left;height:21px;line-height:21px;vertical-align:middle;}
+.openerp .dhx_cal_larea{border:1px solid #DCC43E;background-color:#FFF4B5;overflow:hidden;margin-left:3px;width:572px;height:1px;}
+.openerp .dhx_btn_set{padding:5px 10px 0 10px;float:left;}.openerp .dhx_btn_set div{float:left;height:21px;line-height:21px;vertical-align:middle;cursor:pointer;}
+.openerp .dhx_save_btn{background-image:url('/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif');background-position:-84px 0;width:21px;}
+.openerp .dhx_cancel_btn{background-image:url('/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif');background-position:-63px 0;width:20px;}
+.openerp .dhx_delete_btn{background-image:url('/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif');background-position:-42px 0;width:20px;}
+.openerp .dhx_cal_cover{width:100%;height:100%;position:absolute;z-index:10000;top:0;left:0;background-color:black;opacity:.1;filter:alpha(opacity=10);}
+.openerp .dhx_custom_button{padding:0 3px 0 3px;color:#887A2E;font-size:8pt;background-color:#FFE763;font-weight:normal;margin-right:5px;margin-top:0;cursor:pointer;}
+.openerp .dhx_custom_button div{cursor:pointer;float:left;height:21px;line-height:21px;vertical-align:middle;}
-.dhx_cal_light_wide .dhx_cal_larea{border-top-width:0;}.dhx_cal_light_wide .dhx_cal_lsection{border:0;float:left;text-align:right;width:100px;height:20px;font-size:16px;padding:5px 0 0 10px;}.dhx_cal_light_wide .dhx_wrap_section{border-top:1px solid #DBCF8C;position:relative;background-color:#DBCF8C;overflow:hidden;}.dhx_cal_light_wide .dhx_section_time{padding-top:2px!important;height:20px!important;}.dhx_section_time{text-align:center;}.dhx_cal_light_wide .dhx_cal_larea{width:730px;}.dhx_cal_light_wide{width:738px;}.dhx_cal_light_wide .dhx_section_time{background:transparent;}.dhx_cal_light_wide .dhx_cal_checkbox label{padding-left:0;}.dhx_cal_wide_checkbox input{margin-top:8px;margin-left:14px;}.dhx_cal_light input{;font-size:8pt;color:#887A2E;}
+.openerp .dhx_cal_light_wide .dhx_cal_larea{border-top-width:0;}
+.openerp .dhx_cal_light_wide .dhx_cal_lsection{border:0;float:left;text-align:right;width:100px;height:20px;font-size:16px;padding:5px 0 0 10px;}
+.openerp .dhx_cal_light_wide .dhx_wrap_section{border-top:1px solid #DBCF8C;position:relative;background-color:#DBCF8C;overflow:hidden;}
+.openerp .dhx_cal_light_wide .dhx_section_time{padding-top:2px!important;height:20px!important;}
+.openerp .dhx_section_time{text-align:center;}
+.openerp .dhx_cal_light_wide .dhx_cal_larea{width:730px;}
+.openerp .dhx_cal_light_wide{width:738px;}
+.openerp .dhx_cal_light_wide .dhx_section_time{background:transparent;}
+.openerp .dhx_cal_light_wide .dhx_cal_checkbox label{padding-left:0;}
+.openerp .dhx_cal_wide_checkbox input{margin-top:8px;margin-left:14px;}
+.openerp .dhx_cal_light input{;font-size:8pt;color:#887A2E;}
-.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday{float:none;margin-right:0;color:#FFF4B5;font-weight:bold;font-size:16px;cursor:pointer;}
+.openerp .dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday{float:none;margin-right:0;color:#FFF4B5;font-weight:bold;font-size:16px;cursor:pointer;}
-.dhx_custom_button{float:right;height:21px;width:90px;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;}.dhx_cal_light_wide .dhx_custom_button{position:absolute;top:0;right:0;margin-top:2px;}.dhx_cal_light_wide .dhx_repeat_right{margin-right:55px;}.dhx_cal_light_wide .dhx_repeat_divider{border-color:#FFE763;}
+.openerp .dhx_custom_button{float:right;height:21px;width:90px;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;}
+.openerp .dhx_cal_light_wide .dhx_custom_button{position:absolute;top:0;right:0;margin-top:2px;}
+.openerp .dhx_cal_light_wide .dhx_repeat_right{margin-right:55px;}
+.openerp .dhx_cal_light_wide .dhx_repeat_divider{border-color:#FFE763;}
-.dhx_scale_bar_header{position:absolute;border-bottom:1px dotted #8894A3;width:100%;}
+.openerp .dhx_scale_bar_header{position:absolute;border-bottom:1px dotted #8894A3;width:100%;}
-.dhx_expand_icon{position:absolute;top:0;right:0;background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/colapce-expand-icon.gif);width:18px;height:18px;cursor:pointer;background-position:0 18px;z-index:16;}.dhx_agenda_area{width:100%;height:100%;overflow-y:auto;background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png);}.dhx_agenda_line{height:21px;clear:both;overflow:hidden;}.dhx_agenda_line div{float:left;width:188px;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}.dhx_agenda_area .dhx_agenda_line div{border-right:0 dotted #8894A3;}.dhx_v_border{position:absolute;left:186px;top:0;border-right:1px dotted #8894A3;width:1px;height:100%;}.dhx_agenda_line .dhx_event_icon{width:20px;border-width:0;background:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;}.dhx_agenda_line span{padding-left:5px;line-height:21px;}
+.openerp .dhx_expand_icon{position:absolute;top:0;right:0;background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/colapce-expand-icon.gif);width:18px;height:18px;cursor:pointer;background-position:0 18px;z-index:16;}
+.openerp .dhx_agenda_area{width:100%;height:100%;overflow-y:auto;background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png);}
+.openerp .dhx_agenda_line{height:21px;clear:both;overflow:hidden;}
+.openerp .dhx_agenda_line div{float:left;width:188px;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}
+.openerp .dhx_agenda_area .dhx_agenda_line div{border-right:0 dotted #8894A3;}
+.openerp .dhx_v_border{position:absolute;left:186px;top:0;border-right:1px dotted #8894A3;width:1px;height:100%;}
+.openerp .dhx_agenda_line .dhx_event_icon{width:20px;border-width:0;background:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;}
+.openerp .dhx_agenda_line span{padding-left:5px;line-height:21px;}
-.dhx_year_week{
+.openerp .dhx_year_week{
position:relative;
font-weight:bold;
font-size:1em;
@@ -389,9 +427,9 @@ dhx_multi_day_icon{background-image:url(/web_calendar/static/lib/dhtmlxScheduler
border-bottom:1px solid #ccc;
}
-.dhx_scale_bar_last{border-right:1px dotted #586A7E;}
+.openerp .dhx_scale_bar_last{border-right:1px dotted #586A7E;}
-.dhx_year_month{
+.openerp .dhx_year_month{
height:18px;
padding-top:3px;
text-align:center;
@@ -402,285 +440,362 @@ dhx_multi_day_icon{background-image:url(/web_calendar/static/lib/dhtmlxScheduler
text-shadow: 0 1px 0 white;
border:0px;
}
-/*.dhx_mini_calendar .dhx_year_month{
+/*.openerp .dhx_mini_calendar .openerp .dhx_year_month{
padding-top:0px;
} */
-.dhx_mini_calendar .dhx_year_body {
+.openerp .dhx_mini_calendar
+ .dhx_year_body {
border:0px;
}
-.dhx_year_body .dhx_before .dhx_month_head,.dhx_year_body .dhx_after .dhx_month_head,.dhx_year_body .dhx_before .dhx_month_head a,.dhx_year_body .dhx_after .dhx_month_head a {color:#bbb;}
+.openerp .dhx_year_body .dhx_before .dhx_month_head,.openerp .dhx_year_body .dhx_after .dhx_month_head, .openerp .dhx_year_body .dhx_before .dhx_month_head a,.openerp .dhx_year_body .dhx_after .dhx_month_head a {color:#bbb;}
-.dhx_year_body .dhx_month_body{height:0;overflow:hidden;}
+.openerp .dhx_year_body .dhx_month_body{height:0;overflow:hidden;}
-.dhx_year_body .dhx_before .dhx_month_head, .dhx_year_body .dhx_after .dhx_month_head{cursor:default;}
+.openerp .dhx_year_body .dhx_before .dhx_month_head, .dhx_year_body .dhx_after .dhx_month_head{cursor:default;}
-.dhx_tooltip{border:1px solid #BBB;background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png);position:absolute;z-index:9998;width:300px;height:auto;
-font-size:8pt;overflow:hidden;}.dhx_tooltip_line{line-height:20px;height:20px;overflow:hidden;}.dhx_tooltip_line .dhx_event_icon{width:20px;height:20px;padding-right:10px;float:left;border-width:0;position:relative;background:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;}.dhx_tooltip_date{float:left;width:auto;padding-left:5px;text-align:center;}
+.openerp .dhx_tooltip{border:1px solid #BBB;background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png);position:absolute;z-index:9998;width:300px;height:auto;
+font-size:8pt;overflow:hidden;}
+.openerp .dhx_tooltip_line{line-height:20px;height:20px;overflow:hidden;}
+.openerp .dhx_tooltip_line .dhx_event_icon{width:20px;height:20px;padding-right:10px;float:left;border-width:0;position:relative;background:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;}
+.openerp .dhx_tooltip_date{float:left;width:auto;padding-left:5px;text-align:center;}
-.dhx_text_disabled{color:#887A2E;font-size:8pt;}.dhx_mini_calendar{-moz-box-shadow:5px 5px 5px #888;-khtml-box-shadow:5px 5px 5px #888;}
+.openerp .dhx_text_disabled{color:#887A2E;font-size:8pt;}
-.dhx_mini_calendar .dhx_month_head{cursor:pointer;}
+.openerp .dhx_cal_navline div .dhx_minical_icon{width:18px;height:18px;left:190px;top:1px;cursor:pointer;background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/calendar.gif);}
-.dhx_mini_calendar .dhx_calendar_click{background-color:#C2D5FC;}
+.openerp .dhx_matrix_scell{height:100%;}
+.openerp .dhx_matrix_cell,
+.openerp .dhx_matrix_scell{overflow:hidden;text-align:center;vertical-align:middle;border-bottom:1px dotted #8894A3;border-right:1px dotted #8894A3;}
+.openerp .dhx_matrix_cell{background-color:white;}
+.openerp .dhx_matrix_line{overflow:hidden;}
+.openerp .dhx_matrix_cell div, .openerp .dhx_matrix_scell div{overflow:hidden;text-align:center;height:auto;}
+.openerp .dhx_cal_lsection .dhx_readonly{font-size:9pt;font-size:8pt;padding:2px;color:#887A2E;}
-.dhx_cal_navline div.dhx_minical_icon{width:18px;height:18px;left:190px;top:1px;cursor:pointer;background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/calendar.gif);}
+.openerp .dhx_matrix_scell.folder,.openerp .dhx_data_table.folder .dhx_matrix_cell{background-color:#969394;cursor:pointer;}
+.openerp .dhx_matrix_scell .dhx_scell_level0{padding-left:5px;}
+.openerp .dhx_matrix_scell .dhx_scell_level1{padding-left:20px;}
+.openerp .dhx_matrix_scell .dhx_scell_level2{padding-left:35px;}
+.openerp .dhx_matrix_scell .dhx_scell_level3{padding-left:50px;}
+.openerp .dhx_matrix_scell .dhx_scell_level4{padding-left:65px;}
+.openerp .dhx_matrix_scell.folder{font-weight:bold;text-align:left;}
+.openerp .dhx_matrix_scell.folder .dhx_scell_expand{float:left;width:10px;padding-right:3px;}
+.openerp .dhx_matrix_scell.folder .dhx_scell_name{float:left;width:auto;}
+.openerp .dhx_matrix_scell.item .dhx_scell_name{padding-left:15px;text-align:left;}
-.dhx_matrix_scell{height:100%;}.dhx_matrix_cell,.dhx_matrix_scell{overflow:hidden;text-align:center;vertical-align:middle;border-bottom:1px dotted #8894A3;border-right:1px dotted #8894A3;}.dhx_matrix_cell{background-color:white;}.dhx_matrix_line{overflow:hidden;}.dhx_matrix_cell div,.dhx_matrix_scell div{overflow:hidden;text-align:center;height:auto;}.dhx_cal_lsection .dhx_readonly{font-size:9pt;font-size:8pt;padding:2px;color:#887A2E;}
+.openerp .dhx_data_table.folder .dhx_matrix_cell{border-right:0;}
+.openerp .dhx_section_timeline{overflow:hidden;padding:4px 0 2px 10px;}
+.openerp .dhx_section_timeline select{width:552px;}
+.openerp .dhx_map_area{width:100%;height:100%;overflow-y:auto;overflow-x:hidden;background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png);}
+.openerp .dhx_map_line .dhx_event_icon{width:20px;border-width:0;background:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;}
+.openerp .dhx_map_line{height:21px;clear:both;overflow:hidden;}
+.openerp .dhx_map{position:absolute;}
+.openerp .dhx_map_line div{float:left;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}
+.openerp .dhx_map_line .headline_description{float:left;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}
+.openerp .dhx_map_line .dhx_map_description{float:left;border-right:0 dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}
-.dhx_matrix_scell.folder,.dhx_data_table.folder .dhx_matrix_cell{background-color:#969394;cursor:pointer;}.dhx_matrix_scell .dhx_scell_level0{padding-left:5px;}.dhx_matrix_scell .dhx_scell_level1{padding-left:20px;}.dhx_matrix_scell .dhx_scell_level2{padding-left:35px;}.dhx_matrix_scell .dhx_scell_level3{padding-left:50px;}.dhx_matrix_scell .dhx_scell_level4{padding-left:65px;}.dhx_matrix_scell.folder{font-weight:bold;text-align:left;}.dhx_matrix_scell.folder .dhx_scell_expand{float:left;width:10px;padding-right:3px;}.dhx_matrix_scell.folder .dhx_scell_name{float:left;width:auto;}.dhx_matrix_scell.item .dhx_scell_name{padding-left:15px;text-align:left;}
+.openerp .dhx_map_line .line_description{float:left;border-right:1px dotted #8894A3;text-align:left;padding-left:5px;line-height:21px;overflow:hidden;}
+.openerp .dhx_map_line.highlight{background-color:#C4C5CC;}
+.openerp .dhx_map_area .dhx_map_line div{border-right:0 dotted #8894A3;}.dhtmlXTooltip.tooltip{-moz-box-shadow:3px 3px 3px #888;-webkit-box-shadow:3px 3px 3px #888;-o-box-shadow:3px 3px 3px #888;box-shadow:3px 3px 3px #888;filter:progid:DXImageTransform.Microsoft.Shadow(color='#888888',Direction=135,Strength=5);background-color:white;border-left:1px dotted #887A2E;border-top:1px dotted #887A2E;color:#887A2E;cursor:default;padding:10px;position:absolute;z-index:500;}
+.openerp .dhx_cal_checkbox label{padding-left:5px;}
+.openerp .dhx_cal_light .radio{padding:2px 0 2px 10px;}
+.openerp .dhx_cal_light .radio input,.openerp .dhx_cal_light .radio label{line-height:15px;}
+.openerp .dhx_cal_light .radio input{vertical-align:middle;margin:0;padding:0;}
+.openerp .dhx_cal_light .radio label{vertical-align:middle;padding-right:10px;}
+.openerp .dhx_cal_light .combo{padding:4px;}
+.openerp .dhx_wa_column{float:left;}
+.openerp .dhx_wa_column_last .dhx_wa_day_cont{border-left:1px dotted #8894A3;}
-.dhx_data_table.folder .dhx_matrix_cell{border-right:0;}.dhx_section_timeline{overflow:hidden;padding:4px 0 2px 10px;}.dhx_section_timeline select{width:552px;}.dhx_map_area{width:100%;height:100%;overflow-y:auto;overflow-x:hidden;background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png);}.dhx_map_line .dhx_event_icon{width:20px;border-width:0;background:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;}.dhx_map_line{height:21px;clear:both;overflow:hidden;}.dhx_map{position:absolute;}.dhx_map_line div{float:left;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}.dhx_map_line .headline_description{float:left;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}.dhx_map_line .dhx_map_description{float:left;border-right:0 dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}
+.openerp .dhx_wa_scale_bar{padding-left:10px;font-size:11px;border-top:1px dotted #8894A3;border-bottom:1px dotted #8894A3;}
+.openerp .dhx_wa_day_data{background-color:#FCFEFC;overflow-y:auto;}
+.openerp .dhx_wa_ev_body{border-bottom:1px dotted #789;font-size:12px;padding:5px 0 5px 7px;}
-.dhx_map_line .line_description{float:left;border-right:1px dotted #8894A3;text-align:left;padding-left:5px;line-height:21px;overflow:hidden;}.dhx_map_line.highlight{background-color:#C4C5CC;}.dhx_map_area .dhx_map_line div{border-right:0 dotted #8894A3;}.dhtmlXTooltip.tooltip{-moz-box-shadow:3px 3px 3px #888;-webkit-box-shadow:3px 3px 3px #888;-o-box-shadow:3px 3px 3px #888;box-shadow:3px 3px 3px #888;filter:progid:DXImageTransform.Microsoft.Shadow(color='#888888',Direction=135,Strength=5);background-color:white;border-left:1px dotted #887A2E;border-top:1px dotted #887A2E;color:#887A2E;cursor:default;padding:10px;position:absolute;z-index:500;}.dhx_cal_checkbox label{padding-left:5px;}.dhx_cal_light .radio{padding:2px 0 2px 10px;}.dhx_cal_light .radio input,.dhx_cal_light .radio label{line-height:15px;}.dhx_cal_light .radio input{vertical-align:middle;margin:0;padding:0;}.dhx_cal_light .radio label{vertical-align:middle;padding-right:10px;}.dhx_cal_light .combo{padding:4px;}.dhx_wa_column{float:left;}.dhx_wa_column_last .dhx_wa_day_cont{border-left:1px dotted #8894A3;}
+.openerp .dhx_wa_dnd{position:absolute;padding-right:7px;color:#887AE2!important;background-color:#FFE763!important;border:1px solid #B7A543;}
+.openerp .dhx_cal_event_selected{background-color:#9cc1db;color:white;}
+.openerp .dhx_second_scale_bar{border-bottom:1px dotted #586A7E;padding-top:2px;}
+.openerp div .dhx_form_repeat input.radio{margin:-4px 0 0 -4px!ie;}
+.openerp div .dhx_form_repeat input.checkbox{margin:0 0 0 -4px!ie;}
-.dhx_wa_scale_bar{padding-left:10px;font-size:11px;border-top:1px dotted #8894A3;border-bottom:1px dotted #8894A3;}.dhx_wa_day_data{background-color:#FCFEFC;overflow-y:auto;}.dhx_wa_ev_body{border-bottom:1px dotted #789;font-size:12px;padding:5px 0 5px 7px;}
+.openerp .dhx_form_repeat,.openerp .dhx_form_repeat input{padding:0;margin:0;padding-left:5px;
+font-size:11px;line-height:24px;}
+.openerp .dhx_form_repeat{overflow:hidden;height:0;background-color:#FFF4B5;}
+.openerp .dhx_cal_light_wide .dhx_form_repeat{background-color:transparent;}
+.openerp .dhx_repeat_center,.openerp .dhx_repeat_left{height:115px;padding:10px 0 10px 10px;float:left;}
+.openerp .dhx_repeat_left{width:95px;}
+.openerp .dhx_repeat_center{width:335px;margin-top:12px;}
+.openerp .dhx_repeat_divider{float:left;height:115px;border-left:1px dotted #DCC43E;width:1px;}
+.openerp .dhx_repeat_right{float:right;height:115px;width:160px;padding:10px 3px 10px 10px;margin-top:7px;}
+.openerp input .dhx_repeat_text{height:16px;width:27px;margin:0 4px 0 4px;line-height:18px;padding:0 0 0 2px;}
+.openerp .dhx_form_repeat select{height:20px;width:87px;padding:0 0 0 2px;margin:0 4px 0 4px;}
+.openerp input .dhx_repeat_date{height:18px;width:80px;padding:0 0 0 2px;margin:0 4px 0 4px;background-repeat:no-repeat;background-position:64px 0;border:1px #7f9db9 solid;line-height:18px;}input.openerp .dhx_repeat_radio{margin-right:4px;}
+.openerp input .dhx_repeat_checkbox{margin:4px 4px 0 0;}
+.openerp .dhx_repeat_days td{padding-right:5px;}
+.openerp .dhx_repeat_days label{font-size:10px;}
+.openerp .dhx_custom_button{width:90px;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;}
+.openerp .dhx_custom_button_recurring{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/but_repeat.gif);background-position:-5px 20px;width:20px;margin-right:10px;}
+.openerp .dhx_cal_light_rec{width:640px;}
+.openerp .dhx_cal_light_rec .dhx_cal_larea{width:632px;}
+.openerp .dhx_cal_light_rec .dhx_cal_light_wide{width:816px;}
+.openerp .dhx_cal_light_rec .dhx_cal_light_wide .dhx_cal_larea{width:808px;}
-.dhx_wa_dnd{position:absolute;padding-right:7px;color:#887AE2!important;background-color:#FFE763!important;border:1px solid #B7A543;}.dhx_cal_event_selected{background-color:#9cc1db;color:white;}.dhx_second_scale_bar{border-bottom:1px dotted #586A7E;padding-top:2px;}div.dhx_form_repeat input.radio{margin:-4px 0 0 -4px!ie;}div.dhx_form_repeat input.checkbox{margin:0 0 0 -4px!ie;}
+.openerp .dhx_multi_day{border:none;border-top:1px solid #A4BED4;}
-.dhx_form_repeat,.dhx_form_repeat input{padding:0;margin:0;padding-left:5px;
-font-size:11px;line-height:24px;}.dhx_form_repeat{overflow:hidden;height:0;background-color:#FFF4B5;}.dhx_cal_light_wide .dhx_form_repeat{background-color:transparent;}.dhx_repeat_center,.dhx_repeat_left{height:115px;padding:10px 0 10px 10px;float:left;}.dhx_repeat_left{width:95px;}.dhx_repeat_center{width:335px;margin-top:12px;}.dhx_repeat_divider{float:left;height:115px;border-left:1px dotted #DCC43E;width:1px;}.dhx_repeat_right{float:right;height:115px;width:160px;padding:10px 3px 10px 10px;margin-top:7px;}input.dhx_repeat_text{height:16px;width:27px;margin:0 4px 0 4px;line-height:18px;padding:0 0 0 2px;}.dhx_form_repeat select{height:20px;width:87px;padding:0 0 0 2px;margin:0 4px 0 4px;}input.dhx_repeat_date{height:18px;width:80px;padding:0 0 0 2px;margin:0 4px 0 4px;background-repeat:no-repeat;background-position:64px 0;border:1px #7f9db9 solid;line-height:18px;}input.dhx_repeat_radio{margin-right:4px;}input.dhx_repeat_checkbox{margin:4px 4px 0 0;}.dhx_repeat_days td{padding-right:5px;}.dhx_repeat_days label{font-size:10px;}.dhx_custom_button{width:90px;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;}.dhx_custom_button_recurring{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/but_repeat.gif);background-position:-5px 20px;width:20px;margin-right:10px;}.dhx_cal_light_rec{width:640px;}.dhx_cal_light_rec .dhx_cal_larea{width:632px;}.dhx_cal_light_rec.dhx_cal_light_wide{width:816px;}.dhx_cal_light_rec.dhx_cal_light_wide .dhx_cal_larea{width:808px;}
-
-.dhx_multi_day{border:none;border-top:1px solid #A4BED4;}
-
-.dhx_multi_day_icon,.dhx_multi_day_icon_small{border-right:none;}
+.openerp .dhx_multi_day_icon,.openerp .dhx_multi_day_icon_small{border-right:none;}
-.dhx_cal_navline{background-color:none;height:23px!important;}
+.openerp .dhx_cal_navline{background-color:none;height:23px!important;}
-.dhx_scale_bar{/*background-image:url(imgs/top-separator.gif);background-position:0 0;background-repeat:no-repeat; */background-color:transparent;padding-top:3px;border-left:0;}
+.openerp .dhx_scale_bar{/*background-image:url(imgs/top-separator.gif);background-position:0 0;background-repeat:no-repeat; */background-color:transparent;padding-top:3px;border-left:0;}
-.dhx_scale_holder{border-right:1px solid #A4BED4;}
+.openerp .dhx_scale_holder{border-right:1px solid #A4BED4;}
-.dhx_scale_holder_now{border-right:1px solid #A4BED4;}.dhx_scale_hour{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/left-time-bg.png);border-bottom:1px solid #A4BED4;color:#2F3A48;}
+.openerp .dhx_scale_holder_now{border-right:1px solid #A4BED4;}
+.openerp .dhx_scale_hour{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/left-time-bg.png);border-bottom:1px solid #A4BED4;color:#2F3A48;}
-.dhx_multi_day{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/multi-days-bg.png);background-repeat:repeat;border-bottom:1px solid #A4BED4;border-left:0;}
+.openerp .dhx_multi_day{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/multi-days-bg.png);background-repeat:repeat;border-bottom:1px solid #A4BED4;border-left:0;}
-.dhx_multi_day_icon,.dhx_multi_day_icon_small{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/multi-days-bg.png);border-bottom:1px solid #A4BED4;border-left:1px solid #fff;background-position:0 0;background-repeat:repeat;}
+.openerp .dhx_multi_day_icon,.openerp .dhx_multi_day_icon_small{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/multi-days-bg.png);border-bottom:1px solid #A4BED4;border-left:1px solid #fff;background-position:0 0;background-repeat:repeat;}
-.dhx_month_head{background-color:#F4F4F4;}
+.openerp .dhx_month_head{background-color:#F4F4F4;}
-.dhx_after .dhx_month_head,.dhx_before .dhx_month_head{background-color:#F4F4F4;}
+.openerp .dhx_after .dhx_month_head,.openerp .dhx_before .dhx_month_head{background-color:#F4F4F4;}
-.dhx_after .dhx_month_body,.dhx_before .dhx_month_body{background-color:#EFEDE2;}
+.openerp .dhx_after .dhx_month_body,.openerp .dhx_before .dhx_month_body{background-color:#EFEDE2;}
-.dhx_cal_event div{border:1px solid #FFBD51;background-color:#FFE4AB;color:#000;}.dhx_cal_event_line{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/event-bg.png);border:1px solid #FFBD51;color:#000;}.dhx_in_move{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/move.png);}
+.openerp .dhx_cal_event div{border:1px solid #FFBD51;background-color:#FFE4AB;color:#000;}
+.openerp .dhx_cal_event_line{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/event-bg.png);border:1px solid #FFBD51;color:#000;}
+.openerp .dhx_in_move{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/move.png);}
-.dhx_cal_event .dhx_title{background-color:#FFE4AB;}
+.openerp .dhx_cal_event .dhx_title{background-color:#FFE4AB;}
-.dhx_cal_light{-moz-box-shadow:5px 5px 5px #888;-khtml-box-shadow:5px 5px 5px #888;background-color:#EBEBEB;border:2px solid #A4BED4;color:#000;}.dhx_cal_larea{border:1px solid #A4BED4;border-width:0 1px 1px;background-color:#FFF;}
+.openerp .dhx_cal_light{-moz-box-shadow:5px 5px 5px #888;-khtml-box-shadow:5px 5px 5px #888;background-color:#EBEBEB;border:2px solid #A4BED4;color:#000;}
+.openerp .dhx_cal_larea{border:1px solid #A4BED4;border-width:0 1px 1px;background-color:#FFF;}
-.dhx_cal_lsection{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/lightbox.png);font-size:14px;padding:5px 0 5px 10px;color:#000;}
+.openerp .dhx_cal_lsection{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/lightbox.png);font-size:14px;padding:5px 0 5px 10px;color:#000;}
-.dhx_cal_light_wide .dhx_cal_lsection{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/multi-days-bg.png);}.dhx_cal_ltext textarea{background-color:#fff;color:#000;}
+.openerp .dhx_cal_light_wide .dhx_cal_lsection{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/multi-days-bg.png);}.openerp .dhx_cal_ltext textarea{background-color:#fff;color:#000;}
-.dhx_cal_light select,.dhx_cal_light input{color:#000;}.dhx_save_btn{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controlls5.png);}
+.openerp .dhx_cal_light select,.openerp .dhx_cal_light input{color:#000;}
+.openerp .dhx_save_btn{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controlls5.png);}
-.dhx_cancel_btn{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controlls5.png);}.dhx_delete_btn{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controlls5.png);}
+.openerp .dhx_cancel_btn{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controlls5.png);}
+.openerp .dhx_delete_btn{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controlls5.png);}
-.div.dhx_menu_head{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controlls5.png);border:1px solid #FFE4AB;}
+.openerp .div .dhx_menu_head{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controlls5.png);border:1px solid #FFE4AB;}
-.div.dhx_menu_icon{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controlls5.png);border:medium none;}
+.openerp .div .dhx_menu_icon{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controlls5.png);border:medium none;}
-.dhx_section_time{height:20px!important;padding:7px 0!important;text-align:center;background:white;}
+.openerp .dhx_section_time{height:20px!important;padding:7px 0!important;text-align:center;background:white;}
-.div.dhx_cal_editor{background-color:#FFE4AB;}
+.openerp .div .dhx_cal_editor{background-color:#FFE4AB;}
-.dhx_month_head{border-right:1px solid #E9E9E9;}
+.openerp .dhx_month_head{border-right:1px solid #E9E9E9;}
-.dhx_month_body{
+.openerp .dhx_month_body{
border-right:1px solid #E9E9E9;
border-bottom:1px solid #E9E9E9;
}
- .dhx_scale_bar_last{border-right:none;}
+.openerp .dhx_scale_bar_last{border-right:none;}
-.dhx_month_head.dhx_year_event{background-color:#ddd;}
+.openerp .dhx_month_head .dhx_year_event{background-color:#ddd;}
-.dhx_year_body .dhx_before .dhx_month_head,.dhx_year_body .dhx_after .dhx_month_head,.dhx_year_body .dhx_before .dhx_month_head a,.dhx_year_body .dhx_after .dhx_month_head a{color:#EFEDE2 ;}
+.openerp .dhx_year_body .dhx_before .dhx_month_head,.openerp .dhx_year_body .dhx_after .dhx_month_head, .dhx_year_body .dhx_before .dhx_month_head a,.openerp .dhx_year_body .dhx_after .dhx_month_head a{color:#EFEDE2 ;}
-.dhx_cal_lsection .dhx_readonly{color:#000;}.dhx_tooltip{-moz-box-shadow:2px 2px 2px #888;-khtml-box-shadow:2px 2px 2px #888;}.dhx_custom_button{margin-top:-2px;}.dhx_cal_lsection .dhx_fullday{color:#000;}.dhx_cal_lsection.dhx_cal_checkbox{height:16px;line-height:18px;}.dhx_cal_light_wide .dhx_cal_lsection.dhx_cal_checkbox{height:20px;}.dhx_cal_checkbox label{vertical-align:top;}.dhx_cal_light_wide .dhx_cal_lsection{color:black;}.dhx_cal_light_wide .dhx_wrap_section{border-top:1px solid #A4BED4;background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/multi-days-bg.png);}.dhx_cal_light_wide .dhx_cal_ltext{border-left:1px solid #A4BED4;}.dhx_cal_light_wide .dhx_cal_ltext{background-color:white;}.dhx_custom_button{background:white;color:black;}.dhx_form_repeat{background:white;}.dhx_repeat_divider{border-left:1px solid #A4BED4;}
+.openerp .dhx_cal_lsection .dhx_readonly{color:#000;}
+.openerp .dhx_tooltip{-moz-box-shadow:2px 2px 2px #888;-khtml-box-shadow:2px 2px 2px #888;}
+.openerp .dhx_custom_button{margin-top:-2px;}
+.openerp .dhx_cal_lsection .dhx_fullday{color:#000;}
+.openerp .dhx_cal_lsection .dhx_cal_checkbox{height:16px;line-height:18px;}
+.openerp .dhx_cal_light_wide
+.openerp .dhx_cal_lsection .dhx_cal_checkbox{height:20px;}
+.openerp .dhx_cal_checkbox label{vertical-align:top;}
+.openerp .dhx_cal_light_wide .dhx_cal_lsection{color:black;}
+.openerp .dhx_cal_light_wide .dhx_wrap_section{border-top:1px solid #A4BED4;background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/multi-days-bg.png);}
+.openerp .dhx_cal_light_wide .dhx_cal_ltext{border-left:1px solid #A4BED4;}
+.openerp .dhx_cal_light_wide .dhx_cal_ltext{background-color:white;}
+.openerp .dhx_custom_button{background:white;color:black;}
+.openerp .dhx_form_repeat{background:white;}
+.openerp .dhx_repeat_divider{border-left:1px solid #A4BED4;}
+.openerp .dhx_cal_header .dhx_second_cal_header{background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/second-top-days-bg.png");padding-right:20px;}
+.openerp .dhx_scale_bar{padding-top:4px;}
-.dhx_cal_header.dhx_second_cal_header{background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/second-top-days-bg.png");padding-right:20px;}
-
-.dhx_scale_bar{padding-top:4px;}
-
-.dhx_second_scale_bar{border-bottom:0;padding-top:4px;}.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday,.dhx_cal_lsection .dhx_fullday{color:#000;font-size:14px;}
-
-.dhx_cal_light_wide .dhx_cal_lsection{font-size:14px;padding-right:10px;}
+.openerp .dhx_second_scale_bar{border-bottom:0;padding-top:4px;}
+.openerp .dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday,.openerp .dhx_cal_lsection .dhx_fullday{color:#000;font-size:14px;}
+.openerp .dhx_cal_light_wide .dhx_cal_lsection{font-size:14px;padding-right:10px;}
-.dhx_scale_bar {
+.openerp .dhx_scale_bar {
/* background-color:#bac6cf;
border-left:1px dotted #7e7e7e; */
}
-.dhx_scale_hour {
+.openerp .dhx_scale_hour {
background-color:#bac6cf;
border-bottom:1px dotted #7e7e7e;
color: #020202;
}
-.dhx_cal_drag {
+.openerp .dhx_cal_drag {
background-color:#ff8d8d;
border:1px solid #a73636;
}
-.dhx_cal_event_line {
+.openerp .dhx_cal_event_line {
background-color:#ff8d8d;
color: #000102;
border:1px solid #a73636;
}
-.dhx_in_move{
+.openerp .dhx_in_move{
background-color:#f7ffb1;
}
-.dhx_scale_holder {
+.openerp .dhx_scale_holder {
background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png");
border-right:1px dotted #7e7e7e;
}
-.dhx_scale_holder_now {
+.openerp .dhx_scale_holder_now {
background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg_now.png");
border-right:1px dotted #7e7e7e;
}
-.dhx_cal_event div.dhx_menu_icon {
+.openerp .dhx_cal_event div .dhx_menu_icon {
border: medium none;
}
-.dhx_after .dhx_month_body, .dhx_before .dhx_month_body {
+.openerp .dhx_after .dhx_month_body, .openerp .dhx_before .dhx_month_body {
background-color:#e9e9e9;
}
-.dhx_cal_light {
+.openerp .dhx_cal_light {
background-color:#ff8d8d;
color: #000102;
border:1px solid #b7a543;
}
-.dhx_cal_light select {
+.openerp .dhx_cal_light select {
color: #000102;
}
-.dhx_cal_lsection {
+.openerp .dhx_cal_lsection {
background-color:#dbcf8c;
color: #fff4b5;
}
-.dhx_cal_larea {
+.openerp .dhx_cal_larea {
background-color:#fff4b5;
border:1px solid #b7a543;
}
-.dhx_agenda_area{
+.openerp .dhx_agenda_area{
background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png");
}
-.dhx_agenda_line div {
+.openerp .dhx_agenda_line div {
border-right:1px dotted #7e7e7e;
}
-.dhx_agenda_area .dhx_agenda_line div {
+.openerp .dhx_agenda_area .dhx_agenda_line div {
border-right:0px dotted #7e7e7e;
}
-.dhx_scale_bar_last {
+.openerp .dhx_scale_bar_last {
border-right: none;
}
-.dhx_year_body .dhx_before .dhx_month_head, .dhx_year_body .dhx_after .dhx_month_head, .dhx_year_body .dhx_before .dhx_month_head a, .dhx_year_body .dhx_after .dhx_month_head a {
+.openerp .dhx_year_body .dhx_before .dhx_month_head, .openerp .dhx_year_body .dhx_after .dhx_month_head, .openerp .dhx_year_body .dhx_before .dhx_month_head a, .openerp .dhx_year_body .dhx_after .dhx_month_head a {
color:#bbb;
}
-.dhx_year_body .dhx_before .dhx_month_head:hover, .dhx_year_body .dhx_after .dhx_month_head:hover, .dhx_year_body .dhx_before .dhx_month_head a:hover, .dhx_year_body .dhx_after .dhx_month_head a:hover {
+.openerp .dhx_year_body .dhx_before .dhx_month_head:hover, .openerp .dhx_year_body .dhx_after .dhx_month_head:hover, .openerp .dhx_year_body .dhx_before .dhx_month_head a:hover, .openerp .dhx_year_body .dhx_after .dhx_month_head a:hover {
color:white;
text-shadow:none;
}
-.dhx_tooltip {
+.openerp .dhx_tooltip {
background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png");
}
-.dhx_cal_event div.dhx_menu_head {
+.openerp .dhx_cal_event div .dhx_menu_head {
border:none;
}
-div.dhx_menu_head{
+div.openerp .dhx_menu_head{
border:1px solid #ff8d8d;
}
-.dhx_after .dhx_month_head, .dhx_before .dhx_month_head {
+.openerp .dhx_after .dhx_month_head, .openerp .dhx_before .dhx_month_head {
color:#8c9299;
}
-.dhx_cal_data .dhx_agenda_line {
+.openerp .dhx_cal_data .dhx_agenda_line {
color:#000102;
}
-.dhx_cal_header .dhx_agenda_line {
+.openerp .dhx_cal_header .dhx_agenda_line {
color: #020202;
}
-.dhx_tooltip_line {
+.openerp .dhx_tooltip_line {
color:#000102;
}
-.dhx_cal_light select {
+.openerp .dhx_cal_light select {
background-color: #ffffff;
}
-.dhx_custom_button {
+.openerp .dhx_custom_button {
color: #000102;
background-color: #bac6cf;
}
-div.dhx_form_repeat {
+div.openerp .dhx_form_repeat {
background-color: #ffffff;
}
-div.dhx_repeat_divider {
+div.openerp .dhx_repeat_divider {
border-left:1px dotted #dbcf8c;
}
-.dhx_v_border {
+.openerp .dhx_v_border {
border-right:1px dotted #8c9299;
}
-.dhx_scale_bar_last {
+.openerp .dhx_scale_bar_last {
border-right: none;
}
-.dhx_tooltip {
+.openerp .dhx_tooltip {
background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png");
}
-.dhx_text_disabled {
+.openerp .dhx_text_disabled {
color:#000102;
}
-.dhx_mini_calendar .dhx_calendar_click {
+.openerp .dhx_mini_calendar .dhx_calendar_click {
background-color:#bac6cf;
}
-.dhx_matrix_cell,.dhx_matrix_scell {
+.openerp .dhx_matrix_cell, .openerp .dhx_matrix_scell {
border-bottom:1px dotted #757575;
border-right:1px dotted #757575;
}
-.dhx_matrix_cell {
+.openerp .dhx_matrix_cell {
background-color: #ffffff;
}
@@ -690,132 +805,132 @@ div.dhx_repeat_divider {
/*=================================================================*/
-.dhx_cal_navline{
+.openerp .dhx_cal_navline{
background-color:none;
}
-.dhx_scale_holder {
+.openerp .dhx_scale_holder {
border-right:1px solid #757575;
}
-.dhx_scale_holder_now{
+.openerp .dhx_scale_holder_now{
border-right:1px solid #757575;
}
-.dhx_scale_hour{
+.openerp .dhx_scale_hour{
background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/left-time-bg.png");
border-bottom:1px solid #757575;
color: #020202;
}
-.dhx_multi_day{
+.openerp .dhx_multi_day{
background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/multi-days-bg.png");
border-bottom:1px solid #757575;
}
-.dhx_multi_day_icon,.dhx_multi_day_icon_small{
+.openerp .dhx_multi_day_icon, .openerp .dhx_multi_day_icon_small{
background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/multi-days-bg.png");
border-bottom:1px solid #757575;
border-left:1px solid #FFFFFF;
}
-.dhx_cal_event_line{
+.openerp .dhx_cal_event_line{
background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/event-bg.png");
border:1px solid #a73636;
color:#000102;
}
-.dhx_in_move{
+.openerp .dhx_in_move{
background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/move.png");
}
-.dhx_cal_light{
+.openerp .dhx_cal_light{
background-color:#bac6cf;
border:2px solid #757575;
color:#000102;
}
-.dhx_cal_larea{
+.openerp .dhx_cal_larea{
border:1px solid #757575;
background-color:#FFFFFF;
}
-.dhx_cal_lsection{
+.openerp .dhx_cal_lsection{
background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/lightbox.png");
color:#000102;
}
-.dhx_cal_ltext{
+.openerp .dhx_cal_ltext{
background-color:#ffffff;
}
-.dhx_cal_ltext textarea{
+.openerp .dhx_cal_ltext textarea{
color:#000102;
background-color:#ffffff;
}
-.dhx_form_repeat input, .dhx_form_repeat select{
+.openerp .dhx_form_repeat input, .openerp .dhx_form_repeat select{
background-color:white;
color:black;
}
-.dhx_cal_light select{
+.openerp .dhx_cal_light select{
color:#000102;
background-color:#ffffff;
}
-.dhx_section_time{
+.openerp .dhx_section_time{
background-image:none;
background-color:#ffffff;
}
-div.dhx_cal_editor{
+div.openerp .dhx_cal_editor{
background-color:#ff8d8d;
}
-div.dhx_cal_editor textarea {
+div.openerp .dhx_cal_editor textarea {
color: #000102;
}
-/* .dhx_year_week{
+/* .openerp .dhx_year_week{
background-image:url("./imgs/top-days-bg.png");
}
-.dhx_month_head.dhx_year_event{
+.openerp .dhx_month_head.openerp .dhx_year_event{
background-color:#ff8d8d;
} */
-.dhx_cal_lsection .dhx_readonly{
+.openerp .dhx_cal_lsection .dhx_readonly{
color:#000102;
}
-.dhx_after .dhx_month_head, .dhx_before .dhx_month_head {
+.openerp .dhx_after .dhx_month_head, .openerp .dhx_before .dhx_month_head {
background-color:#F4F4F4;
}
-.dhx_cal_event div{
+.openerp .dhx_cal_event div{
font-size: 11px;
}
-.dhx_cal_event_line {
+.openerp .dhx_cal_event_line {
font-size: 11px;
}
-.dhx_cal_light{
+.openerp .dhx_cal_light{
font-size: 11px;
}
-.dhx_cal_light select{
+.openerp .dhx_cal_light select{
font-size: 11px;
}
-.dhx_custom_button{
+.openerp .dhx_custom_button{
font-size: 11px;
}
-.dhx_cal_lsection{
+.openerp .dhx_cal_lsection{
font-size: 14px;
}
-.dhx_cal_ltext textarea {
+.openerp .dhx_cal_ltext textarea {
font-size: 11px;
}
@@ -824,132 +939,121 @@ div.dhx_cal_editor textarea {
/* Tree view */
-.dhx_matrix_scell.folder, .dhx_data_table.folder .dhx_matrix_cell{
+.openerp .dhx_matrix_scell.folder, .dhx_data_table.folder .dhx_matrix_cell{
background-color: #7e7e7e;
}
.dhtmlXTooltip.tooltip{
border-left:1px dotted #7e7e7e;
border-top:1px dotted #7e7e7e;
}
-.dhx_map_area{
+.openerp .dhx_map_area{
background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg_now.png");
}
-.dhx_map_line div{
+.openerp .dhx_map_line div{
border-right:1px dotted #7e7e7e;
}
-.dhx_map_line .headline_description{
+.openerp .dhx_map_line .headline_description{
border-right:1px dotted #7e7e7e;
}
-.dhx_map_line .dhx_map_description{
+.openerp .dhx_map_line .dhx_map_description{
border-right: 0px dotted #7e7e7e;
}
-.dhx_map_line .line_description{
+.openerp .dhx_map_line .line_description{
border-right:1px dotted #7e7e7e;
}
-.dhx_map_line.highlight{
+.openerp .dhx_map_line.highlight{
background-color: #bac6cf;
}
-.dhx_map_area .dhx_map_line div{
+.openerp .dhx_map_area .dhx_map_line div{
border-right:0px dotted #7e7e7e;
}
-
-
-
/* Map view */
-.dhx_map_area{
+.openerp .dhx_map_area{
background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png");
}
/* Map view end */
/* Agenda week start */
-.dhx_wa_column_last .dhx_wa_day_cont{
+.openerp .dhx_wa_column_last .dhx_wa_day_cont{
border-left: 1px dotted #757575;
}
-.dhx_wa_scale_bar {
+.openerp .dhx_wa_scale_bar {
border-top: 1px dotted #757575;
border-bottom: 1px dotted #757575;
color: #020202;
}
-.dhx_wa_day_data {
+.openerp .dhx_wa_day_data {
background-color: #ffffff;
}
-.dhx_wa_ev_body {
+.openerp .dhx_wa_ev_body {
border-bottom: 1px dotted #757575;
color: #000102;
}
-.dhx_wa_dnd {
+.openerp .dhx_wa_dnd {
color: #525253 !important;
background-color: #f7ffb1 !important;
border: 1px solid #757575;
}
-.dhx_cal_event_selected{
+.openerp .dhx_cal_event_selected{
background-color: #757575;
color: ffffff;
}
/* Agenda week end */
-
-
-
-
-.dhx_scale_bar_header {
+.openerp .dhx_scale_bar_header {
border-bottom: 1px dotted #8894A3;
}
/*All*/
/* increase width of lightbox */
-.dhx_cal_light_wide .dhx_cal_lsection{
+.openerp .dhx_cal_light_wide .dhx_cal_lsection{
background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/multi-days-bg.png);
}
/*2.3*/
-.dhx_cal_lsection .dhx_fullday{
+.openerp .dhx_cal_lsection .dhx_fullday{
color:#000000;
}
-.dhx_cal_light_wide .dhx_cal_lsection{
+.openerp .dhx_cal_light_wide .dhx_cal_lsection{
color:#000000;
}
-.dhx_cal_light_wide .dhx_wrap_section{
+.openerp .dhx_cal_light_wide .dhx_wrap_section{
border-top:1px solid #757575;
background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/multi-days-bg.png);
}
-.dhx_cal_light_wide .dhx_cal_ltext{
+.openerp .dhx_cal_light_wide .dhx_cal_ltext{
border-left:1px solid #757575;
}
-.dhx_cal_light_wide .dhx_cal_ltext {
+.openerp .dhx_cal_light_wide .dhx_cal_ltext {
background-color:#ffffff;
}
-.dhx_custom_button{
+.openerp .dhx_custom_button{
background:#ffffff;
color:#000000;
}
/* timeline second scale start */
-.dhx_cal_header.dhx_second_cal_header {
+.openerp .dhx_cal_header.openerp .dhx_second_cal_header {
background-image: url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/second-top-days-bg.png");
}
/* timeline second scale end */
-.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday, .dhx_cal_lsection .dhx_fullday{
+.openerp .dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday, .openerp .dhx_cal_lsection .dhx_fullday{
color:#000000;
font-size: 14px;
}
-.dhx_cal_light_wide .dhx_cal_lsection {
+.openerp .dhx_cal_light_wide .dhx_cal_lsection {
font-size: 14px;
}
-
-.dhtmlxLayoutPolyContainer_dhx_skyblue .dhx_cal_container {
+.dhtmlxLayoutPolyContainer_dhx_skyblue .dhx_cal_container {
background-color: #d0e5ff;
}
-
-div.dhx_cal_editor{
+.openerp div .dhx_cal_editor{
border:1px solid #B7A543;
}
-
-.dhx_cal_light_wide .dhx_repeat_divider {
+.openerp .dhx_cal_light_wide .dhx_repeat_divider {
border-color: #757575;
}
-
-.dhx_cal_event .dhx_header, .dhx_cal_event .dhx_header {
+.openerp .dhx_cal_event .dhx_header, .openerp .dhx_cal_event .dhx_header {
display:none;
}
-.dhx_scale_holder .dhx_cal_event .dhx_footer, .dhx_scale_holder_now .dhx_cal_event .dhx_footer {
+.openerp .dhx_scale_holder .dhx_cal_event .dhx_footer, .openerp .dhx_scale_holder_now .dhx_cal_event .dhx_footer {
display:none;
}
From cde02bb93b5f9bbe16900319f2323df1efc03e99 Mon Sep 17 00:00:00 2001
From: Antoine Huvelle
Date: Thu, 27 Oct 2011 15:28:07 +0200
Subject: [PATCH 021/106] [IMP] text size and fonts
bzr revid: ahu@openerp.com-20111027132807-n03orhrmg8izclpm
---
addons/web_calendar/static/src/css/web_calendar.css | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/addons/web_calendar/static/src/css/web_calendar.css b/addons/web_calendar/static/src/css/web_calendar.css
index 05a5b0df4c1..80291a6cf5a 100644
--- a/addons/web_calendar/static/src/css/web_calendar.css
+++ b/addons/web_calendar/static/src/css/web_calendar.css
@@ -184,9 +184,9 @@
border-top-right-radius:4px;
vertical-align:50% !important;
}
-.openerp .dhx_cal_tab[name="month_tab"] { right:0px; }
-.openerp .dhx_cal_tab[name="week_tab"] { right:62px; }
-.openerp .dhx_cal_tab[name="day_tab"] { right:107px; }
+.openerp .dhx_cal_tab[name="month_tab"] { right:16px; }
+.openerp .dhx_cal_tab[name="week_tab"] { right:78px; }
+.openerp .dhx_cal_tab[name="day_tab"] { right:123px; }
.openerp .dhx_cal_tab:hover {
background-color:#ddd;
@@ -286,6 +286,7 @@ dhx_multi_day_icon{background-image:url(/web_calendar/static/lib/dhtmlxScheduler
.openerp .dhtmlxLayoutPolyContainer_dhx_skyblue .dhx_cal_container{background-color:none;}
.openerp .dhx_cal_event div{
+ font-family: Ubuntu, Helvetica, sans-serif;
background-color:#FFE763;
border:1px solid #a73636;
color:#887A2E;
@@ -332,7 +333,8 @@ dhx_multi_day_icon{background-image:url(/web_calendar/static/lib/dhtmlxScheduler
font-size:8pt;height:13px;padding-left:10px;color:#887A2E;cursor:pointer;overflow:hidden;}
.openerp .dhx_cal_event_clear{
- font-size:130%;
+ font-family:Ubuntu, Helvetica, sans-serif;
+ font-size:100%;
height:15px;
padding-left:2px;
color:white;
From 3520579b62f244be49e5a1aacf32a7c93af07ba2 Mon Sep 17 00:00:00 2001
From: Antoine Huvelle
Date: Thu, 27 Oct 2011 16:15:18 +0200
Subject: [PATCH 022/106] [ADD] Adding Images for the calendar
bzr revid: ahu@openerp.com-20111027141518-mca9nrtf9f44xlno
---
addons/web_calendar/static/src/img/cal_left.png | Bin 0 -> 347 bytes
addons/web_calendar/static/src/img/cal_right.png | Bin 0 -> 356 bytes
.../web_calendar/static/src/img/minical_left.png | Bin 0 -> 258 bytes
.../web_calendar/static/src/img/minical_right.png | Bin 0 -> 260 bytes
4 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 addons/web_calendar/static/src/img/cal_left.png
create mode 100644 addons/web_calendar/static/src/img/cal_right.png
create mode 100644 addons/web_calendar/static/src/img/minical_left.png
create mode 100644 addons/web_calendar/static/src/img/minical_right.png
diff --git a/addons/web_calendar/static/src/img/cal_left.png b/addons/web_calendar/static/src/img/cal_left.png
new file mode 100644
index 0000000000000000000000000000000000000000..b9b66aaeb633e0cb49662a68283986282f11f019
GIT binary patch
literal 347
zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xa#^NA%Cx&(BWL^R}Y)RhkE)4%c
zaKYZ?lYt_f1s;*b3=G`DAk4@xYmNj^kiEpy*OmPimnfeA*QfqJ3xGnmJzX3_G|tbx
zWXRQQAj0-wPsD`=vBz<5RI3=)Ul6unopZ)ErsV7s&Z?Gg3`^AuCiOK<<8l)8SuVC!
z$oc-S{r&9kZCn27B&)V-bY%#zEYau+zg~KuVYR^XJKJ?$t1aErmiVI2d5u%w;~0zQ
z)lM95f6E=?l@{%Ke8b#VnBl>4&eap1S9WLcZN121bZnc%W8vf+cg@g6oFYy(?THp#
zitl_cduT3|bKy8?;(K~qZnMtmQ@hqpt=K1%yQjommnVBZGei1e12zT=70*jA4xC@V
lYg_JOoAdIap|$S&86#E|Zw$QgKosar22WQ%mvv4FO#l+_fLQen83dW1y
zSAV;=U;p%{H+%ozYB|%h?)8pUt3Dg>^q<>l%)oa@mxW<__KM6|psp$y85}Sb4q9e0N6W>R{#J2
literal 0
HcmV?d00001
diff --git a/addons/web_calendar/static/src/img/minical_left.png b/addons/web_calendar/static/src/img/minical_left.png
new file mode 100644
index 0000000000000000000000000000000000000000..b17118fcc67987d1254d7f1fff7271783ed6d914
GIT binary patch
literal 258
zcmeAS@N?(olHy`uVBq!ia0vp^tU%1p!3-q7SC-!aQjEnx?oJHr&dIz4a-0HuLR^9L
z;e!X)ty!~Y_wM6IkN*4n_s^d{zkdGw@#Dw$@87RpzPx$k#y`J*pFMs0*pVZL4;^~^
z@Zrtt*Jn(h{`=Rjn>TLEoIbtr$NylE(Ir8C!3+-1Zlr-YN#5=*3>~bp9zYIffk$L9
z0|U1(2s1Lwnj--eWH0gbb!ETJDbB8L_-pz5gFqo2PZ!4!j_bUqwlXp(2rz7{zBBi4
xc&l0{!?L!8VQ%rNy|-L>?B?j-KK6zCsI7=E!TLEoIbtr$NylE(Ir8C!3+-1Zlr-YN#5=*3>~bp9zYIffk$L9
z0|U1(2s1Lwnj--eWH0gbb!ETJDbB90`k>Z&4^T+Y)5S4_<9c#}SPBDEo}wBf8=IY*
zT3{NRn44Q&oPy?|gXaz$J*jo(z=31TAxsP+Ga0^!eSdKRsFT6d)z4*}Q$iB}&K73a
literal 0
HcmV?d00001
From 0b1283ed1ce850fb30b9c39c83130a47be6ff551 Mon Sep 17 00:00:00 2001
From: Antoine Huvelle
Date: Thu, 27 Oct 2011 17:50:01 +0200
Subject: [PATCH 023/106] [IMP] font size improvements, removing old css file &
vertical align adjustments
bzr revid: ahu@openerp.com-20111027155001-v45n72ltb447vf97
---
addons/web_calendar/__openerp__.py | 2 +-
.../static/src/css/web_calendar.css | 40 ++++++++++++-------
2 files changed, 26 insertions(+), 16 deletions(-)
diff --git a/addons/web_calendar/__openerp__.py b/addons/web_calendar/__openerp__.py
index 39e2557de75..e36e6655b82 100644
--- a/addons/web_calendar/__openerp__.py
+++ b/addons/web_calendar/__openerp__.py
@@ -8,7 +8,7 @@
'static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_minical.js',
'static/src/js/calendar.js'
],
- "css": ['static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.css',
+ "css": [
'static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_ext.css',
'static/src/css/web_calendar.css'
],
diff --git a/addons/web_calendar/static/src/css/web_calendar.css b/addons/web_calendar/static/src/css/web_calendar.css
index 80291a6cf5a..82fa33d2fa5 100644
--- a/addons/web_calendar/static/src/css/web_calendar.css
+++ b/addons/web_calendar/static/src/css/web_calendar.css
@@ -15,7 +15,10 @@
position:relative;
overflow:hidden;
}
-
+.openerp .dhx_cal_container.dhx_mini_calendar {
+ background-color:#eee;
+}
+
.openerp .dhx_cal_container div{
-moz-user-select:none;
-moz-user-select:-moz-none;
@@ -29,9 +32,6 @@
white-space:nowrap;
}
-.openerp .dhx_cal_navline * {
- vertical-align:middle;
-}
.openerp .dhx_cal_navline .dhx_cal_date{
font-weight:bold;
float:left;
@@ -44,18 +44,19 @@
.openerp .dhx_cal_today_button, .openerp .dhx_cal_prev_button, .openerp .dhx_cal_next_button {
color:white;
height:17px;
+ line-height:17px;
font-weight:bold;
cursor:pointer;
font-size:90%;
text-decoration:none;
float:left;
-
margin:0px 3px;
padding:2px 2px;
border:1px solid black;
border-radius: 3px;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
+ vertical-align:0px;
}
.openerp .dhx_cal_today_button {
@@ -165,14 +166,16 @@
.openerp .dhx_cal_tab {
width:59px;
- height:18px;
+ height:16px;
+ line-height:16px;
text-align:center;
text-transform:uppercase;
text-decoration:none;
font-weight:bold;
- font-size:0.8em;
+ font-size:80%;
color:#555;
- margin:2px 1px 0px 1px;
+ margin:6px 1px 0px 1px;
+ padding-top:2px;
cursor:pointer;
float:right;
background-color:#bbb;
@@ -182,7 +185,6 @@
-moz-border-radius-topright:4px;
border-top-left-radius:4px;
border-top-right-radius:4px;
- vertical-align:50% !important;
}
.openerp .dhx_cal_tab[name="month_tab"] { right:16px; }
.openerp .dhx_cal_tab[name="week_tab"] { right:78px; }
@@ -193,9 +195,12 @@
}
.openerp .dhx_cal_tab.active{
+ height:17px;
+ line-height:17px;
text-decoration:none;
cursor:default;
- border-bottom:0;
+ border:1px dotted #8894A3;
+ border-bottom:0px;
background-color:white /*#F4F4F4;*/
}
@@ -213,6 +218,7 @@
font-weight:bold;
color:#1F1F1F;
border-bottom:1px dotted #8894A3;
+ border-top:1px dotted #8894A3;
/*border-right:1px dotted #8894A3;z-index:2;*/
overflow:hidden;
background-color: white; /*#F4F4F4;*/
@@ -250,8 +256,10 @@ openerp .dhx_scale_hour{height:41px;width:50px;border-bottom:1px dotted #8894A3;
font-weight:bold;
text-align:center;
border-right:1px dotted #586A7E;
- height:18px;padding-right:5px;
- padding-top:3px;text-align:right;
+ height:18px;
+ padding-right:6px;
+ padding-top:4px;
+ text-align:right;
font-size:0.9em;
}
@@ -314,7 +322,7 @@ dhx_multi_day_icon{background-image:url(/web_calendar/static/lib/dhtmlxScheduler
cursor:pointer;
vertical-align:middle;
padding-top:2px;
- font-size: 120%;
+ font-size: 90%;
-moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px;
}
@@ -322,7 +330,7 @@ dhx_multi_day_icon{background-image:url(/web_calendar/static/lib/dhtmlxScheduler
border-width:0 1px 1px 1px;
padding:5px;
-moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px;
- font-size:120%;
+ font-size:90%;
}
.openerp .dhx_resize_denied .dhx_cal_event .dhx_footer{cursor:default;}
@@ -433,7 +441,8 @@ div.openerp .dhx_menu_icon{background-image:url(/web_calendar/static/lib/dhtmlxS
.openerp .dhx_year_month{
height:18px;
- padding-top:3px;
+ line-height:18px;
+ padding-top:2px;
text-align:center;
vertical-align:middle;
text-transform:uppercase;
@@ -441,6 +450,7 @@ div.openerp .dhx_menu_icon{background-image:url(/web_calendar/static/lib/dhtmlxS
font-size:0.9em;
text-shadow: 0 1px 0 white;
border:0px;
+ color:#444;
}
/*.openerp .dhx_mini_calendar .openerp .dhx_year_month{
padding-top:0px;
From e352440679d7f4f26d31b3d62b0333d50c7c6afb Mon Sep 17 00:00:00 2001
From: Antoine Huvelle
Date: Fri, 28 Oct 2011 09:52:36 +0200
Subject: [PATCH 024/106] [IMP] .dhx_cal_event_line changes
bzr revid: ahu@openerp.com-20111028075236-ta8g861zwxa9n42h
---
.../static/src/css/web_calendar.css | 82 ++++++++-----------
1 file changed, 34 insertions(+), 48 deletions(-)
diff --git a/addons/web_calendar/static/src/css/web_calendar.css b/addons/web_calendar/static/src/css/web_calendar.css
index 82fa33d2fa5..e7178f993ca 100644
--- a/addons/web_calendar/static/src/css/web_calendar.css
+++ b/addons/web_calendar/static/src/css/web_calendar.css
@@ -216,7 +216,7 @@
text-transform:uppercase;
font-size:0.8em;
font-weight:bold;
- color:#1F1F1F;
+ color:#3F3F3F;
border-bottom:1px dotted #8894A3;
border-top:1px dotted #8894A3;
/*border-right:1px dotted #8894A3;z-index:2;*/
@@ -337,26 +337,50 @@ dhx_multi_day_icon{background-image:url(/web_calendar/static/lib/dhtmlxScheduler
.openerp .dhx_cal_event .dhx_footer{height:1px;margin-left:2px;border-width:0 1px 1px 1px;cursor:s-resize;}
-.openerp .dhx_cal_event_line{background-color:#FFE763;border:1px solid #B7A543;border-radius:3px;
- font-size:8pt;height:13px;padding-left:10px;color:#887A2E;cursor:pointer;overflow:hidden;}
+/*
+The old one
-.openerp .dhx_cal_event_clear{
+.openerp .dhx_cal_event_line{
+ background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/event-bg.png);
+ background-color:#FFE763;
+ border:1px solid #FFBD51;
+ border-radius:3px;
+ height:13px;
+ padding-left:10px;
+ color:#000;
+ cursor:pointer;
+ overflow:hidden;
+}*/
+
+.openerp .dhx_cal_event_clear, .openerp .dhx_cal_event_line{
font-family:Ubuntu, Helvetica, sans-serif;
- font-size:100%;
+ font-size:95%;
height:15px;
- padding-left:2px;
+ line-height:15px;
+ padding:0px 2px;
color:white;
white-space:nowrap;
overflow:hidden;
cursor:pointer;
vertical-align:middle;
}
+.openerp .dhx_cal_event_clear:hover, .openerp .dhx_cal_event_line:hover{
+ background-color:#ccc;
+}
-.openerp .dhx_in_move{background-color:#FFFF80;}div.openerp .dhx_cal_editor{background-color:#FFE763;border:1px solid #B7A543;border-top-style:dotted;z-index:999;position:absolute;overflow:hidden;}textarea.openerp .dhx_cal_editor{width:100%;height:100%;border:0 solid black;margin:none;padding:none;overflow:auto;}div.openerp .dhx_menu_head{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif);background-position:0 -43px;width:10px;height:10px;margin-left:5px;margin-top:1px;border:none;cursor:default;}
+.openerp .dhx_in_move{background-color:#FFFF80;}
-div.openerp .dhx_menu_icon{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif);width:20px;height:20px;margin-left:-5px;margin-top:0;border:none;cursor:pointer;}div.icon_details{background-position:0 0;}
+.openerp div .dhx_cal_editor{background-color:#FFE763;border:1px solid #B7A543;border-top-style:dotted;z-index:999;position:absolute;overflow:hidden;}
-.openerp div .icon_edit{background-position:-22px 0;}div.icon_save{background-position:-84px -1px;}
+.openerp textarea .dhx_cal_editor{width:100%;height:100%;border:0 solid black;margin:none;padding:none;overflow:auto;}
+
+.openerp div .dhx_menu_head{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif);background-position:0 -43px;width:10px;height:10px;margin-left:5px;margin-top:1px;border:none;cursor:default;}
+
+.openerp div .dhx_menu_icon{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif);width:20px;height:20px;margin-left:-5px;margin-top:0;border:none;cursor:pointer;}
+.openerp div .icon_details{background-position:0 0;}
+
+.openerp div .icon_edit{background-position:-22px 0;}
+.openerp div .icon_save{background-position:-84px -1px;}
.openerp div .icon_cancel{background-position:-62px 0;}div.icon_delete{background-position:-42px 0;}
.openerp div .dhx_now_time{position:absolute;width:100%;border-bottom:2px dotted red;z-index:1;}
.openerp div .dhx_time_block{position:absolute;width:100%;background:silver;opacity:.4;filter:alpha(opacity=40);z-index:1;}
@@ -580,7 +604,7 @@ font-size:11px;line-height:24px;}
.openerp .dhx_after .dhx_month_body,.openerp .dhx_before .dhx_month_body{background-color:#EFEDE2;}
.openerp .dhx_cal_event div{border:1px solid #FFBD51;background-color:#FFE4AB;color:#000;}
-.openerp .dhx_cal_event_line{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/event-bg.png);border:1px solid #FFBD51;color:#000;}
+
.openerp .dhx_in_move{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/move.png);}
.openerp .dhx_cal_event .dhx_title{background-color:#FFE4AB;}
@@ -659,11 +683,6 @@ font-size:11px;line-height:24px;}
}
-.openerp .dhx_cal_event_line {
- background-color:#ff8d8d;
- color: #000102;
- border:1px solid #a73636;
-}
.openerp .dhx_in_move{
background-color:#f7ffb1;
@@ -848,11 +867,6 @@ div.openerp .dhx_repeat_divider {
}
-.openerp .dhx_cal_event_line{
- background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/event-bg.png");
- border:1px solid #a73636;
- color:#000102;
-}
.openerp .dhx_in_move{
background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/move.png");
@@ -922,34 +936,6 @@ div.openerp .dhx_cal_editor textarea {
background-color:#F4F4F4;
}
-.openerp .dhx_cal_event div{
- font-size: 11px;
-}
-.openerp .dhx_cal_event_line {
- font-size: 11px;
-}
-.openerp .dhx_cal_light{
- font-size: 11px;
-}
-.openerp .dhx_cal_light select{
- font-size: 11px;
-}
-.openerp .dhx_custom_button{
- font-size: 11px;
-}
-
-.openerp .dhx_cal_lsection{
- font-size: 14px;
-}
-
-.openerp .dhx_cal_ltext textarea {
- font-size: 11px;
-}
-
-
-/*Added in 2.3*/
-
-
/* Tree view */
.openerp .dhx_matrix_scell.folder, .dhx_data_table.folder .dhx_matrix_cell{
background-color: #7e7e7e;
From ff7dbe49412c17c07ddd90e26879d6ba10c67fd7 Mon Sep 17 00:00:00 2001
From: Serpent Consulting Services
Date: Thu, 3 Nov 2011 18:41:16 +0530
Subject: [PATCH 025/106] [FIX] DB creation failure : Better message attached
to the exception
lp bug: https://launchpad.net/bugs/885664 fixed
bzr revid: support@serpentcs.com-20111103131116-ryc0710gm170drx9
---
addons/web/controllers/main.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py
index 6cc46b476a9..ecd2dc2d088 100644
--- a/addons/web/controllers/main.py
+++ b/addons/web/controllers/main.py
@@ -202,7 +202,7 @@ class Database(openerpweb.Controller):
except xmlrpclib.Fault, e:
if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied':
return {'error': e.faultCode, 'title': 'Create Database'}
- return {'error': 'Could not create database !', 'title': 'Create Database'}
+ return {'error': 'Could not create database ! ' + e.faultCode, 'title': 'Create Database'}
@openerpweb.jsonrequest
def drop(self, req, fields):
From 9ed5cbb24ca0b06b1e6c7903425d0a10abf32d24 Mon Sep 17 00:00:00 2001
From: Numerigraphe - Lionel Sausin
Date: Mon, 7 Nov 2011 16:19:49 +0100
Subject: [PATCH 026/106] [FIX] unmutable defaults in base addons.
bzr revid: ls@numerigraphe.fr-20111107151949-n9prrufvqe3ohz18
---
openerp/addons/base/ir/ir_default.py | 2 +-
openerp/addons/base/ir/ir_filters.py | 2 +-
openerp/addons/base/ir/ir_model.py | 2 +-
openerp/addons/base/ir/ir_sequence.py | 2 +-
openerp/addons/base/ir/ir_translation.py | 2 +-
openerp/addons/base/ir/ir_ui_view.py | 4 ++--
.../addons/base/ir/workflow/print_instance.py | 2 +-
openerp/addons/base/ir/workflow/workflow.py | 4 ++--
openerp/addons/base/module/module.py | 2 +-
openerp/addons/base/res/ir_property.py | 2 +-
openerp/addons/base/res/res_bank.py | 6 ++---
openerp/addons/base/res/res_company.py | 8 +++----
openerp/addons/base/res/res_lang.py | 4 ++--
openerp/addons/base/res/res_log.py | 2 +-
openerp/addons/base/res/res_partner.py | 22 +++++++++++++------
openerp/addons/base/res/res_request.py | 2 +-
16 files changed, 38 insertions(+), 30 deletions(-)
diff --git a/openerp/addons/base/ir/ir_default.py b/openerp/addons/base/ir/ir_default.py
index d229ee4cb5c..a51405b32c1 100644
--- a/openerp/addons/base/ir/ir_default.py
+++ b/openerp/addons/base/ir/ir_default.py
@@ -34,7 +34,7 @@ class ir_default(osv.osv):
'company_id': fields.many2one('res.company','Company')
}
- def _get_company_id(self, cr, uid, context={}):
+ def _get_company_id(self, cr, uid, context=None):
res = self.pool.get('res.users').read(cr, uid, [uid], ['company_id'], context=context)
if res and res[0]['company_id']:
return res[0]['company_id'][0]
diff --git a/openerp/addons/base/ir/ir_filters.py b/openerp/addons/base/ir/ir_filters.py
index e18d3346db6..8a6fc587580 100644
--- a/openerp/addons/base/ir/ir_filters.py
+++ b/openerp/addons/base/ir/ir_filters.py
@@ -53,7 +53,7 @@ class ir_filters(osv.osv):
return False
return self.create(cr, uid, vals, context)
- def _auto_init(self, cr, context={}):
+ def _auto_init(self, cr, context=None):
super(ir_filters, self)._auto_init(cr, context)
# Use unique index to implement unique constraint on the lowercase name (not possible using a constraint)
cr.execute("SELECT indexname FROM pg_indexes WHERE indexname = 'ir_filters_name_model_uid_unique_index'")
diff --git a/openerp/addons/base/ir/ir_model.py b/openerp/addons/base/ir/ir_model.py
index 014d5652891..7c149a618a2 100644
--- a/openerp/addons/base/ir/ir_model.py
+++ b/openerp/addons/base/ir/ir_model.py
@@ -161,7 +161,7 @@ class ir_model(osv.osv):
#pooler.restart_pool(cr.dbname)
return res
- def instanciate(self, cr, user, model, context={}):
+ def instanciate(self, cr, user, model, context=None):
class x_custom_model(osv.osv):
pass
x_custom_model._name = model
diff --git a/openerp/addons/base/ir/ir_sequence.py b/openerp/addons/base/ir/ir_sequence.py
index c2f71910231..a0a260131ea 100644
--- a/openerp/addons/base/ir/ir_sequence.py
+++ b/openerp/addons/base/ir/ir_sequence.py
@@ -38,7 +38,7 @@ class ir_sequence_type(openerp.osv.osv.osv):
('code_unique', 'unique(code)', '`code` must be unique.'),
]
-def _code_get(self, cr, uid, context={}):
+def _code_get(self, cr, uid, context=None):
cr.execute('select code, name from ir_sequence_type')
return cr.fetchall()
diff --git a/openerp/addons/base/ir/ir_translation.py b/openerp/addons/base/ir/ir_translation.py
index 44f5d24823d..d8127da0593 100644
--- a/openerp/addons/base/ir/ir_translation.py
+++ b/openerp/addons/base/ir/ir_translation.py
@@ -62,7 +62,7 @@ class ir_translation(osv.osv):
'xml_id': fields.char('External ID', size=128, help='Maps to the ir_model_data for which this translation is provided.'),
}
- def _auto_init(self, cr, context={}):
+ def _auto_init(self, cr, context=None):
super(ir_translation, self)._auto_init(cr, context)
# FIXME: there is a size limit on btree indexed values so we can't index src column with normal btree.
diff --git a/openerp/addons/base/ir/ir_ui_view.py b/openerp/addons/base/ir/ir_ui_view.py
index c44ff716519..a4648a001be 100644
--- a/openerp/addons/base/ir/ir_ui_view.py
+++ b/openerp/addons/base/ir/ir_ui_view.py
@@ -109,7 +109,7 @@ class view(osv.osv):
(view_id, model))
return cr.fetchall()
- def write(self, cr, uid, ids, vals, context={}):
+ def write(self, cr, uid, ids, vals, context=None):
if not isinstance(ids, (list, tuple)):
ids = [ids]
result = super(view, self).write(cr, uid, ids, vals, context)
@@ -122,7 +122,7 @@ class view(osv.osv):
return result
- def graph_get(self, cr, uid, id, model, node_obj, conn_obj, src_node, des_node,label,scale,context={}):
+ def graph_get(self, cr, uid, id, model, node_obj, conn_obj, src_node, des_node, label, scale, context=None):
if not label:
label = []
nodes=[]
diff --git a/openerp/addons/base/ir/workflow/print_instance.py b/openerp/addons/base/ir/workflow/print_instance.py
index 747ae5622fe..7ca9426d1d4 100644
--- a/openerp/addons/base/ir/workflow/print_instance.py
+++ b/openerp/addons/base/ir/workflow/print_instance.py
@@ -210,7 +210,7 @@ class report_graph(report.interface.report_int):
else:
return (False, False, False)
- def create(self, cr, uid, ids, data, context={}):
+ def create(self, cr, uid, ids, data, context=None):
self.obj = report_graph_instance(cr, uid, ids, data)
return (self.obj.get(), 'pdf')
diff --git a/openerp/addons/base/ir/workflow/workflow.py b/openerp/addons/base/ir/workflow/workflow.py
index c638855aacf..edd070ae50d 100644
--- a/openerp/addons/base/ir/workflow/workflow.py
+++ b/openerp/addons/base/ir/workflow/workflow.py
@@ -45,7 +45,7 @@ class workflow(osv.osv):
wf_service.clear_cache(cr, user)
return super(workflow, self).write(cr, user, ids, vals, context=context)
- def get_active_workitems(self, cr, uid, res, res_id, context={}):
+ def get_active_workitems(self, cr, uid, res, res_id, context=None):
cr.execute('select * from wkf where osv=%s limit 1',(res,))
wkfinfo = cr.dictfetchone()
@@ -212,7 +212,7 @@ class wkf_triggers(osv.osv):
'instance_id': fields.many2one('workflow.instance', 'Destination Instance', ondelete="cascade"),
'workitem_id': fields.many2one('workflow.workitem', 'Workitem', required=True, ondelete="cascade"),
}
- def _auto_init(self, cr, context={}):
+ def _auto_init(self, cr, context=None):
super(wkf_triggers, self)._auto_init(cr, context)
cr.execute('SELECT indexname FROM pg_indexes WHERE indexname = \'wkf_triggers_res_id_model_index\'')
if not cr.fetchone():
diff --git a/openerp/addons/base/module/module.py b/openerp/addons/base/module/module.py
index b7f9995e2c9..3a6a044832f 100644
--- a/openerp/addons/base/module/module.py
+++ b/openerp/addons/base/module/module.py
@@ -402,7 +402,7 @@ class module(osv.osv):
}
# update the list of available packages
- def update_list(self, cr, uid, context={}):
+ def update_list(self, cr, uid, context=None):
res = [0, 0] # [update, add]
known_mods = self.browse(cr, uid, self.search(cr, uid, []))
diff --git a/openerp/addons/base/res/ir_property.py b/openerp/addons/base/res/ir_property.py
index 43451f824a1..496bfffe1a2 100644
--- a/openerp/addons/base/res/ir_property.py
+++ b/openerp/addons/base/res/ir_property.py
@@ -156,7 +156,7 @@ class ir_property(osv.osv):
return time.strftime('%Y-%m-%d', time.strptime(record.value_datetime, '%Y-%m-%d %H:%M:%S'))
return False
- def get(self, cr, uid, name, model, res_id=False, context={}):
+ def get(self, cr, uid, name, model, res_id=False, context=None):
domain = self._get_domain(cr, uid, name, model, context=context)
if domain is not None:
domain = [('res_id', '=', res_id)] + domain
diff --git a/openerp/addons/base/res/res_bank.py b/openerp/addons/base/res/res_bank.py
index ce1cd1c6a24..9184cf2ad1c 100644
--- a/openerp/addons/base/res/res_bank.py
+++ b/openerp/addons/base/res/res_bank.py
@@ -190,7 +190,7 @@ class res_partner_bank(osv.osv):
res.append((val.id, result))
return res
- def onchange_company_id(self, cr, uid, ids, company_id, context={}):
+ def onchange_company_id(self, cr, uid, ids, company_id, context=None):
result = {}
if company_id:
c = self.pool.get('res.company').browse(cr, uid, company_id, context=context)
@@ -201,7 +201,7 @@ class res_partner_bank(osv.osv):
result = r
return result
- def onchange_bank_id(self, cr, uid, ids, bank_id, context={}):
+ def onchange_bank_id(self, cr, uid, ids, bank_id, context=None):
result = {}
if bank_id:
bank = self.pool.get('res.bank').browse(cr, uid, bank_id, context=context)
@@ -210,7 +210,7 @@ class res_partner_bank(osv.osv):
return {'value': result}
- def onchange_partner_id(self, cr, uid, id, partner_id, context={}):
+ def onchange_partner_id(self, cr, uid, id, partner_id, context=None):
result = {}
if partner_id:
part = self.pool.get('res.partner').browse(cr, uid, partner_id, context=context)
diff --git a/openerp/addons/base/res/res_company.py b/openerp/addons/base/res/res_company.py
index e2c5e091f97..7a6b7007833 100644
--- a/openerp/addons/base/res/res_company.py
+++ b/openerp/addons/base/res/res_company.py
@@ -148,7 +148,7 @@ class res_company(osv.osv):
_sql_constraints = [
('name_uniq', 'unique (name)', 'The company name must be unique !')
]
- def on_change_header(self, cr, uid, ids, phone, email, fax, website, vat, reg=False, context={}):
+ def on_change_header(self, cr, uid, ids, phone, email, fax, website, vat, reg=False, context=None):
val = []
if phone: val.append(_('Phone: ')+phone)
if fax: val.append(_('Fax: ')+fax)
@@ -201,7 +201,7 @@ class res_company(osv.osv):
ids = self.search(cr, uid, [('parent_id','child_of',[company])])
return ids
- def _get_partner_hierarchy(self, cr, uid, company_id, context={}):
+ def _get_partner_hierarchy(self, cr, uid, company_id, context=None):
if company_id:
parent_id = self.browse(cr, uid, company_id)['parent_id']
if parent_id:
@@ -210,7 +210,7 @@ class res_company(osv.osv):
return self._get_partner_descendance(cr, uid, company_id, [], context)
return []
- def _get_partner_descendance(self, cr, uid, company_id, descendance, context={}):
+ def _get_partner_descendance(self, cr, uid, company_id, descendance, context=None):
descendance.append(self.browse(cr, uid, company_id).partner_id.id)
for child_id in self._get_company_children(cr, uid, company_id):
if child_id != company_id:
@@ -239,7 +239,7 @@ class res_company(osv.osv):
self.cache_restart(cr)
return super(res_company, self).write(cr, *args, **argv)
- def _get_euro(self, cr, uid, context={}):
+ def _get_euro(self, cr, uid, context=None):
try:
return self.pool.get('res.currency').search(cr, uid, [])[0]
except:
diff --git a/openerp/addons/base/res/res_lang.py b/openerp/addons/base/res/res_lang.py
index 50841241f8a..246163536ea 100644
--- a/openerp/addons/base/res/res_lang.py
+++ b/openerp/addons/base/res/res_lang.py
@@ -125,10 +125,10 @@ class lang(osv.osv):
return False
return True
- def _get_default_date_format(self,cursor,user,context={}):
+ def _get_default_date_format(self, cursor, user, context=None):
return '%m/%d/%Y'
- def _get_default_time_format(self,cursor,user,context={}):
+ def _get_default_time_format(self, cursor, user, context=None):
return '%H:%M:%S'
_columns = {
diff --git a/openerp/addons/base/res/res_log.py b/openerp/addons/base/res/res_log.py
index 26e1eaeed69..0ec39dbf615 100644
--- a/openerp/addons/base/res/res_log.py
+++ b/openerp/addons/base/res/res_log.py
@@ -41,7 +41,7 @@ class res_log(osv.osv):
_order='create_date desc'
_index_name = 'res_log_uid_read'
- def _auto_init(self, cr, context={}):
+ def _auto_init(self, cr, context=None):
super(res_log, self)._auto_init(cr, context)
cr.execute('SELECT 1 FROM pg_indexes WHERE indexname=%s',
(self._index_name,))
diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py
index b250269cb0e..6b8d2a41c50 100644
--- a/openerp/addons/base/res/res_partner.py
+++ b/openerp/addons/base/res/res_partner.py
@@ -98,7 +98,7 @@ class res_partner_title(osv.osv):
_order = 'name'
res_partner_title()
-def _lang_get(self, cr, uid, context={}):
+def _lang_get(self, cr, uid, context=None):
obj = self.pool.get('res.lang')
ids = obj.search(cr, uid, [], context=context)
res = obj.read(cr, uid, ids, ['code', 'name'], context)
@@ -142,7 +142,9 @@ class res_partner(osv.osv):
'color': fields.integer('Color Index'),
}
- def _default_category(self, cr, uid, context={}):
+ def _default_category(self, cr, uid, context=None):
+ if context is None:
+ context = {}
if 'category_id' in context and context['category_id']:
return [context['category_id']]
return []
@@ -156,7 +158,9 @@ class res_partner(osv.osv):
'color': 0,
}
- def copy(self, cr, uid, id, default={}, context={}):
+ def copy(self, cr, uid, id, default=None, context=None):
+ if default is None:
+ default = {}
name = self.read(cr, uid, [id], ['name'])[0]['name']
default.update({'name': name+ _(' (copy)'), 'events':[]})
return super(res_partner, self).copy(cr, uid, id, default, context)
@@ -182,10 +186,12 @@ class res_partner(osv.osv):
# _constraints = [(_check_ean_key, 'Error: Invalid ean code', ['ean13'])]
- def name_get(self, cr, uid, ids, context={}):
+ def name_get(self, cr, uid, ids, context=None):
+ if context is None:
+ context = {}
if not len(ids):
return []
- if context and context.get('show_ref'):
+ if context.get('show_ref', False):
rec_name = 'ref'
else:
rec_name = 'name'
@@ -224,7 +230,9 @@ class res_partner(osv.osv):
ids = ids[16:]
return True
- def address_get(self, cr, uid, ids, adr_pref=['default']):
+ def address_get(self, cr, uid, ids, adr_pref=None):
+ if adr_pref is None:
+ adr_pref = ['default']
address_obj = self.pool.get('res.partner.address')
address_ids = address_obj.search(cr, uid, [('partner_id', 'in', ids)])
address_rec = address_obj.read(cr, uid, address_ids, ['type'])
@@ -308,7 +316,7 @@ class res_partner_address(osv.osv):
'company_id': lambda s,cr,uid,c: s.pool.get('res.company')._company_default_get(cr, uid, 'res.partner.address', context=c),
}
- def name_get(self, cr, user, ids, context={}):
+ def name_get(self, cr, user, ids, context=None):
if context is None:
context = {}
if not len(ids):
diff --git a/openerp/addons/base/res/res_request.py b/openerp/addons/base/res/res_request.py
index d7c87274ea1..e5afd1c8387 100644
--- a/openerp/addons/base/res/res_request.py
+++ b/openerp/addons/base/res/res_request.py
@@ -22,7 +22,7 @@
from osv import osv, fields
import time
-def _links_get(self, cr, uid, context={}):
+def _links_get(self, cr, uid, context=None):
obj = self.pool.get('res.request.link')
ids = obj.search(cr, uid, [])
res = obj.read(cr, uid, ids, ['object', 'name'], context)
From 4651cf935e888e8bb82432145f95a147413f9b00 Mon Sep 17 00:00:00 2001
From: Numerigraphe - Lionel Sausin
Date: Mon, 7 Nov 2011 16:26:40 +0100
Subject: [PATCH 027/106] [FIX] unmutable defaults in safe_eval
bzr revid: ls@numerigraphe.fr-20111107152640-t28rgkfs05jwduab
---
openerp/tools/safe_eval.py | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/openerp/tools/safe_eval.py b/openerp/tools/safe_eval.py
index 02fcbc19c63..4343df1774d 100644
--- a/openerp/tools/safe_eval.py
+++ b/openerp/tools/safe_eval.py
@@ -212,7 +212,13 @@ except ImportError:
node_or_string = node_or_string.body
return _convert(node_or_string)
-def _import(name, globals={}, locals={}, fromlist=[], level=-1):
+def _import(name, globals=None, locals=None, fromlist=None, level=-1):
+ if globals is None:
+ globals = {}
+ if locals is None:
+ locals = {}
+ if fromlist is None:
+ fromlist = []
if name in _ALLOWED_MODULES:
return __import__(name, globals, locals, level)
raise ImportError(name)
From b29e24b5d2388a09379fbc4e22694b66081119a8 Mon Sep 17 00:00:00 2001
From: Numerigraphe - Lionel Sausin
Date: Mon, 7 Nov 2011 16:45:01 +0100
Subject: [PATCH 028/106] [FIX] unmutable defaults in history
bzr revid: ls@numerigraphe.fr-20111107154501-relcy0v6w1dl9jjr
---
history/check_profile_l10n_all.py | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/history/check_profile_l10n_all.py b/history/check_profile_l10n_all.py
index 719d5ce051b..5c1c1fa9bca 100644
--- a/history/check_profile_l10n_all.py
+++ b/history/check_profile_l10n_all.py
@@ -63,7 +63,9 @@ def wait(id):
time.sleep(3)
return True
-def wizard_run(wizname, fieldvalues={}, endstate='end'):
+def wizard_run(wizname, fieldvalues=None, endstate='end'):
+ if fieldvalues is None:
+ fieldvalues = {}
wiz_id = sock4.create(dbname, uid, 'admin', wizname)
state = 'init'
datas = {'form':{}}
From ae2be16844c02c4ff89004f12a0a4fbf9a161c75 Mon Sep 17 00:00:00 2001
From: Numerigraphe - Lionel Sausin
Date: Mon, 7 Nov 2011 16:45:56 +0100
Subject: [PATCH 029/106] [FIX] unmutable defaults in report
bzr revid: ls@numerigraphe.fr-20111107154556-eofj5s55tkqntsty
---
openerp/report/render/rml2html/utils.py | 4 ++-
openerp/report/render/rml2pdf/trml2pdf.py | 30 +++++++++++++++++------
openerp/report/render/rml2pdf/utils.py | 4 ++-
openerp/report/render/rml2txt/rml2txt.py | 12 ++++++---
openerp/report/render/rml2txt/utils.py | 4 ++-
5 files changed, 39 insertions(+), 15 deletions(-)
diff --git a/openerp/report/render/rml2html/utils.py b/openerp/report/render/rml2html/utils.py
index 9d1d15da14c..b811cc5d47b 100644
--- a/openerp/report/render/rml2html/utils.py
+++ b/openerp/report/render/rml2html/utils.py
@@ -48,7 +48,9 @@ def tuple_int_get(node, attr_name, default=None):
def bool_get(value):
return (str(value)=="1") or (value.lower()=='yes')
-def attr_get(node, attrs, dict={}):
+def attr_get(node, attrs, dict=None):
+ if dict is None:
+ dict = {}
res = {}
for name in attrs:
if node.get(name):
diff --git a/openerp/report/render/rml2pdf/trml2pdf.py b/openerp/report/render/rml2pdf/trml2pdf.py
index 09690fb75c2..639d62a1aa9 100644
--- a/openerp/report/render/rml2pdf/trml2pdf.py
+++ b/openerp/report/render/rml2pdf/trml2pdf.py
@@ -226,7 +226,9 @@ class _rml_styles(object,):
return style
class _rml_doc(object):
- def __init__(self, node, localcontext, images={}, path='.', title=None):
+ def __init__(self, node, localcontext, images=None, path='.', title=None):
+ if images is None:
+ images = {}
self.localcontext = localcontext
self.etree = node
self.filename = self.etree.get('filename')
@@ -311,7 +313,9 @@ class _rml_doc(object):
self.canvas.save()
class _rml_canvas(object):
- def __init__(self, canvas, localcontext, doc_tmpl=None, doc=None, images={}, path='.', title=None):
+ def __init__(self, canvas, localcontext, doc_tmpl=None, doc=None, images=None, path='.', title=None):
+ if images is None:
+ images = {}
self.localcontext = localcontext
self.canvas = canvas
self.styles = doc.styles
@@ -564,7 +568,9 @@ class _rml_canvas(object):
tags[n.tag](n)
class _rml_draw(object):
- def __init__(self, localcontext ,node, styles, images={}, path='.', title=None):
+ def __init__(self, localcontext, node, styles, images=None, path='.', title=None):
+ if images is None:
+ images = {}
self.localcontext = localcontext
self.node = node
self.styles = styles
@@ -595,10 +601,12 @@ class _rml_Illustration(platypus.flowables.Flowable):
class _rml_flowable(object):
def __init__(self, doc, localcontext, images=None, path='.', title=None):
+ if images is None:
+ images = {}
self.localcontext = localcontext
self.doc = doc
self.styles = doc.styles
- self.images = images or {}
+ self.images = images
self.path = path
self.title = title
self._logger = logging.getLogger('report.rml.flowable')
@@ -890,7 +898,9 @@ class TinyDocTemplate(platypus.BaseDocTemplate):
self.canv._pageNumber = 0
class _rml_template(object):
- def __init__(self, localcontext, out, node, doc, images={}, path='.', title=None):
+ def __init__(self, localcontext, out, node, doc, images=None, path='.', title=None):
+ if images is None:
+ images = {}
if not localcontext:
localcontext={'internal_header':True}
self.localcontext = localcontext
@@ -951,12 +961,12 @@ class _rml_template(object):
fis.append(PageCount())
self.doc_tmpl.build(fis)
-def parseNode(rml, localcontext=None,fout=None, images=None, path='.',title=None):
- node = etree.XML(rml)
+def parseNode(rml, localcontext=None, fout=None, images=None, path='.', title=None):
if localcontext is None:
localcontext = {}
if images is None:
images = {}
+ node = etree.XML(rml)
r = _rml_doc(node, localcontext, images, path, title=title)
#try to override some font mappings
try:
@@ -972,7 +982,11 @@ def parseNode(rml, localcontext=None,fout=None, images=None, path='.',title=None
r.render(fp)
return fp.getvalue()
-def parseString(rml, localcontext = {},fout=None, images={}, path='.',title=None):
+def parseString(rml, localcontext=None, fout=None, images=None, path='.', title=None):
+ if localcontext is None:
+ localcontext = {}
+ if images is None:
+ images = {}
node = etree.XML(rml)
r = _rml_doc(node, localcontext, images, path, title=title)
diff --git a/openerp/report/render/rml2pdf/utils.py b/openerp/report/render/rml2pdf/utils.py
index 656045c5c62..cd6b629d84f 100644
--- a/openerp/report/render/rml2pdf/utils.py
+++ b/openerp/report/render/rml2pdf/utils.py
@@ -179,7 +179,9 @@ def tuple_int_get(node, attr_name, default=None):
def bool_get(value):
return (str(value)=="1") or (value.lower()=='yes')
-def attr_get(node, attrs, dict={}):
+def attr_get(node, attrs, dict=None):
+ if dict is None:
+ dict = {}
res = {}
for name in attrs:
if node.get(name):
diff --git a/openerp/report/render/rml2txt/rml2txt.py b/openerp/report/render/rml2txt/rml2txt.py
index b6e5b54c357..3e0fcf37bdd 100755
--- a/openerp/report/render/rml2txt/rml2txt.py
+++ b/openerp/report/render/rml2txt/rml2txt.py
@@ -375,7 +375,7 @@ class _rml_draw_style(object):
return ';'.join(['%s:%s' % (x[0],x[1]) for x in self.style[tag].items()])
class _rml_template(object):
- def __init__(self, localcontext, out, node, doc, images={}, path='.', title=None):
+ def __init__(self, localcontext, out, node, doc, images=None, path='.', title=None):
self.localcontext = localcontext
self.frame_pos = -1
self.frames = []
@@ -465,7 +465,7 @@ class _rml_template(object):
return result
class _rml_doc(object):
- def __init__(self, node, localcontext, images={}, path='.', title=None):
+ def __init__(self, node, localcontext, images=None, path='.', title=None):
self.localcontext = localcontext
self.etree = node
self.filename = self.etree.get('filename')
@@ -495,14 +495,18 @@ class _rml_doc(object):
self.result += '\n'
out.write( self.result)
-def parseNode(rml, localcontext = {},fout=None, images={}, path='.',title=None):
+def parseNode(rml, localcontext = {},fout=None, images=None, path='.',title=None):
+ if images is None:
+ images = {}
node = etree.XML(rml)
r = _rml_doc(node, localcontext, images, path, title=title)
fp = StringIO.StringIO()
r.render(fp)
return fp.getvalue()
-def parseString(rml, localcontext = {},fout=None, images={}, path='.',title=None):
+def parseString(rml, localcontext = {},fout=None, images=None, path='.',title=None):
+ if images is None:
+ images = {}
node = etree.XML(rml)
r = _rml_doc(node, localcontext, images, path, title=title)
if fout:
diff --git a/openerp/report/render/rml2txt/utils.py b/openerp/report/render/rml2txt/utils.py
index d967b64c53d..122411afb2d 100644
--- a/openerp/report/render/rml2txt/utils.py
+++ b/openerp/report/render/rml2txt/utils.py
@@ -112,7 +112,9 @@ def tuple_int_get(node, attr_name, default=None):
def bool_get(value):
return (str(value)=="1") or (value.lower()=='yes')
-def attr_get(node, attrs, dict={}):
+def attr_get(node, attrs, dict=None):
+ if dict is None:
+ dict = {}
res = {}
for name in attrs:
if node.get(name):
From 75b5fb12bf0a1003a33fb34fd9782cb4525167f6 Mon Sep 17 00:00:00 2001
From: niv-openerp
Date: Tue, 8 Nov 2011 17:38:24 +0100
Subject: [PATCH 030/106] [imp] nivified NumpadView
bzr revid: nicolas.vanhoren@openerp.com-20111108163824-scthlsj4ej2z5pp2
---
addons/point_of_sale/static/src/js/pos.js | 53 ++++++++++-------------
1 file changed, 24 insertions(+), 29 deletions(-)
diff --git a/addons/point_of_sale/static/src/js/pos.js b/addons/point_of_sale/static/src/js/pos.js
index 59c13e0553c..8f58122dd8b 100644
--- a/addons/point_of_sale/static/src/js/pos.js
+++ b/addons/point_of_sale/static/src/js/pos.js
@@ -163,7 +163,7 @@ openerp.point_of_sale = function(db) {
var pos;
var App, CashRegister, CashRegisterCollection, Category, CategoryCollection, CategoryView,
- NumpadState, NumpadView, Order, OrderButtonView, OrderCollection, OrderView, Orderline,
+ NumpadState, NumpadWidget, Order, OrderButtonView, OrderCollection, OrderView, Orderline,
OrderlineCollection, OrderlineView, PaymentButtonView, PaymentView, Paymentline,
PaymentlineCollection, PaymentlineView, PaypadView, Product, ProductCollection,
ProductListView, ProductView, ReceiptLineView, ReceiptView, Shop, ShopView, StepsView;
@@ -530,41 +530,36 @@ openerp.point_of_sale = function(db) {
Views
---
*/
- NumpadView = (function() {
- __extends(NumpadView, Backbone.View);
- function NumpadView() {
- NumpadView.__super__.constructor.apply(this, arguments);
- }
-
- NumpadView.prototype.initialize = function(options) {
- return this.state = options.state;
- };
- NumpadView.prototype.events = {
- 'click button#numpad-backspace': 'clickDeleteLastChar',
- 'click button#numpad-minus': 'clickSwitchSign',
- 'click button.number-char': 'clickAppendNewChar',
- 'click button.mode-button': 'clickChangeMode'
- };
- NumpadView.prototype.clickDeleteLastChar = function() {
+ NumpadWidget = db.web.Widget.extend({
+ init: function(parent, element_id, options) {
+ this._super(parent, element_id);
+ this.state = options.state;
+ },
+ start: function() {
+ this.$element.find('button#numpad-backspace').click(__bind(this.clickDeleteLastChar, this));
+ this.$element.find('button#numpad-minus').click(__bind(this.clickSwitchSign, this));
+ this.$element.find('button.number-char').click(__bind(this.clickAppendNewChar, this));
+ this.$element.find('button.mode-button').click(__bind(this.clickChangeMode, this));
+ },
+ clickDeleteLastChar: function() {
return this.state.deleteLastChar();
- };
- NumpadView.prototype.clickSwitchSign = function() {
+ },
+ clickSwitchSign: function() {
return this.state.switchSign();
- };
- NumpadView.prototype.clickAppendNewChar = function(event) {
+ },
+ clickAppendNewChar: function(event) {
var newChar;
newChar = event.currentTarget.innerText;
return this.state.appendNewChar(newChar);
- };
- NumpadView.prototype.clickChangeMode = function(event) {
+ },
+ clickChangeMode: function(event) {
var newMode;
$('.selected-mode').removeClass('selected-mode');
$(event.currentTarget).addClass('selected-mode');
newMode = event.currentTarget.attributes['data-mode'].nodeValue;
return this.state.changeMode(newMode);
- };
- return NumpadView;
- })();
+ }
+ });
/*
Gives access to the payment methods (aka. 'cash registers')
*/
@@ -1108,10 +1103,10 @@ openerp.point_of_sale = function(db) {
shop: this.shop,
el: $('#receipt-screen')
});
- this.numpadView = new NumpadView({
- state: this.numpadState,
- el: $('#numpad')
+ this.numpadView = new NumpadWidget(null, 'numpad', {
+ state: this.numpadState
});
+ this.numpadView.start();
return this.stepsView = new StepsView({
el: $('#steps')
});
From 87b823056fade5df1376ad2fc2426b10e325cc6e Mon Sep 17 00:00:00 2001
From: "Naresh (OpenERP)"
Date: Wed, 9 Nov 2011 11:39:30 +0530
Subject: [PATCH 031/106] [FIX]:remove log_id which does not have any lines to
log
bzr revid: nch@tinyerp.com-20111109060930-ti0gx3sed7a12329
---
addons/audittrail/audittrail.py | 3 +++
1 file changed, 3 insertions(+)
diff --git a/addons/audittrail/audittrail.py b/addons/audittrail/audittrail.py
index 79277bdf0d5..49a9850a3dd 100644
--- a/addons/audittrail/audittrail.py
+++ b/addons/audittrail/audittrail.py
@@ -206,6 +206,7 @@ class audittrail_objects_proxy(object_proxy):
model_pool = pool.get('ir.model')
field_pool = pool.get('ir.model.fields')
log_line_pool = pool.get('audittrail.log.line')
+ line_id = False
for line in lines:
field_obj = obj_pool._all_columns.get(line['name'])
assert field_obj, _("'%s' field does not exist in '%s' model" %(line['name'], model.model))
@@ -233,6 +234,8 @@ class audittrail_objects_proxy(object_proxy):
"field_description": field_obj.string
}
line_id = log_line_pool.create(cr, uid, vals)
+ if not line_id:
+ pool.get('audittrail.log').unlink(cr, uid, log_id)
return True
def start_log_process(self, cr, user_id, model, method, resource_data, pool, resource_pool):
From 0947c0e555f50d9e63e03c3e7d92fc4d4a7dec71 Mon Sep 17 00:00:00 2001
From: niv-openerp
Date: Wed, 9 Nov 2011 11:15:41 +0100
Subject: [PATCH 032/106] [imp] widgetified PaypadView
bzr revid: nicolas.vanhoren@openerp.com-20111109101541-akyu15jm6qfg7lr8
---
addons/point_of_sale/static/src/js/pos.js | 51 ++++++++++-------------
1 file changed, 23 insertions(+), 28 deletions(-)
diff --git a/addons/point_of_sale/static/src/js/pos.js b/addons/point_of_sale/static/src/js/pos.js
index 8f58122dd8b..0d86f7ecf8a 100644
--- a/addons/point_of_sale/static/src/js/pos.js
+++ b/addons/point_of_sale/static/src/js/pos.js
@@ -536,10 +536,10 @@ openerp.point_of_sale = function(db) {
this.state = options.state;
},
start: function() {
- this.$element.find('button#numpad-backspace').click(__bind(this.clickDeleteLastChar, this));
- this.$element.find('button#numpad-minus').click(__bind(this.clickSwitchSign, this));
- this.$element.find('button.number-char').click(__bind(this.clickAppendNewChar, this));
- this.$element.find('button.mode-button').click(__bind(this.clickChangeMode, this));
+ this.$element.find('button#numpad-backspace').click(_.bind(this.clickDeleteLastChar, this));
+ this.$element.find('button#numpad-minus').click(_.bind(this.clickSwitchSign, this));
+ this.$element.find('button.number-char').click(_.bind(this.clickAppendNewChar, this));
+ this.$element.find('button.mode-button').click(_.bind(this.clickChangeMode, this));
},
clickDeleteLastChar: function() {
return this.state.deleteLastChar();
@@ -563,19 +563,15 @@ openerp.point_of_sale = function(db) {
/*
Gives access to the payment methods (aka. 'cash registers')
*/
- PaypadView = (function() {
- __extends(PaypadView, Backbone.View);
- function PaypadView() {
- PaypadView.__super__.constructor.apply(this, arguments);
- }
-
- PaypadView.prototype.initialize = function(options) {
- return this.shop = options.shop;
- };
- PaypadView.prototype.events = {
- 'click button': 'performPayment'
- };
- PaypadView.prototype.performPayment = function(event) {
+ PaypadWidget = db.web.Widget.extend({
+ init: function(parent, element_id, options) {
+ this._super(parent, element_id);
+ this.shop = options.shop;
+ },
+ start: function() {
+ this.$element.find('button').click(_.bind(this.performPayment, this));
+ },
+ performPayment: function(event) {
var cashRegister, cashRegisterCollection, cashRegisterId;
/* set correct view */
$('.step-screen').hide();
@@ -587,17 +583,16 @@ openerp.point_of_sale = function(db) {
return (item.get('id')) === parseInt(cashRegisterId, 10);
}, this));
return (this.shop.get('selectedOrder')).addPaymentLine(cashRegister);
- };
- PaypadView.prototype.render = function() {
- $(this.el).empty();
+ },
+ display: function() {
+ this.$element.empty();
return (this.shop.get('cashRegisters')).each(__bind( function(cashRegister) {
- return $(this.el).append((new PaymentButtonView({
+ return this.$element.append((new PaymentButtonView({
model: cashRegister
})).render());
}, this));
- };
- return PaypadView;
- })();
+ }
+ });
PaymentButtonView = (function() {
__extends(PaymentButtonView, Backbone.View);
function PaymentButtonView() {
@@ -1085,11 +1080,11 @@ openerp.point_of_sale = function(db) {
this.productListView = new ProductListView({
shop: this.shop
});
- this.paypadView = new PaypadView({
- shop: this.shop,
- el: $('#paypad')
+ this.paypadView = new PaypadWidget(null, 'paypad', {
+ shop: this.shop
});
- this.paypadView.render();
+ this.paypadView.display();
+ this.paypadView.start();
this.orderView = new OrderView({
shop: this.shop,
numpadState: this.numpadState,
From c452e5ae0da2c409f540b730b4d581ea51492274 Mon Sep 17 00:00:00 2001
From: "Naresh (OpenERP)"
Date: Wed, 9 Nov 2011 15:57:29 +0530
Subject: [PATCH 033/106] [IMP]:previous fix
bzr revid: nch@tinyerp.com-20111109102729-a6c1ru7byniz9ggu
---
addons/audittrail/audittrail.py | 21 +++++++++------------
1 file changed, 9 insertions(+), 12 deletions(-)
diff --git a/addons/audittrail/audittrail.py b/addons/audittrail/audittrail.py
index 49a9850a3dd..b82d22f5450 100644
--- a/addons/audittrail/audittrail.py
+++ b/addons/audittrail/audittrail.py
@@ -206,21 +206,16 @@ class audittrail_objects_proxy(object_proxy):
model_pool = pool.get('ir.model')
field_pool = pool.get('ir.model.fields')
log_line_pool = pool.get('audittrail.log.line')
- line_id = False
for line in lines:
field_obj = obj_pool._all_columns.get(line['name'])
assert field_obj, _("'%s' field does not exist in '%s' model" %(line['name'], model.model))
field_obj = field_obj.column
old_value = line.get('old_value', '')
new_value = line.get('new_value', '')
- old_value_text = line.get('old_value_text', '')
- new_value_text = line.get('new_value_text', '')
search_models = [model.id]
if obj_pool._inherits:
search_models += model_pool.search(cr, uid, [('model', 'in', obj_pool._inherits.keys())])
field_id = field_pool.search(cr, uid, [('name', '=', line['name']), ('model_id', 'in', search_models)])
- if old_value_text == new_value_text:
- continue
if field_obj._type == 'many2one':
old_value = old_value and old_value[0] or old_value
new_value = new_value and new_value[0] or new_value
@@ -229,13 +224,11 @@ class audittrail_objects_proxy(object_proxy):
"field_id": field_id and field_id[0] or False,
"old_value": old_value,
"new_value": new_value,
- "old_value_text": old_value_text,
- "new_value_text": new_value_text,
+ "old_value_text": line.get('old_value_text', ''),
+ "new_value_text": line.get('new_value_text', ''),
"field_description": field_obj.string
}
line_id = log_line_pool.create(cr, uid, vals)
- if not line_id:
- pool.get('audittrail.log').unlink(cr, uid, log_id)
return True
def start_log_process(self, cr, user_id, model, method, resource_data, pool, resource_pool):
@@ -358,7 +351,8 @@ class audittrail_objects_proxy(object_proxy):
for resource in resource_data:
resource_id = resource['id']
vals.update({'res_id': resource_id})
- log_id = log_pool.create(cr, uid, vals)
+ if resource_id not in dict_to_use:
+ vals.update({'method': 'create'})
lines = []
for field in resource.keys():
if field in ('__last_update', 'id'):continue
@@ -378,8 +372,11 @@ class audittrail_objects_proxy(object_proxy):
'new_value_text': ret_val and ret_val or resource[field],
'old_value_text': resource_id in dict_to_use and dict_to_use[resource_id]['text'].get(field)
}
- lines.append(line)
- self.create_log_line(cr, uid, log_id, model, lines)
+ if line.get('new_value_text') != line.get('old_value_text'):
+ lines.append(line)
+ if lines:
+ log_id = log_pool.create(cr, uid, vals)
+ self.create_log_line(cr, uid, log_id, model, lines)
return True
inline_process_new_data(res_ids, model, old_values)
return res
From 526d8e32dd775bd3844adcc57128128c1f70235f Mon Sep 17 00:00:00 2001
From: niv-openerp
Date: Wed, 9 Nov 2011 16:11:59 +0100
Subject: [PATCH 034/106] [imp] widgetified payment button + strenghtened core
framework for easier compatiblity with backbone
bzr revid: nicolas.vanhoren@openerp.com-20111109151159-zruqnyb0kgu9oqpz
---
addons/point_of_sale/static/src/js/pos.js | 29 ++++++++++-------------
1 file changed, 12 insertions(+), 17 deletions(-)
diff --git a/addons/point_of_sale/static/src/js/pos.js b/addons/point_of_sale/static/src/js/pos.js
index 0d86f7ecf8a..d9e5575ad3f 100644
--- a/addons/point_of_sale/static/src/js/pos.js
+++ b/addons/point_of_sale/static/src/js/pos.js
@@ -584,30 +584,25 @@ openerp.point_of_sale = function(db) {
}, this));
return (this.shop.get('selectedOrder')).addPaymentLine(cashRegister);
},
- display: function() {
+ render_element: function() {
this.$element.empty();
return (this.shop.get('cashRegisters')).each(__bind( function(cashRegister) {
- return this.$element.append((new PaymentButtonView({
- model: cashRegister
- })).render());
+ var button = new PaymentButtonWidget();
+ button.model = cashRegister;
+ button.appendTo(this.$element);
}, this));
}
});
- PaymentButtonView = (function() {
- __extends(PaymentButtonView, Backbone.View);
- function PaymentButtonView() {
- PaymentButtonView.__super__.constructor.apply(this, arguments);
- }
-
- PaymentButtonView.prototype.template = qweb_template('pos-payment-button-template');
- PaymentButtonView.prototype.render = function() {
- return $(this.el).html(this.template({
+ PaymentButtonWidget = db.web.Widget.extend({
+ template_fct: qweb_template('pos-payment-button-template'),
+ render_element: function() {
+ this.$element.html(this.template_fct({
id: this.model.get('id'),
name: (this.model.get('journal_id'))[1]
}));
- };
- return PaymentButtonView;
- })();
+ return this;
+ }
+ });
/*
There are 3 steps in a POS workflow:
1. prepare the order (i.e. chose products, quantities etc.)
@@ -1083,7 +1078,7 @@ openerp.point_of_sale = function(db) {
this.paypadView = new PaypadWidget(null, 'paypad', {
shop: this.shop
});
- this.paypadView.display();
+ this.paypadView.render_element();
this.paypadView.start();
this.orderView = new OrderView({
shop: this.shop,
From 5503571ace9f877b8481a4719795e21488c1284b Mon Sep 17 00:00:00 2001
From: niv-openerp
Date: Wed, 9 Nov 2011 16:19:41 +0100
Subject: [PATCH 035/106] [imp] widgetified steps view
bzr revid: nicolas.vanhoren@openerp.com-20111109151941-crdnkufr4nxtpccg
---
addons/point_of_sale/static/src/js/pos.js | 32 +++++++++--------------
1 file changed, 13 insertions(+), 19 deletions(-)
diff --git a/addons/point_of_sale/static/src/js/pos.js b/addons/point_of_sale/static/src/js/pos.js
index d9e5575ad3f..92769f6deeb 100644
--- a/addons/point_of_sale/static/src/js/pos.js
+++ b/addons/point_of_sale/static/src/js/pos.js
@@ -611,27 +611,22 @@ openerp.point_of_sale = function(db) {
It should be possible to go back to any step as long as step 3 hasn't been completed.
Modifying an order after validation shouldn't be allowed.
*/
- StepsView = (function() {
- __extends(StepsView, Backbone.View);
- function StepsView() {
- StepsView.__super__.constructor.apply(this, arguments);
- }
-
- StepsView.prototype.initialize = function(options) {
- return this.step = "products";
- };
- StepsView.prototype.events = {
- 'click input.step-button': 'clickChangeStep'
- };
- StepsView.prototype.clickChangeStep = function(event) {
+ StepsWidget = db.web.Widget.extend({
+ init: function(parent, element_id) {
+ this._super(parent, element_id);
+ this.step = "products";
+ },
+ start: function() {
+ this.$element.find('input.step-button').click(_.bind(this.clickChangeStep, this));
+ },
+ clickChangeStep: function(event) {
var newStep;
newStep = event.currentTarget.attributes['data-step'].nodeValue;
$('.step-screen').hide();
$('#' + newStep + '-screen').show();
return this.step = newStep;
- };
- return StepsView;
- })();
+ }
+ });
/*
Shopping carts.
*/
@@ -1097,9 +1092,8 @@ openerp.point_of_sale = function(db) {
state: this.numpadState
});
this.numpadView.start();
- return this.stepsView = new StepsView({
- el: $('#steps')
- });
+ this.stepsView = new StepsWidget(null, 'steps');
+ this.stepsView.start();
};
ShopView.prototype.events = {
'click button#neworder-button': 'createNewOrder'
From 15baa78e04767585a636758be4aa87186278c423 Mon Sep 17 00:00:00 2001
From: niv-openerp
Date: Wed, 9 Nov 2011 16:38:02 +0100
Subject: [PATCH 036/106] [imp] widgetified order line
bzr revid: nicolas.vanhoren@openerp.com-20111109153802-ghctc2spt882b9nk
---
addons/point_of_sale/static/src/js/pos.js | 66 +++++++++++------------
1 file changed, 32 insertions(+), 34 deletions(-)
diff --git a/addons/point_of_sale/static/src/js/pos.js b/addons/point_of_sale/static/src/js/pos.js
index 92769f6deeb..061f8b7f383 100644
--- a/addons/point_of_sale/static/src/js/pos.js
+++ b/addons/point_of_sale/static/src/js/pos.js
@@ -164,9 +164,9 @@ openerp.point_of_sale = function(db) {
var App, CashRegister, CashRegisterCollection, Category, CategoryCollection, CategoryView,
NumpadState, NumpadWidget, Order, OrderButtonView, OrderCollection, OrderView, Orderline,
- OrderlineCollection, OrderlineView, PaymentButtonView, PaymentView, Paymentline,
- PaymentlineCollection, PaymentlineView, PaypadView, Product, ProductCollection,
- ProductListView, ProductView, ReceiptLineView, ReceiptView, Shop, ShopView, StepsView;
+ OrderlineCollection, OrderlineWidget, PaymentButtonWidget, PaymentView, Paymentline,
+ PaymentlineCollection, PaymentlineView, PaypadWidget, Product, ProductCollection,
+ ProductListView, ProductView, ReceiptLineView, ReceiptView, Shop, ShopView, StepsWidget;
/*
---
@@ -630,45 +630,41 @@ openerp.point_of_sale = function(db) {
/*
Shopping carts.
*/
- OrderlineView = (function() {
- __extends(OrderlineView, Backbone.View);
- function OrderlineView() {
- OrderlineView.__super__.constructor.apply(this, arguments);
- }
-
- OrderlineView.prototype.tagName = 'tr';
- OrderlineView.prototype.template = qweb_template('pos-orderline-template');
- OrderlineView.prototype.initialize = function(options) {
+ OrderlineWidget = db.web.Widget.extend({
+ tagName: 'tr',
+ template_fct: qweb_template('pos-orderline-template'),
+ init: function(parent, element_id, options) {
+ this._super(parent, element_id);
+ this.model = options.model;
this.model.bind('change', __bind( function() {
- $(this.el).hide();
- return this.render();
+ this.$element.hide();
+ this.render_element();
}, this));
this.model.bind('remove', __bind( function() {
- return $(this.el).remove();
+ return this.$element.remove();
}, this));
this.order = options.order;
- return this.numpadState = options.numpadState;
- };
- OrderlineView.prototype.events = {
- 'click': 'clickHandler'
- };
- OrderlineView.prototype.clickHandler = function() {
+ this.numpadState = options.numpadState;
+ },
+ start: function() {
+ this.$element.click(_.bind(this.clickHandler, this));
+ },
+ clickHandler: function() {
this.numpadState.reset();
return this.select();
- };
- OrderlineView.prototype.render = function() {
+ },
+ render_element: function() {
this.select();
- return $(this.el).html(this.template(this.model.toJSON())).fadeIn(400, function() {
+ return this.$element.html(this.template_fct(this.model.toJSON())).fadeIn(400, function() {
return $('#current-order').scrollTop($(this).offset().top);
});
- };
- OrderlineView.prototype.select = function() {
+ },
+ select: function() {
$('tr.selected').removeClass('selected');
- $(this.el).addClass('selected');
+ this.$element.addClass('selected');
return this.order.selected = this.model;
- };
- return OrderlineView;
- })();
+ },
+ });
OrderView = (function() {
__extends(OrderView, Backbone.View);
function OrderView() {
@@ -693,21 +689,23 @@ openerp.point_of_sale = function(db) {
return this.currentOrderLines.bind('remove', this.render, this);
};
OrderView.prototype.addLine = function(newLine) {
- $(this.el).append((new OrderlineView({
+ var line = new OrderlineWidget(null, null, {
model: newLine,
order: this.shop.get('selectedOrder'),
numpadState: this.numpadState
- })).render());
+ });
+ line.appendTo($(this.el));
return this.updateSummary();
};
OrderView.prototype.render = function() {
$(this.el).empty();
this.currentOrderLines.each(__bind( function(orderLine) {
- return $(this.el).append((new OrderlineView({
+ var line = new OrderlineWidget(null, null, {
model: orderLine,
order: this.shop.get('selectedOrder'),
numpadState: this.numpadState
- })).render());
+ });
+ line.appendTo($(this.el));
}, this));
return this.updateSummary();
};
From efc28d1925c1f37526215f65b27b534026ae7beb Mon Sep 17 00:00:00 2001
From: niv-openerp
Date: Wed, 9 Nov 2011 17:08:41 +0100
Subject: [PATCH 037/106] [imp] widgetified order view
bzr revid: nicolas.vanhoren@openerp.com-20111109160841-3u7l2bqmysg065n1
---
addons/point_of_sale/static/src/js/pos.js | 55 +++++++++++------------
1 file changed, 25 insertions(+), 30 deletions(-)
diff --git a/addons/point_of_sale/static/src/js/pos.js b/addons/point_of_sale/static/src/js/pos.js
index 061f8b7f383..d9ed87f4ae9 100644
--- a/addons/point_of_sale/static/src/js/pos.js
+++ b/addons/point_of_sale/static/src/js/pos.js
@@ -163,7 +163,7 @@ openerp.point_of_sale = function(db) {
var pos;
var App, CashRegister, CashRegisterCollection, Category, CategoryCollection, CategoryView,
- NumpadState, NumpadWidget, Order, OrderButtonView, OrderCollection, OrderView, Orderline,
+ NumpadState, NumpadWidget, Order, OrderButtonView, OrderCollection, OrderWidget, Orderline,
OrderlineCollection, OrderlineWidget, PaymentButtonWidget, PaymentView, Paymentline,
PaymentlineCollection, PaymentlineView, PaypadWidget, Product, ProductCollection,
ProductListView, ProductView, ReceiptLineView, ReceiptView, Shop, ShopView, StepsWidget;
@@ -665,51 +665,47 @@ openerp.point_of_sale = function(db) {
return this.order.selected = this.model;
},
});
- OrderView = (function() {
- __extends(OrderView, Backbone.View);
- function OrderView() {
- OrderView.__super__.constructor.apply(this, arguments);
- }
-
- OrderView.prototype.initialize = function(options) {
+ OrderWidget = db.web.Widget.extend({
+ init: function(parent, element_id, options) {
+ this._super(parent, element_id);
this.shop = options.shop;
this.numpadState = options.numpadState;
this.shop.bind('change:selectedOrder', this.changeSelectedOrder, this);
- return this.bindOrderLineEvents();
- };
- OrderView.prototype.changeSelectedOrder = function() {
+ this.bindOrderLineEvents();
+ },
+ changeSelectedOrder: function() {
this.currentOrderLines.unbind();
this.bindOrderLineEvents();
- return this.render();
- };
- OrderView.prototype.bindOrderLineEvents = function() {
+ return this.render_element();
+ },
+ bindOrderLineEvents: function() {
this.currentOrderLines = (this.shop.get('selectedOrder')).get('orderLines');
this.currentOrderLines.bind('add', this.addLine, this);
- this.currentOrderLines.bind('change', this.render, this);
+ this.currentOrderLines.bind('change', this.render_element, this);
return this.currentOrderLines.bind('remove', this.render, this);
- };
- OrderView.prototype.addLine = function(newLine) {
+ },
+ addLine: function(newLine) {
var line = new OrderlineWidget(null, null, {
model: newLine,
order: this.shop.get('selectedOrder'),
numpadState: this.numpadState
});
- line.appendTo($(this.el));
+ line.appendTo(this.$element);
return this.updateSummary();
- };
- OrderView.prototype.render = function() {
- $(this.el).empty();
+ },
+ render_element: function() {
+ this.$element.empty();
this.currentOrderLines.each(__bind( function(orderLine) {
var line = new OrderlineWidget(null, null, {
model: orderLine,
order: this.shop.get('selectedOrder'),
numpadState: this.numpadState
});
- line.appendTo($(this.el));
+ line.appendTo(this.$element);
}, this));
return this.updateSummary();
- };
- OrderView.prototype.updateSummary = function() {
+ },
+ updateSummary: function() {
var currentOrder, tax, total, totalTaxExcluded;
currentOrder = this.shop.get('selectedOrder');
total = currentOrder.getTotal();
@@ -718,9 +714,8 @@ openerp.point_of_sale = function(db) {
$('#subtotal').html(totalTaxExcluded.toFixed(2)).hide().fadeIn();
$('#tax').html(tax.toFixed(2)).hide().fadeIn();
return $('#total').html(total.toFixed(2)).hide().fadeIn();
- };
- return OrderView;
- })();
+ },
+ });
/*
"Products" step.
*/
@@ -1073,11 +1068,11 @@ openerp.point_of_sale = function(db) {
});
this.paypadView.render_element();
this.paypadView.start();
- this.orderView = new OrderView({
+ this.orderView = new OrderWidget(null, 'current-order-content', {
shop: this.shop,
- numpadState: this.numpadState,
- el: $('#current-order-content')
+ numpadState: this.numpadState
});
+ this.orderView.start();
this.paymentView = new PaymentView({
shop: this.shop,
el: $('#payment-screen')
From c83d6d88a0b2b4a0e4d6db323a76eb2950e84f06 Mon Sep 17 00:00:00 2001
From: Xavier Morel
Date: Tue, 15 Nov 2011 13:00:28 +0100
Subject: [PATCH 038/106] [IMP] selection of fields to aggregate in read_group
bzr revid: xmo@openerp.com-20111115120028-wal8o839s4u427m3
---
openerp/osv/orm.py | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py
index 6c4ac13ec58..bc562b7823c 100644
--- a/openerp/osv/orm.py
+++ b/openerp/osv/orm.py
@@ -2407,7 +2407,6 @@ class BaseModel(object):
# TODO it seems fields_get can be replaced by _all_columns (no need for translation)
fget = self.fields_get(cr, uid, fields)
- float_int_fields = filter(lambda x: fget[x]['type'] in ('float', 'integer'), fields)
flist = ''
group_count = group_by = groupby
if groupby:
@@ -2423,17 +2422,18 @@ class BaseModel(object):
raise except_orm(_('Invalid group_by'),
_('Invalid group_by specification: "%s".\nA group_by specification must be a list of valid fields.')%(groupby,))
-
- fields_pre = [f for f in float_int_fields if
- f == self.CONCURRENCY_CHECK_FIELD
- or (f in self._columns and getattr(self._columns[f], '_classic_write'))]
- for f in fields_pre:
- if f not in ['id', 'sequence']:
- group_operator = fget[f].get('group_operator', 'sum')
- if flist:
- flist += ', '
- qualified_field = '"%s"."%s"' % (self._table, f)
- flist += "%s(%s) AS %s" % (group_operator, qualified_field, f)
+ aggregated_fields = [
+ f for f in fields
+ if f not in ('id', 'sequence')
+ if fget[f]['type'] in ('integer', 'float')
+ if f == self.CONCURRENCY_CHECK_FIELD
+ or (f in self._columns and getattr(self._columns[f], '_classic_write'))]
+ for f in aggregated_fields:
+ group_operator = fget[f].get('group_operator', 'sum')
+ if flist:
+ flist += ', '
+ qualified_field = '"%s"."%s"' % (self._table, f)
+ flist += "%s(%s) AS %s" % (group_operator, qualified_field, f)
gb = groupby and (' GROUP BY ' + qualified_groupby_field) or ''
@@ -2486,7 +2486,7 @@ class BaseModel(object):
if (pos
Date: Wed, 16 Nov 2011 12:10:50 +0530
Subject: [PATCH 039/106] [IMP]:added Doc string
bzr revid: nch@tinyerp.com-20111116064050-cve3d7pcx8pdrsv0
---
addons/audittrail/audittrail.py | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/addons/audittrail/audittrail.py b/addons/audittrail/audittrail.py
index b82d22f5450..3d7bf8587f7 100644
--- a/addons/audittrail/audittrail.py
+++ b/addons/audittrail/audittrail.py
@@ -179,7 +179,16 @@ class audittrail_objects_proxy(object_proxy):
If the field is a many2one, it returns the name.
If it's a one2many or a many2many, it returns a list of name.
In other cases, it just returns the value.
+ @param cr: the current row, from the database cursor,
+ @param uid: the current user’s ID for security checks,
+ @param pool: current db's pooler object.
+ @param resource_pool: pooler object of the model who's values are being changed.
+ @param field: for which the text value is to be returned.
+ @param value: value of the field.
+ @param recursive: True or False, True will repeat the process recursively
+ @return: string value or a list of values(for O2M/M2M)
"""
+
field_obj = (resource_pool._all_columns.get(field)).column
if field_obj._type in ('one2many','many2many'):
if recursive:
@@ -232,6 +241,18 @@ class audittrail_objects_proxy(object_proxy):
return True
def start_log_process(self, cr, user_id, model, method, resource_data, pool, resource_pool):
+ """
+ Logging function: This function performs the logging operation for create/read/unlink operation
+ :@param cr: the current row, from the database cursor,
+ :@param user_id: the current user’s ID,
+ :param model: Object which values are being changed
+ :param method: method to log: create, read, unlink
+ :param resource_data: list of data modified for the model
+ :@param pool: current db's pooler object.
+ :@param resource_pool: pooler object of the model who's values are being changed.
+ :return:True
+
+ """
key1 = '%s_value'%(method == 'create' and 'new' or 'old')
key2 = '%s_value_text'%(method == 'create' and 'new' or 'old')
uid = 1
From f2c68745f0d3fbdcbf93eb2b39da2f61d35bb717 Mon Sep 17 00:00:00 2001
From: "Naresh (OpenERP)"
Date: Thu, 17 Nov 2011 12:39:05 +0530
Subject: [PATCH 040/106] [FIX/IMP/REF]:1::fix copy,unlink,workflow
actions,refactored the way data was processed and logged for the actions and
workflow actions.
bzr revid: nch@tinyerp.com-20111117070905-14b23ir45vx7rg7x
---
addons/audittrail/audittrail.py | 118 ++++++++++++++------------------
1 file changed, 52 insertions(+), 66 deletions(-)
diff --git a/addons/audittrail/audittrail.py b/addons/audittrail/audittrail.py
index 3d7bf8587f7..60a5aa4f9be 100644
--- a/addons/audittrail/audittrail.py
+++ b/addons/audittrail/audittrail.py
@@ -194,7 +194,7 @@ class audittrail_objects_proxy(object_proxy):
if recursive:
self.log_fct(cr, uid, field_obj._obj, method, None, value, 'child_relation_log')
data = pool.get(field_obj._obj).name_get(cr, uid, value)
- #return the modifications on *2many fields as a list of names
+ #return the modifications on x2many fields as a list of names
return map(lambda x:x[1], data)
elif field_obj._type == 'many2one':
#return the modifications on a many2one field as the name of the value
@@ -287,7 +287,6 @@ class audittrail_objects_proxy(object_proxy):
pool = pooler.get_pool(cr.dbname)
resource_pool = pool.get(model)
model_pool = pool.get('ir.model')
- log_pool = pool.get('audittrail.log')
model_ids = model_pool.search(cr, 1, [('model', '=', model)])
model_id = model_ids and model_ids[0] or False
assert model_id, _("'%s' Model does not exist..." %(model))
@@ -335,74 +334,61 @@ class audittrail_objects_proxy(object_proxy):
if isinstance(res_ids, (long, int)):
res_ids = [res_ids]
if res_ids:
- x2m_old_values = {}
- old_values = {}
- def inline_process_old_data(res_ids, model, model_id=False):
- resource_pool = pool.get(model)
- resource_data = resource_pool.read(cr, uid, res_ids)
- _old_values = {}
- for resource in resource_data:
- _old_values_text = {}
- _old_value = {}
- resource_id = resource['id']
- for field in resource.keys():
- if field in ('__last_update', 'id'):continue
- field_obj = (resource_pool._all_columns.get(field)).column
- if field_obj._type in ('one2many','many2many'):
- if self.check_rules(cr, uid, field_obj._obj, method):
- x2m_model_ids = model_pool.search(cr, 1, [('model', '=', field_obj._obj)])
- x2m_model_id = x2m_model_ids and x2m_model_ids[0] or False
- assert x2m_model_id, _("'%s' Model does not exist..." %(field_obj._obj))
- x2m_model = model_pool.browse(cr, uid, x2m_model_id)
- x2m_old_values.update(inline_process_old_data(resource[field], field_obj._obj, x2m_model))
- ret_val = self.get_value_text(cr, uid, pool, resource_pool, method, field, resource[field], False)
- _old_value[field] = resource[field]
- _old_values_text[field] = ret_val and ret_val or resource[field]
- _old_values[resource_id] = {'text':_old_values_text, 'value': _old_value}
- if model_id:
- _old_values[resource_id].update({'model_id':model_id})
- return _old_values
- old_values.update(inline_process_old_data(res_ids, model.model))
+ old_values = self.process_data(cr, uid_orig, pool, res_ids, model, method, type='old')
res = fct_src(cr, uid_orig, model.model, method, *args)
+ if method == 'copy':
+ res_ids = [res]
if res_ids:
- def inline_process_new_data(res_ids, model, dict_to_use={}):
- resource_pool = pool.get(model.model)
- resource_data = resource_pool.read(cr, uid, res_ids)
- vals = {'method': method,'object_id': model.id,'user_id': uid_orig }
- for resource in resource_data:
- resource_id = resource['id']
- vals.update({'res_id': resource_id})
- if resource_id not in dict_to_use:
- vals.update({'method': 'create'})
- lines = []
- for field in resource.keys():
- if field in ('__last_update', 'id'):continue
- field_obj = (resource_pool._all_columns.get(field)).column
- if field_obj._type in ('one2many','many2many'):
- if self.check_rules(cr, uid, field_obj._obj, method):
- x2m_model_ids = model_pool.search(cr, 1, [('model', '=', field_obj._obj)])
- x2m_model_id = x2m_model_ids and x2m_model_ids[0] or False
- assert x2m_model_id, _("'%s' Model does not exist..." %(field_obj._obj))
- x2m_model = model_pool.browse(cr, uid, x2m_model_id)
- inline_process_new_data(resource[field], x2m_model, x2m_old_values)
- ret_val = self.get_value_text(cr, uid, pool, resource_pool, method, field, resource[field], False)
- line = {
- 'name': field,
- 'new_value': resource[field],
- 'old_value': resource_id in dict_to_use and dict_to_use[resource_id]['value'].get(field),
- 'new_value_text': ret_val and ret_val or resource[field],
- 'old_value_text': resource_id in dict_to_use and dict_to_use[resource_id]['text'].get(field)
- }
- if line.get('new_value_text') != line.get('old_value_text'):
- lines.append(line)
- if lines:
- log_id = log_pool.create(cr, uid, vals)
- self.create_log_line(cr, uid, log_id, model, lines)
- return True
- inline_process_new_data(res_ids, model, old_values)
+ self.process_data(cr, uid_orig, pool, res_ids, model, method, old_values)
return res
return True
-
+
+ def process_data(self, cr, uid_orig, pool, res_ids, model, method, original_values={}, type='new'):
+ resource_pool = pool.get(model.model)
+ resource_data = resource_pool.read(cr, 1, res_ids)
+ _old_values = {}
+ for resource in resource_data:
+ _old_values_text = {}
+ _old_value = {}
+ resource_id = resource['id']
+ if type == 'new':
+ vals = {'method': method,'object_id': model.id,'user_id': uid_orig }
+ vals.update({'res_id': resource_id})
+ if resource_id not in original_values and method !='copy':
+ vals.update({'method': 'create'})
+ lines = []
+ for field in resource:
+ if field in ('__last_update', 'id'):continue
+ field_obj = (resource_pool._all_columns.get(field)).column
+ if field_obj._type in ('one2many','many2many'):
+ if self.check_rules(cr, 1, field_obj._obj, method):
+ x2m_model_ids = pool.get('ir.model').search(cr, 1, [('model', '=', field_obj._obj)])
+ x2m_model_id = x2m_model_ids and x2m_model_ids[0] or False
+ assert x2m_model_id, _("'%s' Model does not exist..." %(field_obj._obj))
+ x2m_model = pool.get('ir.model').browse(cr, 1, x2m_model_id)
+ _old_values[field] = self.process_data(cr, 1, pool, resource[field], x2m_model, method, original_values.get(field,{}), type=type)
+ ret_val = self.get_value_text(cr, 1, pool, resource_pool, method, field, resource[field], False)
+ if type == 'new':
+ line = {
+ 'name': field,
+ 'new_value': resource[field],
+ 'old_value': resource_id in original_values and original_values[resource_id]['value'].get(field),
+ 'new_value_text': ret_val and ret_val or resource[field],
+ 'old_value_text': resource_id in original_values and original_values[resource_id]['text'].get(field)
+ }
+ if line.get('new_value_text') != line.get('old_value_text'):
+ lines.append(line)
+ else:
+ _old_value[field] = resource[field]
+ _old_values_text[field] = ret_val and ret_val or resource[field]
+ if type == 'new':
+ if lines:
+ log_id = pool.get('audittrail.log').create(cr, 1, vals)
+ self.create_log_line(cr, 1, log_id, model, lines)
+ else:
+ _old_values[resource_id] = {'text':_old_values_text, 'value': _old_value}
+ return _old_values
+
def check_rules(self, cr, uid, model, method):
pool = pooler.get_pool(cr.dbname)
# Check if auditrails is installed for that db and then if one rule match
From 98f060b12861fda6f29e9a0b9d94a11d767d5fe4 Mon Sep 17 00:00:00 2001
From: "Naresh (OpenERP)"
Date: Thu, 17 Nov 2011 12:55:18 +0530
Subject: [PATCH 041/106] [IMP]:added doc string for missing methods
bzr revid: nch@tinyerp.com-20111117072518-iohc292j52qke927
---
addons/audittrail/audittrail.py | 54 ++++++++++++++++++++++++---------
1 file changed, 39 insertions(+), 15 deletions(-)
diff --git a/addons/audittrail/audittrail.py b/addons/audittrail/audittrail.py
index 60a5aa4f9be..9c7ea06fad5 100644
--- a/addons/audittrail/audittrail.py
+++ b/addons/audittrail/audittrail.py
@@ -207,7 +207,7 @@ class audittrail_objects_proxy(object_proxy):
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
- @param model: Object who's values are being changed
+ @param model: Object whose values are being changed
@param lines: List of values for line is to be created
"""
pool = pooler.get_pool(cr.dbname)
@@ -243,14 +243,14 @@ class audittrail_objects_proxy(object_proxy):
def start_log_process(self, cr, user_id, model, method, resource_data, pool, resource_pool):
"""
Logging function: This function performs the logging operation for create/read/unlink operation
- :@param cr: the current row, from the database cursor,
- :@param user_id: the current user’s ID,
- :param model: Object which values are being changed
- :param method: method to log: create, read, unlink
- :param resource_data: list of data modified for the model
- :@param pool: current db's pooler object.
- :@param resource_pool: pooler object of the model who's values are being changed.
- :return:True
+ @param cr: the current row, from the database cursor,
+ @param user_id: the current user’s ID,
+ param model: Object whose values are being changed
+ param method: method to log: create, read, unlink
+ param resource_data: list of data modified for the model
+ @param pool: current db's pooler object.
+ @param resource_pool: pooler object of the model who's values are being changed.
+ return:True
"""
key1 = '%s_value'%(method == 'create' and 'new' or 'old')
@@ -276,11 +276,11 @@ class audittrail_objects_proxy(object_proxy):
def log_fct(self, cr, uid, model, method, fct_src, *args):
"""
Logging function: This function is performing the logging operation
- :param model: Object which values are being changed
- :param method: method to log: create, read, write, unlink
- :param fct_src: execute method of Object proxy
+ @param model: Object whose values are being changed
+ @param method: method to log: create, read, write, unlink
+ @param fct_src: execute method of Object proxy
- :return: Returns result as per method of Object proxy
+ @return: Returns result as per method of Object proxy
"""
uid_orig = uid
uid = 1
@@ -344,6 +344,22 @@ class audittrail_objects_proxy(object_proxy):
return True
def process_data(self, cr, uid_orig, pool, res_ids, model, method, original_values={}, type='new'):
+ """
+ This is specially created to log actions and workflow actions on an object recursively
+ processes and iterates recursively old data (i.e before the method was executed )
+ and stores it in a dict then this dict is used to compare with the new data
+ (i.e after the method execution) and log the changes.
+
+ @param cr: the current row, from the database cursor,
+ @param uid_orig: the current user’s ID,
+ @param pool: current db's pooler object.
+ @param res_ids: Id's of resource to be logged/compared.
+ @param model: Object whose values are being changed
+ @param method: method to log: create, read, unlink,write,actions,workflow actions
+ @param original_values: dict of values of res_ids read before execution of the method only when type is 'new'
+ @param type: Either of 'new' or 'old' to know which data to process.
+ @return: dict of values
+ """
resource_pool = pool.get(model.model)
resource_data = resource_pool.read(cr, 1, res_ids)
_old_values = {}
@@ -390,15 +406,23 @@ class audittrail_objects_proxy(object_proxy):
return _old_values
def check_rules(self, cr, uid, model, method):
+ """
+ Checks if auditrails is installed for that db and then if one rule match
+ @param cr: the current row, from the database cursor,
+ @param uid: the current user’s ID,
+ @param model: Object whose values are being changed
+ @param method: method to log: create, read, unlink,write,actions,workflow actions
+ @return: True or False
+ """
+
pool = pooler.get_pool(cr.dbname)
- # Check if auditrails is installed for that db and then if one rule match
if 'audittrail.rule' in pool.models:
model_ids = pool.get('ir.model').search(cr, 1, [('model', '=', model)])
model_id = model_ids and model_ids[0] or False
if model_id:
rule_ids = pool.get('audittrail.rule').search(cr, 1, [('object_id', '=', model_id), ('state', '=', 'subscribed')])
for rule in pool.get('audittrail.rule').read(cr, 1, rule_ids, ['user_id','log_read','log_write','log_create','log_unlink','log_action','log_workflow']):
- if len(rule['user_id'])==0 or uid in rule['user_id']:
+ if len(rule['user_id']) == 0 or uid in rule['user_id']:
if rule.get('log_'+method,0):
return True
elif method not in ('default_get','read','fields_view_get','fields_get','search','search_count','name_search','name_get','get','request_get', 'get_sc', 'unlink', 'write', 'create'):
From 48bd70a64a99239c59057e44ef263a9136de8091 Mon Sep 17 00:00:00 2001
From: niv-openerp
Date: Thu, 17 Nov 2011 13:09:56 +0530
Subject: [PATCH 042/106] [imp] nivified category view
bzr revid: nicolas.vanhoren@openerp.com-20111117073956-m0u6ehdd0lg9o71g
---
addons/point_of_sale/static/src/js/pos.js | 52 +++++++++++------------
1 file changed, 24 insertions(+), 28 deletions(-)
diff --git a/addons/point_of_sale/static/src/js/pos.js b/addons/point_of_sale/static/src/js/pos.js
index d9ed87f4ae9..609641fc913 100644
--- a/addons/point_of_sale/static/src/js/pos.js
+++ b/addons/point_of_sale/static/src/js/pos.js
@@ -719,25 +719,20 @@ openerp.point_of_sale = function(db) {
/*
"Products" step.
*/
- CategoryView = (function() {
- __extends(CategoryView, Backbone.View);
- function CategoryView() {
- CategoryView.__super__.constructor.apply(this, arguments);
- }
-
- CategoryView.prototype.events = {
- 'click .oe-pos-categories-list a': 'changeCategory'
- };
-
- CategoryView.prototype.template = qweb_template('pos-category-template');
- CategoryView.prototype.render = function(ancestors, children) {
+ CategoryWidget = db.web.Widget.extend({
+ start: function() {
+ this.$element.find(".oe-pos-categories-list a").click(_.bind(this.changeCategory, this));
+ },
+ template_fct: qweb_template('pos-category-template'),
+ render_element: function() {
+ var self = this;
var c;
- return $(this.el).html(this.template({
+ this.$element.html(this.template_fct({
breadcrumb: (function() {
var _i, _len, _results;
_results = [];
- for (_i = 0, _len = ancestors.length; _i < _len; _i++) {
- c = ancestors[_i];
+ for (_i = 0, _len = self.ancestors.length; _i < _len; _i++) {
+ c = self.ancestors[_i];
_results.push(pos.categories[c]);
}
return _results;
@@ -745,20 +740,20 @@ openerp.point_of_sale = function(db) {
categories: (function() {
var _i, _len, _results;
_results = [];
- for (_i = 0, _len = children.length; _i < _len; _i++) {
- c = children[_i];
+ for (_i = 0, _len = self.children.length; _i < _len; _i++) {
+ c = self.children[_i];
_results.push(pos.categories[c]);
}
return _results;
})()
}));
- };
- CategoryView.prototype.changeCategory = function(a) {
+ },
+ changeCategory: function(a) {
var id = $(a.target).data("category-id");
- this.trigger("changeCategory", id);
- };
- return CategoryView;
- })();
+ this.on_change_category(id);
+ },
+ on_change_category: function(id) {},
+ });
ProductView = (function() {
__extends(ProductView, Backbone.View);
function ProductView() {
@@ -1121,10 +1116,9 @@ openerp.point_of_sale = function(db) {
shop: this.shop,
el: $element
});
- this.categoryView = new CategoryView;
- this.categoryView.bind("changeCategory", this.category, this);
+ this.categoryView = new CategoryWidget(null, 'products-screen');
+ this.categoryView.on_change_category.add_last(_.bind(this.category, this));
this.category();
- return this.categoryView;
};
App.prototype.category = function(id) {
var c, products;
@@ -1132,8 +1126,10 @@ openerp.point_of_sale = function(db) {
id = 0;
}
c = pos.categories[id];
- $('#products-screen').html(this.categoryView.render(c.ancestors, c.children));
- this.categoryView.delegateEvents();
+ this.categoryView.ancestors = c.ancestors;
+ this.categoryView.children = c.children;
+ this.categoryView.render_element();
+ this.categoryView.start();
products = pos.store.get('product.product').filter( function(p) {
var _ref;
return _ref = p.pos_categ_id[0], __indexOf.call(c.subtree, _ref) >= 0;
From 9589ee8d348dab8d76dd1837695ce7a90005912d Mon Sep 17 00:00:00 2001
From: "Naresh (OpenERP)"
Date: Thu, 17 Nov 2011 14:14:38 +0530
Subject: [PATCH 043/106] [FIX]:fix useless creat of log record for 'x2M' in
read operation
bzr revid: nch@tinyerp.com-20111117084438-fx63kcqx3my59sxa
---
addons/audittrail/audittrail.py | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/addons/audittrail/audittrail.py b/addons/audittrail/audittrail.py
index 9c7ea06fad5..47a0122b035 100644
--- a/addons/audittrail/audittrail.py
+++ b/addons/audittrail/audittrail.py
@@ -258,8 +258,6 @@ class audittrail_objects_proxy(object_proxy):
uid = 1
vals = { 'method': method, 'object_id': model.id,'user_id': user_id}
for resource, fields in resource_data.iteritems():
- vals.update({'res_id': resource})
- log_id = pool.get('audittrail.log').create(cr, uid, vals)
lines = []
for field_key, value in fields.iteritems():
if field_key in ('__last_update', 'id'):continue
@@ -270,7 +268,10 @@ class audittrail_objects_proxy(object_proxy):
key2: ret_val and ret_val or value
}
lines.append(line)
- self.create_log_line(cr, uid, log_id, model, lines)
+ if lines:
+ vals.update({'res_id': resource})
+ log_id = pool.get('audittrail.log').create(cr, uid, vals)
+ self.create_log_line(cr, uid, log_id, model, lines)
return True
def log_fct(self, cr, uid, model, method, fct_src, *args):
From 207933a632d36394c85de225ec4aea80a1c5808e Mon Sep 17 00:00:00 2001
From: niv-openerp
Date: Thu, 17 Nov 2011 17:04:10 +0530
Subject: [PATCH 044/106] [imp] nivified product view
bzr revid: nicolas.vanhoren@openerp.com-20111117113410-c8coka92ujkrqufv
---
addons/point_of_sale/static/src/js/pos.js | 50 +++++++++++------------
1 file changed, 24 insertions(+), 26 deletions(-)
diff --git a/addons/point_of_sale/static/src/js/pos.js b/addons/point_of_sale/static/src/js/pos.js
index 609641fc913..d4fbfc6f6ed 100644
--- a/addons/point_of_sale/static/src/js/pos.js
+++ b/addons/point_of_sale/static/src/js/pos.js
@@ -162,11 +162,11 @@ openerp.point_of_sale = function(db) {
/* global variable */
var pos;
- var App, CashRegister, CashRegisterCollection, Category, CategoryCollection, CategoryView,
+ var App, CashRegister, CashRegisterCollection, Category, CategoryCollection, CategoryWidget,
NumpadState, NumpadWidget, Order, OrderButtonView, OrderCollection, OrderWidget, Orderline,
OrderlineCollection, OrderlineWidget, PaymentButtonWidget, PaymentView, Paymentline,
PaymentlineCollection, PaymentlineView, PaypadWidget, Product, ProductCollection,
- ProductListView, ProductView, ReceiptLineView, ReceiptView, Shop, ShopView, StepsWidget;
+ ProductListView, ProductWidget, ReceiptLineView, ReceiptView, Shop, ShopView, StepsWidget;
/*
---
@@ -754,31 +754,28 @@ openerp.point_of_sale = function(db) {
},
on_change_category: function(id) {},
});
- ProductView = (function() {
- __extends(ProductView, Backbone.View);
- function ProductView() {
- ProductView.__super__.constructor.apply(this, arguments);
- }
-
- ProductView.prototype.tagName = 'li';
- ProductView.prototype.className = 'product';
- ProductView.prototype.template = qweb_template('pos-product-template');
- ProductView.prototype.events = {
- 'click a': 'addToOrder'
- };
- ProductView.prototype.initialize = function(options) {
- return this.shop = options.shop;
- };
- ProductView.prototype.addToOrder = function(event) {
+ ProductWidget = db.web.Widget.extend({
+ tag_name:'li',
+ template_fct: qweb_template('pos-product-template'),
+ init: function(parent, element_id, options) {
+ this._super(parent, element_id);
+ this.model = options.model;
+ this.shop = options.shop;
+ },
+ start: function(options) {
+ $("a", this.$element).click(_.bind(this.addToOrder, this));
+ },
+ addToOrder: function(event) {
/* Preserve the category URL */
event.preventDefault();
return (this.shop.get('selectedOrder')).addProduct(this.model);
- };
- ProductView.prototype.render = function() {
- return $(this.el).html(this.template(this.model.toJSON()));
- };
- return ProductView;
- })();
+ },
+ render_element: function() {
+ this.$element.addClass("product");
+ this.$element.html(this.template_fct(this.model.toJSON()));
+ return this;
+ },
+ });
ProductListView = (function() {
__extends(ProductListView, Backbone.View);
function ProductListView() {
@@ -794,10 +791,11 @@ openerp.point_of_sale = function(db) {
ProductListView.prototype.render = function() {
$(this.el).empty();
(this.shop.get('products')).each(__bind( function(product) {
- return $(this.el).append((new ProductView({
+ var p = new ProductWidget(null, null, {
model: product,
shop: this.shop
- })).render());
+ });
+ p.appendTo($(this.el));
}, this));
return $('#products-screen').append(this.el);
};
From b6a3215579fb924fbe24d064c7fec6328a3e7a1b Mon Sep 17 00:00:00 2001
From: "Bharat (OpenERP)"
Date: Fri, 18 Nov 2011 11:41:40 +0530
Subject: [PATCH 045/106] [FIX] sale : pooled the objects in starting of method
_create_pickings_and_procurements and then used in the function
lp bug: https://launchpad.net/bugs/891596 fixed
bzr revid: bde@tinyerp.com-20111118061140-whiqz9e03xyjle6q
---
addons/sale/sale.py | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/addons/sale/sale.py b/addons/sale/sale.py
index 62f979cb9c9..01c8277144b 100644
--- a/addons/sale/sale.py
+++ b/addons/sale/sale.py
@@ -757,6 +757,10 @@ class sale_order(osv.osv):
will be added. A new picking will be created if ommitted.
:return: True
"""
+ move_obj = self.pool.get('stock.move')
+ picking_obj = self.pool.get('stock.picking')
+ procurement_order_obj = self.pool.get('procurement.order')
+
proc_ids = []
for line in order_lines:
if line.state == 'done':
@@ -768,13 +772,13 @@ class sale_order(osv.osv):
if line.product_id:
if line.product_id.product_tmpl_id.type in ('product', 'consu'):
if not picking_id:
- picking_id = self.pool.get('stock.picking').create(cr, uid, self._prepare_order_picking(cr, uid, order, *args))
- move_id = self.pool.get('stock.move').create(cr, uid, self._prepare_order_line_move(cr, uid, order, line, picking_id, date_planned, *args))
+ picking_id = picking_obj.create(cr, uid, self._prepare_order_picking(cr, uid, order, *args))
+ move_id = move_obj.create(cr, uid, self._prepare_order_line_move(cr, uid, order, line, picking_id, date_planned, *args))
else:
# a service has no stock move
move_id = False
- proc_id = self.pool.get('procurement.order').create(cr, uid, self._prepare_order_line_procurement(cr, uid, order, line, move_id, date_planned, *args))
+ proc_id = procurement_order_obj.create(cr, uid, self._prepare_order_line_procurement(cr, uid, order, line, move_id, date_planned, *args))
proc_ids.append(proc_id)
line.write({'procurement_id': proc_id})
@@ -784,12 +788,12 @@ class sale_order(osv.osv):
for pick in order.picking_ids:
for move in pick.move_lines:
if move.state == 'cancel':
- mov_ids = self.pool.get('stock.move').search(cr, uid, [('state', '=', 'cancel'),('sale_line_id', '=', line.id),('picking_id', '=', pick.id)])
+ mov_ids = move_obj.search(cr, uid, [('state', '=', 'cancel'),('sale_line_id', '=', line.id),('picking_id', '=', pick.id)])
if mov_ids:
for mov in move_obj.browse(cr, uid, mov_ids):
# FIXME: the following seems broken: what if move_id doesn't exist? What if there are several mov_ids? Shouldn't that be a sum?
- self.pool.get('stock.move').write(cr, uid, [move_id], {'product_qty': mov.product_qty, 'product_uos_qty': mov.product_uos_qty})
- self.pool.get('procurement.order').write(cr, uid, [proc_id], {'product_qty': mov.product_qty, 'product_uos_qty': mov.product_uos_qty})
+ move_obj.write(cr, uid, [move_id], {'product_qty': mov.product_qty, 'product_uos_qty': mov.product_uos_qty})
+ procurement_order_obj.write(cr, uid, [proc_id], {'product_qty': mov.product_qty, 'product_uos_qty': mov.product_uos_qty})
wf_service = netsvc.LocalService("workflow")
if picking_id:
From 9d1e3b75340747b417169fd2bc02abaf92625522 Mon Sep 17 00:00:00 2001
From: "Yogesh (OpenERP)"
Date: Fri, 18 Nov 2011 13:00:41 +0530
Subject: [PATCH 046/106] [FIX] action is ir_actions_report_xml then wizard
automatically close.
lp bug: https://launchpad.net/bugs/891342 fixed
bzr revid: ysa@tinyerp.com-20111118073041-x28pnecgtredpc97
---
addons/web/static/src/js/views.js | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js
index eff94b95ad7..4429610a213 100644
--- a/addons/web/static/src/js/views.js
+++ b/addons/web/static/src/js/views.js
@@ -143,7 +143,7 @@ session.web.ActionManager = session.web.Widget.extend({
var ClientWidget = session.web.client_actions.get_object(action.tag);
(this.client_widget = new ClientWidget(this, action.params)).appendTo(this);
},
- ir_actions_report_xml: function(action) {
+ ir_actions_report_xml: function(action, on_closed) {
var self = this;
$.blockUI();
self.rpc("/web/session/eval_domain_and_context", {
@@ -157,6 +157,10 @@ session.web.ActionManager = session.web.Widget.extend({
data: {action: JSON.stringify(action)},
complete: $.unblockUI
});
+ if (!self.dialog && on_closed) {
+ on_closed();
+ }
+ self.dialog_stop();
});
},
ir_actions_act_url: function (action) {
@@ -882,7 +886,7 @@ session.web.View = session.web.Widget.extend(/** @lends session.web.View# */{
}
};
var context = new session.web.CompoundContext(dataset.get_context(), action_data.context || {});
-
+
var handler = function (r) {
var action = r.result;
if (action && action.constructor == Object) {
From 32174170e371e2bb27757554cb64cfa5455777ae Mon Sep 17 00:00:00 2001
From: "Divyesh Makwana (Open ERP)"
Date: Fri, 18 Nov 2011 16:20:06 +0530
Subject: [PATCH 047/106] [FIX] account : account_analytic_analysis - why
create_date and not date
lp bug: https://launchpad.net/bugs/891529 fixed
bzr revid: mdi@tinyerp.com-20111118105006-vnp6ckrhr22pp89m
---
.../account/report/account_analytic_entries_report.py | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/addons/account/report/account_analytic_entries_report.py b/addons/account/report/account_analytic_entries_report.py
index a53e19721dd..f6dfe7cbdb5 100644
--- a/addons/account/report/account_analytic_entries_report.py
+++ b/addons/account/report/account_analytic_entries_report.py
@@ -55,10 +55,10 @@ class analytic_entries_report(osv.osv):
select
min(a.id) as id,
count(distinct a.id) as nbr,
- a.create_date as date,
- to_char(a.create_date, 'YYYY') as year,
- to_char(a.create_date, 'MM') as month,
- to_char(a.create_date, 'YYYY-MM-DD') as day,
+ a.date as date,
+ to_char(a.date, 'YYYY') as year,
+ to_char(a.date, 'MM') as month,
+ to_char(a.date, 'YYYY-MM-DD') as day,
a.user_id as user_id,
a.name as name,
analytic.partner_id as partner_id,
@@ -76,7 +76,7 @@ class analytic_entries_report(osv.osv):
account_analytic_line a, account_analytic_account analytic
where analytic.id = a.account_id
group by
- a.create_date, a.user_id,a.name,analytic.partner_id,a.company_id,a.currency_id,
+ a.date, a.user_id,a.name,analytic.partner_id,a.company_id,a.currency_id,
a.account_id,a.general_account_id,a.journal_id,
a.move_id,a.product_id,a.product_uom_id
)
From bd94429713543aee08abe8203d1740f6e5d378ff Mon Sep 17 00:00:00 2001
From: "Bharat (OpenERP)"
Date: Fri, 18 Nov 2011 17:14:53 +0530
Subject: [PATCH 048/106] [FIX] hr : modified the workflow inorder to keep
separate functionality between hr_expense and supplier_invoice
bzr revid: bde@tinyerp.com-20111118114453-bd7vc3urjbepo3rt
---
addons/hr_expense/hr_expense.py | 7 ++----
addons/hr_expense/hr_expense_view.xml | 1 -
addons/hr_expense/hr_expense_workflow.xml | 27 -----------------------
3 files changed, 2 insertions(+), 33 deletions(-)
diff --git a/addons/hr_expense/hr_expense.py b/addons/hr_expense/hr_expense.py
index 650a58a16a1..478b8120935 100644
--- a/addons/hr_expense/hr_expense.py
+++ b/addons/hr_expense/hr_expense.py
@@ -82,7 +82,6 @@ class hr_expense_expense(osv.osv):
('accepted', 'Approved'),
('invoiced', 'Invoiced'),
('paid', 'Reimbursed'),
- ('invoice_except', 'Invoice Exception'),
('cancelled', 'Refused')],
'State', readonly=True, help='When the expense request is created the state is \'Draft\'.\n It is confirmed by the user and request is sent to admin, the state is \'Waiting Confirmation\'.\
\nIf the admin accepts it, the state is \'Accepted\'.\n If an invoice is made for the expense request, the state is \'Invoiced\'.\n If the expense is paid to user, the state is \'Reimbursed\'.'),
@@ -138,8 +137,9 @@ class hr_expense_expense(osv.osv):
inv_ids.append(self.browse(cr, uid, id).invoice_id.id)
return {
'name': _('Supplier Invoices'),
+ 'view_type': 'form',
'view_mode': 'form',
- 'view_id': [res[1] if res else False],
+ 'view_id': [res and res[1] or False],
'res_model': 'account.invoice',
'context': "{'type':'out_invoice', 'journal_type': 'purchase'}",
'type': 'ir.actions.act_window',
@@ -223,9 +223,6 @@ class hr_expense_expense(osv.osv):
res = inv_id
return res
- def action_invoice_cancel(self, cr, uid, ids, context=None):
- return self.write(cr, uid, ids, {'state': 'invoice_except'}, context=context)
-
hr_expense_expense()
class product_product(osv.osv):
diff --git a/addons/hr_expense/hr_expense_view.xml b/addons/hr_expense/hr_expense_view.xml
index a832191bb90..786dc6beee2 100644
--- a/addons/hr_expense/hr_expense_view.xml
+++ b/addons/hr_expense/hr_expense_view.xml
@@ -106,7 +106,6 @@
-
diff --git a/addons/hr_expense/hr_expense_workflow.xml b/addons/hr_expense/hr_expense_workflow.xml
index 457b0a10b38..328a07879a4 100644
--- a/addons/hr_expense/hr_expense_workflow.xml
+++ b/addons/hr_expense/hr_expense_workflow.xml
@@ -55,13 +55,6 @@
action_invoice_create()
-
-
- invoice_except
- function
- action_invoice_cancel()
-
-
@@ -111,31 +104,11 @@
-
-
- subflow.cancel
-
-
-
- draft
-
-
-
- subflow.cancel
-
-
-
-
-
-
- invoice_recreate_hr_expense
-
-
From 34a9ecf3395c7e9fdac86a0f338de260fb813d21 Mon Sep 17 00:00:00 2001
From: Fabien Pinckaers
Date: Fri, 18 Nov 2011 13:11:03 +0100
Subject: [PATCH 049/106] fix
bzr revid: fp@tinyerp.com-20111118121103-vmlus5c14icgpvdv
---
openerp/osv/orm.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py
index 58d35e21775..2304fe43495 100644
--- a/openerp/osv/orm.py
+++ b/openerp/osv/orm.py
@@ -2483,7 +2483,7 @@ class BaseModel(object):
# as both lists are sorted in the same way, we can merge in one pass
pos = 0
while stages and ((pos
Date: Fri, 18 Nov 2011 14:08:49 +0100
Subject: [PATCH 050/106] [FIX] edi: _.sprintf moved to _.str.sprintf due to
recent update of web framework
bzr revid: odo@openerp.com-20111118130849-rb9h7b4gs2sm4vib
---
addons/edi/static/src/xml/edi_account.xml | 22 +++++++++----------
.../edi/static/src/xml/edi_sale_purchase.xml | 18 +++++++--------
2 files changed, 20 insertions(+), 20 deletions(-)
diff --git a/addons/edi/static/src/xml/edi_account.xml b/addons/edi/static/src/xml/edi_account.xml
index d9c9af9c401..dc6fb7f9754 100644
--- a/addons/edi/static/src/xml/edi_account.xml
+++ b/addons/edi/static/src/xml/edi_account.xml
@@ -31,7 +31,7 @@
-
Invoice :
+
Invoice :
Description
@@ -60,10 +60,10 @@
-
-
-
-
+
+
+
+
@@ -73,7 +73,7 @@
Net Total:
-
+
@@ -84,7 +84,7 @@
Taxes:
-
+
@@ -95,7 +95,7 @@
Total:
-
+
@@ -110,8 +110,8 @@
-
-
+
+
@@ -145,7 +145,7 @@
- Please transfer to
+ Please transfer to
(postal address on the invoice header)
using one of the following bank accounts. Be sure to mention the invoice
reference on the transfer:
diff --git a/addons/edi/static/src/xml/edi_sale_purchase.xml b/addons/edi/static/src/xml/edi_sale_purchase.xml
index cbd16507b62..4e0fdd7fc4e 100644
--- a/addons/edi/static/src/xml/edi_sale_purchase.xml
+++ b/addons/edi/static/src/xml/edi_sale_purchase.xml
@@ -33,7 +33,7 @@
-
Order :
+
Order :
@@ -68,11 +68,11 @@
-
+
-
-
-
+
+
+
@@ -82,7 +82,7 @@
Net Total:
-
+
@@ -93,7 +93,7 @@
Taxes:
-
+
@@ -104,7 +104,7 @@
Total:
-
+
@@ -137,7 +137,7 @@
- Please transfer to
+ Please transfer to
(postal address on the order header)
using one of the following bank accounts. Be sure to mention the document
reference on the transfer:
From 29574262c5215fadd1166f314008972f07330d28 Mon Sep 17 00:00:00 2001
From: Olivier Dony
Date: Fri, 18 Nov 2011 14:11:04 +0100
Subject: [PATCH 051/106] [FIX] fields.related: lazy init should avoid race
conditions as much as possible
bzr revid: odo@openerp.com-20111118131104-a16vg7q2ws8se2ob
---
openerp/osv/fields.py | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/openerp/osv/fields.py b/openerp/osv/fields.py
index 72df86eeff9..f1a90277c4a 100644
--- a/openerp/osv/fields.py
+++ b/openerp/osv/fields.py
@@ -1166,17 +1166,19 @@ class related(function):
def _field_get2(self, cr, uid, obj, context=None):
if self._relations:
return
+ result = []
obj_name = obj._name
for i in range(len(self._arg)):
f = obj.pool.get(obj_name).fields_get(cr, uid, [self._arg[i]], context=context)[self._arg[i]]
- self._relations.append({
+ result.append({
'object': obj_name,
'type': f['type']
})
if f.get('relation',False):
obj_name = f['relation']
- self._relations[-1]['relation'] = f['relation']
+ result[-1]['relation'] = f['relation']
+ self._relations = result
# ---------------------------------------------------------
# Dummy fields
From 8f228671d017523aad94943f8f25023b603dd1da Mon Sep 17 00:00:00 2001
From: "Bharat (OpenERP)"
Date: Fri, 18 Nov 2011 18:44:04 +0530
Subject: [PATCH 052/106] [IMP] sale : improved variable name, made
procurement_obj from procurement_order_obj
bzr revid: bde@tinyerp.com-20111118131404-ww8jbyix2zr5ykcp
---
addons/sale/sale.py | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/addons/sale/sale.py b/addons/sale/sale.py
index 01c8277144b..2188f6dee5f 100644
--- a/addons/sale/sale.py
+++ b/addons/sale/sale.py
@@ -759,7 +759,7 @@ class sale_order(osv.osv):
"""
move_obj = self.pool.get('stock.move')
picking_obj = self.pool.get('stock.picking')
- procurement_order_obj = self.pool.get('procurement.order')
+ procurement_obj = self.pool.get('procurement.order')
proc_ids = []
for line in order_lines:
@@ -778,7 +778,7 @@ class sale_order(osv.osv):
# a service has no stock move
move_id = False
- proc_id = procurement_order_obj.create(cr, uid, self._prepare_order_line_procurement(cr, uid, order, line, move_id, date_planned, *args))
+ proc_id = procurement_obj.create(cr, uid, self._prepare_order_line_procurement(cr, uid, order, line, move_id, date_planned, *args))
proc_ids.append(proc_id)
line.write({'procurement_id': proc_id})
@@ -793,7 +793,7 @@ class sale_order(osv.osv):
for mov in move_obj.browse(cr, uid, mov_ids):
# FIXME: the following seems broken: what if move_id doesn't exist? What if there are several mov_ids? Shouldn't that be a sum?
move_obj.write(cr, uid, [move_id], {'product_qty': mov.product_qty, 'product_uos_qty': mov.product_uos_qty})
- procurement_order_obj.write(cr, uid, [proc_id], {'product_qty': mov.product_qty, 'product_uos_qty': mov.product_uos_qty})
+ procurement_obj.write(cr, uid, [proc_id], {'product_qty': mov.product_qty, 'product_uos_qty': mov.product_uos_qty})
wf_service = netsvc.LocalService("workflow")
if picking_id:
From 14bdfadd698c4f500505ef6ef499c9f9bbb2d63d Mon Sep 17 00:00:00 2001
From: Olivier Dony
Date: Fri, 18 Nov 2011 14:15:11 +0100
Subject: [PATCH 053/106] [FIX] project.task: read_group_full typos + cleanup
bzr revid: odo@openerp.com-20111118131511-0lkpm1zdat1oz78z
---
addons/project/project.py | 19 +++++++++----------
1 file changed, 9 insertions(+), 10 deletions(-)
diff --git a/addons/project/project.py b/addons/project/project.py
index 9cb367eb8e1..b49e5f424ed 100644
--- a/addons/project/project.py
+++ b/addons/project/project.py
@@ -425,20 +425,19 @@ class task(osv.osv):
_date_name = "date_start"
def _read_group_type_id(self, cr, uid, ids, domain, context=None):
- context = context or {}
stage_obj = self.pool.get('project.task.type')
- stage_ids = stage_obj.search(cr, uid, ['|',('id','in',ids)] + [('project_default','=',1)], context=context)
+ stage_ids = stage_obj.search(cr, uid, ['|',('id','in',ids),('project_default','=',1)], context=context)
return stage_obj.name_get(cr, uid, stage_ids, context=context)
- def _read_group_user_id(self, cr, uid, ids, domain, context={}):
- context = context or {}
- if type(context.get('project_id', None)) not in (int, long):
- return None
+ def _read_group_user_id(self, cr, uid, ids, domain, context=None):
+ if context is None: context = {}
+ res_users = self.pool.get('res.users')
+ if type(context.get('project_id')) not in (int, long):
+ return res_users.name_get(cr, uid, ids, context=context)
proj = self.pool.get('project.project').browse(cr, uid, context['project_id'], context=context)
- ids += map(lambda x: x.id, proj.members)
- stage_obj = self.pool.get('res.users')
- stage_ids = stage_obj.search(cr, uid, [('id','in',ids)], context=context)
- return stage_obj.name_get(cr, uid, ids, context=context)
+ ids += [x.id for x in proj.members]
+ user_ids = res_users.search(cr, uid, [('id','in',ids)], context=context)
+ return res_users.name_get(cr, uid, user_ids, context=context)
_group_by_full = {
'type_id': _read_group_type_id,
From ca458dd5395268ffe894a975100a9637324c9eb7 Mon Sep 17 00:00:00 2001
From: Olivier Dony
Date: Fri, 18 Nov 2011 14:36:42 +0100
Subject: [PATCH 054/106] [FIX] orm.read_group: fix issues in read_group_full
and rewrite/cleanup
Attempt to make it into a more maintainable/readable
separate method.
bzr revid: odo@openerp.com-20111118133642-b3126a5sph8bivmu
---
openerp/osv/orm.py | 60 +++++++++++++++++++++++++++++++++-------------
1 file changed, 43 insertions(+), 17 deletions(-)
diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py
index 2304fe43495..ce42b33eec8 100644
--- a/openerp/osv/orm.py
+++ b/openerp/osv/orm.py
@@ -2358,6 +2358,46 @@ class BaseModel(object):
except AttributeError:
pass
+
+ def _read_group_fill_results(self, cr, uid, domain, groupby, groupby_list, float_int_fields, read_group_result, context=None):
+ """Helper method for filling in read_group results for all missing values of
+ the field being grouped by, in case self._group_by_full provides methods
+ to give the list of all the values that should be displayed."""
+ # self._group_by_full should map groupable fields to a method that returns
+ # a list of all aggregated values that we want to display for this field
+ # This is useful to implement kanban views for instance, where all columns
+ # should be displayed even if they don't contain any record.
+ # let "groups" represent the various possible values for the group_by field
+ present_group_ids = [x[groupby][0] for x in read_group_result if x[groupby]]
+ # grab the list of all groups that should be displayed, including all present groups
+ all_groups = self._group_by_full[groupby](self, cr, uid, present_group_ids, domain,
+ context=context)
+ result_template = dict.fromkeys(float_int_fields, False)
+ result_template.update({'__context':{'group_by':groupby_list[1:]}, groupby + '_count':0})
+ result = []
+ def append_filler_line(right_side):
+ line = dict(result_template)
+ line.update({
+ groupby: right_side,
+ '__domain': [(groupby, '=', right_side[0])] + domain,
+ })
+ result.append(line)
+ #as both lists use the same ordering, we can merge in one pass
+ while read_group_result or all_groups:
+ left_side = read_group_result[0] if read_group_result else None
+ right_side = all_groups[0] if all_groups else None
+ if left_side is None:
+ append_filler_line(all_groups.pop(0))
+ elif right_side is None:
+ result.append(read_group_result.pop(0))
+ elif left_side[groupby][0] == right_side[0]:
+ result.append(read_group_result.pop(0))
+ all_groups.pop(0)
+ else:
+ result.append(read_group_result.pop(0)) # should be False
+ append_filler_line(all_groups.pop(0))
+ return result
+
def read_group(self, cr, uid, domain, fields, groupby, offset=0, limit=None, context=None, orderby=False):
"""
Get the list of records in list view grouped by the given ``groupby`` fields
@@ -2477,23 +2517,9 @@ class BaseModel(object):
d.update(alldata[d['id']])
del d['id']
- if groupby and groupby in self._group_by_full:
- gids = [x[groupby][0] for x in data if x[groupby]]
- stages = self._group_by_full[groupby](self, cr, uid, gids, domain, context)
- # as both lists are sorted in the same way, we can merge in one pass
- pos = 0
- while stages and ((pos
Date: Fri, 18 Nov 2011 14:45:02 +0100
Subject: [PATCH 055/106] [IMP] pass along the action context when requesting a
tree view
bzr revid: xmo@openerp.com-20111118134502-t6ltgtooij0ob0bt
---
addons/web/static/src/js/view_tree.js | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/addons/web/static/src/js/view_tree.js b/addons/web/static/src/js/view_tree.js
index 5143adb3838..4a64e744230 100644
--- a/addons/web/static/src/js/view_tree.js
+++ b/addons/web/static/src/js/view_tree.js
@@ -42,7 +42,8 @@ openerp.web.TreeView = openerp.web.View.extend(/** @lends openerp.web.TreeView#
model: this.model,
view_id: this.view_id,
view_type: "tree",
- toolbar: this.view_manager ? !!this.view_manager.sidebar : false
+ toolbar: this.view_manager ? !!this.view_manager.sidebar : false,
+ context: this.dataset.get_context()
}, this.on_loaded);
},
/**
From e1190b7a8ad4f97af303ad4c60e6ce3c7ebf120c Mon Sep 17 00:00:00 2001
From: Xavier Morel
Date: Fri, 18 Nov 2011 14:45:55 +0100
Subject: [PATCH 056/106] [FIX] correctly pass active_* context keys along when
executing an action from the treeview
lp bug: https://launchpad.net/bugs/888397 fixed
bzr revid: xmo@openerp.com-20111118134555-tmnh06kmx81mvqhx
---
addons/web/static/src/js/view_tree.js | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/addons/web/static/src/js/view_tree.js b/addons/web/static/src/js/view_tree.js
index 4a64e744230..34d47b92813 100644
--- a/addons/web/static/src/js/view_tree.js
+++ b/addons/web/static/src/js/view_tree.js
@@ -215,17 +215,23 @@ openerp.web.TreeView = openerp.web.View.extend(/** @lends openerp.web.TreeView#
// Get details in listview
activate: function(id) {
var self = this;
+ var local_context = {
+ active_model: self.dataset.model,
+ active_id: id,
+ active_ids: [id]};
this.rpc('/web/treeview/action', {
id: id,
model: this.dataset.model,
context: new openerp.web.CompoundContext(
- this.dataset.get_context(), {
- active_model: this.dataset.model,
- active_id: id,
- active_ids: [id]})
+ this.dataset.get_context(), local_context)
}, function (actions) {
if (!actions.length) { return; }
var action = actions[0][2];
+ var c = new openerp.web.CompoundContext(local_context);
+ if (action.context) {
+ c.add(action.context);
+ }
+ action.context = c;
self.do_action(action);
});
},
From bde958588747673dc945d31edcf34914bc72c193 Mon Sep 17 00:00:00 2001
From: Olivier Dony
Date: Fri, 18 Nov 2011 16:05:25 +0100
Subject: [PATCH 057/106] [FIX] res.users: incorrect passing of context as
positional args causes off-by-one errors
bzr revid: odo@openerp.com-20111118150525-zmrd276b4d9tx15f
---
openerp/addons/base/res/res_users.py | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/openerp/addons/base/res/res_users.py b/openerp/addons/base/res/res_users.py
index 36270e1879b..0e2fb677c93 100644
--- a/openerp/addons/base/res/res_users.py
+++ b/openerp/addons/base/res/res_users.py
@@ -733,14 +733,14 @@ class users_view(osv.osv):
def read(self, cr, uid, ids, fields=None, context=None, load='_classic_read'):
if not fields:
- group_fields, fields = [], self.fields_get(cr, uid, context).keys()
+ group_fields, fields = [], self.fields_get(cr, uid, context=context).keys()
else:
group_fields, fields = partition(is_field_group, fields)
if group_fields:
group_obj = self.pool.get('res.groups')
fields.append('groups_id')
# read the normal fields (and 'groups_id')
- res = super(users_view, self).read(cr, uid, ids, fields, context, load)
+ res = super(users_view, self).read(cr, uid, ids, fields, context=context, load=load)
records = res if isinstance(res, list) else [res]
for record in records:
# get the field 'groups_id' and insert the group_fields
@@ -752,9 +752,9 @@ class users_view(osv.osv):
record[f] = not groups.isdisjoint(get_boolean_groups(f))
elif is_selection_groups(f):
selected = groups.intersection(get_selection_groups(f))
- record[f] = group_obj.get_maximal(cr, uid, selected, context)
+ record[f] = group_obj.get_maximal(cr, uid, selected, context=context)
return res
- return super(users_view, self).read(cr, uid, ids, fields, context, load)
+ return super(users_view, self).read(cr, uid, ids, fields, context=context, load=load)
def fields_get(self, cr, user, allfields=None, context=None, write_access=True):
res = super(users_view, self).fields_get(cr, user, allfields, context, write_access)
From e17b51e38417c78e997c09c8dde1b58c9b259ad7 Mon Sep 17 00:00:00 2001
From: Olivier Dony
Date: Fri, 18 Nov 2011 16:33:33 +0100
Subject: [PATCH 058/106] [FIX] orm.read_group: check for empty groupby list
This is very ugly and needs a real refactoring,
just adding one more test for the time being.
bzr revid: odo@openerp.com-20111118153333-2skgbd197q8tb7uc
---
openerp/osv/orm.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py
index af7e00db86d..3c0a2c0133b 100644
--- a/openerp/osv/orm.py
+++ b/openerp/osv/orm.py
@@ -2516,7 +2516,7 @@ class BaseModel(object):
d.update(alldata[d['id']])
del d['id']
- if groupby in self._group_by_full:
+ if groupby and groupby in self._group_by_full:
data = self._read_group_fill_results(cr, uid, domain, groupby, groupby_list,
aggregated_fields, data, context=context)
From d28d46e26fdb5374185a5956ff5bbf43a658e82b Mon Sep 17 00:00:00 2001
From: "Quentin (OpenERP)"
Date: Fri, 18 Nov 2011 21:27:13 +0100
Subject: [PATCH 059/106] [REF] audittrail: code refactoring. still not totally
working x_x
bzr revid: qdp-launchpad@openerp.com-20111118202713-e5f1mtzx3gyovdok
---
addons/audittrail/audittrail.py | 213 ++++++++++++++++++++++++++------
1 file changed, 172 insertions(+), 41 deletions(-)
diff --git a/addons/audittrail/audittrail.py b/addons/audittrail/audittrail.py
index 454f925c0f5..6946511045e 100644
--- a/addons/audittrail/audittrail.py
+++ b/addons/audittrail/audittrail.py
@@ -245,33 +245,35 @@ class audittrail_objects_proxy(object_proxy):
Logging function: This function performs the logging operation for create/read/unlink operation
:param cr: the current row, from the database cursor,
:param user_id: the current user’s ID,
- :param model: Object whose values are being changed
+ :param model: record of ir.model related to the object which values are being changed
:param method: method to log: create, read, unlink
:param resource_data: list of data modified for the model
:param pool: current db's pooler object.
:param resource_pool: pooler object of the model who's values are being changed.
:return:True
"""
- key1 = '%s_value'%(method == 'create' and 'new' or 'old')
- key2 = '%s_value_text'%(method == 'create' and 'new' or 'old')
- vals = { 'method': method, 'object_id': model.id,'user_id': user_id}
- for resource, fields in resource_data.iteritems():
- lines = []
- for field_key, value in fields.iteritems():
- if field_key in ('__last_update', 'id'):continue
- ret_val = self.get_value_text(cr, 1, pool, resource_pool, method, field_key, value, method != 'read')
- line = {
- 'name': field_key,
- key1: value,
- key2: ret_val and ret_val or value
- }
- lines.append(line)
- if lines:
- vals.update({'res_id': resource})
- log_id = pool.get('audittrail.log').create(cr, 1, vals)
- self.create_log_line(cr, uid, log_id, model, lines)
+ #checking if an audittrail rule apply in super admin mode
+ if self.check_rules(cr, 1, model.model, method):
+ key1 = '%s_value'%(method == 'create' and 'new' or 'old')
+ key2 = '%s_value_text'%(method == 'create' and 'new' or 'old')
+ vals = {'method': method, 'object_id': model.id,'user_id': user_id}
+ for resource, fields in resource_data.iteritems():
+ lines = []
+ for field_key, value in fields.iteritems():
+ if field_key in ('__last_update', 'id'):continue
+ ret_val = self.get_value_text(cr, 1, pool, resource_pool, method, field_key, value, method != 'read')
+ line = {
+ 'name': field_key,
+ key1: value,
+ key2: ret_val and ret_val or value
+ }
+ lines.append(line)
+ if lines:
+ vals.update({'res_id': resource})
+ log_id = pool.get('audittrail.log').create(cr, 1, vals)
+ self.create_log_line(cr, 1, log_id, model, lines)
return True
-
+
def log_fct(self, cr, uid, model, method, fct_src, *args):
"""
Logging function: This function is performing the logging operation
@@ -292,21 +294,23 @@ class audittrail_objects_proxy(object_proxy):
model = model_pool.browse(cr, uid, model_id)
relational_table_log = True if (args and args[-1] == 'child_relation_log') else False
+ print model.model
+ print method
+ print ">>>>>>>"
if method == 'create':
resource_data = {}
fields_to_read = []
if relational_table_log:
- res_id = args[0]
+ res = args[0]
else:
- res_id = fct_src(cr, uid_orig, model.model, method, *args)
+ res = fct_src(cr, uid_orig, model.model, method, *args)
fields_to_read = args[0].keys()
- if res_id:
- resource = resource_pool.read(cr, uid, res_id, fields_to_read)
+ if res:
+ resource = resource_pool.read(cr, uid, res, fields_to_read)
if not isinstance(resource,list):
resource = [resource]
map(lambda x: resource_data.setdefault(x['id'], x), resource)
self.start_log_process(cr, uid_orig, model, method, resource_data, pool, resource_pool)
- return res_id
elif method in('read', 'unlink'):
res_ids = args[0]
@@ -320,7 +324,6 @@ class audittrail_objects_proxy(object_proxy):
self.start_log_process(cr, uid_orig, model, method, old_values, pool, resource_pool)
if not relational_table_log and method == 'unlink':
res = fct_src(cr, uid_orig, model.model, method, *args)
- return res
else: #method is write or workflow action
res_ids = []
res = True
@@ -334,18 +337,142 @@ class audittrail_objects_proxy(object_proxy):
res_ids = [res_ids]
if res_ids:
#store the old values into a dictionary
- old_values = self.process_data(cr, uid_orig, pool, res_ids, model, method, type='old')
+ old_values = self.get_data(cr, uid_orig, pool, res_ids, model, method)
#process the original function or workflow trigger
res = fct_src(cr, uid_orig, model.model, method, *args)
if method == 'copy':
res_ids = [res]
if res_ids:
- #check the new value and log the changes if any
- self.process_data(cr, uid_orig, pool, res_ids, model, method, old_values)
- return res
+ #check the new value and store them into a dictionary
+ new_values = self.get_data(cr, uid_orig, pool, res_ids, model, method)
+ self.process_data(cr, uid_orig, pool, res_ids, model, method, old_values, new_values)
+ return res
+
+ def get_data(self, cr, uid_orig, pool, res_ids, model, method):
+ """
+ This is specially created to log actions and workflow actions on an object recursively.
+ It processes and iterates recursively on old data (i.e before the method was executed )
+ and stores it in a dict. Then this dict is used to compare with the new data
+ (i.e after the method execution) and log the changes.
+
+ :param cr: the current row, from the database cursor,
+ :param uid_orig: the current user’s ID,
+ :param pool: current db's pooler object.
+ :param res_ids: Id's of resource to be logged/compared.
+ :param model: Object whose values are being changed
+ :param method: method to log: create, read, unlink,write,actions,workflow actions
+ :return: dict mapping a tuple (model_id, resource_id) with its value and textual value
+ { (model_id, resource_id): { 'value': ...
+ 'textual_value': ...
+ },
+ }
+ """
+ data = {}
+ # read all the field of the given resource in super admin mode
+ resource_pool = pool.get(model.model)
+ for resource in resource_pool.read(cr, 1, res_ids):
+ values_text = {}
+ values = {}
+ resource_id = resource['id']
+ for field in resource:
+ if field in ('__last_update', 'id'):
+ continue
+ values[field] = resource[field]
+ ret_val = self.get_value_text(cr, 1, pool, resource_pool, method, field, resource[field], False)
+ values_text[field] = ret_val and ret_val or resource[field]
+ data[(model.id, resource_id)] = {'text':values_text, 'value': values}
+ field_obj = resource_pool._all_columns.get(field).column
+ if field_obj._type in ('one2many','many2many'):
+ #checking if an audittrail rule apply in super admin mode
+ if self.check_rules(cr, 1, field_obj._obj, method):
+ #checking if the model associated to a *2m field exists, in super admin mode
+ x2m_model_ids = pool.get('ir.model').search(cr, 1, [('model', '=', field_obj._obj)])
+ x2m_model_id = x2m_model_ids and x2m_model_ids[0] or False
+ assert x2m_model_id, _("'%s' Model does not exist..." %(field_obj._obj))
+ x2m_model = pool.get('ir.model').browse(cr, 1, x2m_model_id)
+ data.update(self.get_data(cr, 1, pool, resource[field], x2m_model, method))
+ return data
+
+ def prepare_audittrail_log_line(self, cr, uid, pool, model, resource, method, old_values, new_values):
+ lines = {
+ (model.id, resource['id']): []
+ }
+ for field in resource:
+ if field in ('__last_update', 'id'):
+ continue
+ field_obj = (pool.get(model.model)._all_columns.get(field)).column
+ if field_obj._type in ('one2many','many2many'):
+ #checking if an audittrail rule apply in super admin mode
+ if self.check_rules(cr, 1, field_obj._obj, method):
+ #checking if the model associated to a *2m field exists, in super admin mode
+ x2m_model_ids = pool.get('ir.model').search(cr, 1, [('model', '=', field_obj._obj)])
+ x2m_model_id = x2m_model_ids and x2m_model_ids[0] or False
+ assert x2m_model_id, _("'%s' Model does not exist..." %(field_obj._obj))
+ x2m_model = pool.get('ir.model').browse(cr, 1, x2m_model_id)
+ if resource[field]:
+ for resource_id in resource[field]:
+ x2many_new_values = new_values[(x2m_model_id, resource_id)]
+ x2many_new_values.update({'id': resource['id']})
+ x = self.prepare_audittrail_log_line(cr, 1, pool, x2m_model, x2many_new_values, method, old_values.get((x2m_model_id, resource_id),{}), x2many_new_values)
+ lines.update(x)
+ # if the value value is different than the old value: record the change
+ if old_values[(model.id, resource['id'])]['value'][field] != new_values[(model.id, resource['id'])]['value'][field]:
+ data = {
+ 'name': field,
+ 'new_value': resource[field],
+ 'old_value': (model.id, resource['id']) in old_values and old_values[(model.id, resource['id'])]['value'].get(field),
+ 'new_value_text': (model.id, resource['id']) in new_values and new_values[(model.id, resource['id'])]['text'].get(field),
+ 'old_value_text': (model.id, resource['id']) in old_values and old_values[(model.id, resource['id'])]['text'].get(field)
+ }
+ lines[(model.id, resource['id'])].append(data)
+ return lines
+
+ def process_data(self, cr, uid, pool, res_ids, model, method, old_values={}, new_values={}):
+ """
+ This is specially created to log actions and workflow actions on an object recursively.
+ It processes and iterates recursively on old data (i.e before the method was executed )
+ and stores it in a dict. Then this dict is used to compare with the new data
+ (i.e after the method execution) and log the changes.
+
+ :param cr: the current row, from the database cursor,
+ :param uid: the current user’s ID,
+ :param pool: current db's pooler object.
+ :param res_ids: Id's of resource to be logged/compared.
+ :param model: Object whose values are being changed
+ :param method: method to log: create, read, unlink,write,actions,workflow actions
+ :param original_values: dict of values of res_ids read before execution of the method only when type is 'new'
+ :param type: Either of 'new' or 'old' to know which data to process.
+ :return: dict of values
+ """
+ # read all the field of the given resource in super admin mode
+ for resource in pool.get(model.model).read(cr, 1, res_ids):
+ lines = self.prepare_audittrail_log_line(cr, uid, pool, model, resource, method, old_values, new_values)
+
+ # if at least one modification has been found
+ for model_id, resource_id in lines:
+ vals = {
+ 'method': method,
+ 'object_id': model_id,
+ 'user_id': uid,
+ 'res_id': resource_id,
+ }
+ if (model_id, resource_id) not in old_values and method !='copy':
+ # the resource was not existing so we are forcing the method to 'create'
+ # (because it could also come with the value 'write' if we are creating
+ # new record through a one2many field)
+ vals.update({'method': 'create'})
+ if (model_id, resource_id) not in new_values and method !='copy':
+ # the resource is not existing anymore so we are forcing the method to 'unlink'
+ # (because it could also come with the value 'write' if we are deleting the
+ # record through a one2many field)
+ vals.update({'method': 'unlink'})
+ # create the audittrail log in super admin mode
+ log_id = pool.get('audittrail.log').create(cr, 1, vals)
+ model = pool.get('ir.model').browse(cr, uid, model_id)
+ self.create_log_line(cr, 1, log_id, model, lines[(model_id, resource_id)])
return True
- def process_data(self, cr, uid_orig, pool, res_ids, model, method, original_values={}, type='new'):
+ def process_data_old(self, cr, uid_orig, pool, res_ids, model, method, original_values={}, type='new'):
"""
This is specially created to log actions and workflow actions on an object recursively.
It processes and iterates recursively on old data (i.e before the method was executed )
@@ -369,15 +496,7 @@ class audittrail_objects_proxy(object_proxy):
_old_values_text = {}
_old_value = {}
resource_id = resource['id']
- if type == 'new':
- vals = {'method': method,'object_id': model.id,'user_id': uid_orig }
- vals.update({'res_id': resource_id})
- if resource_id not in original_values and method !='copy':
- # the resource was not existing so we are forcing the method to 'create'
- # (because it could also come with the value 'write' if we are creating
- # new record through a one2many field)
- vals.update({'method': 'create'})
- lines = []
+ lines = []
for field in resource:
if field in ('__last_update', 'id'):continue
field_obj = (resource_pool._all_columns.get(field)).column
@@ -406,6 +525,18 @@ class audittrail_objects_proxy(object_proxy):
_old_values_text[field] = ret_val and ret_val or resource[field]
if type == 'new':
if lines:
+ vals = {
+ 'method': method,
+ 'object_id': model.id,
+ 'user_id': uid_orig,
+ 'res_id': resource_id,
+ }
+ if resource_id not in original_values and method !='copy':
+ # the resource was not existing so we are forcing the method to 'create'
+ # (because it could also come with the value 'write' if we are creating
+ # new record through a one2many field)
+ vals.update({'method': 'create'})
+ # create the audittrail log in super admin mode
log_id = pool.get('audittrail.log').create(cr, 1, vals)
self.create_log_line(cr, 1, log_id, model, lines)
else:
@@ -417,7 +548,7 @@ class audittrail_objects_proxy(object_proxy):
Checks if auditrails is installed for that db and then if one rule match
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID,
- @param model: Object whose values are being changed
+ @param model: value of _name of the object which values are being changed
@param method: method to log: create, read, unlink,write,actions,workflow actions
@return: True or False
"""
From 7dc7a3849087dbb525b227fc1ddb79c7020a92f3 Mon Sep 17 00:00:00 2001
From: Launchpad Translations on behalf of openerp <>
Date: Mon, 21 Nov 2011 05:50:48 +0000
Subject: [PATCH 060/106] Launchpad automatic translations update.
bzr revid: launchpad_translations_on_behalf_of_openerp-20111121052226-yhr6ydr2i8dbwp8x
bzr revid: launchpad_translations_on_behalf_of_openerp-20111119051322-q109g1zgszi27u9e
bzr revid: launchpad_translations_on_behalf_of_openerp-20111121052251-ee9tr9wvqumk7n8u
bzr revid: launchpad_translations_on_behalf_of_openerp-20111121055048-51rwikms7xtq4bkz
---
addons/account_accountant/i18n/he.po | 33 +
addons/account_accountant/i18n/oc.po | 38 +
addons/account_cancel/i18n/oc.po | 37 +
addons/base_crypt/i18n/oc.po | 73 +
addons/base_tools/i18n/oc.po | 32 +
addons/claim_from_delivery/i18n/oc.po | 33 +
addons/crm_caldav/i18n/oc.po | 50 +
addons/document_ftp/i18n/ar.po | 135 ++
addons/l10n_br/i18n/oc.po | 36 +
addons/l10n_es/i18n/oc.po | 39 +
addons/l10n_gt/i18n/oc.po | 39 +
addons/l10n_in/i18n/oc.po | 46 +
addons/project_retro_planning/i18n/oc.po | 47 +
addons/sale/i18n/oc.po | 2059 +++++++++++++++++++
addons/sale_analytic_plans/i18n/oc.po | 45 +
addons/stock_invoice_directly/i18n/oc.po | 37 +
addons/stock_no_autopicking/i18n/oc.po | 70 +
addons/web/po/ar.po | 4 +-
addons/web/po/da.po | 4 +-
addons/web/po/de.po | 4 +-
addons/web/po/es.po | 4 +-
addons/web/po/es_EC.po | 4 +-
addons/web/po/et.po | 4 +-
addons/web/po/fr.po | 4 +-
addons/web/po/gl.po | 4 +-
addons/web/po/it.po | 4 +-
addons/web/po/nl_BE.po | 4 +-
addons/web/po/pl.po | 4 +-
addons/web/po/pt_BR.po | 4 +-
addons/web/po/sl.po | 4 +-
addons/web_calendar/po/ar.po | 4 +-
addons/web_calendar/po/da.po | 4 +-
addons/web_calendar/po/de.po | 4 +-
addons/web_calendar/po/es.po | 4 +-
addons/web_calendar/po/es_EC.po | 4 +-
addons/web_calendar/po/et.po | 4 +-
addons/web_calendar/po/fr.po | 4 +-
addons/web_calendar/po/gl.po | 4 +-
addons/web_calendar/po/it.po | 4 +-
addons/web_calendar/po/nl_BE.po | 4 +-
addons/web_calendar/po/sk.po | 4 +-
addons/web_calendar/po/sl.po | 4 +-
addons/web_dashboard/po/ar.po | 4 +-
addons/web_dashboard/po/da.po | 4 +-
addons/web_dashboard/po/de.po | 4 +-
addons/web_dashboard/po/es.po | 4 +-
addons/web_dashboard/po/es_EC.po | 4 +-
addons/web_dashboard/po/et.po | 4 +-
addons/web_dashboard/po/fr.po | 4 +-
addons/web_dashboard/po/gl.po | 4 +-
addons/web_dashboard/po/it.po | 4 +-
addons/web_dashboard/po/nl_BE.po | 4 +-
addons/web_dashboard/po/pl.po | 4 +-
addons/web_dashboard/po/sk.po | 4 +-
addons/web_dashboard/po/sl.po | 4 +-
addons/web_default_home/po/ar.po | 4 +-
addons/web_default_home/po/da.po | 4 +-
addons/web_default_home/po/de.po | 4 +-
addons/web_default_home/po/es.po | 4 +-
addons/web_default_home/po/es_EC.po | 4 +-
addons/web_default_home/po/et.po | 4 +-
addons/web_default_home/po/fr.po | 4 +-
addons/web_default_home/po/gl.po | 4 +-
addons/web_default_home/po/it.po | 4 +-
addons/web_default_home/po/nl_BE.po | 4 +-
addons/web_default_home/po/pl.po | 4 +-
addons/web_default_home/po/sk.po | 4 +-
addons/web_default_home/po/sl.po | 4 +-
addons/web_diagram/po/ar.po | 4 +-
addons/web_diagram/po/da.po | 4 +-
addons/web_diagram/po/de.po | 4 +-
addons/web_diagram/po/es.po | 4 +-
addons/web_diagram/po/es_EC.po | 4 +-
addons/web_diagram/po/et.po | 4 +-
addons/web_diagram/po/gl.po | 4 +-
addons/web_diagram/po/it.po | 4 +-
addons/web_diagram/po/nl_BE.po | 4 +-
addons/web_diagram/po/pl.po | 4 +-
addons/web_diagram/po/sl.po | 4 +-
addons/web_livechat/i18n/oc.po | 41 +
addons/web_mobile/po/ar.po | 4 +-
addons/web_mobile/po/da.po | 4 +-
addons/web_mobile/po/de.po | 4 +-
addons/web_mobile/po/es.po | 4 +-
addons/web_mobile/po/es_EC.po | 4 +-
addons/web_mobile/po/et.po | 4 +-
addons/web_mobile/po/fr.po | 4 +-
addons/web_mobile/po/gl.po | 4 +-
addons/web_mobile/po/it.po | 4 +-
addons/web_mobile/po/nl_BE.po | 4 +-
addons/web_mobile/po/pl.po | 4 +-
addons/web_mobile/po/sk.po | 4 +-
addons/web_mobile/po/sl.po | 4 +-
addons/web_uservoice/i18n/oc.po | 29 +
addons/wiki_faq/i18n/oc.po | 32 +
addons/wiki_quality_manual/i18n/oc.po | 32 +
addons/wiki_sale_faq/i18n/oc.po | 68 +
openerp/addons/base/i18n/ar.po | 2396 ++++++++++++----------
98 files changed, 4479 insertions(+), 1268 deletions(-)
create mode 100644 addons/account_accountant/i18n/he.po
create mode 100644 addons/account_accountant/i18n/oc.po
create mode 100644 addons/account_cancel/i18n/oc.po
create mode 100644 addons/base_crypt/i18n/oc.po
create mode 100644 addons/base_tools/i18n/oc.po
create mode 100644 addons/claim_from_delivery/i18n/oc.po
create mode 100644 addons/crm_caldav/i18n/oc.po
create mode 100644 addons/document_ftp/i18n/ar.po
create mode 100644 addons/l10n_br/i18n/oc.po
create mode 100644 addons/l10n_es/i18n/oc.po
create mode 100644 addons/l10n_gt/i18n/oc.po
create mode 100644 addons/l10n_in/i18n/oc.po
create mode 100644 addons/project_retro_planning/i18n/oc.po
create mode 100644 addons/sale/i18n/oc.po
create mode 100644 addons/sale_analytic_plans/i18n/oc.po
create mode 100644 addons/stock_invoice_directly/i18n/oc.po
create mode 100644 addons/stock_no_autopicking/i18n/oc.po
create mode 100644 addons/web_livechat/i18n/oc.po
create mode 100644 addons/web_uservoice/i18n/oc.po
create mode 100644 addons/wiki_faq/i18n/oc.po
create mode 100644 addons/wiki_quality_manual/i18n/oc.po
create mode 100644 addons/wiki_sale_faq/i18n/oc.po
diff --git a/addons/account_accountant/i18n/he.po b/addons/account_accountant/i18n/he.po
new file mode 100644
index 00000000000..de5181d6440
--- /dev/null
+++ b/addons/account_accountant/i18n/he.po
@@ -0,0 +1,33 @@
+# Hebrew translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:14+0000\n"
+"PO-Revision-Date: 2011-11-18 17:39+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Hebrew \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-11-19 05:13+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
+
+#. module: account_accountant
+#: model:ir.module.module,description:account_accountant.module_meta_information
+msgid ""
+"\n"
+"This module gives the admin user the access to all the accounting features "
+"like the journal\n"
+"items and the chart of accounts.\n"
+" "
+msgstr ""
+
+#. module: account_accountant
+#: model:ir.module.module,shortdesc:account_accountant.module_meta_information
+msgid "Accountant"
+msgstr ""
diff --git a/addons/account_accountant/i18n/oc.po b/addons/account_accountant/i18n/oc.po
new file mode 100644
index 00000000000..d88b40aa957
--- /dev/null
+++ b/addons/account_accountant/i18n/oc.po
@@ -0,0 +1,38 @@
+# Occitan (post 1500) translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:14+0000\n"
+"PO-Revision-Date: 2011-11-20 09:14+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Occitan (post 1500) \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:22+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
+
+#. module: account_accountant
+#: model:ir.module.module,description:account_accountant.module_meta_information
+msgid ""
+"\n"
+"This module gives the admin user the access to all the accounting features "
+"like the journal\n"
+"items and the chart of accounts.\n"
+" "
+msgstr ""
+"\n"
+"Aqueste modul balha a l'administrator los accèsses a totas las "
+"foncionalitats comptablas talas coma las linhas\n"
+"d'escritura e lo plan comptable.\n"
+" "
+
+#. module: account_accountant
+#: model:ir.module.module,shortdesc:account_accountant.module_meta_information
+msgid "Accountant"
+msgstr "Comptable"
diff --git a/addons/account_cancel/i18n/oc.po b/addons/account_cancel/i18n/oc.po
new file mode 100644
index 00000000000..b1f4beeb05a
--- /dev/null
+++ b/addons/account_cancel/i18n/oc.po
@@ -0,0 +1,37 @@
+# Occitan (post 1500) translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:14+0000\n"
+"PO-Revision-Date: 2011-11-20 09:15+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Occitan (post 1500) \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:22+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
+
+#. module: account_cancel
+#: model:ir.module.module,description:account_cancel.module_meta_information
+msgid ""
+"\n"
+" Module adds 'Allow cancelling entries' field on form view of account "
+"journal. If set to true it allows user to cancel entries & invoices.\n"
+" "
+msgstr ""
+"\n"
+" Lo modul apond lo camp 'Permetre l'anullacion de las entradas' dins la "
+"vista formulari del jornal. S'es egal a Verai, aquò permet a l'utilizaire "
+"d'anullar l'entrada e la factura.\n"
+" "
+
+#. module: account_cancel
+#: model:ir.module.module,shortdesc:account_cancel.module_meta_information
+msgid "Account Cancel"
+msgstr "Anullacion comptabla"
diff --git a/addons/base_crypt/i18n/oc.po b/addons/base_crypt/i18n/oc.po
new file mode 100644
index 00000000000..ef234e97cb7
--- /dev/null
+++ b/addons/base_crypt/i18n/oc.po
@@ -0,0 +1,73 @@
+# Occitan (post 1500) translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:14+0000\n"
+"PO-Revision-Date: 2011-11-20 09:17+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Occitan (post 1500) \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:22+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
+
+#. module: base_crypt
+#: sql_constraint:res.users:0
+msgid "You can not have two users with the same login !"
+msgstr "Podètz pas aver dos utilizaires amb lo meteis identificant !"
+
+#. module: base_crypt
+#: model:ir.model,name:base_crypt.model_res_users
+msgid "res.users"
+msgstr "res.users"
+
+#. module: base_crypt
+#: constraint:res.users:0
+msgid "The chosen company is not in the allowed companies for this user"
+msgstr ""
+"La societat causida fa pas partida de las societats autorizadas per aqueste "
+"utilizaire"
+
+#. module: base_crypt
+#: code:addons/base_crypt/crypt.py:132
+#, python-format
+msgid "Please specify the password !"
+msgstr "Entratz un senhal"
+
+#. module: base_crypt
+#: model:ir.module.module,shortdesc:base_crypt.module_meta_information
+msgid "Base - Password Encryption"
+msgstr "Basa - Chifratge del senhal"
+
+#. module: base_crypt
+#: code:addons/base_crypt/crypt.py:132
+#, python-format
+msgid "Error"
+msgstr "Error"
+
+#. module: base_crypt
+#: model:ir.module.module,description:base_crypt.module_meta_information
+msgid ""
+"This module replaces the cleartext password in the database with a password "
+"hash,\n"
+"preventing anyone from reading the original password.\n"
+"For your existing user base, the removal of the cleartext passwords occurs "
+"the first time\n"
+"a user logs into the database, after installing base_crypt.\n"
+"After installing this module it won't be possible to recover a forgotten "
+"password for your\n"
+"users, the only solution is for an admin to set a new password.\n"
+"\n"
+"Note: installing this module does not mean you can ignore basic security "
+"measures,\n"
+"as the password is still transmitted unencrypted on the network (by the "
+"client),\n"
+"unless you are using a secure protocol such as XML-RPCS.\n"
+" "
+msgstr ""
diff --git a/addons/base_tools/i18n/oc.po b/addons/base_tools/i18n/oc.po
new file mode 100644
index 00000000000..47c934ff404
--- /dev/null
+++ b/addons/base_tools/i18n/oc.po
@@ -0,0 +1,32 @@
+# Occitan (post 1500) translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:14+0000\n"
+"PO-Revision-Date: 2011-11-20 09:19+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Occitan (post 1500) \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:22+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
+
+#. module: base_tools
+#: model:ir.module.module,shortdesc:base_tools.module_meta_information
+msgid "Common base for tools modules"
+msgstr "Basa comuna pels moduls utilitaris"
+
+#. module: base_tools
+#: model:ir.module.module,description:base_tools.module_meta_information
+msgid ""
+"\n"
+" "
+msgstr ""
+"\n"
+" "
diff --git a/addons/claim_from_delivery/i18n/oc.po b/addons/claim_from_delivery/i18n/oc.po
new file mode 100644
index 00000000000..e7670a75613
--- /dev/null
+++ b/addons/claim_from_delivery/i18n/oc.po
@@ -0,0 +1,33 @@
+# Occitan (post 1500) translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:14+0000\n"
+"PO-Revision-Date: 2011-11-20 09:19+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Occitan (post 1500) \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:22+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
+
+#. module: claim_from_delivery
+#: model:ir.actions.act_window,name:claim_from_delivery.action_claim_from_delivery
+msgid "Claim"
+msgstr "Reclamacion"
+
+#. module: claim_from_delivery
+#: model:ir.module.module,description:claim_from_delivery.module_meta_information
+msgid "Create Claim from delivery order:\n"
+msgstr "Crear una reclamacion sus un bon de liurason :\n"
+
+#. module: claim_from_delivery
+#: model:ir.module.module,shortdesc:claim_from_delivery.module_meta_information
+msgid "Claim from delivery"
+msgstr "Reclamacion sus la liurason"
diff --git a/addons/crm_caldav/i18n/oc.po b/addons/crm_caldav/i18n/oc.po
new file mode 100644
index 00000000000..58d92403c46
--- /dev/null
+++ b/addons/crm_caldav/i18n/oc.po
@@ -0,0 +1,50 @@
+# Occitan (post 1500) translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:15+0000\n"
+"PO-Revision-Date: 2011-11-20 09:20+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Occitan (post 1500) \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:22+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
+
+#. module: crm_caldav
+#: model:ir.actions.act_window,name:crm_caldav.action_caldav_browse
+msgid "Caldav Browse"
+msgstr "Navigar dins CalDav"
+
+#. module: crm_caldav
+#: model:ir.model,name:crm_caldav.model_crm_meeting
+msgid "Meeting"
+msgstr "Rendètz-vos"
+
+#. module: crm_caldav
+#: model:ir.module.module,shortdesc:crm_caldav.module_meta_information
+msgid "Extended Module to Add CalDav feature on Meeting"
+msgstr "Modul espandit per apondre la foncionalitat CalDav a las acampadas"
+
+#. module: crm_caldav
+#: model:ir.module.module,description:crm_caldav.module_meta_information
+msgid ""
+"\n"
+" New Features in Meeting:\n"
+" * Share meeting with other calendar clients like sunbird\n"
+msgstr ""
+"\n"
+" Foncionalitats novèlas per las acampadas :\n"
+" * Partiment d'acampadas amb d'autres clients de calendièrs coma "
+"sunbird\n"
+
+#. module: crm_caldav
+#: model:ir.ui.menu,name:crm_caldav.menu_caldav_browse
+msgid "Synchronyze this calendar"
+msgstr "Sincronizar aqueste calendièr"
diff --git a/addons/document_ftp/i18n/ar.po b/addons/document_ftp/i18n/ar.po
new file mode 100644
index 00000000000..d0483dce57c
--- /dev/null
+++ b/addons/document_ftp/i18n/ar.po
@@ -0,0 +1,135 @@
+# Arabic translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:15+0000\n"
+"PO-Revision-Date: 2011-11-18 07:10+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Arabic \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-11-19 05:13+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
+
+#. module: document_ftp
+#: model:ir.model,name:document_ftp.model_document_ftp_configuration
+msgid "Auto Directory Configuration"
+msgstr ""
+
+#. module: document_ftp
+#: view:document.ftp.configuration:0
+msgid ""
+"Indicate the network address on which your OpenERP server should be "
+"reachable for end-users. This depends on your network topology and "
+"configuration, and will only affect the links displayed to the users. The "
+"format is HOST:PORT and the default host (localhost) is only suitable for "
+"access from the server machine itself.."
+msgstr ""
+
+#. module: document_ftp
+#: field:document.ftp.configuration,progress:0
+msgid "Configuration Progress"
+msgstr ""
+
+#. module: document_ftp
+#: model:ir.actions.url,name:document_ftp.action_document_browse
+msgid "Browse Files"
+msgstr ""
+
+#. module: document_ftp
+#: field:document.ftp.configuration,config_logo:0
+msgid "Image"
+msgstr "الصورة"
+
+#. module: document_ftp
+#: field:document.ftp.configuration,host:0
+msgid "Address"
+msgstr "العنوان"
+
+#. module: document_ftp
+#: field:document.ftp.browse,url:0
+msgid "FTP Server"
+msgstr ""
+
+#. module: document_ftp
+#: model:ir.actions.act_window,name:document_ftp.action_config_auto_directory
+msgid "FTP Server Configuration"
+msgstr ""
+
+#. module: document_ftp
+#: model:ir.module.module,description:document_ftp.module_meta_information
+msgid ""
+"This is a support FTP Interface with document management system.\n"
+" With this module you would not only be able to access documents through "
+"OpenERP\n"
+" but you would also be able to connect with them through the file system "
+"using the\n"
+" FTP client.\n"
+msgstr ""
+
+#. module: document_ftp
+#: view:document.ftp.browse:0
+msgid "_Browse"
+msgstr ""
+
+#. module: document_ftp
+#: help:document.ftp.configuration,host:0
+msgid ""
+"Server address or IP and port to which users should connect to for DMS access"
+msgstr ""
+
+#. module: document_ftp
+#: model:ir.ui.menu,name:document_ftp.menu_document_browse
+msgid "Shared Repository (FTP)"
+msgstr ""
+
+#. module: document_ftp
+#: view:document.ftp.browse:0
+msgid "_Cancel"
+msgstr ""
+
+#. module: document_ftp
+#: view:document.ftp.configuration:0
+msgid "Configure FTP Server"
+msgstr ""
+
+#. module: document_ftp
+#: model:ir.module.module,shortdesc:document_ftp.module_meta_information
+msgid "Integrated FTP Server with Document Management System"
+msgstr ""
+
+#. module: document_ftp
+#: view:document.ftp.configuration:0
+msgid "title"
+msgstr ""
+
+#. module: document_ftp
+#: model:ir.model,name:document_ftp.model_document_ftp_browse
+msgid "Document FTP Browse"
+msgstr ""
+
+#. module: document_ftp
+#: view:document.ftp.configuration:0
+msgid "Knowledge Application Configuration"
+msgstr ""
+
+#. module: document_ftp
+#: model:ir.actions.act_window,name:document_ftp.action_ftp_browse
+msgid "Document Browse"
+msgstr ""
+
+#. module: document_ftp
+#: view:document.ftp.browse:0
+msgid "Browse Document"
+msgstr ""
+
+#. module: document_ftp
+#: view:document.ftp.configuration:0
+msgid "res_config_contents"
+msgstr ""
diff --git a/addons/l10n_br/i18n/oc.po b/addons/l10n_br/i18n/oc.po
new file mode 100644
index 00000000000..371c4f5adeb
--- /dev/null
+++ b/addons/l10n_br/i18n/oc.po
@@ -0,0 +1,36 @@
+# Occitan (post 1500) translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-07 06:40+0000\n"
+"PO-Revision-Date: 2011-11-20 09:22+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Occitan (post 1500) \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:22+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
+
+#. module: l10n_br
+#: model:ir.actions.todo,note:l10n_br.config_call_account_template_brazilian_localization
+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"
+" This is the same wizard that runs from Financial "
+"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
+"Chart of Accounts from a Chart Template."
+msgstr ""
+
+#. module: l10n_br
+#: model:ir.module.module,description:l10n_br.module_meta_information
+#: model:ir.module.module,shortdesc:l10n_br.module_meta_information
+msgid "Brazilian Localization"
+msgstr "Localizacion brasilièra"
diff --git a/addons/l10n_es/i18n/oc.po b/addons/l10n_es/i18n/oc.po
new file mode 100644
index 00000000000..3abe8d9ae4a
--- /dev/null
+++ b/addons/l10n_es/i18n/oc.po
@@ -0,0 +1,39 @@
+# Occitan (post 1500) translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:15+0000\n"
+"PO-Revision-Date: 2011-11-20 09:22+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Occitan (post 1500) \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:22+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
+
+#. module: l10n_es
+#: model:ir.module.module,shortdesc:l10n_es.module_meta_information
+msgid "Spanish Charts of Accounts (PGCE 2008)"
+msgstr "Plan comptable espanhòl (PGCE 2008)"
+
+#. module: l10n_es
+#: model:ir.module.module,description:l10n_es.module_meta_information
+msgid ""
+"Spanish Charts of Accounts (PGCE 2008)\n"
+"\n"
+"* Defines the following chart of account templates:\n"
+" * Spanish General Chart of Accounts 2008.\n"
+" * Spanish General Chart of Accounts 2008 for small and medium "
+"companies.\n"
+"* Defines templates for sale and purchase VAT.\n"
+"* Defines tax code templates.\n"
+"\n"
+"Note: You should install the l10n_ES_account_balance_report module\n"
+"for yearly account reporting (balance, profit & losses).\n"
+msgstr ""
diff --git a/addons/l10n_gt/i18n/oc.po b/addons/l10n_gt/i18n/oc.po
new file mode 100644
index 00000000000..e077ec6c3c0
--- /dev/null
+++ b/addons/l10n_gt/i18n/oc.po
@@ -0,0 +1,39 @@
+# Occitan (post 1500) translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:15+0000\n"
+"PO-Revision-Date: 2011-11-20 09:23+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Occitan (post 1500) \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:22+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
+
+#. module: l10n_gt
+#: model:ir.module.module,shortdesc:l10n_gt.module_meta_information
+msgid "Guatemala - Plan contable general"
+msgstr "Guatemala - Plan comptable general"
+
+#. module: l10n_gt
+#: model:ir.actions.todo,note:l10n_gt.config_call_account_template_gt_minimal
+msgid ""
+"Generar la nomenclatura contable a partir de un modelo. Deberá seleccionar "
+"una compañía, el modelo a utilizar, el número de digitos a usar en la "
+"nomenclatura, la moneda para crear los diarios."
+msgstr ""
+
+#. module: l10n_gt
+#: model:ir.module.module,description:l10n_gt.module_meta_information
+msgid ""
+"Agrega una nomenclatura contable para Guatemala. También icluye impuestos y "
+"la moneda del Quetzal. -- Adds accounting chart for Guatemala. It also "
+"includes taxes and the Quetzal currency"
+msgstr ""
diff --git a/addons/l10n_in/i18n/oc.po b/addons/l10n_in/i18n/oc.po
new file mode 100644
index 00000000000..f52b722a33a
--- /dev/null
+++ b/addons/l10n_in/i18n/oc.po
@@ -0,0 +1,46 @@
+# Occitan (post 1500) translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:15+0000\n"
+"PO-Revision-Date: 2011-11-20 09:23+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Occitan (post 1500) \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:22+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
+
+#. module: l10n_in
+#: model:ir.module.module,description:l10n_in.module_meta_information
+msgid ""
+"\n"
+" Indian Accounting : chart of Account\n"
+" "
+msgstr ""
+"\n"
+" Comptabilitat indiana : plan de comptes\n"
+" "
+
+#. module: l10n_in
+#: model:ir.module.module,shortdesc:l10n_in.module_meta_information
+msgid "Indian Chart of Account"
+msgstr "Plan comptable indian"
+
+#. module: l10n_in
+#: model:ir.actions.todo,note:l10n_in.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 ""
diff --git a/addons/project_retro_planning/i18n/oc.po b/addons/project_retro_planning/i18n/oc.po
new file mode 100644
index 00000000000..7451fd7b147
--- /dev/null
+++ b/addons/project_retro_planning/i18n/oc.po
@@ -0,0 +1,47 @@
+# Occitan (post 1500) translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:15+0000\n"
+"PO-Revision-Date: 2011-11-20 09:25+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Occitan (post 1500) \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:22+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
+
+#. module: project_retro_planning
+#: model:ir.model,name:project_retro_planning.model_project_project
+msgid "Project"
+msgstr "Projècte"
+
+#. module: project_retro_planning
+#: model:ir.module.module,shortdesc:project_retro_planning.module_meta_information
+msgid "Project Retro planning"
+msgstr "Retroplanificacion de projèctes"
+
+#. module: project_retro_planning
+#: model:ir.module.module,description:project_retro_planning.module_meta_information
+msgid ""
+"\n"
+" - If end date of project is changed\n"
+" then the deadline date and start date for all the tasks will "
+"change accordingly "
+msgstr ""
+
+#. module: project_retro_planning
+#: constraint:project.project:0
+msgid "Error! project start-date must be lower then project end-date."
+msgstr ""
+
+#. module: project_retro_planning
+#: constraint:project.project:0
+msgid "Error! You cannot assign escalation to the same project!"
+msgstr ""
diff --git a/addons/sale/i18n/oc.po b/addons/sale/i18n/oc.po
new file mode 100644
index 00000000000..b40a8630c3d
--- /dev/null
+++ b/addons/sale/i18n/oc.po
@@ -0,0 +1,2059 @@
+# Occitan (post 1500) translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:16+0000\n"
+"PO-Revision-Date: 2011-11-20 09:33+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Occitan (post 1500) \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:22+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
+
+#. module: sale
+#: view:board.board:0
+#: model:ir.actions.act_window,name:sale.action_sales_by_salesman
+msgid "Sales by Salesman in last 90 days"
+msgstr ""
+
+#. module: sale
+#: help:sale.installer,delivery:0
+msgid "Allows you to compute delivery costs on your quotations."
+msgstr ""
+
+#. module: sale
+#: help:sale.order,picking_policy:0
+msgid ""
+"If you don't have enough stock available to deliver all at once, do you "
+"accept partial shipments or not?"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,partner_shipping_id:0
+msgid "Shipping address for current sales order."
+msgstr ""
+
+#. module: sale
+#: field:sale.advance.payment.inv,qtty:0
+#: report:sale.order:0
+msgid "Quantity"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+#: field:sale.report,day:0
+msgid "Day"
+msgstr ""
+
+#. module: sale
+#: model:process.transition.action,name:sale.process_transition_action_cancelorder0
+#: view:sale.order:0
+msgid "Cancel Order"
+msgstr ""
+
+#. module: sale
+#: view:sale.config.picking_policy:0
+msgid "Configure Sales Order Logistics"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:603
+#, python-format
+msgid "The quotation '%s' has been converted to a sales order."
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,order_policy:0
+msgid "Payment Before Delivery"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/wizard/sale_make_invoice.py:42
+#, python-format
+msgid "Warning !"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "VAT"
+msgstr ""
+
+#. module: sale
+#: model:process.node,note:sale.process_node_saleorderprocurement0
+msgid "Drives procurement orders for every sales order line."
+msgstr ""
+
+#. module: sale
+#: selection:sale.config.picking_policy,picking_policy:0
+msgid "All at Once"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,project_id:0
+#: view:sale.report:0
+#: field:sale.report,analytic_account_id:0
+#: field:sale.shop,project_id:0
+msgid "Analytic Account"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,help:sale.action_order_line_tree2
+msgid ""
+"Here is a list of each sales order line to be invoiced. You can invoice "
+"sales orders partially, by lines of sales order. You do not need this list "
+"if you invoice from the delivery orders or if you invoice sales totally."
+msgstr ""
+
+#. module: sale
+#: model:process.node,name:sale.process_node_saleprocurement0
+msgid "Procurement Order"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+#: field:sale.report,partner_id:0
+msgid "Partner"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Order Line"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,help:sale.action_order_form
+msgid ""
+"Sales Orders help you manage quotations and orders from your customers. "
+"OpenERP suggests that you start by creating a quotation. Once it is "
+"confirmed, the quotation will be converted into a Sales Order. OpenERP can "
+"handle several types of products so that a sales order may trigger tasks, "
+"delivery orders, manufacturing orders, purchases and so on. Based on the "
+"configuration of the sales order, a draft invoice will be generated so that "
+"you just have to confirm it when you want to bill your customer."
+msgstr ""
+
+#. module: sale
+#: help:sale.order,invoice_quantity:0
+msgid ""
+"The sale order will automatically create the invoice proposition (draft "
+"invoice). Ordered and delivered quantities may not be the same. You have to "
+"choose if you want your invoice based on ordered or shipped quantities. If "
+"the product is a service, shipped quantities means hours spent on the "
+"associated tasks."
+msgstr ""
+
+#. module: sale
+#: field:sale.shop,payment_default_id:0
+msgid "Default Payment Term"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_config_picking_policy
+msgid "Configure Picking Policy for Sales Order"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+#: view:sale.order.line:0
+#: field:sale.order.line,state:0
+#: view:sale.report:0
+msgid "State"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Disc.(%)"
+msgstr ""
+
+#. module: sale
+#: model:process.transition.action,name:sale.process_transition_action_forceassignation0
+msgid "Force Assignation"
+msgstr ""
+
+#. module: sale
+#: help:sale.make.invoice,grouped:0
+msgid "Check the box to group the invoices for the same customers"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,invoice_quantity:0
+msgid "Ordered Quantities"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+msgid "Sales by Salesman"
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,move_ids:0
+msgid "Inventory Moves"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,name:0
+#: field:sale.order.line,order_id:0
+msgid "Order Reference"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Other Information"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Dates"
+msgstr ""
+
+#. module: sale
+#: model:process.transition,note:sale.process_transition_invoiceafterdelivery0
+msgid ""
+"The invoice is created automatically if the shipping policy is 'Invoice from "
+"pick' or 'Invoice on order after delivery'."
+msgstr ""
+
+#. module: sale
+#: model:ir.model,name:sale.model_sale_make_invoice
+msgid "Sales Make Invoice"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Recreate Packing"
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,discount:0
+msgid "Discount (%)"
+msgstr ""
+
+#. module: sale
+#: help:res.company,security_lead:0
+msgid ""
+"This is the days added to what you promise to customers for security purpose"
+msgstr ""
+
+#. module: sale
+#: view:board.board:0
+#: model:ir.actions.act_window,name:sale.open_board_sales_manager
+#: model:ir.ui.menu,name:sale.menu_board_sales_manager
+msgid "Sales Manager Dashboard"
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,product_packaging:0
+msgid "Packaging"
+msgstr ""
+
+#. module: sale
+#: model:process.transition,name:sale.process_transition_saleinvoice0
+msgid "From a sales order"
+msgstr ""
+
+#. module: sale
+#: field:sale.shop,name:0
+msgid "Shop Name"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:1014
+#, python-format
+msgid "No Customer Defined !"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_order_tree2
+msgid "Sales in Exception"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Set to Draft"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Conditions"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,order_policy:0
+msgid ""
+"The Shipping Policy is used to synchronise invoice and delivery operations.\n"
+" - The 'Pay Before delivery' choice will first generate the invoice and "
+"then generate the picking order after the payment of this invoice.\n"
+" - The 'Shipping & Manual Invoice' will create the picking order directly "
+"and wait for the user to manually click on the 'Invoice' button to generate "
+"the draft invoice.\n"
+" - The 'Invoice On Order After Delivery' choice will generate the draft "
+"invoice based on sales order after all picking lists have been finished.\n"
+" - The 'Invoice From The Picking' choice is used to create an invoice "
+"during the picking process."
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:939
+#, python-format
+msgid ""
+"There is no income category account defined in default Properties for "
+"Product Category or Fiscal Position is not defined !"
+msgstr ""
+
+#. module: sale
+#: view:sale.installer:0
+msgid "Configure"
+msgstr ""
+
+#. module: sale
+#: constraint:stock.move:0
+msgid "You try to assign a lot which is not from the same product"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:620
+#, python-format
+msgid "invalid mode for test_state"
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "June"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:584
+#, python-format
+msgid "Could not cancel this sales order !"
+msgstr ""
+
+#. module: sale
+#: model:ir.model,name:sale.model_sale_report
+msgid "Sales Orders Statistics"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,project_id:0
+msgid "The analytic account related to a sales order."
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "October"
+msgstr ""
+
+#. module: sale
+#: view:board.board:0
+#: model:ir.actions.act_window,name:sale.action_quotation_for_sale
+#: view:sale.order:0
+#: view:sale.report:0
+msgid "Quotations"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,pricelist_id:0
+msgid "Pricelist for current sales order."
+msgstr ""
+
+#. module: sale
+#: selection:sale.config.picking_policy,step:0
+msgid "Delivery Order Only"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "TVA :"
+msgstr ""
+
+#. module: sale
+#: help:sale.order.line,delay:0
+msgid ""
+"Number of days between the order confirmation the shipping of the products "
+"to the customer"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Quotation Date"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,fiscal_position:0
+msgid "Fiscal Position"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+#: view:sale.order.line:0
+msgid "UoM"
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,number_packages:0
+msgid "Number Packages"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,state:0
+#: selection:sale.report,state:0
+msgid "In Progress"
+msgstr ""
+
+#. module: sale
+#: model:process.transition,note:sale.process_transition_confirmquotation0
+msgid ""
+"The salesman confirms the quotation. The state of the sales order becomes "
+"'In progress' or 'Manual in progress'."
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:971
+#, python-format
+msgid "You must first cancel stock moves attached to this sales order line."
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:1042
+#, python-format
+msgid "(n/a)"
+msgstr ""
+
+#. module: sale
+#: help:sale.advance.payment.inv,product_id:0
+msgid ""
+"Select a product of type service which is called 'Advance Product'. You may "
+"have to create it and set it as a default value on this field."
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Tel. :"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/wizard/sale_make_invoice_advance.py:64
+#, python-format
+msgid ""
+"You cannot make an advance on a sales order "
+"that is defined as 'Automatic Invoice after delivery'."
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+#: field:sale.order,note:0
+#: view:sale.order.line:0
+#: field:sale.order.line,notes:0
+msgid "Notes"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,partner_invoice_id:0
+msgid "Invoice address for current sales order."
+msgstr ""
+
+#. module: sale
+#: view:sale.installer:0
+msgid "Enhance your core Sales Application with additional functionalities."
+msgstr ""
+
+#. module: sale
+#: field:sale.order,invoiced_rate:0
+#: field:sale.order.line,invoiced:0
+msgid "Invoiced"
+msgstr ""
+
+#. module: sale
+#: model:process.node,name:sale.process_node_deliveryorder0
+msgid "Delivery Order"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,date_confirm:0
+msgid "Confirmation Date"
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,address_allotment_id:0
+msgid "Allotment Partner"
+msgstr ""
+
+#. module: sale
+#: sql_constraint:sale.order:0
+msgid "Order Reference must be unique !"
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "March"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,amount_total:0
+msgid "The total amount."
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,price_subtotal:0
+msgid "Subtotal"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Invoice address :"
+msgstr ""
+
+#. module: sale
+#: model:process.transition,note:sale.process_transition_saleorderprocurement0
+msgid ""
+"For every sales order line, a procurement order is created to supply the "
+"sold product."
+msgstr ""
+
+#. module: sale
+#: help:sale.order,incoterm:0
+msgid ""
+"Incoterm which stands for 'International Commercial terms' implies its a "
+"series of sales terms which are used in the commercial transaction."
+msgstr ""
+
+#. module: sale
+#: field:sale.order,partner_invoice_id:0
+msgid "Invoice Address"
+msgstr ""
+
+#. module: sale
+#: view:sale.order.line:0
+msgid "Search Uninvoiced Lines"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.report.xml,name:sale.report_sale_order
+msgid "Quotation / Order"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+#: field:sale.report,nbr:0
+msgid "# of Lines"
+msgstr ""
+
+#. module: sale
+#: model:ir.model,name:sale.model_sale_open_invoice
+msgid "Sales Open Invoice"
+msgstr ""
+
+#. module: sale
+#: model:ir.model,name:sale.model_sale_order_line
+#: field:stock.move,sale_line_id:0
+msgid "Sales Order Line"
+msgstr ""
+
+#. module: sale
+#: view:sale.config.picking_policy:0
+msgid "Setup your sales workflow and default values."
+msgstr ""
+
+#. module: sale
+#: field:sale.shop,warehouse_id:0
+msgid "Warehouse"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Order N°"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,order_line:0
+msgid "Order Lines"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Untaxed amount"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_order_line_tree2
+#: model:ir.ui.menu,name:sale.menu_invoicing_sales_order_lines
+msgid "Lines to Invoice"
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,product_uom_qty:0
+msgid "Quantity (UoM)"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,create_date:0
+msgid "Creation Date"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_order_line_tree3
+msgid "Uninvoiced and Delivered Lines"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Total :"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+msgid "My Sales"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:290
+#: code:addons/sale/sale.py:966
+#: code:addons/sale/sale.py:1165
+#, python-format
+msgid "Invalid action !"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,pricelist_id:0
+#: field:sale.report,pricelist_id:0
+#: field:sale.shop,pricelist_id:0
+msgid "Pricelist"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+#: field:sale.report,product_uom_qty:0
+msgid "# of Qty"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Order Date"
+msgstr ""
+
+#. module: sale
+#: view:sale.order.line:0
+#: field:sale.report,shipped:0
+msgid "Shipped"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_order_tree5
+msgid "All Quotations"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,order_policy:0
+msgid "Invoice On Order After Delivery"
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "September"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+#: field:sale.report,categ_id:0
+msgid "Category of Product"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Taxes :"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Stock Moves"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+msgid " Year "
+msgstr ""
+
+#. module: sale
+#: field:sale.order,state:0
+#: field:sale.report,state:0
+msgid "Order State"
+msgstr ""
+
+#. module: sale
+#: view:sale.make.invoice:0
+#: view:sale.order.line.make.invoice:0
+msgid "Do you really want to create the invoice(s) ?"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+msgid "Sales By Month"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:970
+#, python-format
+msgid "Could not cancel sales order line!"
+msgstr ""
+
+#. module: sale
+#: field:res.company,security_lead:0
+msgid "Security Days"
+msgstr ""
+
+#. module: sale
+#: model:process.transition,name:sale.process_transition_saleorderprocurement0
+msgid "Procurement of sold material"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Create Final Invoice"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,partner_shipping_id:0
+msgid "Shipping Address"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,shipped:0
+msgid ""
+"It indicates that the sales order has been delivered. This field is updated "
+"only after the scheduler(s) have been launched."
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+msgid "Extended Filters..."
+msgstr ""
+
+#. module: sale
+#: model:ir.module.module,description:sale.module_meta_information
+msgid ""
+"\n"
+" The base module to manage quotations and sales orders.\n"
+"\n"
+" * Workflow with validation steps:\n"
+" - Quotation -> Sales order -> Invoice\n"
+" * Invoicing methods:\n"
+" - Invoice on order (before or after shipping)\n"
+" - Invoice on delivery\n"
+" - Invoice on timesheets\n"
+" - Advance invoice\n"
+" * Partners preferences (shipping, invoicing, incoterm, ...)\n"
+" * Products stocks and prices\n"
+" * Delivery methods:\n"
+" - all at once, multi-parcel\n"
+" - delivery costs\n"
+" * Dashboard for salesman that includes:\n"
+" * Your open quotations\n"
+" * Top 10 sales of the month\n"
+" * Cases statistics\n"
+" * Graph of sales by product\n"
+" * Graph of cases of the month\n"
+" "
+msgstr ""
+
+#. module: sale
+#: model:ir.model,name:sale.model_sale_shop
+#: view:sale.shop:0
+msgid "Sales Shop"
+msgstr ""
+
+#. module: sale
+#: model:ir.model,name:sale.model_res_company
+msgid "Companies"
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "November"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "History"
+msgstr ""
+
+#. module: sale
+#: field:sale.config.picking_policy,picking_policy:0
+msgid "Picking Default Policy"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,invoice_ids:0
+msgid ""
+"This is the list of invoices that have been generated for this sales order. "
+"The same sales order may have been invoiced in several times (by line for "
+"example)."
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Your Reference"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,partner_order_id:0
+msgid ""
+"The name and address of the contact who requested the order or quotation."
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:966
+#, python-format
+msgid "You cannot cancel a sales order line that has already been invoiced !"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+#: view:sale.order.line:0
+msgid "Qty"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "References"
+msgstr ""
+
+#. module: sale
+#: model:process.transition.action,name:sale.process_transition_action_cancel0
+#: model:process.transition.action,name:sale.process_transition_action_cancel1
+#: model:process.transition.action,name:sale.process_transition_action_cancel2
+#: view:sale.advance.payment.inv:0
+#: view:sale.make.invoice:0
+#: view:sale.order.line:0
+#: view:sale.order.line.make.invoice:0
+msgid "Cancel"
+msgstr ""
+
+#. module: sale
+#: field:sale.installer,sale_order_dates:0
+msgid "Sales Order Dates"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order.line,state:0
+msgid "Exception"
+msgstr ""
+
+#. module: sale
+#: model:process.transition,name:sale.process_transition_invoice0
+#: model:process.transition,name:sale.process_transition_invoiceafterdelivery0
+#: model:process.transition.action,name:sale.process_transition_action_createinvoice0
+#: view:sale.advance.payment.inv:0
+#: view:sale.order.line:0
+msgid "Create Invoice"
+msgstr ""
+
+#. module: sale
+#: field:sale.installer,sale_margin:0
+msgid "Margins in Sales Orders"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Total Tax Excluded"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Compute"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+msgid "Sales by Partner"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,partner_order_id:0
+msgid "Ordering Contact"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_view_sale_open_invoice
+#: view:sale.open.invoice:0
+msgid "Open Invoice"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+#: view:sale.order.line:0
+msgid "Price"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_sale_installer
+#: view:sale.config.picking_policy:0
+#: view:sale.installer:0
+msgid "Sales Application Configuration"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+#: field:sale.report,price_total:0
+msgid "Total Price"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order.line,type:0
+msgid "on order"
+msgstr ""
+
+#. module: sale
+#: model:process.node,note:sale.process_node_invoiceafterdelivery0
+msgid "Based on the shipped or on the ordered quantities."
+msgstr ""
+
+#. module: sale
+#: field:sale.order,picking_ids:0
+msgid "Related Picking"
+msgstr ""
+
+#. module: sale
+#: field:sale.config.picking_policy,name:0
+msgid "Name"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Shipping address :"
+msgstr ""
+
+#. module: sale
+#: view:board.board:0
+#: model:ir.actions.act_window,name:sale.action_sales_by_partner
+msgid "Sales per Customer in last 90 days"
+msgstr ""
+
+#. module: sale
+#: model:process.node,note:sale.process_node_quotation0
+msgid "Draft state of sales order"
+msgstr ""
+
+#. module: sale
+#: model:process.transition,name:sale.process_transition_deliver0
+msgid "Create Delivery Order"
+msgstr ""
+
+#. module: sale
+#: field:sale.installer,delivery:0
+msgid "Delivery Costs"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Total Tax Included"
+msgstr ""
+
+#. module: sale
+#: model:process.transition,name:sale.process_transition_packing0
+msgid "Create Pick List"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+msgid "Sales by Product Category"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,picking_policy:0
+msgid "Partial Delivery"
+msgstr ""
+
+#. module: sale
+#: model:process.transition,name:sale.process_transition_confirmquotation0
+msgid "Confirm Quotation"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,origin:0
+msgid "Reference of the document that generated this sales order request."
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+#: view:sale.order.line:0
+#: view:sale.report:0
+msgid "Group By..."
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Recreate Invoice"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.outgoing_picking_list_to_invoice
+#: model:ir.ui.menu,name:sale.menu_action_picking_list_to_invoice
+msgid "Deliveries to Invoice"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,state:0
+#: selection:sale.report,state:0
+msgid "Waiting Schedule"
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,type:0
+msgid "Procurement Method"
+msgstr ""
+
+#. module: sale
+#: view:sale.config.picking_policy:0
+#: view:sale.installer:0
+msgid "title"
+msgstr ""
+
+#. module: sale
+#: model:process.node,name:sale.process_node_packinglist0
+msgid "Pick List"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Order date"
+msgstr ""
+
+#. module: sale
+#: model:process.node,note:sale.process_node_packinglist0
+msgid "Document of the move to the output or to the customer."
+msgstr ""
+
+#. module: sale
+#: model:process.transition.action,name:sale.process_transition_action_validate0
+msgid "Validate"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Confirm Order"
+msgstr ""
+
+#. module: sale
+#: model:process.transition,name:sale.process_transition_saleprocurement0
+msgid "Create Procurement Order"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+#: field:sale.order,amount_tax:0
+#: field:sale.order.line,tax_id:0
+msgid "Taxes"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,order_policy:0
+msgid "Shipping Policy"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,create_date:0
+msgid "Date on which sales order is created."
+msgstr ""
+
+#. module: sale
+#: model:ir.model,name:sale.model_stock_move
+msgid "Stock Move"
+msgstr ""
+
+#. module: sale
+#: view:sale.make.invoice:0
+#: view:sale.order.line.make.invoice:0
+msgid "Create Invoices"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Extra Info"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Fax :"
+msgstr ""
+
+#. module: sale
+#: field:sale.advance.payment.inv,amount:0
+msgid "Advance Amount"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,invoice_quantity:0
+msgid "Shipped Quantities"
+msgstr ""
+
+#. module: sale
+#: selection:sale.config.picking_policy,order_policy:0
+msgid "Invoice Based on Sales Orders"
+msgstr ""
+
+#. module: sale
+#: model:ir.model,name:sale.model_stock_picking
+msgid "Picking List"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:387
+#: code:addons/sale/sale.py:920
+#: code:addons/sale/sale.py:938
+#, python-format
+msgid "Error !"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:570
+#, python-format
+msgid "Could not cancel sales order !"
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "July"
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,procurement_id:0
+msgid "Procurement"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,state:0
+#: selection:sale.report,state:0
+msgid "Shipping Exception"
+msgstr ""
+
+#. module: sale
+#: field:sale.make.invoice,grouped:0
+msgid "Group the invoices"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,order_policy:0
+msgid "Shipping & Manual Invoice"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:1051
+#, python-format
+msgid "Picking Information !"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+#: field:sale.report,month:0
+msgid "Month"
+msgstr ""
+
+#. module: sale
+#: model:ir.module.module,shortdesc:sale.module_meta_information
+msgid "Sales Management"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,order_policy:0
+msgid "Invoice From The Picking"
+msgstr ""
+
+#. module: sale
+#: model:process.node,note:sale.process_node_invoice0
+msgid "To be reviewed by the accountant."
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+#: field:sale.report,uom_name:0
+msgid "Reference UoM"
+msgstr ""
+
+#. module: sale
+#: model:ir.model,name:sale.model_sale_order_line_make_invoice
+msgid "Sale OrderLine Make_invoice"
+msgstr ""
+
+#. module: sale
+#: help:sale.config.picking_policy,step:0
+msgid ""
+"By default, OpenERP is able to manage complex routing and paths of products "
+"in your warehouse and partner locations. This will configure the most common "
+"and simple methods to deliver products to the customer in one or two "
+"operations by the worker."
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_order_tree
+msgid "Old Quotations"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,invoiced:0
+msgid "Paid"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_order_report_all
+#: model:ir.ui.menu,name:sale.menu_report_product_all
+#: view:sale.report:0
+msgid "Sales Analysis"
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,property_ids:0
+msgid "Properties"
+msgstr ""
+
+#. module: sale
+#: model:process.node,name:sale.process_node_quotation0
+#: selection:sale.order,state:0
+#: selection:sale.report,state:0
+msgid "Quotation"
+msgstr ""
+
+#. module: sale
+#: model:process.transition,note:sale.process_transition_invoice0
+msgid ""
+"The Salesman creates an invoice manually, if the sales order shipping policy "
+"is 'Shipping and Manual in Progress'. The invoice is created automatically "
+"if the shipping policy is 'Payment before Delivery'."
+msgstr ""
+
+#. module: sale
+#: help:sale.config.picking_policy,order_policy:0
+msgid ""
+"You can generate invoices based on sales orders or based on shippings."
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.act_res_partner_2_sale_order
+#: model:process.process,name:sale.process_process_salesprocess0
+#: view:sale.order:0
+#: view:sale.report:0
+msgid "Sales"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+#: field:sale.order.line,price_unit:0
+msgid "Unit Price"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,state:0
+#: view:sale.order.line:0
+#: selection:sale.order.line,state:0
+#: selection:sale.report,state:0
+msgid "Done"
+msgstr ""
+
+#. module: sale
+#: model:ir.model,name:sale.model_sale_installer
+msgid "sale.installer"
+msgstr ""
+
+#. module: sale
+#: model:process.node,name:sale.process_node_invoice0
+#: model:process.node,name:sale.process_node_invoiceafterdelivery0
+msgid "Invoice"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:1014
+#, python-format
+msgid ""
+"You have to select a customer in the sales form !\n"
+"Please set one customer before choosing a product."
+msgstr ""
+
+#. module: sale
+#: selection:sale.config.picking_policy,step:0
+msgid "Picking List & Delivery Order"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,origin:0
+msgid "Source Document"
+msgstr ""
+
+#. module: sale
+#: view:sale.order.line:0
+msgid "To Do"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,picking_policy:0
+msgid "Picking Policy"
+msgstr ""
+
+#. module: sale
+#: model:process.node,note:sale.process_node_deliveryorder0
+msgid "Document of the move to the customer."
+msgstr ""
+
+#. module: sale
+#: help:sale.order,amount_untaxed:0
+msgid "The amount without tax."
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:571
+#, python-format
+msgid "You must first cancel all picking attached to this sales order."
+msgstr ""
+
+#. module: sale
+#: model:ir.model,name:sale.model_sale_advance_payment_inv
+msgid "Sales Advance Payment Invoice"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,incoterm:0
+msgid "Incoterm"
+msgstr ""
+
+#. module: sale
+#: view:sale.order.line:0
+#: field:sale.order.line,product_id:0
+#: view:sale.report:0
+#: field:sale.report,product_id:0
+msgid "Product"
+msgstr ""
+
+#. module: sale
+#: model:ir.ui.menu,name:sale.menu_invoiced
+msgid "Invoicing"
+msgstr ""
+
+#. module: sale
+#: model:process.transition.action,name:sale.process_transition_action_cancelassignation0
+msgid "Cancel Assignation"
+msgstr ""
+
+#. module: sale
+#: model:ir.model,name:sale.model_sale_config_picking_policy
+msgid "sale.config.picking_policy"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,state:0
+msgid ""
+"Gives the state of the quotation or sales order. \n"
+"The exception state is automatically set when a cancel operation occurs in "
+"the invoice validation (Invoice Exception) or in the picking list process "
+"(Shipping Exception). \n"
+"The 'Waiting Schedule' state is set when the invoice is confirmed but "
+"waiting for the scheduler to run on the date 'Ordered Date'."
+msgstr ""
+
+#. module: sale
+#: field:sale.order,invoice_quantity:0
+msgid "Invoice on"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Date Ordered"
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,product_uos:0
+msgid "Product UoS"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,state:0
+#: selection:sale.report,state:0
+msgid "Manual In Progress"
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,product_uom:0
+msgid "Product UoM"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Logistic"
+msgstr ""
+
+#. module: sale
+#: view:sale.order.line:0
+msgid "Order"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:921
+#, python-format
+msgid "There is no income account defined for this product: \"%s\" (id:%d)"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Ignore Exception"
+msgstr ""
+
+#. module: sale
+#: model:process.transition,note:sale.process_transition_saleinvoice0
+msgid ""
+"Depending on the Invoicing control of the sales order, the invoice can be "
+"based on delivered or on ordered quantities. Thus, a sales order can "
+"generates an invoice or a delivery order as soon as it is confirmed by the "
+"salesman."
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:1116
+#, python-format
+msgid ""
+"You plan to sell %.2f %s but you only have %.2f %s available !\n"
+"The real stock is %.2f %s. (without reservations)"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "States"
+msgstr ""
+
+#. module: sale
+#: view:sale.config.picking_policy:0
+msgid "res_config_contents"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,client_order_ref:0
+msgid "Customer Reference"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,amount_total:0
+#: view:sale.order.line:0
+msgid "Total"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:388
+#, python-format
+msgid "There is no sales journal defined for this company: \"%s\" (id:%d)"
+msgstr ""
+
+#. module: sale
+#: model:process.transition,note:sale.process_transition_deliver0
+msgid ""
+"Depending on the configuration of the location Output, the move between the "
+"output area and the customer is done through the Delivery Order manually or "
+"automatically."
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:1165
+#, python-format
+msgid "Cannot delete a sales order line which is %s !"
+msgstr ""
+
+#. module: sale
+#: 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
+#: view:sale.order:0
+msgid "Make Invoices"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+#: view:sale.order.line:0
+msgid "To Invoice"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,date_confirm:0
+msgid "Date on which sales order is confirmed."
+msgstr ""
+
+#. module: sale
+#: field:sale.order,company_id:0
+#: field:sale.order.line,company_id:0
+#: view:sale.report:0
+#: field:sale.report,company_id:0
+#: field:sale.shop,company_id:0
+msgid "Company"
+msgstr ""
+
+#. module: sale
+#: field:sale.make.invoice,invoice_date:0
+msgid "Invoice Date"
+msgstr ""
+
+#. module: sale
+#: help:sale.advance.payment.inv,amount:0
+msgid "The amount to be invoiced in advance."
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,state:0
+#: selection:sale.report,state:0
+msgid "Invoice Exception"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,picking_ids:0
+msgid ""
+"This is a list of picking that has been generated for this sales order."
+msgstr ""
+
+#. module: sale
+#: help:sale.installer,sale_margin:0
+msgid ""
+"Gives the margin of profitability by calculating the difference between Unit "
+"Price and Cost Price."
+msgstr ""
+
+#. module: sale
+#: view:sale.make.invoice:0
+#: view:sale.order.line.make.invoice:0
+msgid "Create invoices"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Net Total :"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,state:0
+#: selection:sale.order.line,state:0
+#: selection:sale.report,state:0
+msgid "Cancelled"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_shop_form
+#: model:ir.ui.menu,name:sale.menu_action_shop_form
+#: field:sale.order,shop_id:0
+#: view:sale.report:0
+#: field:sale.report,shop_id:0
+msgid "Shop"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+msgid " Month "
+msgstr ""
+
+#. module: sale
+#: field:sale.report,date_confirm:0
+msgid "Date Confirm"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/wizard/sale_line_invoice.py:111
+#, python-format
+msgid "Warning"
+msgstr ""
+
+#. module: sale
+#: view:board.board:0
+#: model:ir.actions.act_window,name:sale.action_view_sales_by_month
+msgid "Sales by Month"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:1045
+#, python-format
+msgid ""
+"You selected a quantity of %d Units.\n"
+"But it's not compatible with the selected packaging.\n"
+"Here is a proposition of quantities according to the packaging:\n"
+"\n"
+"EAN: %s Quantity: %s Type of ul: %s"
+msgstr ""
+
+#. module: sale
+#: model:ir.model,name:sale.model_sale_order
+#: model:process.node,name:sale.process_node_order0
+#: model:process.node,name:sale.process_node_saleorder0
+#: model:res.request.link,name:sale.req_link_sale_order
+#: view:sale.order:0
+#: field:stock.picking,sale_id:0
+msgid "Sales Order"
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,product_uos_qty:0
+msgid "Quantity (UoS)"
+msgstr ""
+
+#. module: sale
+#: model:process.transition,note:sale.process_transition_packing0
+msgid ""
+"The Pick List form is created as soon as the sales order is confirmed, in "
+"the same time as the procurement order. It represents the assignment of "
+"parts to the sales order. There is 1 pick list by sales order line which "
+"evolves with the availability of parts."
+msgstr ""
+
+#. module: sale
+#: selection:sale.order.line,state:0
+msgid "Confirmed"
+msgstr ""
+
+#. module: sale
+#: model:process.transition.action,name:sale.process_transition_action_confirm0
+msgid "Confirm"
+msgstr ""
+
+#. module: sale
+#: constraint:res.company:0
+msgid "Error! You can not create recursive companies."
+msgstr ""
+
+#. module: sale
+#: view:board.board:0
+#: model:ir.actions.act_window,name:sale.action_sales_product_total_price
+msgid "Sales by Product's Category in last 90 days"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+#: field:sale.order.line,invoice_lines:0
+msgid "Invoice Lines"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+#: view:sale.order.line:0
+msgid "Sales Order Lines"
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,delay:0
+msgid "Delivery Lead Time"
+msgstr ""
+
+#. module: sale
+#: view:res.company:0
+msgid "Configuration"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,picking_policy:0
+msgid "Complete Delivery"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+msgid " Month-1 "
+msgstr ""
+
+#. module: sale
+#: help:sale.config.picking_policy,picking_policy:0
+msgid ""
+"The Shipping Policy is used to configure per order if you want to deliver as "
+"soon as possible when one product is available or you wait that all products "
+"are available.."
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "August"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/wizard/sale_line_invoice.py:111
+#, python-format
+msgid ""
+"Invoice cannot be created for this Sales Order Line due to one of the "
+"following reasons:\n"
+"1.The state of this sales order line is either \"draft\" or \"cancel\"!\n"
+"2.The Sales Order Line is Invoiced!"
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,th_weight:0
+msgid "Weight"
+msgstr ""
+
+#. module: sale
+#: view:sale.open.invoice:0
+#: view:sale.order:0
+#: field:sale.order,invoice_ids:0
+msgid "Invoices"
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "December"
+msgstr ""
+
+#. module: sale
+#: field:sale.config.picking_policy,config_logo:0
+#: field:sale.installer,config_logo:0
+msgid "Image"
+msgstr ""
+
+#. module: sale
+#: model:process.transition,note:sale.process_transition_saleprocurement0
+msgid ""
+"A procurement order is automatically created as soon as a sales order is "
+"confirmed or as the invoice is paid. It drives the purchasing and the "
+"production of products regarding to the rules and to the sales order's "
+"parameters. "
+msgstr ""
+
+#. module: sale
+#: view:sale.order.line:0
+msgid "Uninvoiced"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+#: view:sale.order:0
+#: field:sale.order,user_id:0
+#: view:sale.order.line:0
+#: field:sale.order.line,salesman_id:0
+#: view:sale.report:0
+#: field:sale.report,user_id:0
+msgid "Salesman"
+msgstr ""
+
+#. module: sale
+#: model:process.node,note:sale.process_node_saleorder0
+msgid "Drives procurement and invoicing"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,amount_untaxed:0
+msgid "Untaxed Amount"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/wizard/sale_make_invoice_advance.py:163
+#: model:ir.actions.act_window,name:sale.action_view_sale_advance_payment_inv
+#: view:sale.advance.payment.inv:0
+#: view:sale.order:0
+#, python-format
+msgid "Advance Invoice"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:591
+#, python-format
+msgid "The sales order '%s' has been cancelled."
+msgstr ""
+
+#. module: sale
+#: selection:sale.order.line,state:0
+msgid "Draft"
+msgstr ""
+
+#. module: sale
+#: help:sale.order.line,state:0
+msgid ""
+"* The 'Draft' state is set when the related sales order in draft state. "
+" \n"
+"* The 'Confirmed' state is set when the related sales order is confirmed. "
+" \n"
+"* The 'Exception' state is set when the related sales order is set as "
+"exception. \n"
+"* The 'Done' state is set when the sales order line has been picked. "
+" \n"
+"* The 'Cancelled' state is set when a user cancel the sales order related."
+msgstr ""
+
+#. module: sale
+#: help:sale.order,amount_tax:0
+msgid "The tax amount."
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Packings"
+msgstr ""
+
+#. module: sale
+#: field:sale.config.picking_policy,progress:0
+#: field:sale.installer,progress:0
+msgid "Configuration Progress"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_order_line_product_tree
+msgid "Product sales"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,date_order:0
+msgid "Ordered Date"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_order_form
+#: model:ir.ui.menu,name:sale.menu_sale_order
+#: view:sale.order:0
+msgid "Sales Orders"
+msgstr ""
+
+#. module: sale
+#: selection:sale.config.picking_policy,picking_policy:0
+msgid "Direct Delivery"
+msgstr ""
+
+#. module: sale
+#: field:sale.installer,sale_journal:0
+msgid "Invoicing journals"
+msgstr ""
+
+#. module: sale
+#: field:sale.advance.payment.inv,product_id:0
+msgid "Advance Product"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+#: field:sale.report,shipped_qty_1:0
+msgid "Shipped Qty"
+msgstr ""
+
+#. module: sale
+#: view:sale.open.invoice:0
+msgid "You invoice has been successfully created!"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:585
+#, python-format
+msgid "You must first cancel all invoices attached to this sales order."
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "January"
+msgstr ""
+
+#. module: sale
+#: view:sale.installer:0
+msgid "Configure Your Sales Management Application"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_order_tree4
+msgid "Sales Order in Progress"
+msgstr ""
+
+#. module: sale
+#: field:sale.installer,sale_layout:0
+msgid "Sales Order Layout Improvement"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/wizard/sale_make_invoice_advance.py:63
+#, python-format
+msgid "Error"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+#: field:sale.report,delay:0
+msgid "Commitment Delay"
+msgstr ""
+
+#. module: sale
+#: model:process.node,note:sale.process_node_saleprocurement0
+msgid ""
+"One Procurement order for each sales order line and for each of the "
+"components."
+msgstr ""
+
+#. module: sale
+#: model:process.transition.action,name:sale.process_transition_action_assign0
+msgid "Assign"
+msgstr ""
+
+#. module: sale
+#: field:sale.report,date:0
+msgid "Date Order"
+msgstr ""
+
+#. module: sale
+#: model:process.node,note:sale.process_node_order0
+msgid "Confirmed sales order to invoice."
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:290
+#, python-format
+msgid "Cannot delete Sales Order(s) which are already confirmed !"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:316
+#, python-format
+msgid "The sales order '%s' has been set in draft state."
+msgstr ""
+
+#. module: sale
+#: selection:sale.order.line,type:0
+msgid "from stock"
+msgstr ""
+
+#. module: sale
+#: field:sale.config.picking_policy,order_policy:0
+msgid "Shipping Default Policy"
+msgstr ""
+
+#. module: sale
+#: view:sale.open.invoice:0
+msgid "Close"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,shipped:0
+msgid "Delivered"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:1115
+#, python-format
+msgid "Not enough stock !"
+msgstr ""
+
+#. module: sale
+#: constraint:stock.move:0
+msgid "You must assign a production lot for this product"
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,sequence:0
+msgid "Layout Sequence"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,help:sale.action_shop_form
+msgid ""
+"If you have more than one shop reselling your company products, you can "
+"create and manage that from here. Whenever you will record a new quotation "
+"or sales order, it has to be linked to a shop. The shop also defines the "
+"warehouse from which the products will be delivered for each particular "
+"sales."
+msgstr ""
+
+#. module: sale
+#: help:sale.order,invoiced:0
+msgid "It indicates that an invoice has been paid."
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+#: field:sale.order.line,name:0
+msgid "Description"
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "May"
+msgstr ""
+
+#. module: sale
+#: help:sale.installer,sale_order_dates:0
+msgid "Adds commitment, requested and effective dates on Sales Orders."
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+#: field:sale.order,partner_id:0
+#: field:sale.order.line,order_partner_id:0
+msgid "Customer"
+msgstr ""
+
+#. module: sale
+#: model:product.template,name:sale.advance_product_0_product_template
+msgid "Advance"
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "February"
+msgstr ""
+
+#. module: sale
+#: help:sale.installer,sale_journal:0
+msgid ""
+"Allows you to group and invoice your delivery orders according to different "
+"invoicing types: daily, weekly, etc."
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "April"
+msgstr ""
+
+#. module: sale
+#: view:sale.shop:0
+msgid "Accounting"
+msgstr ""
+
+#. module: sale
+#: field:sale.config.picking_policy,step:0
+msgid "Steps To Deliver a Sales Order"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+#: view:sale.order.line:0
+msgid "Search Sales Order"
+msgstr ""
+
+#. module: sale
+#: model:process.node,name:sale.process_node_saleorderprocurement0
+msgid "Sales Order Requisition"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+#: field:sale.order,payment_term:0
+msgid "Payment Term"
+msgstr "Relambi de pagament"
+
+#. module: sale
+#: help:sale.installer,sale_layout:0
+msgid ""
+"Provides some features to improve the layout of the Sales Order reports."
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,help:sale.action_order_report_all
+msgid ""
+"This report performs analysis on your quotations and sales orders. Analysis "
+"check your sales revenues and sort it by different group criteria (salesman, "
+"partner, product, etc.) Use this report to perform analysis on sales not "
+"having invoiced yet. If you want to analyse your turnover, you should use "
+"the Invoice Analysis report in the Accounting application."
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Quotation N°"
+msgstr "Devís N°"
+
+#. module: sale
+#: field:sale.order,picked_rate:0
+#: view:sale.report:0
+msgid "Picked"
+msgstr "Liurada"
+
+#. module: sale
+#: view:sale.report:0
+#: field:sale.report,year:0
+msgid "Year"
+msgstr "Annada"
+
+#. module: sale
+#: selection:sale.config.picking_policy,order_policy:0
+msgid "Invoice Based on Deliveries"
+msgstr "Factura basada sus las liurasons"
diff --git a/addons/sale_analytic_plans/i18n/oc.po b/addons/sale_analytic_plans/i18n/oc.po
new file mode 100644
index 00000000000..e4af10e9b81
--- /dev/null
+++ b/addons/sale_analytic_plans/i18n/oc.po
@@ -0,0 +1,45 @@
+# Occitan (post 1500) translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-03 16:58+0000\n"
+"PO-Revision-Date: 2011-11-20 09:25+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Occitan (post 1500) \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:22+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
+
+#. module: sale_analytic_plans
+#: field:sale.order.line,analytics_id:0
+msgid "Analytic Distribution"
+msgstr "Distribucion analitica"
+
+#. module: sale_analytic_plans
+#: model:ir.module.module,shortdesc:sale_analytic_plans.module_meta_information
+msgid "Sales Analytic Distribution Management"
+msgstr "Gestion de la Distribucion Analitica de las Vendas"
+
+#. module: sale_analytic_plans
+#: model:ir.module.module,description:sale_analytic_plans.module_meta_information
+msgid ""
+"\n"
+" The base module to manage analytic distribution and sales orders.\n"
+" "
+msgstr ""
+"\n"
+" Lo modul de basa per gerir la distribucion analitica e los bons de "
+"comanda.\n"
+" "
+
+#. module: sale_analytic_plans
+#: model:ir.model,name:sale_analytic_plans.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Linha de bon de comanda"
diff --git a/addons/stock_invoice_directly/i18n/oc.po b/addons/stock_invoice_directly/i18n/oc.po
new file mode 100644
index 00000000000..e831eb21aee
--- /dev/null
+++ b/addons/stock_invoice_directly/i18n/oc.po
@@ -0,0 +1,37 @@
+# Occitan (post 1500) translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-03 16:58+0000\n"
+"PO-Revision-Date: 2011-11-20 09:30+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Occitan (post 1500) \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:22+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
+
+#. module: stock_invoice_directly
+#: model:ir.model,name:stock_invoice_directly.model_stock_partial_picking
+msgid "Partial Picking"
+msgstr "Tractament parcial"
+
+#. module: stock_invoice_directly
+#: model:ir.module.module,description:stock_invoice_directly.module_meta_information
+msgid ""
+"\n"
+" When you send or deliver goods, this module automatically launch\n"
+" the invoicing wizard if the delivery is to be invoiced.\n"
+" "
+msgstr ""
+
+#. module: stock_invoice_directly
+#: model:ir.module.module,shortdesc:stock_invoice_directly.module_meta_information
+msgid "Invoice Picking Directly"
+msgstr "Facturar la liurason dirèctament"
diff --git a/addons/stock_no_autopicking/i18n/oc.po b/addons/stock_no_autopicking/i18n/oc.po
new file mode 100644
index 00000000000..2e8cda677ab
--- /dev/null
+++ b/addons/stock_no_autopicking/i18n/oc.po
@@ -0,0 +1,70 @@
+# Occitan (post 1500) translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-03 16:58+0000\n"
+"PO-Revision-Date: 2011-11-20 09:30+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Occitan (post 1500) \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:22+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
+
+#. module: stock_no_autopicking
+#: model:ir.model,name:stock_no_autopicking.model_product_product
+msgid "Product"
+msgstr "Produch"
+
+#. module: stock_no_autopicking
+#: model:ir.module.module,description:stock_no_autopicking.module_meta_information
+msgid ""
+"\n"
+" This module allows an intermediate picking process to provide raw "
+"materials\n"
+" to production orders.\n"
+"\n"
+" One example of usage of this module is to manage production made by "
+"your\n"
+" suppliers (sub-contracting). To achieve this, set the assembled product\n"
+" which is sub-contracted to \"No Auto-Picking\" and put the location of "
+"the\n"
+" supplier in the routing of the assembly operation.\n"
+" "
+msgstr ""
+
+#. module: stock_no_autopicking
+#: model:ir.model,name:stock_no_autopicking.model_mrp_production
+msgid "Manufacturing Order"
+msgstr "Òrdre de fabricacion"
+
+#. module: stock_no_autopicking
+#: field:product.product,auto_pick:0
+msgid "Auto Picking"
+msgstr "Prelevament automatic"
+
+#. module: stock_no_autopicking
+#: help:product.product,auto_pick:0
+msgid "Auto picking for raw materials of production orders."
+msgstr ""
+
+#. module: stock_no_autopicking
+#: constraint:product.product:0
+msgid "Error: Invalid ean code"
+msgstr "Error : Còde ean invalid"
+
+#. module: stock_no_autopicking
+#: model:ir.module.module,shortdesc:stock_no_autopicking.module_meta_information
+msgid "Stock No Auto-Picking"
+msgstr ""
+
+#. module: stock_no_autopicking
+#: constraint:mrp.production:0
+msgid "Order quantity cannot be negative or zero !"
+msgstr ""
diff --git a/addons/web/po/ar.po b/addons/web/po/ar.po
index 4a6ebecff9f..34c7beccf4a 100644
--- a/addons/web/po/ar.po
+++ b/addons/web/po/ar.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-09 05:09+0000\n"
-"X-Generator: Launchpad (build 14263)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:49+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web/static/src/js/view_form.js:355
msgid ""
diff --git a/addons/web/po/da.po b/addons/web/po/da.po
index db03cc5e19b..d40db04e29e 100644
--- a/addons/web/po/da.po
+++ b/addons/web/po/da.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-09 05:09+0000\n"
-"X-Generator: Launchpad (build 14263)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:49+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web/static/src/js/view_form.js:355
msgid ""
diff --git a/addons/web/po/de.po b/addons/web/po/de.po
index 0a26630321f..72778500484 100644
--- a/addons/web/po/de.po
+++ b/addons/web/po/de.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web/static/src/js/view_form.js:355
msgid ""
diff --git a/addons/web/po/es.po b/addons/web/po/es.po
index 9bd7071871b..e53b5e2631b 100644
--- a/addons/web/po/es.po
+++ b/addons/web/po/es.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web/static/src/js/view_form.js:355
msgid ""
diff --git a/addons/web/po/es_EC.po b/addons/web/po/es_EC.po
index 588408ba979..fc98c8bb536 100644
--- a/addons/web/po/es_EC.po
+++ b/addons/web/po/es_EC.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web/static/src/js/view_form.js:355
msgid ""
diff --git a/addons/web/po/et.po b/addons/web/po/et.po
index 6b6da84f3a5..b9362cd0fdc 100644
--- a/addons/web/po/et.po
+++ b/addons/web/po/et.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web/static/src/js/view_form.js:355
msgid ""
diff --git a/addons/web/po/fr.po b/addons/web/po/fr.po
index df35344c558..fcbcce3b1a7 100644
--- a/addons/web/po/fr.po
+++ b/addons/web/po/fr.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web/static/src/js/view_form.js:355
msgid ""
diff --git a/addons/web/po/gl.po b/addons/web/po/gl.po
index 34b2d50085f..7a8fefab03c 100644
--- a/addons/web/po/gl.po
+++ b/addons/web/po/gl.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web/static/src/js/view_form.js:355
msgid ""
diff --git a/addons/web/po/it.po b/addons/web/po/it.po
index 647030fd4ea..a3899989d7e 100644
--- a/addons/web/po/it.po
+++ b/addons/web/po/it.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web/static/src/js/view_form.js:355
msgid ""
diff --git a/addons/web/po/nl_BE.po b/addons/web/po/nl_BE.po
index 3d649b59b9d..43f52ade62e 100644
--- a/addons/web/po/nl_BE.po
+++ b/addons/web/po/nl_BE.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web/static/src/js/view_form.js:355
msgid ""
diff --git a/addons/web/po/pl.po b/addons/web/po/pl.po
index fde2196a73e..56f004a0197 100644
--- a/addons/web/po/pl.po
+++ b/addons/web/po/pl.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-05 06:04+0000\n"
-"X-Generator: Launchpad (build 14231)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web/static/src/js/view_form.js:355
msgid ""
diff --git a/addons/web/po/pt_BR.po b/addons/web/po/pt_BR.po
index 8b81c9c90cb..b80ea3a78bd 100644
--- a/addons/web/po/pt_BR.po
+++ b/addons/web/po/pt_BR.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-13 05:56+0000\n"
-"X-Generator: Launchpad (build 14277)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web/static/src/js/view_form.js:355
msgid ""
diff --git a/addons/web/po/sl.po b/addons/web/po/sl.po
index 54349249817..585dae78293 100644
--- a/addons/web/po/sl.po
+++ b/addons/web/po/sl.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web/static/src/js/view_form.js:355
msgid ""
diff --git a/addons/web_calendar/po/ar.po b/addons/web_calendar/po/ar.po
index 33e04220c2c..4263e2bde16 100644
--- a/addons/web_calendar/po/ar.po
+++ b/addons/web_calendar/po/ar.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-04 05:32+0000\n"
-"X-Generator: Launchpad (build 14231)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
msgid " "
diff --git a/addons/web_calendar/po/da.po b/addons/web_calendar/po/da.po
index 68e2b21a673..038a7c3cd08 100644
--- a/addons/web_calendar/po/da.po
+++ b/addons/web_calendar/po/da.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
msgid " "
diff --git a/addons/web_calendar/po/de.po b/addons/web_calendar/po/de.po
index 27e0168a44e..ed614c661b6 100644
--- a/addons/web_calendar/po/de.po
+++ b/addons/web_calendar/po/de.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
msgid " "
diff --git a/addons/web_calendar/po/es.po b/addons/web_calendar/po/es.po
index 9e0c5f32f98..07af7e0926d 100644
--- a/addons/web_calendar/po/es.po
+++ b/addons/web_calendar/po/es.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
msgid " "
diff --git a/addons/web_calendar/po/es_EC.po b/addons/web_calendar/po/es_EC.po
index 6b9cf2145dd..43df5a70a01 100644
--- a/addons/web_calendar/po/es_EC.po
+++ b/addons/web_calendar/po/es_EC.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
msgid " "
diff --git a/addons/web_calendar/po/et.po b/addons/web_calendar/po/et.po
index b08c52fbfc7..42d69283eb7 100644
--- a/addons/web_calendar/po/et.po
+++ b/addons/web_calendar/po/et.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
msgid " "
diff --git a/addons/web_calendar/po/fr.po b/addons/web_calendar/po/fr.po
index 5f04d2d7182..92c6328e59a 100644
--- a/addons/web_calendar/po/fr.po
+++ b/addons/web_calendar/po/fr.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
msgid " "
diff --git a/addons/web_calendar/po/gl.po b/addons/web_calendar/po/gl.po
index 7705a7cda2f..fc6d0982a9f 100644
--- a/addons/web_calendar/po/gl.po
+++ b/addons/web_calendar/po/gl.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
msgid " "
diff --git a/addons/web_calendar/po/it.po b/addons/web_calendar/po/it.po
index 5b98572ab45..b99ba98bc47 100644
--- a/addons/web_calendar/po/it.po
+++ b/addons/web_calendar/po/it.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
msgid " "
diff --git a/addons/web_calendar/po/nl_BE.po b/addons/web_calendar/po/nl_BE.po
index b071632ea47..158e6d03eca 100644
--- a/addons/web_calendar/po/nl_BE.po
+++ b/addons/web_calendar/po/nl_BE.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
msgid " "
diff --git a/addons/web_calendar/po/sk.po b/addons/web_calendar/po/sk.po
index f879c6b13f1..2beb26d4e0e 100644
--- a/addons/web_calendar/po/sk.po
+++ b/addons/web_calendar/po/sk.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
msgid " "
diff --git a/addons/web_calendar/po/sl.po b/addons/web_calendar/po/sl.po
index 80c32b8728b..0f4b85d1fba 100644
--- a/addons/web_calendar/po/sl.po
+++ b/addons/web_calendar/po/sl.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_calendar/static/src/xml/web_calendar.xml:0
msgid " "
diff --git a/addons/web_dashboard/po/ar.po b/addons/web_dashboard/po/ar.po
index 0e2cf4dfcf2..2c5b34384e5 100644
--- a/addons/web_dashboard/po/ar.po
+++ b/addons/web_dashboard/po/ar.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-04 05:32+0000\n"
-"X-Generator: Launchpad (build 14231)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
msgid "Reset"
diff --git a/addons/web_dashboard/po/da.po b/addons/web_dashboard/po/da.po
index 312ceaa7327..d7de581fb02 100644
--- a/addons/web_dashboard/po/da.po
+++ b/addons/web_dashboard/po/da.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
msgid "Reset"
diff --git a/addons/web_dashboard/po/de.po b/addons/web_dashboard/po/de.po
index 1fecf9c9550..67a6b680ed5 100644
--- a/addons/web_dashboard/po/de.po
+++ b/addons/web_dashboard/po/de.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
msgid "Reset"
diff --git a/addons/web_dashboard/po/es.po b/addons/web_dashboard/po/es.po
index 9686bc1b517..14e8f725d7a 100644
--- a/addons/web_dashboard/po/es.po
+++ b/addons/web_dashboard/po/es.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
msgid "Reset"
diff --git a/addons/web_dashboard/po/es_EC.po b/addons/web_dashboard/po/es_EC.po
index 24ae8287a6d..23c5bdac2c8 100644
--- a/addons/web_dashboard/po/es_EC.po
+++ b/addons/web_dashboard/po/es_EC.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
msgid "Reset"
diff --git a/addons/web_dashboard/po/et.po b/addons/web_dashboard/po/et.po
index 06fccba4842..55560d7a569 100644
--- a/addons/web_dashboard/po/et.po
+++ b/addons/web_dashboard/po/et.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
msgid "Reset"
diff --git a/addons/web_dashboard/po/fr.po b/addons/web_dashboard/po/fr.po
index a8c0e7ba530..47dc7096e90 100644
--- a/addons/web_dashboard/po/fr.po
+++ b/addons/web_dashboard/po/fr.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
msgid "Reset"
diff --git a/addons/web_dashboard/po/gl.po b/addons/web_dashboard/po/gl.po
index 16edea4823f..f92e878a783 100644
--- a/addons/web_dashboard/po/gl.po
+++ b/addons/web_dashboard/po/gl.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
msgid "Reset"
diff --git a/addons/web_dashboard/po/it.po b/addons/web_dashboard/po/it.po
index 90e98cd48bc..6c190ad89e5 100644
--- a/addons/web_dashboard/po/it.po
+++ b/addons/web_dashboard/po/it.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
msgid "Reset"
diff --git a/addons/web_dashboard/po/nl_BE.po b/addons/web_dashboard/po/nl_BE.po
index 57a9fdadbf5..15d871f19a1 100644
--- a/addons/web_dashboard/po/nl_BE.po
+++ b/addons/web_dashboard/po/nl_BE.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
msgid "Reset"
diff --git a/addons/web_dashboard/po/pl.po b/addons/web_dashboard/po/pl.po
index 256945c9030..d5928814062 100644
--- a/addons/web_dashboard/po/pl.po
+++ b/addons/web_dashboard/po/pl.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-05 06:04+0000\n"
-"X-Generator: Launchpad (build 14231)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
msgid "Reset"
diff --git a/addons/web_dashboard/po/sk.po b/addons/web_dashboard/po/sk.po
index a9e11093ef1..cabce5bf3fa 100644
--- a/addons/web_dashboard/po/sk.po
+++ b/addons/web_dashboard/po/sk.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
msgid "Reset"
diff --git a/addons/web_dashboard/po/sl.po b/addons/web_dashboard/po/sl.po
index 01a5bf45deb..f0f5cefa43c 100644
--- a/addons/web_dashboard/po/sl.po
+++ b/addons/web_dashboard/po/sl.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0
msgid "Reset"
diff --git a/addons/web_default_home/po/ar.po b/addons/web_default_home/po/ar.po
index 16c56db9120..f2ffbe0d9bd 100644
--- a/addons/web_default_home/po/ar.po
+++ b/addons/web_default_home/po/ar.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-09 05:09+0000\n"
-"X-Generator: Launchpad (build 14263)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
msgid "Welcome to your new OpenERP instance."
diff --git a/addons/web_default_home/po/da.po b/addons/web_default_home/po/da.po
index 989daa78361..ae78d55092a 100644
--- a/addons/web_default_home/po/da.po
+++ b/addons/web_default_home/po/da.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
msgid "Welcome to your new OpenERP instance."
diff --git a/addons/web_default_home/po/de.po b/addons/web_default_home/po/de.po
index 2363aea8505..420026692c1 100644
--- a/addons/web_default_home/po/de.po
+++ b/addons/web_default_home/po/de.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
msgid "Welcome to your new OpenERP instance."
diff --git a/addons/web_default_home/po/es.po b/addons/web_default_home/po/es.po
index 5120f12015d..75060c85fc9 100644
--- a/addons/web_default_home/po/es.po
+++ b/addons/web_default_home/po/es.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
msgid "Welcome to your new OpenERP instance."
diff --git a/addons/web_default_home/po/es_EC.po b/addons/web_default_home/po/es_EC.po
index 077b51cbeee..e57355cf87b 100644
--- a/addons/web_default_home/po/es_EC.po
+++ b/addons/web_default_home/po/es_EC.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
msgid "Welcome to your new OpenERP instance."
diff --git a/addons/web_default_home/po/et.po b/addons/web_default_home/po/et.po
index a2dedb192d4..cc250cc6b2b 100644
--- a/addons/web_default_home/po/et.po
+++ b/addons/web_default_home/po/et.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
msgid "Welcome to your new OpenERP instance."
diff --git a/addons/web_default_home/po/fr.po b/addons/web_default_home/po/fr.po
index e1b15ca7021..97e7e4467d4 100644
--- a/addons/web_default_home/po/fr.po
+++ b/addons/web_default_home/po/fr.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:09+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
msgid "Welcome to your new OpenERP instance."
diff --git a/addons/web_default_home/po/gl.po b/addons/web_default_home/po/gl.po
index 5783af8a2fb..5447f024fb2 100644
--- a/addons/web_default_home/po/gl.po
+++ b/addons/web_default_home/po/gl.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
msgid "Welcome to your new OpenERP instance."
diff --git a/addons/web_default_home/po/it.po b/addons/web_default_home/po/it.po
index a9f3a86854b..98bb491b0d8 100644
--- a/addons/web_default_home/po/it.po
+++ b/addons/web_default_home/po/it.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
msgid "Welcome to your new OpenERP instance."
diff --git a/addons/web_default_home/po/nl_BE.po b/addons/web_default_home/po/nl_BE.po
index 1f046075120..d6ba01c8cac 100644
--- a/addons/web_default_home/po/nl_BE.po
+++ b/addons/web_default_home/po/nl_BE.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
msgid "Welcome to your new OpenERP instance."
diff --git a/addons/web_default_home/po/pl.po b/addons/web_default_home/po/pl.po
index 3eec2b0ab49..1c71e3eeb76 100644
--- a/addons/web_default_home/po/pl.po
+++ b/addons/web_default_home/po/pl.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-05 06:04+0000\n"
-"X-Generator: Launchpad (build 14231)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
msgid "Welcome to your new OpenERP instance."
diff --git a/addons/web_default_home/po/sk.po b/addons/web_default_home/po/sk.po
index bf766fb65b0..8faf58f469a 100644
--- a/addons/web_default_home/po/sk.po
+++ b/addons/web_default_home/po/sk.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-02 05:05+0000\n"
-"X-Generator: Launchpad (build 14214)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
msgid "Welcome to your new OpenERP instance."
diff --git a/addons/web_default_home/po/sl.po b/addons/web_default_home/po/sl.po
index 2f9d918cb49..88fa4acfd4f 100644
--- a/addons/web_default_home/po/sl.po
+++ b/addons/web_default_home/po/sl.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_default_home/static/src/xml/web_default_home.xml:0
msgid "Welcome to your new OpenERP instance."
diff --git a/addons/web_diagram/po/ar.po b/addons/web_diagram/po/ar.po
index af8c6ab7213..19685c1d457 100644
--- a/addons/web_diagram/po/ar.po
+++ b/addons/web_diagram/po/ar.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-04 05:32+0000\n"
-"X-Generator: Launchpad (build 14231)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
msgid "New Node"
diff --git a/addons/web_diagram/po/da.po b/addons/web_diagram/po/da.po
index 76d870fbc78..4cff320091f 100644
--- a/addons/web_diagram/po/da.po
+++ b/addons/web_diagram/po/da.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-09 05:09+0000\n"
-"X-Generator: Launchpad (build 14263)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
msgid "New Node"
diff --git a/addons/web_diagram/po/de.po b/addons/web_diagram/po/de.po
index 1a511d763ba..9b7a9c30e89 100644
--- a/addons/web_diagram/po/de.po
+++ b/addons/web_diagram/po/de.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
msgid "New Node"
diff --git a/addons/web_diagram/po/es.po b/addons/web_diagram/po/es.po
index 465cc16f401..b1d392c9bbd 100644
--- a/addons/web_diagram/po/es.po
+++ b/addons/web_diagram/po/es.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
msgid "New Node"
diff --git a/addons/web_diagram/po/es_EC.po b/addons/web_diagram/po/es_EC.po
index 3faa86e9bc5..aaf879b3bfe 100644
--- a/addons/web_diagram/po/es_EC.po
+++ b/addons/web_diagram/po/es_EC.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
msgid "New Node"
diff --git a/addons/web_diagram/po/et.po b/addons/web_diagram/po/et.po
index 5f8e394d816..62aefffe1c4 100644
--- a/addons/web_diagram/po/et.po
+++ b/addons/web_diagram/po/et.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
msgid "New Node"
diff --git a/addons/web_diagram/po/gl.po b/addons/web_diagram/po/gl.po
index 27f4dc017fa..954f8fab6f6 100644
--- a/addons/web_diagram/po/gl.po
+++ b/addons/web_diagram/po/gl.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
msgid "New Node"
diff --git a/addons/web_diagram/po/it.po b/addons/web_diagram/po/it.po
index c3ced470ca6..443a7e29412 100644
--- a/addons/web_diagram/po/it.po
+++ b/addons/web_diagram/po/it.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
msgid "New Node"
diff --git a/addons/web_diagram/po/nl_BE.po b/addons/web_diagram/po/nl_BE.po
index 4d2999c099d..756c1ae71b4 100644
--- a/addons/web_diagram/po/nl_BE.po
+++ b/addons/web_diagram/po/nl_BE.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
msgid "New Node"
diff --git a/addons/web_diagram/po/pl.po b/addons/web_diagram/po/pl.po
index f36f3853850..7e9236c6c1b 100644
--- a/addons/web_diagram/po/pl.po
+++ b/addons/web_diagram/po/pl.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-05 06:04+0000\n"
-"X-Generator: Launchpad (build 14231)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
msgid "New Node"
diff --git a/addons/web_diagram/po/sl.po b/addons/web_diagram/po/sl.po
index 6766b54fb3c..7f552a5576f 100644
--- a/addons/web_diagram/po/sl.po
+++ b/addons/web_diagram/po/sl.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_diagram/static/src/xml/base_diagram.xml:0
msgid "New Node"
diff --git a/addons/web_livechat/i18n/oc.po b/addons/web_livechat/i18n/oc.po
new file mode 100644
index 00000000000..5b19d5b8c77
--- /dev/null
+++ b/addons/web_livechat/i18n/oc.po
@@ -0,0 +1,41 @@
+# Occitan (post 1500) translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:16+0000\n"
+"PO-Revision-Date: 2011-11-20 09:29+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Occitan (post 1500) \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:22+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
+
+#. module: web_livechat
+#: sql_constraint:publisher_warranty.contract:0
+msgid ""
+"Your publisher warranty contract is already subscribed in the system !"
+msgstr ""
+
+#. module: web_livechat
+#: model:ir.module.module,shortdesc:web_livechat.module_meta_information
+msgid "Live Chat Support"
+msgstr "Supòrt per messatjariá instantanèa"
+
+#. module: web_livechat
+#: model:ir.model,name:web_livechat.model_publisher_warranty_contract
+msgid "publisher_warranty.contract"
+msgstr "publisher_warranty.contract"
+
+#. module: web_livechat
+#: model:ir.module.module,description:web_livechat.module_meta_information
+msgid "Enable live chat support for whom have a maintenance contract"
+msgstr ""
+"Validar lo supòrt per messatjariá instantanèa pels detentors d'un contracte "
+"de mantenença"
diff --git a/addons/web_mobile/po/ar.po b/addons/web_mobile/po/ar.po
index 28e21aa44bf..32e67798699 100644
--- a/addons/web_mobile/po/ar.po
+++ b/addons/web_mobile/po/ar.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-04 05:32+0000\n"
-"X-Generator: Launchpad (build 14231)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
msgid "OpenERP"
diff --git a/addons/web_mobile/po/da.po b/addons/web_mobile/po/da.po
index d61a3cba5b8..8b97c0eff8a 100644
--- a/addons/web_mobile/po/da.po
+++ b/addons/web_mobile/po/da.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
msgid "OpenERP"
diff --git a/addons/web_mobile/po/de.po b/addons/web_mobile/po/de.po
index ab74249a7ba..34da909bd6f 100644
--- a/addons/web_mobile/po/de.po
+++ b/addons/web_mobile/po/de.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
msgid "OpenERP"
diff --git a/addons/web_mobile/po/es.po b/addons/web_mobile/po/es.po
index 0995630c08e..9a136382dba 100644
--- a/addons/web_mobile/po/es.po
+++ b/addons/web_mobile/po/es.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
msgid "OpenERP"
diff --git a/addons/web_mobile/po/es_EC.po b/addons/web_mobile/po/es_EC.po
index 73dbcaea7e7..bd3a45c0b27 100644
--- a/addons/web_mobile/po/es_EC.po
+++ b/addons/web_mobile/po/es_EC.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
msgid "OpenERP"
diff --git a/addons/web_mobile/po/et.po b/addons/web_mobile/po/et.po
index c3e3994a9d9..9f5c7181ceb 100644
--- a/addons/web_mobile/po/et.po
+++ b/addons/web_mobile/po/et.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
msgid "OpenERP"
diff --git a/addons/web_mobile/po/fr.po b/addons/web_mobile/po/fr.po
index aead113ca02..5117204d67f 100644
--- a/addons/web_mobile/po/fr.po
+++ b/addons/web_mobile/po/fr.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
msgid "OpenERP"
diff --git a/addons/web_mobile/po/gl.po b/addons/web_mobile/po/gl.po
index 482a3e05f58..85ac5c0689f 100644
--- a/addons/web_mobile/po/gl.po
+++ b/addons/web_mobile/po/gl.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
msgid "OpenERP"
diff --git a/addons/web_mobile/po/it.po b/addons/web_mobile/po/it.po
index fdfce4385f5..39708e6b730 100644
--- a/addons/web_mobile/po/it.po
+++ b/addons/web_mobile/po/it.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
msgid "OpenERP"
diff --git a/addons/web_mobile/po/nl_BE.po b/addons/web_mobile/po/nl_BE.po
index 0a1171f1fe9..f9143746672 100644
--- a/addons/web_mobile/po/nl_BE.po
+++ b/addons/web_mobile/po/nl_BE.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
msgid "OpenERP"
diff --git a/addons/web_mobile/po/pl.po b/addons/web_mobile/po/pl.po
index d5e04f22e00..5dd753061eb 100644
--- a/addons/web_mobile/po/pl.po
+++ b/addons/web_mobile/po/pl.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-05 06:04+0000\n"
-"X-Generator: Launchpad (build 14231)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
msgid "OpenERP"
diff --git a/addons/web_mobile/po/sk.po b/addons/web_mobile/po/sk.po
index d550414317a..9442d63dbde 100644
--- a/addons/web_mobile/po/sk.po
+++ b/addons/web_mobile/po/sk.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
msgid "OpenERP"
diff --git a/addons/web_mobile/po/sl.po b/addons/web_mobile/po/sl.po
index 8141108f9a9..ad93c949c07 100644
--- a/addons/web_mobile/po/sl.po
+++ b/addons/web_mobile/po/sl.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-11-01 05:10+0000\n"
-"X-Generator: Launchpad (build 14197)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#: addons/web_mobile/static/src/xml/web_mobile.xml:0
msgid "OpenERP"
diff --git a/addons/web_uservoice/i18n/oc.po b/addons/web_uservoice/i18n/oc.po
new file mode 100644
index 00000000000..3867b8c4947
--- /dev/null
+++ b/addons/web_uservoice/i18n/oc.po
@@ -0,0 +1,29 @@
+# Occitan (post 1500) translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-12 16:15+0000\n"
+"PO-Revision-Date: 2011-11-20 09:28+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Occitan (post 1500) \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:22+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
+
+#. module: web_uservoice
+#: model:ir.module.module,shortdesc:web_uservoice.module_meta_information
+msgid "Add uservoice button in header"
+msgstr "Apondre un boton \"viscut utilizaire\" dins l'entèsta"
+
+#. module: web_uservoice
+#: code:addons/web_uservoice/web/editors.py:72
+#, python-format
+msgid "feedback"
+msgstr "retorn d'experiéncia"
diff --git a/addons/wiki_faq/i18n/oc.po b/addons/wiki_faq/i18n/oc.po
new file mode 100644
index 00000000000..c9408fe9635
--- /dev/null
+++ b/addons/wiki_faq/i18n/oc.po
@@ -0,0 +1,32 @@
+# Occitan (post 1500) translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:16+0000\n"
+"PO-Revision-Date: 2011-11-20 09:27+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Occitan (post 1500) \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:22+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
+
+#. module: wiki_faq
+#: model:ir.module.module,description:wiki_faq.module_meta_information
+msgid ""
+"This module provides a wiki FAQ Template\n"
+" "
+msgstr ""
+"Aqueste modul provesís un modèl de FAQ Wiki\n"
+" "
+
+#. module: wiki_faq
+#: model:ir.module.module,shortdesc:wiki_faq.module_meta_information
+msgid "Document Management - Wiki - FAQ"
+msgstr "Gestion documentària - Wiki - FAQ"
diff --git a/addons/wiki_quality_manual/i18n/oc.po b/addons/wiki_quality_manual/i18n/oc.po
new file mode 100644
index 00000000000..28a4d42ec98
--- /dev/null
+++ b/addons/wiki_quality_manual/i18n/oc.po
@@ -0,0 +1,32 @@
+# Occitan (post 1500) translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:16+0000\n"
+"PO-Revision-Date: 2011-11-20 09:27+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Occitan (post 1500) \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:22+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
+
+#. module: wiki_quality_manual
+#: model:ir.module.module,description:wiki_quality_manual.module_meta_information
+msgid ""
+"Quality Manual Template\n"
+" "
+msgstr ""
+"Modèl de manual qualitat\n"
+" "
+
+#. module: wiki_quality_manual
+#: model:ir.module.module,shortdesc:wiki_quality_manual.module_meta_information
+msgid "Document Management - Wiki - Quality Manual"
+msgstr "Gestion documentària - Wiki - Manual Qualitat"
diff --git a/addons/wiki_sale_faq/i18n/oc.po b/addons/wiki_sale_faq/i18n/oc.po
new file mode 100644
index 00000000000..dfe98f46645
--- /dev/null
+++ b/addons/wiki_sale_faq/i18n/oc.po
@@ -0,0 +1,68 @@
+# Occitan (post 1500) translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:16+0000\n"
+"PO-Revision-Date: 2011-11-20 09:26+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Occitan (post 1500) \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:22+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
+
+#. module: wiki_sale_faq
+#: model:ir.actions.act_window,name:wiki_sale_faq.action_document_form
+#: model:ir.ui.menu,name:wiki_sale_faq.menu_document_files
+#: model:ir.ui.menu,name:wiki_sale_faq.menu_sales
+msgid "Documents"
+msgstr "Documents"
+
+#. module: wiki_sale_faq
+#: model:ir.actions.act_window,name:wiki_sale_faq.action_wiki_test
+msgid "Wiki Pages"
+msgstr "Paginas del wiki"
+
+#. module: wiki_sale_faq
+#: model:ir.ui.menu,name:wiki_sale_faq.menu_action_wiki_wiki
+msgid "FAQ"
+msgstr "Questions frequentas (FAQ)"
+
+#. module: wiki_sale_faq
+#: model:ir.module.module,description:wiki_sale_faq.module_meta_information
+msgid ""
+"This module provides a wiki FAQ Template\n"
+" "
+msgstr ""
+
+#. module: wiki_sale_faq
+#: model:ir.actions.act_window,help:wiki_sale_faq.action_wiki_test
+msgid ""
+"Wiki pages allow you to share ideas and questions with coworkers. You can "
+"create a new document that can be linked to one or several applications "
+"(specifications of a project, FAQ for sales teams, etc.). Keywords can be "
+"used to easily tag wiki pages. You should use this application with the "
+"OpenERP web client interface."
+msgstr ""
+
+#. module: wiki_sale_faq
+#: model:ir.module.module,shortdesc:wiki_sale_faq.module_meta_information
+msgid "Wiki -Sale - FAQ"
+msgstr "FAQ Wiki Vendas"
+
+#. module: wiki_sale_faq
+#: model:ir.actions.act_window,help:wiki_sale_faq.action_document_form
+msgid ""
+"Documents give you access to all files attached to any record. It is a "
+"repository of all documents such as emails, project-related attachments or "
+"any other documents. From this view, you can search through the content of "
+"the documents. OpenERP automatically assign meta data based on the record "
+"like the related partner and indexes the content of .DOC, .ODT, .TXT, .SXW "
+"and .PDF documents."
+msgstr ""
diff --git a/openerp/addons/base/i18n/ar.po b/openerp/addons/base/i18n/ar.po
index 6fb848c1ca5..e04d61effb3 100644
--- a/openerp/addons/base/i18n/ar.po
+++ b/openerp/addons/base/i18n/ar.po
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
-"PO-Revision-Date: 2009-11-30 07:54+0000\n"
-"Last-Translator: Fabien (Open ERP) \n"
+"PO-Revision-Date: 2011-11-20 09:04+0000\n"
+"Last-Translator: Ahmad Khayyat \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: 2011-11-04 04:47+0000\n"
-"X-Generator: Launchpad (build 14231)\n"
+"X-Launchpad-Export-Date: 2011-11-21 05:22+0000\n"
+"X-Generator: Launchpad (build 14299)\n"
#. module: base
#: view:ir.filters:0
@@ -108,7 +108,7 @@ msgstr "عرض إرشادات القائمة"
#. module: base
#: view:ir.module.module:0
msgid "Created Views"
-msgstr ""
+msgstr "طرق العرض التي تمّ إنشاؤها"
#. module: base
#: code:addons/base/ir/ir_model.py:485
@@ -131,18 +131,18 @@ msgstr ""
#. module: base
#: field:res.partner,ref:0
msgid "Reference"
-msgstr ""
+msgstr "المرجع"
#. module: base
#: field:ir.actions.act_window,target:0
msgid "Target Window"
-msgstr "نافذة الهدف"
+msgstr "النافذة الهدف"
#. module: base
#: code:addons/base/res/res_user.py:507
#, python-format
msgid "Warning!"
-msgstr ""
+msgstr "تحذير!"
#. module: base
#: code:addons/base/ir/ir_model.py:304
@@ -161,12 +161,12 @@ msgstr "خطأ تقييد"
#. module: base
#: model:ir.model,name:base.model_ir_ui_view_custom
msgid "ir.ui.view.custom"
-msgstr ""
+msgstr "ir.ui.view.custom"
#. module: base
#: model:res.country,name:base.sz
msgid "Swaziland"
-msgstr ""
+msgstr "سوسرا"
#. module: base
#: code:addons/orm.py:1993
@@ -193,7 +193,7 @@ msgstr ""
#. module: base
#: field:ir.sequence,number_increment:0
msgid "Increment Number"
-msgstr ""
+msgstr "مقدار الزيادة"
#. module: base
#: model:ir.actions.act_window,name:base.action_res_company_tree
@@ -209,7 +209,7 @@ msgstr ""
#. module: base
#: view:res.partner:0
msgid "Search Partner"
-msgstr ""
+msgstr "بحث الشركاء"
#. module: base
#: code:addons/base/res/res_user.py:132
@@ -231,12 +231,12 @@ msgstr ""
#. module: base
#: field:ir.module.category,module_nr:0
msgid "Number of Modules"
-msgstr "عدد البرامج"
+msgstr "عدد الوحدات البرمجية"
#. module: base
#: help:multi_company.default,company_dest_id:0
msgid "Company to store the current record"
-msgstr ""
+msgstr "الشركة لحفظ السجل الحالي"
#. module: base
#: field:res.partner.bank.type.field,size:0
@@ -246,7 +246,7 @@ msgstr "الحجم الأقصى"
#. module: base
#: field:res.partner.address,name:0
msgid "Contact Name"
-msgstr ""
+msgstr "اسم جهة الاتصال"
#. module: base
#: code:addons/base/module/wizard/base_export_language.py:56
@@ -255,6 +255,8 @@ msgid ""
"Save this document to a %s file and edit it with a specific software or a "
"text editor. The file encoding is UTF-8."
msgstr ""
+"احفظ هذا المستند كملف %s وحرره بإستخدام برنامج مناسب أو محرر نصِّي. ترميز "
+"الملف UTF-8."
#. module: base
#: sql_constraint:res.lang:0
@@ -275,27 +277,27 @@ msgstr "اسم المعالج"
#: code:addons/orm.py:2160
#, python-format
msgid "Invalid group_by"
-msgstr ""
+msgstr "تجميع غير ممكن"
#. module: base
#: field:res.partner,credit_limit:0
msgid "Credit Limit"
-msgstr ""
+msgstr "حد الائتمان"
#. module: base
#: field:ir.model.data,date_update:0
msgid "Update Date"
-msgstr ""
+msgstr "تاريخ التحديث"
#. module: base
#: view:ir.attachment:0
msgid "Owner"
-msgstr ""
+msgstr "المالِك"
#. module: base
#: field:ir.actions.act_window,src_model:0
msgid "Source Object"
-msgstr ""
+msgstr "الكائن المصدر"
#. module: base
#: view:ir.actions.todo:0
@@ -311,14 +313,14 @@ msgstr ""
#: field:res.widget.user,widget_id:0
#: field:res.widget.wizard,widgets_list:0
msgid "Widget"
-msgstr ""
+msgstr "عنصر واجهة مستخدم"
#. module: base
#: view:ir.model.access:0
#: field:ir.model.access,group_id:0
#: view:res.config.users:0
msgid "Group"
-msgstr ""
+msgstr "المجموعة"
#. module: base
#: field:ir.exports.line,name:0
@@ -331,7 +333,7 @@ msgstr "اسم الحقل"
#: wizard_view:server.action.create,init:0
#: wizard_field:server.action.create,init,type:0
msgid "Select Action Type"
-msgstr ""
+msgstr "اختر نوع الإجراء"
#. module: base
#: model:res.country,name:base.tv
@@ -341,7 +343,7 @@ msgstr ""
#. module: base
#: selection:ir.model,state:0
msgid "Custom Object"
-msgstr ""
+msgstr "كائن مخصص"
#. module: base
#: field:res.lang,date_format:0
@@ -352,7 +354,7 @@ msgstr "تنسيق التاريخ"
#: field:res.bank,email:0
#: field:res.partner.address,email:0
msgid "E-Mail"
-msgstr ""
+msgstr "البريد الإلكتروني"
#. module: base
#: model:res.country,name:base.an
@@ -366,8 +368,8 @@ msgid ""
"You can not remove the admin user as it is used internally for resources "
"created by OpenERP (updates, module installation, ...)"
msgstr ""
-"لا يمكنك حذف المستخدم المشرف العام (admin) لأنه يسنخدم داخلياً بواسطة "
-"OpenERP في عمليات التحديث و إضافة البرامج الأخري"
+"لا يمكنك حذف المستخدم (المشرف العام - admin) لأنه يسنخدم داخلياً بواسطة "
+"OpenERP في عمليات التحديث و إضافة الوحدات البرمجية"
#. module: base
#: model:res.country,name:base.gf
@@ -377,7 +379,7 @@ msgstr ""
#. module: base
#: selection:base.language.install,lang:0
msgid "Greek / Ελληνικά"
-msgstr ""
+msgstr "اليونان / Ελληνικά"
#. module: base
#: selection:base.language.install,lang:0
@@ -395,7 +397,7 @@ msgstr ""
#: code:addons/orm.py:904
#, python-format
msgid "The read method is not implemented on this object !"
-msgstr ""
+msgstr "وظيفة القراءة لم تنفذ في هذا الكائن !"
#. module: base
#: help:res.lang,iso_code:0
@@ -411,12 +413,12 @@ msgstr "سوف يتمّ تحديث نظامك"
#: field:ir.actions.todo,note:0
#: selection:ir.property,type:0
msgid "Text"
-msgstr ""
+msgstr "النّص"
#. module: base
#: field:res.country,name:0
msgid "Country Name"
-msgstr ""
+msgstr "اسم الدولة"
#. module: base
#: model:res.country,name:base.co
@@ -426,7 +428,7 @@ msgstr "كولومبيا"
#. module: base
#: view:ir.module.module:0
msgid "Schedule Upgrade"
-msgstr "حدّد موعد الترقية"
+msgstr "اختر للترقية"
#. module: base
#: code:addons/orm.py:838
@@ -440,23 +442,23 @@ msgid ""
"The ISO country code in two chars.\n"
"You can use this field for quick search."
msgstr ""
-"رمز ISO للدولة والمكون من حرفين\n"
+"رمز ISO للدولة والمكون من حرفين.\n"
"يمكنك استخدام هذا الحقل للبحث السريع."
#. module: base
#: model:res.country,name:base.pw
msgid "Palau"
-msgstr ""
+msgstr "بالاو"
#. module: base
#: view:res.partner:0
msgid "Sales & Purchases"
-msgstr ""
+msgstr "المبيعات و المشتريات"
#. module: base
#: view:ir.translation:0
msgid "Untranslated"
-msgstr ""
+msgstr "غير مترجم"
#. module: base
#: help:ir.actions.act_window,context:0
@@ -485,12 +487,12 @@ msgstr ""
#. module: base
#: help:ir.actions.server,action_id:0
msgid "Select the Action Window, Report, Wizard to be executed."
-msgstr ""
+msgstr "اختر نافذة الإجراء والتقرير والمعالج الذين تودّ تنفيذهم."
#. module: base
#: view:res.config.users:0
msgid "New User"
-msgstr ""
+msgstr "مستخدم جديد"
#. module: base
#: view:base.language.export:0
@@ -506,7 +508,7 @@ msgstr "وصف النموذج"
#: help:ir.actions.act_window,src_model:0
msgid ""
"Optional model name of the objects on which this action should be visible"
-msgstr ""
+msgstr "اسم نموذج اختياري للكائنات التي ينطبق عليها هذا الإجراء"
#. module: base
#: field:workflow.transition,trigger_expr_id:0
@@ -521,7 +523,7 @@ msgstr "الأردن"
#. module: base
#: view:ir.module.module:0
msgid "Certified"
-msgstr ""
+msgstr "مصدّق"
#. module: base
#: model:res.country,name:base.er
@@ -532,17 +534,17 @@ msgstr "إريتريا"
#: view:res.config:0
#: view:res.config.installer:0
msgid "description"
-msgstr ""
+msgstr "الوصف"
#. module: base
#: model:ir.ui.menu,name:base.menu_base_action_rule
msgid "Automated Actions"
-msgstr ""
+msgstr "الإجراءات التلقائية"
#. module: base
#: model:ir.model,name:base.model_ir_actions_actions
msgid "ir.actions.actions"
-msgstr ""
+msgstr "ir.actions.actions"
#. module: base
#: view:partner.wizard.ean.check:0
@@ -552,7 +554,7 @@ msgstr ""
#. module: base
#: field:ir.values,key2:0
msgid "Event Type"
-msgstr ""
+msgstr "نوع الحدث"
#. module: base
#: view:base.language.export:0
@@ -561,31 +563,34 @@ msgid ""
"Launchpad.net, our open source project management facility. We use their "
"online interface to synchronize all translations efforts."
msgstr ""
+"تتمّ إدارة ترجمة OpenERP عن طريق الموقع الإلكتروني Launchpad.net، والذي يمثل "
+"وسيلتنا لإدارة البرمجة مفتوحة المصدر. كذلك نستخدم الواجهة الإلكتروني للموقع "
+"لجمع وعرض جميع مجهودات الترجمة."
#. module: base
#: field:res.partner,title:0
msgid "Partner Form"
-msgstr ""
+msgstr "نموذج الشريك"
#. module: base
#: selection:base.language.install,lang:0
msgid "Swedish / svenska"
-msgstr ""
+msgstr "السويدية / svenska"
#. module: base
#: model:res.country,name:base.rs
msgid "Serbia"
-msgstr ""
+msgstr "صربيا"
#. module: base
#: selection:ir.translation,type:0
msgid "Wizard View"
-msgstr ""
+msgstr "عرض باستخدام المعالج"
#. module: base
#: model:res.country,name:base.kh
msgid "Cambodia, Kingdom of"
-msgstr ""
+msgstr "مملكة كامبوديا"
#. module: base
#: model:ir.actions.act_window,name:base.ir_sequence_form
@@ -593,17 +598,17 @@ msgstr ""
#: model:ir.ui.menu,name:base.menu_ir_sequence_form
#: model:ir.ui.menu,name:base.next_id_5
msgid "Sequences"
-msgstr ""
+msgstr "المتواليات"
#. module: base
#: model:ir.model,name:base.model_base_language_import
msgid "Language Import"
-msgstr "استيراد اللغة"
+msgstr "استيراد لغة"
#. module: base
#: model:ir.model,name:base.model_res_config_users
msgid "res.config.users"
-msgstr ""
+msgstr "res.config.users"
#. module: base
#: selection:base.language.install,lang:0
@@ -613,32 +618,33 @@ msgstr ""
#. module: base
#: model:ir.ui.menu,name:base.menu_crm_config_opportunity
msgid "Opportunities"
-msgstr ""
+msgstr "الفرص"
#. module: base
#: model:ir.model,name:base.model_base_language_export
msgid "base.language.export"
-msgstr ""
+msgstr "base.language.export"
#. module: base
#: model:res.country,name:base.pg
msgid "Papua New Guinea"
-msgstr ""
+msgstr "بابوا غينيا الجديدة"
#. module: base
#: help:ir.actions.report.xml,report_type:0
msgid "Report Type, e.g. pdf, html, raw, sxw, odt, html2html, mako2html, ..."
msgstr ""
+"نوع التقرير. أمثلة: pdf, html, raw, sxw, odt, html2html, mako2htm, ..."
#. module: base
#: model:res.partner.category,name:base.res_partner_category_4
msgid "Basic Partner"
-msgstr ""
+msgstr "شريك أساسي"
#. module: base
#: report:ir.module.reference.graph:0
msgid ","
-msgstr ""
+msgstr "،"
#. module: base
#: view:res.partner:0
@@ -653,7 +659,7 @@ msgstr "تقرير XML"
#. module: base
#: model:res.country,name:base.es
msgid "Spain"
-msgstr ""
+msgstr "أسبانيا"
#. module: base
#: model:ir.ui.menu,name:base.menu_translation_export
@@ -677,44 +683,44 @@ msgstr "ترقية وحدة برمجية"
msgid ""
"Groups are used to define access rights on objects and the visibility of "
"screens and menus"
-msgstr ""
+msgstr "تستخدم المجموعات لتعريف صلاحيات الدخول والتعديل للشاشات والقوائم"
#. module: base
#: selection:base.language.install,lang:0
msgid "Spanish (UY) / Español (UY)"
-msgstr ""
+msgstr "الأسبانية / Español (UY)"
#. module: base
#: field:res.partner,mobile:0
#: field:res.partner.address,mobile:0
msgid "Mobile"
-msgstr ""
+msgstr "الجوال"
#. module: base
#: model:res.country,name:base.om
msgid "Oman"
-msgstr ""
+msgstr "سلطنة عمان"
#. module: base
#: model:ir.actions.act_window,name:base.action_payterm_form
#: model:ir.model,name:base.model_res_payterm
msgid "Payment term"
-msgstr ""
+msgstr "أجل الدفع"
#. module: base
#: model:res.country,name:base.nu
msgid "Niue"
-msgstr ""
+msgstr "نييوي"
#. module: base
#: selection:ir.cron,interval_type:0
msgid "Work Days"
-msgstr ""
+msgstr "أيام العمل"
#. module: base
#: selection:ir.module.module,license:0
msgid "Other OSI Approved Licence"
-msgstr ""
+msgstr "رخص أخرى تعترف بها \"مبادرة المصدر المفتوح\" (OSI)"
#. module: base
#: help:res.config.users,context_lang:0
@@ -722,7 +728,7 @@ msgstr ""
msgid ""
"Sets the language for the user's user interface, when UI translations are "
"available"
-msgstr ""
+msgstr "تعيين لغة واجهة الاستخدام، في حالة توفر الترجمة"
#. module: base
#: code:addons/orm.py:1043
@@ -734,23 +740,23 @@ msgstr ""
#: model:ir.actions.act_window,name:base.act_menu_create
#: view:wizard.ir.model.menu.create:0
msgid "Create Menu"
-msgstr ""
+msgstr "إنشاء القائمة"
#. module: base
#: model:res.country,name:base.in
msgid "India"
-msgstr ""
+msgstr "الهند"
#. module: base
#: model:ir.actions.act_window,name:base.res_request_link-act
#: model:ir.ui.menu,name:base.menu_res_request_link_act
msgid "Request Reference Types"
-msgstr ""
+msgstr "أنواع مراجع الطلبات"
#. module: base
#: view:ir.values:0
msgid "client_action_multi, client_action_relate"
-msgstr ""
+msgstr "client_action_multi, client_action_relate"
#. module: base
#: model:res.country,name:base.ad
@@ -761,12 +767,12 @@ msgstr ""
#: field:ir.module.category,child_ids:0
#: field:res.partner.category,child_ids:0
msgid "Child Categories"
-msgstr ""
+msgstr "فئات فرعية"
#. module: base
#: model:ir.model,name:base.model_ir_config_parameter
msgid "ir.config_parameter"
-msgstr ""
+msgstr "ir.config_parameter"
#. module: base
#: selection:base.language.export,format:0
@@ -776,7 +782,7 @@ msgstr ""
#. module: base
#: view:res.lang:0
msgid "%B - Full month name."
-msgstr ""
+msgstr "%B - اسم الشهر كاملاً"
#. module: base
#: view:ir.attachment:0
@@ -792,7 +798,7 @@ msgstr ""
#: view:res.partner:0
#: view:res.partner.address:0
msgid "Type"
-msgstr ""
+msgstr "النوع"
#. module: base
#: code:addons/orm.py:210
@@ -801,50 +807,52 @@ msgid ""
"Language with code \"%s\" is not defined in your system !\n"
"Define it through the Administration menu."
msgstr ""
+"اللغة ذات الرمز \"%s\" غير معرفة في نظامك!\n"
+"عرفها من خلال قائمة \"التحكم\"."
#. module: base
#: model:res.country,name:base.gu
msgid "Guam (USA)"
-msgstr ""
+msgstr "غوام (الولايات المتحدة)"
#. module: base
#: model:ir.ui.menu,name:base.menu_hr_project
msgid "Human Resources Dashboard"
-msgstr ""
+msgstr "لوحة معلومات الموارد البشرية"
#. module: base
#: code:addons/base/res/res_user.py:507
#, python-format
msgid "Setting empty passwords is not allowed for security reasons!"
-msgstr ""
+msgstr "لا يمكن استخدام كلمات مرور فارغة لأسباب أمنية!"
#. module: base
#: selection:ir.actions.server,state:0
#: selection:workflow.activity,kind:0
msgid "Dummy"
-msgstr ""
+msgstr "وهمي"
#. module: base
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
-msgstr ""
+msgstr "هناك خطأ في بيانات الـ XML للعرض!"
#. module: base
#: model:res.country,name:base.ky
msgid "Cayman Islands"
-msgstr ""
+msgstr "جزر الكايمان"
#. module: base
#: model:res.country,name:base.kr
msgid "South Korea"
-msgstr ""
+msgstr "كوريا الجنوبية"
#. module: base
#: model:ir.actions.act_window,name:base.action_workflow_transition_form
#: model:ir.ui.menu,name:base.menu_workflow_transition
#: view:workflow.activity:0
msgid "Transitions"
-msgstr ""
+msgstr "الانتقالات"
#. module: base
#: code:addons/orm.py:4020
@@ -855,48 +863,48 @@ msgstr ""
#. module: base
#: field:ir.module.module,contributors:0
msgid "Contributors"
-msgstr ""
+msgstr "المشاركون"
#. module: base
#: selection:ir.property,type:0
msgid "Char"
-msgstr ""
+msgstr "حرف"
#. module: base
#: model:ir.actions.act_window,name:base.action_publisher_warranty_contract_form
#: model:ir.ui.menu,name:base.menu_publisher_warranty_contract
msgid "Contracts"
-msgstr ""
+msgstr "المتعاقدون"
#. module: base
#: selection:base.language.install,lang:0
msgid "Spanish (AR) / Español (AR)"
-msgstr ""
+msgstr "الأسبانية / Español (AR)"
#. module: base
#: model:res.country,name:base.ug
msgid "Uganda"
-msgstr ""
+msgstr "أوغندا"
#. module: base
#: field:ir.model.access,perm_unlink:0
msgid "Delete Access"
-msgstr ""
+msgstr "صلاحيات الحذف"
#. module: base
#: model:res.country,name:base.ne
msgid "Niger"
-msgstr ""
+msgstr "النّيجر"
#. module: base
#: selection:base.language.install,lang:0
msgid "Chinese (HK)"
-msgstr ""
+msgstr "الصينية"
#. module: base
#: model:res.country,name:base.ba
msgid "Bosnia-Herzegovina"
-msgstr ""
+msgstr "البوسنة و الهرسك"
#. module: base
#: view:base.language.export:0
@@ -905,11 +913,14 @@ msgid ""
"Lauchpad's web interface (Rosetta). If you need to perform mass translation, "
"Launchpad also allows uploading full .po files at once"
msgstr ""
+"لتحسين الترجمة الرسمية أو إضافة نصوص جديدة إليها، يفضل استخدام الواجهة "
+"الإلكترونية (Rosetta) لموقع Launchpad. إذا كنت تريد القيام بترجمة نصوص "
+"عديدة، يمكنك رفع ملفات .po إلى Launchpad كذلك."
#. module: base
#: selection:base.language.install,lang:0
msgid "Spanish (GT) / Español (GT)"
-msgstr ""
+msgstr "الأسبانية / Español (GT)"
#. module: base
#: view:res.lang:0
@@ -918,12 +929,15 @@ msgid ""
"decimal number [00,53]. All days in a new year preceding the first Monday "
"are considered to be in week 0."
msgstr ""
+"%W - رقم الأسبوع في السنة (باعتبار يوم الإثنين أول يوم في الأسبوع) كرقم عشري "
+"ما بين 00 و 53. جميع الأيام التي تسبق أول يوم إثنين في سنة جديدة تعد من "
+"الأسبوع 0."
#. module: base
#: field:ir.module.module,website:0
#: field:res.partner,website:0
msgid "Website"
-msgstr ""
+msgstr "الموقع الإلكتروني"
#. module: base
#: model:res.country,name:base.gs
@@ -933,34 +947,34 @@ msgstr ""
#. module: base
#: field:ir.actions.url,url:0
msgid "Action URL"
-msgstr ""
+msgstr "العنوان الإلكتروني (URL) للإجراء"
#. module: base
#: field:base.module.import,module_name:0
msgid "Module Name"
-msgstr ""
+msgstr "اسم الوحدة البرمجية"
#. module: base
#: model:res.country,name:base.mh
msgid "Marshall Islands"
-msgstr ""
+msgstr "جزر المارشال"
#. module: base
#: code:addons/base/ir/ir_model.py:328
#, python-format
msgid "Changing the model of a field is forbidden!"
-msgstr ""
+msgstr "لا يمكن تغيير نموذج أي حقل!"
#. module: base
#: model:res.country,name:base.ht
msgid "Haiti"
-msgstr ""
+msgstr "هاييتي"
#. module: base
#: view:ir.ui.view:0
#: selection:ir.ui.view,type:0
msgid "Search"
-msgstr ""
+msgstr "بحث"
#. module: base
#: code:addons/osv.py:136
@@ -982,27 +996,27 @@ msgstr ""
#: code:addons/base/res/res_user.py:206
#, python-format
msgid "Operation Canceled"
-msgstr ""
+msgstr "تمّ إلغاء العملية"
#. module: base
#: help:base.language.export,lang:0
msgid "To export a new language, do not select a language."
-msgstr ""
+msgstr "لتصدير لغة جديدة، لا تختر أي لغة."
#. module: base
#: view:res.request:0
msgid "Request Date"
-msgstr ""
+msgstr "تاريخ الطلب"
#. module: base
#: model:ir.ui.menu,name:base.menu_hr_dasboard
msgid "Dashboard"
-msgstr ""
+msgstr "لوحة المعلومات"
#. module: base
#: model:ir.ui.menu,name:base.menu_purchase_root
msgid "Purchases"
-msgstr ""
+msgstr "المشتريات"
#. module: base
#: model:res.country,name:base.md
@@ -1012,37 +1026,37 @@ msgstr ""
#. module: base
#: view:ir.module.module:0
msgid "Features"
-msgstr ""
+msgstr "المميزات"
#. module: base
#: view:ir.module.module:0
#: report:ir.module.reference.graph:0
msgid "Version"
-msgstr ""
+msgstr "الإصدار"
#. module: base
#: view:ir.model.access:0
#: field:ir.model.access,perm_read:0
#: view:ir.rule:0
msgid "Read Access"
-msgstr ""
+msgstr "صلاحيات القراءة"
#. module: base
#: model:ir.model,name:base.model_ir_exports
msgid "ir.exports"
-msgstr ""
+msgstr "ir.exports"
#. module: base
#: code:addons/base/module/wizard/base_update_translations.py:38
#, python-format
msgid "No language with code \"%s\" exists"
-msgstr ""
+msgstr "لا توجد لغة برمز \"%s\""
#. module: base
#: code:addons/base/publisher_warranty/publisher_warranty.py:163
#, python-format
msgid "Error during communication with the publisher warranty server."
-msgstr ""
+msgstr "خطأ أثناء الاتصال بخادم ضمان الناشر."
#. module: base
#: help:ir.actions.server,email:0
@@ -1055,12 +1069,12 @@ msgstr ""
#. module: base
#: view:res.lang:0
msgid "%Y - Year with century."
-msgstr ""
+msgstr "%Y - السنة مع القرن"
#. module: base
#: report:ir.module.reference.graph:0
msgid "-"
-msgstr ""
+msgstr "-"
#. module: base
#: view:publisher_warranty.contract.wizard:0
@@ -1069,6 +1083,8 @@ msgid ""
"system. After the contract has been registered, you will be able to send "
"issues directly to OpenERP."
msgstr ""
+"هذا المعالج يساعدك على تسجيل عقد ضمان الناشر في نسختك من نظام OpenERP. بعد "
+"إتمام تسجيل العقد سيمكنك إرسال مساءلاتك إلى OpenERP مباشرة."
#. module: base
#: code:addons/orm.py:1744
@@ -1079,24 +1095,24 @@ msgstr ""
#. module: base
#: view:wizard.ir.model.menu.create:0
msgid "Create _Menu"
-msgstr ""
+msgstr "إنشاء القائمة"
#. module: base
#: field:res.payterm,name:0
msgid "Payment Term (short name)"
-msgstr ""
+msgstr "أجل الدفع (اسم قصير)"
#. module: base
#: model:ir.model,name:base.model_res_bank
#: view:res.bank:0
#: field:res.partner.bank,bank:0
msgid "Bank"
-msgstr ""
+msgstr "المصرف"
#. module: base
#: model:ir.model,name:base.model_ir_exports_line
msgid "ir.exports.line"
-msgstr ""
+msgstr "ir.exports.line"
#. module: base
#: help:base.language.install,overwrite:0
@@ -1104,18 +1120,19 @@ msgid ""
"If you check this box, your customized translations will be overwritten and "
"replaced by the official ones."
msgstr ""
+"عند اختيار هذا الخيار، سيتمّ استبدال ترجمتك المخصصة بالترجمة الرسمية."
#. module: base
#: field:ir.actions.report.xml,report_rml:0
msgid "Main report file path"
-msgstr ""
+msgstr "مسار ملف التقرير الرئيسي"
#. module: base
#: model:ir.actions.act_window,name:base.ir_action_report_xml
#: field:ir.module.module,reports_by_module:0
#: model:ir.ui.menu,name:base.menu_ir_action_report_xml
msgid "Reports"
-msgstr ""
+msgstr "التقارير"
#. module: base
#: help:ir.actions.act_window.view,multi:0
@@ -1124,11 +1141,13 @@ msgid ""
"If set to true, the action will not be displayed on the right toolbar of a "
"form view."
msgstr ""
+"عند اختيار هذا الخيار، لن يظهر الإجراء في شريط الأدوات على يمين الشاشة أثناء "
+"اختيار طريقة عرض النموذج."
#. module: base
#: field:workflow,on_create:0
msgid "On Create"
-msgstr ""
+msgstr "عند الإنشاء"
#. module: base
#: code:addons/base/ir/ir_model.py:607
@@ -1143,7 +1162,7 @@ msgstr ""
#: field:res.config.users,login:0
#: field:res.users,login:0
msgid "Login"
-msgstr ""
+msgstr "تسجيل الدخول"
#. module: base
#: view:ir.actions.server:0
@@ -1155,7 +1174,7 @@ msgstr ""
#. module: base
#: model:ir.model,name:base.model_res_country_state
msgid "Country state"
-msgstr ""
+msgstr "الولاية أو المنطقة في الدولة"
#. module: base
#: selection:ir.property,type:0
@@ -1165,19 +1184,19 @@ msgstr ""
#. module: base
#: model:ir.model,name:base.model_res_request_link
msgid "res.request.link"
-msgstr ""
+msgstr "res.request.link"
#. module: base
#: field:ir.actions.wizard,name:0
msgid "Wizard Info"
-msgstr ""
+msgstr "معلومات المعالج"
#. module: base
#: view:base.language.export:0
#: model:ir.actions.act_window,name:base.action_wizard_lang_export
#: model:ir.ui.menu,name:base.menu_wizard_lang_export
msgid "Export Translation"
-msgstr ""
+msgstr "تصدير ترجمة"
#. module: base
#: help:res.log,secondary:0
@@ -1189,7 +1208,7 @@ msgstr ""
#. module: base
#: model:res.country,name:base.tp
msgid "East Timor"
-msgstr ""
+msgstr "تيمور الشرقية"
#. module: base
#: model:res.company,follow_up_msg:base.main_company
@@ -1208,11 +1227,24 @@ msgid ""
"%(user_signature)s\n"
"%(company_name)s"
msgstr ""
+"التاريخ: %(date)s\n"
+"\n"
+"عزيزي %(partner_name)s،\n"
+"\n"
+"مرفق بهذه الرسالة تذكير بكافة فواتيرك غير المسددة، والتي يبلغ مجموعها:\n"
+"\n"
+"\n"
+"%(followup_amount).2f %(company_currency)s\n"
+"\n"
+"وشكراً.\n"
+"--\n"
+"%(user_signature)s\n"
+"%(company_name)s"
#. module: base
#: field:res.currency,accuracy:0
msgid "Computational Accuracy"
-msgstr ""
+msgstr "دقة الحسابات"
#. module: base
#: selection:base.language.install,lang:0
@@ -1222,37 +1254,37 @@ msgstr ""
#. module: base
#: model:ir.model,name:base.model_wizard_ir_model_menu_create_line
msgid "wizard.ir.model.menu.create.line"
-msgstr ""
+msgstr "wizard.ir.model.menu.create.line"
#. module: base
#: field:ir.attachment,res_id:0
msgid "Attached ID"
-msgstr ""
+msgstr "معرف ملحقات"
#. module: base
#: view:ir.sequence:0
msgid "Day: %(day)s"
-msgstr ""
+msgstr "اليوم: %(day)s"
#. module: base
#: model:res.country,name:base.mv
msgid "Maldives"
-msgstr ""
+msgstr "جزر المالديف"
#. module: base
#: help:ir.values,res_id:0
msgid "Keep 0 if the action must appear on all resources."
-msgstr ""
+msgstr "أبق 0 لكي يظهر الإجراء دائماً"
#. module: base
#: model:ir.model,name:base.model_ir_rule
msgid "ir.rule"
-msgstr ""
+msgstr "ir.rule"
#. module: base
#: selection:ir.cron,interval_type:0
msgid "Days"
-msgstr ""
+msgstr "الأيام"
#. module: base
#: help:ir.actions.server,condition:0
@@ -1260,36 +1292,38 @@ msgid ""
"Condition that is to be tested before action is executed, e.g. "
"object.list_price > object.cost_price"
msgstr ""
+"الشرط الذي يجب أن يتحقق لكي يتمّ تنفيذ الإجراء. مثال: object.list_price > "
+"object.cost_price"
#. module: base
#: code:addons/base/res/partner/partner.py:155
#: code:addons/base/res/res_company.py:66
#, python-format
msgid " (copy)"
-msgstr ""
+msgstr " (نسخ)"
#. module: base
#: view:res.lang:0
msgid "7. %H:%M:%S ==> 18:25:20"
-msgstr ""
+msgstr "7. %H:%M:%S ==> 18:25:20"
#. module: base
#: view:res.partner:0
#: view:res.partner.category:0
#: field:res.partner.category,partner_ids:0
msgid "Partners"
-msgstr ""
+msgstr "الشركاء"
#. module: base
#: field:res.partner.category,parent_left:0
msgid "Left parent"
-msgstr ""
+msgstr "الأصل الأيسر"
#. module: base
#: model:ir.actions.act_window,name:base.res_widget_act_window
#: model:ir.ui.menu,name:base.menu_res_widget_act_window
msgid "Homepage Widgets"
-msgstr ""
+msgstr "عناصر واجهة المستخدم للصفحة الرئيسية"
#. module: base
#: help:ir.actions.server,message:0
@@ -1297,6 +1331,8 @@ msgid ""
"Specify the message. You can use the fields from the object. e.g. `Dear [[ "
"object.partner_id.name ]]`"
msgstr ""
+"حدّد الرسالة. يمكنك استخدام حقول الكائن. مثال: 'عزيزي [[ "
+"object.partner_id.name ]]'"
#. module: base
#: field:ir.attachment,res_model:0
@@ -1306,7 +1342,7 @@ msgstr ""
#. module: base
#: view:ir.rule:0
msgid "Domain Setup"
-msgstr ""
+msgstr "إعداد النطاق"
#. module: base
#: field:ir.actions.server,trigger_name:0
@@ -1316,19 +1352,19 @@ msgstr ""
#. module: base
#: model:ir.model,name:base.model_ir_model_access
msgid "ir.model.access"
-msgstr ""
+msgstr "ir.model.access"
#. module: base
#: field:ir.cron,priority:0
#: field:res.request,priority:0
#: field:res.request.link,priority:0
msgid "Priority"
-msgstr ""
+msgstr "الأولوية"
#. module: base
#: field:workflow.transition,act_from:0
msgid "Source Activity"
-msgstr ""
+msgstr "النشاط المصدر"
#. module: base
#: view:ir.sequence:0
@@ -1338,40 +1374,40 @@ msgstr ""
#. module: base
#: selection:ir.server.object.lines,type:0
msgid "Formula"
-msgstr ""
+msgstr "الصيغة"
#. module: base
#: code:addons/base/res/res_user.py:389
#, python-format
msgid "Can not remove root user!"
-msgstr ""
+msgstr "لا يمكن حذف المستخدم root!"
#. module: base
#: model:res.country,name:base.mw
msgid "Malawi"
-msgstr ""
+msgstr "مالاوي"
#. module: base
#: code:addons/base/res/res_user.py:51
#: code:addons/base/res/res_user.py:413
#, python-format
msgid "%s (copy)"
-msgstr ""
+msgstr "%s (نسخة)"
#. module: base
#: field:res.partner.address,type:0
msgid "Address Type"
-msgstr ""
+msgstr "نوع العنوان"
#. module: base
#: view:ir.ui.menu:0
msgid "Full Path"
-msgstr ""
+msgstr "المسار كاملاً"
#. module: base
#: view:res.request:0
msgid "References"
-msgstr ""
+msgstr "المراجع"
#. module: base
#: view:res.lang:0
@@ -1384,12 +1420,12 @@ msgstr ""
#. module: base
#: view:ir.ui.view:0
msgid "Advanced"
-msgstr ""
+msgstr "متقدم"
#. module: base
#: model:res.country,name:base.fi
msgid "Finland"
-msgstr ""
+msgstr "فنلندا"
#. module: base
#: selection:ir.actions.act_window,view_type:0
@@ -1398,28 +1434,30 @@ msgstr ""
#: selection:ir.ui.view,type:0
#: selection:wizard.ir.model.menu.create.line,view_type:0
msgid "Tree"
-msgstr ""
+msgstr "الشجرة"
#. module: base
#: help:res.config.users,password:0
msgid ""
"Keep empty if you don't want the user to be able to connect on the system."
-msgstr ""
+msgstr "أبقِ خالياً لمنع المستخدم من استخدام النظام."
#. module: base
#: view:ir.actions.server:0
msgid "Create / Write / Copy"
-msgstr ""
+msgstr "إنشاء / كتابة / نسخ"
#. module: base
#: view:base.language.export:0
msgid "https://help.launchpad.net/Translations"
msgstr ""
+"https://www.facebook.com/#!/pages/OpenERP-Arabic-Team/270243976333404 أو "
+"https://help.launchpad.net/Translations"
#. module: base
#: field:ir.actions.act_window,view_mode:0
msgid "View Mode"
-msgstr ""
+msgstr "وضع العرض"
#. module: base
#: view:base.language.import:0
@@ -1427,6 +1465,8 @@ msgid ""
"When using CSV format, please also check that the first line of your file is "
"one of the following:"
msgstr ""
+"عند استخدام صيغة CSV، تأكد من أن السطر الأول من الملف هو أحد الخيارات "
+"التالية:"
#. module: base
#: code:addons/fields.py:114
@@ -1437,7 +1477,7 @@ msgstr ""
#. module: base
#: view:res.log:0
msgid "Logs"
-msgstr ""
+msgstr "السجلات"
#. module: base
#: selection:base.language.install,lang:0
@@ -1455,11 +1495,13 @@ msgid ""
"This wizard will scan all module repositories on the server side to detect "
"newly added modules as well as any change to existing modules."
msgstr ""
+"يقوم هذا المعالج بالبحث عن أي وحدات برمجية جديدة أو تحديثات وحدات موجودة في "
+"الخادم."
#. module: base
#: field:res.company,logo:0
msgid "Logo"
-msgstr ""
+msgstr "الشعار"
#. module: base
#: view:res.partner.address:0
@@ -1469,13 +1511,13 @@ msgstr ""
#. module: base
#: view:ir.module.module:0
msgid "Uninstall (beta)"
-msgstr ""
+msgstr "إزالة (تجريبي)"
#. module: base
#: selection:ir.actions.act_window,target:0
#: selection:ir.actions.url,target:0
msgid "New Window"
-msgstr ""
+msgstr "نافذة جديدة"
#. module: base
#: model:res.country,name:base.bs
@@ -1492,17 +1534,17 @@ msgstr ""
#. module: base
#: view:ir.attachment:0
msgid "Attachment"
-msgstr ""
+msgstr "مرفق"
#. module: base
#: model:res.country,name:base.ie
msgid "Ireland"
-msgstr ""
+msgstr "إيرلندا"
#. module: base
#: field:base.module.update,update:0
msgid "Number of modules updated"
-msgstr ""
+msgstr "عدد الوحدات البرمجية التي تمّ نحديثها"
#. module: base
#: code:addons/fields.py:100
@@ -1513,7 +1555,7 @@ msgstr ""
#. module: base
#: view:workflow.activity:0
msgid "Workflow Activity"
-msgstr ""
+msgstr "نشاط سير العمل"
#. module: base
#: view:ir.rule:0
@@ -1528,6 +1570,8 @@ msgid ""
"Views allows you to personalize each view of OpenERP. You can add new "
"fields, move fields, rename them or delete the ones that you do not need."
msgstr ""
+"طرق العرض تمكنك من تخصيص أي من شاشات OpenERP. يمكنك إضافة حقول جديدة، نقل "
+"الحقول، تغيير أسمائها أو حذف أي منها."
#. module: base
#: field:ir.actions.act_window,groups_id:0
@@ -1548,7 +1592,7 @@ msgstr ""
#: view:res.users:0
#: field:res.users,groups_id:0
msgid "Groups"
-msgstr ""
+msgstr "المجموعات"
#. module: base
#: selection:base.language.install,lang:0
@@ -1562,21 +1606,24 @@ msgid ""
"access to selected functionalities within the system. Click on 'Done' if you "
"do not wish to add more users at this stage, you can always do this later."
msgstr ""
+"أنشئ متخدمين إضافيين وعين لهم مجموعات تعرف صلاحياتهم في النظام. عند انتهائك، "
+"أو في حالة عدم رغبتك في إضافة مستخدمين، انقر 'تمّ'. يمكنك إضافة مستخدين "
+"لاحقاً وقتما تشاء."
#. module: base
#: model:res.country,name:base.bz
msgid "Belize"
-msgstr ""
+msgstr "بليز"
#. module: base
#: model:res.country,name:base.ge
msgid "Georgia"
-msgstr ""
+msgstr "جورجيا"
#. module: base
#: model:res.country,name:base.pl
msgid "Poland"
-msgstr ""
+msgstr "بولندا"
#. module: base
#: help:ir.actions.act_window,view_mode:0
@@ -1584,28 +1631,30 @@ msgid ""
"Comma-separated list of allowed view modes, such as 'form', 'tree', "
"'calendar', etc. (Default: tree,form)"
msgstr ""
+"قائمة (تفصل عناصرها فواصل) بطرق العرض المسموح بها. مثال: 'نموذج'، 'شجرة'، "
+"'تقويم'، إلخ. (القيمة الافتراضية: شجرة، نموذج)"
#. module: base
#: code:addons/orm.py:3147
#, python-format
msgid "A document was modified since you last viewed it (%s:%d)"
-msgstr ""
+msgstr "ثمّة مستند تمّ تعديله بعد آخر مرة عاينته فيها (%s:%d)"
#. module: base
#: view:workflow:0
msgid "Workflow Editor"
-msgstr ""
+msgstr "محرّر سير العمل"
#. module: base
#: selection:ir.module.module,state:0
#: selection:ir.module.module.dependency,state:0
msgid "To be removed"
-msgstr ""
+msgstr "للإزالة"
#. module: base
#: model:ir.model,name:base.model_ir_sequence
msgid "ir.sequence"
-msgstr ""
+msgstr "ir.sequence"
#. module: base
#: help:ir.actions.server,expression:0
@@ -1620,24 +1669,24 @@ msgstr ""
#: selection:ir.translation,type:0
#: field:multi_company.default,field_id:0
msgid "Field"
-msgstr ""
+msgstr "حقل"
#. module: base
#: view:ir.rule:0
msgid "Groups (no group = global)"
-msgstr ""
+msgstr "المجموعة (خالي = الجميع)"
#. module: base
#: model:res.country,name:base.fo
msgid "Faroe Islands"
-msgstr ""
+msgstr "جزر فارو"
#. module: base
#: selection:res.config.users,view:0
#: selection:res.config.view,view:0
#: selection:res.users,view:0
msgid "Simplified"
-msgstr ""
+msgstr "مبسطة"
#. module: base
#: model:res.country,name:base.st
@@ -1647,7 +1696,7 @@ msgstr ""
#. module: base
#: selection:res.partner.address,type:0
msgid "Invoice"
-msgstr ""
+msgstr "الفاتورة"
#. module: base
#: selection:base.language.install,lang:0
@@ -1657,41 +1706,41 @@ msgstr ""
#. module: base
#: model:res.country,name:base.bb
msgid "Barbados"
-msgstr ""
+msgstr "باربادوس"
#. module: base
#: model:res.country,name:base.mg
msgid "Madagascar"
-msgstr ""
+msgstr "مدغشقر"
#. module: base
#: code:addons/base/ir/ir_model.py:96
#, python-format
msgid ""
"The Object name must start with x_ and not contain any special character !"
-msgstr ""
+msgstr "اسم الكائن يجب أن يبدأ بـ \"_x\" ولا يحتوي على رموز خاصة !"
#. module: base
#: field:ir.actions.configuration.wizard,note:0
msgid "Next Wizard"
-msgstr ""
+msgstr "المعالج التالي"
#. module: base
#: model:ir.actions.act_window,name:base.action_menu_admin
#: view:ir.ui.menu:0
#: field:ir.ui.menu,name:0
msgid "Menu"
-msgstr ""
+msgstr "القائمة"
#. module: base
#: field:res.currency,rate:0
msgid "Current Rate"
-msgstr ""
+msgstr "السعر الحالي"
#. module: base
#: field:ir.ui.view.custom,ref_id:0
msgid "Original View"
-msgstr ""
+msgstr "طريقة العرض الأصلية"
#. module: base
#: view:ir.values:0
@@ -1706,17 +1755,17 @@ msgstr ""
#. module: base
#: model:res.country,name:base.ai
msgid "Anguilla"
-msgstr ""
+msgstr "أنجويلا"
#. module: base
#: field:ir.ui.view_sc,name:0
msgid "Shortcut Name"
-msgstr ""
+msgstr "اسم الاختصار"
#. module: base
#: help:ir.actions.act_window,limit:0
msgid "Default limit for the list view"
-msgstr ""
+msgstr "الحد الافتراضي لطريقة عرض القائمة"
#. module: base
#: help:ir.actions.server,write_id:0
@@ -1728,22 +1777,23 @@ msgstr ""
#. module: base
#: model:res.country,name:base.zw
msgid "Zimbabwe"
-msgstr ""
+msgstr "زيمبابوي"
#. module: base
#: view:base.module.update:0
msgid "Please be patient, as this operation may take a few seconds..."
-msgstr ""
+msgstr "فضلاً انتظر. هذه العملية يمكن أن تستغرق عدة ثوانٍ..."
#. module: base
#: help:ir.values,action_id:0
msgid "This field is not used, it only helps you to select the right action."
msgstr ""
+"هذا الحقل غير مستخدم، ولكنه موجود ليساعدك على اختيار الإجراء المناسب."
#. module: base
#: field:ir.actions.server,email:0
msgid "Email Address"
-msgstr ""
+msgstr "عنوان البريد الإلكتروني"
#. module: base
#: selection:base.language.install,lang:0
@@ -1754,57 +1804,57 @@ msgstr ""
#: view:ir.actions.server:0
#: field:workflow.activity,action_id:0
msgid "Server Action"
-msgstr ""
+msgstr "إجراء الخادم"
#. module: base
#: model:res.country,name:base.tt
msgid "Trinidad and Tobago"
-msgstr ""
+msgstr "ترينيداد وتوباغو"
#. module: base
#: model:res.country,name:base.lv
msgid "Latvia"
-msgstr ""
+msgstr "لاتفيا"
#. module: base
#: view:ir.values:0
msgid "Values"
-msgstr ""
+msgstr "القيم"
#. module: base
#: view:ir.actions.server:0
msgid "Field Mappings"
-msgstr ""
+msgstr "ارتباطات الحقول"
#. module: base
#: view:base.language.export:0
msgid "Export Translations"
-msgstr ""
+msgstr "تصدير ترجمة"
#. module: base
#: model:ir.ui.menu,name:base.menu_custom
msgid "Customization"
-msgstr ""
+msgstr "تخصيص"
#. module: base
#: model:res.country,name:base.py
msgid "Paraguay"
-msgstr ""
+msgstr "باراجواي"
#. module: base
#: model:ir.model,name:base.model_ir_actions_act_window_close
msgid "ir.actions.act_window_close"
-msgstr ""
+msgstr "ir.actions.act_window_close"
#. module: base
#: field:ir.server.object.lines,col1:0
msgid "Destination"
-msgstr ""
+msgstr "الوجهة"
#. module: base
#: model:res.country,name:base.lt
msgid "Lithuania"
-msgstr ""
+msgstr "ليثوانيا"
#. module: base
#: model:ir.actions.act_window,name:base.action_view_partner_clear_ids
@@ -1829,28 +1879,28 @@ msgstr ""
#. module: base
#: view:res.lang:0
msgid "%y - Year without century [00,99]."
-msgstr ""
+msgstr "%y - السنة دون القرن [00،99]"
#. module: base
#: model:res.country,name:base.si
msgid "Slovenia"
-msgstr ""
+msgstr "سلوفينيا"
#. module: base
#: model:res.country,name:base.pk
msgid "Pakistan"
-msgstr ""
+msgstr "باكستان"
#. module: base
#: code:addons/orm.py:1350
#, python-format
msgid "Invalid Object Architecture!"
-msgstr ""
+msgstr "هيكل الكائن غير صحيح!"
#. module: base
#: model:ir.ui.menu,name:base.menu_email_gateway_form
msgid "Messages"
-msgstr ""
+msgstr "الرسائل"
#. module: base
#: code:addons/base/ir/ir_model.py:303
@@ -1862,12 +1912,12 @@ msgstr ""
#: code:addons/base/module/wizard/base_update_translations.py:38
#, python-format
msgid "Error!"
-msgstr ""
+msgstr "خطأ!"
#. module: base
#: view:res.lang:0
msgid "%p - Equivalent of either AM or PM."
-msgstr ""
+msgstr "%p - صباحاً أم مساءً"
#. module: base
#: view:ir.actions.server:0
@@ -1877,17 +1927,17 @@ msgstr ""
#. module: base
#: help:multi_company.default,company_id:0
msgid "Company where the user is connected"
-msgstr ""
+msgstr "الشركة ذات العلاقة بالمستخدم"
#. module: base
#: field:publisher_warranty.contract,date_stop:0
msgid "Ending Date"
-msgstr ""
+msgstr "تاريخ الانتهاء"
#. module: base
#: model:res.country,name:base.nz
msgid "New Zealand"
-msgstr ""
+msgstr "نيوزيلندا"
#. module: base
#: code:addons/orm.py:3366
@@ -1895,7 +1945,7 @@ msgstr ""
msgid ""
"One of the records you are trying to modify has already been deleted "
"(Document type: %s)."
-msgstr ""
+msgstr "أحد السجلات التي تحاول تعديلها قد تمّ حذفه سابقاً (نوع المستند: %s)"
#. module: base
#: model:ir.actions.act_window,help:base.action_country
@@ -1904,6 +1954,8 @@ msgid ""
"partner records. You can create or delete countries to make sure the ones "
"you are working on will be maintained."
msgstr ""
+"عرض وتعديل قائمة الدول التي يمكن استخدامها في سجلات شركائك. يمكنك إضافة و "
+"إزالة دول كما تشاء."
#. module: base
#: model:res.partner.category,name:base.res_partner_category_7
@@ -1913,7 +1965,7 @@ msgstr ""
#. module: base
#: model:res.country,name:base.nf
msgid "Norfolk Island"
-msgstr ""
+msgstr "جزيرة نورفولك"
#. module: base
#: selection:base.language.install,lang:0
@@ -1923,28 +1975,28 @@ msgstr ""
#. module: base
#: help:ir.model.fields,model:0
msgid "The technical name of the model this field belongs to"
-msgstr ""
+msgstr "الاسم التقني للنموذج الذي يحتوي هذا الحقل"
#. module: base
#: field:ir.actions.server,action_id:0
#: selection:ir.actions.server,state:0
msgid "Client Action"
-msgstr ""
+msgstr "إجراء العميل"
#. module: base
#: model:res.country,name:base.bd
msgid "Bangladesh"
-msgstr ""
+msgstr "بنغلاديش"
#. module: base
#: constraint:res.company:0
msgid "Error! You can not create recursive companies."
-msgstr ""
+msgstr "خطأ! لا يمكنك إنشاء شركات متداخلة (شركات تستخدم نفسها)."
#. module: base
#: selection:publisher_warranty.contract,state:0
msgid "Valid"
-msgstr ""
+msgstr "صحيح"
#. module: base
#: selection:ir.translation,type:0
@@ -1955,61 +2007,61 @@ msgstr ""
#: code:addons/base/module/module.py:322
#, python-format
msgid "Can not upgrade module '%s'. It is not installed."
-msgstr ""
+msgstr "لا يمكنك ترقية الوحدة البرمجية '%s' لأنها غير مثبّتة."
#. module: base
#: model:res.country,name:base.cu
msgid "Cuba"
-msgstr ""
+msgstr "كوبا"
#. module: base
#: model:ir.model,name:base.model_res_partner_event
msgid "res.partner.event"
-msgstr ""
+msgstr "res.partner.event"
#. module: base
#: model:res.widget,title:base.facebook_widget
msgid "Facebook"
-msgstr ""
+msgstr "فيسبوك"
#. module: base
#: model:res.country,name:base.am
msgid "Armenia"
-msgstr ""
+msgstr "أرمينيا"
#. module: base
#: model:ir.actions.act_window,name:base.ir_property_form
#: model:ir.ui.menu,name:base.menu_ir_property_form_all
msgid "Configuration Parameters"
-msgstr ""
+msgstr "متغيرات الإعدادات"
#. module: base
#: constraint:ir.cron:0
msgid "Invalid arguments"
-msgstr ""
+msgstr "معطيات غير سليمة"
#. module: base
#: model:res.country,name:base.se
msgid "Sweden"
-msgstr ""
+msgstr "السويد"
#. module: base
#: selection:ir.actions.act_window.view,view_mode:0
#: selection:ir.ui.view,type:0
#: selection:wizard.ir.model.menu.create.line,view_type:0
msgid "Gantt"
-msgstr ""
+msgstr "جانت"
#. module: base
#: view:ir.property:0
msgid "Property"
-msgstr ""
+msgstr "الخاصية"
#. module: base
#: model:ir.model,name:base.model_res_partner_bank_type
#: view:res.partner.bank.type:0
msgid "Bank Account Type"
-msgstr ""
+msgstr "نوع الحساب المصرفي"
#. module: base
#: field:base.language.export,config_logo:0
@@ -2026,7 +2078,7 @@ msgstr ""
#: field:res.config.users,config_logo:0
#: field:res.config.view,config_logo:0
msgid "Image"
-msgstr ""
+msgstr "الصورة"
#. module: base
#: view:ir.actions.server:0
@@ -2036,19 +2088,19 @@ msgstr ""
#. module: base
#: selection:publisher_warranty.contract,state:0
msgid "Canceled"
-msgstr ""
+msgstr "ملغي"
#. module: base
#: model:res.country,name:base.at
msgid "Austria"
-msgstr ""
+msgstr "النمسا"
#. module: base
#: selection:base.language.install,state:0
#: selection:base.module.import,state:0
#: selection:base.module.update,state:0
msgid "done"
-msgstr ""
+msgstr "تمّ"
#. module: base
#: selection:ir.actions.act_window.view,view_mode:0
@@ -2056,12 +2108,12 @@ msgstr ""
#: selection:ir.ui.view,type:0
#: selection:wizard.ir.model.menu.create.line,view_type:0
msgid "Calendar"
-msgstr ""
+msgstr "التقويم"
#. module: base
#: field:res.partner.address,partner_id:0
msgid "Partner Name"
-msgstr ""
+msgstr "اسم الشريك"
#. module: base
#: field:workflow.activity,signal_send:0
@@ -2071,7 +2123,7 @@ msgstr ""
#. module: base
#: model:res.partner.category,name:base.res_partner_category_17
msgid "HR sector"
-msgstr ""
+msgstr "قطاع الموارد البشرية"
#. module: base
#: code:addons/orm.py:3817
@@ -2085,19 +2137,19 @@ msgstr ""
#. module: base
#: model:ir.model,name:base.model_ir_module_module_dependency
msgid "Module dependency"
-msgstr ""
+msgstr "متطلّب للوحدة البرمجية"
#. module: base
#: selection:publisher_warranty.contract.wizard,state:0
msgid "Draft"
-msgstr ""
+msgstr "مسودّة"
#. module: base
#: selection:res.config.users,view:0
#: selection:res.config.view,view:0
#: selection:res.users,view:0
msgid "Extended"
-msgstr ""
+msgstr "مفصلة"
#. module: base
#: model:ir.actions.act_window,help:base.action_partner_title_contact
@@ -2110,30 +2162,30 @@ msgstr ""
#. module: base
#: field:res.company,rml_footer1:0
msgid "Report Footer 1"
-msgstr ""
+msgstr "تذييل تقرير 1"
#. module: base
#: field:res.company,rml_footer2:0
msgid "Report Footer 2"
-msgstr ""
+msgstr "تذييل تقرير 2"
#. module: base
#: view:ir.model.access:0
#: view:res.groups:0
#: field:res.groups,model_access:0
msgid "Access Controls"
-msgstr ""
+msgstr "التحكم في الصلاحيات"
#. module: base
#: view:ir.module.module:0
#: field:ir.module.module,dependencies_id:0
msgid "Dependencies"
-msgstr ""
+msgstr "المتطلبات"
#. module: base
#: field:multi_company.default,company_id:0
msgid "Main Company"
-msgstr ""
+msgstr "الشركة الرئيسية"
#. module: base
#: field:ir.ui.menu,web_icon_hover:0
@@ -2150,13 +2202,13 @@ msgstr ""
#. module: base
#: field:res.partner.address,birthdate:0
msgid "Birthdate"
-msgstr ""
+msgstr "تاريخ الميلاد"
#. module: base
#: model:ir.actions.act_window,name:base.action_partner_title_contact
#: model:ir.ui.menu,name:base.menu_partner_title_contact
msgid "Contact Titles"
-msgstr ""
+msgstr "ألقاب جهات الاتصال"
#. module: base
#: view:base.language.import:0
@@ -2164,6 +2216,7 @@ msgid ""
"Please double-check that the file encoding is set to UTF-8 (sometimes called "
"Unicode) when the translator exports it."
msgstr ""
+"فضلاً تأكد أن الملف يستخدم ترميز UTF-8 (Unicode) عند تصديره من المترجم."
#. module: base
#: selection:base.language.install,lang:0
@@ -2185,12 +2238,12 @@ msgstr ""
#. module: base
#: field:ir.model.fields,select_level:0
msgid "Searchable"
-msgstr ""
+msgstr "قابل للبحث"
#. module: base
#: model:res.country,name:base.uy
msgid "Uruguay"
-msgstr ""
+msgstr "اوروغواي"
#. module: base
#: selection:base.language.install,lang:0
@@ -2200,12 +2253,12 @@ msgstr ""
#. module: base
#: field:ir.rule,perm_write:0
msgid "Apply For Write"
-msgstr ""
+msgstr "اطلب صلاحية الكتابة"
#. module: base
#: field:ir.sequence,prefix:0
msgid "Prefix"
-msgstr ""
+msgstr "اللقب"
#. module: base
#: selection:base.language.install,lang:0
@@ -2220,7 +2273,7 @@ msgstr ""
#. module: base
#: view:ir.actions.server:0
msgid "Fields Mapping"
-msgstr ""
+msgstr "ارتباط الحقول"
#. module: base
#: selection:base.language.install,lang:0
@@ -2230,13 +2283,13 @@ msgstr ""
#. module: base
#: model:res.partner.title,name:base.res_partner_title_sir
msgid "Sir"
-msgstr ""
+msgstr "السيّد"
#. module: base
#: code:addons/orm.py:1622
#, python-format
msgid "There is no view of type '%s' defined for the structure!"
-msgstr ""
+msgstr "طريقة العرض '%s' غير معرفة لهذا الهيكل!"
#. module: base
#: field:ir.default,ref_id:0
@@ -2247,17 +2300,17 @@ msgstr ""
#: model:ir.actions.server,name:base.action_start_configurator
#: model:ir.ui.menu,name:base.menu_view_base_module_configuration
msgid "Start Configuration"
-msgstr ""
+msgstr "بدء الإعداد"
#. module: base
#: model:res.country,name:base.mt
msgid "Malta"
-msgstr ""
+msgstr "مالطة"
#. module: base
#: field:ir.actions.server,fields_lines:0
msgid "Field Mappings."
-msgstr ""
+msgstr "ارتباطات الحقول."
#. module: base
#: model:ir.model,name:base.model_ir_module_module
@@ -2268,7 +2321,7 @@ msgstr ""
#: report:ir.module.reference.graph:0
#: field:ir.translation,module:0
msgid "Module"
-msgstr ""
+msgstr "الوحدة البرمجية"
#. module: base
#: field:ir.attachment,description:0
@@ -2279,7 +2332,7 @@ msgstr ""
#: field:res.partner.event,description:0
#: view:res.request:0
msgid "Description"
-msgstr ""
+msgstr "الوصف"
#. module: base
#: model:ir.actions.act_window,name:base.action_workflow_instance_form
@@ -2290,7 +2343,7 @@ msgstr ""
#. module: base
#: model:res.country,name:base.aq
msgid "Antarctica"
-msgstr ""
+msgstr "انتاركتيكا"
#. module: base
#: field:ir.actions.report.xml,auto:0
@@ -2300,17 +2353,17 @@ msgstr ""
#. module: base
#: view:base.language.import:0
msgid "_Import"
-msgstr ""
+msgstr "ا_ستيراد"
#. module: base
#: view:res.partner.canal:0
msgid "Channel"
-msgstr ""
+msgstr "القناة"
#. module: base
#: field:res.lang,grouping:0
msgid "Separator Format"
-msgstr ""
+msgstr "تنسيق الفاصل"
#. module: base
#: selection:publisher_warranty.contract,state:0
@@ -2320,35 +2373,35 @@ msgstr ""
#. module: base
#: model:ir.ui.menu,name:base.next_id_9
msgid "Database Structure"
-msgstr ""
+msgstr "هيكل قاعدة البيانات"
#. module: base
#: model:ir.actions.act_window,name:base.action_partner_mass_mail
#: model:ir.model,name:base.model_partner_wizard_spam
#: view:partner.wizard.spam:0
msgid "Mass Mailing"
-msgstr ""
+msgstr "إرسال رسائل شاملة (عامة)"
#. module: base
#: model:res.country,name:base.yt
msgid "Mayotte"
-msgstr ""
+msgstr "مايوت"
#. module: base
#: code:addons/base/ir/ir_actions.py:597
#, python-format
msgid "Please specify an action to launch !"
-msgstr ""
+msgstr "فضلاً حدد إجراءً للبدء بتنفيذه!"
#. module: base
#: view:res.payterm:0
msgid "Payment Term"
-msgstr ""
+msgstr "أجل السداد"
#. module: base
#: selection:res.lang,direction:0
msgid "Right-to-Left"
-msgstr ""
+msgstr "من اليمين إلى اليسار"
#. module: base
#: view:ir.actions.act_window:0
@@ -2357,27 +2410,27 @@ msgstr ""
#: model:ir.model,name:base.model_ir_filters
#: model:ir.ui.menu,name:base.menu_ir_filters
msgid "Filters"
-msgstr ""
+msgstr "مرشحات الفرز"
#. module: base
#: code:addons/orm.py:758
#, python-format
msgid "Please check that all your lines have %d columns."
-msgstr ""
+msgstr "فضلاً تأكد من أن كل سطر يحتوي %d عموداً."
#. module: base
#: model:ir.actions.act_window,name:base.ir_cron_act
#: view:ir.cron:0
#: model:ir.ui.menu,name:base.menu_ir_cron_act
msgid "Scheduled Actions"
-msgstr ""
+msgstr "الإجراءات المعدّة للتنفيذ"
#. module: base
#: field:res.partner.address,title:0
#: field:res.partner.title,name:0
#: field:res.widget,title:0
msgid "Title"
-msgstr ""
+msgstr "اللقب"
#. module: base
#: help:ir.property,res_id:0
@@ -2388,13 +2441,13 @@ msgstr ""
#: code:addons/orm.py:3448
#, python-format
msgid "Recursivity Detected."
-msgstr ""
+msgstr "ثمّة تداخل."
#. module: base
#: code:addons/base/module/module.py:262
#, python-format
msgid "Recursion error in modules dependencies !"
-msgstr ""
+msgstr "خطأ تداخل في متطلبات الوحدات البرمجية!"
#. module: base
#: view:base.language.install:0
@@ -2403,11 +2456,14 @@ msgid ""
"loading a new language it becomes available as default interface language "
"for users and partners."
msgstr ""
+"يساعدك هذا المعالج على إضافة لغة جديدة لنسختك من نظام OpenERP. بعد تحميل "
+"اللغة الجديدة، يمكن للمستخدمين والشركاء استخدامها كلغة افتراضية لواجهة "
+"الاستخدام."
#. module: base
#: view:ir.model:0
msgid "Create a Menu"
-msgstr ""
+msgstr "إنشاء قائمة"
#. module: base
#: help:res.partner,vat:0
@@ -2419,28 +2475,28 @@ msgstr ""
#. module: base
#: model:ir.model,name:base.model_maintenance_contract
msgid "maintenance.contract"
-msgstr ""
+msgstr "maintenance.contract"
#. module: base
#: model:res.country,name:base.ru
msgid "Russian Federation"
-msgstr ""
+msgstr "الإتّحاد الروسي"
#. module: base
#: selection:base.language.install,lang:0
msgid "Urdu / اردو"
-msgstr ""
+msgstr "Urdu / اردو"
#. module: base
#: field:res.company,name:0
msgid "Company Name"
-msgstr ""
+msgstr "اسم الشركة"
#. module: base
#: model:ir.actions.act_window,name:base.action_country
#: model:ir.ui.menu,name:base.menu_country_partner
msgid "Countries"
-msgstr ""
+msgstr "الدول"
#. module: base
#: selection:ir.translation,type:0
@@ -2450,12 +2506,12 @@ msgstr ""
#. module: base
#: view:ir.rule:0
msgid "Record rules"
-msgstr ""
+msgstr "قواعد السجلات"
#. module: base
#: view:ir.property:0
msgid "Field Information"
-msgstr ""
+msgstr "معلومات الحقل"
#. module: base
#: view:ir.actions.todo:0
@@ -2471,7 +2527,7 @@ msgstr ""
#. module: base
#: field:res.partner,vat:0
msgid "VAT"
-msgstr ""
+msgstr "ضريبة القيمة المضافة"
#. module: base
#: view:res.lang:0
@@ -2481,7 +2537,7 @@ msgstr ""
#. module: base
#: constraint:res.partner.category:0
msgid "Error ! You can not create recursive categories."
-msgstr ""
+msgstr "خطأ! لا يمكنك إنشاء فئات متداخلة."
#. module: base
#: view:res.lang:0
@@ -2491,17 +2547,17 @@ msgstr ""
#. module: base
#: view:res.lang:0
msgid "%d - Day of the month [01,31]."
-msgstr ""
+msgstr "%d - اليوم من الشهر [01،31]"
#. module: base
#: model:res.country,name:base.tj
msgid "Tajikistan"
-msgstr ""
+msgstr "طاجكستان"
#. module: base
#: selection:ir.module.module,license:0
msgid "GPL-2 or later version"
-msgstr ""
+msgstr "GPL-2 أو إصدار أحدث"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
@@ -2515,6 +2571,8 @@ msgid ""
"Can not create the module file:\n"
" %s"
msgstr ""
+"لا يمكن إنشاء ملف الوحدة البرمجية:\n"
+" %s"
#. module: base
#: code:addons/orm.py:2973
@@ -2523,11 +2581,13 @@ msgid ""
"Operation prohibited by access rules, or performed on an already deleted "
"document (Operation: read, Document type: %s)."
msgstr ""
+"العملية ممنوعة حسب قواعد الصلاحيات، أو أنه تمّ تنفيذ العملية على مستندات "
+"محذوفة (العملية: قراءة. نوع المستند: %s)."
#. module: base
#: model:res.country,name:base.nr
msgid "Nauru"
-msgstr ""
+msgstr "ناورو"
#. module: base
#: code:addons/base/module/module.py:200
@@ -2538,7 +2598,7 @@ msgstr ""
#. module: base
#: model:ir.model,name:base.model_ir_property
msgid "ir.property"
-msgstr ""
+msgstr "ir.property"
#. module: base
#: selection:ir.actions.act_window,view_type:0
@@ -2547,23 +2607,23 @@ msgstr ""
#: selection:ir.ui.view,type:0
#: selection:wizard.ir.model.menu.create.line,view_type:0
msgid "Form"
-msgstr ""
+msgstr "النموذج"
#. module: base
#: model:res.country,name:base.me
msgid "Montenegro"
-msgstr ""
+msgstr "الجبل الأسود"
#. module: base
#: view:ir.cron:0
msgid "Technical Data"
-msgstr ""
+msgstr "بيانات تقنية"
#. module: base
#: view:res.partner:0
#: field:res.partner,category_id:0
msgid "Categories"
-msgstr ""
+msgstr "الفئات"
#. module: base
#: view:base.language.import:0
@@ -2572,34 +2632,36 @@ msgid ""
"import a language pack from here. Other OpenERP languages than the official "
"ones can be found on launchpad."
msgstr ""
+"إذا كنت تريد استخدام لغة ليست ضمن اللغات المدعومة رسمياً، يمكنك استيراد حزمة "
+"لغة من هنا. يوجد المزيد من اللغات غير المدعومة رسمياً على موقع Launchpad."
#. module: base
#: view:ir.module.module:0
#: selection:ir.module.module,state:0
#: selection:ir.module.module.dependency,state:0
msgid "To be upgraded"
-msgstr ""
+msgstr "للترقية"
#. module: base
#: model:res.country,name:base.ly
msgid "Libya"
-msgstr ""
+msgstr "ليبيا"
#. module: base
#: model:res.country,name:base.cf
msgid "Central African Republic"
-msgstr ""
+msgstr "جمهورية أفريقيا الوسطى"
#. module: base
#: model:res.country,name:base.li
msgid "Liechtenstein"
-msgstr ""
+msgstr "ليشتنشتاين"
#. module: base
#: model:ir.model,name:base.model_partner_sms_send
#: view:partner.sms.send:0
msgid "Send SMS"
-msgstr ""
+msgstr "إرسال رسالة قصيرة (SMS)"
#. module: base
#: field:res.partner,ean13:0
@@ -2610,23 +2672,23 @@ msgstr ""
#: code:addons/orm.py:1622
#, python-format
msgid "Invalid Architecture!"
-msgstr ""
+msgstr "هيكل غير صحيح!"
#. module: base
#: model:res.country,name:base.pt
msgid "Portugal"
-msgstr ""
+msgstr "البرتغال"
#. module: base
#: sql_constraint:ir.model.data:0
msgid ""
"You cannot have multiple records with the same id for the same module !"
-msgstr ""
+msgstr "لا يمكن استخدام المعرّف نفسه لأكثر من سجل في وحدة برمجية واحدة!"
#. module: base
#: field:ir.module.module,certificate:0
msgid "Quality Certificate"
-msgstr ""
+msgstr "شهادة الجودة"
#. module: base
#: view:res.lang:0
@@ -2637,17 +2699,17 @@ msgstr ""
#: field:res.config.users,date:0
#: field:res.users,date:0
msgid "Last Connection"
-msgstr ""
+msgstr "الاتصال الأخير"
#. module: base
#: field:ir.actions.act_window,help:0
msgid "Action description"
-msgstr ""
+msgstr "وصف الإجراء"
#. module: base
#: help:res.partner,customer:0
msgid "Check this box if the partner is a customer."
-msgstr ""
+msgstr "اختر إذا كان الشريك عميلاً."
#. module: base
#: model:ir.actions.act_window,name:base.res_lang_act_window
@@ -2655,18 +2717,18 @@ msgstr ""
#: model:ir.ui.menu,name:base.menu_res_lang_act_window
#: view:res.lang:0
msgid "Languages"
-msgstr ""
+msgstr "اللغات"
#. module: base
#: selection:workflow.activity,join_mode:0
#: selection:workflow.activity,split_mode:0
msgid "Xor"
-msgstr ""
+msgstr "Xor"
#. module: base
#: model:res.country,name:base.ec
msgid "Ecuador"
-msgstr ""
+msgstr "الإكوادور"
#. module: base
#: code:addons/base/module/wizard/base_export_language.py:52
@@ -2676,6 +2738,9 @@ msgid ""
"spreadsheet software. The file encoding is UTF-8. You have to translate the "
"latest column before reimporting it."
msgstr ""
+"احفظ هذا المستند بصيغة CSV وافتحه باستخدام برنامجك المفضل للجداول "
+"الإلكترونية. سيتمّ حفظ الملف باستخدام ترميز UTF-8. يجب عليك ترجمة العمود "
+"الأخير قبل أن تستورد الملف مرة أخرى."
#. module: base
#: model:ir.actions.act_window,name:base.action_partner_customer_form
@@ -2683,12 +2748,12 @@ msgstr ""
#: model:ir.ui.menu,name:base.menu_partner_form
#: view:res.partner:0
msgid "Customers"
-msgstr ""
+msgstr "العملاء"
#. module: base
#: model:res.country,name:base.au
msgid "Australia"
-msgstr ""
+msgstr "استراليا"
#. module: base
#: help:res.partner,lang:0
@@ -2696,26 +2761,28 @@ msgid ""
"If the selected language is loaded in the system, all documents related to "
"this partner will be printed in this language. If not, it will be english."
msgstr ""
+"إذا كانت اللغة المختارة محملة في النظام، سيتم طباعة جميع المستندات المتعلقة "
+"بهذا الشريك باستخدام هذه اللغة، وإلّا فسوف يتمّ استخدام اللغة الإنجليزية."
#. module: base
#: report:ir.module.reference.graph:0
msgid "Menu :"
-msgstr ""
+msgstr "القائمة:"
#. module: base
#: selection:ir.model.fields,state:0
msgid "Base Field"
-msgstr ""
+msgstr "الحقل الأساسي"
#. module: base
#: view:publisher_warranty.contract:0
msgid "Validate"
-msgstr ""
+msgstr "تحقق"
#. module: base
#: field:ir.actions.todo,restart:0
msgid "Restart"
-msgstr ""
+msgstr "إعادة التشغيل"
#. module: base
#: field:ir.actions.report.xml,report_sxw_content:0
@@ -2727,7 +2794,7 @@ msgstr ""
#: view:ir.actions.wizard:0
#: field:wizard.ir.model.menu.create.line,wizard_id:0
msgid "Wizard"
-msgstr ""
+msgstr "المعالج"
#. module: base
#: view:ir.cron:0
@@ -2739,39 +2806,41 @@ msgstr ""
#, python-format
msgid "\"email_from\" needs to be set to send welcome mails to users"
msgstr ""
+"لا بدّ من تحديد قيمة لـ \"email_from\" حتى يمكنك إرسال خطابات الترحيب إلى "
+"المستخدمين"
#. module: base
#: selection:ir.translation,type:0
msgid "Constraint"
-msgstr ""
+msgstr "تقييد"
#. module: base
#: selection:ir.values,key:0
#: selection:res.partner.address,type:0
msgid "Default"
-msgstr ""
+msgstr "القيمة الافتراضية"
#. module: base
#: view:ir.model.fields:0
#: field:ir.model.fields,required:0
#: field:res.partner.bank.type.field,required:0
msgid "Required"
-msgstr ""
+msgstr "مطلوب"
#. module: base
#: view:res.users:0
msgid "Default Filters"
-msgstr ""
+msgstr "مرشحات الفرز الافتراضية"
#. module: base
#: field:res.request.history,name:0
msgid "Summary"
-msgstr ""
+msgstr "الملخّص"
#. module: base
#: field:multi_company.default,expression:0
msgid "Expression"
-msgstr ""
+msgstr "صيغة"
#. module: base
#: help:ir.actions.server,subject:0
@@ -2779,11 +2848,13 @@ msgid ""
"Specify the subject. You can use fields from the object, e.g. `Hello [[ "
"object.partner_id.name ]]`"
msgstr ""
+"حدد الموضوع. يمكنك استخدام حقول الكائن، مثل: 'مرحباً [[ "
+"object.partner_id.name ]]'"
#. module: base
#: view:res.company:0
msgid "Header/Footer"
-msgstr ""
+msgstr "رأس/تذييل"
#. module: base
#: help:ir.actions.act_window,help:0
@@ -2791,11 +2862,13 @@ msgid ""
"Optional help text for the users with a description of the target view, such "
"as its usage and purpose."
msgstr ""
+"نصّ مساعد اختياري للمستخدمين يشمل وصفاً للعرض المرجو. مثلاً: طريقة "
+"الاستخدام، والهدف من الإنشاء."
#. module: base
#: model:res.country,name:base.va
msgid "Holy See (Vatican City State)"
-msgstr ""
+msgstr "المقعد المقدّس (ولاية مدينة الفاتيكان)"
#. module: base
#: field:base.module.import,module_file:0
@@ -2810,7 +2883,7 @@ msgstr ""
#. module: base
#: model:res.partner.category,name:base.res_partner_category_16
msgid "Telecom sector"
-msgstr ""
+msgstr "قطاع الاتصالات"
#. module: base
#: field:workflow.transition,trigger_model:0
@@ -2820,7 +2893,7 @@ msgstr ""
#. module: base
#: view:res.users:0
msgid "Current Activity"
-msgstr ""
+msgstr "النشاط الحالي"
#. module: base
#: view:workflow.activity:0
@@ -2831,18 +2904,18 @@ msgstr ""
#. module: base
#: model:res.country,name:base.sr
msgid "Suriname"
-msgstr ""
+msgstr "سورينام"
#. module: base
#: model:ir.ui.menu,name:base.marketing_menu
msgid "Marketing"
-msgstr ""
+msgstr "التسويق"
#. module: base
#: view:res.partner.bank:0
#: model:res.partner.bank.type,name:base.bank_normal
msgid "Bank account"
-msgstr ""
+msgstr "الحساب المصرفي"
#. module: base
#: selection:base.language.install,lang:0
@@ -2857,22 +2930,22 @@ msgstr ""
#. module: base
#: view:ir.ui.view.custom:0
msgid "Customized Architecture"
-msgstr ""
+msgstr "هيكل مخصص"
#. module: base
#: field:ir.module.module,license:0
msgid "License"
-msgstr ""
+msgstr "الرخصة"
#. module: base
#: field:ir.attachment,url:0
msgid "Url"
-msgstr ""
+msgstr "العنوان الإلكتروني (URL)"
#. module: base
#: selection:ir.actions.todo,restart:0
msgid "Always"
-msgstr ""
+msgstr "دائماً"
#. module: base
#: selection:ir.translation,type:0
@@ -2883,7 +2956,7 @@ msgstr ""
#: field:ir.actions.server,srcmodel_id:0
#: field:ir.model.fields,model_id:0
msgid "Model"
-msgstr ""
+msgstr "النموذج"
#. module: base
#: view:base.language.install:0
@@ -2891,40 +2964,42 @@ msgid ""
"The selected language has been successfully installed. You must change the "
"preferences of the user and open a new menu to view the changes."
msgstr ""
+"تمّ تثبيت اللغة المختارة بنجاح. لاستخدام اللغة الجديدة، اخترها من تفضيلات "
+"المستخدم ثم استخدم القائمة لعرض أي صفحة باللغة الجديدة."
#. module: base
#: sql_constraint:ir.config_parameter:0
msgid "Key must be unique."
-msgstr ""
+msgstr "يجب أن يكون المفتاح فريداً (مختلفاً عن بقية المفاتيح)."
#. module: base
#: view:ir.actions.act_window:0
msgid "Open a Window"
-msgstr ""
+msgstr "افتح نافذةً"
#. module: base
#: model:res.country,name:base.gq
msgid "Equatorial Guinea"
-msgstr ""
+msgstr "غينيا الاستوائية"
#. module: base
#: view:base.module.import:0
#: model:ir.actions.act_window,name:base.action_view_base_module_import
msgid "Module Import"
-msgstr ""
+msgstr "استيراد وحدة برمجية"
#. module: base
#: field:res.bank,zip:0
#: field:res.partner.address,zip:0
#: field:res.partner.bank,zip:0
msgid "Zip"
-msgstr ""
+msgstr "Zip"
#. module: base
#: view:ir.module.module:0
#: field:ir.module.module,author:0
msgid "Author"
-msgstr ""
+msgstr "المؤلف"
#. module: base
#: model:res.country,name:base.mk
@@ -2944,26 +3019,29 @@ msgid ""
"\n"
"Click 'Continue' and enjoy your OpenERP experience..."
msgstr ""
+"تمّ إعداد قاعدة بياناتك.\n"
+"\n"
+"انقر 'استمرار' وتمتع باستخدام OpenERP..."
#. module: base
#: selection:base.language.install,lang:0
msgid "Hebrew / עִבְרִי"
-msgstr ""
+msgstr "العبرية / עִבְרִי"
#. module: base
#: model:res.country,name:base.bo
msgid "Bolivia"
-msgstr ""
+msgstr "بوليفيا"
#. module: base
#: model:res.country,name:base.gh
msgid "Ghana"
-msgstr ""
+msgstr "غانا"
#. module: base
#: field:res.lang,direction:0
msgid "Direction"
-msgstr ""
+msgstr "الاتجاه"
#. module: base
#: view:ir.actions.act_window:0
@@ -2974,13 +3052,13 @@ msgstr ""
#: model:ir.ui.menu,name:base.menu_action_ui_view
#: view:ir.ui.view:0
msgid "Views"
-msgstr ""
+msgstr "طرق العرض"
#. module: base
#: view:res.groups:0
#: field:res.groups,rule_groups:0
msgid "Rules"
-msgstr ""
+msgstr "القواعد"
#. module: base
#: code:addons/base/module/module.py:216
@@ -2991,7 +3069,7 @@ msgstr ""
#. module: base
#: view:base.module.upgrade:0
msgid "The selected modules have been updated / installed !"
-msgstr ""
+msgstr "تمّ تثبيت / تحديث الوحدات البرمجية المختارة!"
#. module: base
#: selection:base.language.install,lang:0
@@ -3001,7 +3079,7 @@ msgstr ""
#. module: base
#: model:res.country,name:base.gt
msgid "Guatemala"
-msgstr ""
+msgstr "جواتيمالا"
#. module: base
#: model:ir.actions.act_window,name:base.action_workflow_form
@@ -3009,32 +3087,32 @@ msgstr ""
#: model:ir.ui.menu,name:base.menu_workflow
#: model:ir.ui.menu,name:base.menu_workflow_root
msgid "Workflows"
-msgstr ""
+msgstr "سير العمل"
#. module: base
#: field:ir.translation,xml_id:0
msgid "XML Id"
-msgstr ""
+msgstr "معرف XML"
#. module: base
#: model:ir.actions.act_window,name:base.action_config_user_form
msgid "Create Users"
-msgstr ""
+msgstr "إنشاء مستخدمين"
#. module: base
#: model:ir.model,name:base.model_res_partner_title
msgid "res.partner.title"
-msgstr ""
+msgstr "res.partner.title"
#. module: base
#: view:ir.values:0
msgid "tree_but_action, client_print_multi"
-msgstr ""
+msgstr "tree_but_action, client_print_multi"
#. module: base
#: model:res.partner.category,name:base.res_partner_category_retailers0
msgid "Retailers"
-msgstr ""
+msgstr "تجار التجزئة"
#. module: base
#: help:ir.cron,priority:0
@@ -3047,33 +3125,33 @@ msgstr ""
#: view:res.config:0
#: view:res.config.installer:0
msgid "Skip"
-msgstr ""
+msgstr "تجاوز"
#. module: base
#: model:res.country,name:base.ls
msgid "Lesotho"
-msgstr ""
+msgstr "ليسوتو"
#. module: base
#: code:addons/base/ir/ir_model.py:114
#, python-format
msgid "You can not remove the model '%s' !"
-msgstr ""
+msgstr "لا يمكنك حذف النموذج '%s'!"
#. module: base
#: model:res.country,name:base.ke
msgid "Kenya"
-msgstr ""
+msgstr "كينيا"
#. module: base
#: view:res.partner.event:0
msgid "Event"
-msgstr ""
+msgstr "الحدث"
#. module: base
#: model:ir.ui.menu,name:base.menu_custom_reports
msgid "Custom Reports"
-msgstr ""
+msgstr "التقارير المخصصة"
#. module: base
#: selection:base.language.install,lang:0
@@ -3083,33 +3161,33 @@ msgstr ""
#. module: base
#: view:base.module.configuration:0
msgid "System Configuration Done"
-msgstr ""
+msgstr "تمّ إعداد النظام"
#. module: base
#: code:addons/orm.py:929
#, python-format
msgid "Error occurred while validating the field(s) %s: %s"
-msgstr ""
+msgstr "حصل خطأ أثناء التحقق من صحة الحقل / الحقول %s: %s"
#. module: base
#: view:ir.property:0
msgid "Generic"
-msgstr ""
+msgstr "عام"
#. module: base
#: model:res.country,name:base.sm
msgid "San Marino"
-msgstr ""
+msgstr "سان مارينو"
#. module: base
#: model:res.country,name:base.bm
msgid "Bermuda"
-msgstr ""
+msgstr "جزر البرمودا"
#. module: base
#: model:res.country,name:base.pe
msgid "Peru"
-msgstr ""
+msgstr "البيرو"
#. module: base
#: selection:ir.model.fields,on_delete:0
@@ -3119,13 +3197,13 @@ msgstr ""
#. module: base
#: model:res.country,name:base.bj
msgid "Benin"
-msgstr ""
+msgstr "بنين"
#. module: base
#: code:addons/base/publisher_warranty/publisher_warranty.py:281
#, python-format
msgid "That contract is already registered in the system."
-msgstr ""
+msgstr "ذلك العقد قد تمّ تسجيله في النظام سابقاً."
#. module: base
#: help:ir.sequence,suffix:0
@@ -3140,7 +3218,7 @@ msgstr ""
#. module: base
#: field:ir.config_parameter,key:0
msgid "Key"
-msgstr ""
+msgstr "المفتاح"
#. module: base
#: field:res.company,rml_header:0
@@ -3159,17 +3237,18 @@ msgid ""
"You can not create this document (%s) ! Be sure your user belongs to one of "
"these groups: %s."
msgstr ""
+"لا يمكنك إنشاء هذا المستند (%s)! تأكد أنك تنتمي لإحدى هذه المجموعات: %s."
#. module: base
#: model:res.country,name:base.mu
msgid "Mauritius"
-msgstr ""
+msgstr "موريشيوس"
#. module: base
#: view:ir.model.access:0
#: view:ir.rule:0
msgid "Full Access"
-msgstr ""
+msgstr "صلاحيات كاملة"
#. module: base
#: view:ir.actions.act_window:0
@@ -3178,24 +3257,24 @@ msgstr ""
#: view:ir.model.fields:0
#: model:ir.ui.menu,name:base.menu_security
msgid "Security"
-msgstr ""
+msgstr "الأمن"
#. module: base
#: model:res.widget,title:base.openerp_favorites_twitter_widget
msgid "OpenERP Favorites"
-msgstr ""
+msgstr "مفضلات OpenERP"
#. module: base
#: model:res.country,name:base.za
msgid "South Africa"
-msgstr ""
+msgstr "جنوب إفريقيا"
#. module: base
#: view:ir.module.module:0
#: selection:ir.module.module,state:0
#: selection:ir.module.module.dependency,state:0
msgid "Installed"
-msgstr ""
+msgstr "مثبَّت"
#. module: base
#: selection:base.language.install,lang:0
@@ -3206,42 +3285,42 @@ msgstr ""
#: model:ir.actions.act_window,name:base.action_translation
#: model:ir.ui.menu,name:base.menu_action_translation
msgid "Translation Terms"
-msgstr ""
+msgstr "مصطلحات الترجمة"
#. module: base
#: model:res.country,name:base.sn
msgid "Senegal"
-msgstr ""
+msgstr "السنغال"
#. module: base
#: model:res.country,name:base.hu
msgid "Hungary"
-msgstr ""
+msgstr "المجر"
#. module: base
#: model:ir.model,name:base.model_res_groups
msgid "res.groups"
-msgstr ""
+msgstr "res.groups"
#. module: base
#: model:res.country,name:base.br
msgid "Brazil"
-msgstr ""
+msgstr "البرازيل"
#. module: base
#: view:res.lang:0
msgid "%M - Minute [00,59]."
-msgstr ""
+msgstr "%M - الدقيقة [00،59]"
#. module: base
#: selection:ir.module.module,license:0
msgid "Affero GPL-3"
-msgstr ""
+msgstr "رخصة Affero GPL-3"
#. module: base
#: field:ir.sequence,number_next:0
msgid "Next Number"
-msgstr ""
+msgstr "العدد التالي"
#. module: base
#: help:workflow.transition,condition:0
@@ -3257,17 +3336,17 @@ msgstr ""
#: view:res.currency:0
#: field:res.currency,rate_ids:0
msgid "Rates"
-msgstr ""
+msgstr "الأسعار"
#. module: base
#: model:res.country,name:base.sy
msgid "Syria"
-msgstr ""
+msgstr "سوريا"
#. module: base
#: view:res.lang:0
msgid "======================================================"
-msgstr ""
+msgstr "======================================================"
#. module: base
#: help:ir.actions.server,mobile:0
@@ -3280,12 +3359,12 @@ msgstr ""
#. module: base
#: view:base.module.upgrade:0
msgid "System update completed"
-msgstr ""
+msgstr "تمّ تحديث النظام"
#. module: base
#: selection:res.request,state:0
msgid "draft"
-msgstr ""
+msgstr "مسودة"
#. module: base
#: selection:ir.property,type:0
@@ -3295,7 +3374,7 @@ msgstr ""
#: field:res.partner.event,date:0
#: field:res.request,date_sent:0
msgid "Date"
-msgstr ""
+msgstr "التاريخ"
#. module: base
#: field:ir.actions.report.xml,report_sxw:0
@@ -3305,34 +3384,34 @@ msgstr ""
#. module: base
#: view:ir.attachment:0
msgid "Data"
-msgstr ""
+msgstr "البيانات"
#. module: base
#: field:ir.ui.menu,parent_id:0
#: field:wizard.ir.model.menu.create,menu_id:0
msgid "Parent Menu"
-msgstr ""
+msgstr "القائمة الأم"
#. module: base
#: field:ir.rule,perm_unlink:0
msgid "Apply For Delete"
-msgstr ""
+msgstr "اطلب صلاحية الحذف"
#. module: base
#: code:addons/base/ir/ir_model.py:319
#, python-format
msgid "Cannot rename column to %s, because that column already exists!"
-msgstr ""
+msgstr "لا يمكن إعادة تسمية العمود بـ %s لأن ذلك الاسم مستخدم حالياً!"
#. module: base
#: view:ir.attachment:0
msgid "Attached To"
-msgstr ""
+msgstr "مرفق لـ"
#. module: base
#: field:res.lang,decimal_point:0
msgid "Decimal Separator"
-msgstr ""
+msgstr "فاصل الخانات العشرية"
#. module: base
#: model:ir.actions.act_window,help:base.action_res_groups
@@ -3350,12 +3429,12 @@ msgstr ""
#: view:res.request:0
#: field:res.request,history:0
msgid "History"
-msgstr ""
+msgstr "المحفوظات"
#. module: base
#: field:ir.attachment,create_uid:0
msgid "Creator"
-msgstr ""
+msgstr "المُنشِئ"
#. module: base
#: model:res.company,overdue_msg:base.main_company
@@ -3371,27 +3450,27 @@ msgstr ""
#. module: base
#: model:res.country,name:base.mx
msgid "Mexico"
-msgstr ""
+msgstr "المكسيك"
#. module: base
#: model:ir.ui.menu,name:base.menu_base_config_plugins
msgid "Plugins"
-msgstr ""
+msgstr "الإضافات البرمجية"
#. module: base
#: field:res.company,child_ids:0
msgid "Child Companies"
-msgstr ""
+msgstr "الشركات الفرعية"
#. module: base
#: model:ir.model,name:base.model_res_users
msgid "res.users"
-msgstr ""
+msgstr "res.users"
#. module: base
#: model:res.country,name:base.ni
msgid "Nicaragua"
-msgstr ""
+msgstr "نيكاراجوا"
#. module: base
#: code:addons/orm.py:1046
@@ -3402,13 +3481,13 @@ msgstr ""
#. module: base
#: view:res.partner.event:0
msgid "General Description"
-msgstr ""
+msgstr "الوصف العام"
#. module: base
#: model:ir.actions.act_window,name:base.action_config_simple_view_form
#: view:res.config.view:0
msgid "Configure Your Interface"
-msgstr ""
+msgstr "إعدادات الواجهة"
#. module: base
#: field:ir.values,meta:0
@@ -3418,12 +3497,12 @@ msgstr ""
#. module: base
#: sql_constraint:ir.ui.view_sc:0
msgid "Shortcut for this menu already exists!"
-msgstr ""
+msgstr "يوجد اختصار لهذه القائمة حالياً!"
#. module: base
#: model:res.country,name:base.ve
msgid "Venezuela"
-msgstr ""
+msgstr "فينزويلا"
#. module: base
#: view:res.lang:0
@@ -3433,39 +3512,39 @@ msgstr ""
#. module: base
#: model:res.country,name:base.zm
msgid "Zambia"
-msgstr ""
+msgstr "زامبيا"
#. module: base
#: help:res.partner,user_id:0
msgid ""
"The internal user that is in charge of communicating with this partner if "
"any."
-msgstr ""
+msgstr "المستخد الداخلي المكلَّف بالتواصل مع هذا الشريك، إن وُجِد."
#. module: base
#: field:res.partner,parent_id:0
msgid "Parent Partner"
-msgstr ""
+msgstr "الشريك الأم"
#. module: base
#: view:ir.module.module:0
msgid "Cancel Upgrade"
-msgstr ""
+msgstr "إلغاء الترقية"
#. module: base
#: model:res.country,name:base.ci
msgid "Ivory Coast (Cote D'Ivoire)"
-msgstr ""
+msgstr "ساحل العاج"
#. module: base
#: model:res.country,name:base.kz
msgid "Kazakhstan"
-msgstr ""
+msgstr "كازاخستان"
#. module: base
#: view:res.lang:0
msgid "%w - Weekday number [0(Sunday),6]."
-msgstr ""
+msgstr "%w - رقم اليوم في الأسبوع [0 (الأحد)،6]"
#. module: base
#: model:ir.actions.act_window,help:base.action_partner_form
@@ -3505,7 +3584,7 @@ msgstr ""
#: field:workflow,name:0
#: field:workflow.activity,name:0
msgid "Name"
-msgstr ""
+msgstr "الاسم"
#. module: base
#: help:ir.actions.act_window,multi:0
@@ -3513,11 +3592,12 @@ msgid ""
"If set to true, the action will not be displayed on the right toolbar of a "
"form view"
msgstr ""
+"في حالة الاختيار، لن يظهر الإجراء في شريط الأدوات على يمين طريقة عرض 'نموذج'"
#. module: base
#: model:res.country,name:base.ms
msgid "Montserrat"
-msgstr ""
+msgstr "مونتسيرات"
#. module: base
#: code:addons/base/ir/ir_model.py:205
@@ -3530,7 +3610,7 @@ msgstr ""
#. module: base
#: model:ir.ui.menu,name:base.menu_translation_app
msgid "Application Terms"
-msgstr ""
+msgstr "مصطلحات التطبيق"
#. module: base
#: help:res.config.users,context_tz:0
@@ -3539,21 +3619,23 @@ msgid ""
"The user's timezone, used to perform timezone conversions between the server "
"and the client."
msgstr ""
+"المنطقة الزمنية للمستخدم. تستخدم لتحويل الوقت ما بين منطقة المستخدم ومنطقة "
+"الخادم."
#. module: base
#: field:ir.module.module,demo:0
msgid "Demo data"
-msgstr ""
+msgstr "بيانات تجريبية"
#. module: base
#: selection:base.language.install,lang:0
msgid "English (UK)"
-msgstr ""
+msgstr "الإنجليزية (المملكة المتحدة)"
#. module: base
#: selection:base.language.install,lang:0
msgid "Japanese / 日本語"
-msgstr ""
+msgstr "اليابانية / 日本語"
#. module: base
#: help:workflow.transition,act_from:0
@@ -3565,7 +3647,7 @@ msgstr ""
#. module: base
#: model:res.partner.category,name:base.res_partner_category_3
msgid "Starter Partner"
-msgstr ""
+msgstr "شريك مبتدِئ"
#. module: base
#: help:ir.model.fields,relation_field:0
@@ -3577,12 +3659,12 @@ msgstr ""
#. module: base
#: model:ir.model,name:base.model_ir_actions_act_window_view
msgid "ir.actions.act_window.view"
-msgstr ""
+msgstr "ir.actions.act_window.view"
#. module: base
#: report:ir.module.reference.graph:0
msgid "Web"
-msgstr ""
+msgstr "الإنترنت"
#. module: base
#: selection:base.language.install,lang:0
@@ -3597,12 +3679,12 @@ msgstr ""
#. module: base
#: model:res.country,name:base.et
msgid "Ethiopia"
-msgstr ""
+msgstr "إثيوبيا"
#. module: base
#: help:res.country.state,code:0
msgid "The state code in three chars.\n"
-msgstr ""
+msgstr "رمز الولاية (ثلاثة حروف).\n"
#. module: base
#: model:res.country,name:base.sj
@@ -3613,7 +3695,7 @@ msgstr ""
#: model:ir.model,name:base.model_ir_actions_wizard
#: selection:ir.ui.menu,action:0
msgid "ir.actions.wizard"
-msgstr ""
+msgstr "ir.actions.wizard"
#. module: base
#: view:ir.actions.act_window:0
@@ -3622,28 +3704,28 @@ msgstr ""
#: view:ir.filters:0
#: view:res.request:0
msgid "Group By"
-msgstr ""
+msgstr "تجميع حسب"
#. module: base
#: view:res.config:0
#: view:res.config.installer:0
msgid "title"
-msgstr ""
+msgstr "الاسم"
#. module: base
#: model:ir.model,name:base.model_base_language_install
msgid "Install Language"
-msgstr ""
+msgstr "تثبيت اللغة"
#. module: base
#: view:ir.translation:0
msgid "Translation"
-msgstr ""
+msgstr "الترجمة"
#. module: base
#: selection:res.request,state:0
msgid "closed"
-msgstr ""
+msgstr "مغلق"
#. module: base
#: selection:base.language.export,state:0
@@ -3663,7 +3745,7 @@ msgstr ""
#. module: base
#: model:ir.ui.menu,name:base.menu_product
msgid "Products"
-msgstr ""
+msgstr "المنتجات"
#. module: base
#: field:ir.actions.act_window,domain:0
@@ -3674,7 +3756,7 @@ msgstr ""
#. module: base
#: view:ir.actions.server:0
msgid "SMS Configuration"
-msgstr ""
+msgstr "إعدادات الرسائل القصيرة (SMS)"
#. module: base
#: selection:base.language.install,lang:0
@@ -3685,7 +3767,7 @@ msgstr ""
#: model:ir.actions.act_window,name:base.ir_access_act
#: model:ir.ui.menu,name:base.menu_ir_access_act
msgid "Access Controls List"
-msgstr ""
+msgstr "قوائم التحكم في الصلاحيات"
#. module: base
#: model:res.country,name:base.um
@@ -3696,20 +3778,20 @@ msgstr ""
#: field:res.partner.bank,state:0
#: field:res.partner.bank.type.field,bank_type_id:0
msgid "Bank Type"
-msgstr ""
+msgstr "نوع المصرف"
#. module: base
#: code:addons/base/res/res_user.py:58
#: code:addons/base/res/res_user.py:67
#, python-format
msgid "The name of the group can not start with \"-\""
-msgstr ""
+msgstr "لا يمكن أن يبدأ اسم المجموعة بـ '-'"
#. module: base
#: view:ir.ui.view_sc:0
#: field:res.partner.title,shortcut:0
msgid "Shortcut"
-msgstr ""
+msgstr "اختصار"
#. module: base
#: field:ir.model.data,date_init:0
@@ -3727,11 +3809,12 @@ msgstr ""
msgid ""
"Unable to process module \"%s\" because an external dependency is not met: %s"
msgstr ""
+"لا يمكن معالجة الوحدة البرمجية \"%s\" بسبب عدم توفر المتطلب الخارجي: %s"
#. module: base
#: view:publisher_warranty.contract.wizard:0
msgid "Please enter the serial key provided in your contract document:"
-msgstr ""
+msgstr "فضلاً أدخل المفتاح التسلسلي الموجود في مستند العقد:"
#. module: base
#: view:workflow.activity:0
@@ -3744,11 +3827,13 @@ msgstr ""
#, python-format
msgid "module base cannot be loaded! (hint: verify addons-path)"
msgstr ""
+"لا يمكن تحميل الوحدة البرمجية الأساسية (base)! تأكد من ضبط مسار الإضافات "
+"(addons-path)"
#. module: base
#: view:res.partner.bank:0
msgid "Bank Account Owner"
-msgstr ""
+msgstr "مالِك الحساب المصرفي"
#. module: base
#: model:ir.actions.act_window,name:base.act_values_form
@@ -3764,7 +3849,7 @@ msgstr ""
#. module: base
#: selection:ir.cron,interval_type:0
msgid "Hours"
-msgstr ""
+msgstr "الساعات"
#. module: base
#: model:res.country,name:base.gp
@@ -3777,7 +3862,7 @@ msgstr ""
#: code:addons/base/res/res_lang.py:161
#, python-format
msgid "User Error"
-msgstr ""
+msgstr "خطأ مستخدم"
#. module: base
#: help:workflow.transition,signal:0
@@ -3790,43 +3875,43 @@ msgstr ""
#. module: base
#: help:multi_company.default,object_id:0
msgid "Object affected by this rule"
-msgstr ""
+msgstr "الكائن المتأثر بهذه القاعدة"
#. module: base
#: report:ir.module.reference.graph:0
msgid "Directory"
-msgstr ""
+msgstr "الدليل"
#. module: base
#: field:wizard.ir.model.menu.create,name:0
msgid "Menu Name"
-msgstr ""
+msgstr "اسم القائمة"
#. module: base
#: view:ir.module.module:0
msgid "Author Website"
-msgstr ""
+msgstr "الموقع الإلكتروني للمؤلف"
#. module: base
#: view:ir.attachment:0
msgid "Month"
-msgstr ""
+msgstr "الشهر"
#. module: base
#: model:res.country,name:base.my
msgid "Malaysia"
-msgstr ""
+msgstr "ماليزيا"
#. module: base
#: view:base.language.install:0
#: model:ir.actions.act_window,name:base.action_view_base_language_install
msgid "Load Official Translation"
-msgstr ""
+msgstr "تحميل ترجمة رسمية"
#. module: base
#: model:ir.model,name:base.model_res_request_history
msgid "res.request.history"
-msgstr ""
+msgstr "res.request.history"
#. module: base
#: view:ir.actions.server:0
@@ -3837,24 +3922,24 @@ msgstr ""
#: model:ir.model,name:base.model_res_partner_address
#: view:res.partner.address:0
msgid "Partner Addresses"
-msgstr ""
+msgstr "عناوين الشريك"
#. module: base
#: help:ir.model.fields,translate:0
msgid ""
"Whether values for this field can be translated (enables the translation "
"mechanism for that field)"
-msgstr ""
+msgstr "إمكانية ترجمة قيم هذا الحقل (تمكين آلية الترجمة لهذا الحقل)"
#. module: base
#: view:res.lang:0
msgid "%S - Seconds [00,61]."
-msgstr ""
+msgstr "%S - الثواني [00،61]."
#. module: base
#: model:res.country,name:base.cv
msgid "Cape Verde"
-msgstr ""
+msgstr "الرأس الأخضر"
#. module: base
#: view:base.module.import:0
@@ -3867,18 +3952,18 @@ msgstr ""
#: field:res.partner.event,name:0
#: model:res.widget,title:base.events_widget
msgid "Events"
-msgstr ""
+msgstr "الأحداث"
#. module: base
#: model:ir.model,name:base.model_ir_actions_url
#: selection:ir.ui.menu,action:0
msgid "ir.actions.url"
-msgstr ""
+msgstr "ir.actions.url"
#. module: base
#: model:res.widget,title:base.currency_converter_widget
msgid "Currency Converter"
-msgstr ""
+msgstr "محوّل العملات"
#. module: base
#: code:addons/orm.py:156
@@ -3890,17 +3975,17 @@ msgstr ""
#: model:ir.actions.act_window,name:base.action_partner_addess_tree
#: view:res.partner:0
msgid "Partner Contacts"
-msgstr ""
+msgstr "جهات اتصال الشريك"
#. module: base
#: field:base.module.update,add:0
msgid "Number of modules added"
-msgstr ""
+msgstr "عدد الوحدات البرمجية التي تمّت إضافتها"
#. module: base
#: view:res.currency:0
msgid "Price Accuracy"
-msgstr ""
+msgstr "دِقة السعر"
#. module: base
#: selection:base.language.install,lang:0
@@ -3916,7 +4001,7 @@ msgstr ""
#. module: base
#: selection:base.language.install,lang:0
msgid "French / Français"
-msgstr ""
+msgstr "الفرنسية / Français"
#. module: base
#: code:addons/orm.py:1049
@@ -3932,7 +4017,7 @@ msgstr ""
#. module: base
#: view:ir.actions.todo:0
msgid "Set as Todo"
-msgstr ""
+msgstr "اجعل في انتظار التنفيذ"
#. module: base
#: field:ir.actions.act_window.view,act_window_id:0
@@ -3943,17 +4028,17 @@ msgstr ""
#: selection:ir.values,key:0
#: view:res.users:0
msgid "Action"
-msgstr ""
+msgstr "إجراء"
#. module: base
#: view:ir.actions.server:0
msgid "Email Configuration"
-msgstr ""
+msgstr "إعدادات البريد الإلكتروني"
#. module: base
#: model:ir.model,name:base.model_ir_cron
msgid "ir.cron"
-msgstr ""
+msgstr "ir.cron"
#. module: base
#: view:ir.rule:0
@@ -3963,7 +4048,7 @@ msgstr ""
#. module: base
#: view:ir.sequence:0
msgid "Current Year without Century: %(y)s"
-msgstr ""
+msgstr "السنة الحالية دون القرن: %(y)s"
#. module: base
#: field:ir.actions.server,trigger_obj_id:0
@@ -3973,76 +4058,76 @@ msgstr ""
#. module: base
#: sql_constraint:ir.rule:0
msgid "Rule must have at least one checked access right !"
-msgstr ""
+msgstr "يجب أن تختار صلاحية واحدة على الأقل للقاعدة!"
#. module: base
#: model:res.country,name:base.fj
msgid "Fiji"
-msgstr ""
+msgstr "فيجي"
#. module: base
#: field:ir.model.fields,size:0
msgid "Size"
-msgstr ""
+msgstr "الحجم"
#. module: base
#: model:res.country,name:base.sd
msgid "Sudan"
-msgstr ""
+msgstr "السّودان"
#. module: base
#: model:res.country,name:base.fm
msgid "Micronesia"
-msgstr ""
+msgstr "مكرونيسيا"
#. module: base
#: view:res.request.history:0
msgid "Request History"
-msgstr ""
+msgstr "الطلبات السابقة"
#. module: base
#: field:ir.actions.act_window,menus:0
#: field:ir.module.module,menus_by_module:0
#: view:res.groups:0
msgid "Menus"
-msgstr ""
+msgstr "القوائم"
#. module: base
#: selection:base.language.install,lang:0
msgid "Serbian (Latin) / srpski"
-msgstr ""
+msgstr "الصربية / srpski"
#. module: base
#: model:res.country,name:base.il
msgid "Israel"
-msgstr ""
+msgstr "إسرائيل"
#. module: base
#: model:ir.actions.wizard,name:base.wizard_server_action_create
msgid "Create Action"
-msgstr ""
+msgstr "أنشئ الإجراء"
#. module: base
#: model:ir.actions.act_window,name:base.action_model_model
#: model:ir.model,name:base.model_ir_model
#: model:ir.ui.menu,name:base.ir_model_model_menu
msgid "Objects"
-msgstr ""
+msgstr "الكائنات"
#. module: base
#: field:res.lang,time_format:0
msgid "Time Format"
-msgstr ""
+msgstr "تنسيق الوقت"
#. module: base
#: view:ir.module.module:0
msgid "Defined Reports"
-msgstr ""
+msgstr "التقارير المعرّفة"
#. module: base
#: view:ir.actions.report.xml:0
msgid "Report xml"
-msgstr ""
+msgstr "تقرير XML"
#. module: base
#: field:base.language.export,modules:0
@@ -4052,7 +4137,7 @@ msgstr ""
#: model:ir.ui.menu,name:base.menu_management
#: model:ir.ui.menu,name:base.menu_module_tree
msgid "Modules"
-msgstr ""
+msgstr "الوحدات البرمجية"
#. module: base
#: view:workflow.activity:0
@@ -4065,7 +4150,7 @@ msgstr ""
#. module: base
#: model:ir.model,name:base.model_res_config
msgid "res.config"
-msgstr ""
+msgstr "res.config"
#. module: base
#: field:workflow.transition,signal:0
@@ -4078,12 +4163,12 @@ msgstr ""
#: view:res.bank:0
#: field:res.partner,bank_ids:0
msgid "Banks"
-msgstr ""
+msgstr "المصارف"
#. module: base
#: view:res.log:0
msgid "Unread"
-msgstr ""
+msgstr "غير المقروءة"
#. module: base
#: field:ir.cron,doall:0
@@ -4093,52 +4178,52 @@ msgstr ""
#. module: base
#: help:ir.actions.server,state:0
msgid "Type of the Action that is to be executed"
-msgstr ""
+msgstr "نوع الإجراء المعدّ للتنفيذ"
#. module: base
#: field:ir.server.object.lines,server_id:0
msgid "Object Mapping"
-msgstr ""
+msgstr "ارتباط الكائنات"
#. module: base
#: help:res.currency,rate:0
#: help:res.currency.rate,rate:0
msgid "The rate of the currency to the currency of rate 1"
-msgstr ""
+msgstr "سعر العملة باستخدام العملة ذات السعر 1"
#. module: base
#: model:res.country,name:base.uk
msgid "United Kingdom"
-msgstr ""
+msgstr "المملكة المتّحدة"
#. module: base
#: view:res.config:0
#: view:res.config.users:0
#: view:res.config.view:0
msgid "res_config_contents"
-msgstr ""
+msgstr "res_config_contents"
#. module: base
#: help:res.partner.category,active:0
msgid "The active field allows you to hide the category without removing it."
-msgstr ""
+msgstr "الحقل النشط يمكّنك من إخفاء الفئة دون حذفها."
#. module: base
#: report:ir.module.reference.graph:0
msgid "Object:"
-msgstr ""
+msgstr "الكائن:"
#. module: base
#: model:res.country,name:base.bw
msgid "Botswana"
-msgstr ""
+msgstr "بتسوانا"
#. module: base
#: model:ir.actions.act_window,name:base.action_partner_title_partner
#: model:ir.ui.menu,name:base.menu_partner_title_partner
#: view:res.partner.title:0
msgid "Partner Titles"
-msgstr ""
+msgstr "ألقاب الشريك"
#. module: base
#: help:ir.actions.act_window,auto_refresh:0
@@ -4148,7 +4233,7 @@ msgstr ""
#. module: base
#: help:res.partner,employee:0
msgid "Check this box if the partner is an Employee."
-msgstr ""
+msgstr "اختر إذا كان الشريك موظفاً"
#. module: base
#: field:ir.actions.report.xml,report_rml_content:0
@@ -4165,12 +4250,12 @@ msgstr ""
#. module: base
#: field:base.language.export,advice:0
msgid "Advice"
-msgstr ""
+msgstr "نصيحة"
#. module: base
#: model:ir.model,name:base.model_ir_attachment
msgid "ir.attachment"
-msgstr ""
+msgstr "ir.attachment"
#. module: base
#: code:addons/orm.py:3533
@@ -4179,11 +4264,13 @@ msgid ""
"You cannot perform this operation. New Record Creation is not allowed for "
"this object as this object is for reporting purpose."
msgstr ""
+"لا يمكنك تنفيذ هذه العملية. لا يمكن إنشاء سجل جديد لهذا الكائن لأن الهدف منه "
+"هو إصدار تقارير."
#. module: base
#: view:base.language.import:0
msgid "- module,type,name,res_id,src,value"
-msgstr ""
+msgstr "- module,type,name,res_id,src,value"
#. module: base
#: selection:base.language.install,lang:0
@@ -4210,17 +4297,17 @@ msgstr ""
#. module: base
#: field:ir.ui.view,inherit_id:0
msgid "Inherited View"
-msgstr ""
+msgstr "عرض موروث"
#. module: base
#: view:ir.translation:0
msgid "Source Term"
-msgstr ""
+msgstr "المصطلح الأصلي"
#. module: base
#: model:ir.ui.menu,name:base.menu_main_pm
msgid "Project"
-msgstr ""
+msgstr "المشاريع"
#. module: base
#: field:ir.ui.menu,web_icon_hover_data:0
@@ -4230,17 +4317,17 @@ msgstr ""
#. module: base
#: view:base.module.import:0
msgid "Module file successfully imported!"
-msgstr ""
+msgstr "تمّ استيراد ملف الوحدة البرمجية بنجاح!"
#. module: base
#: selection:ir.actions.todo,state:0
msgid "Cancelled"
-msgstr ""
+msgstr "ملغي"
#. module: base
#: view:res.config.users:0
msgid "Create User"
-msgstr ""
+msgstr "إنشاء مستخدم"
#. module: base
#: view:partner.clear.ids:0
@@ -4256,22 +4343,22 @@ msgstr ""
#. module: base
#: selection:res.request,priority:0
msgid "Low"
-msgstr ""
+msgstr "منخفض"
#. module: base
#: model:ir.ui.menu,name:base.menu_audit
msgid "Audit"
-msgstr ""
+msgstr "المراقبة"
#. module: base
#: model:res.country,name:base.lc
msgid "Saint Lucia"
-msgstr ""
+msgstr "سانت لوسيا"
#. module: base
#: view:publisher_warranty.contract:0
msgid "Maintenance Contract"
-msgstr ""
+msgstr "عقد صيانة"
#. module: base
#: help:ir.actions.server,trigger_obj_id:0
@@ -4281,22 +4368,22 @@ msgstr ""
#. module: base
#: field:res.partner,employee:0
msgid "Employee"
-msgstr ""
+msgstr "الموظف"
#. module: base
#: field:ir.model.access,perm_create:0
msgid "Create Access"
-msgstr ""
+msgstr "صلاحيات الإنشاء"
#. module: base
#: field:res.partner.address,state_id:0
msgid "Fed. State"
-msgstr ""
+msgstr "المحافظة / الولاية"
#. module: base
#: field:ir.actions.server,copy_object:0
msgid "Copy Of"
-msgstr ""
+msgstr "نسخة من"
#. module: base
#: field:ir.model,osv_memory:0
@@ -4311,19 +4398,19 @@ msgstr ""
#. module: base
#: model:res.country,name:base.io
msgid "British Indian Ocean Territory"
-msgstr ""
+msgstr "مقاطعة المحيط الهندي البريطانيّة"
#. module: base
#: field:res.config.users,view:0
#: field:res.config.view,view:0
#: field:res.users,view:0
msgid "Interface"
-msgstr ""
+msgstr "الواجهة"
#. module: base
#: view:ir.actions.server:0
msgid "Field Mapping"
-msgstr ""
+msgstr "ارتباط الحقول"
#. module: base
#: view:publisher_warranty.contract:0
@@ -4334,7 +4421,7 @@ msgstr ""
#: view:ir.model:0
#: field:ir.model.fields,ttype:0
msgid "Field Type"
-msgstr ""
+msgstr "نوع الحقل"
#. module: base
#: field:res.country.state,code:0
@@ -4344,30 +4431,30 @@ msgstr ""
#. module: base
#: field:ir.model.fields,on_delete:0
msgid "On delete"
-msgstr ""
+msgstr "أثناء المسح"
#. module: base
#: selection:res.lang,direction:0
msgid "Left-to-Right"
-msgstr ""
+msgstr "من اليسار إلى اليمين"
#. module: base
#: view:res.lang:0
#: field:res.lang,translatable:0
msgid "Translatable"
-msgstr ""
+msgstr "قابل للترجمة"
#. module: base
#: model:res.country,name:base.vn
msgid "Vietnam"
-msgstr ""
+msgstr "فيتنام"
#. module: base
#: field:res.config.users,signature:0
#: view:res.users:0
#: field:res.users,signature:0
msgid "Signature"
-msgstr ""
+msgstr "التوقيع"
#. module: base
#: code:addons/fields.py:456
@@ -4379,22 +4466,22 @@ msgstr ""
#: code:addons/fields.py:664
#, python-format
msgid "Not Implemented"
-msgstr ""
+msgstr "غير جاهز للاستخدام"
#. module: base
#: model:ir.model,name:base.model_res_widget_user
msgid "res.widget.user"
-msgstr ""
+msgstr "res.widget.user"
#. module: base
#: field:res.partner.category,complete_name:0
msgid "Full Name"
-msgstr ""
+msgstr "الاسم الكامل"
#. module: base
#: view:base.module.configuration:0
msgid "_Ok"
-msgstr ""
+msgstr "_موافق"
#. module: base
#: help:ir.filters,user_id:0
@@ -4405,17 +4492,17 @@ msgstr ""
#: code:addons/base/module/module.py:198
#, python-format
msgid "The name of the module must be unique !"
-msgstr ""
+msgstr "يجب أن يكون اسم الوحدة البرمجية فريداً!"
#. module: base
#: model:res.country,name:base.mz
msgid "Mozambique"
-msgstr ""
+msgstr "موزامبيق"
#. module: base
#: model:ir.ui.menu,name:base.menu_project_long_term
msgid "Long Term Planning"
-msgstr ""
+msgstr "التخطيط طويل الأجل"
#. module: base
#: field:ir.actions.server,message:0
@@ -4423,7 +4510,7 @@ msgstr ""
#: field:partner.wizard.spam,text:0
#: field:res.log,name:0
msgid "Message"
-msgstr ""
+msgstr "الرسالة"
#. module: base
#: field:ir.actions.act_window.view,multi:0
@@ -4434,47 +4521,47 @@ msgstr ""
#: view:res.partner:0
#: field:res.partner,user_id:0
msgid "Salesman"
-msgstr ""
+msgstr "مندوب المبيعات"
#. module: base
#: field:res.partner,address:0
#: view:res.partner.address:0
msgid "Contacts"
-msgstr ""
+msgstr "جهات الاتصال"
#. module: base
#: code:addons/orm.py:3199
#, python-format
msgid ""
"Unable to delete this document because it is used as a default property"
-msgstr ""
+msgstr "لا يمكن حذف هذا المستند لأنه مستخدم كخاصية افتراضية"
#. module: base
#: view:res.widget.wizard:0
msgid "Add"
-msgstr ""
+msgstr "إضافة"
#. module: base
#: view:base.module.upgrade:0
#: model:ir.actions.act_window,name:base.action_view_base_module_upgrade_window
#: model:ir.ui.menu,name:base.menu_view_base_module_upgrade
msgid "Apply Scheduled Upgrades"
-msgstr ""
+msgstr "نفّذ الترقيات المُعدّة"
#. module: base
#: view:res.widget:0
msgid "Widgets"
-msgstr ""
+msgstr "عناصر واجهة مستخدم"
#. module: base
#: model:res.country,name:base.cz
msgid "Czech Republic"
-msgstr ""
+msgstr "جمهورية التشيك"
#. module: base
#: view:res.widget.wizard:0
msgid "Widget Wizard"
-msgstr ""
+msgstr "معالج عناصر واجهات المستخدم"
#. module: base
#: model:ir.actions.act_window,help:base.act_ir_actions_todo_form
@@ -4483,6 +4570,9 @@ msgid ""
"OpenERP. They are launched during the installation of new modules, but you "
"can choose to restart some wizards manually from this menu."
msgstr ""
+"استخدم معالجات الإعدادات لمساعدتك على إعداد نستختك الجديدة من OpenERP. يتمّ "
+"تنفيذ هذه المعالجات أثناء تثبيت وحدات برمجية جديدة، ولكن بإمكانك أيضاً إعادة "
+"تشغيل أي منهم يدوياً من هذه القائمة."
#. module: base
#: code:addons/base/res/res_user.py:206
@@ -4491,17 +4581,19 @@ msgid ""
"Please use the change password wizard (in User Preferences or User menu) to "
"change your own password."
msgstr ""
+"فضلاً استخدم معالج تغيير كلمة المرور (في تفضيلات المستخدم أو قائمة المستخدم) "
+"لتغيير كلمة مرورك."
#. module: base
#: code:addons/orm.py:1350
#, python-format
msgid "Insufficient fields for Calendar View!"
-msgstr ""
+msgstr "لا يوجد حقول كافية لاستخدام طريقة عرض التقويم!"
#. module: base
#: selection:ir.property,type:0
msgid "Integer"
-msgstr ""
+msgstr "عدد صحيح"
#. module: base
#: help:ir.actions.report.xml,report_rml:0
@@ -4514,7 +4606,7 @@ msgstr ""
#: help:res.config.users,company_id:0
#: help:res.users,company_id:0
msgid "The company this user is currently working for."
-msgstr ""
+msgstr "الشركة التي يعمل هذا المستخدم لصالحها حالياً."
#. module: base
#: model:ir.model,name:base.model_wizard_ir_model_menu_create
@@ -4524,22 +4616,22 @@ msgstr ""
#. module: base
#: view:workflow.transition:0
msgid "Transition"
-msgstr ""
+msgstr "انتقال"
#. module: base
#: field:res.groups,menu_access:0
msgid "Access Menu"
-msgstr ""
+msgstr "قائمة الوصول"
#. module: base
#: model:res.country,name:base.na
msgid "Namibia"
-msgstr ""
+msgstr "ناميبيا"
#. module: base
#: model:res.country,name:base.mn
msgid "Mongolia"
-msgstr ""
+msgstr "منغوليا"
#. module: base
#: view:ir.module.module:0
@@ -4554,7 +4646,7 @@ msgstr ""
#. module: base
#: model:res.country,name:base.bi
msgid "Burundi"
-msgstr ""
+msgstr "بوروندي"
#. module: base
#: view:base.language.install:0
@@ -4565,7 +4657,7 @@ msgstr ""
#: wizard_button:server.action.create,init,end:0
#: wizard_button:server.action.create,step_1,end:0
msgid "Close"
-msgstr ""
+msgstr "إغلاق"
#. module: base
#: selection:base.language.install,lang:0
@@ -4575,12 +4667,12 @@ msgstr ""
#. module: base
#: view:res.log:0
msgid "My Logs"
-msgstr ""
+msgstr "سجلاتي"
#. module: base
#: model:res.country,name:base.bt
msgid "Bhutan"
-msgstr ""
+msgstr "مملكة بوتان"
#. module: base
#: help:ir.sequence,number_next:0
@@ -4590,17 +4682,17 @@ msgstr ""
#. module: base
#: model:res.partner.category,name:base.res_partner_category_11
msgid "Textile Suppliers"
-msgstr ""
+msgstr "مورّدو النسيج"
#. module: base
#: selection:ir.actions.url,target:0
msgid "This Window"
-msgstr ""
+msgstr "هذه النافذة"
#. module: base
#: view:publisher_warranty.contract:0
msgid "Publisher Warranty Contracts"
-msgstr ""
+msgstr "عقود ضمان الناشر"
#. module: base
#: help:res.log,name:0
@@ -4610,7 +4702,7 @@ msgstr ""
#. module: base
#: field:base.language.export,format:0
msgid "File Format"
-msgstr ""
+msgstr "صيغة الملف"
#. module: base
#: field:res.lang,iso_code:0
@@ -4620,18 +4712,18 @@ msgstr ""
#. module: base
#: model:ir.model,name:base.model_res_config_view
msgid "res.config.view"
-msgstr ""
+msgstr "res.config.view"
#. module: base
#: view:res.log:0
#: field:res.log,read:0
msgid "Read"
-msgstr ""
+msgstr "قراءة"
#. module: base
#: sql_constraint:res.country:0
msgid "The name of the country must be unique !"
-msgstr ""
+msgstr "يجب أن يكون اسم الدولة فريداً"
#. module: base
#: model:ir.actions.act_window,help:base.action_country_state
@@ -4640,6 +4732,8 @@ msgid ""
"federal states you are working on from here. Each state is attached to one "
"country."
msgstr ""
+"إذا كنت تعمل في السوق الأمريكي، يمكنك تحديد الولايات الأمريكية التي تعمل "
+"فيها من هنا. كل ولاية ترتبط بدولة واحدة فقط."
#. module: base
#: view:workflow.workitem:0
@@ -4656,7 +4750,7 @@ msgstr ""
#: field:res.config.users,password:0
#: field:res.users,password:0
msgid "Password"
-msgstr ""
+msgstr "كلمة المرور"
#. module: base
#: model:ir.actions.act_window,name:base.action_model_fields
@@ -4666,12 +4760,12 @@ msgstr ""
#: view:ir.model.fields:0
#: model:ir.ui.menu,name:base.ir_model_model_fields
msgid "Fields"
-msgstr ""
+msgstr "الحقول"
#. module: base
#: model:ir.actions.act_window,name:base.action_partner_employee_form
msgid "Employees"
-msgstr ""
+msgstr "الموظفون"
#. module: base
#: help:res.log,read:0
@@ -4693,7 +4787,7 @@ msgstr ""
#. module: base
#: field:ir.module.module,installed_version:0
msgid "Latest version"
-msgstr ""
+msgstr "الإصدارة الأخيرة"
#. module: base
#: model:ir.actions.act_window,help:base.res_partner_canal-act
@@ -4712,29 +4806,29 @@ msgstr ""
#: model:ir.actions.act_window,name:base.action_partner_address_form
#: model:ir.ui.menu,name:base.menu_partner_address_form
msgid "Addresses"
-msgstr ""
+msgstr "العناوين"
#. module: base
#: model:res.country,name:base.mm
msgid "Myanmar"
-msgstr ""
+msgstr "ميانمار"
#. module: base
#: selection:base.language.install,lang:0
msgid "Chinese (CN) / 简体中文"
-msgstr ""
+msgstr "الصينية / 简体中文"
#. module: base
#: field:res.bank,street:0
#: field:res.partner.address,street:0
#: field:res.partner.bank,street:0
msgid "Street"
-msgstr ""
+msgstr "الشارع"
#. module: base
#: model:res.country,name:base.yu
msgid "Yugoslavia"
-msgstr ""
+msgstr "يوغوسلافيا"
#. module: base
#: field:ir.model.data,name:0
@@ -4744,7 +4838,7 @@ msgstr ""
#. module: base
#: model:res.country,name:base.ca
msgid "Canada"
-msgstr ""
+msgstr "كندا"
#. module: base
#: selection:ir.module.module.dependency,state:0
@@ -4754,38 +4848,38 @@ msgstr "غير معروف"
#. module: base
#: model:ir.actions.act_window,name:base.action_res_users_my
msgid "Change My Preferences"
-msgstr ""
+msgstr "تغيير تفضيلاتي"
#. module: base
#: code:addons/base/ir/ir_actions.py:164
#, python-format
msgid "Invalid model name in the action definition."
-msgstr ""
+msgstr "اسم نموذج خاطئ في تعريف الإجراء."
#. module: base
#: field:partner.sms.send,text:0
msgid "SMS Message"
-msgstr ""
+msgstr "رسالة قصيرة (SMS)"
#. module: base
#: model:res.country,name:base.cm
msgid "Cameroon"
-msgstr ""
+msgstr "الكاميرون"
#. module: base
#: model:res.country,name:base.bf
msgid "Burkina Faso"
-msgstr ""
+msgstr "بوركينا فاسو"
#. module: base
#: selection:ir.actions.todo,state:0
msgid "Skipped"
-msgstr ""
+msgstr "تمّ تجاوزه"
#. module: base
#: selection:ir.model.fields,state:0
msgid "Custom Field"
-msgstr ""
+msgstr "حقل مخصص"
#. module: base
#: field:ir.module.module,web:0
@@ -4795,7 +4889,7 @@ msgstr ""
#. module: base
#: model:res.country,name:base.cc
msgid "Cocos (Keeling) Islands"
-msgstr ""
+msgstr "جزر الكوكوس"
#. module: base
#: selection:base.language.install,state:0
@@ -4812,7 +4906,7 @@ msgstr ""
#. module: base
#: model:ir.model,name:base.model_res_partner_bank_type_field
msgid "Bank type fields"
-msgstr ""
+msgstr "حقول نوع المصرف"
#. module: base
#: selection:base.language.install,lang:0
@@ -4827,17 +4921,20 @@ msgid ""
"\n"
"This addon is already installed on your system"
msgstr ""
+"\n"
+"\n"
+"قد تمّ تثبيت هذه الإضافة البرمجية سابقاً على نظامك"
#. module: base
#: help:ir.cron,interval_number:0
msgid "Repeat every x."
-msgstr ""
+msgstr "تكرار كل س."
#. module: base
#: wizard_view:server.action.create,step_1:0
#: wizard_field:server.action.create,step_1,report:0
msgid "Select Report"
-msgstr ""
+msgstr "اختر التقرير"
#. module: base
#: report:ir.module.reference.graph:0
@@ -4847,32 +4944,32 @@ msgstr ""
#. module: base
#: field:ir.module.module,maintainer:0
msgid "Maintainer"
-msgstr ""
+msgstr "المشرف"
#. module: base
#: field:ir.sequence,suffix:0
msgid "Suffix"
-msgstr ""
+msgstr "اللاحقة"
#. module: base
#: model:res.country,name:base.mo
msgid "Macau"
-msgstr ""
+msgstr "ماكاو"
#. module: base
#: model:ir.actions.report.xml,name:base.res_partner_address_report
msgid "Labels"
-msgstr ""
+msgstr "التسميات"
#. module: base
#: field:partner.wizard.spam,email_from:0
msgid "Sender's email"
-msgstr ""
+msgstr "البريد الإلكتروني للمرسِل"
#. module: base
#: field:ir.default,field_name:0
msgid "Object Field"
-msgstr ""
+msgstr "حقل الكائن"
#. module: base
#: selection:base.language.install,lang:0
@@ -4891,6 +4988,8 @@ msgid ""
"If specified, this action will be opened at logon for this user, in addition "
"to the standard menu."
msgstr ""
+"إذا تمّ تحديد هذا الإجراء فسيتم تنفيذه عند تسجيل دخول المستخدم، بالإضافة إلى "
+"القائمة الافتراضية."
#. module: base
#: view:ir.values:0
@@ -4910,6 +5009,8 @@ msgid ""
"You try to upgrade a module that depends on the module: %s.\n"
"But this module is not available in your system."
msgstr ""
+"أنت تحاول ترقية وحدة برمجية تتطلب وحدة برمجية أخرى: %s\n"
+"غير متوفرة على نظامك."
#. module: base
#: field:workflow.transition,act_to:0
@@ -4919,7 +5020,7 @@ msgstr ""
#. module: base
#: view:ir.values:0
msgid "Connect Events to Actions"
-msgstr ""
+msgstr "اربط الأحداث بالإجراءات"
#. module: base
#: model:ir.model,name:base.model_base_update_translations
@@ -4930,7 +5031,7 @@ msgstr ""
#: field:ir.module.category,parent_id:0
#: field:res.partner.category,parent_id:0
msgid "Parent Category"
-msgstr ""
+msgstr "الفئة الأم"
#. module: base
#: selection:ir.property,type:0
@@ -4942,7 +5043,7 @@ msgstr ""
#: selection:res.partner.title,domain:0
#: view:res.users:0
msgid "Contact"
-msgstr ""
+msgstr "جهة الاتصال"
#. module: base
#: model:ir.model,name:base.model_ir_ui_menu
@@ -4952,19 +5053,19 @@ msgstr ""
#. module: base
#: model:res.country,name:base.us
msgid "United States"
-msgstr ""
+msgstr "الولايات المتّحدة"
#. module: base
#: view:ir.module.module:0
msgid "Cancel Uninstall"
-msgstr ""
+msgstr "ألغاء أمر الإزالة"
#. module: base
#: view:res.bank:0
#: view:res.partner:0
#: view:res.partner.address:0
msgid "Communication"
-msgstr ""
+msgstr "التواصل"
#. module: base
#: view:ir.actions.report.xml:0
@@ -4974,18 +5075,18 @@ msgstr ""
#. module: base
#: model:ir.model,name:base.model_ir_server_object_lines
msgid "ir.server.object.lines"
-msgstr ""
+msgstr "ir.server.object.lines"
#. module: base
#: code:addons/base/module/module.py:531
#, python-format
msgid "Module %s: Invalid Quality Certificate"
-msgstr ""
+msgstr "الوحدة البرمجية %s: شهادة الجودة غير صحيحية"
#. module: base
#: model:res.country,name:base.kw
msgid "Kuwait"
-msgstr ""
+msgstr "الكويت"
#. module: base
#: field:workflow.workitem,inst_id:0
@@ -5008,23 +5109,23 @@ msgstr ""
#. module: base
#: model:res.country,name:base.ng
msgid "Nigeria"
-msgstr ""
+msgstr "نيجيريا"
#. module: base
#: code:addons/base/ir/ir_model.py:250
#, python-format
msgid "For selection fields, the Selection Options must be given!"
-msgstr ""
+msgstr "يجب سرد الاختيارات الممكنة لحقل الاختيار!"
#. module: base
#: model:ir.actions.act_window,name:base.action_partner_sms_send
msgid "SMS Send"
-msgstr ""
+msgstr "إرسال رسالة قصيرة (SMS)"
#. module: base
#: field:res.company,user_ids:0
msgid "Accepted Users"
-msgstr ""
+msgstr "المستخدمون المقبولون"
#. module: base
#: field:ir.ui.menu,web_icon_data:0
@@ -5034,17 +5135,17 @@ msgstr ""
#. module: base
#: view:ir.values:0
msgid "Values for Event Type"
-msgstr ""
+msgstr "القيم الممكنة لنوع الحدث"
#. module: base
#: selection:ir.model.fields,select_level:0
msgid "Always Searchable"
-msgstr ""
+msgstr "قابل للبحث دائماً"
#. module: base
#: model:res.country,name:base.hk
msgid "Hong Kong"
-msgstr ""
+msgstr "هونج كونج"
#. module: base
#: help:ir.actions.server,name:0
@@ -5066,12 +5167,12 @@ msgstr ""
#. module: base
#: model:res.country,name:base.ph
msgid "Philippines"
-msgstr ""
+msgstr "الفلبّين"
#. module: base
#: model:res.country,name:base.ma
msgid "Morocco"
-msgstr ""
+msgstr "المغرب"
#. module: base
#: view:res.lang:0
@@ -5081,27 +5182,27 @@ msgstr ""
#. module: base
#: field:res.widget,content:0
msgid "Content"
-msgstr ""
+msgstr "المحتوى"
#. module: base
#: help:ir.rule,global:0
msgid "If no group is specified the rule is global and applied to everyone"
-msgstr ""
+msgstr "في حالة عدم تحديد مجموعة، ستطبّق القاعدة على الجميع"
#. module: base
#: model:res.country,name:base.td
msgid "Chad"
-msgstr ""
+msgstr "تشاد"
#. module: base
#: model:ir.model,name:base.model_workflow_transition
msgid "workflow.transition"
-msgstr ""
+msgstr "workflow.transition"
#. module: base
#: view:res.lang:0
msgid "%a - Abbreviated weekday name."
-msgstr ""
+msgstr "%a - اسم اليوم المختصر"
#. module: base
#: report:ir.module.reference.graph:0
@@ -5116,29 +5217,29 @@ msgstr ""
#. module: base
#: model:res.country,name:base.dm
msgid "Dominica"
-msgstr ""
+msgstr "دومينيكا"
#. module: base
#: sql_constraint:publisher_warranty.contract:0
msgid ""
"Your publisher warranty contract is already subscribed in the system !"
-msgstr ""
+msgstr "قد تمّ إشراك هذا النظام في عقد ضمان الناشر سابقاً!"
#. module: base
#: help:ir.cron,nextcall:0
msgid "Next planned execution date for this scheduler"
-msgstr ""
+msgstr "تاريخ التنفيذ القادم لهذا المُجدوِل"
#. module: base
#: help:res.config.users,view:0
#: help:res.users,view:0
msgid "Choose between the simplified interface and the extended one"
-msgstr ""
+msgstr "اختر من بين الواجهة المبسطة والواجهة المفصلة"
#. module: base
#: model:res.country,name:base.np
msgid "Nepal"
-msgstr ""
+msgstr "نيبال"
#. module: base
#: code:addons/orm.py:2307
@@ -5166,12 +5267,12 @@ msgstr ""
#: model:ir.ui.menu,name:base.menu_action_ui_view_custom
#: view:ir.ui.view.custom:0
msgid "Customized Views"
-msgstr ""
+msgstr "طرق العرض المخصصة"
#. module: base
#: view:partner.sms.send:0
msgid "Bulk SMS send"
-msgstr ""
+msgstr "إرسال رسائل قصيرة (SMS) بالجملة"
#. module: base
#: view:ir.sequence:0
@@ -5181,14 +5282,14 @@ msgstr ""
#. module: base
#: model:ir.ui.menu,name:base.menu_view_base_module_update
msgid "Update Modules List"
-msgstr ""
+msgstr "تحديث قائمة الوحدات البرمجية"
#. module: base
#: code:addons/base/module/module.py:255
#, python-format
msgid ""
"Unable to upgrade module \"%s\" because an external dependency is not met: %s"
-msgstr ""
+msgstr "لا يمكن ترقية الوحدة البرمجية \"%s\" بسبب عدم توفّر متطلب خارجي: %s"
#. module: base
#: code:addons/base/res/res_user.py:257
@@ -5203,7 +5304,7 @@ msgstr ""
#. module: base
#: view:ir.actions.configuration.wizard:0
msgid "Continue"
-msgstr ""
+msgstr "إستمرار"
#. module: base
#: selection:base.language.install,lang:0
@@ -5214,7 +5315,7 @@ msgstr ""
#: code:addons/orm.py:158
#, python-format
msgid "Object %s does not exists"
-msgstr ""
+msgstr "الكائن %s غير موجود"
#. module: base
#: selection:base.language.install,lang:0
@@ -5229,38 +5330,38 @@ msgstr ""
#. module: base
#: model:res.country,name:base.bv
msgid "Bouvet Island"
-msgstr ""
+msgstr "جزيرة بوفي"
#. module: base
#: field:ir.attachment,name:0
msgid "Attachment Name"
-msgstr ""
+msgstr "اسم المرفق"
#. module: base
#: field:base.language.export,data:0
#: field:base.language.import,data:0
msgid "File"
-msgstr ""
+msgstr "الملف"
#. module: base
#: view:res.config.users:0
msgid "Add User"
-msgstr ""
+msgstr "إضافة مستخدم"
#. module: base
#: model:ir.actions.act_window,name:base.action_view_base_module_upgrade_install
msgid "Module Upgrade Install"
-msgstr ""
+msgstr "تثبيت ترقية وحدة برمجية"
#. module: base
#: model:ir.model,name:base.model_ir_actions_configuration_wizard
msgid "ir.actions.configuration.wizard"
-msgstr ""
+msgstr "ir.actions.configuration.wizard"
#. module: base
#: view:res.lang:0
msgid "%b - Abbreviated month name."
-msgstr ""
+msgstr "%b - اسم الشهر المختصر"
#. module: base
#: field:res.partner,supplier:0
@@ -5268,7 +5369,7 @@ msgstr ""
#: field:res.partner.address,is_supplier_add:0
#: model:res.partner.category,name:base.res_partner_category_8
msgid "Supplier"
-msgstr ""
+msgstr "مورِّد"
#. module: base
#: view:ir.actions.server:0
@@ -5281,12 +5382,12 @@ msgstr ""
#: view:base.language.import:0
#: view:wizard.ir.model.menu.create:0
msgid "_Close"
-msgstr ""
+msgstr "إ_غلاق"
#. module: base
#: field:multi_company.default,company_dest_id:0
msgid "Default Company"
-msgstr ""
+msgstr "الشركة الافتراضية"
#. module: base
#: selection:base.language.install,lang:0
@@ -5302,17 +5403,17 @@ msgstr ""
#: model:ir.model,name:base.model_base_module_import
#: model:ir.ui.menu,name:base.menu_view_base_module_import
msgid "Import Module"
-msgstr ""
+msgstr "استيراد وحدة برمجية"
#. module: base
#: model:res.country,name:base.as
msgid "American Samoa"
-msgstr ""
+msgstr "ساموا الأمريكية"
#. module: base
#: help:ir.actions.act_window,res_model:0
msgid "Model name of the object to open in the view window"
-msgstr ""
+msgstr "اسم نموذج الكائن الذي سيتمّ فتحه في نافذة العرض"
#. module: base
#: field:res.log,secondary:0
@@ -5322,24 +5423,24 @@ msgstr ""
#. module: base
#: field:ir.model.fields,selectable:0
msgid "Selectable"
-msgstr ""
+msgstr "قابل للاختيار"
#. module: base
#: view:res.request.link:0
msgid "Request Link"
-msgstr ""
+msgstr "اطلب الرابط"
#. module: base
#: view:ir.attachment:0
#: selection:ir.attachment,type:0
#: field:ir.module.module,url:0
msgid "URL"
-msgstr ""
+msgstr "العنوان الإلكتروني (URL)"
#. module: base
#: help:res.country,name:0
msgid "The full name of the country."
-msgstr ""
+msgstr "اسم الدولة كاملاً"
#. module: base
#: selection:ir.actions.server,state:0
@@ -5351,17 +5452,17 @@ msgstr ""
#: code:addons/orm.py:3532
#, python-format
msgid "UserError"
-msgstr ""
+msgstr "خطأ مستخدم"
#. module: base
#: model:res.country,name:base.ae
msgid "United Arab Emirates"
-msgstr ""
+msgstr "الإمارات العربية المتحدة"
#. module: base
#: model:ir.ui.menu,name:base.menu_crm_case_job_req_main
msgid "Recruitment"
-msgstr ""
+msgstr "التوظيف"
#. module: base
#: model:res.country,name:base.re
@@ -5373,24 +5474,24 @@ msgstr ""
#, python-format
msgid ""
"New column name must still start with x_ , because it is a custom field!"
-msgstr ""
+msgstr "الاسم الجديد للعمود يجب أن يبدأ بـ x_ أيضاً لأن الحقل مخصص!"
#. module: base
#: view:ir.model.access:0
#: view:ir.rule:0
#: field:ir.rule,global:0
msgid "Global"
-msgstr ""
+msgstr "شامل"
#. module: base
#: model:res.country,name:base.mp
msgid "Northern Mariana Islands"
-msgstr ""
+msgstr "جزر ماريانا الشمالية"
#. module: base
#: model:res.country,name:base.sb
msgid "Solomon Islands"
-msgstr ""
+msgstr "جزر سليمان"
#. module: base
#: code:addons/base/ir/ir_model.py:490
@@ -5406,13 +5507,13 @@ msgstr ""
#. module: base
#: view:res.request:0
msgid "Waiting"
-msgstr ""
+msgstr "جاري الانتظار"
#. module: base
#: code:addons/__init__.py:834
#, python-format
msgid "Could not load base module"
-msgstr ""
+msgstr "لم يمكن تحميل الوحدة البرمجية الأساسية (base)"
#. module: base
#: view:res.lang:0
@@ -5428,13 +5529,13 @@ msgstr ""
#. module: base
#: field:res.log,create_date:0
msgid "Creation Date"
-msgstr ""
+msgstr "تاريخ الإنشاء"
#. module: base
#: view:ir.translation:0
#: model:ir.ui.menu,name:base.menu_translation
msgid "Translations"
-msgstr ""
+msgstr "الترجمات"
#. module: base
#: field:ir.sequence,padding:0
@@ -5444,43 +5545,43 @@ msgstr ""
#. module: base
#: view:ir.actions.report.xml:0
msgid "Report"
-msgstr ""
+msgstr "التقرير"
#. module: base
#: model:res.country,name:base.ua
msgid "Ukraine"
-msgstr ""
+msgstr "أوكرانيا"
#. module: base
#: model:res.country,name:base.to
msgid "Tonga"
-msgstr ""
+msgstr "تونجا"
#. module: base
#: model:ir.model,name:base.model_ir_module_category
#: view:ir.module.category:0
msgid "Module Category"
-msgstr ""
+msgstr "فئة الوحدة البرمجية"
#. module: base
#: view:partner.wizard.ean.check:0
msgid "Ignore"
-msgstr ""
+msgstr "تجاهل"
#. module: base
#: report:ir.module.reference.graph:0
msgid "Reference Guide"
-msgstr ""
+msgstr "الدليل المرجعي"
#. module: base
#: view:ir.ui.view:0
msgid "Architecture"
-msgstr ""
+msgstr "الهيكل"
#. module: base
#: model:res.country,name:base.ml
msgid "Mali"
-msgstr ""
+msgstr "مالي"
#. module: base
#: help:res.config.users,email:0
@@ -5491,6 +5592,10 @@ msgid ""
"Warning: if \"email_from\" and \"smtp_server\" aren't configured, it won't "
"be possible to email new users."
msgstr ""
+"في حالة ذكر بريد إلكتروني، سيتمّ إرسالة رسالة ترحيبية للمستخدم.\n"
+"\n"
+"تحذير: إذا لم يكن قد تمّ إعداد كل من الإعدادات \"email_from\" و "
+"\"smtp_server\"، فلن يكون من الممكن إرسال بريد إلكتروني."
#. module: base
#: selection:base.language.install,lang:0
@@ -5505,17 +5610,17 @@ msgstr ""
#. module: base
#: model:res.country,name:base.tk
msgid "Tokelau"
-msgstr ""
+msgstr "توكلو"
#. module: base
#: field:ir.actions.report.xml,report_xsl:0
msgid "XSL path"
-msgstr ""
+msgstr "مسار XSL"
#. module: base
#: model:res.country,name:base.bn
msgid "Brunei Darussalam"
-msgstr ""
+msgstr "بروناي دار السّلام"
#. module: base
#: view:ir.actions.act_window:0
@@ -5524,22 +5629,22 @@ msgstr ""
#: field:ir.ui.view,type:0
#: field:wizard.ir.model.menu.create.line,view_type:0
msgid "View Type"
-msgstr ""
+msgstr "عرض النوع"
#. module: base
#: model:ir.ui.menu,name:base.next_id_2
msgid "User Interface"
-msgstr ""
+msgstr "واجهة المستخدم"
#. module: base
#: field:ir.attachment,create_date:0
msgid "Date Created"
-msgstr ""
+msgstr "تاريخ الإنشاء"
#. module: base
#: model:ir.model,name:base.model_ir_actions_todo
msgid "ir.actions.todo"
-msgstr ""
+msgstr "ir.actions.todo"
#. module: base
#: code:addons/base/res/res_config.py:94
@@ -5550,12 +5655,12 @@ msgstr ""
#. module: base
#: view:ir.actions.act_window:0
msgid "General Settings"
-msgstr ""
+msgstr "الإعدادات العامة"
#. module: base
#: model:ir.ui.menu,name:base.menu_administration_shortcut
msgid "Custom Shortcuts"
-msgstr ""
+msgstr "اختصارات مخصصة"
#. module: base
#: selection:base.language.install,lang:0
@@ -5565,17 +5670,17 @@ msgstr ""
#. module: base
#: model:res.country,name:base.dz
msgid "Algeria"
-msgstr ""
+msgstr "الجزائر"
#. module: base
#: model:res.country,name:base.be
msgid "Belgium"
-msgstr ""
+msgstr "بلجيكا"
#. module: base
#: model:ir.model,name:base.model_osv_memory_autovacuum
msgid "osv_memory.autovacuum"
-msgstr ""
+msgstr "osv_memory.autovacuum"
#. module: base
#: field:base.language.export,lang:0
@@ -5586,12 +5691,12 @@ msgstr ""
#: field:res.partner,lang:0
#: field:res.users,context_lang:0
msgid "Language"
-msgstr ""
+msgstr "اللغة"
#. module: base
#: model:res.country,name:base.gm
msgid "Gambia"
-msgstr ""
+msgstr "غامبيا"
#. module: base
#: model:ir.actions.act_window,name:base.action_res_company_form
@@ -5603,29 +5708,29 @@ msgstr ""
#: view:res.users:0
#: field:res.users,company_ids:0
msgid "Companies"
-msgstr ""
+msgstr "الشركات"
#. module: base
#: view:res.lang:0
msgid "%H - Hour (24-hour clock) [00,23]."
-msgstr ""
+msgstr "%H - الساعة (24 ساعة) [00،23]"
#. module: base
#: model:ir.model,name:base.model_res_widget
msgid "res.widget"
-msgstr ""
+msgstr "res.widget"
#. module: base
#: code:addons/base/ir/ir_model.py:258
#, python-format
msgid "Model %s does not exist!"
-msgstr ""
+msgstr "النموذج %s غير موجود!"
#. module: base
#: code:addons/base/res/res_lang.py:159
#, python-format
msgid "You cannot delete the language which is User's Preferred Language !"
-msgstr ""
+msgstr "لا يمكنك حذف اللغة المفضلة لمستخدم!"
#. module: base
#: code:addons/fields.py:103
@@ -5638,18 +5743,18 @@ msgstr ""
#: field:ir.actions.server,code:0
#: selection:ir.actions.server,state:0
msgid "Python Code"
-msgstr ""
+msgstr "كود بايثون"
#. module: base
#: code:addons/base/module/wizard/base_module_import.py:67
#, python-format
msgid "Can not create the module file: %s !"
-msgstr ""
+msgstr "لا يمكن إنشاء ملف الوحدة البرمجية: %s !"
#. module: base
#: model:ir.module.module,description:base.module_meta_information
msgid "The kernel of OpenERP, needed for all installation."
-msgstr ""
+msgstr "نواة نظام OpenERP. لازم لكل نسخة من النظام."
#. module: base
#: view:base.language.install:0
@@ -5663,37 +5768,37 @@ msgstr ""
#: view:publisher_warranty.contract.wizard:0
#: view:res.widget.wizard:0
msgid "Cancel"
-msgstr ""
+msgstr "إلغاء"
#. module: base
#: selection:base.language.export,format:0
msgid "PO File"
-msgstr ""
+msgstr "ملف ترجمة (PO)"
#. module: base
#: model:res.country,name:base.nt
msgid "Neutral Zone"
-msgstr ""
+msgstr "منطقة محايدة"
#. module: base
#: selection:base.language.install,lang:0
msgid "Hindi / हिंदी"
-msgstr ""
+msgstr "الهندية / हिंदी"
#. module: base
#: view:ir.model:0
msgid "Custom"
-msgstr ""
+msgstr "مُخصّص"
#. module: base
#: view:res.request:0
msgid "Current"
-msgstr ""
+msgstr "الحالي"
#. module: base
#: model:res.partner.category,name:base.res_partner_category_9
msgid "Components Supplier"
-msgstr ""
+msgstr "مورّد المكوّنات"
#. module: base
#: model:ir.actions.act_window,name:base.action_res_users
@@ -5704,58 +5809,58 @@ msgstr ""
#: field:res.groups,users:0
#: view:res.users:0
msgid "Users"
-msgstr ""
+msgstr "المستخدمون"
#. module: base
#: field:ir.module.module,published_version:0
msgid "Published Version"
-msgstr ""
+msgstr "الإصدارة المنشورة"
#. module: base
#: model:res.country,name:base.is
msgid "Iceland"
-msgstr ""
+msgstr "آيسلندا"
#. module: base
#: model:ir.actions.act_window,name:base.ir_action_window
#: model:ir.ui.menu,name:base.menu_ir_action_window
msgid "Window Actions"
-msgstr ""
+msgstr "إجراءات النافذة"
#. module: base
#: view:res.lang:0
msgid "%I - Hour (12-hour clock) [01,12]."
-msgstr ""
+msgstr "%I - الساعة (12 ساعة) [01،12]."
#. module: base
#: selection:publisher_warranty.contract.wizard,state:0
msgid "Finished"
-msgstr ""
+msgstr "انتهى"
#. module: base
#: model:res.country,name:base.de
msgid "Germany"
-msgstr ""
+msgstr "ألمانيا"
#. module: base
#: view:ir.sequence:0
msgid "Week of the year: %(woy)s"
-msgstr ""
+msgstr "الأسبوع من السنة: %(woy)s"
#. module: base
#: model:res.partner.category,name:base.res_partner_category_14
msgid "Bad customers"
-msgstr ""
+msgstr "عملاء سيئون"
#. module: base
#: report:ir.module.reference.graph:0
msgid "Reports :"
-msgstr ""
+msgstr "التقارير:"
#. module: base
#: model:res.country,name:base.gy
msgid "Guyana"
-msgstr ""
+msgstr "غيانا"
#. module: base
#: help:ir.actions.act_window,view_type:0
@@ -5763,66 +5868,68 @@ msgid ""
"View type: set to 'tree' for a hierarchical tree view, or 'form' for other "
"views"
msgstr ""
+"نوع طريقة العرض: اختر 'شجرة' للحصول على طريقة عرض هرمية، أو 'نموذج' لطرق "
+"العرض الأخرى"
#. module: base
#: code:addons/base/res/res_config.py:421
#, python-format
msgid "Click 'Continue' to configure the next addon..."
-msgstr ""
+msgstr "انقر 'استمرار' لإعداد الإضافة التالية..."
#. module: base
#: field:ir.actions.server,record_id:0
msgid "Create Id"
-msgstr ""
+msgstr "إنشاء مُعرِّف"
#. module: base
#: model:res.country,name:base.hn
msgid "Honduras"
-msgstr ""
+msgstr "هندوراس"
#. module: base
#: help:res.config.users,menu_tips:0
#: help:res.users,menu_tips:0
msgid ""
"Check out this box if you want to always display tips on each menu action"
-msgstr ""
+msgstr "اختر لكي تظهر لك إرشادات لكل إجراء في القائمة دائماً"
#. module: base
#: model:res.country,name:base.eg
msgid "Egypt"
-msgstr ""
+msgstr "مصر"
#. module: base
#: field:ir.rule,perm_read:0
msgid "Apply For Read"
-msgstr ""
+msgstr "اطلب صلاحية القراءة"
#. module: base
#: help:ir.actions.server,model_id:0
msgid ""
"Select the object on which the action will work (read, write, create)."
-msgstr ""
+msgstr "اختر الكائن الذي سيطبّق عليه الإجراء (قراءة، كتابة، إنشاء)."
#. module: base
#: code:addons/base/ir/ir_actions.py:629
#, python-format
msgid "Please specify server option --email-from !"
-msgstr ""
+msgstr "فضلاً استخدم خيار الخادم --email-from !"
#. module: base
#: field:base.language.import,name:0
msgid "Language Name"
-msgstr ""
+msgstr "اسم اللغة"
#. module: base
#: selection:ir.property,type:0
msgid "Boolean"
-msgstr ""
+msgstr "بولياني (قيمة منطقية)"
#. module: base
#: view:ir.model:0
msgid "Fields Description"
-msgstr ""
+msgstr "وصف الحقول"
#. module: base
#: view:ir.attachment:0
@@ -5838,14 +5945,14 @@ msgstr ""
#: view:res.partner.address:0
#: view:workflow.activity:0
msgid "Group By..."
-msgstr ""
+msgstr "تجميع حسب ..."
#. module: base
#: view:ir.model.fields:0
#: field:ir.model.fields,readonly:0
#: field:res.partner.bank.type.field,readonly:0
msgid "Readonly"
-msgstr ""
+msgstr "للقراءة فقط"
#. module: base
#: field:ir.actions.act_window.view,view_id:0
@@ -5853,13 +5960,13 @@ msgstr ""
#: selection:ir.translation,type:0
#: field:wizard.ir.model.menu.create.line,view_id:0
msgid "View"
-msgstr ""
+msgstr "طريقة العرض"
#. module: base
#: selection:ir.module.module,state:0
#: selection:ir.module.module.dependency,state:0
msgid "To be installed"
-msgstr ""
+msgstr "في انتظار التثبيت"
#. module: base
#: help:ir.actions.act_window,display_menu_tip:0
@@ -5873,7 +5980,7 @@ msgstr ""
#: model:ir.module.module,shortdesc:base.module_meta_information
#: field:res.currency,base:0
msgid "Base"
-msgstr ""
+msgstr "الأساس"
#. module: base
#: selection:base.language.install,lang:0
@@ -5883,7 +5990,7 @@ msgstr ""
#. module: base
#: model:res.country,name:base.lr
msgid "Liberia"
-msgstr ""
+msgstr "ليبيريا"
#. module: base
#: view:ir.attachment:0
@@ -5893,7 +6000,7 @@ msgstr ""
#: field:res.partner,comment:0
#: model:res.widget,title:base.note_widget
msgid "Notes"
-msgstr ""
+msgstr "ملاحظات"
#. module: base
#: field:ir.config_parameter,value:0
@@ -5909,7 +6016,7 @@ msgstr ""
#: field:ir.values,value:0
#: field:ir.values,value_unpickle:0
msgid "Value"
-msgstr ""
+msgstr "القيمة"
#. module: base
#: field:ir.sequence,code:0
@@ -5918,44 +6025,44 @@ msgstr ""
#: field:res.bank,code:0
#: field:res.partner.bank.type,code:0
msgid "Code"
-msgstr ""
+msgstr "الرمز"
#. module: base
#: model:ir.model,name:base.model_res_config_installer
msgid "res.config.installer"
-msgstr ""
+msgstr "res.config.installer"
#. module: base
#: model:res.country,name:base.mc
msgid "Monaco"
-msgstr ""
+msgstr "موناكو"
#. module: base
#: selection:ir.cron,interval_type:0
msgid "Minutes"
-msgstr ""
+msgstr "الدقائق"
#. module: base
#: selection:ir.translation,type:0
msgid "Help"
-msgstr ""
+msgstr "مساعدة"
#. module: base
#: help:res.config.users,menu_id:0
#: help:res.users,menu_id:0
msgid ""
"If specified, the action will replace the standard menu for this user."
-msgstr ""
+msgstr "في حالة التحديد، سيحلّ الإجراء محل القائمة القياسية لهذا المستخدم."
#. module: base
#: selection:ir.actions.server,state:0
msgid "Write Object"
-msgstr ""
+msgstr "كتابة الكائن"
#. module: base
#: model:ir.ui.menu,name:base.menu_fundrising
msgid "Fund Raising"
-msgstr ""
+msgstr "حملة تبرعات"
#. module: base
#: model:ir.actions.act_window,name:base.ir_sequence_type
@@ -5974,31 +6081,33 @@ msgid ""
"All pending configuration wizards have been executed. You may restart "
"individual wizards via the list of configuration wizards."
msgstr ""
+"تمّ تنفيذ جميع المعالجات. يمكنك إعادة تشغيل المعالجات منفردة من خلال قائمة "
+"معالجات الإعدادات."
#. module: base
#: wizard_button:server.action.create,step_1,create:0
msgid "Create"
-msgstr ""
+msgstr "إنشاء"
#. module: base
#: view:ir.sequence:0
msgid "Current Year with Century: %(year)s"
-msgstr ""
+msgstr "السنة الحالية مع القرن: %(year)s"
#. module: base
#: field:ir.exports,export_fields:0
msgid "Export ID"
-msgstr ""
+msgstr "مُعرِّف التصدير"
#. module: base
#: model:res.country,name:base.fr
msgid "France"
-msgstr ""
+msgstr "فرنسا"
#. module: base
#: model:ir.model,name:base.model_res_log
msgid "res.log"
-msgstr ""
+msgstr "res.log"
#. module: base
#: help:ir.translation,module:0
@@ -6015,7 +6124,7 @@ msgstr ""
#. module: base
#: selection:ir.cron,interval_type:0
msgid "Weeks"
-msgstr ""
+msgstr "الأسابيع"
#. module: base
#: model:res.country,name:base.af
@@ -6026,7 +6135,7 @@ msgstr ""
#: code:addons/base/module/wizard/base_module_import.py:67
#, python-format
msgid "Error !"
-msgstr ""
+msgstr "خطأ !"
#. module: base
#: model:res.partner.bank.type.field,name:base.bank_normal_field_contry
@@ -6036,13 +6145,13 @@ msgstr ""
#. module: base
#: field:ir.cron,interval_type:0
msgid "Interval Unit"
-msgstr ""
+msgstr "وحدة الفترة"
#. module: base
#: field:publisher_warranty.contract,kind:0
#: field:workflow.activity,kind:0
msgid "Kind"
-msgstr ""
+msgstr "النوع"
#. module: base
#: code:addons/orm.py:3775
@@ -6054,17 +6163,17 @@ msgstr ""
#: field:res.bank,fax:0
#: field:res.partner.address,fax:0
msgid "Fax"
-msgstr ""
+msgstr "فاكس"
#. module: base
#: field:res.lang,thousands_sep:0
msgid "Thousands Separator"
-msgstr ""
+msgstr "فاصل الآلاف"
#. module: base
#: field:res.request,create_date:0
msgid "Created Date"
-msgstr ""
+msgstr "تاريخ الإنشاء"
#. module: base
#: help:ir.actions.server,loop_action:0
@@ -6081,32 +6190,32 @@ msgstr ""
#. module: base
#: model:ir.model,name:base.model_res_request
msgid "res.request"
-msgstr ""
+msgstr "res.request"
#. module: base
#: view:ir.model:0
msgid "In Memory"
-msgstr ""
+msgstr "في الذاكرة"
#. module: base
#: view:ir.actions.todo:0
msgid "Todo"
-msgstr ""
+msgstr "في انتظار التنفيذ"
#. module: base
#: field:ir.attachment,datas:0
msgid "File Content"
-msgstr ""
+msgstr "محتوى الملف"
#. module: base
#: model:res.country,name:base.pa
msgid "Panama"
-msgstr ""
+msgstr "بنما"
#. module: base
#: model:res.partner.title,name:base.res_partner_title_ltd
msgid "Ltd"
-msgstr ""
+msgstr "ذ.م.م"
#. module: base
#: help:workflow.transition,group_id:0
@@ -6119,16 +6228,17 @@ msgstr ""
#: constraint:res.users:0
msgid "The chosen company is not in the allowed companies for this user"
msgstr ""
+"الشركة المختارة غير مدرجة ضمن قائمة الشركات المسموح بها لهذا المستخدم"
#. module: base
#: model:res.country,name:base.gi
msgid "Gibraltar"
-msgstr ""
+msgstr "جبل طارق"
#. module: base
#: field:ir.actions.report.xml,report_name:0
msgid "Service Name"
-msgstr ""
+msgstr "اسم الخدمة"
#. module: base
#: model:res.country,name:base.pn
@@ -6140,30 +6250,31 @@ msgstr ""
msgid ""
"We suggest to reload the menu tab to see the new menus (Ctrl+T then Ctrl+R)."
msgstr ""
+"نقترح إعادة تحميل القائمة لكي تظهر القوائم الجديدة (Ctrl+T ثم Ctrl+R)."
#. module: base
#: model:ir.actions.act_window,name:base.action_rule
#: model:ir.ui.menu,name:base.menu_action_rule
msgid "Record Rules"
-msgstr ""
+msgstr "قواعد السجلات"
#. module: base
#: field:res.config.users,name:0
#: field:res.users,name:0
msgid "User Name"
-msgstr ""
+msgstr "اسم المستخدم"
#. module: base
#: view:ir.sequence:0
msgid "Day of the year: %(doy)s"
-msgstr ""
+msgstr "اليوم من السنة: %(doy)s"
#. module: base
#: view:ir.model:0
#: view:ir.model.fields:0
#: view:workflow.activity:0
msgid "Properties"
-msgstr ""
+msgstr "الخصائص"
#. module: base
#: help:ir.sequence,padding:0
@@ -6175,22 +6286,22 @@ msgstr ""
#. module: base
#: view:res.lang:0
msgid "%A - Full weekday name."
-msgstr ""
+msgstr "%A - اسم اليوم كاملاً."
#. module: base
#: selection:ir.cron,interval_type:0
msgid "Months"
-msgstr ""
+msgstr "شهور"
#. module: base
#: field:ir.actions.act_window,search_view:0
msgid "Search View"
-msgstr ""
+msgstr "بحث العرض"
#. module: base
#: sql_constraint:res.lang:0
msgid "The code of the language must be unique !"
-msgstr ""
+msgstr "يجب أن يكون رمز اللغة فريداً!"
#. module: base
#: model:ir.actions.act_window,name:base.action_attachment
@@ -6198,42 +6309,42 @@ msgstr ""
#: view:ir.attachment:0
#: model:ir.ui.menu,name:base.menu_action_attachment
msgid "Attachments"
-msgstr ""
+msgstr "المُرفقات"
#. module: base
#: model:ir.ui.menu,name:base.menu_base_partner
#: model:ir.ui.menu,name:base.menu_sale_config_sales
#: model:ir.ui.menu,name:base.menu_sales
msgid "Sales"
-msgstr ""
+msgstr "المبيعات"
#. module: base
#: field:ir.actions.server,child_ids:0
msgid "Other Actions"
-msgstr ""
+msgstr "إجراءات أخرى"
#. module: base
#: selection:ir.actions.todo,state:0
#: view:res.config.users:0
msgid "Done"
-msgstr ""
+msgstr "تمّ"
#. module: base
#: model:res.partner.title,name:base.res_partner_title_miss
msgid "Miss"
-msgstr ""
+msgstr "الآنسة"
#. module: base
#: view:ir.model.access:0
#: field:ir.model.access,perm_write:0
#: view:ir.rule:0
msgid "Write Access"
-msgstr ""
+msgstr "صلاحيات الكتابة"
#. module: base
#: view:res.lang:0
msgid "%m - Month number [01,12]."
-msgstr ""
+msgstr "%m - رقم الشهر [01،12]."
#. module: base
#: field:res.bank,city:0
@@ -6241,23 +6352,23 @@ msgstr ""
#: field:res.partner.address,city:0
#: field:res.partner.bank,city:0
msgid "City"
-msgstr ""
+msgstr "المدينة"
#. module: base
#: model:res.country,name:base.qa
msgid "Qatar"
-msgstr ""
+msgstr "قطر"
#. module: base
#: model:res.country,name:base.it
msgid "Italy"
-msgstr ""
+msgstr "ايطاليا"
#. module: base
#: view:ir.actions.todo:0
#: selection:ir.actions.todo,state:0
msgid "To Do"
-msgstr ""
+msgstr "في انتظار التنفيذ"
#. module: base
#: selection:base.language.install,lang:0
@@ -6269,29 +6380,29 @@ msgstr ""
#: field:res.partner,email:0
#: field:res.users,email:0
msgid "E-mail"
-msgstr ""
+msgstr "البريد الإلكتروني"
#. module: base
#: selection:ir.module.module,license:0
msgid "GPL-3 or later version"
-msgstr ""
+msgstr "GPL-3 أو أحدث"
#. module: base
#: field:workflow.activity,action:0
msgid "Python Action"
-msgstr ""
+msgstr "إجراء بايثون"
#. module: base
#: selection:base.language.install,lang:0
msgid "English (US)"
-msgstr ""
+msgstr "الإنجليزية (الولايات المتحدة)"
#. module: base
#: model:ir.actions.act_window,name:base.action_model_data
#: view:ir.model.data:0
#: model:ir.ui.menu,name:base.ir_model_data_menu
msgid "Object Identifiers"
-msgstr ""
+msgstr "مُعرِّفات الكائنات"
#. module: base
#: model:ir.actions.act_window,help:base.action_partner_title_partner
@@ -6303,7 +6414,7 @@ msgstr ""
#. module: base
#: view:base.language.export:0
msgid "To browse official translations, you can start with these links:"
-msgstr ""
+msgstr "لتصفّح الترجمات الرسمية، ابدأ بهذه الروابط:"
#. module: base
#: code:addons/base/ir/ir_model.py:484
@@ -6312,6 +6423,7 @@ msgid ""
"You can not read this document (%s) ! Be sure your user belongs to one of "
"these groups: %s."
msgstr ""
+"لا يمكنك قراءة هذا المستند (%s)! تأكد من أنك تنتمي لإحدى هذه المجموعات: %s."
#. module: base
#: view:res.bank:0
@@ -6320,12 +6432,12 @@ msgstr ""
#: view:res.users:0
#: field:res.users,address_id:0
msgid "Address"
-msgstr ""
+msgstr "العنوان"
#. module: base
#: field:ir.module.module,latest_version:0
msgid "Installed version"
-msgstr ""
+msgstr "النسخة المثبتة"
#. module: base
#: selection:base.language.install,lang:0
@@ -6335,34 +6447,34 @@ msgstr ""
#. module: base
#: model:res.country,name:base.mr
msgid "Mauritania"
-msgstr ""
+msgstr "موريتانيا"
#. module: base
#: model:ir.model,name:base.model_ir_translation
msgid "ir.translation"
-msgstr ""
+msgstr "ir.translation"
#. module: base
#: view:base.module.update:0
msgid "Module update result"
-msgstr ""
+msgstr "نتيجة تحديث الوحدة البرمجية"
#. module: base
#: view:workflow.activity:0
#: field:workflow.workitem,act_id:0
msgid "Activity"
-msgstr ""
+msgstr "النشاط"
#. module: base
#: view:res.partner:0
#: view:res.partner.address:0
msgid "Postal Address"
-msgstr ""
+msgstr "العنوان البريدي"
#. module: base
#: field:res.company,parent_id:0
msgid "Parent Company"
-msgstr ""
+msgstr "الشركة الأم"
#. module: base
#: selection:base.language.install,lang:0
@@ -6372,27 +6484,27 @@ msgstr ""
#. module: base
#: field:res.currency.rate,rate:0
msgid "Rate"
-msgstr ""
+msgstr "السعر"
#. module: base
#: model:res.country,name:base.cg
msgid "Congo"
-msgstr ""
+msgstr "الكونغو"
#. module: base
#: view:res.lang:0
msgid "Examples"
-msgstr ""
+msgstr "أمثلة"
#. module: base
#: field:ir.default,value:0
msgid "Default Value"
-msgstr ""
+msgstr "القيمة الافتراضية"
#. module: base
#: model:ir.ui.menu,name:base.menu_tools
msgid "Tools"
-msgstr ""
+msgstr "أدوات"
#. module: base
#: model:res.country,name:base.kn
@@ -6407,6 +6519,9 @@ msgid ""
"for the currency: %s \n"
"at the date: %s"
msgstr ""
+"لا يوجد سعر \n"
+"للعملة: %s \n"
+"في تاريخ: %s"
#. module: base
#: model:ir.actions.act_window,help:base.action_ui_view_custom
@@ -6414,13 +6529,15 @@ msgid ""
"Customized views are used when users reorganize the content of their "
"dashboard views (via web client)"
msgstr ""
+"تستخدم طرق العرض المخصصة عندما يقوم المستخدم بإعادة ترتيب محتويات لوحات "
+"المعلومات الخاصة به (أثناء استخدام واجهة الإنترنت)"
#. module: base
#: field:ir.model,name:0
#: field:ir.model.fields,model:0
#: field:ir.values,model:0
msgid "Object Name"
-msgstr ""
+msgstr "اسم الكائن"
#. module: base
#: help:ir.actions.server,srcmodel_id:0
@@ -6434,7 +6551,7 @@ msgstr ""
#: selection:ir.module.module,state:0
#: selection:ir.module.module.dependency,state:0
msgid "Not Installed"
-msgstr ""
+msgstr "غير مثبّت"
#. module: base
#: view:workflow.activity:0
@@ -6445,12 +6562,12 @@ msgstr ""
#. module: base
#: field:ir.ui.menu,icon:0
msgid "Icon"
-msgstr ""
+msgstr "الأيقونة"
#. module: base
#: help:ir.model.fields,model_id:0
msgid "The model this field belongs to"
-msgstr ""
+msgstr "النموذج الذي ينتمي إليه هذا الحقل"
#. module: base
#: model:res.country,name:base.mq
@@ -6468,17 +6585,17 @@ msgstr ""
#: model:ir.ui.menu,name:base.menu_resquest_ref
#: view:res.request:0
msgid "Requests"
-msgstr ""
+msgstr "الطلبات"
#. module: base
#: model:res.country,name:base.ye
msgid "Yemen"
-msgstr ""
+msgstr "اليمن"
#. module: base
#: selection:workflow.activity,split_mode:0
msgid "Or"
-msgstr ""
+msgstr "أو"
#. module: base
#: model:ir.actions.act_window,name:base.res_log_act_window
@@ -6489,12 +6606,12 @@ msgstr ""
#. module: base
#: model:res.country,name:base.al
msgid "Albania"
-msgstr ""
+msgstr "ألبانيا"
#. module: base
#: model:res.country,name:base.ws
msgid "Samoa"
-msgstr ""
+msgstr "ساموا"
#. module: base
#: code:addons/base/res/res_lang.py:161
@@ -6503,6 +6620,8 @@ msgid ""
"You cannot delete the language which is Active !\n"
"Please de-activate the language first."
msgstr ""
+"لا يمكنك حذف لغة نشطة!\n"
+"فضلاً عطّل اللغة أولاً."
#. module: base
#: view:base.language.install:0
@@ -6511,11 +6630,13 @@ msgid ""
"Please be patient, this operation may take a few minutes (depending on the "
"number of modules currently installed)..."
msgstr ""
+"فضلاً انتظر. يمكن أن تستغرق هذه العملية عدة دقائق (اعتماداً على عدد الوحدات "
+"البرمجية المثبّتة حالياً)..."
#. module: base
#: field:ir.ui.menu,child_id:0
msgid "Child IDs"
-msgstr ""
+msgstr "معرفات الفرعي"
#. module: base
#: code:addons/base/ir/ir_actions.py:713
@@ -6535,17 +6656,17 @@ msgstr ""
#: view:base.module.import:0
#: view:base.module.update:0
msgid "Open Modules"
-msgstr ""
+msgstr "فتح الوحدات البرمجية"
#. module: base
#: model:ir.actions.act_window,help:base.action_res_bank_form
msgid "Manage bank records you want to be used in the system."
-msgstr ""
+msgstr "التحكم في السجلات المصرفية التي تريد استخدامها في النظام."
#. module: base
#: view:base.module.import:0
msgid "Import module"
-msgstr ""
+msgstr "استيراد وحدة برمجية"
#. module: base
#: field:ir.actions.server,loop_action:0
@@ -6562,14 +6683,14 @@ msgstr ""
#. module: base
#: model:res.country,name:base.la
msgid "Laos"
-msgstr ""
+msgstr "لاوس"
#. module: base
#: selection:ir.actions.server,state:0
#: field:res.config.users,user_email:0
#: field:res.users,user_email:0
msgid "Email"
-msgstr ""
+msgstr "البريد الإلكتروني"
#. module: base
#: field:res.config.users,action_id:0
@@ -6595,12 +6716,12 @@ msgstr ""
#: model:ir.ui.menu,name:base.next_id_73
#: model:ir.ui.menu,name:base.reporting_menu
msgid "Reporting"
-msgstr ""
+msgstr "التقارير"
#. module: base
#: model:res.country,name:base.tg
msgid "Togo"
-msgstr ""
+msgstr "توغو"
#. module: base
#: selection:ir.module.module,license:0
@@ -6610,7 +6731,7 @@ msgstr ""
#. module: base
#: selection:workflow.activity,kind:0
msgid "Stop All"
-msgstr ""
+msgstr "إيقاف الكل"
#. module: base
#: code:addons/orm.py:412
@@ -6621,7 +6742,7 @@ msgstr ""
#. module: base
#: view:ir.model.data:0
msgid "Updatable"
-msgstr ""
+msgstr "قابل للتحديث"
#. module: base
#: view:res.lang:0
@@ -6636,22 +6757,22 @@ msgstr ""
#. module: base
#: field:workflow.transition,group_id:0
msgid "Group Required"
-msgstr ""
+msgstr "المجموعة مطلوبة"
#. module: base
#: view:ir.actions.configuration.wizard:0
msgid "Next Configuration Step"
-msgstr ""
+msgstr "خطوة الإعدادات التالية"
#. module: base
#: field:res.groups,comment:0
msgid "Comment"
-msgstr ""
+msgstr "تعليق"
#. module: base
#: model:res.country,name:base.ro
msgid "Romania"
-msgstr ""
+msgstr "رومانيا"
#. module: base
#: help:ir.cron,doall:0
@@ -6663,18 +6784,18 @@ msgstr ""
#. module: base
#: view:base.module.upgrade:0
msgid "Start update"
-msgstr ""
+msgstr "ابدأ التحديث"
#. module: base
#: code:addons/base/publisher_warranty/publisher_warranty.py:144
#, python-format
msgid "Contract validation error"
-msgstr ""
+msgstr "خطأ أثناء التأكد من صحة العقد"
#. module: base
#: field:res.country.state,name:0
msgid "State Name"
-msgstr ""
+msgstr "اسم المحافظة"
#. module: base
#: field:workflow.activity,join_mode:0
@@ -6685,13 +6806,13 @@ msgstr ""
#: field:res.config.users,context_tz:0
#: field:res.users,context_tz:0
msgid "Timezone"
-msgstr ""
+msgstr "المنطقة الزمنية"
#. module: base
#: model:ir.model,name:base.model_ir_actions_report_xml
#: selection:ir.ui.menu,action:0
msgid "ir.actions.report.xml"
-msgstr ""
+msgstr "ir.actions.report.xml"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
@@ -6701,12 +6822,12 @@ msgstr ""
#. module: base
#: model:ir.model,name:base.model_ir_ui_view
msgid "ir.ui.view"
-msgstr ""
+msgstr "ir.ui.view"
#. module: base
#: constraint:res.partner:0
msgid "Error ! You can not create recursive associated members."
-msgstr ""
+msgstr "خطأ! لا يمكنك إنشاء أعضاء ذوي ارتباطات متداخلة."
#. module: base
#: help:res.lang,code:0
@@ -6716,29 +6837,29 @@ msgstr ""
#. module: base
#: model:res.partner.category,name:base.res_partner_category_2
msgid "OpenERP Partners"
-msgstr ""
+msgstr "شركاء OpenERP"
#. module: base
#: model:ir.ui.menu,name:base.menu_hr_manager
msgid "HR Manager Dashboard"
-msgstr ""
+msgstr "لوحة معلومات مدير الموارد البشرية"
#. module: base
#: code:addons/base/module/module.py:253
#, python-format
msgid ""
"Unable to install module \"%s\" because an external dependency is not met: %s"
-msgstr ""
+msgstr "لم يمكن تثبيت الوحدة البرمجية \"%s\" بسبب عدم توفر متطلب خارجي: %s"
#. module: base
#: view:ir.module.module:0
msgid "Search modules"
-msgstr ""
+msgstr "بحث في الوحدات البرمجية"
#. module: base
#: model:res.country,name:base.by
msgid "Belarus"
-msgstr ""
+msgstr "روسيا البيضاء"
#. module: base
#: field:ir.actions.act_window,name:0
@@ -6748,7 +6869,7 @@ msgstr ""
#: field:ir.actions.url,name:0
#: field:ir.filters,name:0
msgid "Action Name"
-msgstr ""
+msgstr "اسم الإجراء"
#. module: base
#: model:ir.actions.act_window,help:base.action_res_users
@@ -6758,28 +6879,31 @@ msgid ""
"not connect to the system. You can assign them groups in order to give them "
"specific access to the applications they need to use in the system."
msgstr ""
+"إنشاء وإدارة مستخدمي النظام. يمكن تعطيل مستخدم في حالة عدم استخدامه للنظام، "
+"أو عدم رغبتك في استخدامه للنظام، لمدة محدودة. يمكن تعيين مجموعات للمستخدمين "
+"لمنحهم صلاحيات محددة للتطبيقات التي يحتاجونها."
#. module: base
#: selection:res.request,priority:0
msgid "Normal"
-msgstr ""
+msgstr "طبيعي"
#. module: base
#: field:res.bank,street2:0
#: field:res.partner.address,street2:0
msgid "Street2"
-msgstr ""
+msgstr "الشارع الثاني"
#. module: base
#: model:ir.actions.act_window,name:base.action_view_base_module_update
msgid "Module Update"
-msgstr ""
+msgstr "تحديث قائمة الوحدات البرمجية"
#. module: base
#: code:addons/base/module/wizard/base_module_upgrade.py:95
#, python-format
msgid "Following modules are not installed or unknown: %s"
-msgstr ""
+msgstr "الوحدات البرمجية التالية غير مثبّتة أو غير معروفة: %s"
#. module: base
#: view:ir.cron:0
@@ -6793,42 +6917,42 @@ msgstr ""
#: view:res.users:0
#: field:res.widget.user,user_id:0
msgid "User"
-msgstr ""
+msgstr "المستخدم"
#. module: base
#: model:res.country,name:base.pr
msgid "Puerto Rico"
-msgstr ""
+msgstr "بورتوريكو"
#. module: base
#: view:ir.actions.act_window:0
msgid "Open Window"
-msgstr ""
+msgstr "فتح نافذة"
#. module: base
#: field:ir.actions.act_window,auto_search:0
msgid "Auto Search"
-msgstr ""
+msgstr "بحث تلقائي"
#. module: base
#: field:ir.actions.act_window,filter:0
msgid "Filter"
-msgstr ""
+msgstr "مرشح الفرز"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Ms."
-msgstr ""
+msgstr "السيدة"
#. module: base
#: model:res.country,name:base.ch
msgid "Switzerland"
-msgstr ""
+msgstr "سويسرا"
#. module: base
#: model:res.country,name:base.gd
msgid "Grenada"
-msgstr ""
+msgstr "غرناطة"
#. module: base
#: model:res.country,name:base.wf
@@ -6838,23 +6962,23 @@ msgstr ""
#. module: base
#: selection:server.action.create,init,type:0
msgid "Open Report"
-msgstr ""
+msgstr "فتح التقرير"
#. module: base
#: field:res.currency,rounding:0
msgid "Rounding factor"
-msgstr ""
+msgstr "معامل التقريب"
#. module: base
#: view:base.language.install:0
msgid "Load"
-msgstr ""
+msgstr "تحميل"
#. module: base
#: help:res.config.users,name:0
#: help:res.users,name:0
msgid "The new user's real name, used for searching and most listings"
-msgstr ""
+msgstr "الاسم الحقيقي للمستخدم الجديد. يستخدم في البحث والعرض."
#. module: base
#: code:addons/osv.py:154
@@ -6866,46 +6990,46 @@ msgstr ""
#. module: base
#: model:ir.model,name:base.model_ir_wizard_screen
msgid "ir.wizard.screen"
-msgstr ""
+msgstr "ir.wizard.screen"
#. module: base
#: code:addons/base/ir/ir_model.py:223
#, python-format
msgid "Size of the field can never be less than 1 !"
-msgstr ""
+msgstr "لا يمكن أن يكون حجم الحقل أقل من 1 !"
#. module: base
#: model:res.country,name:base.so
msgid "Somalia"
-msgstr ""
+msgstr "الصّومال"
#. module: base
#: selection:publisher_warranty.contract,state:0
msgid "Terminated"
-msgstr ""
+msgstr "تمّ الإنهاء"
#. module: base
#: model:res.partner.category,name:base.res_partner_category_13
msgid "Important customers"
-msgstr ""
+msgstr "العملاء المهمّون"
#. module: base
#: view:res.lang:0
msgid "Update Terms"
-msgstr ""
+msgstr "تحديث المصطلحات"
#. module: base
#: field:partner.sms.send,mobile_to:0
#: field:res.request,act_to:0
#: field:res.request.history,act_to:0
msgid "To"
-msgstr ""
+msgstr "إلى"
#. module: base
#: view:ir.cron:0
#: field:ir.cron,args:0
msgid "Arguments"
-msgstr ""
+msgstr "المحددات"
#. module: base
#: code:addons/orm.py:716
@@ -6916,12 +7040,12 @@ msgstr ""
#. module: base
#: selection:ir.module.module,license:0
msgid "GPL Version 2"
-msgstr ""
+msgstr "GPL الإصدار الثاني"
#. module: base
#: selection:ir.module.module,license:0
msgid "GPL Version 3"
-msgstr ""
+msgstr "GPL الإصدار الثالث"
#. module: base
#: code:addons/orm.py:836
@@ -6946,7 +7070,7 @@ msgstr ""
#: field:res.partner.address,is_customer_add:0
#: model:res.partner.category,name:base.res_partner_category_0
msgid "Customer"
-msgstr ""
+msgstr "العميل"
#. module: base
#: selection:base.language.install,lang:0
@@ -6956,7 +7080,7 @@ msgstr ""
#. module: base
#: field:ir.module.module,shortdesc:0
msgid "Short Description"
-msgstr ""
+msgstr "وصف قصير"
#. module: base
#: field:ir.actions.act_window,context:0
@@ -6972,7 +7096,7 @@ msgstr ""
#. module: base
#: field:ir.cron,nextcall:0
msgid "Next Execution Date"
-msgstr ""
+msgstr "تاريخ التنفيذ القادم"
#. module: base
#: help:multi_company.default,field_id:0
@@ -6982,12 +7106,12 @@ msgstr ""
#. module: base
#: field:res.request.history,date_sent:0
msgid "Date sent"
-msgstr ""
+msgstr "تاريخ الإرسال"
#. module: base
#: view:ir.sequence:0
msgid "Month: %(month)s"
-msgstr ""
+msgstr "الشهر: %(month)s"
#. module: base
#: field:ir.actions.act_window.view,sequence:0
@@ -7004,39 +7128,39 @@ msgstr ""
#: field:res.widget.user,sequence:0
#: field:wizard.ir.model.menu.create.line,sequence:0
msgid "Sequence"
-msgstr ""
+msgstr "مسلسل"
#. module: base
#: model:res.country,name:base.tn
msgid "Tunisia"
-msgstr ""
+msgstr "تونس"
#. module: base
#: model:ir.ui.menu,name:base.menu_mrp_root
msgid "Manufacturing"
-msgstr ""
+msgstr "التصنيع"
#. module: base
#: model:res.country,name:base.km
msgid "Comoros"
-msgstr ""
+msgstr "جزر القمر"
#. module: base
#: model:ir.actions.act_window,name:base.action_server_action
#: view:ir.actions.server:0
#: model:ir.ui.menu,name:base.menu_server_action
msgid "Server Actions"
-msgstr ""
+msgstr "إجراءات الخادم"
#. module: base
#: view:ir.module.module:0
msgid "Cancel Install"
-msgstr ""
+msgstr "إلغاء التثبيت"
#. module: base
#: field:ir.model.fields,selection:0
msgid "Selection Options"
-msgstr ""
+msgstr "خيارات الاختيار"
#. module: base
#: field:res.partner.category,parent_right:0
@@ -7046,19 +7170,19 @@ msgstr ""
#. module: base
#: view:res.lang:0
msgid "Legends for Date and Time Formats"
-msgstr ""
+msgstr "تفسير تنسيقات الوقت والتاريخ"
#. module: base
#: selection:ir.actions.server,state:0
msgid "Copy Object"
-msgstr ""
+msgstr "نسخ الكائن"
#. module: base
#: code:addons/base/res/res_user.py:581
#, python-format
msgid ""
"Group(s) cannot be deleted, because some user(s) still belong to them: %s !"
-msgstr ""
+msgstr "لا يمكن حذف مجموعة ما زالت تحتوي على مستخدمين: %s !"
#. module: base
#: model:ir.actions.act_window,name:base.action_country_state
@@ -7070,7 +7194,7 @@ msgstr ""
#: view:ir.model:0
#: view:res.groups:0
msgid "Access Rules"
-msgstr ""
+msgstr "قواعد الصلاحيات"
#. module: base
#: field:ir.default,ref_table:0
@@ -7103,7 +7227,7 @@ msgstr ""
#: field:res.request.link,object:0
#: field:workflow.triggers,model:0
msgid "Object"
-msgstr ""
+msgstr "كائن"
#. module: base
#: code:addons/osv.py:151
@@ -7117,24 +7241,24 @@ msgstr ""
#. module: base
#: model:ir.model,name:base.model_ir_default
msgid "ir.default"
-msgstr ""
+msgstr "ir.default"
#. module: base
#: view:ir.sequence:0
msgid "Minute: %(min)s"
-msgstr ""
+msgstr "الدقيقة: %(min)s"
#. module: base
#: view:base.update.translations:0
#: model:ir.actions.act_window,name:base.action_wizard_update_translations
#: model:ir.ui.menu,name:base.menu_wizard_update_translations
msgid "Synchronize Translations"
-msgstr ""
+msgstr "تحديث الترجمات"
#. module: base
#: model:ir.ui.menu,name:base.next_id_10
msgid "Scheduler"
-msgstr ""
+msgstr "المُجدوِل"
#. module: base
#: help:ir.cron,numbercall:0
@@ -7149,7 +7273,7 @@ msgstr ""
msgid ""
"Changing the type of a column is not yet supported. Please drop it and "
"create it again!"
-msgstr ""
+msgstr "تغيير نوع العمود غير مدعوم بعد. فضلاً احذف العمود ثم أنشئه مرة أخرى!"
#. module: base
#: field:ir.ui.view_sc,user_id:0
@@ -7160,12 +7284,12 @@ msgstr ""
#: code:addons/base/res/res_user.py:580
#, python-format
msgid "Warning !"
-msgstr ""
+msgstr "تحذير !"
#. module: base
#: model:res.widget,title:base.google_maps_widget
msgid "Google Maps"
-msgstr ""
+msgstr "خرائط Google"
#. module: base
#: model:ir.ui.menu,name:base.menu_base_config
@@ -7176,7 +7300,7 @@ msgstr ""
#: model:ir.ui.menu,name:base.menu_marketing_config_root
#: view:res.company:0
msgid "Configuration"
-msgstr ""
+msgstr "الإعدادات"
#. module: base
#: model:ir.model,name:base.model_publisher_warranty_contract_wizard
@@ -7191,17 +7315,17 @@ msgstr ""
#. module: base
#: field:publisher_warranty.contract,date_start:0
msgid "Starting Date"
-msgstr ""
+msgstr "تاريخ الابتداء"
#. module: base
#: help:res.partner,website:0
msgid "Website of Partner"
-msgstr ""
+msgstr "الموقع الإلكتروني للشريك"
#. module: base
#: model:res.partner.category,name:base.res_partner_category_5
msgid "Gold Partner"
-msgstr ""
+msgstr "شريك ذهبي"
#. module: base
#: model:ir.model,name:base.model_res_partner
@@ -7212,28 +7336,28 @@ msgstr ""
#: selection:res.partner.title,domain:0
#: model:res.request.link,name:base.req_link_partner
msgid "Partner"
-msgstr ""
+msgstr "الشريك"
#. module: base
#: model:res.country,name:base.tr
msgid "Turkey"
-msgstr ""
+msgstr "تركيّا"
#. module: base
#: model:res.country,name:base.fk
msgid "Falkland Islands"
-msgstr ""
+msgstr "جزر الفالكلاند"
#. module: base
#: model:res.country,name:base.lb
msgid "Lebanon"
-msgstr ""
+msgstr "لبنان"
#. module: base
#: view:ir.actions.report.xml:0
#: field:ir.actions.report.xml,report_type:0
msgid "Report Type"
-msgstr ""
+msgstr "نوع التقرير"
#. module: base
#: field:ir.actions.todo,state:0
@@ -7249,7 +7373,7 @@ msgstr ""
#: field:workflow.instance,state:0
#: field:workflow.workitem,state:0
msgid "State"
-msgstr ""
+msgstr "المحافظة"
#. module: base
#: selection:base.language.install,lang:0
@@ -7259,7 +7383,7 @@ msgstr ""
#. module: base
#: model:res.country,name:base.no
msgid "Norway"
-msgstr ""
+msgstr "النرويج"
#. module: base
#: view:res.lang:0
@@ -7270,17 +7394,17 @@ msgstr ""
#: view:base.language.install:0
#: model:ir.ui.menu,name:base.menu_view_base_language_install
msgid "Load an Official Translation"
-msgstr ""
+msgstr "تحميل ترجمة رسمية"
#. module: base
#: view:res.currency:0
msgid "Miscelleanous"
-msgstr ""
+msgstr "متفرقات"
#. module: base
#: model:res.partner.category,name:base.res_partner_category_10
msgid "Open Source Service Company"
-msgstr ""
+msgstr "شركة خدمات مفتوحة المصدر"
#. module: base
#: model:res.country,name:base.kg
@@ -7290,12 +7414,12 @@ msgstr ""
#. module: base
#: selection:res.request,state:0
msgid "waiting"
-msgstr ""
+msgstr "جاري الانتظار"
#. module: base
#: field:ir.actions.report.xml,report_file:0
msgid "Report file"
-msgstr ""
+msgstr "ملف التقرير"
#. module: base
#: model:ir.model,name:base.model_workflow_triggers
@@ -7311,7 +7435,7 @@ msgstr ""
#. module: base
#: view:ir.attachment:0
msgid "Created"
-msgstr ""
+msgstr "تمّ الإنشاء"
#. module: base
#: help:ir.actions.wizard,multi:0
@@ -7319,11 +7443,13 @@ msgid ""
"If set to true, the wizard will not be displayed on the right toolbar of a "
"form view."
msgstr ""
+"في حالة التنشيط، لن يظهر المعالج في شريط الأدوات على يمين الشاشة عند استخدام "
+"طريقة عرض النموذج."
#. module: base
#: view:base.language.import:0
msgid "- type,name,res_id,src,value"
-msgstr ""
+msgstr "- type,name,res_id,src,value"
#. module: base
#: model:res.country,name:base.hm
@@ -7338,12 +7464,12 @@ msgstr ""
#. module: base
#: selection:ir.translation,type:0
msgid "Selection"
-msgstr ""
+msgstr "الاختيار"
#. module: base
#: field:res.company,rml_header1:0
msgid "Report Header"
-msgstr ""
+msgstr "رأس التقرير"
#. module: base
#: field:ir.actions.act_window,type:0
@@ -7356,7 +7482,7 @@ msgstr ""
#: field:ir.actions.url,type:0
#: field:ir.actions.wizard,type:0
msgid "Action Type"
-msgstr ""
+msgstr "نوع الإجراء"
#. module: base
#: code:addons/base/module/module.py:268
@@ -7365,13 +7491,15 @@ msgid ""
"You try to install module '%s' that depends on module '%s'.\n"
"But the latter module is not available in your system."
msgstr ""
+"أنت تحاول تثبيت الوحدة البرمجية '%s' والتي تتطلب الوحدة البرمجية '%s'.\n"
+"ولكن الأخيرة غير متاحة لهذا النظام."
#. module: base
#: view:base.language.import:0
#: model:ir.actions.act_window,name:base.action_view_base_import_language
#: model:ir.ui.menu,name:base.menu_view_base_import_language
msgid "Import Translation"
-msgstr ""
+msgstr "استيراد ترجمة"
#. module: base
#: field:res.partner.bank.type,field_ids:0
@@ -7382,47 +7510,47 @@ msgstr ""
#: view:ir.module.module:0
#: field:ir.module.module,category_id:0
msgid "Category"
-msgstr ""
+msgstr "الفئة"
#. module: base
#: view:ir.attachment:0
#: selection:ir.attachment,type:0
#: selection:ir.property,type:0
msgid "Binary"
-msgstr ""
+msgstr "العد الثنائي"
#. module: base
#: field:ir.actions.server,sms:0
#: selection:ir.actions.server,state:0
msgid "SMS"
-msgstr ""
+msgstr "رسالة قصيرة (SMS)"
#. module: base
#: model:res.country,name:base.cr
msgid "Costa Rica"
-msgstr ""
+msgstr "كوستاريكا"
#. module: base
#: view:workflow.activity:0
msgid "Conditions"
-msgstr ""
+msgstr "الشروط"
#. module: base
#: model:ir.actions.act_window,name:base.action_partner_other_form
msgid "Other Partners"
-msgstr ""
+msgstr "شركاء آخرون"
#. module: base
#: model:ir.actions.act_window,name:base.action_currency_form
#: model:ir.ui.menu,name:base.menu_action_currency_form
#: view:res.currency:0
msgid "Currencies"
-msgstr ""
+msgstr "العملات"
#. module: base
#: sql_constraint:res.groups:0
msgid "The name of the group must be unique !"
-msgstr ""
+msgstr "يجب أن يكون اسم المجموعة فريداً!"
#. module: base
#: view:ir.sequence:0
@@ -7432,27 +7560,27 @@ msgstr ""
#. module: base
#: help:res.partner.address,active:0
msgid "Uncheck the active field to hide the contact."
-msgstr ""
+msgstr "أزل اختيار حقل 'نشط' لإخفاء جهة الاتصال."
#. module: base
#: model:ir.model,name:base.model_res_widget_wizard
msgid "Add a widget for User"
-msgstr ""
+msgstr "أضف عنصر واجهة مستخدم للمستخدم"
#. module: base
#: model:res.country,name:base.dk
msgid "Denmark"
-msgstr ""
+msgstr "الدنمارك"
#. module: base
#: field:res.country,code:0
msgid "Country Code"
-msgstr ""
+msgstr "رمز الدولة"
#. module: base
#: model:ir.model,name:base.model_workflow_instance
msgid "workflow.instance"
-msgstr ""
+msgstr "workflow.instance"
#. module: base
#: code:addons/orm.py:278
@@ -7483,21 +7611,23 @@ msgid ""
"Only specify a value if you want to change the user password. This user will "
"have to logout and login again!"
msgstr ""
+"حدد قيمة إذا كنت تريد تغيير كلمة المرور للمستخدم فقط. سيضطر المستخدم لتسجيل "
+"الخروج ثم تسجيل الدخول مجدداً!"
#. module: base
#: model:res.partner.title,name:base.res_partner_title_madam
msgid "Madam"
-msgstr ""
+msgstr "سيدة"
#. module: base
#: model:res.country,name:base.ee
msgid "Estonia"
-msgstr ""
+msgstr "استونيا"
#. module: base
#: model:ir.ui.menu,name:base.dashboard
msgid "Dashboards"
-msgstr ""
+msgstr "لوحات المعلومات"
#. module: base
#: help:ir.attachment,type:0
@@ -7508,12 +7638,12 @@ msgstr ""
#: field:res.config.users,new_password:0
#: field:res.users,new_password:0
msgid "Change password"
-msgstr ""
+msgstr "تغيير كلمة المرور"
#. module: base
#: model:res.country,name:base.nl
msgid "Netherlands"
-msgstr ""
+msgstr "هولندا"
#. module: base
#: model:ir.ui.menu,name:base.next_id_4
@@ -7523,12 +7653,12 @@ msgstr ""
#. module: base
#: view:res.company:0
msgid "Your Logo - Use a size of about 450x150 pixels."
-msgstr ""
+msgstr "الشعار - استخدم صورة بحجم 150x450 نقطة"
#. module: base
#: model:ir.model,name:base.model_ir_values
msgid "ir.values"
-msgstr ""
+msgstr "ir.values"
#. module: base
#: selection:base.language.install,lang:0
@@ -7543,17 +7673,20 @@ msgid ""
"button \"Schedule for Installation\" from the form view, then click on "
"\"Apply Scheduled Upgrades\" to migrate your system."
msgstr ""
+"يمكنك تثبيت وحدات برمجية جديدة لتنشيط مزايا وقوائم وتقارير وبيانات جديدة في "
+"نسختك من نظام OpenERP. لتثبيت وحدات برمجية، انقر زر \"اختر للتثبيت\" من "
+"طريقة عرض النموذج، ثم انقر \"نفّذ الترقيات المُعدّة\"."
#. module: base
#: model:ir.ui.menu,name:base.menu_emails
#: model:ir.ui.menu,name:base.menu_mail_gateway
msgid "Emails"
-msgstr ""
+msgstr "الرسائل الإلكترونية"
#. module: base
#: model:res.country,name:base.cd
msgid "Congo, The Democratic Republic of the"
-msgstr ""
+msgstr "جمهورية الكونغو الديمقراطية"
#. module: base
#: selection:base.language.install,lang:0
@@ -7565,23 +7698,23 @@ msgstr ""
#: field:res.request,body:0
#: field:res.request.history,req_id:0
msgid "Request"
-msgstr ""
+msgstr "اطلب"
#. module: base
#: model:res.country,name:base.jp
msgid "Japan"
-msgstr ""
+msgstr "اليابان"
#. module: base
#: field:ir.cron,numbercall:0
msgid "Number of Calls"
-msgstr ""
+msgstr "عدد المكالمات"
#. module: base
#: view:base.module.upgrade:0
#: field:base.module.upgrade,module_info:0
msgid "Modules to update"
-msgstr ""
+msgstr "الوحدات البرمجية في انتظار التحديث"
#. module: base
#: help:ir.actions.server,sequence:0
@@ -7598,7 +7731,7 @@ msgstr ""
#. module: base
#: model:res.country,name:base.gr
msgid "Greece"
-msgstr ""
+msgstr "اليونان"
#. module: base
#: field:res.request,trigger_date:0
@@ -7613,7 +7746,7 @@ msgstr ""
#. module: base
#: field:base.language.install,overwrite:0
msgid "Overwrite Existing Terms"
-msgstr ""
+msgstr "استبدل المصطلحات الموجودة"
#. module: base
#: help:ir.actions.server,code:0
@@ -7623,17 +7756,17 @@ msgstr ""
#. module: base
#: sql_constraint:res.country:0
msgid "The code of the country must be unique !"
-msgstr ""
+msgstr "يجب أن يكون رمز الدولة فريداً!"
#. module: base
#: selection:ir.module.module.dependency,state:0
msgid "Uninstallable"
-msgstr ""
+msgstr "لا يمكن التثبيت"
#. module: base
#: view:res.partner.category:0
msgid "Partner Category"
-msgstr ""
+msgstr "فئة الشريك"
#. module: base
#: view:ir.actions.server:0
@@ -7644,29 +7777,29 @@ msgstr ""
#. module: base
#: model:ir.model,name:base.model_base_module_update
msgid "Update Module"
-msgstr ""
+msgstr "تحديث الوحدة البرمجية"
#. module: base
#: view:ir.model.fields:0
#: field:ir.model.fields,translate:0
msgid "Translate"
-msgstr ""
+msgstr "ترجِم"
#. module: base
#: field:res.request.history,body:0
msgid "Body"
-msgstr ""
+msgstr "المتن"
#. module: base
#: view:partner.wizard.spam:0
msgid "Send Email"
-msgstr ""
+msgstr "إرسال بريد إلكتروني"
#. module: base
#: field:res.config.users,menu_id:0
#: field:res.users,menu_id:0
msgid "Menu Action"
-msgstr ""
+msgstr "إجراء القائمة"
#. module: base
#: help:ir.model.fields,selection:0
@@ -7679,7 +7812,7 @@ msgstr ""
#. module: base
#: selection:base.language.export,state:0
msgid "choose"
-msgstr ""
+msgstr "اختر"
#. module: base
#: help:ir.model,osv_memory:0
@@ -7699,12 +7832,12 @@ msgstr ""
#: model:ir.ui.menu,name:base.menu_procurement_management_supplier_name
#: view:res.partner:0
msgid "Suppliers"
-msgstr ""
+msgstr "المورّدون"
#. module: base
#: view:publisher_warranty.contract.wizard:0
msgid "Register"
-msgstr ""
+msgstr "تسجيل"
#. module: base
#: field:res.request,ref_doc2:0
@@ -7719,29 +7852,29 @@ msgstr ""
#. module: base
#: model:res.country,name:base.ga
msgid "Gabon"
-msgstr ""
+msgstr "الجابون"
#. module: base
#: model:ir.model,name:base.model_ir_model_data
msgid "ir.model.data"
-msgstr ""
+msgstr "ir.model.data"
#. module: base
#: view:ir.model:0
#: view:ir.rule:0
#: view:res.groups:0
msgid "Access Rights"
-msgstr ""
+msgstr "الصلاحيات"
#. module: base
#: model:res.country,name:base.gl
msgid "Greenland"
-msgstr ""
+msgstr "جرين ﻻند"
#. module: base
#: field:res.partner.bank,acc_number:0
msgid "Account Number"
-msgstr ""
+msgstr "رقم الحساب"
#. module: base
#: view:res.lang:0
@@ -7756,7 +7889,7 @@ msgstr ""
#. module: base
#: model:res.country,name:base.cy
msgid "Cyprus"
-msgstr ""
+msgstr "قبرص"
#. module: base
#: view:base.module.import:0
@@ -7765,35 +7898,37 @@ msgid ""
"loading a new language it becomes available as default interface language "
"for users and partners."
msgstr ""
+"يساعدك هذا المعالج على إضافة لغة جديدة لنسختك من نظام OpenERP. بعد تحميل لغة "
+"جديدة ستصبح متاحة كلغة افتراضية للمستخدمين والشركاء."
#. module: base
#: field:ir.actions.server,subject:0
#: field:partner.wizard.spam,subject:0
#: field:res.request,name:0
msgid "Subject"
-msgstr ""
+msgstr "الموضوع"
#. module: base
#: field:res.request,act_from:0
#: field:res.request.history,act_from:0
msgid "From"
-msgstr ""
+msgstr "مِن"
#. module: base
#: view:res.users:0
msgid "Preferences"
-msgstr ""
+msgstr "التفضيلات"
#. module: base
#: model:res.partner.category,name:base.res_partner_category_consumers0
msgid "Consumers"
-msgstr ""
+msgstr "المستهلكون"
#. module: base
#: view:res.config:0
#: wizard_button:server.action.create,init,step_1:0
msgid "Next"
-msgstr ""
+msgstr "التالي"
#. module: base
#: help:ir.cron,function:0
@@ -7813,12 +7948,12 @@ msgstr ""
#. module: base
#: view:ir.actions.report.xml:0
msgid "Miscellaneous"
-msgstr ""
+msgstr "متفرقات"
#. module: base
#: model:res.country,name:base.cn
msgid "China"
-msgstr ""
+msgstr "الصّين"
#. module: base
#: code:addons/base/res/res_user.py:516
@@ -7831,12 +7966,12 @@ msgstr ""
#. module: base
#: model:res.country,name:base.eh
msgid "Western Sahara"
-msgstr ""
+msgstr "الصحراء الغربية"
#. module: base
#: model:ir.model,name:base.model_workflow
msgid "workflow"
-msgstr ""
+msgstr "مسار عمل"
#. module: base
#: model:ir.actions.act_window,help:base.action_res_company_form
@@ -7844,11 +7979,13 @@ msgid ""
"Create and manage the companies that will be managed by OpenERP from here. "
"Shops or subsidiaries can be created and maintained from here."
msgstr ""
+"أنشئ وتحكم في الشركات التي تريد إدارتها باستخدام OpenERP من هنا. يمكنك إنشاء "
+"متاجر وشركات فرعية من هنا."
#. module: base
#: model:res.country,name:base.id
msgid "Indonesia"
-msgstr ""
+msgstr "إندونيسيا"
#. module: base
#: view:base.update.translations:0
@@ -7857,6 +7994,8 @@ msgid ""
"you can then add translations manually or perform a complete export (as a "
"template for a new language example)."
msgstr ""
+"يقوم هذا المعالج باكتشاف المصطلحات الجديدة في التطبيق لترجمتها، ومن ثَمّ "
+"يمكنك إضافة الترجمات يدوياً، أو تصدير الترجمة كاملة (كقالب للغة جديدة)."
#. module: base
#: help:multi_company.default,expression:0
@@ -7868,22 +8007,22 @@ msgstr ""
#. module: base
#: model:res.country,name:base.bg
msgid "Bulgaria"
-msgstr ""
+msgstr "بلغاريا"
#. module: base
#: view:publisher_warranty.contract.wizard:0
msgid "Publisher warranty contract successfully registered!"
-msgstr ""
+msgstr "تمّ تسجيل عقد ضمان الناشر بنجاح!"
#. module: base
#: model:res.country,name:base.ao
msgid "Angola"
-msgstr ""
+msgstr "أنجولا"
#. module: base
#: model:res.country,name:base.tf
msgid "French Southern Territories"
-msgstr ""
+msgstr "الأقاليم الشمالية الفرنسية"
#. module: base
#: model:ir.model,name:base.model_res_currency
@@ -7893,12 +8032,12 @@ msgstr ""
#: field:res.currency,name:0
#: field:res.currency.rate,currency_id:0
msgid "Currency"
-msgstr ""
+msgstr "العملة"
#. module: base
#: field:res.partner.canal,name:0
msgid "Channel Name"
-msgstr ""
+msgstr "اسم القناة"
#. module: base
#: view:res.lang:0
@@ -7914,27 +8053,27 @@ msgstr ""
#: field:ir.values,res_id:0
#: field:res.log,res_id:0
msgid "Object ID"
-msgstr ""
+msgstr "معرف الكائن"
#. module: base
#: view:res.company:0
msgid "Landscape"
-msgstr ""
+msgstr "عرضيّ"
#. module: base
#: model:ir.ui.menu,name:base.menu_administration
msgid "Administration"
-msgstr ""
+msgstr "الإدارة"
#. module: base
#: view:base.module.update:0
msgid "Click on Update below to start the process..."
-msgstr ""
+msgstr "انقر على \"تحديث\" بالأسفل لبدء العملية..."
#. module: base
#: model:res.country,name:base.ir
msgid "Iran"
-msgstr ""
+msgstr "إيران"
#. module: base
#: model:ir.actions.act_window,name:base.res_widget_user_act_window
@@ -7952,23 +8091,23 @@ msgstr ""
#: field:ir.ui.menu,icon_pict:0
#: field:publisher_warranty.contract.wizard,state:0
msgid "unknown"
-msgstr ""
+msgstr "غير معروف"
#. module: base
#: field:res.currency,symbol:0
msgid "Symbol"
-msgstr ""
+msgstr "الرمز"
#. module: base
#: help:res.config.users,login:0
#: help:res.users,login:0
msgid "Used to log into the system"
-msgstr ""
+msgstr "يستخدم لتسجيل الدخول إلى النظام"
#. module: base
#: view:base.update.translations:0
msgid "Synchronize Translation"
-msgstr ""
+msgstr "تحديث نسخ الترجمة"
#. module: base
#: field:ir.ui.view_sc,res_id:0
@@ -7978,80 +8117,80 @@ msgstr ""
#. module: base
#: model:res.country,name:base.ki
msgid "Kiribati"
-msgstr ""
+msgstr "كيريباتي"
#. module: base
#: model:res.country,name:base.iq
msgid "Iraq"
-msgstr ""
+msgstr "العراق"
#. module: base
#: model:ir.ui.menu,name:base.menu_association
msgid "Association"
-msgstr ""
+msgstr "الارتباط"
#. module: base
#: model:res.country,name:base.cl
msgid "Chile"
-msgstr ""
+msgstr "تشيلي"
#. module: base
#: model:ir.ui.menu,name:base.menu_address_book
#: model:ir.ui.menu,name:base.menu_config_address_book
#: model:ir.ui.menu,name:base.menu_procurement_management_supplier
msgid "Address Book"
-msgstr ""
+msgstr "سجل العناوين"
#. module: base
#: model:ir.model,name:base.model_ir_sequence_type
msgid "ir.sequence.type"
-msgstr ""
+msgstr "ir.sequence.type"
#. module: base
#: selection:base.language.export,format:0
msgid "CSV File"
-msgstr ""
+msgstr "ملف CSV"
#. module: base
#: field:res.company,account_no:0
msgid "Account No."
-msgstr ""
+msgstr "رقم الحساب"
#. module: base
#: code:addons/base/res/res_lang.py:157
#, python-format
msgid "Base Language 'en_US' can not be deleted !"
-msgstr ""
+msgstr "لا يمكن حذف اللغة الأساسية 'en_US' !"
#. module: base
#: selection:ir.model,state:0
msgid "Base Object"
-msgstr ""
+msgstr "الكائن الأساسي"
#. module: base
#: report:ir.module.reference.graph:0
msgid "Dependencies :"
-msgstr ""
+msgstr "المتطلبات:"
#. module: base
#: field:ir.model.fields,field_description:0
msgid "Field Label"
-msgstr ""
+msgstr "تسمية الحقل"
#. module: base
#: model:res.country,name:base.dj
msgid "Djibouti"
-msgstr ""
+msgstr "جيبوتي"
#. module: base
#: field:ir.translation,value:0
msgid "Translation Value"
-msgstr ""
+msgstr "قيمة الترجمة"
#. module: base
#: model:res.country,name:base.ag
msgid "Antigua and Barbuda"
-msgstr ""
+msgstr "أنتيغا وباربودا"
#. module: base
#: code:addons/orm.py:3166
@@ -8060,11 +8199,13 @@ msgid ""
"Operation prohibited by access rules, or performed on an already deleted "
"document (Operation: %s, Document type: %s)."
msgstr ""
+"العملية محظورة حسب قواعد الصلاحيات، أن أنها نُفِّذت على مستند قد تمّ حذفه "
+"(العملية: %s، نوع المستند: %s)."
#. module: base
#: model:res.country,name:base.zr
msgid "Zaire"
-msgstr ""
+msgstr "زائير"
#. module: base
#: field:ir.model.data,res_id:0
@@ -8072,38 +8213,38 @@ msgstr ""
#: field:workflow.instance,res_id:0
#: field:workflow.triggers,res_id:0
msgid "Resource ID"
-msgstr ""
+msgstr "معرف المصدر"
#. module: base
#: view:ir.cron:0
#: field:ir.model,info:0
msgid "Information"
-msgstr ""
+msgstr "المعلومات"
#. module: base
#: view:res.widget.user:0
msgid "User Widgets"
-msgstr ""
+msgstr "كائنات واجهة المستخدم الخاصة بالمستخدم"
#. module: base
#: view:base.module.update:0
msgid "Update Module List"
-msgstr ""
+msgstr "تحديث قائمة الوحدات البرمجية"
#. module: base
#: selection:res.partner.address,type:0
msgid "Other"
-msgstr ""
+msgstr "غير ذلك"
#. module: base
#: view:res.request:0
msgid "Reply"
-msgstr ""
+msgstr "رد"
#. module: base
#: selection:base.language.install,lang:0
msgid "Turkish / Türkçe"
-msgstr ""
+msgstr "التركية / Türkçe"
#. module: base
#: model:ir.actions.act_window,name:base.action_workflow_activity_form
@@ -8111,12 +8252,12 @@ msgstr ""
#: view:workflow:0
#: field:workflow,activities:0
msgid "Activities"
-msgstr ""
+msgstr "الأنشطة"
#. module: base
#: field:ir.actions.act_window,auto_refresh:0
msgid "Auto-Refresh"
-msgstr ""
+msgstr "تحديث تلقائي"
#. module: base
#: code:addons/base/ir/ir_model.py:62
@@ -8127,18 +8268,18 @@ msgstr ""
#. module: base
#: selection:ir.ui.view,type:0
msgid "Diagram"
-msgstr ""
+msgstr "الرسم التخطيطي"
#. module: base
#: help:multi_company.default,name:0
msgid "Name it to easily find a record"
-msgstr ""
+msgstr "قم بتسميته لكي تجد السجل بسهولة"
#. module: base
#: model:ir.actions.act_window,name:base.grant_menu_access
#: model:ir.ui.menu,name:base.menu_grant_menu_access
msgid "Menu Items"
-msgstr ""
+msgstr "عناصر القائمة"
#. module: base
#: constraint:ir.rule:0
@@ -8149,7 +8290,7 @@ msgstr ""
#: model:ir.ui.menu,name:base.menu_event_association
#: model:ir.ui.menu,name:base.menu_event_main
msgid "Events Organisation"
-msgstr ""
+msgstr "تنظيم الأحداث"
#. module: base
#: model:ir.actions.act_window,name:base.ir_sequence_actions
@@ -8158,32 +8299,32 @@ msgstr ""
#: model:ir.ui.menu,name:base.next_id_6
#: view:workflow.activity:0
msgid "Actions"
-msgstr ""
+msgstr "الإجراءات"
#. module: base
#: selection:res.request,priority:0
msgid "High"
-msgstr ""
+msgstr "مرتفع"
#. module: base
#: field:ir.exports.line,export_id:0
msgid "Export"
-msgstr ""
+msgstr "تصدير"
#. module: base
#: model:res.country,name:base.hr
msgid "Croatia"
-msgstr ""
+msgstr "كرواتيا"
#. module: base
#: help:res.bank,bic:0
msgid "Bank Identifier Code"
-msgstr ""
+msgstr "رمز مُعرِّف المصرف"
#. module: base
#: model:res.country,name:base.tm
msgid "Turkmenistan"
-msgstr ""
+msgstr "توركمنستان"
#. module: base
#: code:addons/base/ir/ir_actions.py:597
@@ -8215,12 +8356,12 @@ msgstr ""
#: code:addons/orm.py:3199
#, python-format
msgid "Error"
-msgstr ""
+msgstr "خطأ"
#. module: base
#: model:res.country,name:base.pm
msgid "Saint Pierre and Miquelon"
-msgstr ""
+msgstr "سان بيار وميكلون"
#. module: base
#: help:ir.actions.report.xml,header:0
@@ -8236,42 +8377,42 @@ msgstr ""
#: view:base.module.update:0
#: view:base.update.translations:0
msgid "Update"
-msgstr ""
+msgstr "تحديث"
#. module: base
#: model:ir.actions.report.xml,name:base.ir_module_reference_print
msgid "Technical guide"
-msgstr ""
+msgstr "الدليل التقني"
#. module: base
#: model:res.country,name:base.tz
msgid "Tanzania"
-msgstr ""
+msgstr "تنزانيا"
#. module: base
#: selection:base.language.install,lang:0
msgid "Danish / Dansk"
-msgstr ""
+msgstr "الدنماركية / Dansk"
#. module: base
#: selection:ir.model.fields,select_level:0
msgid "Advanced Search (deprecated)"
-msgstr ""
+msgstr "بحث متقدم (سيلغي)"
#. module: base
#: model:res.country,name:base.cx
msgid "Christmas Island"
-msgstr ""
+msgstr "جزيرة الكريسماس"
#. module: base
#: view:ir.actions.server:0
msgid "Other Actions Configuration"
-msgstr ""
+msgstr "إعدادات الإجراءات الأخرى"
#. module: base
#: view:res.config.installer:0
msgid "Install Modules"
-msgstr ""
+msgstr "تثبيت الوحدات البرمجية"
#. module: base
#: model:ir.actions.act_window,name:base.res_partner_canal-act
@@ -8279,12 +8420,12 @@ msgstr ""
#: model:ir.ui.menu,name:base.menu_res_partner_canal-act
#: view:res.partner.canal:0
msgid "Channels"
-msgstr ""
+msgstr "القنوات"
#. module: base
#: view:ir.ui.view:0
msgid "Extra Info"
-msgstr ""
+msgstr "معلومات إضافية"
#. module: base
#: model:ir.actions.act_window,name:base.act_values_form_action
@@ -8295,7 +8436,7 @@ msgstr ""
#. module: base
#: view:ir.module.module:0
msgid "Schedule for Installation"
-msgstr ""
+msgstr "اختر للتثبيت"
#. module: base
#: model:ir.model,name:base.model_partner_wizard_ean_check
@@ -8306,7 +8447,7 @@ msgstr ""
#: sql_constraint:res.config.users:0
#: sql_constraint:res.users:0
msgid "You can not have two users with the same login !"
-msgstr ""
+msgstr "لا يمكن ان يكون هناك مستخدمان بنفس اسم الدخول!"
#. module: base
#: model:ir.model,name:base.model_multi_company_default
@@ -8316,18 +8457,18 @@ msgstr ""
#. module: base
#: view:res.request:0
msgid "Send"
-msgstr ""
+msgstr "إرسال"
#. module: base
#: field:res.config.users,menu_tips:0
#: field:res.users,menu_tips:0
msgid "Menu Tips"
-msgstr ""
+msgstr "إرشادات القائمة"
#. module: base
#: field:ir.translation,src:0
msgid "Source"
-msgstr ""
+msgstr "الأصل"
#. module: base
#: help:res.partner.address,partner_id:0
@@ -8337,12 +8478,12 @@ msgstr ""
#. module: base
#: model:res.country,name:base.vu
msgid "Vanuatu"
-msgstr ""
+msgstr "فانوتوا"
#. module: base
#: view:res.company:0
msgid "Internal Header/Footer"
-msgstr ""
+msgstr "رأس / تذييل داخلي"
#. module: base
#: code:addons/base/module/wizard/base_export_language.py:59
@@ -8351,23 +8492,25 @@ msgid ""
"Save this document to a .tgz file. This archive containt UTF-8 %s files and "
"may be uploaded to launchpad."
msgstr ""
+"احفظ هذا المستند في ملف .tgz. سيحتوي هذا الأرشيف على %s ملفات ذات ترميز UTF-"
+"8 ويمكن رفعه إلى موقع Launchpad."
#. module: base
#: view:base.module.upgrade:0
msgid "Start configuration"
-msgstr ""
+msgstr "ابدأ الإعداد"
#. module: base
#: view:base.language.export:0
msgid "_Export"
-msgstr ""
+msgstr "ت_صدير"
#. module: base
#: field:base.language.install,state:0
#: field:base.module.import,state:0
#: field:base.module.update,state:0
msgid "state"
-msgstr ""
+msgstr "الولاية"
#. module: base
#: selection:base.language.install,lang:0
@@ -8377,7 +8520,7 @@ msgstr ""
#. module: base
#: model:res.country,name:base.do
msgid "Dominican Republic"
-msgstr ""
+msgstr "جمهورية الدومينيكان"
#. module: base
#: selection:base.language.install,lang:0
@@ -8395,7 +8538,7 @@ msgstr ""
#. module: base
#: model:res.country,name:base.sa
msgid "Saudi Arabia"
-msgstr ""
+msgstr "المملكة العربية السعودية"
#. module: base
#: help:res.partner,supplier:0
@@ -8403,6 +8546,8 @@ msgid ""
"Check this box if the partner is a supplier. If it's not checked, purchase "
"people will not see it when encoding a purchase order."
msgstr ""
+"اختر إذا كان الشريك مُورِّداً. إذا لم تختر، لن يظهر الشربك لقسم المشتريات "
+"أثناء إعدادهم لأمر شراء."
#. module: base
#: field:ir.model.fields,relation_field:0
@@ -8412,13 +8557,13 @@ msgstr ""
#. module: base
#: view:res.partner.event:0
msgid "Event Logs"
-msgstr ""
+msgstr "سجلات الأحداث"
#. module: base
#: code:addons/base/module/wizard/base_module_configuration.py:37
#, python-format
msgid "System Configuration done"
-msgstr ""
+msgstr "تمّ إعداد النظام"
#. module: base
#: field:workflow.triggers,instance_id:0
@@ -8434,12 +8579,12 @@ msgstr ""
#. module: base
#: view:base.language.export:0
msgid "https://translations.launchpad.net/openobject"
-msgstr ""
+msgstr "https://translations.launchpad.net/openobject"
#. module: base
#: field:ir.actions.report.xml,report_xml:0
msgid "XML path"
-msgstr ""
+msgstr "مسار XML"
#. module: base
#: selection:ir.actions.todo,restart:0
@@ -8449,12 +8594,12 @@ msgstr ""
#. module: base
#: model:res.country,name:base.gn
msgid "Guinea"
-msgstr ""
+msgstr "غينيا"
#. module: base
#: model:res.country,name:base.lu
msgid "Luxembourg"
-msgstr ""
+msgstr "لوكسمبورغ"
#. module: base
#: help:ir.values,key2:0
@@ -8466,14 +8611,14 @@ msgstr ""
#: code:addons/base/ir/ir_ui_menu.py:285
#, python-format
msgid "Error ! You can not create recursive Menu."
-msgstr ""
+msgstr "خطأ! لا يمكنك إنشاء قائمة متداخلة."
#. module: base
#: model:ir.actions.act_window,name:base.action_publisher_warranty_contract_add_wizard
#: model:ir.ui.menu,name:base.menu_publisher_warranty_contract_add
#: view:publisher_warranty.contract.wizard:0
msgid "Register a Contract"
-msgstr ""
+msgstr "تسجيل عقد"
#. module: base
#: view:ir.rule:0
@@ -8486,19 +8631,19 @@ msgstr ""
#: code:addons/base/publisher_warranty/publisher_warranty.py:145
#, python-format
msgid "Please check your publisher warranty contract name and validity."
-msgstr ""
+msgstr "فضلاً تحقق من اسم وسريان عقد ضمان الناشر الخاص بك."
#. module: base
#: model:res.country,name:base.sv
msgid "El Salvador"
-msgstr ""
+msgstr "السّلفادور"
#. module: base
#: field:res.bank,phone:0
#: field:res.partner,phone:0
#: field:res.partner.address,phone:0
msgid "Phone"
-msgstr ""
+msgstr "هاتف"
#. module: base
#: field:ir.cron,active:0
@@ -8516,17 +8661,17 @@ msgstr ""
#: view:workflow.instance:0
#: view:workflow.workitem:0
msgid "Active"
-msgstr ""
+msgstr "نشِط"
#. module: base
#: model:res.country,name:base.th
msgid "Thailand"
-msgstr ""
+msgstr "تايلاند"
#. module: base
#: model:ir.ui.menu,name:base.menu_crm_config_lead
msgid "Leads & Opportunities"
-msgstr ""
+msgstr "الفرص والفرص المحتملة"
#. module: base
#: selection:base.language.install,lang:0
@@ -8536,40 +8681,40 @@ msgstr ""
#. module: base
#: view:res.log:0
msgid "System Logs"
-msgstr ""
+msgstr "سجلات النظام"
#. module: base
#: selection:workflow.activity,join_mode:0
#: selection:workflow.activity,split_mode:0
msgid "And"
-msgstr ""
+msgstr "و"
#. module: base
#: field:ir.model.fields,relation:0
msgid "Object Relation"
-msgstr ""
+msgstr "علاقة الكائن"
#. module: base
#: view:ir.rule:0
#: view:res.partner:0
msgid "General"
-msgstr ""
+msgstr "عام"
#. module: base
#: model:res.country,name:base.uz
msgid "Uzbekistan"
-msgstr ""
+msgstr "أوزبكستان"
#. module: base
#: model:ir.model,name:base.model_ir_actions_act_window
#: selection:ir.ui.menu,action:0
msgid "ir.actions.act_window"
-msgstr ""
+msgstr "ir.actions.act_window"
#. module: base
#: field:ir.rule,perm_create:0
msgid "Apply For Create"
-msgstr ""
+msgstr "تنفيذ للإنشاء"
#. module: base
#: model:res.country,name:base.vi
@@ -8579,12 +8724,12 @@ msgstr ""
#. module: base
#: model:res.country,name:base.tw
msgid "Taiwan"
-msgstr ""
+msgstr "تايوان"
#. module: base
#: model:ir.model,name:base.model_res_currency_rate
msgid "Currency Rate"
-msgstr ""
+msgstr "سعر العملة"
#. module: base
#: model:ir.actions.act_window,help:base.grant_menu_access
@@ -8595,6 +8740,10 @@ msgid ""
"be assigned to specific groups in order to make them accessible to some "
"users within the system."
msgstr ""
+"إدارة وتخصيص العناصر المتاحة والمعروضة في قائمة نسختك من نظام OpenERP. يمكنك "
+"حذف عنصر بالنقر على المربع في بداية كل سطر ثم النقر على الزر الذي يظهر بعد "
+"ذلك. يمكنك حصر صلاحيات الدخول للعناصر عن طريق تحديد مجموعات معينة يمكنها "
+"الدخول."
#. module: base
#: field:ir.ui.view,field_parent:0
@@ -8614,17 +8763,17 @@ msgstr ""
#. module: base
#: model:ir.model,name:base.model_workflow_workitem
msgid "workflow.workitem"
-msgstr ""
+msgstr "workflow.workitem"
#. module: base
#: selection:ir.module.module,state:0
msgid "Not Installable"
-msgstr ""
+msgstr "لا يمكن تثبيته"
#. module: base
#: report:ir.module.reference.graph:0
msgid "View :"
-msgstr ""
+msgstr "عرض:"
#. module: base
#: field:ir.model.fields,view_load:0
@@ -8635,14 +8784,14 @@ msgstr ""
#: code:addons/base/ir/ir_model.py:232
#, python-format
msgid "You cannot remove the field '%s' !"
-msgstr ""
+msgstr "لا يمكنك حذف الحقل '%s' !"
#. module: base
#: field:ir.exports,resource:0
#: view:ir.property:0
#: field:ir.property,res_id:0
msgid "Resource"
-msgstr ""
+msgstr "المورِد"
#. module: base
#: field:ir.ui.menu,web_icon:0
@@ -8652,7 +8801,7 @@ msgstr ""
#. module: base
#: selection:base.language.install,lang:0
msgid "Persian / فارس"
-msgstr ""
+msgstr "Persian / فارسي"
#. module: base
#: view:ir.actions.act_window:0
@@ -8663,7 +8812,7 @@ msgstr ""
#: code:addons/base/module/wizard/base_module_upgrade.py:95
#, python-format
msgid "Unmet dependency !"
-msgstr ""
+msgstr "ثمّة متطلبات غير متوفرة"
#. module: base
#: view:base.language.import:0
@@ -8671,6 +8820,7 @@ msgid ""
"Supported file formats: *.csv (Comma-separated values) or *.po (GetText "
"Portable Objects)"
msgstr ""
+"صيغ الملفات المدعومة: csv (قيم مفصولة بفواصل) أو po (كائنات GetText متنقلة)"
#. module: base
#: code:addons/base/ir/ir_model.py:487
@@ -8679,17 +8829,18 @@ msgid ""
"You can not delete this document (%s) ! Be sure your user belongs to one of "
"these groups: %s."
msgstr ""
+"لا يمكنك حذف هذا المستند (%s) ! تأكد من أنك تنتمي لإحدى هذه المجموعات: %s."
#. module: base
#: model:ir.model,name:base.model_base_module_configuration
msgid "base.module.configuration"
-msgstr ""
+msgstr "base.module.configuration"
#. module: base
#: field:base.language.export,name:0
#: field:ir.attachment,datas_fname:0
msgid "Filename"
-msgstr ""
+msgstr "اسم الملف"
#. module: base
#: field:ir.model,access_ids:0
@@ -8700,32 +8851,32 @@ msgstr ""
#. module: base
#: model:res.country,name:base.sk
msgid "Slovak Republic"
-msgstr ""
+msgstr "سلوفاكيا"
#. module: base
#: model:ir.ui.menu,name:base.publisher_warranty
msgid "Publisher Warranty"
-msgstr ""
+msgstr "ضمان الناشر"
#. module: base
#: model:res.country,name:base.aw
msgid "Aruba"
-msgstr ""
+msgstr "جزيرة أروبا"
#. module: base
#: model:res.country,name:base.ar
msgid "Argentina"
-msgstr ""
+msgstr "الأرجنتين"
#. module: base
#: field:res.groups,name:0
msgid "Group Name"
-msgstr ""
+msgstr "اسم المجموعة"
#. module: base
#: model:res.country,name:base.bh
msgid "Bahrain"
-msgstr ""
+msgstr "مملكة البحرين"
#. module: base
#: model:res.partner.category,name:base.res_partner_category_12
@@ -8747,17 +8898,17 @@ msgstr ""
#: view:res.users:0
#: field:res.users,company_id:0
msgid "Company"
-msgstr ""
+msgstr "الشركة"
#. module: base
#: view:res.users:0
msgid "Email & Signature"
-msgstr ""
+msgstr "البريد الإلكتروني والتوقيع"
#. module: base
#: view:publisher_warranty.contract:0
msgid "Publisher Warranty Contract"
-msgstr ""
+msgstr "عقد ضمان الناشر"
#. module: base
#: selection:base.language.install,lang:0
@@ -8767,17 +8918,17 @@ msgstr ""
#. module: base
#: model:ir.ui.menu,name:base.menu_aftersale
msgid "After-Sale Services"
-msgstr ""
+msgstr "خدمات بعد البيع"
#. module: base
#: view:ir.actions.todo:0
msgid "Launch"
-msgstr ""
+msgstr "تشغيل"
#. module: base
#: field:ir.actions.act_window,limit:0
msgid "Limit"
-msgstr ""
+msgstr "حد"
#. module: base
#: help:ir.actions.server,wkf_model_id:0
@@ -8787,7 +8938,7 @@ msgstr ""
#. module: base
#: model:res.country,name:base.jm
msgid "Jamaica"
-msgstr ""
+msgstr "جامايكا"
#. module: base
#: model:ir.actions.act_window,help:base.action_partner_category_form
@@ -8801,29 +8952,29 @@ msgstr ""
#. module: base
#: model:res.country,name:base.az
msgid "Azerbaijan"
-msgstr ""
+msgstr "أذربيجان"
#. module: base
#: code:addons/base/res/partner/partner.py:250
#, python-format
msgid "Warning"
-msgstr ""
+msgstr "تحذير"
#. module: base
#: selection:base.language.install,lang:0
msgid "Arabic / الْعَرَبيّة"
-msgstr ""
+msgstr "Arabic / الْعَرَبيّة"
#. module: base
#: model:res.country,name:base.vg
msgid "Virgin Islands (British)"
-msgstr ""
+msgstr "جزر العذراء (بريطانيا)"
#. module: base
#: view:ir.property:0
#: model:ir.ui.menu,name:base.next_id_15
msgid "Parameters"
-msgstr ""
+msgstr "المحددات"
#. module: base
#: selection:base.language.install,lang:0
@@ -8843,46 +8994,50 @@ msgid ""
"uncheck the 'Suppliers' filter button in order to search in all your "
"partners, including customers and prospects."
msgstr ""
+"يمكنك الحصول على كافة المعلومات المتعلقة بالمُورِّدين من نموذج المُورِّد: "
+"بيانات الحسابات، الرسائل الألكترونية السابقة، الاجتماعات، عمليات الشراء، "
+"إلخ. يمكنك إزالة اختيار مرشح الفرز 'المُورِّدون' لكي يتمّ بحث كافة الشركاء "
+"بما فيهم العملاء والمستقبليون."
#. module: base
#: model:res.country,name:base.rw
msgid "Rwanda"
-msgstr ""
+msgstr "رواندا"
#. module: base
#: view:ir.sequence:0
msgid "Day of the week (0:Monday): %(weekday)s"
-msgstr ""
+msgstr "اليوم الأسبوعي (0: الإثنين): %(weekday)s"
#. module: base
#: model:res.country,name:base.ck
msgid "Cook Islands"
-msgstr ""
+msgstr "جزر كوك"
#. module: base
#: field:ir.model.data,noupdate:0
msgid "Non Updatable"
-msgstr ""
+msgstr "لا يمكن تحديثه"
#. module: base
#: selection:base.language.install,lang:0
msgid "Klingon"
-msgstr ""
+msgstr "كلِنغُن"
#. module: base
#: model:res.country,name:base.sg
msgid "Singapore"
-msgstr ""
+msgstr "سنغافورة"
#. module: base
#: selection:ir.actions.act_window,target:0
msgid "Current Window"
-msgstr ""
+msgstr "النافذة الحالية"
#. module: base
#: view:ir.values:0
msgid "Action Source"
-msgstr ""
+msgstr "مصدر الإجراء"
#. module: base
#: view:res.config.view:0
@@ -8891,6 +9046,9 @@ msgid ""
"simplified interface, which has less features but is easier. You can always "
"switch later from the user preferences."
msgstr ""
+"إذا كنت تستخدم OpenERP لأول مرة، ننصحك بشدة أن تختار الواجهة المبسطة، والتي "
+"تنقصها بعض المزايا ولكنها أسهل استخداماً. يمكنك تغيير هذا الاختيار في أي وقت "
+"من تفضيلات المستخدم."
#. module: base
#: model:ir.model,name:base.model_res_country
@@ -8902,18 +9060,18 @@ msgstr ""
#: field:res.partner.address,country_id:0
#: field:res.partner.bank,country_id:0
msgid "Country"
-msgstr ""
+msgstr "الدولة"
#. module: base
#: field:ir.model.fields,complete_name:0
#: field:ir.ui.menu,complete_name:0
msgid "Complete Name"
-msgstr ""
+msgstr "الاسم الكامل"
#. module: base
#: field:ir.values,object:0
msgid "Is Object"
-msgstr ""
+msgstr "هو كائن"
#. module: base
#: view:ir.rule:0
@@ -8925,22 +9083,22 @@ msgstr ""
#. module: base
#: field:res.partner.category,name:0
msgid "Category Name"
-msgstr ""
+msgstr "اسم الفئة"
#. module: base
#: model:res.partner.category,name:base.res_partner_category_15
msgid "IT sector"
-msgstr ""
+msgstr "قطاع تقنية المعلومات"
#. module: base
#: view:ir.actions.act_window:0
msgid "Select Groups"
-msgstr ""
+msgstr "اختر المجموعات"
#. module: base
#: view:res.lang:0
msgid "%X - Appropriate time representation."
-msgstr ""
+msgstr "%X - التمثيل الملائم للوقت"
#. module: base
#: selection:base.language.install,lang:0
@@ -8959,36 +9117,36 @@ msgstr ""
#. module: base
#: view:res.company:0
msgid "Portrait"
-msgstr ""
+msgstr "طوليّ"
#. module: base
#: code:addons/base/ir/ir_model.py:317
#, python-format
msgid "Can only rename one column at a time!"
-msgstr ""
+msgstr "يمكنك تغيير اسم عمود واحد فقط كل مرة!"
#. module: base
#: selection:ir.translation,type:0
msgid "Wizard Button"
-msgstr ""
+msgstr "زر المعالج"
#. module: base
#: selection:ir.translation,type:0
msgid "Report/Template"
-msgstr ""
+msgstr "التقرير / القالب"
#. module: base
#: selection:ir.actions.act_window.view,view_mode:0
#: selection:ir.ui.view,type:0
#: selection:wizard.ir.model.menu.create.line,view_type:0
msgid "Graph"
-msgstr ""
+msgstr "الرسم البياني"
#. module: base
#: model:ir.model,name:base.model_ir_actions_server
#: selection:ir.ui.menu,action:0
msgid "ir.actions.server"
-msgstr ""
+msgstr "ir.actions.server"
#. module: base
#: field:ir.actions.configuration.wizard,progress:0
@@ -8997,14 +9155,14 @@ msgstr ""
#: field:res.config.users,progress:0
#: field:res.config.view,progress:0
msgid "Configuration Progress"
-msgstr ""
+msgstr "تقدم الإعدادات"
#. module: base
#: model:ir.actions.act_window,name:base.act_ir_actions_todo_form
#: model:ir.ui.menu,name:base.menu_ir_actions_todo_form
#: model:ir.ui.menu,name:base.next_id_11
msgid "Configuration Wizards"
-msgstr ""
+msgstr "معالجات الإعدادات"
#. module: base
#: field:res.lang,code:0
@@ -9019,12 +9177,12 @@ msgstr ""
#. module: base
#: view:base.module.upgrade:0
msgid "Note that this operation might take a few minutes."
-msgstr ""
+msgstr "لاحظ أن هذه العملية قد تستغرق عدة دقائق."
#. module: base
#: model:ir.ui.menu,name:base.menu_localisation
msgid "Localisation"
-msgstr ""
+msgstr "التهيئة المحلية"
#. module: base
#: view:ir.actions.server:0
@@ -9034,13 +9192,13 @@ msgstr ""
#. module: base
#: view:ir.cron:0
msgid "Execution"
-msgstr ""
+msgstr "تنفيذ"
#. module: base
#: field:ir.actions.server,condition:0
#: field:workflow.transition,condition:0
msgid "Condition"
-msgstr ""
+msgstr "شرط"
#. module: base
#: help:ir.values,model_id:0
@@ -9050,12 +9208,12 @@ msgstr ""
#. module: base
#: field:ir.ui.view,name:0
msgid "View Name"
-msgstr ""
+msgstr "اسم طريقة العرض"
#. module: base
#: selection:base.language.install,lang:0
msgid "Italian / Italiano"
-msgstr ""
+msgstr "الإيطالية / Italiano"
#. module: base
#: field:ir.actions.report.xml,attachment:0
@@ -9072,12 +9230,12 @@ msgstr ""
#. module: base
#: view:res.lang:0
msgid "%j - Day of the year [001,366]."
-msgstr ""
+msgstr "%j - اليوم من السنة [001،366]"
#. module: base
#: field:ir.actions.server,mobile:0
msgid "Mobile No"
-msgstr ""
+msgstr "رقم الجوال"
#. module: base
#: model:ir.actions.act_window,name:base.action_partner_by_category
@@ -9086,17 +9244,17 @@ msgstr ""
#: model:ir.ui.menu,name:base.menu_partner_category_form
#: view:res.partner.category:0
msgid "Partner Categories"
-msgstr ""
+msgstr "فئات الشركاء"
#. module: base
#: view:base.module.upgrade:0
msgid "System Update"
-msgstr ""
+msgstr "تحديث النظام"
#. module: base
#: selection:ir.translation,type:0
msgid "Wizard Field"
-msgstr ""
+msgstr "حقل المعالج"
#. module: base
#: help:ir.sequence,prefix:0
@@ -9106,51 +9264,51 @@ msgstr ""
#. module: base
#: model:res.country,name:base.sc
msgid "Seychelles"
-msgstr ""
+msgstr "سيشيل"
#. module: base
#: model:ir.model,name:base.model_res_partner_bank
#: view:res.partner.bank:0
msgid "Bank Accounts"
-msgstr ""
+msgstr "الحسابات المصرفية"
#. module: base
#: model:res.country,name:base.sl
msgid "Sierra Leone"
-msgstr ""
+msgstr "سيراليون"
#. module: base
#: view:res.company:0
#: view:res.partner:0
msgid "General Information"
-msgstr ""
+msgstr "المعلومات العامة"
#. module: base
#: model:res.country,name:base.tc
msgid "Turks and Caicos Islands"
-msgstr ""
+msgstr "جزر تركس وكايكوس"
#. module: base
#: field:res.partner.bank,owner_name:0
msgid "Account Owner"
-msgstr ""
+msgstr "مالِك الحساب"
#. module: base
#: code:addons/base/res/res_user.py:256
#, python-format
msgid "Company Switch Warning"
-msgstr ""
+msgstr "تحذير بشأن تحويل الشركة"
#. module: base
#: model:ir.actions.act_window,name:base.action_res_widget_wizard
msgid "Homepage Widgets Management"
-msgstr ""
+msgstr "إدارة عناصر واجهة المستخدم الخاصة بالصفحة الرئيسية"
#. module: base
#: field:workflow,osv:0
#: field:workflow.instance,res_type:0
msgid "Resource Object"
-msgstr ""
+msgstr "مصدر الكائن"
#. module: base
#: help:ir.sequence,number_increment:0
@@ -9162,33 +9320,33 @@ msgstr ""
#: field:res.partner.address,function:0
#: selection:workflow.activity,kind:0
msgid "Function"
-msgstr ""
+msgstr "وظيفة"
#. module: base
#: view:res.widget:0
msgid "Search Widget"
-msgstr ""
+msgstr "بحث الملحقات البرمجية"
#. module: base
#: selection:ir.actions.todo,restart:0
msgid "Never"
-msgstr ""
+msgstr "أبداً"
#. module: base
#: selection:res.partner.address,type:0
msgid "Delivery"
-msgstr ""
+msgstr "التسليم"
#. module: base
#: model:res.partner.title,name:base.res_partner_title_pvt_ltd
#: model:res.partner.title,shortcut:base.res_partner_title_pvt_ltd
msgid "Corp."
-msgstr ""
+msgstr "شركة"
#. module: base
#: model:res.country,name:base.gw
msgid "Guinea Bissau"
-msgstr ""
+msgstr "غينيا بيساو"
#. module: base
#: view:workflow.instance:0
@@ -9199,28 +9357,28 @@ msgstr ""
#: code:addons/base/res/partner/partner.py:261
#, python-format
msgid "Partners: "
-msgstr ""
+msgstr "الشركاء: "
#. module: base
#: model:res.country,name:base.kp
msgid "North Korea"
-msgstr ""
+msgstr "كوريا الشمالية"
#. module: base
#: selection:ir.actions.server,state:0
msgid "Create Object"
-msgstr ""
+msgstr "إنشاء الكائن"
#. module: base
#: view:ir.filters:0
#: field:res.log,context:0
msgid "Context"
-msgstr ""
+msgstr "سياق"
#. module: base
#: field:res.bank,bic:0
msgid "BIC/Swift code"
-msgstr ""
+msgstr "كود السويفت"
#. module: base
#: model:res.partner.category,name:base.res_partner_category_1
@@ -9230,12 +9388,12 @@ msgstr ""
#. module: base
#: selection:base.language.install,lang:0
msgid "Polish / Język polski"
-msgstr ""
+msgstr "البولندية / Język polski"
#. module: base
#: field:ir.exports,name:0
msgid "Export Name"
-msgstr ""
+msgstr "اسم التصدير"
#. module: base
#: help:res.partner.address,type:0
@@ -9243,13 +9401,15 @@ msgid ""
"Used to select automatically the right address according to the context in "
"sales and purchases documents."
msgstr ""
+"تستخدم للإختيار التلقائي العنوان الصحيح بناءاً علي سياق المستندات في "
+"المبيعات و المشتريات."
#. module: base
#: model:res.country,name:base.lk
msgid "Sri Lanka"
-msgstr ""
+msgstr "سريلانكا"
#. module: base
#: selection:base.language.install,lang:0
msgid "Russian / русский язык"
-msgstr ""
+msgstr "الروسية / русский язык"
From 7ec009c0ba245552f06c678629c1ef5964adbda7 Mon Sep 17 00:00:00 2001
From: "Yogesh (OpenERP)"
Date: Mon, 21 Nov 2011 14:44:51 +0530
Subject: [PATCH 061/106] [FIX] fix problem of close popup in actio type of
ir_actions_report_xml.
bzr revid: ysa@tinyerp.com-20111121091451-i9lvmv6yibys17vp
---
addons/web/static/src/js/views.js | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js
index 4429610a213..90060f47fc1 100644
--- a/addons/web/static/src/js/views.js
+++ b/addons/web/static/src/js/views.js
@@ -155,12 +155,14 @@ session.web.ActionManager = session.web.Widget.extend({
self.session.get_file({
url: '/web/report',
data: {action: JSON.stringify(action)},
- complete: $.unblockUI
- });
- if (!self.dialog && on_closed) {
- on_closed();
- }
- self.dialog_stop();
+ complete: $.unblockUI,
+ success: function(){
+ if (!self.dialog && on_closed) {
+ on_closed();
+ }
+ self.dialog_stop();
+ }
+ })
});
},
ir_actions_act_url: function (action) {
From 3565ea546e6ce3cfbd5fa41864ea62fce028a95e Mon Sep 17 00:00:00 2001
From: Xavier Morel
Date: Mon, 21 Nov 2011 12:34:21 +0100
Subject: [PATCH 062/106] [FIX] default values for membership products
still used old default value setting style (via action domain).
Question remains though: are the existing context values *used*? I
don't know so I left them there, but if they're not used or useful it
would be nice to remove them.
lp bug: https://launchpad.net/bugs/883049 fixed
bzr revid: xmo@openerp.com-20111121113421-tudpi0pv4fqcrejb
---
addons/membership/membership_view.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addons/membership/membership_view.xml b/addons/membership/membership_view.xml
index b14a72b278e..a1c39165c82 100644
--- a/addons/membership/membership_view.xml
+++ b/addons/membership/membership_view.xml
@@ -107,7 +107,7 @@
Membership Productsproduct.product[('membership','=',True), ('type', '=', 'service')]
- {'membership':True, 'type':'service'}
+ {'membership':True, 'type':'service', 'default_membership': True, 'default_type': 'service'}
From 263ff95a19e236ba5707790ca1c8650a940abcb0 Mon Sep 17 00:00:00 2001
From: niv-openerp
Date: Mon, 21 Nov 2011 17:06:17 +0530
Subject: [PATCH 063/106] [imp] nivified product list
bzr revid: nicolas.vanhoren@openerp.com-20111121113617-75h2d5ka302rnf3c
---
addons/point_of_sale/static/src/js/pos.js | 41 ++++++++++-----------
addons/point_of_sale/static/src/xml/pos.xml | 5 ++-
2 files changed, 24 insertions(+), 22 deletions(-)
diff --git a/addons/point_of_sale/static/src/js/pos.js b/addons/point_of_sale/static/src/js/pos.js
index d4fbfc6f6ed..2a66005af2c 100644
--- a/addons/point_of_sale/static/src/js/pos.js
+++ b/addons/point_of_sale/static/src/js/pos.js
@@ -166,7 +166,7 @@ openerp.point_of_sale = function(db) {
NumpadState, NumpadWidget, Order, OrderButtonView, OrderCollection, OrderWidget, Orderline,
OrderlineCollection, OrderlineWidget, PaymentButtonWidget, PaymentView, Paymentline,
PaymentlineCollection, PaymentlineView, PaypadWidget, Product, ProductCollection,
- ProductListView, ProductWidget, ReceiptLineView, ReceiptView, Shop, ShopView, StepsWidget;
+ ProductListWidget, ProductWidget, ReceiptLineView, ReceiptView, Shop, ShopView, StepsWidget;
/*
---
@@ -776,31 +776,24 @@ openerp.point_of_sale = function(db) {
return this;
},
});
- ProductListView = (function() {
- __extends(ProductListView, Backbone.View);
- function ProductListView() {
- ProductListView.__super__.constructor.apply(this, arguments);
- }
-
- ProductListView.prototype.tagName = 'ol';
- ProductListView.prototype.className = 'product-list';
- ProductListView.prototype.initialize = function(options) {
+ ProductListWidget = db.web.Widget.extend({
+ init: function(parent, element_id, options) {
+ this._super(parent, element_id);
this.shop = options.shop;
- return (this.shop.get('products')).bind('reset', this.render, this);
- };
- ProductListView.prototype.render = function() {
- $(this.el).empty();
+ this.shop.get('products').bind('reset', this.render_element, this);
+ },
+ render_element: function() {
+ this.$element.empty();
(this.shop.get('products')).each(__bind( function(product) {
var p = new ProductWidget(null, null, {
model: product,
shop: this.shop
});
- p.appendTo($(this.el));
+ p.appendTo(this.$element);
}, this));
- return $('#products-screen').append(this.el);
- };
- return ProductListView;
- })();
+ return this;
+ },
+ });
/*
"Payment" step.
*/
@@ -1053,9 +1046,11 @@ openerp.point_of_sale = function(db) {
this.numpadState = new NumpadState({
shop: this.shop
});
- this.productListView = new ProductListView({
+ this.productListView = new ProductListWidget(null, "products-screen-ol", {
shop: this.shop
});
+ this.productListView.render_element();
+ this.productListView.start();
this.paypadView = new PaypadWidget(null, 'paypad', {
shop: this.shop
});
@@ -1080,10 +1075,14 @@ openerp.point_of_sale = function(db) {
this.numpadView.start();
this.stepsView = new StepsWidget(null, 'steps');
this.stepsView.start();
+ this.start();
};
ShopView.prototype.events = {
'click button#neworder-button': 'createNewOrder'
};
+ ShopView.prototype.start = function() {
+ this.productListView.start();
+ };
ShopView.prototype.createNewOrder = function() {
var newOrder;
newOrder = new Order;
@@ -1114,7 +1113,7 @@ openerp.point_of_sale = function(db) {
shop: this.shop,
el: $element
});
- this.categoryView = new CategoryWidget(null, 'products-screen');
+ this.categoryView = new CategoryWidget(null, 'products-screen-categories');
this.categoryView.on_change_category.add_last(_.bind(this.category, this));
this.category();
};
diff --git a/addons/point_of_sale/static/src/xml/pos.xml b/addons/point_of_sale/static/src/xml/pos.xml
index b9148395cbe..feeec5bdc4c 100644
--- a/addons/point_of_sale/static/src/xml/pos.xml
+++ b/addons/point_of_sale/static/src/xml/pos.xml
@@ -88,7 +88,10 @@
-
+
+
+
+
Payment
From ca95467befbd2ad6d940f8d9dfc4f9e2e14fcd5d Mon Sep 17 00:00:00 2001
From: Xavier Morel
Date: Mon, 21 Nov 2011 13:04:13 +0100
Subject: [PATCH 064/106] [IMP] extract parsing of onchange specs into a
separate method
bzr revid: xmo@openerp.com-20111121120413-xw2aanwbte79y8cr
---
addons/web/static/src/js/view_form.js | 130 ++++++++++++++------------
1 file changed, 72 insertions(+), 58 deletions(-)
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js
index d833b7471c6..26dc2c03572 100644
--- a/addons/web/static/src/js/view_form.js
+++ b/addons/web/static/src/js/view_form.js
@@ -242,69 +242,83 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
$pager.find('span.oe_pager_index').html(index);
$pager.find('span.oe_pager_count').html(this.dataset.ids.length);
},
+ parse_on_change: function (on_change, widget) {
+ var self = this;
+ var onchange = _.str.trim(on_change);
+ var call = onchange.match(/^\s?(.*?)\((.*?)\)\s?$/);
+ if (!call) {
+ return null;
+ }
+
+ var method = call[1], args = [];
+ var context_index = null;
+ var argument_replacement = {
+ 'False': function () {return false;},
+ 'True': function () {return true;},
+ 'None': function () {return null;},
+ 'context': function (i) {
+ context_index = i;
+ var ctx = widget.build_context ? widget.build_context() : {};
+ return ctx;
+ }
+ };
+ var parent_fields = null;
+ _.each(call[2].split(','), function (a, i) {
+ var field = _.str.trim(a);
+ if (field in argument_replacement) {
+ args.push(argument_replacement[field](i));
+ return;
+ } else if (self.fields[field]) {
+ var value = self.fields[field].get_on_change_value();
+ args.push(value == null ? false : value);
+ return;
+ } else {
+ var splitted = field.split('.');
+ if (splitted.length > 1 && _.str.trim(splitted[0]) === "parent" && self.dataset.parent_view) {
+ if (parent_fields === null) {
+ parent_fields = self.dataset.parent_view.get_fields_values();
+ }
+ var p_val = parent_fields[_.str.trim(splitted[1])];
+ if (p_val !== undefined) {
+ args.push(p_val == null ? false : p_val);
+ return;
+ }
+ }
+ }
+ throw "Could not get field with name '" + field + "' for onchange '" + onchange + "'";
+ });
+
+ return {
+ method: method,
+ args: args,
+ context_index: context_index
+ };
+ },
do_onchange: function(widget, processed) {
var self = this;
var act = function() {
try {
- processed = processed || [];
- if (widget.node.attrs.on_change) {
- var onchange = _.str.trim(widget.node.attrs.on_change);
- var call = onchange.match(/^\s?(.*?)\((.*?)\)\s?$/);
- if (call) {
- var method = call[1], args = [];
- var context_index = null;
- var argument_replacement = {
- 'False' : function() {return false;},
- 'True' : function() {return true;},
- 'None' : function() {return null;},
- 'context': function(i) {
- context_index = i;
- var ctx = widget.build_context ? widget.build_context() : {};
- return ctx;
- }
- };
- var parent_fields = null;
- _.each(call[2].split(','), function(a, i) {
- var field = _.str.trim(a);
- if (field in argument_replacement) {
- args.push(argument_replacement[field](i));
- return;
- } else if (self.fields[field]) {
- var value = self.fields[field].get_on_change_value();
- args.push(value == null ? false : value);
- return;
- } else {
- var splitted = field.split('.');
- if (splitted.length > 1 && _.str.trim(splitted[0]) === "parent" && self.dataset.parent_view) {
- if (parent_fields === null) {
- parent_fields = self.dataset.parent_view.get_fields_values();
- }
- var p_val = parent_fields[_.str.trim(splitted[1])];
- if (p_val !== undefined) {
- args.push(p_val == null ? false : p_val);
- return;
- }
- }
- }
- throw "Could not get field with name '" + field +
- "' for onchange '" + onchange + "'";
- });
- var ajax = {
- url: '/web/dataset/call',
- async: false
- };
- return self.rpc(ajax, {
- model: self.dataset.model,
- method: method,
- args: [(self.datarecord.id == null ? [] : [self.datarecord.id])].concat(args),
- context_id: context_index === null ? null : context_index + 1
- }).pipe(function(response) {
- return self.on_processed_onchange(response, processed);
- });
- } else {
- console.warn("Wrong on_change format", on_change);
+ processed = processed || [];
+ var on_change = widget.node.attrs.on_change;
+ if (on_change) {
+ var change_spec = self.parse_on_change(on_change, widget);
+ if (change_spec) {
+ var ajax = {
+ url: '/web/dataset/call',
+ async: false
+ };
+ return self.rpc(ajax, {
+ model: self.dataset.model,
+ method: change_spec.method,
+ args: [(self.datarecord.id == null ? [] : [self.datarecord.id])].concat(change_spec.args),
+ context_id: change_spec.context_index == undefined ? null : change_spec.context_index + 1
+ }).pipe(function(response) {
+ return self.on_processed_onchange(response, processed);
+ });
+ } else {
+ console.warn("Wrong on_change format", on_change);
+ }
}
- }
} catch(e) {
console.error(e);
return $.Deferred().reject();
From e3a84ed7b6c08c79c94e96446a4e2497c4e15daa Mon Sep 17 00:00:00 2001
From: Xavier Morel
Date: Mon, 21 Nov 2011 13:05:09 +0100
Subject: [PATCH 065/106] [IMP] throw actual error objects to improve debugging
experience
bzr revid: xmo@openerp.com-20111121120509-fa0rqj50w3zombs1
---
addons/web/static/src/js/view_form.js | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js
index 26dc2c03572..1bb43a0e4b8 100644
--- a/addons/web/static/src/js/view_form.js
+++ b/addons/web/static/src/js/view_form.js
@@ -285,7 +285,8 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
}
}
}
- throw "Could not get field with name '" + field + "' for onchange '" + onchange + "'";
+ throw new Error("Could not get field with name '" + field +
+ "' for onchange '" + onchange + "'");
});
return {
From 494a77700ddde2c5a90dbe57850250778f0c3ee7 Mon Sep 17 00:00:00 2001
From: "Divyesh Makwana (Open ERP)"
Date: Mon, 21 Nov 2011 17:47:18 +0530
Subject: [PATCH 066/106] [FIX] hr_evaluation : Integrity error while
installing hr_evaluation
lp bug: https://launchpad.net/bugs/891987 fixed
bzr revid: mdi@tinyerp.com-20111121121718-s4ril9v1hf5n2ylk
---
addons/hr_evaluation/__openerp__.py | 2 +-
addons/hr_evaluation/hr_evaluation_data.xml | 14 +-------------
addons/hr_evaluation/hr_evaluation_demo.xml | 18 ++++++++++++++++++
3 files changed, 20 insertions(+), 14 deletions(-)
create mode 100644 addons/hr_evaluation/hr_evaluation_demo.xml
diff --git a/addons/hr_evaluation/__openerp__.py b/addons/hr_evaluation/__openerp__.py
index f082d9bfcef..720c49302d4 100644
--- a/addons/hr_evaluation/__openerp__.py
+++ b/addons/hr_evaluation/__openerp__.py
@@ -39,7 +39,7 @@ level of employee hierarchy fills what and final review and evaluation
is done by the manager.Every evaluation filled by the employees can be viewed
in the form of pdf file. Implements a dashboard for My Current Evaluations
""",
- "demo": [],
+ "demo": ["hr_evaluation_demo.xml"],
"data": [
"security/ir.model.access.csv",
"security/hr_evaluation_security.xml",
diff --git a/addons/hr_evaluation/hr_evaluation_data.xml b/addons/hr_evaluation/hr_evaluation_data.xml
index 6745b997b3f..40ff397534e 100644
--- a/addons/hr_evaluation/hr_evaluation_data.xml
+++ b/addons/hr_evaluation/hr_evaluation_data.xml
@@ -1210,23 +1210,11 @@ Once the form had been filled, the employee send it to his supervisor.
-
+
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/addons/hr_evaluation/hr_evaluation_demo.xml b/addons/hr_evaluation/hr_evaluation_demo.xml
new file mode 100644
index 00000000000..db096f13266
--- /dev/null
+++ b/addons/hr_evaluation/hr_evaluation_demo.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
From 95e2fcf8845f39a15b366135b2a12c42580aa9f2 Mon Sep 17 00:00:00 2001
From: Xavier Morel
Date: Mon, 21 Nov 2011 13:26:22 +0100
Subject: [PATCH 067/106] [ADD] sanity tests for basic checking of onchange
parsing
bzr revid: xmo@openerp.com-20111121122622-g6jzo74ctgc6r1hk
---
addons/web/static/test/onchange.js | 58 ++++++++++++++++++++++++++++++
addons/web/static/test/test.html | 1 +
2 files changed, 59 insertions(+)
create mode 100644 addons/web/static/test/onchange.js
diff --git a/addons/web/static/test/onchange.js b/addons/web/static/test/onchange.js
new file mode 100644
index 00000000000..07eb6c1bc2c
--- /dev/null
+++ b/addons/web/static/test/onchange.js
@@ -0,0 +1,58 @@
+$(document).ready(function () {
+ var openerp,
+ make_form = function (default_values) {
+ var fields = {};
+ _(default_values).each(function (value, name) {
+ fields[name] = value instanceof Function ? value : {
+ get_on_change_value: function () { return value; }
+ };
+ });
+ return _.extend(new openerp.web.FormView(null, {}),
+ {fields: fields});
+ };
+ module("form.onchange", {
+ setup: function () {
+ openerp = window.openerp.init(true);
+ window.openerp.web.core(openerp);
+ window.openerp.web.chrome(openerp);
+ // views loader stuff
+ window.openerp.web.data(openerp);
+ window.openerp.web.views(openerp);
+ window.openerp.web.list(openerp);
+ window.openerp.web.form(openerp);
+ }
+ });
+// test('Parse args-less onchange', function () {
+// var f = new openerp.web.FormView(null, {});
+// var result = f.parse_on_change('on_change_foo()', {});
+// equal(result.method, 'on_change_foo');
+// deepEqual(result.args, []);
+// });
+ test('Parse 1-arg onchange', function () {
+ var f = make_form({foo: 3});
+ var result = f.parse_on_change('on_change_foo(foo)', {});
+ equal(result.method, 'on_change_foo');
+ deepEqual(result.args, [3]);
+ });
+ test('Parse 2-args onchange', function () {
+ var f = make_form({foo: 3, bar: 'qux'});
+ var result = f.parse_on_change('on_change_foo(bar, foo)', {});
+ equal(result.method, 'on_change_foo');
+ deepEqual(result.args, ['qux', 3]);
+ });
+ test('Literal null', function () {
+ var f = make_form();
+ var result = f.parse_on_change('on_null(None)', {});
+ deepEqual(result.args, [null]);
+ });
+ test('Literal true', function () {
+ var f = make_form();
+ var result = f.parse_on_change('on_null(True)', {});
+ deepEqual(result.args, [true]);
+ });
+ test('Literal false', function () {
+ var f = make_form();
+ var result = f.parse_on_change('on_null(False)', {});
+ deepEqual(result.args, [false]);
+ });
+});
diff --git a/addons/web/static/test/test.html b/addons/web/static/test/test.html
index d182ce18707..9bbfff168fd 100644
--- a/addons/web/static/test/test.html
+++ b/addons/web/static/test/test.html
@@ -49,4 +49,5 @@
+